From 67bd1c223e9c12ce5a7c9268122b5e00eb2c1a0f Mon Sep 17 00:00:00 2001 From: Nick Johnson Date: Tue, 24 May 2016 20:32:58 +0100 Subject: [PATCH] Add support for get_ethereum_address to trezorlib and trezorctl. --- trezorctl | 11 +++++++++++ trezorlib/client.py | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/trezorctl b/trezorctl index 91ab2a1aa8..b9b0a2a06d 100755 --- a/trezorctl +++ b/trezorctl @@ -99,6 +99,11 @@ class Commands(object): address_n = self.client.expand_path(args.n) return self.client.get_address(args.coin, address_n, args.show_display) + def get_ethereum_address(self, args): + address_n = self.client.expand_path(args.n) + address = self.client.get_ethereum_address(address_n, args.show_display) + return "0x%s" % (address.encode('hex'),) + def get_entropy(self, args): return binascii.hexlify(self.client.get_entropy(args.size)) @@ -242,6 +247,7 @@ class Commands(object): list.help = 'List connected TREZOR USB devices' ping.help = 'Send ping message' get_address.help = 'Get bitcoin address in base58 encoding' + get_ethereum_address.help = 'Get Ethereum address in hex encoding' get_entropy.help = 'Get example entropy' get_features.help = 'Retrieve device features and settings' get_public_node.help = 'Get public node of given path' @@ -268,6 +274,11 @@ class Commands(object): (('-d', '--show-display'), {'action': 'store_true', 'default': False}), ) + get_ethereum_address.arguments = ( + (('-n', '-address'), {'type': str}), + (('-d', '--show-display'), {'action': 'store_true', 'default': False}), + ) + get_entropy.arguments = ( (('size',), {'type': int}), ) diff --git a/trezorlib/client.py b/trezorlib/client.py index 6c7a35fbac..1d2e5eaf86 100644 --- a/trezorlib/client.py +++ b/trezorlib/client.py @@ -417,6 +417,12 @@ class ProtocolMixin(object): else: return self.call(proto.GetAddress(address_n=n, coin_name=coin_name, show_display=show_display)) + @field('address') + @expect(proto.EthereumAddress) + def get_ethereum_address(self, n, show_display=False, multisig=None): + n = self._convert_prime(n) + return self.call(proto.EthereumGetAddress(address_n=n, show_display=show_display)) + @field('entropy') @expect(proto.Entropy) def get_entropy(self, size):