diff --git a/plugins/trezor.py b/plugins/trezor.py index 848c5756..b25032a1 100644 --- a/plugins/trezor.py +++ b/plugins/trezor.py @@ -4,12 +4,12 @@ from binascii import unhexlify from struct import pack from sys import stderr from time import sleep -from base64 import b64encode +from base64 import b64encode, b64decode from electrum_gui.qt.password_dialog import make_password_dialog, run_password_dialog from electrum_gui.qt.util import ok_cancel_buttons from electrum.account import BIP32_Account -from electrum.bitcoin import EncodeBase58Check +from electrum.bitcoin import EncodeBase58Check, public_key_to_bc_address from electrum.i18n import _ from electrum.plugins import BasePlugin from electrum.transaction import deserialize @@ -166,6 +166,21 @@ class TrezorWallet(NewWallet): #do nothing - no priv keys available pass + def decrypt_message(self, pubkey, message, password): + try: + address = public_key_to_bc_address(pubkey.decode('hex')) + address_path = self.address_id(address) + address_n = self.get_client().expand_path(address_path) + except Exception, e: + raise e + try: + decrypted_msg = self.get_client().decrypt_message(address_n, b64decode(message)) + except Exception, e: + raise e + finally: + twd.emit(SIGNAL('trezor_done')) + return str(decrypted_msg) + def sign_message(self, address, message, password): try: address_path = self.address_id(address)