electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit cdda1549e91421723c677d751616660db95afb40
parent 73cf007048b4f9381814d065c60999eda70e158c
Author: ghost43 <somber.night@protonmail.com>
Date:   Thu, 23 Jul 2020 00:15:26 +0000

Merge pull request #6386 from benma/bitbox02_id

bitbox02: implement get_soft_device_id so multisig runs more smoothly
Diffstat:
Melectrum/plugins/bitbox02/bitbox02.py | 27+++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/electrum/plugins/bitbox02/bitbox02.py b/electrum/plugins/bitbox02/bitbox02.py @@ -85,7 +85,16 @@ class BitBox02Client(HardwareClientBase): return False return True - def pairing_dialog(self, wizard: bool = True): + def get_soft_device_id(self) -> Optional[str]: + if self.handler is None: + # Can't do the pairing without the handler. This happens at wallet creation time, when + # listing the devices. + return None + if self.bitbox02_device is None: + self.pairing_dialog() + return self.bitbox02_device.root_fingerprint().hex() + + def pairing_dialog(self): def pairing_step(code: str, device_response: Callable[[], bool]) -> bool: msg = "Please compare and confirm the pairing code on your BitBox02:\n" + code self.handler.show_message(msg) @@ -197,7 +206,7 @@ class BitBox02Client(HardwareClientBase): def get_xpub(self, bip32_path: str, xtype: str, *, display: bool = False) -> str: if self.bitbox02_device is None: - self.pairing_dialog(wizard=False) + self.pairing_dialog() if self.bitbox02_device is None: raise Exception( @@ -235,6 +244,20 @@ class BitBox02Client(HardwareClientBase): display=display, ) + def label(self) -> str: + if self.handler is None: + # Can't do the pairing without the handler. This happens at wallet creation time, when + # listing the devices. + return super().label() + if self.bitbox02_device is None: + self.pairing_dialog() + # We add the fingerprint to the label, as if there are two devices with the same label, the + # device manager can mistake one for another and fail. + return "%s (%s)" % ( + self.bitbox02_device.device_info()["name"], + self.bitbox02_device.root_fingerprint().hex(), + ) + def request_root_fingerprint_from_device(self) -> str: if self.bitbox02_device is None: raise Exception(