1
0

BIP32_HD_Wallet: Fix address derivation

Unfortunately there was root_name and root_derivation confusion
in the past for classes derived from BIP_32_HD_Wallet.
Address derivation used root_name and so would begin with 'x/'
whereas it should have begun with root_derivation, and so started
with 'm/'.

This fixes that old wart and removes some fudges from the trezor
code that used to work around it.
This commit is contained in:
Neil Booth
2016-01-10 19:53:28 +09:00
parent 4743f033b4
commit 3d781a2d1b
4 changed files with 12 additions and 15 deletions

View File

@@ -63,6 +63,10 @@ class BTChipWallet(BIP44_Wallet):
assert not self.has_seed()
return self.force_watching_only
def address_id(self, address):
# Strip the leading "m/"
return BIP44_Wallet.address_id(self, address)[2:]
def get_client(self, noPin=False):
if not BTCHIP:
self.give_error('please install github.com/btchip/btchip-python')

View File

@@ -98,7 +98,7 @@ def trezor_client_class(protocol_mixin, base_client, proto):
'''Convert bip32 path to list of uint32 integers with prime flags
0/-1/1' -> [0, 0x80000001, 0x80000001]'''
path = []
for x in n.split('/'):
for x in n.split('/')[1:]:
prime = 0
if x.endswith("'"):
x = x.replace('\'', '')

View File

@@ -100,7 +100,6 @@ class TrezorCompatibleWallet(BIP44_Wallet):
# When creating a wallet we need to ask the device for the
# master public key
derivation = derivation.replace(self.root_name, self.prefix() + "/")
xpub = self.get_public_key(derivation)
return xpub, None