1
0

wizard: add non-hardened derivation path check for digital bitbox, re-add rescan button in choose hw device,

clear clipboard before confirming seed.
This commit is contained in:
Sander van Grieken
2023-09-14 12:10:28 +02:00
parent 7313259815
commit 4101946ff5
4 changed files with 25 additions and 1 deletions

View File

@@ -498,6 +498,8 @@ class WCConfirmSeed(WizardComponent):
)
self.layout().addLayout(self.slayout)
wizard.app.clipboard().clear()
def apply(self):
pass
@@ -1072,15 +1074,28 @@ class WCChooseHWDevice(WizardComponent, Logger):
self.device_list.setLayout(self.device_list_layout)
self.choice_w = None
self.rescan_button = QPushButton(_('Rescan devices'))
self.rescan_button.clicked.connect(self.on_rescan)
hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(self.rescan_button)
hbox.addStretch(1)
self.layout().addWidget(self.error_l)
self.layout().addWidget(self.device_list)
self.layout().addStretch(1)
self.layout().addLayout(hbox)
self.layout().addStretch(1)
self.c_values = []
def on_ready(self):
self.scan_devices()
def on_rescan(self):
self.scan_devices()
def on_scan_failed(self, code, message):
self.error_l.setText(message)
self.error_l.setVisible(True)
@@ -1115,6 +1130,9 @@ class WCChooseHWDevice(WizardComponent, Logger):
if self.valid:
self.wizard.next_button.setFocus()
else:
self.rescan_button.setFocus()
def failed_getting_device_infos(self, debug_msg, name, e):
# nonlocal debug_msg

View File

@@ -120,6 +120,10 @@ class DigitalBitbox_Client(HardwareClientBase):
def get_xpub(self, bip32_path, xtype):
assert xtype in self.plugin.SUPPORTED_XTYPES
if is_all_public_derivation(bip32_path):
raise UserFacingException(_('This device does not reveal xpubs corresponding to non-hardened paths'))
reply = self._get_xpub(bip32_path)
if reply:
xpub = reply['xpub']

View File

@@ -38,6 +38,7 @@ from electrum.keystore import Xpub, Hardware_KeyStore
if TYPE_CHECKING:
import threading
from electrum.plugin import DeviceInfo
from electrum.wallet import Abstract_Wallet
@@ -272,6 +273,7 @@ class HardwareClientBase(ABC):
is constructed for the first time. 'd' is the dict that will be
passed to the keystore constructor.
"""
# TODO: this is only used by coldcard. determine if this needs to stay generalized
pass

View File

@@ -423,7 +423,7 @@ class InitSettingsLayout(QVBoxLayout):
# no backup
self.cb_no_backup = None
if method == TIM_NEW:
self.cb_no_backup = QCheckBox(f'''{_('Enable seedless mode')}''')
self.cb_no_backup = QCheckBox(_('Enable seedless mode'))
self.cb_no_backup.setChecked(False)
if (model == '1' and fw_version >= (1, 7, 1)
or model == 'T' and fw_version >= (2, 0, 9)):