electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit c24d38cd973b7f17699b22eda5b27e5802ce1012
parent e7dd80087540444be5f2583794ddcc345b99fb1f
Author: ThomasV <thomasv@electrum.org>
Date:   Wed, 31 Aug 2016 09:12:36 +0200

follow bip45 derivation with hardware multisig

Diffstat:
Mlib/base_wizard.py | 9++++-----
Mlib/keystore.py | 5+++--
2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/lib/base_wizard.py b/lib/base_wizard.py @@ -214,7 +214,7 @@ class BaseWizard(object): def account_id_dialog(self, f): message = '\n'.join([ - _('Enter your BIP44 account number here.'), + _('Enter your account number here.'), _('If you are not sure what this is, leave this field to zero.') ]) def is_int(x): @@ -226,8 +226,7 @@ class BaseWizard(object): self.line_dialog(run_next=f, title=_('Account Number'), message=message, default='0', test=is_int) def on_hardware_account_id(self, name, device_info, account_id): - from keystore import hardware_keystore, bip44_derivation - derivation = bip44_derivation(int(account_id)) + derivation = keystore.bip44_derivation(int(account_id), self.wallet_type == 'multisig') xpub = self.plugin.get_xpub(device_info.device.id_, derivation, self) if xpub is None: self.show_error('Cannot read xpub from device') @@ -239,7 +238,7 @@ class BaseWizard(object): 'xpub': xpub, 'label': device_info.label, } - k = hardware_keystore(d) + k = keystore.hardware_keystore(d) self.on_keystore(k) def restore_from_seed(self): @@ -274,7 +273,7 @@ class BaseWizard(object): def on_bip44(self, seed, passphrase, account_id): k = keystore.BIP32_KeyStore({}) bip32_seed = keystore.bip39_to_seed(seed, passphrase) - derivation = "m/44'/0'/%d'"%account_id + derivation = keystore.bip44_derivation(account_id, self.wallet_type == 'multisig') k.add_xprv_from_seed(bip32_seed, derivation) self.on_keystore(k) diff --git a/lib/keystore.py b/lib/keystore.py @@ -635,8 +635,9 @@ is_any_key = lambda x: is_old_mpk(x) or is_xprv(x) or is_xpub(x) or is_address_l is_private_key = lambda x: is_xprv(x) or is_private_key_list(x) is_bip32_key = lambda x: is_xprv(x) or is_xpub(x) -def bip44_derivation(account_id): - return "m/44'/0'/%d'"% int(account_id) +def bip44_derivation(account_id, multisig=False): + n = 45 if multisig else 44 + return "m/%d'/0'/%d'"% (n, account_id) def from_seed(seed, passphrase): if is_old_seed(seed):