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:
@@ -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):
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user