1
0

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
This commit is contained in:
Sander van Grieken
2024-10-24 15:57:57 +02:00
parent adb567b20f
commit 4a37668b01
2 changed files with 8 additions and 8 deletions

View File

@@ -450,7 +450,6 @@ class WCCreateSeed(WalletWizardComponent):
self.wizard_data['seed_type'] = self.seed_type self.wizard_data['seed_type'] = self.seed_type
self.wizard_data['seed_extend'] = self.seed_widget.is_ext self.wizard_data['seed_extend'] = self.seed_widget.is_ext
self.wizard_data['seed_variant'] = 'electrum' self.wizard_data['seed_variant'] = 'electrum'
self.wizard_data['seed_extra_words'] = '' # empty default
def create_seed(self): def create_seed(self):
self.busy = True self.busy = True
@@ -648,7 +647,6 @@ class WCHaveSeed(WalletWizardComponent, Logger):
else: else:
cosigner_data['seed_type'] = self.seed_widget.seed_type 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_extend'] = self.seed_widget.is_ext if self.can_passphrase else False
cosigner_data['seed_extra_words'] = '' # empty default
class WCScriptAndDerivation(WalletWizardComponent, Logger): class WCScriptAndDerivation(WalletWizardComponent, Logger):

View File

@@ -414,10 +414,11 @@ class NewWalletWizard(AbstractWizard):
def keystore_from_data(self, wallet_type: str, data: dict): def keystore_from_data(self, wallet_type: str, data: dict):
if data['keystore_type'] in ['createseed', 'haveseed'] and 'seed' in data: 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': 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': 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']) derivation = normalize_bip32_derivation(data['derivation_path'])
if wallet_type == 'multisig': if wallet_type == 'multisig':
script = data['script_type'] if data['script_type'] != 'p2sh' else 'standard' 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' script = data['script_type'] if data['script_type'] != 'p2pkh' else 'standard'
return keystore.from_bip43_rootseed(root_seed, derivation=derivation, xtype=script) return keystore.from_bip43_rootseed(root_seed, derivation=derivation, xtype=script)
elif data['seed_variant'] == 'slip39': 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']) derivation = normalize_bip32_derivation(data['derivation_path'])
if wallet_type == 'multisig': if wallet_type == 'multisig':
script = data['script_type'] if data['script_type'] != 'p2sh' else 'standard' 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(): for addr in data['address_list'].split():
addresses[addr] = {} addresses[addr] = {}
elif data['keystore_type'] in ['createseed', 'haveseed']: 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']: if data['seed_type'] in ['old', 'standard', 'segwit']:
self._logger.debug('creating keystore from electrum seed') 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']: elif data['seed_type'] in ['bip39', 'slip39']:
self._logger.debug('creating keystore from %s seed' % data['seed_type']) self._logger.debug('creating keystore from %s seed' % data['seed_type'])
if data['seed_type'] == 'bip39': 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: else:
root_seed = data['seed'].decrypt(data['seed_extra_words']) root_seed = data['seed'].decrypt(seed_extension)
derivation = normalize_bip32_derivation(data['derivation_path']) derivation = normalize_bip32_derivation(data['derivation_path'])
if data['wallet_type'] == 'multisig': if data['wallet_type'] == 'multisig':
script = data['script_type'] if data['script_type'] != 'p2sh' else 'standard' script = data['script_type'] if data['script_type'] != 'p2sh' else 'standard'