thw wallets: define SUPPORTED_XTYPES for each plugin - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit c133e0059017cfb8ac4c149a49e0aafa3c531603 DIR parent dc2f8ee804a7a2062f19521932c0a3f76d7b2aa1 HTML Author: SomberNight <somber.night@protonmail.com> Date: Wed, 9 May 2018 18:17:49 +0200 hw wallets: define SUPPORTED_XTYPES for each plugin Diffstat: M plugins/digitalbitbox/digitalbitbo… | 7 ++++--- M plugins/keepkey/keepkey.py | 5 +++-- M plugins/ledger/ledger.py | 4 ++++ M plugins/trezor/trezor.py | 4 ++++ 4 files changed, 15 insertions(+), 5 deletions(-) --- DIR diff --git a/plugins/digitalbitbox/digitalbitbox.py b/plugins/digitalbitbox/digitalbitbox.py t@@ -96,7 +96,7 @@ class DigitalBitbox_Client(): def get_xpub(self, bip32_path, xtype): - assert xtype in ('standard', 'p2wpkh-p2sh', 'p2wpkh') + assert xtype in self.plugin.SUPPORTED_XTYPES reply = self._get_xpub(bip32_path) if reply: xpub = reply['xpub'] t@@ -664,6 +664,7 @@ class DigitalBitboxPlugin(HW_PluginBase): DEVICE_IDS = [ (0x03eb, 0x2402) # Digital Bitbox ] + SUPPORTED_XTYPES = ('standard', 'p2wpkh-p2sh', 'p2wpkh', 'p2wsh-p2sh', 'p2wsh') def __init__(self, parent, config, name): HW_PluginBase.__init__(self, parent, config, name) t@@ -723,8 +724,8 @@ class DigitalBitboxPlugin(HW_PluginBase): def get_xpub(self, device_id, derivation, xtype, wizard): - if xtype not in ('standard', 'p2wpkh-p2sh', 'p2wpkh'): - raise ScriptTypeNotSupported(_('This type of script is not supported with the Digital Bitbox.')) + if xtype not in self.SUPPORTED_XTYPES: + raise ScriptTypeNotSupported(_('This type of script is not supported with {}.').format(self.device)) devmgr = self.device_manager() client = devmgr.client_by_id(device_id) client.handler = self.create_handler(wizard) DIR diff --git a/plugins/keepkey/keepkey.py b/plugins/keepkey/keepkey.py t@@ -78,6 +78,7 @@ class KeepKeyPlugin(HW_PluginBase): libraries_URL = 'https://github.com/keepkey/python-keepkey' minimum_firmware = (1, 0, 0) keystore_class = KeepKey_KeyStore + SUPPORTED_XTYPES = ('standard', ) MAX_LABEL_LEN = 32 t@@ -235,8 +236,8 @@ class KeepKeyPlugin(HW_PluginBase): client.used() def get_xpub(self, device_id, derivation, xtype, wizard): - if xtype not in ('standard',): - raise ScriptTypeNotSupported(_('This type of script is not supported with KeepKey.')) + if xtype not in self.SUPPORTED_XTYPES: + raise ScriptTypeNotSupported(_('This type of script is not supported with {}.').format(self.device)) devmgr = self.device_manager() client = devmgr.client_by_id(device_id) client.handler = wizard DIR diff --git a/plugins/ledger/ledger.py b/plugins/ledger/ledger.py t@@ -12,6 +12,7 @@ from electrum.transaction import Transaction from electrum.wallet import Standard_Wallet from ..hw_wallet import HW_PluginBase from electrum.util import print_error, is_verbose, bfh, bh2u, versiontuple +from electrum.base_wizard import ScriptTypeNotSupported try: import hid t@@ -549,6 +550,7 @@ class LedgerPlugin(HW_PluginBase): (0x2c97, 0x0000), # Blue (0x2c97, 0x0001) # Nano-S ] + SUPPORTED_XTYPES = ('standard', 'p2wpkh-p2sh', 'p2wpkh', 'p2wsh-p2sh', 'p2wsh') def __init__(self, parent, config, name): self.segwit = config.get("segwit") t@@ -592,6 +594,8 @@ class LedgerPlugin(HW_PluginBase): client.get_xpub("m/44'/0'", 'standard') # TODO replace by direct derivation once Nano S > 1.1 def get_xpub(self, device_id, derivation, xtype, wizard): + if xtype not in self.SUPPORTED_XTYPES: + raise ScriptTypeNotSupported(_('This type of script is not supported with {}.').format(self.device)) devmgr = self.device_manager() client = devmgr.client_by_id(device_id) client.handler = self.create_handler(wizard) DIR diff --git a/plugins/trezor/trezor.py b/plugins/trezor/trezor.py t@@ -10,6 +10,7 @@ from electrum.i18n import _ from electrum.plugins import BasePlugin, Device from electrum.transaction import deserialize, Transaction from electrum.keystore import Hardware_KeyStore, is_xpubkey, parse_xpubkey, xtype_from_derivation +from electrum.base_wizard import ScriptTypeNotSupported from ..hw_wallet import HW_PluginBase t@@ -85,6 +86,7 @@ class TrezorPlugin(HW_PluginBase): minimum_firmware = (1, 5, 2) keystore_class = TrezorKeyStore minimum_library = (0, 9, 0) + SUPPORTED_XTYPES = ('standard', 'p2wpkh-p2sh', 'p2wpkh', 'p2wsh-p2sh', 'p2wsh') MAX_LABEL_LEN = 32 t@@ -263,6 +265,8 @@ class TrezorPlugin(HW_PluginBase): client.used() def get_xpub(self, device_id, derivation, xtype, wizard): + if xtype not in self.SUPPORTED_XTYPES: + raise ScriptTypeNotSupported(_('This type of script is not supported with {}.').format(self.device)) devmgr = self.device_manager() client = devmgr.client_by_id(device_id) client.handler = wizard