diff --git a/electrum/plugins/bitbox02/bitbox02.py b/electrum/plugins/bitbox02/bitbox02.py index 3e3207a1e..e0dd51b25 100644 --- a/electrum/plugins/bitbox02/bitbox02.py +++ b/electrum/plugins/bitbox02/bitbox02.py @@ -72,6 +72,9 @@ class BitBox02Client(HardwareClientBase): if self.bitbox_hid_info is None: raise Exception("No BitBox02 detected") + def device_model_name(self) -> Optional[str]: + return 'BitBox02' + def is_initialized(self) -> bool: return True diff --git a/electrum/plugins/coldcard/coldcard.py b/electrum/plugins/coldcard/coldcard.py index 25a7edac1..a05bd7e52 100644 --- a/electrum/plugins/coldcard/coldcard.py +++ b/electrum/plugins/coldcard/coldcard.py @@ -59,7 +59,6 @@ CKCC_SIMULATED_PID = CKCC_PID ^ 0x55aa class CKCCClient(HardwareClientBase): - def __init__(self, plugin, handler, dev_path, *, is_simulator=False): HardwareClientBase.__init__(self, plugin=plugin) self.device = plugin.device @@ -80,6 +79,9 @@ class CKCCClient(HardwareClientBase): # NOTE: MiTM test is delayed until we have a hint as to what XPUB we # should expect. It's also kinda slow. + def device_model_name(self) -> Optional[str]: + return 'Coldcard' + def __repr__(self): return '' % (xfp2str(self.dev.master_fingerprint), self.label()) diff --git a/electrum/plugins/digitalbitbox/digitalbitbox.py b/electrum/plugins/digitalbitbox/digitalbitbox.py index 6da9b876c..12faabf7e 100644 --- a/electrum/plugins/digitalbitbox/digitalbitbox.py +++ b/electrum/plugins/digitalbitbox/digitalbitbox.py @@ -15,7 +15,7 @@ import struct import sys import time import copy -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Optional from electrum.crypto import sha256d, EncodeAES_bytes, DecodeAES_bytes, hmac_oneshot from electrum.bitcoin import public_key_to_p2pkh @@ -69,8 +69,8 @@ MIN_MAJOR_VERSION = 5 ENCRYPTION_PRIVKEY_KEY = 'encryptionprivkey' CHANNEL_ID_KEY = 'comserverchannelid' -class DigitalBitbox_Client(HardwareClientBase): +class DigitalBitbox_Client(HardwareClientBase): def __init__(self, plugin, hidDevice): HardwareClientBase.__init__(self, plugin=plugin) self.dbb_hid = hidDevice @@ -80,6 +80,9 @@ class DigitalBitbox_Client(HardwareClientBase): self.setupRunning = False self.usbReportSize = 64 # firmware > v2.0.0 + def device_model_name(self) -> Optional[str]: + return 'Digital BitBox' + @runs_in_hwd_thread def close(self): if self.opened: diff --git a/electrum/plugins/hw_wallet/plugin.py b/electrum/plugins/hw_wallet/plugin.py index ca77d3959..f4550c75a 100644 --- a/electrum/plugins/hw_wallet/plugin.py +++ b/electrum/plugins/hw_wallet/plugin.py @@ -23,7 +23,7 @@ # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. - +from abc import abstractmethod from typing import TYPE_CHECKING, Sequence, Optional, Type, Iterable, Any from electrum.plugin import (BasePlugin, hook, Device, DeviceMgr, @@ -249,6 +249,7 @@ class HardwareClientBase: password = Xpub.get_pubkey_from_xpub(xpub, ()).hex() return password + @abstractmethod def device_model_name(self) -> Optional[str]: """Return the name of the model of this device, which might be displayed in the UI. E.g. for Trezor, "Trezor One" or "Trezor T". diff --git a/electrum/plugins/safe_t/clientbase.py b/electrum/plugins/safe_t/clientbase.py index 9ff5361d3..df03442e3 100644 --- a/electrum/plugins/safe_t/clientbase.py +++ b/electrum/plugins/safe_t/clientbase.py @@ -117,6 +117,9 @@ class SafeTClientBase(HardwareClientBase, GuiMixin, Logger): Logger.__init__(self) self.used() + def device_model_name(self) -> Optional[str]: + return 'Safe-T' + def __str__(self): return "%s/%s" % (self.label(), self.features.device_id)