wizard: skip/hide passphrase option for 'old' and '2fa' seeds (see #4326)
This commit is contained in:
@@ -20,20 +20,23 @@ WizardComponent {
|
||||
|
||||
property string _seedType
|
||||
property string _validationMessage
|
||||
property bool _canPassphrase
|
||||
property bool _seedValid
|
||||
|
||||
function apply() {
|
||||
var seed_extend = extendcb.checked && _canPassphrase
|
||||
if (cosigner) {
|
||||
wizard_data['multisig_cosigner_data'][cosigner.toString()]['seed'] = seedtext.text
|
||||
wizard_data['multisig_cosigner_data'][cosigner.toString()]['seed_variant'] = seed_variant_cb.currentValue
|
||||
wizard_data['multisig_cosigner_data'][cosigner.toString()]['seed_type'] = _seedType
|
||||
wizard_data['multisig_cosigner_data'][cosigner.toString()]['seed_extend'] = extendcb.checked
|
||||
wizard_data['multisig_cosigner_data'][cosigner.toString()]['seed_extra_words'] = extendcb.checked ? customwordstext.text : ''
|
||||
wizard_data['multisig_cosigner_data'][cosigner.toString()]['seed_extend'] = seed_extend
|
||||
wizard_data['multisig_cosigner_data'][cosigner.toString()]['seed_extra_words'] = seed_extend ? customwordstext.text : ''
|
||||
} else {
|
||||
wizard_data['seed'] = seedtext.text
|
||||
wizard_data['seed_variant'] = seed_variant_cb.currentValue
|
||||
wizard_data['seed_type'] = _seedType
|
||||
wizard_data['seed_extend'] = extendcb.checked
|
||||
wizard_data['seed_extra_words'] = extendcb.checked ? customwordstext.text : ''
|
||||
wizard_data['seed_extend'] = seed_extend
|
||||
wizard_data['seed_extra_words'] = seed_extend ? customwordstext.text : ''
|
||||
|
||||
// determine script type from electrum seed type
|
||||
// (used to limit script type options for bip39 cosigners)
|
||||
@@ -69,19 +72,16 @@ WizardComponent {
|
||||
|
||||
function checkValid() {
|
||||
valid = false
|
||||
_validationMessage = ''
|
||||
|
||||
if (extendcb.checked && customwordstext.text == '')
|
||||
return
|
||||
_seedValid = false
|
||||
|
||||
var verifyResult = wiz.verifySeed(seedtext.text, seed_variant_cb.currentValue, wizard_data['wallet_type'])
|
||||
|
||||
_validationMessage = verifyResult.message
|
||||
_seedType = verifyResult.type
|
||||
_canPassphrase = verifyResult.can_passphrase
|
||||
|
||||
if (!cosigner || !verifyResult.valid) {
|
||||
valid = verifyResult.valid
|
||||
return
|
||||
_seedValid = verifyResult.valid
|
||||
} else {
|
||||
// bip39 validate after derivation path is known
|
||||
if (seed_variant_cb.currentValue == 'electrum') {
|
||||
@@ -93,12 +93,19 @@ WizardComponent {
|
||||
validationtext.text = qsTr('Error: master public key types do not match')
|
||||
return
|
||||
} else {
|
||||
valid = true
|
||||
_seedValid = true
|
||||
}
|
||||
} else {
|
||||
valid = true
|
||||
_seedValid = true
|
||||
}
|
||||
}
|
||||
|
||||
if (_canPassphrase && extendcb.checked && customwordstext.text == '') {
|
||||
valid = false
|
||||
return
|
||||
}
|
||||
|
||||
valid = _seedValid
|
||||
}
|
||||
|
||||
Flickable {
|
||||
@@ -202,16 +209,14 @@ WizardComponent {
|
||||
|
||||
placeholderText: cosigner ? qsTr('Enter cosigner seed') : qsTr('Enter your seed')
|
||||
|
||||
indicatorValid: root.valid
|
||||
indicatorValid: root._seedValid
|
||||
? root._seedType == 'bip39' && root._validationMessage
|
||||
? false
|
||||
: root.valid
|
||||
: root.valid
|
||||
indicatorText: root.valid
|
||||
? root._validationMessage
|
||||
: root._seedValid
|
||||
: root._seedValid
|
||||
indicatorText: root._validationMessage
|
||||
? root._validationMessage
|
||||
: root._seedType
|
||||
: ''
|
||||
onTextChanged: {
|
||||
startValidationTimer()
|
||||
}
|
||||
@@ -221,13 +226,14 @@ WizardComponent {
|
||||
id: extendcb
|
||||
Layout.columnSpan: 2
|
||||
Layout.fillWidth: true
|
||||
visible: _canPassphrase
|
||||
text: qsTr('Extend seed with custom words')
|
||||
onCheckedChanged: startValidationTimer()
|
||||
}
|
||||
|
||||
TextField {
|
||||
id: customwordstext
|
||||
visible: extendcb.checked
|
||||
visible: extendcb.checked && extendcb.visible
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
placeholderText: qsTr('Enter your custom word(s)')
|
||||
|
||||
@@ -111,11 +111,12 @@ class QENewWalletWizard(NewWalletWizard, QEAbstractWizard):
|
||||
|
||||
@pyqtSlot(str, str, str, result='QVariantMap')
|
||||
def verifySeed(self, seed, seed_variant, wallet_type='standard'):
|
||||
seed_valid, seed_type, validation_message = self.validate_seed(seed, seed_variant, wallet_type)
|
||||
seed_valid, seed_type, validation_message, can_passphrase = self.validate_seed(seed, seed_variant, wallet_type)
|
||||
return {
|
||||
'valid': seed_valid,
|
||||
'type': seed_type,
|
||||
'message': validation_message
|
||||
'message': validation_message,
|
||||
'can_passphrase': can_passphrase
|
||||
}
|
||||
|
||||
def _wallet_path_from_wallet_name(self, wallet_name: str) -> str:
|
||||
|
||||
@@ -612,6 +612,8 @@ class WCHaveSeed(WalletWizardComponent, Logger):
|
||||
|
||||
self.next_button = Hack()
|
||||
|
||||
self.can_passphrase = True
|
||||
|
||||
def on_ready(self):
|
||||
options = ['ext'] if self.wizard_data['wallet_type'] == '2fa' else ['ext', 'bip39', 'slip39']
|
||||
self.slayout = SeedLayout(
|
||||
@@ -640,7 +642,7 @@ class WCHaveSeed(WalletWizardComponent, Logger):
|
||||
seed = self.slayout.get_seed()
|
||||
seed_variant = self.slayout.seed_type
|
||||
wallet_type = self.wizard_data['wallet_type']
|
||||
seed_valid, seed_type, validation_message = self.wizard.validate_seed(seed, seed_variant, wallet_type) #
|
||||
seed_valid, seed_type, validation_message, self.can_passphrase = self.wizard.validate_seed(seed, seed_variant, wallet_type)
|
||||
|
||||
is_cosigner = self.wizard_data['wallet_type'] == 'multisig' and 'multisig_current_cosigner' in self.wizard_data
|
||||
|
||||
@@ -664,7 +666,7 @@ class WCHaveSeed(WalletWizardComponent, Logger):
|
||||
cosigner_data['seed_type'] = mnemonic.seed_type(self.slayout.get_seed())
|
||||
else:
|
||||
cosigner_data['seed_type'] = self.slayout.seed_type
|
||||
cosigner_data['seed_extend'] = self.slayout.is_ext
|
||||
cosigner_data['seed_extend'] = self.slayout.is_ext if self.can_passphrase else False
|
||||
cosigner_data['seed_extra_words'] = '' # empty default
|
||||
|
||||
|
||||
|
||||
@@ -486,11 +486,14 @@ class NewWalletWizard(AbstractWizard):
|
||||
seed_type = ''
|
||||
seed_valid = False
|
||||
validation_message = ''
|
||||
can_passphrase = True
|
||||
|
||||
if seed_variant == 'electrum':
|
||||
seed_type = mnemonic.seed_type(seed)
|
||||
if seed_type != '':
|
||||
seed_valid = True
|
||||
if seed_type in ['old', '2fa']:
|
||||
can_passphrase = False
|
||||
elif seed_variant == 'bip39':
|
||||
is_checksum, is_wordlist = keystore.bip39_is_checksum_valid(seed)
|
||||
validation_message = ('' if is_checksum else _('BIP39 checksum failed')) if is_wordlist else _('Unknown BIP39 wordlist')
|
||||
@@ -520,7 +523,7 @@ class NewWalletWizard(AbstractWizard):
|
||||
|
||||
self._logger.debug(f'seed verified: {seed_valid}, type={seed_type}, validation_message={validation_message}')
|
||||
|
||||
return seed_valid, seed_type, validation_message
|
||||
return seed_valid, seed_type, validation_message, can_passphrase
|
||||
|
||||
def create_storage(self, path: str, data: dict):
|
||||
assert data['wallet_type'] in ['standard', '2fa', 'imported', 'multisig']
|
||||
|
||||
Reference in New Issue
Block a user