else:
- from account import BIP32_Account
- print "scanning", x_pubkeys
-
+ from account import BIP32_Account, OldAccount
for x_pubkey in x_pubkeys:
if not is_extended_pubkey(x_pubkey):
continue
- xpub, sequence = BIP32_Account.parse_xpubkey(x_pubkey)
- print "xpub", xpub
+ if x_pubkey[0:2] == 'ff':
+ xpub, sequence = BIP32_Account.parse_xpubkey(x_pubkey)
+ elif x_pubkey[0:2] == 'fe':
+ xpub, sequence = OldAccount.parse_xpubkey(x_pubkey)
# look for account that can sign
for k, account in self.accounts.items():
break
else:
continue
- print "found xpub", xpub, sequence
addr = account.get_address(*sequence)
- print addr, txin['address']
assert txin['address'] == addr
pk = self.get_private_key(addr, password)
for sec in pk:
s = self.get_seed(password)
return ' '.join(mnemonic.mn_encode(s))
-
- def add_keypairs_from_KeyID(self, tx, keypairs, password):
- # first check the provided password
- for txin in tx.inputs:
- keyid = txin.get('KeyID')
- if keyid:
- m = re.match("old\(([0-9a-f]+),(\d+),(\d+)", keyid)
- if not m: continue
- mpk = m.group(1)
- if mpk != self.storage.get('master_public_key'): continue
- for_change = int(m.group(2))
- num = int(m.group(3))
- account = self.accounts[0]
- addr = account.get_address(for_change, num)
- txin['address'] = addr # fixme: side effect
- pk = account.get_private_key((for_change, num), self, password)
- for sec in pk:
- pubkey = public_key_from_private_key(sec)
- keypairs[pubkey] = sec
-
-
-
def check_pending_accounts(self):
pass