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