tdigitalbitbox: some Python backwards compat fixes - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit cf98c8f2c15e5b0fdec0ce2150afc8993601f21a
 (DIR) parent 1f937aa6cd85bb9297df90306afd29827c6b8109
 (HTM) Author: benma <mbencun@gmail.com>
       Date:   Fri,  6 Apr 2018 14:26:35 +0200
       
       digitalbitbox: some Python backwards compat fixes
       
       Diffstat:
         M plugins/digitalbitbox/digitalbitbo… |      19 ++++++++++++-------
       
       1 file changed, 12 insertions(+), 7 deletions(-)
       ---
 (DIR) diff --git a/plugins/digitalbitbox/digitalbitbox.py b/plugins/digitalbitbox/digitalbitbox.py
       t@@ -91,7 +91,7 @@ class DigitalBitbox_Client():
        
            def _get_xpub(self, bip32_path):
                if self.check_device_dialog():
       -            return self.hid_send_encrypt(b'{"xpub": "%s"}' % bip32_path.encode('utf8'))
       +            return self.hid_send_encrypt(('{"xpub": "%s"}' % bip32_path).encode('utf8'))
        
        
            def get_xpub(self, bip32_path, xtype):
       t@@ -121,7 +121,7 @@ class DigitalBitbox_Client():
        
            def stretch_key(self, key):
                import pbkdf2, hmac
       -        return binascii.hexlify(pbkdf2.PBKDF2(key, b'Digital Bitbox', iterations = 20480, macmodule = hmac, digestmodule = hashlib.sha512).read(64))
       +        return to_hexstr(pbkdf2.PBKDF2(key, b'Digital Bitbox', iterations = 20480, macmodule = hmac, digestmodule = hashlib.sha512).read(64))
        
        
            def backup_password_dialog(self):
       t@@ -255,9 +255,14 @@ class DigitalBitbox_Client():
                    return
        
                try:
       +            # Python 3.5+
       +            jsonDecodeError = json.JSONDecodeError
       +        except AttributeError:
       +            jsonDecodeError = ValueError
       +        try:
                    with open(os.path.join(dbb_user_dir, "config.dat")) as f:
                        dbb_config = json.load(f)
       -        except (FileNotFoundError, json.JSONDecodeError):
       +        except (FileNotFoundError, jsonDecodeError):
                    return
        
                if 'encryptionprivkey' not in dbb_config or 'comserverchannelid' not in dbb_config:
       t@@ -284,8 +289,8 @@ class DigitalBitbox_Client():
        
            def dbb_generate_wallet(self):
                key = self.stretch_key(self.password)
       -        filename = ("Electrum-" + time.strftime("%Y-%m-%d-%H-%M-%S") + ".pdf").encode('utf8')
       -        msg = b'{"seed":{"source": "create", "key": "%s", "filename": "%s", "entropy": "%s"}}' % (key, filename, b'Digital Bitbox Electrum Plugin')
       +        filename = ("Electrum-" + time.strftime("%Y-%m-%d-%H-%M-%S") + ".pdf")
       +        msg = ('{"seed":{"source": "create", "key": "%s", "filename": "%s", "entropy": "%s"}}' % (key, filename, 'Digital Bitbox Electrum Plugin')).encode('utf8')
                reply = self.hid_send_encrypt(msg)
                if 'error' in reply:
                    raise Exception(reply['error']['message'])
       t@@ -320,7 +325,7 @@ class DigitalBitbox_Client():
                    self.handler.show_message(_("Loading backup...") + "\n\n" +
                                              _("To continue, touch the Digital Bitbox's light for 3 seconds.") + "\n\n" +
                                              _("To cancel, briefly touch the light or wait for the timeout."))
       -        msg = b'{"seed":{"source": "backup", "key": "%s", "filename": "%s"}}' % (key, backups['backup'][f].encode('utf8'))
       +        msg = ('{"seed":{"source": "backup", "key": "%s", "filename": "%s"}}' % (key, backups['backup'][f])).encode('utf8')
                hid_reply = self.hid_send_encrypt(msg)
                self.handler.finished()
                if 'error' in hid_reply:
       t@@ -448,7 +453,7 @@ class DigitalBitbox_KeyStore(Hardware_KeyStore):
                    hasharray.append({'hash': inputHash, 'keypath': inputPath})
                    hasharray = json.dumps(hasharray)
        
       -            msg = b'{"sign":{"meta":"sign message", "data":%s}}' % hasharray.encode('utf8')
       +            msg = ('{"sign":{"meta":"sign message", "data":%s}}' % hasharray).encode('utf8')
        
                    dbb_client = self.plugin.get_client(self)