From ee36ec992c7498faaea3ff389d548fc309b3e560 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Mon, 4 Sep 2017 15:10:32 +0200 Subject: [PATCH] segwit: add purpose to derivation --- lib/base_wizard.py | 2 +- lib/keystore.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/base_wizard.py b/lib/base_wizard.py index b4646dcb..e6d0338a 100644 --- a/lib/base_wizard.py +++ b/lib/base_wizard.py @@ -293,7 +293,7 @@ class BaseWizard(object): self.derivation_dialog(f) def create_keystore(self, seed, passphrase): - k = keystore.from_seed(seed, passphrase) + k = keystore.from_seed(seed, passphrase, self.wallet_type=='multisig') self.on_keystore(k) def on_bip44(self, seed, passphrase, derivation): diff --git a/lib/keystore.py b/lib/keystore.py index 2d105420..75871be7 100644 --- a/lib/keystore.py +++ b/lib/keystore.py @@ -685,7 +685,7 @@ def bip44_derivation(account_id, segwit=False): coin = 1 if bitcoin.TESTNET else 0 return "m/%d'/%d'/%d'" % (bip, coin, int(account_id)) -def from_seed(seed, passphrase): +def from_seed(seed, passphrase, is_multisig): t = seed_type(seed) if t == 'old': keystore = Old_KeyStore({}) @@ -695,7 +695,9 @@ def from_seed(seed, passphrase): keystore.add_seed(seed) keystore.passphrase = passphrase bip32_seed = Mnemonic.mnemonic_to_seed(seed, passphrase) - keystore.add_xprv_from_seed(bip32_seed, t, "m/") + purpose = 1 if is_multisig else 0 + der = "m/" if t == 'standard' else ("m/%d'/"%purpose) + keystore.add_xprv_from_seed(bip32_seed, t, der) else: raise BaseException(t) return keystore