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:
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(