From f315cb911704d34195027746df75ebcdee9fb9b3 Mon Sep 17 00:00:00 2001 From: wampum Date: Fri, 2 Feb 2018 02:40:51 +0000 Subject: [PATCH] show address on trezor for multisig --- plugins/trezor/plugin.py | 18 +++++++++++++++++- plugins/trezor/qt_generic.py | 2 -- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py index c1dde4817f0b..9bdf79038326 100644 --- a/plugins/trezor/plugin.py +++ b/plugins/trezor/plugin.py @@ -262,7 +262,23 @@ def show_address(self, wallet, address): script_type = self.types.InputScriptType.SPENDP2SHWITNESS else: script_type = self.types.InputScriptType.SPENDADDRESS - client.get_address(self.get_coin_name(), address_n, True, script_type=script_type) + xpubs = wallet.get_master_public_keys() + if len(xpubs) == 1: + client.get_address(self.get_coin_name(), address_n, True, script_type=script_type) + else: + def f(xpub): + node = self.ckd_public.deserialize(xpub) + return self.types.HDNodePathType(node=node, address_n=[change, index]) + pubkeys = wallet.get_public_keys(address) + # sort xpubs using the order of pubkeys + sorted_pubkeys, sorted_xpubs = zip(*sorted(zip(pubkeys, xpubs))) + pubkeys = list(map(f, sorted_xpubs)) + multisig = self.types.MultisigRedeemScriptType( + pubkeys=pubkeys, + signatures=[b''] * wallet.n, + m=wallet.m, + ) + client.get_address(self.get_coin_name(), address_n, True, multisig=multisig) def tx_inputs(self, tx, for_sig=False, script_gen=SCRIPT_GEN_LEGACY): inputs = [] diff --git a/plugins/trezor/qt_generic.py b/plugins/trezor/qt_generic.py index f0510e131cea..0fff20195c73 100644 --- a/plugins/trezor/qt_generic.py +++ b/plugins/trezor/qt_generic.py @@ -188,8 +188,6 @@ def create_handler(self, window): @hook def receive_menu(self, menu, addrs, wallet): - if type(wallet) is not Standard_Wallet: - return keystore = wallet.get_keystore() if type(keystore) == self.keystore_class and len(addrs) == 1: def show_address():