Browse Source

hw wallets: define SUPPORTED_XTYPES for each plugin

3.2.x
SomberNight 7 years ago
parent
commit
c133e00590
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 7
      plugins/digitalbitbox/digitalbitbox.py
  2. 5
      plugins/keepkey/keepkey.py
  3. 4
      plugins/ledger/ledger.py
  4. 4
      plugins/trezor/trezor.py

7
plugins/digitalbitbox/digitalbitbox.py

@ -96,7 +96,7 @@ class DigitalBitbox_Client():
def get_xpub(self, bip32_path, xtype): 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) reply = self._get_xpub(bip32_path)
if reply: if reply:
xpub = reply['xpub'] xpub = reply['xpub']
@ -664,6 +664,7 @@ class DigitalBitboxPlugin(HW_PluginBase):
DEVICE_IDS = [ DEVICE_IDS = [
(0x03eb, 0x2402) # Digital Bitbox (0x03eb, 0x2402) # Digital Bitbox
] ]
SUPPORTED_XTYPES = ('standard', 'p2wpkh-p2sh', 'p2wpkh', 'p2wsh-p2sh', 'p2wsh')
def __init__(self, parent, config, name): def __init__(self, parent, config, name):
HW_PluginBase.__init__(self, parent, config, name) HW_PluginBase.__init__(self, parent, config, name)
@ -723,8 +724,8 @@ class DigitalBitboxPlugin(HW_PluginBase):
def get_xpub(self, device_id, derivation, xtype, wizard): def get_xpub(self, device_id, derivation, xtype, wizard):
if xtype not in ('standard', 'p2wpkh-p2sh', 'p2wpkh'): if xtype not in self.SUPPORTED_XTYPES:
raise ScriptTypeNotSupported(_('This type of script is not supported with the Digital Bitbox.')) raise ScriptTypeNotSupported(_('This type of script is not supported with {}.').format(self.device))
devmgr = self.device_manager() devmgr = self.device_manager()
client = devmgr.client_by_id(device_id) client = devmgr.client_by_id(device_id)
client.handler = self.create_handler(wizard) client.handler = self.create_handler(wizard)

5
plugins/keepkey/keepkey.py

@ -78,6 +78,7 @@ class KeepKeyPlugin(HW_PluginBase):
libraries_URL = 'https://github.com/keepkey/python-keepkey' libraries_URL = 'https://github.com/keepkey/python-keepkey'
minimum_firmware = (1, 0, 0) minimum_firmware = (1, 0, 0)
keystore_class = KeepKey_KeyStore keystore_class = KeepKey_KeyStore
SUPPORTED_XTYPES = ('standard', )
MAX_LABEL_LEN = 32 MAX_LABEL_LEN = 32
@ -235,8 +236,8 @@ class KeepKeyPlugin(HW_PluginBase):
client.used() client.used()
def get_xpub(self, device_id, derivation, xtype, wizard): def get_xpub(self, device_id, derivation, xtype, wizard):
if xtype not in ('standard',): if xtype not in self.SUPPORTED_XTYPES:
raise ScriptTypeNotSupported(_('This type of script is not supported with KeepKey.')) raise ScriptTypeNotSupported(_('This type of script is not supported with {}.').format(self.device))
devmgr = self.device_manager() devmgr = self.device_manager()
client = devmgr.client_by_id(device_id) client = devmgr.client_by_id(device_id)
client.handler = wizard client.handler = wizard

4
plugins/ledger/ledger.py

@ -12,6 +12,7 @@ from electrum.transaction import Transaction
from electrum.wallet import Standard_Wallet from electrum.wallet import Standard_Wallet
from ..hw_wallet import HW_PluginBase from ..hw_wallet import HW_PluginBase
from electrum.util import print_error, is_verbose, bfh, bh2u, versiontuple from electrum.util import print_error, is_verbose, bfh, bh2u, versiontuple
from electrum.base_wizard import ScriptTypeNotSupported
try: try:
import hid import hid
@ -549,6 +550,7 @@ class LedgerPlugin(HW_PluginBase):
(0x2c97, 0x0000), # Blue (0x2c97, 0x0000), # Blue
(0x2c97, 0x0001) # Nano-S (0x2c97, 0x0001) # Nano-S
] ]
SUPPORTED_XTYPES = ('standard', 'p2wpkh-p2sh', 'p2wpkh', 'p2wsh-p2sh', 'p2wsh')
def __init__(self, parent, config, name): def __init__(self, parent, config, name):
self.segwit = config.get("segwit") self.segwit = config.get("segwit")
@ -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 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): 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() devmgr = self.device_manager()
client = devmgr.client_by_id(device_id) client = devmgr.client_by_id(device_id)
client.handler = self.create_handler(wizard) client.handler = self.create_handler(wizard)

4
plugins/trezor/trezor.py

@ -10,6 +10,7 @@ from electrum.i18n import _
from electrum.plugins import BasePlugin, Device from electrum.plugins import BasePlugin, Device
from electrum.transaction import deserialize, Transaction from electrum.transaction import deserialize, Transaction
from electrum.keystore import Hardware_KeyStore, is_xpubkey, parse_xpubkey, xtype_from_derivation 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 from ..hw_wallet import HW_PluginBase
@ -85,6 +86,7 @@ class TrezorPlugin(HW_PluginBase):
minimum_firmware = (1, 5, 2) minimum_firmware = (1, 5, 2)
keystore_class = TrezorKeyStore keystore_class = TrezorKeyStore
minimum_library = (0, 9, 0) minimum_library = (0, 9, 0)
SUPPORTED_XTYPES = ('standard', 'p2wpkh-p2sh', 'p2wpkh', 'p2wsh-p2sh', 'p2wsh')
MAX_LABEL_LEN = 32 MAX_LABEL_LEN = 32
@ -263,6 +265,8 @@ class TrezorPlugin(HW_PluginBase):
client.used() client.used()
def get_xpub(self, device_id, derivation, xtype, wizard): 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() devmgr = self.device_manager()
client = devmgr.client_by_id(device_id) client = devmgr.client_by_id(device_id)
client.handler = wizard client.handler = wizard

Loading…
Cancel
Save