From 4a37668b01f23c2a1fc46844fc19c7c556f3ec6f Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Thu, 24 Oct 2024 15:57:57 +0200 Subject: [PATCH] wizard: don't require seed extension to be set early. this also fixes deferring multisig constraint validation when seed is same as another cosigner, but still can have different seed extension --- electrum/gui/qt/wizard/wallet.py | 2 -- electrum/wizard.py | 14 ++++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/electrum/gui/qt/wizard/wallet.py b/electrum/gui/qt/wizard/wallet.py index 6202f848a..6135b4195 100644 --- a/electrum/gui/qt/wizard/wallet.py +++ b/electrum/gui/qt/wizard/wallet.py @@ -450,7 +450,6 @@ class WCCreateSeed(WalletWizardComponent): self.wizard_data['seed_type'] = self.seed_type self.wizard_data['seed_extend'] = self.seed_widget.is_ext self.wizard_data['seed_variant'] = 'electrum' - self.wizard_data['seed_extra_words'] = '' # empty default def create_seed(self): self.busy = True @@ -648,7 +647,6 @@ class WCHaveSeed(WalletWizardComponent, Logger): else: cosigner_data['seed_type'] = self.seed_widget.seed_type cosigner_data['seed_extend'] = self.seed_widget.is_ext if self.can_passphrase else False - cosigner_data['seed_extra_words'] = '' # empty default class WCScriptAndDerivation(WalletWizardComponent, Logger): diff --git a/electrum/wizard.py b/electrum/wizard.py index 3c7277539..0506fa1e4 100644 --- a/electrum/wizard.py +++ b/electrum/wizard.py @@ -414,10 +414,11 @@ class NewWalletWizard(AbstractWizard): def keystore_from_data(self, wallet_type: str, data: dict): if data['keystore_type'] in ['createseed', 'haveseed'] and 'seed' in data: + seed_extension = data['seed_extra_words'] if data['seed_extend'] else '' if data['seed_variant'] == 'electrum': - return keystore.from_seed(data['seed'], passphrase=data['seed_extra_words'], for_multisig=True) + return keystore.from_seed(data['seed'], passphrase=seed_extension, for_multisig=True) elif data['seed_variant'] == 'bip39': - root_seed = keystore.bip39_to_seed(data['seed'], passphrase=data['seed_extra_words']) + root_seed = keystore.bip39_to_seed(data['seed'], passphrase=seed_extension) derivation = normalize_bip32_derivation(data['derivation_path']) if wallet_type == 'multisig': script = data['script_type'] if data['script_type'] != 'p2sh' else 'standard' @@ -425,7 +426,7 @@ class NewWalletWizard(AbstractWizard): script = data['script_type'] if data['script_type'] != 'p2pkh' else 'standard' return keystore.from_bip43_rootseed(root_seed, derivation=derivation, xtype=script) elif data['seed_variant'] == 'slip39': - root_seed = data['seed'].decrypt(data['seed_extra_words']) + root_seed = data['seed'].decrypt(seed_extension) derivation = normalize_bip32_derivation(data['derivation_path']) if wallet_type == 'multisig': script = data['script_type'] if data['script_type'] != 'p2sh' else 'standard' @@ -548,15 +549,16 @@ class NewWalletWizard(AbstractWizard): for addr in data['address_list'].split(): addresses[addr] = {} elif data['keystore_type'] in ['createseed', 'haveseed']: + seed_extension = data['seed_extra_words'] if data['seed_extend'] else '' if data['seed_type'] in ['old', 'standard', 'segwit']: self._logger.debug('creating keystore from electrum seed') - k = keystore.from_seed(data['seed'], passphrase=data['seed_extra_words'], for_multisig=data['wallet_type'] == 'multisig') + k = keystore.from_seed(data['seed'], passphrase=seed_extension, for_multisig=data['wallet_type'] == 'multisig') elif data['seed_type'] in ['bip39', 'slip39']: self._logger.debug('creating keystore from %s seed' % data['seed_type']) if data['seed_type'] == 'bip39': - root_seed = keystore.bip39_to_seed(data['seed'], passphrase=data['seed_extra_words']) + root_seed = keystore.bip39_to_seed(data['seed'], passphrase=seed_extension) else: - root_seed = data['seed'].decrypt(data['seed_extra_words']) + root_seed = data['seed'].decrypt(seed_extension) derivation = normalize_bip32_derivation(data['derivation_path']) if data['wallet_type'] == 'multisig': script = data['script_type'] if data['script_type'] != 'p2sh' else 'standard'