diff --git a/.flake8 b/.flake8 index 7056ee2..d214b6a 100644 --- a/.flake8 +++ b/.flake8 @@ -14,6 +14,8 @@ ignore = F841, # F401: module imported but unused F401, + # F403: used import * + F403, # E241: multiple spaces after ':' E241, # E402: module level import not at top of file diff --git a/build_pb.sh b/build_pb.sh deleted file mode 100755 index b484cbf..0000000 --- a/build_pb.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -CURDIR=$(pwd) - -cd $CURDIR/../trezor-common/protob - -for i in messages types ; do - protoc --python_out=$CURDIR/trezorlib/ -I/usr/include -I. $i.proto -done - -# hack to make output python 3 compatible -sed -i 's/^import types_pb2/from . import types_pb2/g' $CURDIR/trezorlib/messages_pb2.py - -# add version -PROTOC_VER=$(protoc --version) -PROTOB_REV=$(git rev-parse HEAD) -sed -i "3i# $PROTOC_VER\n# trezor-common $PROTOB_REV" $CURDIR/trezorlib/*_pb2.py diff --git a/requirements.txt b/requirements.txt index 409b5b1..80ea723 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ ecdsa>=0.9 -protobuf>=3.0.0 mnemonic>=0.17 hidapi>=0.7.99.post20 requests>=2.4.0 diff --git a/setup.py b/setup.py index 9f57ee0..ece6452 100755 --- a/setup.py +++ b/setup.py @@ -3,7 +3,6 @@ from setuptools import setup install_requires = [ 'ecdsa>=0.9', - 'protobuf>=3.0.0', 'mnemonic>=0.17', 'setuptools>=19.0', 'requests>=2.4.0', @@ -34,7 +33,8 @@ setup( 'trezorlib.ed25519cosi', 'trezorlib.ed25519raw', 'trezorlib.mapping', - 'trezorlib.messages_pb2', + 'trezorlib.messages', + 'trezorlib.protobuf', 'trezorlib.protocol_v1', 'trezorlib.protocol_v2', 'trezorlib.qt.pinmatrix', @@ -46,7 +46,6 @@ setup( 'trezorlib.transport', 'trezorlib.transport_udp', 'trezorlib.tx_api', - 'trezorlib.types_pb2', ], scripts=['trezorctl'], install_requires=install_requires, diff --git a/tests/device_tests/test_basic.py b/tests/device_tests/test_basic.py index c9ad096..7812a57 100644 --- a/tests/device_tests/test_basic.py +++ b/tests/device_tests/test_basic.py @@ -19,7 +19,7 @@ import unittest import common -from trezorlib import messages_pb2 as messages +from trezorlib import messages class TestBasic(common.TrezorTest): diff --git a/tests/device_tests/test_cosi.py b/tests/device_tests/test_cosi.py index eb17043..c6725f3 100644 --- a/tests/device_tests/test_cosi.py +++ b/tests/device_tests/test_cosi.py @@ -20,7 +20,6 @@ import unittest import common import hashlib -from trezorlib import messages_pb2 as proto from trezorlib import ed25519raw, ed25519cosi diff --git a/tests/device_tests/test_debuglink.py b/tests/device_tests/test_debuglink.py index 1d4187a..b6b947b 100644 --- a/tests/device_tests/test_debuglink.py +++ b/tests/device_tests/test_debuglink.py @@ -19,7 +19,7 @@ import unittest import common -from trezorlib import messages_pb2 as proto +from trezorlib import messages as proto class TestDebugLink(common.TrezorTest): @@ -33,11 +33,6 @@ class TestDebugLink(common.TrezorTest): mnemonic = self.client.debug.read_mnemonic() self.assertEqual(mnemonic, self.mnemonic12) - def test_node(self): - self.setup_mnemonic_nopin_nopassphrase() - node = self.client.debug.read_node() - self.assertIsNotNone(node) - def test_pin(self): self.setup_mnemonic_pin_passphrase() diff --git a/tests/device_tests/test_msg_applysettings.py b/tests/device_tests/test_msg_applysettings.py index 0d7fa44..62a9648 100644 --- a/tests/device_tests/test_msg_applysettings.py +++ b/tests/device_tests/test_msg_applysettings.py @@ -19,7 +19,7 @@ import unittest import common -from trezorlib import messages_pb2 as proto +from trezorlib import messages as proto class TestMsgApplysettings(common.TrezorTest): diff --git a/tests/device_tests/test_msg_changepin.py b/tests/device_tests/test_msg_changepin.py index c5166e4..bd17720 100644 --- a/tests/device_tests/test_msg_changepin.py +++ b/tests/device_tests/test_msg_changepin.py @@ -19,7 +19,7 @@ import unittest import common -from trezorlib import messages_pb2 as proto +from trezorlib import messages as proto class TestMsgChangepin(common.TrezorTest): diff --git a/tests/device_tests/test_msg_clearsession.py b/tests/device_tests/test_msg_clearsession.py index f99e65c..5fbb149 100644 --- a/tests/device_tests/test_msg_clearsession.py +++ b/tests/device_tests/test_msg_clearsession.py @@ -19,8 +19,7 @@ import unittest import common -from trezorlib import messages_pb2 as proto -from trezorlib import types_pb2 as proto_types +from trezorlib import messages as proto class TestMsgClearsession(common.TrezorTest): @@ -29,13 +28,13 @@ class TestMsgClearsession(common.TrezorTest): self.setup_mnemonic_pin_passphrase() with self.client: - self.client.set_expected_responses([proto.ButtonRequest(code=proto_types.ButtonRequest_ProtectCall), proto.PinMatrixRequest(), proto.PassphraseRequest(), proto.Success()]) + self.client.set_expected_responses([proto.ButtonRequest(code=proto.ButtonRequestType.ProtectCall), proto.PinMatrixRequest(), proto.PassphraseRequest(), proto.Success()]) res = self.client.ping('random data', button_protection=True, pin_protection=True, passphrase_protection=True) self.assertEqual(res, 'random data') with self.client: # pin and passphrase are cached - self.client.set_expected_responses([proto.ButtonRequest(code=proto_types.ButtonRequest_ProtectCall), proto.Success()]) + self.client.set_expected_responses([proto.ButtonRequest(code=proto.ButtonRequestType.ProtectCall), proto.Success()]) res = self.client.ping('random data', button_protection=True, pin_protection=True, passphrase_protection=True) self.assertEqual(res, 'random data') @@ -43,12 +42,12 @@ class TestMsgClearsession(common.TrezorTest): # session cache is cleared with self.client: - self.client.set_expected_responses([proto.ButtonRequest(code=proto_types.ButtonRequest_ProtectCall), proto.PinMatrixRequest(), proto.PassphraseRequest(), proto.Success()]) + self.client.set_expected_responses([proto.ButtonRequest(code=proto.ButtonRequestType.ProtectCall), proto.PinMatrixRequest(), proto.PassphraseRequest(), proto.Success()]) res = self.client.ping('random data', button_protection=True, pin_protection=True, passphrase_protection=True) self.assertEqual(res, 'random data') with self.client: # pin and passphrase are cached - self.client.set_expected_responses([proto.ButtonRequest(code=proto_types.ButtonRequest_ProtectCall), proto.Success()]) + self.client.set_expected_responses([proto.ButtonRequest(code=proto.ButtonRequestType.ProtectCall), proto.Success()]) res = self.client.ping('random data', button_protection=True, pin_protection=True, passphrase_protection=True) self.assertEqual(res, 'random data') diff --git a/tests/device_tests/test_msg_getaddress.py b/tests/device_tests/test_msg_getaddress.py index 7578e9a..334a421 100644 --- a/tests/device_tests/test_msg_getaddress.py +++ b/tests/device_tests/test_msg_getaddress.py @@ -19,7 +19,7 @@ import pytest import unittest import common -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto import trezorlib.ckd_public as bip32 @@ -59,8 +59,8 @@ class TestMsgGetaddress(common.TrezorTest): xpubs.append(n.xpub) def getmultisig(chain, nr, signatures=[b'', b'', b''], xpubs=xpubs): - return proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda xpub: proto_types.HDNodePathType(node=bip32.deserialize(xpub), address_n=[chain, nr]), xpubs), + return proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda xpub: proto.HDNodePathType(node=bip32.deserialize(xpub), address_n=[chain, nr]), xpubs)), signatures=signatures, m=2, ) diff --git a/tests/device_tests/test_msg_getaddress_segwit.py b/tests/device_tests/test_msg_getaddress_segwit.py index c253854..cd5de40 100644 --- a/tests/device_tests/test_msg_getaddress_segwit.py +++ b/tests/device_tests/test_msg_getaddress_segwit.py @@ -1,7 +1,7 @@ import unittest import common import trezorlib.ckd_public as bip32 -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto class TestMsgGetaddressSegwit(common.TrezorTest): @@ -9,32 +9,32 @@ class TestMsgGetaddressSegwit(common.TrezorTest): def test_show_segwit(self): self.setup_mnemonic_allallall() self.assertEqual(self.client.get_address("Testnet", self.client.expand_path("49'/1'/0'/1/0"), - True, None, script_type=proto_types.SPENDP2SHWITNESS), + True, None, script_type=proto.InputScriptType.SPENDP2SHWITNESS), '2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX') self.assertEqual(self.client.get_address("Testnet", self.client.expand_path("49'/1'/0'/0/0"), - False, None, script_type=proto_types.SPENDP2SHWITNESS), + False, None, script_type=proto.InputScriptType.SPENDP2SHWITNESS), '2N4Q5FhU2497BryFfUgbqkAJE87aKHUhXMp') self.assertEqual(self.client.get_address("Testnet", self.client.expand_path("44'/1'/0'/0/0"), - False, None, script_type=proto_types.SPENDP2SHWITNESS), + False, None, script_type=proto.InputScriptType.SPENDP2SHWITNESS), '2N6UeBoqYEEnybg4cReFYDammpsyDw8R2Mc') self.assertEqual(self.client.get_address("Testnet", self.client.expand_path("44'/1'/0'/0/0"), - False, None, script_type=proto_types.SPENDADDRESS), + False, None, script_type=proto.InputScriptType.SPENDADDRESS), 'mvbu1Gdy8SUjTenqerxUaZyYjmveZvt33q') def test_show_multisig_3(self): self.setup_mnemonic_allallall() nodes = map(lambda index: self.client.get_public_node(self.client.expand_path("999'/1'/%d'" % index)), range(1, 4)) - multisig1 = proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda n: proto_types.HDNodePathType(node=bip32.deserialize(n.xpub), address_n=[2, 0]), nodes), + multisig1 = proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda n: proto.HDNodePathType(node=bip32.deserialize(n.xpub), address_n=[2, 0]), nodes)), signatures=[b'', b'', b''], m=2, ) - # multisig2 = proto_types.MultisigRedeemScriptType( - # pubkeys=map(lambda n: proto_types.HDNodePathType(node=bip32.deserialize(n.xpub), address_n=[2, 1]), nodes), + # multisig2 = proto.MultisigRedeemScriptType( + # pubkeys=map(lambda n: proto.HDNodePathType(node=bip32.deserialize(n.xpub), address_n=[2, 1]), nodes), # signatures=[b'', b'', b''], # m=2, # ) for i in [1, 2, 3]: self.assertEqual(self.client.get_address("Testnet", self.client.expand_path("999'/1'/%d'/2/0" % i), - False, multisig1, script_type=proto_types.SPENDP2SHWITNESS), + False, multisig1, script_type=proto.InputScriptType.SPENDP2SHWITNESS), '2N2MxyAfifVhb3AMagisxaj3uij8bfXqf4Y') diff --git a/tests/device_tests/test_msg_getaddress_segwit_native.py b/tests/device_tests/test_msg_getaddress_segwit_native.py index 2bc6e75..74a5c8c 100644 --- a/tests/device_tests/test_msg_getaddress_segwit_native.py +++ b/tests/device_tests/test_msg_getaddress_segwit_native.py @@ -1,7 +1,7 @@ import unittest import common import trezorlib.ckd_public as bip32 -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto class TestMsgGetaddressSegwitNative(common.TrezorTest): @@ -9,35 +9,35 @@ class TestMsgGetaddressSegwitNative(common.TrezorTest): def test_show_segwit(self): self.setup_mnemonic_allallall() self.assertEqual(self.client.get_address("Testnet", self.client.expand_path("49'/1'/0'/0/0"), - True, None, script_type=proto_types.SPENDWITNESS), + True, None, script_type=proto.InputScriptType.SPENDWITNESS), 'tb1qqzv60m9ajw8drqulta4ld4gfx0rdh82un5s65s') self.assertEqual(self.client.get_address("Testnet", self.client.expand_path("49'/1'/0'/1/0"), - False, None, script_type=proto_types.SPENDWITNESS), + False, None, script_type=proto.InputScriptType.SPENDWITNESS), 'tb1q694ccp5qcc0udmfwgp692u2s2hjpq5h407urtu') self.assertEqual(self.client.get_address("Testnet", self.client.expand_path("44'/1'/0'/0/0"), - False, None, script_type=proto_types.SPENDWITNESS), + False, None, script_type=proto.InputScriptType.SPENDWITNESS), 'tb1q54un3q39sf7e7tlfq99d6ezys7qgc62a6rxllc') self.assertEqual(self.client.get_address("Testnet", self.client.expand_path("44'/1'/0'/0/0"), - False, None, script_type=proto_types.SPENDADDRESS), + False, None, script_type=proto.InputScriptType.SPENDADDRESS), 'mvbu1Gdy8SUjTenqerxUaZyYjmveZvt33q') def test_show_multisig_3(self): self.setup_mnemonic_allallall() nodes = [self.client.get_public_node(self.client.expand_path("999'/1'/%d'" % index)) for index in range(1, 4)] - multisig1 = proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda n: proto_types.HDNodePathType(node=bip32.deserialize(n.xpub), address_n=[2, 0]), nodes), + multisig1 = proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda n: proto.HDNodePathType(node=bip32.deserialize(n.xpub), address_n=[2, 0]), nodes)), signatures=[b'', b'', b''], m=2, ) - multisig2 = proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda n: proto_types.HDNodePathType(node=bip32.deserialize(n.xpub), address_n=[2, 1]), nodes), + multisig2 = proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda n: proto.HDNodePathType(node=bip32.deserialize(n.xpub), address_n=[2, 1]), nodes)), signatures=[b'', b'', b''], m=2, ) for i in [1, 2, 3]: self.assertEqual(self.client.get_address("Testnet", self.client.expand_path("999'/1'/%d'/2/1" % i), - False, multisig2, script_type=proto_types.SPENDWITNESS), + False, multisig2, script_type=proto.InputScriptType.SPENDWITNESS), 'tb1qch62pf820spe9mlq49ns5uexfnl6jzcezp7d328fw58lj0rhlhasge9hzy') self.assertEqual(self.client.get_address("Testnet", self.client.expand_path("999'/1'/%d'/2/0" % i), - False, multisig1, script_type=proto_types.SPENDWITNESS), + False, multisig1, script_type=proto.InputScriptType.SPENDWITNESS), 'tb1qr6xa5v60zyt3ry9nmfew2fk5g9y3gerkjeu6xxdz7qga5kknz2ssld9z2z') diff --git a/tests/device_tests/test_msg_getaddress_show.py b/tests/device_tests/test_msg_getaddress_show.py index fc6fc3e..73bbf8a 100644 --- a/tests/device_tests/test_msg_getaddress_show.py +++ b/tests/device_tests/test_msg_getaddress_show.py @@ -19,7 +19,7 @@ import unittest import common import trezorlib.ckd_public as bip32 -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto class TestMsgGetaddress(common.TrezorTest): @@ -34,11 +34,11 @@ class TestMsgGetaddress(common.TrezorTest): self.setup_mnemonic_nopin_nopassphrase() node = bip32.deserialize('xpub661MyMwAqRbcF1zGijBb2K6x9YiJPh58xpcCeLvTxMX6spkY3PcpJ4ABcCyWfskq5DDxM3e6Ez5ePCqG5bnPUXR4wL8TZWyoDaUdiWW7bKy') - multisig = proto_types.MultisigRedeemScriptType( + multisig = proto.MultisigRedeemScriptType( pubkeys=[ - proto_types.HDNodePathType(node=node, address_n=[1]), - proto_types.HDNodePathType(node=node, address_n=[2]), - proto_types.HDNodePathType(node=node, address_n=[3]) + proto.HDNodePathType(node=node, address_n=[1]), + proto.HDNodePathType(node=node, address_n=[2]), + proto.HDNodePathType(node=node, address_n=[3]) ], signatures=[b'', b'', b''], m=2, @@ -54,9 +54,9 @@ class TestMsgGetaddress(common.TrezorTest): pubs = [] for x in range(15): - pubs.append(proto_types.HDNodePathType(node=node, address_n=[x])) + pubs.append(proto.HDNodePathType(node=node, address_n=[x])) - multisig = proto_types.MultisigRedeemScriptType( + multisig = proto.MultisigRedeemScriptType( pubkeys=pubs, signatures=[b''] * 15, m=15, diff --git a/tests/device_tests/test_msg_getentropy.py b/tests/device_tests/test_msg_getentropy.py index 00ce7d6..54aac68 100644 --- a/tests/device_tests/test_msg_getentropy.py +++ b/tests/device_tests/test_msg_getentropy.py @@ -22,8 +22,7 @@ import unittest import math import common -import trezorlib.messages_pb2 as proto -import trezorlib.types_pb2 as proto_types +import trezorlib.messages as proto def entropy(data): @@ -45,7 +44,7 @@ class TestMsgGetentropy(common.TrezorTest): def test_entropy(self): for l in [0, 1, 2, 3, 4, 5, 8, 9, 16, 17, 32, 33, 64, 65, 128, 129, 256, 257, 512, 513, 1024]: with self.client: - self.client.set_expected_responses([proto.ButtonRequest(code=proto_types.ButtonRequest_ProtectCall), proto.Entropy()]) + self.client.set_expected_responses([proto.ButtonRequest(code=proto.ButtonRequestType.ProtectCall), proto.Entropy()]) ent = self.client.get_entropy(l) self.assertTrue(len(ent) == l) print('entropy = ', entropy(ent)) diff --git a/tests/device_tests/test_msg_loaddevice.py b/tests/device_tests/test_msg_loaddevice.py index 431a988..e7944b6 100644 --- a/tests/device_tests/test_msg_loaddevice.py +++ b/tests/device_tests/test_msg_loaddevice.py @@ -21,7 +21,6 @@ import common class TestDeviceLoad(common.TrezorTest): - def test_load_device_1(self): self.setup_mnemonic_nopin_nopassphrase() @@ -29,7 +28,7 @@ class TestDeviceLoad(common.TrezorTest): self.assertEqual(mnemonic, self.mnemonic12) pin = self.client.debug.read_pin()[0] - self.assertEqual(pin, '') + self.assertEqual(pin, None) passphrase_protection = self.client.debug.read_passphrase_protection() self.assertEqual(passphrase_protection, False) diff --git a/tests/device_tests/test_msg_nem_signtx.py b/tests/device_tests/test_msg_nem_signtx.py index 7793752..af06afa 100644 --- a/tests/device_tests/test_msg_nem_signtx.py +++ b/tests/device_tests/test_msg_nem_signtx.py @@ -19,8 +19,7 @@ import unittest import common import binascii -from trezorlib import messages_pb2 as proto -from trezorlib import types_pb2 as proto_types +from trezorlib import messages as proto # tx hash: 209368053ac61969b6838ceb7e31badeb622ed6aa42d6c58365c42ad1a11e19d SIGNATURE_TESTNET_SIMPLE = binascii.unhexlify( @@ -41,11 +40,11 @@ class TestMsgNEMSigntx(common.TrezorTest): with self.client: self.client.set_expected_responses([ # Confirm transfer and network fee - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), # Unencrypted message - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), # Confirm recipient - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), proto.NEMSignedTx(signature=SIGNATURE_TESTNET_SIMPLE), ]) @@ -69,9 +68,9 @@ class TestMsgNEMSigntx(common.TrezorTest): with self.client: self.client.set_expected_responses([ # Confirm transfer and network fee - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), # Confirm recipient - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), proto.NEMSignedTx(signature=SIGNATURE_TESTNET_XEM_AS_MOSAIC), ]) diff --git a/tests/device_tests/test_msg_ping.py b/tests/device_tests/test_msg_ping.py index 08f7fed..1898f8e 100644 --- a/tests/device_tests/test_msg_ping.py +++ b/tests/device_tests/test_msg_ping.py @@ -19,8 +19,7 @@ import unittest import common -from trezorlib import messages_pb2 as proto -from trezorlib import types_pb2 as proto_types +from trezorlib import messages as proto class TestPing(common.TrezorTest): @@ -34,7 +33,7 @@ class TestPing(common.TrezorTest): self.assertEqual(res, 'random data') with self.client: - self.client.set_expected_responses([proto.ButtonRequest(code=proto_types.ButtonRequest_ProtectCall), proto.Success()]) + self.client.set_expected_responses([proto.ButtonRequest(code=proto.ButtonRequestType.ProtectCall), proto.Success()]) res = self.client.ping('random data', button_protection=True) self.assertEqual(res, 'random data') @@ -52,12 +51,12 @@ class TestPing(common.TrezorTest): self.setup_mnemonic_pin_passphrase() with self.client: - self.client.set_expected_responses([proto.ButtonRequest(code=proto_types.ButtonRequest_ProtectCall), proto.PinMatrixRequest(), proto.PassphraseRequest(), proto.Success()]) + self.client.set_expected_responses([proto.ButtonRequest(code=proto.ButtonRequestType.ProtectCall), proto.PinMatrixRequest(), proto.PassphraseRequest(), proto.Success()]) res = self.client.ping('random data', button_protection=True, pin_protection=True, passphrase_protection=True) self.assertEqual(res, 'random data') with self.client: # pin and passphrase are cached - self.client.set_expected_responses([proto.ButtonRequest(code=proto_types.ButtonRequest_ProtectCall), proto.Success()]) + self.client.set_expected_responses([proto.ButtonRequest(code=proto.ButtonRequestType.ProtectCall), proto.Success()]) res = self.client.ping('random data', button_protection=True, pin_protection=True, passphrase_protection=True) self.assertEqual(res, 'random data') diff --git a/tests/device_tests/test_msg_recoverydevice.py b/tests/device_tests/test_msg_recoverydevice.py index 1b4cc1f..df2ca7a 100644 --- a/tests/device_tests/test_msg_recoverydevice.py +++ b/tests/device_tests/test_msg_recoverydevice.py @@ -21,7 +21,7 @@ from __future__ import print_function import unittest import common -from trezorlib import messages_pb2 as proto +from trezorlib import messages as proto class TestDeviceRecovery(common.TrezorTest): diff --git a/tests/device_tests/test_msg_recoverydevice_dryrun.py b/tests/device_tests/test_msg_recoverydevice_dryrun.py index 506af3a..f97d55c 100644 --- a/tests/device_tests/test_msg_recoverydevice_dryrun.py +++ b/tests/device_tests/test_msg_recoverydevice_dryrun.py @@ -21,7 +21,7 @@ from __future__ import print_function import unittest import common -from trezorlib import messages_pb2 as proto +from trezorlib import messages as proto class TestDeviceRecoveryDryRun(common.TrezorTest): diff --git a/tests/device_tests/test_msg_resetdevice.py b/tests/device_tests/test_msg_resetdevice.py index be34313..8626cdf 100644 --- a/tests/device_tests/test_msg_resetdevice.py +++ b/tests/device_tests/test_msg_resetdevice.py @@ -19,7 +19,7 @@ import unittest import common -from trezorlib import messages_pb2 as proto +from trezorlib import messages as proto from mnemonic import Mnemonic diff --git a/tests/device_tests/test_msg_resetdevice_skipbackup.py b/tests/device_tests/test_msg_resetdevice_skipbackup.py index 0c525aa..7257e8a 100644 --- a/tests/device_tests/test_msg_resetdevice_skipbackup.py +++ b/tests/device_tests/test_msg_resetdevice_skipbackup.py @@ -19,7 +19,7 @@ import unittest import common -from trezorlib import messages_pb2 as proto +from trezorlib import messages as proto from mnemonic import Mnemonic diff --git a/tests/device_tests/test_msg_signidentity.py b/tests/device_tests/test_msg_signidentity.py index 0d32926..3b4104b 100644 --- a/tests/device_tests/test_msg_signidentity.py +++ b/tests/device_tests/test_msg_signidentity.py @@ -24,7 +24,7 @@ import hashlib import struct import common -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto def check_path(identity): @@ -59,7 +59,7 @@ class TestMsgSignidentity(common.TrezorTest): # URI : https://satoshi@bitcoin.org/login # hash : d0e2389d4c8394a9f3e32de01104bf6e8db2d9e2bb0905d60fffa5a18fd696db # path : m/2147483661/2637750992/2845082444/3761103859/4005495825 - identity = proto_types.IdentityType(proto='https', user='satoshi', host='bitcoin.org', port='', path='/login', index=0) + identity = proto.IdentityType(proto='https', user='satoshi', host='bitcoin.org', port='', path='/login', index=0) sig = self.client.sign_identity(identity, hidden, visual) self.assertEqual(sig.address, '17F17smBTX9VTZA9Mj8LM5QGYNZnmziCjL') self.assertEqual(binascii.hexlify(sig.public_key), b'023a472219ad3327b07c18273717bb3a40b39b743756bf287fbd5fa9d263237f45') @@ -68,7 +68,7 @@ class TestMsgSignidentity(common.TrezorTest): # URI : ftp://satoshi@bitcoin.org:2323/pub # hash : 79a6b53831c6ff224fb283587adc4ebae8fb0d734734a46c876838f52dff53f3 # path : m/2147483661/3098912377/2734671409/3632509519/3125730426 - identity = proto_types.IdentityType(proto='ftp', user='satoshi', host='bitcoin.org', port='2323', path='/pub', index=3) + identity = proto.IdentityType(proto='ftp', user='satoshi', host='bitcoin.org', port='2323', path='/pub', index=3) sig = self.client.sign_identity(identity, hidden, visual) self.assertEqual(sig.address, '1KAr6r5qF2kADL8bAaRQBjGKYEGxn9WrbS') self.assertEqual(binascii.hexlify(sig.public_key), b'0266cf12d2ba381c5fd797da0d64f59c07a6f1b034ad276cca6bf2729e92b20d9c') @@ -77,17 +77,17 @@ class TestMsgSignidentity(common.TrezorTest): # URI : ssh://satoshi@bitcoin.org # hash : 5fa612f558a1a3b1fb7f010b2ea0a25cb02520a0ffa202ce74a92fc6145da5f3 # path : m/2147483661/4111640159/2980290904/2332131323/3701645358 - identity = proto_types.IdentityType(proto='ssh', user='satoshi', host='bitcoin.org', port='', path='', index=47) + identity = proto.IdentityType(proto='ssh', user='satoshi', host='bitcoin.org', port='', path='', index=47) sig = self.client.sign_identity(identity, hidden, visual, ecdsa_curve_name='nist256p1') - self.assertEqual(sig.address, '') + self.assertEqual(sig.address, None) self.assertEqual(binascii.hexlify(sig.public_key), b'0373f21a3da3d0e96fc2189f81dd826658c3d76b2d55bd1da349bc6c3573b13ae4') self.assertEqual(binascii.hexlify(sig.signature), b'005122cebabb852cdd32103b602662afa88e54c0c0c1b38d7099c64dcd49efe908288114e66ed2d8c82f23a70b769a4db723173ec53840c08aafb840d3f09a18d3') # URI : ssh://satoshi@bitcoin.org # hash : 5fa612f558a1a3b1fb7f010b2ea0a25cb02520a0ffa202ce74a92fc6145da5f3 # path : m/2147483661/4111640159/2980290904/2332131323/3701645358 - identity = proto_types.IdentityType(proto='ssh', user='satoshi', host='bitcoin.org', port='', path='', index=47) + identity = proto.IdentityType(proto='ssh', user='satoshi', host='bitcoin.org', port='', path='', index=47) sig = self.client.sign_identity(identity, hidden, visual, ecdsa_curve_name='ed25519') - self.assertEqual(sig.address, '') + self.assertEqual(sig.address, None) self.assertEqual(binascii.hexlify(sig.public_key), b'000fac2a491e0f5b871dc48288a4cae551bac5cb0ed19df0764d6e721ec5fade18') self.assertEqual(binascii.hexlify(sig.signature), b'00f05e5085e666429de397c70a081932654369619c0bd2a6579ea6c1ef2af112ef79998d6c862a16b932d44b1ac1b83c8cbcd0fbda228274fde9e0d0ca6e9cb709') diff --git a/tests/device_tests/test_msg_signmessage_segwit.py b/tests/device_tests/test_msg_signmessage_segwit.py index 085650e..0fe383e 100644 --- a/tests/device_tests/test_msg_signmessage_segwit.py +++ b/tests/device_tests/test_msg_signmessage_segwit.py @@ -20,26 +20,26 @@ import unittest import common import binascii -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto class TestMsgSignmessage(common.TrezorTest): def test_sign(self): self.setup_mnemonic_nopin_nopassphrase() - sig = self.client.sign_message('Bitcoin', [0], "This is an example of a signed message.", script_type=proto_types.SPENDP2SHWITNESS) + sig = self.client.sign_message('Bitcoin', [0], "This is an example of a signed message.", script_type=proto.InputScriptType.SPENDP2SHWITNESS) self.assertEqual(sig.address, '3CwYaeWxhpXXiHue3ciQez1DLaTEAXcKa1') self.assertEqual(binascii.hexlify(sig.signature), b'249e23edf0e4e47ff1dec27f32cd78c50e74ef018ee8a6adf35ae17c7a9b0dd96f48b493fd7dbab03efb6f439c6383c9523b3bbc5f1a7d158a6af90ab154e9be80') def test_sign_testnet(self): self.setup_mnemonic_nopin_nopassphrase() - sig = self.client.sign_message('Testnet', [0], "This is an example of a signed message.", script_type=proto_types.SPENDP2SHWITNESS) + sig = self.client.sign_message('Testnet', [0], "This is an example of a signed message.", script_type=proto.InputScriptType.SPENDP2SHWITNESS) self.assertEqual(sig.address, '2N4VkePSzKH2sv5YBikLHGvzUYvfPxV6zS9') self.assertEqual(binascii.hexlify(sig.signature), b'249e23edf0e4e47ff1dec27f32cd78c50e74ef018ee8a6adf35ae17c7a9b0dd96f48b493fd7dbab03efb6f439c6383c9523b3bbc5f1a7d158a6af90ab154e9be80') def test_sign_long(self): self.setup_mnemonic_nopin_nopassphrase() - sig = self.client.sign_message('Bitcoin', [0], "VeryLongMessage!" * 64, script_type=proto_types.SPENDP2SHWITNESS) + sig = self.client.sign_message('Bitcoin', [0], "VeryLongMessage!" * 64, script_type=proto.InputScriptType.SPENDP2SHWITNESS) self.assertEqual(sig.address, '3CwYaeWxhpXXiHue3ciQez1DLaTEAXcKa1') self.assertEqual(binascii.hexlify(sig.signature), b'245ff795c29aef7538f8b3bdb2e8add0d0722ad630a140b6aefd504a5a895cbd867cbb00981afc50edd0398211e8d7c304bb8efa461181bc0afa67ea4a720a89ed') @@ -49,10 +49,10 @@ class TestMsgSignmessage(common.TrezorTest): words_nfkd = u'Pr\u030ci\u0301s\u030cerne\u030c z\u030clut\u030couc\u030cky\u0301 ku\u030an\u030c u\u0301pe\u030cl d\u030ca\u0301belske\u0301 o\u0301dy za\u0301ker\u030cny\u0301 uc\u030cen\u030c be\u030cz\u030ci\u0301 pode\u0301l zo\u0301ny u\u0301lu\u030a' words_nfc = u'P\u0159\xed\u0161ern\u011b \u017elu\u0165ou\u010dk\xfd k\u016f\u0148 \xfap\u011bl \u010f\xe1belsk\xe9 \xf3dy z\xe1ke\u0159n\xfd u\u010de\u0148 b\u011b\u017e\xed pod\xe9l z\xf3ny \xfal\u016f' - sig_nfkd = self.client.sign_message('Bitcoin', [0], words_nfkd, script_type=proto_types.SPENDP2SHWITNESS) + sig_nfkd = self.client.sign_message('Bitcoin', [0], words_nfkd, script_type=proto.InputScriptType.SPENDP2SHWITNESS) self.assertEqual(sig_nfkd.address, '3CwYaeWxhpXXiHue3ciQez1DLaTEAXcKa1') self.assertEqual(binascii.hexlify(sig_nfkd.signature), b'24d0ec02ed8da8df23e7fe9e680e7867cc290312fe1c970749d8306ddad1a1eda41c6a771b13d495dd225b13b0a9d0f915a984ee3d0703f92287bf8009fbb9f7d6') - sig_nfc = self.client.sign_message('Bitcoin', [0], words_nfc, script_type=proto_types.SPENDP2SHWITNESS) + sig_nfc = self.client.sign_message('Bitcoin', [0], words_nfc, script_type=proto.InputScriptType.SPENDP2SHWITNESS) self.assertEqual(sig_nfc.address, '3CwYaeWxhpXXiHue3ciQez1DLaTEAXcKa1') self.assertEqual(binascii.hexlify(sig_nfc.signature), b'24d0ec02ed8da8df23e7fe9e680e7867cc290312fe1c970749d8306ddad1a1eda41c6a771b13d495dd225b13b0a9d0f915a984ee3d0703f92287bf8009fbb9f7d6') diff --git a/tests/device_tests/test_msg_signmessage_segwit_native.py b/tests/device_tests/test_msg_signmessage_segwit_native.py index 9a082ba..2b5533f 100644 --- a/tests/device_tests/test_msg_signmessage_segwit_native.py +++ b/tests/device_tests/test_msg_signmessage_segwit_native.py @@ -20,26 +20,26 @@ import unittest import common import binascii -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto class TestMsgSignmessage(common.TrezorTest): def test_sign(self): self.setup_mnemonic_nopin_nopassphrase() - sig = self.client.sign_message('Bitcoin', [0], "This is an example of a signed message.", script_type=proto_types.SPENDWITNESS) + sig = self.client.sign_message('Bitcoin', [0], "This is an example of a signed message.", script_type=proto.InputScriptType.SPENDWITNESS) self.assertEqual(sig.address, 'bc1qyjjkmdpu7metqt5r36jf872a34syws33s82q2j') self.assertEqual(binascii.hexlify(sig.signature), b'289e23edf0e4e47ff1dec27f32cd78c50e74ef018ee8a6adf35ae17c7a9b0dd96f48b493fd7dbab03efb6f439c6383c9523b3bbc5f1a7d158a6af90ab154e9be80') def test_sign_testnet(self): self.setup_mnemonic_nopin_nopassphrase() - sig = self.client.sign_message('Testnet', [0], "This is an example of a signed message.", script_type=proto_types.SPENDWITNESS) + sig = self.client.sign_message('Testnet', [0], "This is an example of a signed message.", script_type=proto.InputScriptType.SPENDWITNESS) self.assertEqual(sig.address, 'tb1qyjjkmdpu7metqt5r36jf872a34syws336p3n3p') self.assertEqual(binascii.hexlify(sig.signature), b'289e23edf0e4e47ff1dec27f32cd78c50e74ef018ee8a6adf35ae17c7a9b0dd96f48b493fd7dbab03efb6f439c6383c9523b3bbc5f1a7d158a6af90ab154e9be80') def test_sign_long(self): self.setup_mnemonic_nopin_nopassphrase() - sig = self.client.sign_message('Bitcoin', [0], "VeryLongMessage!" * 64, script_type=proto_types.SPENDWITNESS) + sig = self.client.sign_message('Bitcoin', [0], "VeryLongMessage!" * 64, script_type=proto.InputScriptType.SPENDWITNESS) self.assertEqual(sig.address, 'bc1qyjjkmdpu7metqt5r36jf872a34syws33s82q2j') self.assertEqual(binascii.hexlify(sig.signature), b'285ff795c29aef7538f8b3bdb2e8add0d0722ad630a140b6aefd504a5a895cbd867cbb00981afc50edd0398211e8d7c304bb8efa461181bc0afa67ea4a720a89ed') @@ -49,10 +49,10 @@ class TestMsgSignmessage(common.TrezorTest): words_nfkd = u'Pr\u030ci\u0301s\u030cerne\u030c z\u030clut\u030couc\u030cky\u0301 ku\u030an\u030c u\u0301pe\u030cl d\u030ca\u0301belske\u0301 o\u0301dy za\u0301ker\u030cny\u0301 uc\u030cen\u030c be\u030cz\u030ci\u0301 pode\u0301l zo\u0301ny u\u0301lu\u030a' words_nfc = u'P\u0159\xed\u0161ern\u011b \u017elu\u0165ou\u010dk\xfd k\u016f\u0148 \xfap\u011bl \u010f\xe1belsk\xe9 \xf3dy z\xe1ke\u0159n\xfd u\u010de\u0148 b\u011b\u017e\xed pod\xe9l z\xf3ny \xfal\u016f' - sig_nfkd = self.client.sign_message('Bitcoin', [0], words_nfkd, script_type=proto_types.SPENDWITNESS) + sig_nfkd = self.client.sign_message('Bitcoin', [0], words_nfkd, script_type=proto.InputScriptType.SPENDWITNESS) self.assertEqual(sig_nfkd.address, 'bc1qyjjkmdpu7metqt5r36jf872a34syws33s82q2j') self.assertEqual(binascii.hexlify(sig_nfkd.signature), b'28d0ec02ed8da8df23e7fe9e680e7867cc290312fe1c970749d8306ddad1a1eda41c6a771b13d495dd225b13b0a9d0f915a984ee3d0703f92287bf8009fbb9f7d6') - sig_nfc = self.client.sign_message('Bitcoin', [0], words_nfc, script_type=proto_types.SPENDWITNESS) + sig_nfc = self.client.sign_message('Bitcoin', [0], words_nfc, script_type=proto.InputScriptType.SPENDWITNESS) self.assertEqual(sig_nfc.address, 'bc1qyjjkmdpu7metqt5r36jf872a34syws33s82q2j') self.assertEqual(binascii.hexlify(sig_nfc.signature), b'28d0ec02ed8da8df23e7fe9e680e7867cc290312fe1c970749d8306ddad1a1eda41c6a771b13d495dd225b13b0a9d0f915a984ee3d0703f92287bf8009fbb9f7d6') diff --git a/tests/device_tests/test_msg_signtx.py b/tests/device_tests/test_msg_signtx.py index d048313..edbcb36 100644 --- a/tests/device_tests/test_msg_signtx.py +++ b/tests/device_tests/test_msg_signtx.py @@ -20,8 +20,7 @@ import unittest import common import binascii -import trezorlib.messages_pb2 as proto -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto from trezorlib.client import CallException from trezorlib.tx_api import TxApiTestnet @@ -42,40 +41,39 @@ TXHASH_50f6f1 = binascii.unhexlify('50f6f1209ca92d7359564be803cb2c932cde7d370f7c class TestMsgSigntx(common.TrezorTest): - def test_one_one_fee(self): self.setup_mnemonic_nopin_nopassphrase() # tx: d5f65ee80147b4bcc70b75e4bbf2d7382021b871bd8867ef8fa525ef50864882 # input 0: 0.0039 BTC - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e # amount=390000, prev_hash=TXHASH_d5f65e, prev_index=0, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='1MJ2tj2ThBE62zXbBYA5ZaN3fdve5CPAz1', amount=390000 - 10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Bitcoin', [inp1, ], [out1, ]) @@ -89,43 +87,43 @@ class TestMsgSigntx(common.TrezorTest): # tx: e5040e1bc1ae7667ffb9e5248e90b2fb93cd9150234151ce90e14ab2f5933bcd # input 0: 0.31 BTC - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("44'/1'/0'/0/0"), # amount=31000000, prev_hash=TXHASH_e5040e, prev_index=0, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='msj42CCGruhRsFrGATiUuh25dtxYtnpbTx', amount=30090000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=self.client.expand_path("44'/1'/0'/1/0"), amount=900000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_tx_api(TxApiTestnet) self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_e5040e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_e5040e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_e5040e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_e5040e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_e5040e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_e5040e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_e5040e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_e5040e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Testnet', [inp1, ], [out1, out2]) @@ -136,46 +134,46 @@ class TestMsgSigntx(common.TrezorTest): # tx: 6f90f3c7cbec2258b0971056ef3fe34128dbde30daa9c0639a898f9977299d54 # input 1: 10.00000000 BTC - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[0], # mirio8q3gtv7fhdnmb3TpZ4EuafdzSs7zL # amount=1000000000, prev_hash=TXHASH_6f90f3, prev_index=1, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='mfiGQVPcRcaEvQPYDErR34DcCovtxYvUUV', amount=1000000000 - 500000000 - 100000000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=[2], amount=500000000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_tx_api(TxApiTestnet) self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_6f90f3)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_6f90f3)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_6f90f3)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_6f90f3)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_6f90f3)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_FeeOverThreshold), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_6f90f3)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_6f90f3)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_6f90f3)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_6f90f3)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_6f90f3)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.FeeOverThreshold), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Testnet', [inp1, ], [out1, out2]) @@ -186,42 +184,42 @@ class TestMsgSigntx(common.TrezorTest): # tx: c275c333fd1b36bef4af316226c66a8b3693fbfcc081a5e16a2ae5fcb09e92bf - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("m/44'/0'/0'/0/5"), # 1GA9u9TfCG7SWmKCveBumdA1TZpfom6ZdJ # amount=50000, prev_hash=TXHASH_50f6f1, prev_index=1, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address_n=self.client.expand_path("m/44'/0'/0'/1/3"), # 1EcL6AyfQTyWKGvXwNSfsWoYnD3whzVFdu amount=30000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='1Up15Msx4sbvUCGm8Xgo2Zp5FQim3wE59', amount=10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_50f6f1)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_50f6f1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_50f6f1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_50f6f1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_50f6f1)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_50f6f1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_50f6f1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_50f6f1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Bitcoin', [inp1, ], [out1, out2]) @@ -233,53 +231,53 @@ class TestMsgSigntx(common.TrezorTest): # tx: d5f65ee80147b4bcc70b75e4bbf2d7382021b871bd8867ef8fa525ef50864882 # input 0: 0.0039 BTC - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e # amount=390000, prev_hash=TXHASH_d5f65e, prev_index=0, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='1MJ2tj2ThBE62zXbBYA5ZaN3fdve5CPAz1', amount=390000 - 80000 - 12000 - 10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='13uaUYn6XAooo88QvAqAVsiVvr2mAXutqP', amount=12000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out3 = proto_types.TxOutputType( + out3 = proto.TxOutputType( address_n=[1], amount=80000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=2)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=2)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=2)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=2)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=2)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=2)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Bitcoin', [inp1, ], [out1, out2, out3]) @@ -293,61 +291,61 @@ class TestMsgSigntx(common.TrezorTest): # tx: 58497a7757224d1ff1941488d23087071103e5bf855f4c1c44e5c8d9d82ca46e # input 1: 0.0011 BTC - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[1], # 1CK7SJdcb8z9HuvVft3D91HLpLC6KSsGb # amount=100000, prev_hash=TXHASH_c6be22, prev_index=1, ) - inp2 = proto_types.TxInputType( + inp2 = proto.TxInputType( address_n=[2], # 15AeAhtNJNKyowK8qPHwgpXkhsokzLtUpG # amount=110000, prev_hash=TXHASH_58497a, prev_index=1, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='15Jvu3nZNP7u2ipw2533Q9VVgEu2Lu9F2B', amount=210000 - 100000 - 10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=[3], # 1CmzyJp9w3NafXMSEFH4SLYUPAVCSUrrJ5 amount=100000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_c6be22)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6be22)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6be22)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_c6be22)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_c6be22)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6be22)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6be22)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_c6be22)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_58497a)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_58497a)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_58497a)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_58497a)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_58497a)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_58497a)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_58497a)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_58497a)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Bitcoin', [inp1, inp2], [out1, out2]) @@ -361,12 +359,12 @@ class TestMsgSigntx(common.TrezorTest): # tx 4a7b7e0403ae5607e473949cfa03f09f2cd8b0f404bf99ce10b7303d86280bf7 : 100 UTXO for spending for unittests inputs = [] for i in range(100): - inputs.append( proto_types.TxInputType(address_n=[4], # 1NwN6UduuVkJi6sw3gSiKZaCY5rHgVXC2h + inputs.append( proto.TxInputType(address_n=[4], # 1NwN6UduuVkJi6sw3gSiKZaCY5rHgVXC2h prev_hash=TXHASH_4a7b7e, prev_index=i) ) - out = proto_types.TxOutputType(address='19dvDdyxxptP9dGvozYe8BP6tgFV9L4jg5', + out = proto.TxOutputType(address='19dvDdyxxptP9dGvozYe8BP6tgFV9L4jg5', amount=100 * 26000 - 15 * 10000, - script_type=proto_types.PAYTOADDRESS) + script_type=proto.OutputScriptType.PAYTOADDRESS) with self.client: (signatures, serialized_tx) = self.client.sign_tx('Bitcoin', inputs, [out]) # Accepted by network: tx 23d9d8eecf3abf6c0f0f3f8b0976a04792d7f1c9a4ea9b0a8931734949e27c92 @@ -383,14 +381,14 @@ class TestMsgSigntx(common.TrezorTest): # tx: 39a29e954977662ab3879c66fb251ef753e0912223a83d1dcb009111d28265e5 # index 1: 0.0254 BTC - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[3], # 1CmzyJp9w3NafXMSEFH4SLYUPAVCSUrrJ5 # amount=100000, prev_hash=TXHASH_c63e24, prev_index=1, ) - inp2 = proto_types.TxInputType( + inp2 = proto.TxInputType( address_n=[3], # 1CmzyJp9w3NafXMSEFH4SLYUPAVCSUrrJ5 # amount=2540000, prev_hash=TXHASH_39a29e, @@ -400,46 +398,46 @@ class TestMsgSigntx(common.TrezorTest): outputs = [] cnt = 255 for _ in range(cnt): - out = proto_types.TxOutputType( + out = proto.TxOutputType( address='1NwN6UduuVkJi6sw3gSiKZaCY5rHgVXC2h', amount=(100000 + 2540000 - 39000) // cnt, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) outputs.append(out) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_c63e24)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c63e24)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_c63e24)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c63e24)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_c63e24)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_39a29e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_39a29e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_39a29e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_39a29e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_c63e24)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c63e24)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_c63e24)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c63e24)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_c63e24)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_39a29e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_39a29e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_39a29e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_39a29e)), ] + [ item for items in zip( - [proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=I)) for I in range(cnt)], - [proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput)] * cnt + [proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=I)) for I in range(cnt)], + [proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput)] * cnt ) for item in items ] + [ - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), ] + [ - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=I)) for I in range(cnt) + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=I)) for I in range(cnt) ] + [ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), ] + [ - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=I)) for I in range(cnt) + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=I)) for I in range(cnt) ] + [ - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=I)) for I in range(cnt) + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=I)) for I in range(cnt) ] + [ - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Bitcoin', [inp1, inp2], outputs) @@ -452,34 +450,34 @@ class TestMsgSigntx(common.TrezorTest): # tx: 1570416eb4302cf52979afd5e6909e37d8fdd874301f7cc87e547e509cb1caa6 # input 0: 1.0 BTC - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[0], # 1HWDaLTpTCTtRWyWqZkzWx1wex5NKyncLW # amount=100000000, prev_hash=TXHASH_157041, prev_index=0, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='1MJ2tj2ThBE62zXbBYA5ZaN3fdve5CPAz1', amount=100000000 - 510000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_157041)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_157041)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_157041)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_157041)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_FeeOverThreshold), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_157041)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_157041)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_157041)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_157041)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.FeeOverThreshold), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Bitcoin', [inp1, ], [out1, ]) @@ -491,68 +489,68 @@ class TestMsgSigntx(common.TrezorTest): # tx: d5f65ee80147b4bcc70b75e4bbf2d7382021b871bd8867ef8fa525ef50864882 # input 0: 0.0039 BTC - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e # amount=390000, prev_hash=TXHASH_d5f65e, prev_index=0, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='1MJ2tj2ThBE62zXbBYA5ZaN3fdve5CPAz1', amount=400000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.Failure(code=proto_types.Failure_NotEnoughFunds) + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.Failure(code=proto.FailureType.NotEnoughFunds) ]) try: self.client.sign_tx('Bitcoin', [inp1, ], [out1, ]) except CallException as e: - self.assertEqual(e.args[0], proto_types.Failure_NotEnoughFunds) + self.assertEqual(e.args[0], proto.FailureType.NotEnoughFunds) else: - self.assert_(False, "types.Failure_NotEnoughFunds expected") + self.assert_(False, "types.FailureType.NotEnoughFunds expected") def test_p2sh(self): self.setup_mnemonic_nopin_nopassphrase() - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e # amount=400000, prev_hash=TXHASH_54aa56, prev_index=1, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='3DKGE1pvPpBAgZj94MbCinwmksewUNNYVR', # p2sh amount=400000 - 10000, - script_type=proto_types.PAYTOSCRIPTHASH, + script_type=proto.OutputScriptType.PAYTOSCRIPTHASH, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_54aa56)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_54aa56)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_54aa56)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_54aa56)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_54aa56)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_54aa56)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_54aa56)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_54aa56)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Bitcoin', [inp1, ], [out1, ]) @@ -570,30 +568,30 @@ class TestMsgSigntx(common.TrezorTest): self.setup_mnemonic_nopin_nopassphrase() - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[1], # 1CK7SJdcb8z9HuvVft3D91HLpLC6KSsGb # amount=100000, prev_hash=TXHASH_c6be22, prev_index=1, ) - inp2 = proto_types.TxInputType( + inp2 = proto.TxInputType( address_n=[2], # 15AeAhtNJNKyowK8qPHwgpXkhsokzLtUpG # amount=110000, prev_hash=TXHASH_58497a, prev_index=1, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='15Jvu3nZNP7u2ipw2533Q9VVgEu2Lu9F2B', amount=210000 - 100000 - 10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=[3], # 1CmzyJp9w3NafXMSEFH4SLYUPAVCSUrrJ5 amount=100000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) global run_attack @@ -602,7 +600,7 @@ class TestMsgSigntx(common.TrezorTest): def attack_processor(req, msg): global run_attack - if req.details.tx_hash != b'': + if req.details.tx_hash is not None: return msg if req.details.request_index != 1: @@ -631,24 +629,24 @@ class TestMsgSigntx(common.TrezorTest): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("44'/1'/4'/0/0"), # moUJnmge8SRXuediK7bW6t4YfrPqbE6hD7 prev_hash=TXHASH_d2dcda, prev_index=1, - script_type=proto_types.SPENDADDRESS, + script_type=proto.InputScriptType.SPENDADDRESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='mwue7mokpBRAsJtHqEMcRPanYBmsSmYKvY', amount=100000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=self.client.expand_path("44'/1'/12345'/1/0"), amount=123400000 - 5000 - 100000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) global run_attack @@ -658,10 +656,10 @@ class TestMsgSigntx(common.TrezorTest): import sys global run_attack - if req.details.tx_hash != b'': + if req.details.tx_hash is not None: return msg - if req.request_type != proto_types.TXINPUT: + if req.request_type != proto.RequestType.TXINPUT: return msg if req.details.request_index != 0: @@ -682,17 +680,17 @@ class TestMsgSigntx(common.TrezorTest): # Now run the attack, must trigger the exception with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_d2dcda)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d2dcda)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d2dcda)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d2dcda)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.Failure(code=proto_types.Failure_ProcessError), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_d2dcda)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d2dcda)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d2dcda)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d2dcda)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.Failure(code=proto.FailureType.ProcessError), ]) self.assertRaises(CallException, self.client.sign_tx, 'Testnet', [inp1], [out1, out2], debug_processor=attack_processor) @@ -703,33 +701,33 @@ class TestMsgSigntx(common.TrezorTest): self.setup_mnemonic_nopin_nopassphrase() - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[1], # mfiGQVPcRcaEvQPYDErR34DcCovtxYvUUV # amount=390000, prev_hash=TXHASH_d6da21, prev_index=0, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='mm6FM31rM5Vc3sw5D7kztiBg3jHUzyqF1g', amount=2500278230 - 10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_tx_api(TxApiTestnet) self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_d6da21)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d6da21)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d6da21)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_d6da21)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d6da21)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d6da21)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Testnet', [inp1, ], [out1, ]) diff --git a/tests/device_tests/test_msg_signtx_bch.py b/tests/device_tests/test_msg_signtx_bch.py index 01c15fe..c4491a6 100644 --- a/tests/device_tests/test_msg_signtx_bch.py +++ b/tests/device_tests/test_msg_signtx_bch.py @@ -19,8 +19,7 @@ import unittest import common import binascii -import trezorlib.messages_pb2 as proto -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto from trezorlib.tx_api import TxApiInsight from trezorlib.ckd_public import deserialize from trezorlib.client import CallException @@ -33,35 +32,35 @@ class TestMsgSigntxSegwit(common.TrezorTest): def test_send_bch_change(self): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiBitcoinCash) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("44'/145'/0'/0/0"), # 1MH9KKcvdCTY44xVDC2k3fjBbX5Cz29N1q amount=1995344, prev_hash=binascii.unhexlify('bc37c28dfb467d2ecb50261387bf752a3977d7e5337915071bb4151e6b711a78'), prev_index=0, - script_type=proto_types.SPENDADDRESS, + script_type=proto.InputScriptType.SPENDADDRESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address_n=self.client.expand_path("44'/145'/0'/1/0"), amount=1896050, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='1LRspCZNFJcbuNKQkXgHMDucctFRQya5a3', amount=73452, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Bcash', [inp1], [out1, out2]) @@ -70,38 +69,38 @@ class TestMsgSigntxSegwit(common.TrezorTest): def test_send_bch_nochange(self): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiBitcoinCash) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("44'/145'/0'/1/0"), # 1HADRPJpgqBzThepERpVXNi6qRgiLQRNoE amount=1896050, prev_hash=binascii.unhexlify('502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c'), prev_index=0, - script_type=proto_types.SPENDADDRESS, + script_type=proto.InputScriptType.SPENDADDRESS, ) - inp2 = proto_types.TxInputType( + inp2 = proto.TxInputType( address_n=self.client.expand_path("44'/145'/0'/0/1"), # 1LRspCZNFJcbuNKQkXgHMDucctFRQya5a3 amount=73452, prev_hash=binascii.unhexlify('502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c'), prev_index=1, - script_type=proto_types.SPENDADDRESS, + script_type=proto.InputScriptType.SPENDADDRESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='15pnEDZJo3ycPUamqP3tEDnEju1oW5fBCz', amount=1934960, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Bcash', [inp1, inp2], [out1]) @@ -110,26 +109,26 @@ class TestMsgSigntxSegwit(common.TrezorTest): def test_attack_amount(self): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiBitcoinCash) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("44'/145'/0'/1/0"), # 1HADRPJpgqBzThepERpVXNi6qRgiLQRNoE amount=1896050 - 1, prev_hash=binascii.unhexlify('502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c'), prev_index=0, - script_type=proto_types.SPENDADDRESS, + script_type=proto.InputScriptType.SPENDADDRESS, ) - inp2 = proto_types.TxInputType( + inp2 = proto.TxInputType( address_n=self.client.expand_path("44'/145'/0'/0/1"), # 1LRspCZNFJcbuNKQkXgHMDucctFRQya5a3 amount=73452, prev_hash=binascii.unhexlify('502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c'), prev_index=1, - script_type=proto_types.SPENDADDRESS, + script_type=proto.InputScriptType.SPENDADDRESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='15pnEDZJo3ycPUamqP3tEDnEju1oW5fBCz', amount=1934960, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) global run_attack @@ -139,10 +138,10 @@ class TestMsgSigntxSegwit(common.TrezorTest): import sys global run_attack - if req.details.tx_hash != b'': + if req.details.tx_hash is not None: return msg - if req.request_type != proto_types.TXINPUT: + if req.request_type != proto.RequestType.TXINPUT: return msg if req.details.request_index != 0: @@ -157,36 +156,36 @@ class TestMsgSigntxSegwit(common.TrezorTest): with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.Failure(code=proto_types.Failure_ProcessError), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.Failure(code=proto.FailureType.ProcessError), ]) self.assertRaises(CallException, self.client.sign_tx, 'Bcash', [inp1, inp2], [out1], debug_processor=attack_processor) def test_attack_change_input(self): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiBitcoinCash) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("44'/145'/1000'/0/0"), # 1MH9KKcvdCTY44xVDC2k3fjBbX5Cz29N1q amount=1995344, prev_hash=binascii.unhexlify('bc37c28dfb467d2ecb50261387bf752a3977d7e5337915071bb4151e6b711a78'), prev_index=0, - script_type=proto_types.SPENDADDRESS, + script_type=proto.InputScriptType.SPENDADDRESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address_n=self.client.expand_path("44'/145'/1000'/1/0"), amount=1896050, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='1LRspCZNFJcbuNKQkXgHMDucctFRQya5a3', amount=73452, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) global attack_ctr @@ -196,10 +195,10 @@ class TestMsgSigntxSegwit(common.TrezorTest): import sys global attack_ctr - if req.details.tx_hash != b'': + if req.details.tx_hash is not None: return msg - if req.request_type != proto_types.TXINPUT: + if req.request_type != proto.RequestType.TXINPUT: return msg attack_ctr += 1 @@ -211,13 +210,13 @@ class TestMsgSigntxSegwit(common.TrezorTest): with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.Failure(code=proto_types.Failure_ProcessError), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.Failure(code=proto.FailureType.ProcessError), ]) self.assertRaises(CallException, self.client.sign_tx, 'Bcash', [inp1], [out1, out2], debug_processor=attack_processor) @@ -229,46 +228,46 @@ class TestMsgSigntxSegwit(common.TrezorTest): xpubs.append(n.xpub) def getmultisig(chain, nr, signatures=[b'', b'', b''], xpubs=xpubs): - return proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda xpub: proto_types.HDNodePathType(node=deserialize(xpub), address_n=[chain, nr]), xpubs), + return proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda xpub: proto.HDNodePathType(node=deserialize(xpub), address_n=[chain, nr]), xpubs)), signatures=signatures, m=2, ) - correcthorse = proto_types.HDNodeType( + correcthorse = proto.HDNodeType( depth=1, fingerprint=0, child_num=0, chain_code=binascii.unhexlify('0000000000000000000000000000000000000000000000000000000000000000'), public_key=binascii.unhexlify('0378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71')) sig = binascii.unhexlify(b'304402207274b5a4d15e75f3df7319a375557b0efba9b27bc63f9f183a17da95a6125c94022000efac57629f1522e2d3958430e2ef073b0706cfac06cce492651b79858f09ae') - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("44'/145'/1'/1/0"), multisig=getmultisig(1, 0, [b'', sig, b'']), # 3CPtPpL5mGAPdxUeUDfm2RNdWoSN9dKpXE amount=24000, prev_hash=binascii.unhexlify('f68caf10df12d5b07a34601d88fa6856c6edcbf4d05ebef3486510ae1c293d5f'), prev_index=1, - script_type=proto_types.SPENDMULTISIG, + script_type=proto.InputScriptType.SPENDMULTISIG, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address_n=self.client.expand_path("44'/145'/1'/1/1"), - multisig=proto_types.MultisigRedeemScriptType( - pubkeys=[proto_types.HDNodePathType(node=deserialize(xpubs[0]), address_n=[1, 1]), - proto_types.HDNodePathType(node=correcthorse, address_n=[]), - proto_types.HDNodePathType(node=correcthorse, address_n=[])], + multisig=proto.MultisigRedeemScriptType( + pubkeys=[proto.HDNodePathType(node=deserialize(xpubs[0]), address_n=[1, 1]), + proto.HDNodePathType(node=correcthorse, address_n=[]), + proto.HDNodePathType(node=correcthorse, address_n=[])], signatures=[b'', b'', b''], m=2, ), - script_type=proto_types.PAYTOMULTISIG, + script_type=proto.OutputScriptType.PAYTOMULTISIG, amount=23000 ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures1, serialized_tx) = self.client.sign_tx('Bcash', [inp1], [out1]) self.assertEqual(binascii.hexlify(signatures1[0]), b'3044022052ccf022b3684ecce9f961ce8828387b97267c86bedf0ce16a24bf014e62e42c022035d315ddbeeef7ab3456bd09aed8b625ea58852216b60e4b84ba9f85827d305c') @@ -282,69 +281,69 @@ class TestMsgSigntxSegwit(common.TrezorTest): xpubs.append(n.xpub) def getmultisig(chain, nr, signatures=[b'', b'', b''], xpubs=xpubs): - return proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda xpub: proto_types.HDNodePathType(node=deserialize(xpub), address_n=[chain, nr]), xpubs), + return proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda xpub: proto.HDNodePathType(node=deserialize(xpub), address_n=[chain, nr]), xpubs)), signatures=signatures, m=2, ) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("44'/145'/3'/0/0"), multisig=getmultisig(0, 0), # 33Ju286QvonBz5N1V754ZekQv4GLJqcc5R amount=48490, prev_hash=binascii.unhexlify('8b6db9b8ba24235d86b053ea2ccb484fc32b96f89c3c39f98d86f90db16076a0'), prev_index=0, - script_type=proto_types.SPENDMULTISIG, + script_type=proto.InputScriptType.SPENDMULTISIG, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='113Q5hHQNQ3bc1RpPX6UNw4GAXstyeA3Dk', amount=24000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=self.client.expand_path("44'/145'/3'/1/0"), multisig=getmultisig(1, 0), - script_type=proto_types.PAYTOMULTISIG, + script_type=proto.OutputScriptType.PAYTOMULTISIG, amount=24000 ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures1, serialized_tx) = self.client.sign_tx('Bcash', [inp1], [out1, out2]) self.assertEqual(binascii.hexlify(signatures1[0]), b'3045022100bcb1a7134a13025a06052546ee1c6ac3640a0abd2d130190ed13ed7fcb43e9cd02207c381478e2ee123c850425bfbf6d3c691230eb37e333832cb32a1ed3f2cd9e85') - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("44'/145'/1'/0/0"), multisig=getmultisig(0, 0, [b'', b'', signatures1[0]]), # 33Ju286QvonBz5N1V754ZekQv4GLJqcc5R amount=48490, prev_hash=binascii.unhexlify('8b6db9b8ba24235d86b053ea2ccb484fc32b96f89c3c39f98d86f90db16076a0'), prev_index=0, - script_type=proto_types.SPENDMULTISIG, + script_type=proto.InputScriptType.SPENDMULTISIG, ) out2.address_n[2] = 1 + 0x80000000 with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures1, serialized_tx) = self.client.sign_tx('Bcash', [inp1], [out1, out2]) diff --git a/tests/device_tests/test_msg_signtx_segwit.py b/tests/device_tests/test_msg_signtx_segwit.py index de1cfd6..efac1c0 100644 --- a/tests/device_tests/test_msg_signtx_segwit.py +++ b/tests/device_tests/test_msg_signtx_segwit.py @@ -19,8 +19,7 @@ import unittest import common import binascii -import trezorlib.messages_pb2 as proto -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto from trezorlib.tx_api import TxApiTestnet from trezorlib.ckd_public import deserialize from trezorlib.client import CallException @@ -31,37 +30,37 @@ class TestMsgSigntxSegwit(common.TrezorTest): def test_send_p2sh(self): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=123456789, prev_hash=binascii.unhexlify('20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337'), prev_index=0, - script_type=proto_types.SPENDP2SHWITNESS, + script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='mhRx1CeVfaayqRwq5zgRQmD7W5aWBfD5mC', amount=12300000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX', - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, amount=123456789 - 11000 - 12300000, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1, out2]) @@ -70,36 +69,36 @@ class TestMsgSigntxSegwit(common.TrezorTest): def test_send_p2sh_change(self): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=123456789, prev_hash=binascii.unhexlify('20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337'), prev_index=0, - script_type=proto_types.SPENDP2SHWITNESS, + script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='mhRx1CeVfaayqRwq5zgRQmD7W5aWBfD5mC', amount=12300000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=self.client.expand_path("49'/1'/0'/1/0"), - script_type=proto_types.PAYTOP2SHWITNESS, + script_type=proto.OutputScriptType.PAYTOP2SHWITNESS, amount=123456789 - 11000 - 12300000, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1, out2]) @@ -109,35 +108,35 @@ class TestMsgSigntxSegwit(common.TrezorTest): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) nodes = map(lambda index: self.client.get_public_node(self.client.expand_path("999'/1'/%d'" % index)), range(1, 4)) - multisig = proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda n: proto_types.HDNodePathType(node=deserialize(n.xpub), address_n=[2, 0]), nodes), + multisig = proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda n: proto.HDNodePathType(node=deserialize(n.xpub), address_n=[2, 0]), nodes)), signatures=[b'', b'', b''], m=2, ) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("999'/1'/1'/2/0"), prev_hash=binascii.unhexlify('9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be'), prev_index=1, - script_type=proto_types.SPENDP2SHWITNESS, + script_type=proto.InputScriptType.SPENDP2SHWITNESS, multisig=multisig, amount=1610436 ) - out1 = proto_types.TxOutputType(address='mhRx1CeVfaayqRwq5zgRQmD7W5aWBfD5mC', - amount=1605000, - script_type=proto_types.PAYTOADDRESS) + out1 = proto.TxOutputType(address='mhRx1CeVfaayqRwq5zgRQmD7W5aWBfD5mC', + amount=1605000, + script_type=proto.OutputScriptType.PAYTOADDRESS) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures1, _) = self.client.sign_tx('Testnet', [inp1], [out1]) # store signature @@ -145,14 +144,14 @@ class TestMsgSigntxSegwit(common.TrezorTest): # sign with third key inp1.address_n[2] = 0x80000003 self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures2, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1]) @@ -164,22 +163,22 @@ class TestMsgSigntxSegwit(common.TrezorTest): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=123456789, prev_hash=binascii.unhexlify('20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337'), prev_index=0, - script_type=proto_types.SPENDP2SHWITNESS, + script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='mhRx1CeVfaayqRwq5zgRQmD7W5aWBfD5mC', amount=12300000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=self.client.expand_path("49'/1'/12345'/1/0"), - script_type=proto_types.PAYTOP2SHWITNESS, + script_type=proto.OutputScriptType.PAYTOP2SHWITNESS, amount=123456789 - 11000 - 12300000, ) @@ -190,10 +189,10 @@ class TestMsgSigntxSegwit(common.TrezorTest): import sys global run_attack - if req.details.tx_hash != b'': + if req.details.tx_hash is not None: return msg - if req.request_type != proto_types.TXINPUT: + if req.request_type != proto.RequestType.TXINPUT: return msg if req.details.request_index != 0: @@ -209,17 +208,17 @@ class TestMsgSigntxSegwit(common.TrezorTest): # Test if the transaction can be signed normally with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1, out2]) @@ -228,12 +227,12 @@ class TestMsgSigntxSegwit(common.TrezorTest): # Now run the attack, must trigger the exception with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.Failure(code=proto_types.Failure_ProcessError), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.Failure(code=proto.FailureType.ProcessError), ]) self.assertRaises(CallException, self.client.sign_tx, 'Testnet', [inp1], [out1, out2], debug_processor=attack_processor) diff --git a/tests/device_tests/test_msg_signtx_segwit_native.py b/tests/device_tests/test_msg_signtx_segwit_native.py index b18285d..6d434cb 100644 --- a/tests/device_tests/test_msg_signtx_segwit_native.py +++ b/tests/device_tests/test_msg_signtx_segwit_native.py @@ -19,8 +19,7 @@ import unittest import common import binascii -import trezorlib.messages_pb2 as proto -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto from trezorlib.tx_api import TxApiTestnet from trezorlib.ckd_public import deserialize @@ -30,37 +29,37 @@ class TestMsgSigntxSegwit(common.TrezorTest): def test_send_p2sh(self): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=123456789, prev_hash=binascii.unhexlify('20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337'), prev_index=0, - script_type=proto_types.SPENDP2SHWITNESS, + script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='tb1qqzv60m9ajw8drqulta4ld4gfx0rdh82un5s65s', amount=12300000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX', - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, amount=123456789 - 11000 - 12300000, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1, out2]) @@ -69,36 +68,36 @@ class TestMsgSigntxSegwit(common.TrezorTest): def test_send_p2sh_change(self): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=123456789, prev_hash=binascii.unhexlify('20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337'), prev_index=0, - script_type=proto_types.SPENDP2SHWITNESS, + script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='tb1qqzv60m9ajw8drqulta4ld4gfx0rdh82un5s65s', amount=12300000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=self.client.expand_path("49'/1'/0'/1/0"), - script_type=proto_types.PAYTOP2SHWITNESS, + script_type=proto.OutputScriptType.PAYTOP2SHWITNESS, amount=123456789 - 11000 - 12300000, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1, out2]) @@ -107,37 +106,37 @@ class TestMsgSigntxSegwit(common.TrezorTest): def test_send_native(self): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("49'/1'/0'/0/0"), # tb1qqzv60m9ajw8drqulta4ld4gfx0rdh82un5s65s amount=12300000, prev_hash=binascii.unhexlify('09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a'), prev_index=0, - script_type=proto_types.SPENDWITNESS, + script_type=proto.InputScriptType.SPENDWITNESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='2N4Q5FhU2497BryFfUgbqkAJE87aKHUhXMp', amount=5000000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='tb1q694ccp5qcc0udmfwgp692u2s2hjpq5h407urtu', - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, amount=12300000 - 11000 - 5000000, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1, out2]) @@ -146,36 +145,36 @@ class TestMsgSigntxSegwit(common.TrezorTest): def test_send_native_change(self): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("49'/1'/0'/0/0"), # tb1qqzv60m9ajw8drqulta4ld4gfx0rdh82un5s65s amount=12300000, prev_hash=binascii.unhexlify('09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a'), prev_index=0, - script_type=proto_types.SPENDWITNESS, + script_type=proto.InputScriptType.SPENDWITNESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='2N4Q5FhU2497BryFfUgbqkAJE87aKHUhXMp', amount=5000000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=self.client.expand_path("49'/1'/0'/1/0"), - script_type=proto_types.PAYTOWITNESS, + script_type=proto.OutputScriptType.PAYTOWITNESS, amount=12300000 - 11000 - 5000000, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1, out2]) @@ -184,59 +183,59 @@ class TestMsgSigntxSegwit(common.TrezorTest): def test_send_both(self): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=111145789, prev_hash=binascii.unhexlify('09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a'), prev_index=1, - script_type=proto_types.SPENDP2SHWITNESS, + script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) - inp2 = proto_types.TxInputType( + inp2 = proto.TxInputType( address_n=self.client.expand_path("49'/1'/0'/1/0"), # tb1q694ccp5qcc0udmfwgp692u2s2hjpq5h407urtu amount=7289000, prev_hash=binascii.unhexlify('65b811d3eca0fe6915d9f2d77c86c5a7f19bf66b1b1253c2c51cb4ae5f0c017b'), prev_index=1, - script_type=proto_types.SPENDWITNESS, + script_type=proto.InputScriptType.SPENDWITNESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='tb1q54un3q39sf7e7tlfq99d6ezys7qgc62a6rxllc', amount=12300000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( # address_n=self.client.expand_path("44'/1'/0'/0/0"), - # script_type=proto_types.PAYTOP2SHWITNESS, + # script_type=proto.OutputScriptType.PAYTOP2SHWITNESS, address='2N6UeBoqYEEnybg4cReFYDammpsyDw8R2Mc', - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, amount=45600000, ) - out3 = proto_types.TxOutputType( + out3 = proto.TxOutputType( address='mvbu1Gdy8SUjTenqerxUaZyYjmveZvt33q', amount=111145789 + 7289000 - 11000 - 12300000 - 45600000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=2)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=2)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=2)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=2)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Testnet', [inp1, inp2], [out1, out2, out3]) @@ -247,37 +246,37 @@ class TestMsgSigntxSegwit(common.TrezorTest): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) nodes = [self.client.get_public_node(self.client.expand_path("999'/1'/%d'" % index)) for index in range(1, 4)] - multisig = proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda n: proto_types.HDNodePathType(node=deserialize(n.xpub), address_n=[2, 0]), nodes), + multisig = proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda n: proto.HDNodePathType(node=deserialize(n.xpub), address_n=[2, 0]), nodes)), signatures=[b'', b'', b''], m=2, ) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("999'/1'/1'/2/0"), prev_hash=binascii.unhexlify('9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be'), prev_index=1, - script_type=proto_types.SPENDP2SHWITNESS, + script_type=proto.InputScriptType.SPENDP2SHWITNESS, multisig=multisig, amount=1610436 ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='tb1qch62pf820spe9mlq49ns5uexfnl6jzcezp7d328fw58lj0rhlhasge9hzy', amount=1605000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures1, _) = self.client.sign_tx('Testnet', [inp1], [out1]) # store signature @@ -285,14 +284,14 @@ class TestMsgSigntxSegwit(common.TrezorTest): # sign with third key inp1.address_n[2] = 0x80000003 self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures2, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1]) @@ -303,37 +302,37 @@ class TestMsgSigntxSegwit(common.TrezorTest): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) nodes = [self.client.get_public_node(self.client.expand_path("999'/1'/%d'" % index)) for index in range(1, 4)] - multisig = proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda n: proto_types.HDNodePathType(node=deserialize(n.xpub), address_n=[2, 1]), nodes), + multisig = proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda n: proto.HDNodePathType(node=deserialize(n.xpub), address_n=[2, 1]), nodes)), signatures=[b'', b'', b''], m=2, ) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("999'/1'/2'/2/1"), prev_hash=binascii.unhexlify('f41cbedd8becee05a830f418d13aa665125464547db5c7a6cd28f21639fe1228'), prev_index=0, - script_type=proto_types.SPENDWITNESS, + script_type=proto.InputScriptType.SPENDWITNESS, multisig=multisig, amount=1605000 ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='tb1qr6xa5v60zyt3ry9nmfew2fk5g9y3gerkjeu6xxdz7qga5kknz2ssld9z2z', amount=1604000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures1, _) = self.client.sign_tx('Testnet', [inp1], [out1]) # store signature @@ -341,14 +340,14 @@ class TestMsgSigntxSegwit(common.TrezorTest): # sign with first key inp1.address_n[2] = 0x80000001 self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures2, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1]) @@ -359,42 +358,42 @@ class TestMsgSigntxSegwit(common.TrezorTest): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) nodes = [self.client.get_public_node(self.client.expand_path("999'/1'/%d'" % index)) for index in range(1, 4)] - multisig = proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda n: proto_types.HDNodePathType(node=deserialize(n.xpub), address_n=[2, 0]), nodes), + multisig = proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda n: proto.HDNodePathType(node=deserialize(n.xpub), address_n=[2, 0]), nodes)), signatures=[b'', b'', b''], m=2, ) - multisig2 = proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda n: proto_types.HDNodePathType(node=deserialize(n.xpub), address_n=[1, 1]), nodes), + multisig2 = proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda n: proto.HDNodePathType(node=deserialize(n.xpub), address_n=[1, 1]), nodes)), signatures=[b'', b'', b''], m=2, ) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("999'/1'/1'/2/0"), prev_hash=binascii.unhexlify('c9348040bbc2024e12dcb4a0b4806b0398646b91acf314da028c3f03dd0179fc'), prev_index=0, - script_type=proto_types.SPENDWITNESS, + script_type=proto.InputScriptType.SPENDWITNESS, multisig=multisig, amount=1604000 ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address_n=self.client.expand_path("999'/1'/1'/1/1"), amount=1603000, multisig=multisig2, - script_type=proto_types.PAYTOP2SHWITNESS + script_type=proto.OutputScriptType.PAYTOP2SHWITNESS ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures1, _) = self.client.sign_tx('Testnet', [inp1], [out1]) # store signature @@ -403,13 +402,13 @@ class TestMsgSigntxSegwit(common.TrezorTest): inp1.address_n[2] = 0x80000003 out1.address_n[2] = 0x80000003 self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures2, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1]) @@ -420,42 +419,42 @@ class TestMsgSigntxSegwit(common.TrezorTest): self.setup_mnemonic_allallall() self.client.set_tx_api(TxApiTestnet) nodes = [self.client.get_public_node(self.client.expand_path("999'/1'/%d'" % index)) for index in range(1, 4)] - multisig = proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda n: proto_types.HDNodePathType(node=deserialize(n.xpub), address_n=[1, 1]), nodes), + multisig = proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda n: proto.HDNodePathType(node=deserialize(n.xpub), address_n=[1, 1]), nodes)), signatures=[b'', b'', b''], m=2, ) - multisig2 = proto_types.MultisigRedeemScriptType( - pubkeys=map(lambda n: proto_types.HDNodePathType(node=deserialize(n.xpub), address_n=[1, 2]), nodes), + multisig2 = proto.MultisigRedeemScriptType( + pubkeys=list(map(lambda n: proto.HDNodePathType(node=deserialize(n.xpub), address_n=[1, 2]), nodes)), signatures=[b'', b'', b''], m=2, ) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=self.client.expand_path("999'/1'/1'/1/1"), prev_hash=binascii.unhexlify('31bc1c88ce6ae337a6b3057a16d5bad0b561ad1dfc047d0a7fbb8814668f91e5'), prev_index=0, - script_type=proto_types.SPENDP2SHWITNESS, + script_type=proto.InputScriptType.SPENDP2SHWITNESS, multisig=multisig, amount=1603000 ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address_n=self.client.expand_path("999'/1'/1'/1/2"), amount=1602000, multisig=multisig2, - script_type=proto_types.PAYTOWITNESS + script_type=proto.OutputScriptType.PAYTOWITNESS ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures1, _) = self.client.sign_tx('Testnet', [inp1], [out1]) # store signature @@ -464,13 +463,13 @@ class TestMsgSigntxSegwit(common.TrezorTest): inp1.address_n[2] = 0x80000003 out1.address_n[2] = 0x80000003 self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures2, serialized_tx) = self.client.sign_tx('Testnet', [inp1], [out1]) diff --git a/tests/device_tests/test_msg_signtx_zcash.py b/tests/device_tests/test_msg_signtx_zcash.py index c02fca7..5818548 100644 --- a/tests/device_tests/test_msg_signtx_zcash.py +++ b/tests/device_tests/test_msg_signtx_zcash.py @@ -21,8 +21,7 @@ import unittest import common import binascii -import trezorlib.messages_pb2 as proto -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto from trezorlib.tx_api import TxApiZcash @@ -37,36 +36,36 @@ class TestMsgSigntx(common.TrezorTest): # tx: 93373e63cc626c4a7d049ad775d6511bb5eba985f142db660c9b9f955c722f5c # input 0: 1.234567 TAZ - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[2147483692, 2147483649, 2147483648, 0, 0], # tmQoJ3PTXgQLaRRZZYT6xk8XtjRbr2kCqwu # amount=123456700, prev_hash=TXHASH_93373e, prev_index=0, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='tmJ1xYxP8XNTtCoDgvdmQPSrxh5qZJgy65Z', amount=123456700 - 1940, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: self.client.set_tx_api(TxApiZcash) self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_93373e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_93373e)), - proto.TxRequest(request_type=proto_types.TXEXTRADATA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_93373e, extra_data_offset=0, extra_data_len=1024)), - proto.TxRequest(request_type=proto_types.TXEXTRADATA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_93373e, extra_data_offset=1024, extra_data_len=1024)), - proto.TxRequest(request_type=proto_types.TXEXTRADATA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_93373e, extra_data_offset=2048, extra_data_len=1024)), - proto.TxRequest(request_type=proto_types.TXEXTRADATA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_93373e, extra_data_offset=3072, extra_data_len=629)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_93373e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_93373e)), + proto.TxRequest(request_type=proto.RequestType.TXEXTRADATA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_93373e, extra_data_offset=0, extra_data_len=1024)), + proto.TxRequest(request_type=proto.RequestType.TXEXTRADATA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_93373e, extra_data_offset=1024, extra_data_len=1024)), + proto.TxRequest(request_type=proto.RequestType.TXEXTRADATA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_93373e, extra_data_offset=2048, extra_data_len=1024)), + proto.TxRequest(request_type=proto.RequestType.TXEXTRADATA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_93373e, extra_data_offset=3072, extra_data_len=629)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Zcash', [inp1, ], [out1, ]) diff --git a/tests/device_tests/test_msg_wipedevice.py b/tests/device_tests/test_msg_wipedevice.py index 31ba601..1e1cfc0 100644 --- a/tests/device_tests/test_msg_wipedevice.py +++ b/tests/device_tests/test_msg_wipedevice.py @@ -19,7 +19,7 @@ import unittest import common -from trezorlib import messages_pb2 as proto +from trezorlib import messages as proto class TestDeviceWipe(common.TrezorTest): diff --git a/tests/device_tests/test_multisig.py b/tests/device_tests/test_multisig.py index 49cacba..ff7b380 100644 --- a/tests/device_tests/test_multisig.py +++ b/tests/device_tests/test_multisig.py @@ -22,9 +22,8 @@ import unittest import common import binascii -import trezorlib.messages_pb2 as proto +from trezorlib import messages as proto import trezorlib.ckd_public as bip32 -import trezorlib.types_pb2 as proto_types from trezorlib.client import CallException @@ -65,45 +64,45 @@ class TestMultisig(common.TrezorTest): node = bip32.deserialize('xpub661MyMwAqRbcF1zGijBb2K6x9YiJPh58xpcCeLvTxMX6spkY3PcpJ4ABcCyWfskq5DDxM3e6Ez5ePCqG5bnPUXR4wL8TZWyoDaUdiWW7bKy') - multisig = proto_types.MultisigRedeemScriptType( + multisig = proto.MultisigRedeemScriptType( pubkeys=[ - proto_types.HDNodePathType(node=node, address_n=[1]), - proto_types.HDNodePathType(node=node, address_n=[2]), - proto_types.HDNodePathType(node=node, address_n=[3]) + proto.HDNodePathType(node=node, address_n=[1]), + proto.HDNodePathType(node=node, address_n=[2]), + proto.HDNodePathType(node=node, address_n=[3]) ], signatures=[b'', b'', b''], m=2, ) # Let's go to sign with key 1 - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[1], prev_hash=TXHASH_c6091a, prev_index=1, - script_type=proto_types.SPENDMULTISIG, + script_type=proto.InputScriptType.SPENDMULTISIG, multisig=multisig, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='12iyMbUb4R2K3gre4dHSrbu5azG5KaqVss', amount=100000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_c6091a)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6091a)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6091a)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_c6091a)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_c6091a)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6091a)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6091a)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_c6091a)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) # Now we have first signature @@ -114,39 +113,39 @@ class TestMultisig(common.TrezorTest): # --------------------------------------- # Let's do second signature using 3rd key - multisig = proto_types.MultisigRedeemScriptType( + multisig = proto.MultisigRedeemScriptType( pubkeys=[ - proto_types.HDNodePathType(node=node, address_n=[1]), - proto_types.HDNodePathType(node=node, address_n=[2]), - proto_types.HDNodePathType(node=node, address_n=[3]) + proto.HDNodePathType(node=node, address_n=[1]), + proto.HDNodePathType(node=node, address_n=[2]), + proto.HDNodePathType(node=node, address_n=[3]) ], signatures=[signatures1[0], b'', b''], # Fill signature from previous signing process m=2, ) # Let's do a second signature with key 3 - inp3 = proto_types.TxInputType( + inp3 = proto.TxInputType( address_n=[3], prev_hash=TXHASH_c6091a, prev_index=1, - script_type=proto_types.SPENDMULTISIG, + script_type=proto.InputScriptType.SPENDMULTISIG, multisig=multisig, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_c6091a)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6091a)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6091a)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_c6091a)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_c6091a)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6091a)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_c6091a)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_c6091a)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures2, serialized_tx) = self.client.sign_tx('Bitcoin', [inp3, ], [out1, ]) @@ -171,7 +170,7 @@ class TestMultisig(common.TrezorTest): pubs = [] for x in range(15): - pubs.append(proto_types.HDNodePathType(node=node, address_n=[x])) + pubs.append(proto.HDNodePathType(node=node, address_n=[x])) # redeeemscript # 5f21023230848585885f63803a0a8aecdd6538792d5c539215c91698e315bf0253b43d210338d78612e990f2eea0c426b5e48a8db70b9d7ed66282b3b26511e0b1c75515a621038caebd6f753bbbd2bb1f3346a43cd32140648583673a31d62f2dfb56ad0ab9e32103477b9f0f34ae85434ce795f0c5e1e90c9420e5b5fad084d7cce9a487b94a79022103fe91eca10602d7dad4c9dab2b2a0858f71e25a219a6940749ce7a48118480dae210234716c01c2dd03fa7ee302705e2b8fbd1311895d94b1dca15e62eedea9b0968f210341fb2ead334952cf60f4481ba435c4693d0be649be01d2cfe9b02018e483e7bd2102dad8b2bce360a705c16e74a50a36459b4f8f4b78f9cd67def29d54ef6f7c7cf9210222dbe3f5f197a34a1d50e2cbe2a1085cac2d605c9e176f9a240e0fd0c669330d2103fb41afab56c9cdb013fda63d777d4938ddc3cb2ad939712da688e3ed333f95982102435f177646bdc717cb3211bf46656ca7e8d642726144778c9ce816b8b8c36ccf2102158d8e20095364031d923c7e9f7f08a14b1be1ddee21fe1a5431168e31345e5521026259794892428ca0818c8fb61d2d459ddfe20e57f50803c7295e6f4e2f5586652102815f910a8689151db627e6e262e0a2075ad5ec2993a6bc1b876a9d420923d681210318f54647f645ff01bd49fedc0219343a6a22d3ea3180a3c3d3097e4b888a8db45fae @@ -181,24 +180,24 @@ class TestMultisig(common.TrezorTest): signatures = [b''] * 15 - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='17kTB7qSk3MupQxWdiv5ZU3zcrZc2Azes1', amount=10000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) for x in range(15): - multisig = proto_types.MultisigRedeemScriptType( + multisig = proto.MultisigRedeemScriptType( pubkeys=pubs, signatures=signatures, m=15, ) - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[x], prev_hash=binascii.unhexlify('6189e3febb5a21cee8b725aa1ef04ffce7e609448446d3a8d6f483c634ef5315'), prev_index=1, - script_type=proto_types.SPENDMULTISIG, + script_type=proto.InputScriptType.SPENDMULTISIG, multisig=multisig, ) @@ -228,29 +227,29 @@ class TestMultisig(common.TrezorTest): # xpub661MyMwAqRbcF1zGijBb2K6x9YiJPh58xpcCeLvTxMX6spkY3PcpJ4ABcCyWfskq5DDxM3e6Ez5ePCqG5bnPUXR4wL8TZWyoDaUdiWW7bKy node = bip32.deserialize('xpub661MyMwAqRbcF1zGijBb2K6x9YiJPh58xpcCeLvTxMX6spkY3PcpJ4ABcCyWfskq5DDxM3e6Ez5ePCqG5bnPUXR4wL8TZWyoDaUdiWW7bKy') - multisig = proto_types.MultisigRedeemScriptType( + multisig = proto.MultisigRedeemScriptType( pubkeys=[ - proto_types.HDNodePathType(node=node, address_n=[1]), - proto_types.HDNodePathType(node=node, address_n=[2]), - proto_types.HDNodePathType(node=node, address_n=[3]) + proto.HDNodePathType(node=node, address_n=[1]), + proto.HDNodePathType(node=node, address_n=[2]), + proto.HDNodePathType(node=node, address_n=[3]) ], signatures=[b'', b'', b''], m=2, ) # Let's go to sign with key 10, which is NOT in pubkeys - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[10], prev_hash=TXHASH_c6091a, prev_index=1, - script_type=proto_types.SPENDMULTISIG, + script_type=proto.InputScriptType.SPENDMULTISIG, multisig=multisig, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='12iyMbUb4R2K3gre4dHSrbu5azG5KaqVss', amount=100000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) with self.client: diff --git a/tests/device_tests/test_multisig_change.py b/tests/device_tests/test_multisig_change.py index 848a6b0..d8fefc9 100644 --- a/tests/device_tests/test_multisig_change.py +++ b/tests/device_tests/test_multisig_change.py @@ -20,9 +20,8 @@ import unittest import common import binascii -import trezorlib.messages_pb2 as proto +from trezorlib import messages as proto import trezorlib.ckd_public as bip32 -import trezorlib.types_pb2 as proto_types from trezorlib import tx_api @@ -66,101 +65,101 @@ class TestMultisigChange(common.TrezorTest): # tx: e4bc1ae5e5007a08f2b3926fe11c66612e8f73c6b00c69c7027213b84d259be3 # input 1: 0.001 BTC - multisig_in1 = proto_types.MultisigRedeemScriptType( + multisig_in1 = proto.MultisigRedeemScriptType( pubkeys=[ - proto_types.HDNodePathType(node=node_ext2, address_n=[0, 0]), - proto_types.HDNodePathType(node=node_ext1, address_n=[0, 0]), - proto_types.HDNodePathType(node=node_int, address_n=[0, 0]) + proto.HDNodePathType(node=node_ext2, address_n=[0, 0]), + proto.HDNodePathType(node=node_ext1, address_n=[0, 0]), + proto.HDNodePathType(node=node_int, address_n=[0, 0]) ], signatures=[b'', b'', b''], m=2, ) - multisig_in2 = proto_types.MultisigRedeemScriptType( + multisig_in2 = proto.MultisigRedeemScriptType( pubkeys=[ - proto_types.HDNodePathType(node=node_ext1, address_n=[0, 1]), - proto_types.HDNodePathType(node=node_ext2, address_n=[0, 1]), - proto_types.HDNodePathType(node=node_int, address_n=[0, 1]), + proto.HDNodePathType(node=node_ext1, address_n=[0, 1]), + proto.HDNodePathType(node=node_ext2, address_n=[0, 1]), + proto.HDNodePathType(node=node_int, address_n=[0, 1]), ], signatures=[b'', b'', b''], m=2, ) - multisig_in3 = proto_types.MultisigRedeemScriptType( + multisig_in3 = proto.MultisigRedeemScriptType( pubkeys=[ - proto_types.HDNodePathType(node=node_ext1, address_n=[0, 1]), - proto_types.HDNodePathType(node=node_ext3, address_n=[0, 1]), - proto_types.HDNodePathType(node=node_int, address_n=[0, 1]) + proto.HDNodePathType(node=node_ext1, address_n=[0, 1]), + proto.HDNodePathType(node=node_ext3, address_n=[0, 1]), + proto.HDNodePathType(node=node_int, address_n=[0, 1]) ], signatures=[b'', b'', b''], m=2, ) # 2N9W4z9AhAPaHghtqVQPbaTAGHdbrhKeBQw - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[45 | 0x80000000, 0, 0, 0], prev_hash=binascii.unhexlify('16c6c8471b8db7a628f2b2bb86bfeefae1766463ce8692438c7fd3fce3f43ce5'), prev_index=1, - script_type=proto_types.SPENDMULTISIG, + script_type=proto.InputScriptType.SPENDMULTISIG, multisig=multisig_in1, ) # 2NDBG6QXQLtnQ3jRGkrqo53BiCeXfQXLdj4 - inp2 = proto_types.TxInputType( + inp2 = proto.TxInputType( address_n=[45 | 0x80000000, 0, 0, 1], prev_hash=binascii.unhexlify('d80c34ee14143a8bf61125102b7ef594118a3796cad670fa8ee15080ae155318'), prev_index=0, - script_type=proto_types.SPENDMULTISIG, + script_type=proto.InputScriptType.SPENDMULTISIG, multisig=multisig_in2, ) # 2MvwPWfp2XPU3S1cMwgEMKBPUw38VP5SBE4 - inp3 = proto_types.TxInputType( + inp3 = proto.TxInputType( address_n=[45 | 0x80000000, 0, 0, 1], prev_hash=binascii.unhexlify('b0946dc27ba308a749b11afecc2018980af18f79e89ad6b080b58220d856f739'), prev_index=0, - script_type=proto_types.SPENDMULTISIG, + script_type=proto.InputScriptType.SPENDMULTISIG, multisig=multisig_in3, ) def _responses(self, inp1, inp2, change=0): resp = [ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=inp1.prev_hash)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=inp1.prev_hash)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=inp1.prev_hash)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=inp1.prev_hash)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=inp2.prev_hash)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=inp2.prev_hash)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=inp2.prev_hash)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=inp2.prev_hash)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=inp1.prev_hash)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=inp1.prev_hash)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=inp1.prev_hash)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=inp1.prev_hash)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=inp2.prev_hash)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=inp2.prev_hash)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=inp2.prev_hash)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=inp2.prev_hash)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), ] if change != 1: resp.append( - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput) + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput) ) resp.append( - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)) + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)) ) if change != 2: resp.append( - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput) + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput) ) resp += [ - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ] return resp @@ -168,16 +167,16 @@ class TestMultisigChange(common.TrezorTest): def test_external_external(self): self.setup_mnemonic_nopin_nopassphrase() - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='muevUcG1Bb8eM2nGUGhqmeujHRX7YXjSEu', amount=40000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='mwdrpMVSJxxsM8f8xbnCHn9ERaRT1NG1UX', amount=44000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) with self.client: @@ -190,16 +189,16 @@ class TestMultisigChange(common.TrezorTest): def test_external_internal(self): self.setup_mnemonic_nopin_nopassphrase() - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='muevUcG1Bb8eM2nGUGhqmeujHRX7YXjSEu', amount=40000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=self.client.expand_path("45'/0/1/1"), amount=44000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) with self.client: @@ -212,16 +211,16 @@ class TestMultisigChange(common.TrezorTest): def test_internal_external(self): self.setup_mnemonic_nopin_nopassphrase() - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address_n=self.client.expand_path("45'/0/1/0"), amount=40000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='mwdrpMVSJxxsM8f8xbnCHn9ERaRT1NG1UX', amount=44000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) with self.client: @@ -234,16 +233,16 @@ class TestMultisigChange(common.TrezorTest): def test_multisig_external_external(self): self.setup_mnemonic_nopin_nopassphrase() - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='2N2aFoogGntQFFwdUVPfRmutXD22ThcNTsR', amount=40000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='2NFJjQcU8mw4Z3ywpbek8HL1VoJ27GDrkHw', amount=44000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) with self.client: @@ -256,27 +255,27 @@ class TestMultisigChange(common.TrezorTest): def test_multisig_change_match_first(self): self.setup_mnemonic_nopin_nopassphrase() - multisig_out1 = proto_types.MultisigRedeemScriptType( + multisig_out1 = proto.MultisigRedeemScriptType( pubkeys=[ - proto_types.HDNodePathType(node=self.node_ext2, address_n=[1, 0]), - proto_types.HDNodePathType(node=self.node_ext1, address_n=[1, 0]), - proto_types.HDNodePathType(node=self.node_int, address_n=[1, 0]) + proto.HDNodePathType(node=self.node_ext2, address_n=[1, 0]), + proto.HDNodePathType(node=self.node_ext1, address_n=[1, 0]), + proto.HDNodePathType(node=self.node_int, address_n=[1, 0]) ], signatures=[b'', b'', b''], m=2, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address_n=[0x80000000 | 45, 0, 1, 0], multisig=multisig_out1, amount=40000000, - script_type=proto_types.PAYTOMULTISIG + script_type=proto.OutputScriptType.PAYTOMULTISIG ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='2NFJjQcU8mw4Z3ywpbek8HL1VoJ27GDrkHw', amount=44000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) with self.client: @@ -289,27 +288,27 @@ class TestMultisigChange(common.TrezorTest): def test_multisig_change_match_second(self): self.setup_mnemonic_nopin_nopassphrase() - multisig_out2 = proto_types.MultisigRedeemScriptType( + multisig_out2 = proto.MultisigRedeemScriptType( pubkeys=[ - proto_types.HDNodePathType(node=self.node_ext1, address_n=[1, 1]), - proto_types.HDNodePathType(node=self.node_ext2, address_n=[1, 1]), - proto_types.HDNodePathType(node=self.node_int, address_n=[1, 1]) + proto.HDNodePathType(node=self.node_ext1, address_n=[1, 1]), + proto.HDNodePathType(node=self.node_ext2, address_n=[1, 1]), + proto.HDNodePathType(node=self.node_int, address_n=[1, 1]) ], signatures=[b'', b'', b''], m=2, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='2N2aFoogGntQFFwdUVPfRmutXD22ThcNTsR', amount=40000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=[0x80000000 | 45, 0, 1, 1], multisig=multisig_out2, amount=44000000, - script_type=proto_types.PAYTOMULTISIG + script_type=proto.OutputScriptType.PAYTOMULTISIG ) with self.client: @@ -322,27 +321,27 @@ class TestMultisigChange(common.TrezorTest): def test_multisig_mismatch_change(self): self.setup_mnemonic_nopin_nopassphrase() - multisig_out2 = proto_types.MultisigRedeemScriptType( + multisig_out2 = proto.MultisigRedeemScriptType( pubkeys=[ - proto_types.HDNodePathType(node=self.node_ext1, address_n=[1, 0]), - proto_types.HDNodePathType(node=self.node_int, address_n=[1, 0]), - proto_types.HDNodePathType(node=self.node_ext3, address_n=[1, 0]) + proto.HDNodePathType(node=self.node_ext1, address_n=[1, 0]), + proto.HDNodePathType(node=self.node_int, address_n=[1, 0]), + proto.HDNodePathType(node=self.node_ext3, address_n=[1, 0]) ], signatures=[b'', b'', b''], m=2, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='2N2aFoogGntQFFwdUVPfRmutXD22ThcNTsR', amount=40000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address_n=[0x80000000 | 45, 0, 1, 0], multisig=multisig_out2, amount=44000000, - script_type=proto_types.PAYTOMULTISIG + script_type=proto.OutputScriptType.PAYTOMULTISIG ) with self.client: @@ -355,27 +354,27 @@ class TestMultisigChange(common.TrezorTest): def test_multisig_mismatch_inputs(self): self.setup_mnemonic_nopin_nopassphrase() - multisig_out1 = proto_types.MultisigRedeemScriptType( + multisig_out1 = proto.MultisigRedeemScriptType( pubkeys=[ - proto_types.HDNodePathType(node=self.node_ext2, address_n=[1, 0]), - proto_types.HDNodePathType(node=self.node_ext1, address_n=[1, 0]), - proto_types.HDNodePathType(node=self.node_int, address_n=[1, 0]) + proto.HDNodePathType(node=self.node_ext2, address_n=[1, 0]), + proto.HDNodePathType(node=self.node_ext1, address_n=[1, 0]), + proto.HDNodePathType(node=self.node_int, address_n=[1, 0]) ], signatures=[b'', b'', b''], m=2, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address_n=[0x80000000 | 45, 0, 1, 0], multisig=multisig_out1, amount=40000000, - script_type=proto_types.PAYTOMULTISIG + script_type=proto.OutputScriptType.PAYTOMULTISIG ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( address='2NFJjQcU8mw4Z3ywpbek8HL1VoJ27GDrkHw', amount=65000000, - script_type=proto_types.PAYTOADDRESS + script_type=proto.OutputScriptType.PAYTOADDRESS ) with self.client: diff --git a/tests/device_tests/test_op_return.py b/tests/device_tests/test_op_return.py index 8bd13bb..cce85f6 100644 --- a/tests/device_tests/test_op_return.py +++ b/tests/device_tests/test_op_return.py @@ -20,8 +20,7 @@ import unittest import binascii import common -import trezorlib.messages_pb2 as proto -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto from trezorlib.client import CallException @@ -36,43 +35,43 @@ class TestOpReturn(common.TrezorTest): # tx: d5f65ee80147b4bcc70b75e4bbf2d7382021b871bd8867ef8fa525ef50864882 # input 0: 0.0039 BTC - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e # amount=390000, prev_hash=TXHASH_d5f65e, prev_index=0, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='1MJ2tj2ThBE62zXbBYA5ZaN3fdve5CPAz1', amount=390000 - 10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out2 = proto_types.TxOutputType( + out2 = proto.TxOutputType( op_return_data=b'test of the op_return data', amount=0, - script_type=proto_types.PAYTOOPRETURN, + script_type=proto.OutputScriptType.PAYTOOPRETURN, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=1)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=1)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) (signatures, serialized_tx) = self.client.sign_tx('Bitcoin', [inp1, ], [out1, out2]) @@ -84,33 +83,33 @@ class TestOpReturn(common.TrezorTest): # tx: d5f65ee80147b4bcc70b75e4bbf2d7382021b871bd8867ef8fa525ef50864882 # input 0: 0.0039 BTC - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e # amount=390000, prev_hash=TXHASH_d5f65e, prev_index=0, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='1MJ2tj2ThBE62zXbBYA5ZaN3fdve5CPAz1', amount=390000 - 10000 - 10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( op_return_data=b'test of the op_return data', amount=10000, - script_type=proto_types.PAYTOOPRETURN, + script_type=proto.OutputScriptType.PAYTOOPRETURN, ) with self.client: self.client.set_expected_responses([ - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), proto.Failure() ]) self.assertRaises(CallException, self.client.sign_tx, 'Bitcoin', [inp1, ], [out1, ]) diff --git a/tests/device_tests/test_protect_call.py b/tests/device_tests/test_protect_call.py index 8928bbe..f70ed8f 100644 --- a/tests/device_tests/test_protect_call.py +++ b/tests/device_tests/test_protect_call.py @@ -22,8 +22,8 @@ import time import unittest import common -from trezorlib import messages_pb2 as proto -from trezorlib.client import PinException +from trezorlib import messages as proto +from trezorlib.client import PinException, CallException # FIXME TODO Add passphrase tests @@ -87,7 +87,7 @@ class TestProtectCall(common.TrezorTest): self.setup_mnemonic_nopin_nopassphrase() with self.client: - self.assertEqual(self.client.debug.read_pin()[0], '') + self.assertEqual(self.client.debug.read_pin()[0], None) self.client.set_expected_responses([proto.Success()]) self._some_protected_call(False, True, True) diff --git a/tests/device_tests/test_protection_levels.py b/tests/device_tests/test_protection_levels.py index 4116e70..7ba7c42 100644 --- a/tests/device_tests/test_protection_levels.py +++ b/tests/device_tests/test_protection_levels.py @@ -20,8 +20,7 @@ import unittest import common import binascii -from trezorlib import messages_pb2 as proto -from trezorlib import types_pb2 as proto_types +from trezorlib import messages as proto TXHASH_d5f65e = binascii.unhexlify('d5f65ee80147b4bcc70b75e4bbf2d7382021b871bd8867ef8fa525ef50864882') @@ -158,42 +157,19 @@ class TestProtectionLevels(common.TrezorTest): binascii.unhexlify('209e23edf0e4e47ff1dec27f32cd78c50e74ef018ee8a6adf35ae17c7a9b0dd96f48b493fd7dbab03efb6f439c6383c9523b3bbc5f1a7d158a6af90ab154e9be80'), 'This is an example of a signed message.') - """ - def test_simplesigntx(self): - self.setup_mnemonic_pin_passphrase() - - inp1 = proto_types.TxInputType(address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e - prev_hash=TXHASH_d5f65e, - prev_index=0, - ) - - out1 = proto_types.TxOutputType(address='1MJ2tj2ThBE62zXbBYA5ZaN3fdve5CPAz1', - amount=390000 - 10000, - script_type=proto_types.PAYTOADDRESS, - ) - - with self.client: - self.client.set_expected_responses([proto.PinMatrixRequest(), - proto.PassphraseRequest(), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXFINISHED)]) - self.client.simple_sign_tx('Bitcoin', [inp1, ], [out1, ]) - """ - def test_signtx(self): self.setup_mnemonic_pin_passphrase() - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e prev_hash=TXHASH_d5f65e, prev_index=0, ) - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address='1MJ2tj2ThBE62zXbBYA5ZaN3fdve5CPAz1', amount=390000 - 10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) with self.client: @@ -201,18 +177,18 @@ class TestProtectionLevels(common.TrezorTest): self.client.set_expected_responses([ proto.PinMatrixRequest(), proto.PassphraseRequest(), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXMETA, details=proto_types.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.ButtonRequest(code=proto_types.ButtonRequest_ConfirmOutput), - proto.ButtonRequest(code=proto_types.ButtonRequest_SignTx), - proto.TxRequest(request_type=proto_types.TXINPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXOUTPUT, details=proto_types.TxRequestDetailsType(request_index=0)), - proto.TxRequest(request_type=proto_types.TXFINISHED), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXMETA, details=proto.TxRequestDetailsType(tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=1, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0, tx_hash=TXHASH_d5f65e)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), + proto.TxRequest(request_type=proto.RequestType.TXINPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXOUTPUT, details=proto.TxRequestDetailsType(request_index=0)), + proto.TxRequest(request_type=proto.RequestType.TXFINISHED), ]) self.client.sign_tx('Bitcoin', [inp1, ], [out1, ]) diff --git a/tests/device_tests/test_zerosig.py b/tests/device_tests/test_zerosig.py index aeb88ed..0e1393b 100644 --- a/tests/device_tests/test_zerosig.py +++ b/tests/device_tests/test_zerosig.py @@ -23,7 +23,7 @@ import binascii import sys import common -import trezorlib.types_pb2 as proto_types +from trezorlib import messages as proto if sys.version_info < (3,): def byteindex(data, index): @@ -45,7 +45,7 @@ class TestZeroSig(common.TrezorTest): # tx: d5f65ee80147b4bcc70b75e4bbf2d7382021b871bd8867ef8fa525ef50864882 # input 0: 0.0039 BTC - inp1 = proto_types.TxInputType(address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e + inp1 = proto.TxInputType(address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e # amount=390000, prev_hash=TXHASH_d5f65e, prev_index=0, @@ -54,9 +54,9 @@ class TestZeroSig(common.TrezorTest): msg = self.client._prepare_sign_tx('Bitcoin', [inp1, ], []) for n in range(3500, 200000): - out1 = proto_types.TxOutputType(address_n=[n], + out1 = proto.TxOutputType(address_n=[n], amount=390000 - 10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) msg.ClearField('outputs') msg.outputs.extend([out1, ]) @@ -74,7 +74,7 @@ class TestZeroSig(common.TrezorTest): def test_one_zero_signature(self): self.setup_mnemonic_nopin_nopassphrase() - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e # amount=390000, prev_hash=TXHASH_d5f65e, @@ -82,10 +82,10 @@ class TestZeroSig(common.TrezorTest): ) # Following address_n has been mined by 'test_mine_zero_signature' - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address_n=[177], amount=390000 - 10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) (signatures, serialized_tx) = self.client.sign_tx('Bitcoin', [inp1, ], [out1, ]) @@ -97,7 +97,7 @@ class TestZeroSig(common.TrezorTest): def test_two_zero_signature(self): self.setup_mnemonic_nopin_nopassphrase() - inp1 = proto_types.TxInputType( + inp1 = proto.TxInputType( address_n=[0], # 14LmW5k4ssUrtbAB4255zdqv3b4w1TuX9e # amount=390000, prev_hash=TXHASH_d5f65e, @@ -105,10 +105,10 @@ class TestZeroSig(common.TrezorTest): ) # Following address_n has been mined by 'test_mine_zero_signature' - out1 = proto_types.TxOutputType( + out1 = proto.TxOutputType( address_n=[16518], amount=390000 - 10000, - script_type=proto_types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, ) (signatures, serialized_tx) = self.client.sign_tx('Bitcoin', [inp1, ], [out1, ]) diff --git a/tools/build_protobuf b/tools/build_protobuf new file mode 100755 index 0000000..778d7e1 --- /dev/null +++ b/tools/build_protobuf @@ -0,0 +1,30 @@ +#!/bin/bash +CURDIR=$(pwd) +mkdir -p $CURDIR/pb2/ +touch $CURDIR/pb2/__init__.py + +mkdir -p ../trezorlib/messages + +INDEX=../trezorlib/messages/__init__.py +rm -f $INDEX +echo '# Automatically generated by pb2py' >> $INDEX +echo 'from __future__ import absolute_import' >> $INDEX +echo '' >> $INDEX + +for i in types messages storage ; do + # Compile .proto files to python2 modules using google protobuf library + cd $CURDIR/../../trezor-common/protob + protoc --python_out=$CURDIR/pb2/ -I/usr/include -I. $i.proto +done + +# hack to make output python 3 compatible +sed -i 's/^import types_pb2/from . import types_pb2/g' $CURDIR/pb2/messages_pb2.py +sed -i 's/^import types_pb2/from . import types_pb2/g' $CURDIR/pb2/storage_pb2.py + +for i in types messages storage ; do + # Convert google protobuf library to trezor's internal format + cd $CURDIR + ./pb2py -p $CURDIR -l $INDEX $i ../trezorlib/messages/ +done + +rm -rf $CURDIR/pb2/ diff --git a/tools/pb2py b/tools/pb2py new file mode 100755 index 0000000..0551cb2 --- /dev/null +++ b/tools/pb2py @@ -0,0 +1,213 @@ +#!/usr/bin/env python3 +# Converts Google's protobuf python definitions of TREZOR wire messages +# to plain-python objects as used in TREZOR Core and python-trezor + +import sys +import os +import argparse + +from google.protobuf.internal.enum_type_wrapper import EnumTypeWrapper + + +def process_type(t, cls, msg_id, indexfile, is_upy): + print(" * type %s" % t) + + imports = [] + out = ["", "", "class %s(p.MessageType):" % t, ] + + if cls.DESCRIPTOR.fields_by_name: + out.append(" FIELDS = {") + elif msg_id is None: + out.append(" pass") + + for v in sorted(cls.DESCRIPTOR.fields_by_name.values(), key=lambda x: x.number): + number = v.number + fieldname = v.name + type = None + repeated = v.label == 3 + required = v.label == 2 + + # print v.has_default_value, v.default_value + + if v.type in (4, 13, 14): + # TYPE_UINT64 = 4 + # TYPE_UINT32 = 13 + # TYPE_ENUM = 14 + type = 'p.UVarintType' + + elif v.type in (17,): + # TYPE_SINT32 = 17 + type = 'p.Sint32Type' + + elif v.type == 9: + # TYPE_STRING = 9 + type = 'p.UnicodeType' + + elif v.type == 8: + # TYPE_BOOL = 8 + type = 'p.BoolType' + + elif v.type == 12: + # TYPE_BYTES = 12 + type = 'p.BytesType' + + elif v.type == 11: + # TYPE_MESSAGE = 1 + type = v.message_type.name + imports.append("from .%s import %s" % + (v.message_type.name, v.message_type.name)) + + else: + raise Exception("Unknown field type %s for field %s" % + (v.type, fieldname)) + + if required: + comment = ' # required' + elif v.has_default_value: + comment = ' # default=%s' % repr(v.default_value) + else: + comment = '' + + if repeated: + flags = 'p.FLAG_REPEATED' + else: + flags = '0' + + out.append(" %d: ('%s', %s, %s),%s" % + (number, fieldname, type, flags, comment)) + + # print fieldname, number, type, repeated, comment + # print v.__dict__ + # print v.CPPTYPE_STRING + # print v.LABEL_REPEATED + # print v.enum_type + # v.has_default_value, v.default_value + # v.label == 3 # repeated + # print v.number + + if cls.DESCRIPTOR.fields_by_name: + out.append(" }") + + if msg_id is not None: + out.append(" MESSAGE_WIRE_TYPE = %d" % msg_id) + if indexfile is not None: + if is_upy: + indexfile.write("%s = const(%d)\n" % (t, msg_id)) + else: + indexfile.write("%s = %d\n" % (t, msg_id)) + + # Remove duplicate imports + imports = list(set(imports)) + + if is_upy: + imports = ['import protobuf as p'] + imports + else: + imports = ['from __future__ import absolute_import', + 'from .. import protobuf as p'] + imports + + + return imports + out + + +def process_enum(t, cls, is_upy): + out = [] + + if is_upy: + out += ("from micropython import const", "") + + print(" * enum %s" % t) + + for k, v in cls.items(): + # Remove type name from the beginning of the constant + # For example "PinMatrixRequestType_Current" -> "Current" + if k.startswith("%s_" % t): + k = k.replace("%s_" % t, '') + + # If type ends with *Type, but constant use type name without *Type, remove it too :) + # For example "ButtonRequestType & ButtonRequest_Other" => "Other" + if t.endswith("Type") and k.startswith("%s_" % t.replace("Type", '')): + k = k.replace("%s_" % t.replace("Type", ''), '') + + if is_upy: + out.append("%s = const(%s)" % (k, v)) + else: + out.append("%s = %s" % (k, v)) + + return out + + +def find_msg_type(msg_types, t): + for k, v in msg_types: + msg_name = k.replace('MessageType_', '') + if msg_name == t: + return v + + +def process_module(mod, genpath, indexfile, modlist, is_upy): + + print("Processing module %s" % mod.__name__) + types = dict([(name, cls) + for name, cls in mod.__dict__.items() if isinstance(cls, type)]) + + msg_types = __import__('pb2', globals(), locals(), [ + 'messages_pb2', ]).messages_pb2.MessageType.items() + + for t, cls in sorted(types.items()): + # Find message type for given class + msg_id = find_msg_type(msg_types, t) + + out = process_type(t, cls, msg_id, indexfile, is_upy) + + write_to_file(genpath, t, out) + if modlist: + modlist.write("from .%s import *\n" % t) + + enums = dict([(name, cls) for name, cls in mod.__dict__.items() + if isinstance(cls, EnumTypeWrapper)]) + + for t, cls in enums.items(): + out = process_enum(t, cls, is_upy) + write_to_file(genpath, t, out) + if modlist: + modlist.write("from . import %s\n" % t) + + +def write_to_file(genpath, t, out): + # Write generated sourcecode to given file + f = open(os.path.join(genpath, "%s.py" % t), 'w') + out = ["# Automatically generated by pb2py"] + out + + data = "\n".join(out) + "\n" + + f.write(data) + f.close() + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('modulename', type=str, help="Name of module to generate") + parser.add_argument('genpath', type=str, help="Directory for generated source code") + parser.add_argument('-i', '--indexfile', type=str, help="[optional] Generate index file of wire types") + parser.add_argument('-l', '--modlist', type=str, help="[optional] Generate list of modules") + parser.add_argument('-p', '--protopath', type=str, help="[optional] Path to search for pregenerated Google's python sources") + parser.add_argument('-m', '--micropython', action='store_true', help="Use micropython-favoured source code") + args = parser.parse_args() + + if args.indexfile: + indexfile = open(args.indexfile, 'a') + else: + indexfile = None + + if args.modlist: + modlist = open(args.modlist, 'a') + else: + modlist = None + + if args.protopath: + sys.path.append(args.protopath) + + # Dynamically load module from argv[1] + tmp = __import__('pb2', globals(), locals(), ['%s_pb2' % args.modulename]) + mod = getattr(tmp, "%s_pb2" % args.modulename) + + process_module(mod, args.genpath, indexfile, modlist, args.micropython) diff --git a/trezorctl b/trezorctl index fcd7bc2..6ac68ef 100755 --- a/trezorctl +++ b/trezorctl @@ -28,7 +28,8 @@ import json import sys from trezorlib.client import TrezorClient, TrezorClientVerbose, CallException -import trezorlib.types_pb2 as types +from trezorlib import messages as proto +from trezorlib import protobuf from trezorlib.coins import coins_txapi @@ -78,16 +79,12 @@ def cli(ctx, transport, path, verbose, is_json): @cli.resultcallback() def print_result(res, transport, path, verbose, is_json): if is_json: - from google.protobuf import json_format, message - if isinstance(res, message.Message): - click.echo(json_format.MessageToJson(res, preserving_proto_field_name=True)) + if issubclass(res.__class__, protobuf.MessageType): + click.echo(json.dumps({res.__class__.__name__: res.__dict__})) else: click.echo(json.dumps(res, sort_keys=True, indent=4)) else: - from google.protobuf import text_format, message - if isinstance(res, message.Message): - click.echo('%s {\n%s}' % (res.DESCRIPTOR.name, text_format.MessageToString(res, indent=4))) - elif isinstance(res, list): + if isinstance(res, list): for line in res: click.echo(line) elif isinstance(res, dict): @@ -219,7 +216,7 @@ def set_homescreen(connect, filename): from PIL import Image im = Image.open(filename) if im.size != (128, 64): - raise CallException(types.Failure_DataError, 'Wrong size of the image') + raise CallException(proto.FailureType.DataError, 'Wrong size of the image') im = im.convert('1') pix = im.load() img = bytearray(1024) @@ -257,7 +254,7 @@ def wipe_device(connect): @click.pass_obj def load_device(connect, mnemonic, expand, xprv, pin, passphrase_protection, label, ignore_checksum, slip0014): if not mnemonic and not xprv and not slip0014: - raise CallException(types.Failure_DataError, 'Please provide mnemonic or xprv') + raise CallException(proto.FailureType.DataError, 'Please provide mnemonic or xprv') client = connect() if mnemonic: @@ -298,8 +295,8 @@ def load_device(connect, mnemonic, expand, xprv, pin, passphrase_protection, lab @click.pass_obj def recovery_device(connect, words, expand, pin_protection, passphrase_protection, label, rec_type, dry_run): typemap = { - 'scrambled': types.RecoveryDeviceType_ScrambledWords, - 'matrix': types.RecoveryDeviceType_Matrix + 'scrambled': proto.RecoveryDeviceType.ScrambledWords, + 'matrix': proto.RecoveryDeviceType.Matrix } return connect().recovery_device( int(words), @@ -385,7 +382,7 @@ def firmware_update(connect, filename, url, version, skip_check): if fp[:8] == b'54525a52' or fp[:8] == b'54525a56': fp = binascii.unhexlify(fp) if fp[:4] != b'TRZR' and fp[:4] != b'TRZV': - raise CallException(types.Failure_FirmwareError, 'TREZOR firmware header expected') + raise CallException(proto.FailureType.FirmwareError, 'TREZOR firmware header expected') click.echo('Please confirm action on device...') @@ -414,9 +411,9 @@ def get_address(connect, coin, address, script_type, show_display): client = connect() address_n = client.expand_path(address) typemap = { - 'address': types.SPENDADDRESS, - 'segwit': types.SPENDWITNESS, - 'p2shsegwit': types.SPENDP2SHWITNESS, + 'address': proto.OutputScriptType.SPENDADDRESS, + 'segwit': proto.OutputScriptType.SPENDWITNESS, + 'p2shsegwit': proto.OutputScriptType.SPENDP2SHWITNESS, } script_type = typemap[script_type] return client.get_address(coin, address_n, show_display, script_type=script_type) @@ -477,7 +474,7 @@ def sign_tx(connect, coin): break prev_in_hash, prev_in_vout = prev.split(':') addrn = input("Node path to sign with (e.g.- %s/0'/0/0): " % coin).strip() - inputs.append(types.TxInputType( + inputs.append(proto.TxInputType( prev_hash=binascii.unhexlify(prev_in_hash), prev_index=int(prev_in_vout, 10), address_n=client.expand_path(addrn) @@ -490,9 +487,9 @@ def sign_tx(connect, coin): if out_addr == '': break out_amount = input('Amount (in satoshis): ').strip() - outputs.append(types.TxOutputType( + outputs.append(proto.TxOutputType( amount=int(out_amount, 10), - script_type=types.PAYTOADDRESS, + script_type=proto.OutputScriptType.PAYTOADDRESS, address=out_addr )) @@ -523,9 +520,9 @@ def sign_message(connect, coin, address, message, script_type): client = connect() address_n = client.expand_path(address) typemap = { - 'address': types.SPENDADDRESS, - 'segwit': types.SPENDWITNESS, - 'p2shsegwit': types.SPENDP2SHWITNESS, + 'address': proto.InputScriptType.SPENDADDRESS, + 'segwit': proto.InputScriptType.SPENDWITNESS, + 'p2shsegwit': proto.InputScriptType.SPENDP2SHWITNESS, } script_type = typemap[script_type] res = client.sign_message(coin, address_n, message, script_type) @@ -693,7 +690,7 @@ def ethereum_sign_tx(connect, host, chain_id, address, value, gas_limit, gas_pri if ' ' in value: value, unit = value.split(' ', 1) if unit.lower() not in ether_units: - raise CallException(types.Failure_DataError, 'Unrecognized ether unit %r' % unit) + raise CallException(proto.Failure_DataError, 'Unrecognized ether unit %r' % unit) value = int(value) * ether_units[unit.lower()] else: value = int(value) @@ -702,7 +699,7 @@ def ethereum_sign_tx(connect, host, chain_id, address, value, gas_limit, gas_pri if ' ' in gas_price: gas_price, unit = gas_price.split(' ', 1) if unit.lower() not in ether_units: - raise CallException(types.Failure_DataError, 'Unrecognized gas price unit %r' % unit) + raise CallException(proto.Failure_DataError, 'Unrecognized gas price unit %r' % unit) gas_price = int(gas_price) * ether_units[unit.lower()] else: gas_price = int(gas_price) diff --git a/trezorlib/ckd_public.py b/trezorlib/ckd_public.py index 2325fab..1aee54e 100644 --- a/trezorlib/ckd_public.py +++ b/trezorlib/ckd_public.py @@ -28,7 +28,7 @@ from ecdsa.curves import SECP256k1 from ecdsa.ellipticcurve import Point, INFINITY from . import tools -from . import types_pb2 as proto_types +from . import messages as proto PRIME_DERIVATION_FLAG = 0x80000000 @@ -83,7 +83,7 @@ def public_ckd(public_node, n): if not isinstance(n, list): raise ValueError('Parameter must be a list') - node = proto_types.HDNodeType() + node = proto.HDNodeType() node.CopyFrom(public_node) for i in n: @@ -105,7 +105,7 @@ def get_subnode(node, i): I64 = hmac.HMAC(key=node.chain_code, msg=data, digestmod=hashlib.sha512).digest() I_left_as_exponent = string_to_number(I64[:32]) - node_out = proto_types.HDNodeType() + node_out = proto.HDNodeType() node_out.depth = node.depth + 1 node_out.child_num = i node_out.chain_code = I64[32:] @@ -145,7 +145,7 @@ def deserialize(xpub): if tools.Hash(data[:-4])[:4] != data[-4:]: raise ValueError("Checksum failed") - node = proto_types.HDNodeType() + node = proto.HDNodeType() node.depth = struct.unpack('>B', data[4:5])[0] node.fingerprint = struct.unpack('>I', data[5:9])[0] node.child_num = struct.unpack('>I', data[9:13])[0] diff --git a/trezorlib/client.py b/trezorlib/client.py index 41d2250..71ed664 100644 --- a/trezorlib/client.py +++ b/trezorlib/client.py @@ -30,10 +30,8 @@ import getpass from mnemonic import Mnemonic +from . import messages as proto from . import tools -# from . import mapping -from . import messages_pb2 as proto -from . import types_pb2 as types from .coins import coins_slip44 from .debuglink import DebugLink @@ -54,9 +52,6 @@ SCREENSHOT = False DEFAULT_CURVE = 'secp256k1' -# monkeypatching: text formatting of protobuf messages -tools.monkeypatch_google_protobuf_text_format() - def getch(): try: @@ -85,17 +80,12 @@ def getch(): def get_buttonrequest_value(code): # Converts integer code to its string representation of ButtonRequestType - return [k for k, v in types.ButtonRequestType.items() if v == code][0] + return [k for k in dir(proto.ButtonRequestType) if getattr(proto.ButtonRequestType, k) == code][0] def pprint(msg): msg_class = msg.__class__.__name__ msg_size = msg.ByteSize() - """ - msg_ser = msg.SerializeToString() - msg_id = mapping.get_type(msg) - msg_json = json_format.MessageToDict(msg, preserving_proto_field_name=True) - """ if isinstance(msg, proto.FirmwareUpload) or isinstance(msg, proto.SelfTest): return "<%s> (%d bytes):\n" % (msg_class, msg_size) else: @@ -128,7 +118,6 @@ class field(object): def __call__(self, f): def wrapped_f(*args, **kwargs): ret = f(*args, **kwargs) - ret.HasField(self.field) return getattr(ret, self.field) return wrapped_f @@ -209,8 +198,8 @@ class BaseClient(object): return resp def callback_Failure(self, msg): - if msg.code in (types.Failure_PinInvalid, - types.Failure_PinCancelled, types.Failure_PinExpected): + if msg.code in (proto.FailureType.PinInvalid, + proto.FailureType.PinCancelled, proto.FailureType.PinExpected): raise PinException(msg.code, msg.message) raise CallException(msg.code, msg.message) @@ -255,18 +244,18 @@ class TextUIMixin(object): return proto.WordAck(word='\x08') # ignore middle column if only 6 keys requested. - if msg.type == types.WordRequestType_Matrix6 and character in ('2', '5', '8'): + if msg.type == proto.WordRequestType_Matrix6 and character in ('2', '5', '8'): continue if character.isdigit(): return proto.WordAck(word=character) def callback_PinMatrixRequest(self, msg): - if msg.type == types.PinMatrixRequestType_Current: + if msg.type == proto.PinMatrixRequestType_Current: desc = 'current PIN' - elif msg.type == types.PinMatrixRequestType_NewFirst: + elif msg.type == proto.PinMatrixRequestType_NewFirst: desc = 'new PIN' - elif msg.type == types.PinMatrixRequestType_NewSecond: + elif msg.type == proto.PinMatrixRequestType_NewSecond: desc = 'new PIN again' else: desc = 'PIN' @@ -293,8 +282,8 @@ class TextUIMixin(object): exit() def callback_WordRequest(self, msg): - if msg.type in (types.WordRequestType_Matrix9, - types.WordRequestType_Matrix6): + if msg.type in (proto.WordRequestType_Matrix9, + proto.WordRequestType_Matrix6): return self.callback_RecoveryMatrix(msg) log("Enter one word of mnemonic: ") word = input() @@ -401,17 +390,17 @@ class DebugLinkMixin(object): try: expected = self.expected_responses.pop(0) except IndexError: - raise CallException(types.Failure_UnexpectedMessage, + raise CallException(proto.FailureType.UnexpectedMessage, "Got %s, but no message has been expected" % pprint(msg)) if msg.__class__ != expected.__class__: - raise CallException(types.Failure_UnexpectedMessage, + raise CallException(proto.FailureType.UnexpectedMessage, "Expected %s, got %s" % (pprint(expected), pprint(msg))) - fields = expected.ListFields() # only filled (including extensions) - for field, value in fields: - if not msg.HasField(field.name) or getattr(msg, field.name) != value: - raise CallException(types.Failure_UnexpectedMessage, + for field, value in expected.__dict__.items(): + print("EXPECTED", getattr(expected, field), getattr(msg, field), field, value) + if getattr(expected, field) != value: + raise CallException(proto.FailureType.UnexpectedMessage, "Expected %s, got %s" % (pprint(expected), pprint(msg))) def callback_ButtonRequest(self, msg): @@ -513,7 +502,7 @@ class ProtocolMixin(object): @field('address') @expect(proto.Address) - def get_address(self, coin_name, n, show_display=False, multisig=None, script_type=types.SPENDADDRESS): + def get_address(self, coin_name, n, show_display=False, multisig=None, script_type=proto.InputScriptType.SPENDADDRESS): n = self._convert_prime(n) if multisig: return self.call(proto.GetAddress(address_n=n, coin_name=coin_name, show_display=show_display, multisig=multisig, script_type=script_type)) @@ -556,7 +545,7 @@ class ProtocolMixin(object): response = self.call(msg) - while response.HasField('data_length'): + while response.data_length is not None: data_length = response.data_length data, chunk = data[data_length:], data[:data_length] response = self.call(proto.EthereumTxAck(data_chunk=chunk)) @@ -635,7 +624,7 @@ class ProtocolMixin(object): return ret @expect(proto.MessageSignature) - def sign_message(self, coin_name, n, message, script_type=types.SPENDADDRESS): + def sign_message(self, coin_name, n, message, script_type=proto.InputScriptType.SPENDADDRESS): n = self._convert_prime(n) # Convert message to UTF8 NFC (seems to be a bitcoin-qt standard) message = normalize_nfc(message).encode("utf-8") @@ -675,16 +664,20 @@ class ProtocolMixin(object): def nem_sign_tx(self, n, transaction): n = self._convert_prime(n) - def common_to_proto(common, msg): + def common_to_proto(common): + msg = proto.NEMTransactionCommon() msg.network = (common["version"] >> 24) & 0xFF msg.timestamp = common["timeStamp"] msg.fee = common["fee"] msg.deadline = common["deadline"] - if "signer" in common: + if "signed" in common: msg.signer = binascii.unhexlify(common["signer"]) - def transfer_to_proto(transfer, msg): + return msg + + def transfer_to_proto(transfer): + msg = proto.NEMTransfer() msg.recipient = transfer["recipient"] msg.amount = transfer["amount"] @@ -695,14 +688,15 @@ class ProtocolMixin(object): msg.public_key = binascii.unhexlify(transfer["message"]["publicKey"]) if "mosaics" in transfer: - msg.mosaics.extend(types.NEMMosaic( + msg._extend_mosaics(proto.NEMMosaic( namespace=mosaic["mosaicId"]["namespaceId"], mosaic=mosaic["mosaicId"]["name"], quantity=mosaic["quantity"], ) for mosaic in transfer["mosaics"]) + return msg def aggregate_modification_to_proto(aggregate_modification, msg): - msg.modifications.extend(types.NEMCosignatoryModification( + msg._extend_modifications(proto.NEMCosignatoryModification( type=modification["modificationType"], public_key=binascii.unhexlify(modification["cosignatoryAccount"]), ) for modification in aggregate_modification["modifications"]) @@ -719,7 +713,8 @@ class ProtocolMixin(object): msg.sink = provision_namespace["rentalFeeSink"] msg.fee = provision_namespace["rentalFee"] - def mosaic_creation_to_proto(mosaic_creation, msg): + def mosaic_creation_to_proto(mosaic_creation): + msg = proto.NEMMosaicCreation() msg.definition.namespace = mosaic_creation["mosaicDefinition"]["id"]["namespaceId"] msg.definition.mosaic = mosaic_creation["mosaicDefinition"]["id"]["name"] @@ -747,36 +742,38 @@ class ProtocolMixin(object): msg.sink = mosaic_creation["creationFeeSink"] msg.fee = mosaic_creation["creationFee"] + return msg - def mosaic_supply_change_to_proto(mosaic_supply_change, msg): + def mosaic_supply_change_to_proto(mosaic_supply_change): + msg = proto.NEMMosaicSupplyChange() msg.namespace = mosaic_supply_change["mosaicId"]["namespaceId"] msg.mosaic = mosaic_supply_change["mosaicId"]["name"] msg.type = mosaic_supply_change["supplyType"] msg.delta = mosaic_supply_change["delta"] + return msg msg = proto.NEMSignTx() - common_to_proto(transaction, msg.transaction) - msg.transaction.address_n.extend(n) - + msg.transaction = common_to_proto(transaction) + msg.transaction._extend_address_n(n) msg.cosigning = (transaction["type"] == 0x1002) if msg.cosigning or transaction["type"] == 0x1004: transaction = transaction["otherTrans"] - common_to_proto(transaction, msg.multisig) + msg.multisig = common_to_proto(transaction) elif "otherTrans" in transaction: raise CallException("Transaction does not support inner transaction") if transaction["type"] == 0x0101: - transfer_to_proto(transaction, msg.transfer) + msg.transfer = transfer_to_proto(transaction) elif transaction["type"] == 0x1001: aggregate_modification_to_proto(transaction, msg.aggregate_modification) elif transaction["type"] == 0x2001: provision_namespace_to_proto(transaction, msg.provision_namespace) elif transaction["type"] == 0x4001: - mosaic_creation_to_proto(transaction, msg.mosaic_creation) + msg = mosaic_creation_to_proto(transaction) elif transaction["type"] == 0x4002: - mosaic_supply_change_to_proto(transaction, msg.mosaic_supply_change) + msg.mosaic_supply_change = mosaic_supply_change_to_proto(transaction) else: raise CallException("Unknown transaction type") @@ -830,37 +827,14 @@ class ProtocolMixin(object): ask_on_decrypt=ask_on_decrypt, iv=iv)) - def _prepare_simple_sign_tx(self, coin_name, inputs, outputs): - msg = proto.SimpleSignTx() - msg.coin_name = coin_name - msg.inputs.extend(inputs) - msg.outputs.extend(outputs) - - known_hashes = [] - for inp in inputs: - if inp.prev_hash in known_hashes: - continue - - tx = msg.transactions.add() - if self.tx_api: - tx.CopyFrom(self.tx_api.get_tx(binascii.hexlify(inp.prev_hash).decode('utf-8'))) - else: - raise RuntimeError('TX_API not defined') - known_hashes.append(inp.prev_hash) - - return msg - - def simple_sign_tx(self, coin_name, inputs, outputs): - msg = self._prepare_simple_sign_tx(coin_name, inputs, outputs) - return self.call(msg).serialized.serialized_tx - def _prepare_sign_tx(self, coin_name, inputs, outputs): - tx = types.TransactionType() - tx.inputs.extend(inputs) - tx.outputs.extend(outputs) + tx = proto.TransactionType() + tx._extend_inputs(inputs) + tx._extend_outputs(outputs) + tx._fill_missing() txes = {} - txes[b''] = tx + txes[None] = tx known_hashes = [] for inp in inputs: @@ -869,6 +843,7 @@ class ProtocolMixin(object): if self.tx_api: txes[inp.prev_hash] = self.tx_api.get_tx(binascii.hexlify(inp.prev_hash).decode('utf-8')) + txes[inp.prev_hash]._fill_missing() else: raise RuntimeError('TX_API not defined') known_hashes.append(inp.prev_hash) @@ -907,24 +882,27 @@ class ProtocolMixin(object): raise CallException("Unexpected message") # If there's some part of signed transaction, let's add it - if res.HasField('serialized') and res.serialized.HasField('serialized_tx'): + if res.serialized and res.serialized.serialized_tx: log("RECEIVED PART OF SERIALIZED TX (%d BYTES)" % len(res.serialized.serialized_tx)) serialized_tx += res.serialized.serialized_tx - if res.HasField('serialized') and res.serialized.HasField('signature_index'): + if res.serialized and res.serialized.signature_index is not None: if signatures[res.serialized.signature_index] is not None: raise ValueError("Signature for index %d already filled" % res.serialized.signature_index) signatures[res.serialized.signature_index] = res.serialized.signature - if res.request_type == types.TXFINISHED: + if res.request_type == proto.RequestType.TXFINISHED: # Device didn't ask for more information, finish workflow break # Device asked for one more information, let's process it. - current_tx = txes[res.details.tx_hash] + if not res.details.tx_hash: + current_tx = txes[None] + else: + current_tx = txes[bytes(res.details.tx_hash)] - if res.request_type == types.TXMETA: - msg = types.TransactionType() + if res.request_type == proto.RequestType.TXMETA: + msg = proto.TransactionType() msg.version = current_tx.version msg.lock_time = current_tx.lock_time msg.inputs_cnt = len(current_tx.inputs) @@ -932,13 +910,13 @@ class ProtocolMixin(object): msg.outputs_cnt = len(current_tx.bin_outputs) else: msg.outputs_cnt = len(current_tx.outputs) - msg.extra_data_len = len(current_tx.extra_data) + msg.extra_data_len = len(current_tx.extra_data) if current_tx.extra_data else 0 res = self.call(proto.TxAck(tx=msg)) continue - elif res.request_type == types.TXINPUT: - msg = types.TransactionType() - msg.inputs.extend([current_tx.inputs[res.details.request_index], ]) + elif res.request_type == proto.RequestType.TXINPUT: + msg = proto.TransactionType() + msg._extend_inputs([current_tx.inputs[res.details.request_index], ]) if debug_processor is not None: # If debug_processor function is provided, # pass thru it the request and prepared response. @@ -948,12 +926,12 @@ class ProtocolMixin(object): res = self.call(proto.TxAck(tx=msg)) continue - elif res.request_type == types.TXOUTPUT: - msg = types.TransactionType() + elif res.request_type == proto.RequestType.TXOUTPUT: + msg = proto.TransactionType() if res.details.tx_hash: - msg.bin_outputs.extend([current_tx.bin_outputs[res.details.request_index], ]) + msg._extend_bin_outputs([current_tx.bin_outputs[res.details.request_index], ]) else: - msg.outputs.extend([current_tx.outputs[res.details.request_index], ]) + msg._extend_outputs([current_tx.outputs[res.details.request_index], ]) if debug_processor is not None: # If debug_processor function is provided, @@ -964,9 +942,9 @@ class ProtocolMixin(object): res = self.call(proto.TxAck(tx=msg)) continue - elif res.request_type == types.TXEXTRADATA: + elif res.request_type == proto.RequestType.TXEXTRADATA: o, l = res.details.extra_data_offset, res.details.extra_data_len - msg = types.TransactionType() + msg = proto.TransactionType() msg.extra_data = current_tx.extra_data[o:o + l] res = self.call(proto.TxAck(tx=msg)) continue @@ -988,7 +966,7 @@ class ProtocolMixin(object): @field('message') @expect(proto.Success) - def recovery_device(self, word_count, passphrase_protection, pin_protection, label, language, type=types.RecoveryDeviceType_ScrambledWords, expand=False, dry_run=False): + def recovery_device(self, word_count, passphrase_protection, pin_protection, label, language, type=proto.RecoveryDeviceType.ScrambledWords, expand=False, dry_run=False): if self.features.initialized and not dry_run: raise RuntimeError("Device is initialized already. Call wipe_device() and try again.") @@ -1088,7 +1066,7 @@ class ProtocolMixin(object): if len(xprv) < 100 and len(xprv) > 112: raise ValueError("Invalid length of xprv") - node = types.HDNodeType() + node = proto.HDNodeType() data = binascii.hexlify(tools.b58decode(xprv, None)) if data[90:92] != b'00': @@ -1128,7 +1106,7 @@ class ProtocolMixin(object): data = fp.read() resp = self.call(proto.FirmwareErase(length=len(data))) - if isinstance(resp, proto.Failure) and resp.code == types.Failure_FirmwareError: + if isinstance(resp, proto.Failure) and resp.code == proto.FailureType.FirmwareError: return False # TREZORv1 method @@ -1138,7 +1116,7 @@ class ProtocolMixin(object): resp = self.call(proto.FirmwareUpload(payload=data)) if isinstance(resp, proto.Success): return True - elif isinstance(resp, proto.Failure) and resp.code == types.Failure_FirmwareError: + elif isinstance(resp, proto.Failure) and resp.code == proto.FailureType.FirmwareError: return False raise RuntimeError("Unexpected result %s" % resp) @@ -1153,7 +1131,7 @@ class ProtocolMixin(object): continue elif isinstance(resp, proto.Success): return True - elif isinstance(resp, proto.Failure) and resp.code == types.Failure_FirmwareError: + elif isinstance(resp, proto.Failure) and resp.code == proto.FailureType.FirmwareError: return False raise RuntimeError("Unexpected result %s" % resp) diff --git a/trezorlib/debuglink.py b/trezorlib/debuglink.py index 1e06985..fc0c3f5 100644 --- a/trezorlib/debuglink.py +++ b/trezorlib/debuglink.py @@ -18,7 +18,7 @@ from __future__ import print_function -from . import messages_pb2 as proto +from . import messages as proto def pin_info(pin): diff --git a/trezorlib/mapping.py b/trezorlib/mapping.py index d8cf8a8..96b538a 100644 --- a/trezorlib/mapping.py +++ b/trezorlib/mapping.py @@ -2,6 +2,7 @@ # # Copyright (C) 2012-2016 Marek Palatinus # Copyright (C) 2012-2016 Pavol Rusnak +# Copyright (C) 2016 Jochen Hoenicke # # This library is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by @@ -16,19 +17,28 @@ # You should have received a copy of the GNU Lesser General Public License # along with this library. If not, see . -from . import messages_pb2 as proto +from . import messages +from . import protobuf map_type_to_class = {} map_class_to_type = {} def build_map(): - for msg_type, i in proto.MessageType.items(): - msg_name = msg_type.replace('MessageType_', '') - msg_class = getattr(proto, msg_name) + for msg_name in dir(messages.MessageType): + if msg_name.startswith('__'): + continue - map_type_to_class[i] = msg_class - map_class_to_type[msg_class] = i + try: + msg_class = getattr(messages, msg_name) + except AttributeError: + raise + raise ValueError("Implementation of protobuf message '%s' is missing" % msg_name) + + wire_type = getattr(messages.MessageType, msg_name) + + map_type_to_class[wire_type] = msg_class + map_class_to_type[msg_class] = wire_type def get_type(msg): @@ -39,17 +49,4 @@ def get_class(t): return map_type_to_class[t] -def check_missing(): - from google.protobuf import reflection - - types = [getattr(proto, item) for item in dir(proto) - if issubclass(getattr(proto, item).__class__, reflection.GeneratedProtocolMessageType)] - - missing = list(set(types) - set(map_type_to_class.values())) - - if len(missing): - raise ValueError("Following protobuf messages are not defined in mapping: %s" % missing) - - build_map() -check_missing() diff --git a/trezorlib/messages/Address.py b/trezorlib/messages/Address.py new file mode 100644 index 0000000..ea6e18c --- /dev/null +++ b/trezorlib/messages/Address.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class Address(p.MessageType): + FIELDS = { + 1: ('address', p.UnicodeType, 0), # required + } + MESSAGE_WIRE_TYPE = 30 diff --git a/trezorlib/messages/ApplyFlags.py b/trezorlib/messages/ApplyFlags.py new file mode 100644 index 0000000..2055f9a --- /dev/null +++ b/trezorlib/messages/ApplyFlags.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class ApplyFlags(p.MessageType): + FIELDS = { + 1: ('flags', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 28 diff --git a/trezorlib/messages/ApplySettings.py b/trezorlib/messages/ApplySettings.py new file mode 100644 index 0000000..635af0b --- /dev/null +++ b/trezorlib/messages/ApplySettings.py @@ -0,0 +1,13 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class ApplySettings(p.MessageType): + FIELDS = { + 1: ('language', p.UnicodeType, 0), + 2: ('label', p.UnicodeType, 0), + 3: ('use_passphrase', p.BoolType, 0), + 4: ('homescreen', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 25 diff --git a/trezorlib/messages/BackupDevice.py b/trezorlib/messages/BackupDevice.py new file mode 100644 index 0000000..93ae5de --- /dev/null +++ b/trezorlib/messages/BackupDevice.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class BackupDevice(p.MessageType): + MESSAGE_WIRE_TYPE = 34 diff --git a/trezorlib/messages/ButtonAck.py b/trezorlib/messages/ButtonAck.py new file mode 100644 index 0000000..106128c --- /dev/null +++ b/trezorlib/messages/ButtonAck.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class ButtonAck(p.MessageType): + MESSAGE_WIRE_TYPE = 27 diff --git a/trezorlib/messages/ButtonRequest.py b/trezorlib/messages/ButtonRequest.py new file mode 100644 index 0000000..4755003 --- /dev/null +++ b/trezorlib/messages/ButtonRequest.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class ButtonRequest(p.MessageType): + FIELDS = { + 1: ('code', p.UVarintType, 0), + 2: ('data', p.UnicodeType, 0), + } + MESSAGE_WIRE_TYPE = 26 diff --git a/trezorlib/messages/ButtonRequestType.py b/trezorlib/messages/ButtonRequestType.py new file mode 100644 index 0000000..f01890d --- /dev/null +++ b/trezorlib/messages/ButtonRequestType.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +Other = 1 +FeeOverThreshold = 2 +ConfirmOutput = 3 +ResetDevice = 4 +ConfirmWord = 5 +WipeDevice = 6 +ProtectCall = 7 +SignTx = 8 +FirmwareCheck = 9 +Address = 10 +PublicKey = 11 diff --git a/trezorlib/messages/Cancel.py b/trezorlib/messages/Cancel.py new file mode 100644 index 0000000..1d4b0e9 --- /dev/null +++ b/trezorlib/messages/Cancel.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class Cancel(p.MessageType): + MESSAGE_WIRE_TYPE = 20 diff --git a/trezorlib/messages/ChangePin.py b/trezorlib/messages/ChangePin.py new file mode 100644 index 0000000..6be3343 --- /dev/null +++ b/trezorlib/messages/ChangePin.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class ChangePin(p.MessageType): + FIELDS = { + 1: ('remove', p.BoolType, 0), + } + MESSAGE_WIRE_TYPE = 4 diff --git a/trezorlib/messages/CipherKeyValue.py b/trezorlib/messages/CipherKeyValue.py new file mode 100644 index 0000000..f32f26f --- /dev/null +++ b/trezorlib/messages/CipherKeyValue.py @@ -0,0 +1,16 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class CipherKeyValue(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('key', p.UnicodeType, 0), + 3: ('value', p.BytesType, 0), + 4: ('encrypt', p.BoolType, 0), + 5: ('ask_on_encrypt', p.BoolType, 0), + 6: ('ask_on_decrypt', p.BoolType, 0), + 7: ('iv', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 23 diff --git a/trezorlib/messages/CipheredKeyValue.py b/trezorlib/messages/CipheredKeyValue.py new file mode 100644 index 0000000..5b9f0d4 --- /dev/null +++ b/trezorlib/messages/CipheredKeyValue.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class CipheredKeyValue(p.MessageType): + FIELDS = { + 1: ('value', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 48 diff --git a/trezorlib/messages/ClearSession.py b/trezorlib/messages/ClearSession.py new file mode 100644 index 0000000..33ff5fb --- /dev/null +++ b/trezorlib/messages/ClearSession.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class ClearSession(p.MessageType): + MESSAGE_WIRE_TYPE = 24 diff --git a/trezorlib/messages/CoinType.py b/trezorlib/messages/CoinType.py new file mode 100644 index 0000000..9e225d2 --- /dev/null +++ b/trezorlib/messages/CoinType.py @@ -0,0 +1,19 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class CoinType(p.MessageType): + FIELDS = { + 1: ('coin_name', p.UnicodeType, 0), + 2: ('coin_shortcut', p.UnicodeType, 0), + 3: ('address_type', p.UVarintType, 0), # default=0 + 4: ('maxfee_kb', p.UVarintType, 0), + 5: ('address_type_p2sh', p.UVarintType, 0), # default=5 + 8: ('signed_message_header', p.UnicodeType, 0), + 9: ('xpub_magic', p.UVarintType, 0), # default=76067358 + 10: ('xprv_magic', p.UVarintType, 0), # default=76066276 + 11: ('segwit', p.BoolType, 0), + 12: ('forkid', p.UVarintType, 0), + 13: ('force_bip143', p.BoolType, 0), + } diff --git a/trezorlib/messages/CosiCommit.py b/trezorlib/messages/CosiCommit.py new file mode 100644 index 0000000..77f0234 --- /dev/null +++ b/trezorlib/messages/CosiCommit.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class CosiCommit(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('data', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 71 diff --git a/trezorlib/messages/CosiCommitment.py b/trezorlib/messages/CosiCommitment.py new file mode 100644 index 0000000..26ae7b9 --- /dev/null +++ b/trezorlib/messages/CosiCommitment.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class CosiCommitment(p.MessageType): + FIELDS = { + 1: ('commitment', p.BytesType, 0), + 2: ('pubkey', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 72 diff --git a/trezorlib/messages/CosiSign.py b/trezorlib/messages/CosiSign.py new file mode 100644 index 0000000..2215af6 --- /dev/null +++ b/trezorlib/messages/CosiSign.py @@ -0,0 +1,13 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class CosiSign(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('data', p.BytesType, 0), + 3: ('global_commitment', p.BytesType, 0), + 4: ('global_pubkey', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 73 diff --git a/trezorlib/messages/CosiSignature.py b/trezorlib/messages/CosiSignature.py new file mode 100644 index 0000000..1fcddd7 --- /dev/null +++ b/trezorlib/messages/CosiSignature.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class CosiSignature(p.MessageType): + FIELDS = { + 1: ('signature', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 74 diff --git a/trezorlib/messages/DebugLinkDecision.py b/trezorlib/messages/DebugLinkDecision.py new file mode 100644 index 0000000..4cd92c2 --- /dev/null +++ b/trezorlib/messages/DebugLinkDecision.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class DebugLinkDecision(p.MessageType): + FIELDS = { + 1: ('yes_no', p.BoolType, 0), # required + } + MESSAGE_WIRE_TYPE = 100 diff --git a/trezorlib/messages/DebugLinkFlashErase.py b/trezorlib/messages/DebugLinkFlashErase.py new file mode 100644 index 0000000..ef937af --- /dev/null +++ b/trezorlib/messages/DebugLinkFlashErase.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class DebugLinkFlashErase(p.MessageType): + FIELDS = { + 1: ('sector', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 113 diff --git a/trezorlib/messages/DebugLinkGetState.py b/trezorlib/messages/DebugLinkGetState.py new file mode 100644 index 0000000..9b19460 --- /dev/null +++ b/trezorlib/messages/DebugLinkGetState.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class DebugLinkGetState(p.MessageType): + MESSAGE_WIRE_TYPE = 101 diff --git a/trezorlib/messages/DebugLinkLog.py b/trezorlib/messages/DebugLinkLog.py new file mode 100644 index 0000000..7ca0a8c --- /dev/null +++ b/trezorlib/messages/DebugLinkLog.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class DebugLinkLog(p.MessageType): + FIELDS = { + 1: ('level', p.UVarintType, 0), + 2: ('bucket', p.UnicodeType, 0), + 3: ('text', p.UnicodeType, 0), + } + MESSAGE_WIRE_TYPE = 104 diff --git a/trezorlib/messages/DebugLinkMemory.py b/trezorlib/messages/DebugLinkMemory.py new file mode 100644 index 0000000..5fbc093 --- /dev/null +++ b/trezorlib/messages/DebugLinkMemory.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class DebugLinkMemory(p.MessageType): + FIELDS = { + 1: ('memory', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 111 diff --git a/trezorlib/messages/DebugLinkMemoryRead.py b/trezorlib/messages/DebugLinkMemoryRead.py new file mode 100644 index 0000000..c6d4a49 --- /dev/null +++ b/trezorlib/messages/DebugLinkMemoryRead.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class DebugLinkMemoryRead(p.MessageType): + FIELDS = { + 1: ('address', p.UVarintType, 0), + 2: ('length', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 110 diff --git a/trezorlib/messages/DebugLinkMemoryWrite.py b/trezorlib/messages/DebugLinkMemoryWrite.py new file mode 100644 index 0000000..92cbe30 --- /dev/null +++ b/trezorlib/messages/DebugLinkMemoryWrite.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class DebugLinkMemoryWrite(p.MessageType): + FIELDS = { + 1: ('address', p.UVarintType, 0), + 2: ('memory', p.BytesType, 0), + 3: ('flash', p.BoolType, 0), + } + MESSAGE_WIRE_TYPE = 112 diff --git a/trezorlib/messages/DebugLinkState.py b/trezorlib/messages/DebugLinkState.py new file mode 100644 index 0000000..4ac2e07 --- /dev/null +++ b/trezorlib/messages/DebugLinkState.py @@ -0,0 +1,20 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .HDNodeType import HDNodeType + + +class DebugLinkState(p.MessageType): + FIELDS = { + 1: ('layout', p.BytesType, 0), + 2: ('pin', p.UnicodeType, 0), + 3: ('matrix', p.UnicodeType, 0), + 4: ('mnemonic', p.UnicodeType, 0), + 5: ('node', HDNodeType, 0), + 6: ('passphrase_protection', p.BoolType, 0), + 7: ('reset_word', p.UnicodeType, 0), + 8: ('reset_entropy', p.BytesType, 0), + 9: ('recovery_fake_word', p.UnicodeType, 0), + 10: ('recovery_word_pos', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 102 diff --git a/trezorlib/messages/DebugLinkStop.py b/trezorlib/messages/DebugLinkStop.py new file mode 100644 index 0000000..46baffd --- /dev/null +++ b/trezorlib/messages/DebugLinkStop.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class DebugLinkStop(p.MessageType): + MESSAGE_WIRE_TYPE = 103 diff --git a/trezorlib/messages/DecryptMessage.py b/trezorlib/messages/DecryptMessage.py new file mode 100644 index 0000000..0158c5c --- /dev/null +++ b/trezorlib/messages/DecryptMessage.py @@ -0,0 +1,13 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class DecryptMessage(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('nonce', p.BytesType, 0), + 3: ('message', p.BytesType, 0), + 4: ('hmac', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 51 diff --git a/trezorlib/messages/DecryptedMessage.py b/trezorlib/messages/DecryptedMessage.py new file mode 100644 index 0000000..4beb097 --- /dev/null +++ b/trezorlib/messages/DecryptedMessage.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class DecryptedMessage(p.MessageType): + FIELDS = { + 1: ('message', p.BytesType, 0), + 2: ('address', p.UnicodeType, 0), + } + MESSAGE_WIRE_TYPE = 52 diff --git a/trezorlib/messages/ECDHSessionKey.py b/trezorlib/messages/ECDHSessionKey.py new file mode 100644 index 0000000..ef9f1cb --- /dev/null +++ b/trezorlib/messages/ECDHSessionKey.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class ECDHSessionKey(p.MessageType): + FIELDS = { + 1: ('session_key', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 62 diff --git a/trezorlib/messages/EncryptMessage.py b/trezorlib/messages/EncryptMessage.py new file mode 100644 index 0000000..b1c2822 --- /dev/null +++ b/trezorlib/messages/EncryptMessage.py @@ -0,0 +1,14 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EncryptMessage(p.MessageType): + FIELDS = { + 1: ('pubkey', p.BytesType, 0), + 2: ('message', p.BytesType, 0), + 3: ('display_only', p.BoolType, 0), + 4: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 5: ('coin_name', p.UnicodeType, 0), # default='Bitcoin' + } + MESSAGE_WIRE_TYPE = 49 diff --git a/trezorlib/messages/EncryptedMessage.py b/trezorlib/messages/EncryptedMessage.py new file mode 100644 index 0000000..214d780 --- /dev/null +++ b/trezorlib/messages/EncryptedMessage.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EncryptedMessage(p.MessageType): + FIELDS = { + 1: ('nonce', p.BytesType, 0), + 2: ('message', p.BytesType, 0), + 3: ('hmac', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 50 diff --git a/trezorlib/messages/Entropy.py b/trezorlib/messages/Entropy.py new file mode 100644 index 0000000..3fa4396 --- /dev/null +++ b/trezorlib/messages/Entropy.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class Entropy(p.MessageType): + FIELDS = { + 1: ('entropy', p.BytesType, 0), # required + } + MESSAGE_WIRE_TYPE = 10 diff --git a/trezorlib/messages/EntropyAck.py b/trezorlib/messages/EntropyAck.py new file mode 100644 index 0000000..3c57de0 --- /dev/null +++ b/trezorlib/messages/EntropyAck.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EntropyAck(p.MessageType): + FIELDS = { + 1: ('entropy', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 36 diff --git a/trezorlib/messages/EntropyRequest.py b/trezorlib/messages/EntropyRequest.py new file mode 100644 index 0000000..99501e9 --- /dev/null +++ b/trezorlib/messages/EntropyRequest.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EntropyRequest(p.MessageType): + MESSAGE_WIRE_TYPE = 35 diff --git a/trezorlib/messages/EstimateTxSize.py b/trezorlib/messages/EstimateTxSize.py new file mode 100644 index 0000000..dbad692 --- /dev/null +++ b/trezorlib/messages/EstimateTxSize.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EstimateTxSize(p.MessageType): + FIELDS = { + 1: ('outputs_count', p.UVarintType, 0), # required + 2: ('inputs_count', p.UVarintType, 0), # required + 3: ('coin_name', p.UnicodeType, 0), # default='Bitcoin' + } + MESSAGE_WIRE_TYPE = 43 diff --git a/trezorlib/messages/EthereumAddress.py b/trezorlib/messages/EthereumAddress.py new file mode 100644 index 0000000..f07e5a0 --- /dev/null +++ b/trezorlib/messages/EthereumAddress.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EthereumAddress(p.MessageType): + FIELDS = { + 1: ('address', p.BytesType, 0), # required + } + MESSAGE_WIRE_TYPE = 57 diff --git a/trezorlib/messages/EthereumGetAddress.py b/trezorlib/messages/EthereumGetAddress.py new file mode 100644 index 0000000..8301c25 --- /dev/null +++ b/trezorlib/messages/EthereumGetAddress.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EthereumGetAddress(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('show_display', p.BoolType, 0), + } + MESSAGE_WIRE_TYPE = 56 diff --git a/trezorlib/messages/EthereumMessageSignature.py b/trezorlib/messages/EthereumMessageSignature.py new file mode 100644 index 0000000..69ae44d --- /dev/null +++ b/trezorlib/messages/EthereumMessageSignature.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EthereumMessageSignature(p.MessageType): + FIELDS = { + 1: ('address', p.BytesType, 0), + 2: ('signature', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 66 diff --git a/trezorlib/messages/EthereumSignMessage.py b/trezorlib/messages/EthereumSignMessage.py new file mode 100644 index 0000000..1eb63ab --- /dev/null +++ b/trezorlib/messages/EthereumSignMessage.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EthereumSignMessage(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('message', p.BytesType, 0), # required + } + MESSAGE_WIRE_TYPE = 64 diff --git a/trezorlib/messages/EthereumSignTx.py b/trezorlib/messages/EthereumSignTx.py new file mode 100644 index 0000000..e3cbc83 --- /dev/null +++ b/trezorlib/messages/EthereumSignTx.py @@ -0,0 +1,18 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EthereumSignTx(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('nonce', p.BytesType, 0), + 3: ('gas_price', p.BytesType, 0), + 4: ('gas_limit', p.BytesType, 0), + 5: ('to', p.BytesType, 0), + 6: ('value', p.BytesType, 0), + 7: ('data_initial_chunk', p.BytesType, 0), + 8: ('data_length', p.UVarintType, 0), + 9: ('chain_id', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 58 diff --git a/trezorlib/messages/EthereumTxAck.py b/trezorlib/messages/EthereumTxAck.py new file mode 100644 index 0000000..7f7db90 --- /dev/null +++ b/trezorlib/messages/EthereumTxAck.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EthereumTxAck(p.MessageType): + FIELDS = { + 1: ('data_chunk', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 60 diff --git a/trezorlib/messages/EthereumTxRequest.py b/trezorlib/messages/EthereumTxRequest.py new file mode 100644 index 0000000..9d3a328 --- /dev/null +++ b/trezorlib/messages/EthereumTxRequest.py @@ -0,0 +1,13 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EthereumTxRequest(p.MessageType): + FIELDS = { + 1: ('data_length', p.UVarintType, 0), + 2: ('signature_v', p.UVarintType, 0), + 3: ('signature_r', p.BytesType, 0), + 4: ('signature_s', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 59 diff --git a/trezorlib/messages/EthereumVerifyMessage.py b/trezorlib/messages/EthereumVerifyMessage.py new file mode 100644 index 0000000..111b6fe --- /dev/null +++ b/trezorlib/messages/EthereumVerifyMessage.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class EthereumVerifyMessage(p.MessageType): + FIELDS = { + 1: ('address', p.BytesType, 0), + 2: ('signature', p.BytesType, 0), + 3: ('message', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 65 diff --git a/trezorlib/messages/Failure.py b/trezorlib/messages/Failure.py new file mode 100644 index 0000000..5187d28 --- /dev/null +++ b/trezorlib/messages/Failure.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class Failure(p.MessageType): + FIELDS = { + 1: ('code', p.UVarintType, 0), + 2: ('message', p.UnicodeType, 0), + } + MESSAGE_WIRE_TYPE = 3 diff --git a/trezorlib/messages/FailureType.py b/trezorlib/messages/FailureType.py new file mode 100644 index 0000000..bbce5b4 --- /dev/null +++ b/trezorlib/messages/FailureType.py @@ -0,0 +1,13 @@ +# Automatically generated by pb2py +UnexpectedMessage = 1 +ButtonExpected = 2 +DataError = 3 +ActionCancelled = 4 +PinExpected = 5 +PinCancelled = 6 +PinInvalid = 7 +InvalidSignature = 8 +ProcessError = 9 +NotEnoughFunds = 10 +NotInitialized = 11 +FirmwareError = 99 diff --git a/trezorlib/messages/Features.py b/trezorlib/messages/Features.py new file mode 100644 index 0000000..9e3406f --- /dev/null +++ b/trezorlib/messages/Features.py @@ -0,0 +1,31 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .CoinType import CoinType + + +class Features(p.MessageType): + FIELDS = { + 1: ('vendor', p.UnicodeType, 0), + 2: ('major_version', p.UVarintType, 0), + 3: ('minor_version', p.UVarintType, 0), + 4: ('patch_version', p.UVarintType, 0), + 5: ('bootloader_mode', p.BoolType, 0), + 6: ('device_id', p.UnicodeType, 0), + 7: ('pin_protection', p.BoolType, 0), + 8: ('passphrase_protection', p.BoolType, 0), + 9: ('language', p.UnicodeType, 0), + 10: ('label', p.UnicodeType, 0), + 11: ('coins', CoinType, p.FLAG_REPEATED), + 12: ('initialized', p.BoolType, 0), + 13: ('revision', p.BytesType, 0), + 14: ('bootloader_hash', p.BytesType, 0), + 15: ('imported', p.BoolType, 0), + 16: ('pin_cached', p.BoolType, 0), + 17: ('passphrase_cached', p.BoolType, 0), + 18: ('firmware_present', p.BoolType, 0), + 19: ('needs_backup', p.BoolType, 0), + 20: ('flags', p.UVarintType, 0), + 21: ('model', p.UnicodeType, 0), + } + MESSAGE_WIRE_TYPE = 17 diff --git a/trezorlib/messages/FirmwareErase.py b/trezorlib/messages/FirmwareErase.py new file mode 100644 index 0000000..2cc4279 --- /dev/null +++ b/trezorlib/messages/FirmwareErase.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class FirmwareErase(p.MessageType): + FIELDS = { + 1: ('length', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 6 diff --git a/trezorlib/messages/FirmwareRequest.py b/trezorlib/messages/FirmwareRequest.py new file mode 100644 index 0000000..7792f08 --- /dev/null +++ b/trezorlib/messages/FirmwareRequest.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class FirmwareRequest(p.MessageType): + FIELDS = { + 1: ('offset', p.UVarintType, 0), + 2: ('length', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 8 diff --git a/trezorlib/messages/FirmwareUpload.py b/trezorlib/messages/FirmwareUpload.py new file mode 100644 index 0000000..1c41150 --- /dev/null +++ b/trezorlib/messages/FirmwareUpload.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class FirmwareUpload(p.MessageType): + FIELDS = { + 1: ('payload', p.BytesType, 0), # required + 2: ('hash', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 7 diff --git a/trezorlib/messages/GetAddress.py b/trezorlib/messages/GetAddress.py new file mode 100644 index 0000000..792196d --- /dev/null +++ b/trezorlib/messages/GetAddress.py @@ -0,0 +1,15 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .MultisigRedeemScriptType import MultisigRedeemScriptType + + +class GetAddress(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('coin_name', p.UnicodeType, 0), # default='Bitcoin' + 3: ('show_display', p.BoolType, 0), + 4: ('multisig', MultisigRedeemScriptType, 0), + 5: ('script_type', p.UVarintType, 0), # default=0 + } + MESSAGE_WIRE_TYPE = 29 diff --git a/trezorlib/messages/GetECDHSessionKey.py b/trezorlib/messages/GetECDHSessionKey.py new file mode 100644 index 0000000..f752caa --- /dev/null +++ b/trezorlib/messages/GetECDHSessionKey.py @@ -0,0 +1,13 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .IdentityType import IdentityType + + +class GetECDHSessionKey(p.MessageType): + FIELDS = { + 1: ('identity', IdentityType, 0), + 2: ('peer_public_key', p.BytesType, 0), + 3: ('ecdsa_curve_name', p.UnicodeType, 0), + } + MESSAGE_WIRE_TYPE = 61 diff --git a/trezorlib/messages/GetEntropy.py b/trezorlib/messages/GetEntropy.py new file mode 100644 index 0000000..724e625 --- /dev/null +++ b/trezorlib/messages/GetEntropy.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class GetEntropy(p.MessageType): + FIELDS = { + 1: ('size', p.UVarintType, 0), # required + } + MESSAGE_WIRE_TYPE = 9 diff --git a/trezorlib/messages/GetFeatures.py b/trezorlib/messages/GetFeatures.py new file mode 100644 index 0000000..ea1fbd2 --- /dev/null +++ b/trezorlib/messages/GetFeatures.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class GetFeatures(p.MessageType): + MESSAGE_WIRE_TYPE = 55 diff --git a/trezorlib/messages/GetPublicKey.py b/trezorlib/messages/GetPublicKey.py new file mode 100644 index 0000000..8a605b2 --- /dev/null +++ b/trezorlib/messages/GetPublicKey.py @@ -0,0 +1,13 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class GetPublicKey(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('ecdsa_curve_name', p.UnicodeType, 0), + 3: ('show_display', p.BoolType, 0), + 4: ('coin_name', p.UnicodeType, 0), # default='Bitcoin' + } + MESSAGE_WIRE_TYPE = 11 diff --git a/trezorlib/messages/HDNodePathType.py b/trezorlib/messages/HDNodePathType.py new file mode 100644 index 0000000..0c02c10 --- /dev/null +++ b/trezorlib/messages/HDNodePathType.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .HDNodeType import HDNodeType + + +class HDNodePathType(p.MessageType): + FIELDS = { + 1: ('node', HDNodeType, 0), # required + 2: ('address_n', p.UVarintType, p.FLAG_REPEATED), + } diff --git a/trezorlib/messages/HDNodeType.py b/trezorlib/messages/HDNodeType.py new file mode 100644 index 0000000..a86d391 --- /dev/null +++ b/trezorlib/messages/HDNodeType.py @@ -0,0 +1,14 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class HDNodeType(p.MessageType): + FIELDS = { + 1: ('depth', p.UVarintType, 0), # required + 2: ('fingerprint', p.UVarintType, 0), # required + 3: ('child_num', p.UVarintType, 0), # required + 4: ('chain_code', p.BytesType, 0), # required + 5: ('private_key', p.BytesType, 0), + 6: ('public_key', p.BytesType, 0), + } diff --git a/trezorlib/messages/IdentityType.py b/trezorlib/messages/IdentityType.py new file mode 100644 index 0000000..ac70205 --- /dev/null +++ b/trezorlib/messages/IdentityType.py @@ -0,0 +1,14 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class IdentityType(p.MessageType): + FIELDS = { + 1: ('proto', p.UnicodeType, 0), + 2: ('user', p.UnicodeType, 0), + 3: ('host', p.UnicodeType, 0), + 4: ('port', p.UnicodeType, 0), + 5: ('path', p.UnicodeType, 0), + 6: ('index', p.UVarintType, 0), # default=0 + } diff --git a/trezorlib/messages/Initialize.py b/trezorlib/messages/Initialize.py new file mode 100644 index 0000000..3c43572 --- /dev/null +++ b/trezorlib/messages/Initialize.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class Initialize(p.MessageType): + MESSAGE_WIRE_TYPE = 0 diff --git a/trezorlib/messages/InputScriptType.py b/trezorlib/messages/InputScriptType.py new file mode 100644 index 0000000..960be1e --- /dev/null +++ b/trezorlib/messages/InputScriptType.py @@ -0,0 +1,6 @@ +# Automatically generated by pb2py +SPENDADDRESS = 0 +SPENDMULTISIG = 1 +EXTERNAL = 2 +SPENDWITNESS = 3 +SPENDP2SHWITNESS = 4 diff --git a/trezorlib/messages/LoadDevice.py b/trezorlib/messages/LoadDevice.py new file mode 100644 index 0000000..2aff877 --- /dev/null +++ b/trezorlib/messages/LoadDevice.py @@ -0,0 +1,18 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .HDNodeType import HDNodeType + + +class LoadDevice(p.MessageType): + FIELDS = { + 1: ('mnemonic', p.UnicodeType, 0), + 2: ('node', HDNodeType, 0), + 3: ('pin', p.UnicodeType, 0), + 4: ('passphrase_protection', p.BoolType, 0), + 5: ('language', p.UnicodeType, 0), # default='english' + 6: ('label', p.UnicodeType, 0), + 7: ('skip_checksum', p.BoolType, 0), + 8: ('u2f_counter', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 13 diff --git a/trezorlib/messages/MessageSignature.py b/trezorlib/messages/MessageSignature.py new file mode 100644 index 0000000..a4b7dc6 --- /dev/null +++ b/trezorlib/messages/MessageSignature.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class MessageSignature(p.MessageType): + FIELDS = { + 1: ('address', p.UnicodeType, 0), + 2: ('signature', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 40 diff --git a/trezorlib/messages/MessageType.py b/trezorlib/messages/MessageType.py new file mode 100644 index 0000000..d6443df --- /dev/null +++ b/trezorlib/messages/MessageType.py @@ -0,0 +1,82 @@ +# Automatically generated by pb2py +Initialize = 0 +Ping = 1 +Success = 2 +Failure = 3 +ChangePin = 4 +WipeDevice = 5 +FirmwareErase = 6 +FirmwareUpload = 7 +FirmwareRequest = 8 +GetEntropy = 9 +Entropy = 10 +GetPublicKey = 11 +PublicKey = 12 +LoadDevice = 13 +ResetDevice = 14 +SignTx = 15 +SimpleSignTx = 16 +Features = 17 +PinMatrixRequest = 18 +PinMatrixAck = 19 +Cancel = 20 +TxRequest = 21 +TxAck = 22 +CipherKeyValue = 23 +ClearSession = 24 +ApplySettings = 25 +ButtonRequest = 26 +ButtonAck = 27 +ApplyFlags = 28 +GetAddress = 29 +Address = 30 +SelfTest = 32 +BackupDevice = 34 +EntropyRequest = 35 +EntropyAck = 36 +SignMessage = 38 +VerifyMessage = 39 +MessageSignature = 40 +PassphraseRequest = 41 +PassphraseAck = 42 +EstimateTxSize = 43 +TxSize = 44 +RecoveryDevice = 45 +WordRequest = 46 +WordAck = 47 +CipheredKeyValue = 48 +EncryptMessage = 49 +EncryptedMessage = 50 +DecryptMessage = 51 +DecryptedMessage = 52 +SignIdentity = 53 +SignedIdentity = 54 +GetFeatures = 55 +EthereumGetAddress = 56 +EthereumAddress = 57 +EthereumSignTx = 58 +EthereumTxRequest = 59 +EthereumTxAck = 60 +GetECDHSessionKey = 61 +ECDHSessionKey = 62 +SetU2FCounter = 63 +EthereumSignMessage = 64 +EthereumVerifyMessage = 65 +EthereumMessageSignature = 66 +NEMGetAddress = 67 +NEMAddress = 68 +NEMSignTx = 69 +NEMSignedTx = 70 +CosiCommit = 71 +CosiCommitment = 72 +CosiSign = 73 +CosiSignature = 74 +DebugLinkDecision = 100 +DebugLinkGetState = 101 +DebugLinkState = 102 +DebugLinkStop = 103 +DebugLinkLog = 104 +DebugLinkMemoryRead = 110 +DebugLinkMemory = 111 +DebugLinkMemoryWrite = 112 +DebugLinkFlashErase = 113 diff --git a/trezorlib/messages/MultisigRedeemScriptType.py b/trezorlib/messages/MultisigRedeemScriptType.py new file mode 100644 index 0000000..448475c --- /dev/null +++ b/trezorlib/messages/MultisigRedeemScriptType.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .HDNodePathType import HDNodePathType + + +class MultisigRedeemScriptType(p.MessageType): + FIELDS = { + 1: ('pubkeys', HDNodePathType, p.FLAG_REPEATED), + 2: ('signatures', p.BytesType, p.FLAG_REPEATED), + 3: ('m', p.UVarintType, 0), + } diff --git a/trezorlib/messages/NEMAddress.py b/trezorlib/messages/NEMAddress.py new file mode 100644 index 0000000..be2dcfa --- /dev/null +++ b/trezorlib/messages/NEMAddress.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class NEMAddress(p.MessageType): + FIELDS = { + 1: ('address', p.UnicodeType, 0), # required + } + MESSAGE_WIRE_TYPE = 68 diff --git a/trezorlib/messages/NEMAggregateModification.py b/trezorlib/messages/NEMAggregateModification.py new file mode 100644 index 0000000..5ea4be1 --- /dev/null +++ b/trezorlib/messages/NEMAggregateModification.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .NEMCosignatoryModification import NEMCosignatoryModification + + +class NEMAggregateModification(p.MessageType): + FIELDS = { + 1: ('modifications', NEMCosignatoryModification, p.FLAG_REPEATED), + 2: ('relative_change', p.Sint32Type, 0), + } diff --git a/trezorlib/messages/NEMCosignatoryModification.py b/trezorlib/messages/NEMCosignatoryModification.py new file mode 100644 index 0000000..f088fdb --- /dev/null +++ b/trezorlib/messages/NEMCosignatoryModification.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class NEMCosignatoryModification(p.MessageType): + FIELDS = { + 1: ('type', p.UVarintType, 0), + 2: ('public_key', p.BytesType, 0), + } diff --git a/trezorlib/messages/NEMGetAddress.py b/trezorlib/messages/NEMGetAddress.py new file mode 100644 index 0000000..64724f0 --- /dev/null +++ b/trezorlib/messages/NEMGetAddress.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class NEMGetAddress(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('network', p.UVarintType, 0), + 3: ('show_display', p.BoolType, 0), + } + MESSAGE_WIRE_TYPE = 67 diff --git a/trezorlib/messages/NEMImportanceTransfer.py b/trezorlib/messages/NEMImportanceTransfer.py new file mode 100644 index 0000000..9faee8b --- /dev/null +++ b/trezorlib/messages/NEMImportanceTransfer.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class NEMImportanceTransfer(p.MessageType): + FIELDS = { + 1: ('mode', p.UVarintType, 0), + 2: ('public_key', p.BytesType, 0), + } diff --git a/trezorlib/messages/NEMImportanceTransferMode.py b/trezorlib/messages/NEMImportanceTransferMode.py new file mode 100644 index 0000000..e75f62f --- /dev/null +++ b/trezorlib/messages/NEMImportanceTransferMode.py @@ -0,0 +1,3 @@ +# Automatically generated by pb2py +ImportanceTransfer_Activate = 1 +ImportanceTransfer_Deactivate = 2 diff --git a/trezorlib/messages/NEMModificationType.py b/trezorlib/messages/NEMModificationType.py new file mode 100644 index 0000000..c812172 --- /dev/null +++ b/trezorlib/messages/NEMModificationType.py @@ -0,0 +1,3 @@ +# Automatically generated by pb2py +CosignatoryModification_Add = 1 +CosignatoryModification_Delete = 2 diff --git a/trezorlib/messages/NEMMosaic.py b/trezorlib/messages/NEMMosaic.py new file mode 100644 index 0000000..4e75a88 --- /dev/null +++ b/trezorlib/messages/NEMMosaic.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class NEMMosaic(p.MessageType): + FIELDS = { + 1: ('namespace', p.UnicodeType, 0), + 2: ('mosaic', p.UnicodeType, 0), + 3: ('quantity', p.UVarintType, 0), + } diff --git a/trezorlib/messages/NEMMosaicCreation.py b/trezorlib/messages/NEMMosaicCreation.py new file mode 100644 index 0000000..bde7e10 --- /dev/null +++ b/trezorlib/messages/NEMMosaicCreation.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .NEMMosaicDefinition import NEMMosaicDefinition + + +class NEMMosaicCreation(p.MessageType): + FIELDS = { + 1: ('definition', NEMMosaicDefinition, 0), + 2: ('sink', p.UnicodeType, 0), + 3: ('fee', p.UVarintType, 0), + } diff --git a/trezorlib/messages/NEMMosaicDefinition.py b/trezorlib/messages/NEMMosaicDefinition.py new file mode 100644 index 0000000..51e8ff8 --- /dev/null +++ b/trezorlib/messages/NEMMosaicDefinition.py @@ -0,0 +1,23 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class NEMMosaicDefinition(p.MessageType): + FIELDS = { + 1: ('name', p.UnicodeType, 0), + 2: ('ticker', p.UnicodeType, 0), + 3: ('namespace', p.UnicodeType, 0), + 4: ('mosaic', p.UnicodeType, 0), + 5: ('divisibility', p.UVarintType, 0), + 6: ('levy', p.UVarintType, 0), + 7: ('fee', p.UVarintType, 0), + 8: ('levy_address', p.UnicodeType, 0), + 9: ('levy_namespace', p.UnicodeType, 0), + 10: ('levy_mosaic', p.UnicodeType, 0), + 11: ('supply', p.UVarintType, 0), + 12: ('mutable_supply', p.BoolType, 0), + 13: ('transferable', p.BoolType, 0), + 14: ('description', p.UnicodeType, 0), + 15: ('networks', p.UVarintType, p.FLAG_REPEATED), + } diff --git a/trezorlib/messages/NEMMosaicLevy.py b/trezorlib/messages/NEMMosaicLevy.py new file mode 100644 index 0000000..56ef22c --- /dev/null +++ b/trezorlib/messages/NEMMosaicLevy.py @@ -0,0 +1,3 @@ +# Automatically generated by pb2py +MosaicLevy_Absolute = 1 +MosaicLevy_Percentile = 2 diff --git a/trezorlib/messages/NEMMosaicSupplyChange.py b/trezorlib/messages/NEMMosaicSupplyChange.py new file mode 100644 index 0000000..fc60c34 --- /dev/null +++ b/trezorlib/messages/NEMMosaicSupplyChange.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class NEMMosaicSupplyChange(p.MessageType): + FIELDS = { + 1: ('namespace', p.UnicodeType, 0), + 2: ('mosaic', p.UnicodeType, 0), + 3: ('type', p.UVarintType, 0), + 4: ('delta', p.UVarintType, 0), + } diff --git a/trezorlib/messages/NEMProvisionNamespace.py b/trezorlib/messages/NEMProvisionNamespace.py new file mode 100644 index 0000000..c018692 --- /dev/null +++ b/trezorlib/messages/NEMProvisionNamespace.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class NEMProvisionNamespace(p.MessageType): + FIELDS = { + 1: ('namespace', p.UnicodeType, 0), + 2: ('parent', p.UnicodeType, 0), + 3: ('sink', p.UnicodeType, 0), + 4: ('fee', p.UVarintType, 0), + } diff --git a/trezorlib/messages/NEMSignTx.py b/trezorlib/messages/NEMSignTx.py new file mode 100644 index 0000000..bc81a07 --- /dev/null +++ b/trezorlib/messages/NEMSignTx.py @@ -0,0 +1,25 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .NEMTransfer import NEMTransfer +from .NEMMosaicCreation import NEMMosaicCreation +from .NEMProvisionNamespace import NEMProvisionNamespace +from .NEMImportanceTransfer import NEMImportanceTransfer +from .NEMAggregateModification import NEMAggregateModification +from .NEMMosaicSupplyChange import NEMMosaicSupplyChange +from .NEMTransactionCommon import NEMTransactionCommon + + +class NEMSignTx(p.MessageType): + FIELDS = { + 1: ('transaction', NEMTransactionCommon, 0), + 2: ('multisig', NEMTransactionCommon, 0), + 3: ('transfer', NEMTransfer, 0), + 4: ('cosigning', p.BoolType, 0), + 5: ('provision_namespace', NEMProvisionNamespace, 0), + 6: ('mosaic_creation', NEMMosaicCreation, 0), + 7: ('supply_change', NEMMosaicSupplyChange, 0), + 8: ('aggregate_modification', NEMAggregateModification, 0), + 9: ('importance_transfer', NEMImportanceTransfer, 0), + } + MESSAGE_WIRE_TYPE = 69 diff --git a/trezorlib/messages/NEMSignedTx.py b/trezorlib/messages/NEMSignedTx.py new file mode 100644 index 0000000..db0de72 --- /dev/null +++ b/trezorlib/messages/NEMSignedTx.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class NEMSignedTx(p.MessageType): + FIELDS = { + 1: ('data', p.BytesType, 0), + 2: ('signature', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 70 diff --git a/trezorlib/messages/NEMSupplyChangeType.py b/trezorlib/messages/NEMSupplyChangeType.py new file mode 100644 index 0000000..0633b8f --- /dev/null +++ b/trezorlib/messages/NEMSupplyChangeType.py @@ -0,0 +1,3 @@ +# Automatically generated by pb2py +SupplyChange_Increase = 1 +SupplyChange_Decrease = 2 diff --git a/trezorlib/messages/NEMTransactionCommon.py b/trezorlib/messages/NEMTransactionCommon.py new file mode 100644 index 0000000..58bfd2d --- /dev/null +++ b/trezorlib/messages/NEMTransactionCommon.py @@ -0,0 +1,14 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class NEMTransactionCommon(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('network', p.UVarintType, 0), + 3: ('timestamp', p.UVarintType, 0), + 4: ('fee', p.UVarintType, 0), + 5: ('deadline', p.UVarintType, 0), + 6: ('signer', p.BytesType, 0), + } diff --git a/trezorlib/messages/NEMTransfer.py b/trezorlib/messages/NEMTransfer.py new file mode 100644 index 0000000..b715842 --- /dev/null +++ b/trezorlib/messages/NEMTransfer.py @@ -0,0 +1,14 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .NEMMosaic import NEMMosaic + + +class NEMTransfer(p.MessageType): + FIELDS = { + 1: ('recipient', p.UnicodeType, 0), + 2: ('amount', p.UVarintType, 0), + 3: ('payload', p.BytesType, 0), + 4: ('public_key', p.BytesType, 0), + 5: ('mosaics', NEMMosaic, p.FLAG_REPEATED), + } diff --git a/trezorlib/messages/OutputScriptType.py b/trezorlib/messages/OutputScriptType.py new file mode 100644 index 0000000..96e22e3 --- /dev/null +++ b/trezorlib/messages/OutputScriptType.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +PAYTOADDRESS = 0 +PAYTOSCRIPTHASH = 1 +PAYTOMULTISIG = 2 +PAYTOOPRETURN = 3 +PAYTOWITNESS = 4 +PAYTOP2SHWITNESS = 5 diff --git a/trezorlib/messages/PassphraseAck.py b/trezorlib/messages/PassphraseAck.py new file mode 100644 index 0000000..19dcb78 --- /dev/null +++ b/trezorlib/messages/PassphraseAck.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class PassphraseAck(p.MessageType): + FIELDS = { + 1: ('passphrase', p.UnicodeType, 0), # required + } + MESSAGE_WIRE_TYPE = 42 diff --git a/trezorlib/messages/PassphraseRequest.py b/trezorlib/messages/PassphraseRequest.py new file mode 100644 index 0000000..15d4705 --- /dev/null +++ b/trezorlib/messages/PassphraseRequest.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class PassphraseRequest(p.MessageType): + MESSAGE_WIRE_TYPE = 41 diff --git a/trezorlib/messages/PinMatrixAck.py b/trezorlib/messages/PinMatrixAck.py new file mode 100644 index 0000000..a889417 --- /dev/null +++ b/trezorlib/messages/PinMatrixAck.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class PinMatrixAck(p.MessageType): + FIELDS = { + 1: ('pin', p.UnicodeType, 0), # required + } + MESSAGE_WIRE_TYPE = 19 diff --git a/trezorlib/messages/PinMatrixRequest.py b/trezorlib/messages/PinMatrixRequest.py new file mode 100644 index 0000000..b73a6af --- /dev/null +++ b/trezorlib/messages/PinMatrixRequest.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class PinMatrixRequest(p.MessageType): + FIELDS = { + 1: ('type', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 18 diff --git a/trezorlib/messages/PinMatrixRequestType.py b/trezorlib/messages/PinMatrixRequestType.py new file mode 100644 index 0000000..c1ff19e --- /dev/null +++ b/trezorlib/messages/PinMatrixRequestType.py @@ -0,0 +1,4 @@ +# Automatically generated by pb2py +Current = 1 +NewFirst = 2 +NewSecond = 3 diff --git a/trezorlib/messages/Ping.py b/trezorlib/messages/Ping.py new file mode 100644 index 0000000..b184878 --- /dev/null +++ b/trezorlib/messages/Ping.py @@ -0,0 +1,13 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class Ping(p.MessageType): + FIELDS = { + 1: ('message', p.UnicodeType, 0), + 2: ('button_protection', p.BoolType, 0), + 3: ('pin_protection', p.BoolType, 0), + 4: ('passphrase_protection', p.BoolType, 0), + } + MESSAGE_WIRE_TYPE = 1 diff --git a/trezorlib/messages/PublicKey.py b/trezorlib/messages/PublicKey.py new file mode 100644 index 0000000..8d30935 --- /dev/null +++ b/trezorlib/messages/PublicKey.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .HDNodeType import HDNodeType + + +class PublicKey(p.MessageType): + FIELDS = { + 1: ('node', HDNodeType, 0), # required + 2: ('xpub', p.UnicodeType, 0), + } + MESSAGE_WIRE_TYPE = 12 diff --git a/trezorlib/messages/RecoveryDevice.py b/trezorlib/messages/RecoveryDevice.py new file mode 100644 index 0000000..a05f53e --- /dev/null +++ b/trezorlib/messages/RecoveryDevice.py @@ -0,0 +1,18 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class RecoveryDevice(p.MessageType): + FIELDS = { + 1: ('word_count', p.UVarintType, 0), + 2: ('passphrase_protection', p.BoolType, 0), + 3: ('pin_protection', p.BoolType, 0), + 4: ('language', p.UnicodeType, 0), # default='english' + 5: ('label', p.UnicodeType, 0), + 6: ('enforce_wordlist', p.BoolType, 0), + 8: ('type', p.UVarintType, 0), + 9: ('u2f_counter', p.UVarintType, 0), + 10: ('dry_run', p.BoolType, 0), + } + MESSAGE_WIRE_TYPE = 45 diff --git a/trezorlib/messages/RecoveryDeviceType.py b/trezorlib/messages/RecoveryDeviceType.py new file mode 100644 index 0000000..21f48a9 --- /dev/null +++ b/trezorlib/messages/RecoveryDeviceType.py @@ -0,0 +1,3 @@ +# Automatically generated by pb2py +ScrambledWords = 0 +Matrix = 1 diff --git a/trezorlib/messages/RequestType.py b/trezorlib/messages/RequestType.py new file mode 100644 index 0000000..0a43a82 --- /dev/null +++ b/trezorlib/messages/RequestType.py @@ -0,0 +1,6 @@ +# Automatically generated by pb2py +TXINPUT = 0 +TXOUTPUT = 1 +TXMETA = 2 +TXFINISHED = 3 +TXEXTRADATA = 4 diff --git a/trezorlib/messages/ResetDevice.py b/trezorlib/messages/ResetDevice.py new file mode 100644 index 0000000..2ad6da9 --- /dev/null +++ b/trezorlib/messages/ResetDevice.py @@ -0,0 +1,17 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class ResetDevice(p.MessageType): + FIELDS = { + 1: ('display_random', p.BoolType, 0), + 2: ('strength', p.UVarintType, 0), # default=256 + 3: ('passphrase_protection', p.BoolType, 0), + 4: ('pin_protection', p.BoolType, 0), + 5: ('language', p.UnicodeType, 0), # default='english' + 6: ('label', p.UnicodeType, 0), + 7: ('u2f_counter', p.UVarintType, 0), + 8: ('skip_backup', p.BoolType, 0), + } + MESSAGE_WIRE_TYPE = 14 diff --git a/trezorlib/messages/SelfTest.py b/trezorlib/messages/SelfTest.py new file mode 100644 index 0000000..c768cb0 --- /dev/null +++ b/trezorlib/messages/SelfTest.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class SelfTest(p.MessageType): + FIELDS = { + 1: ('payload', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 32 diff --git a/trezorlib/messages/SetU2FCounter.py b/trezorlib/messages/SetU2FCounter.py new file mode 100644 index 0000000..4b81813 --- /dev/null +++ b/trezorlib/messages/SetU2FCounter.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class SetU2FCounter(p.MessageType): + FIELDS = { + 1: ('u2f_counter', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 63 diff --git a/trezorlib/messages/SignIdentity.py b/trezorlib/messages/SignIdentity.py new file mode 100644 index 0000000..d45cf63 --- /dev/null +++ b/trezorlib/messages/SignIdentity.py @@ -0,0 +1,14 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .IdentityType import IdentityType + + +class SignIdentity(p.MessageType): + FIELDS = { + 1: ('identity', IdentityType, 0), + 2: ('challenge_hidden', p.BytesType, 0), + 3: ('challenge_visual', p.UnicodeType, 0), + 4: ('ecdsa_curve_name', p.UnicodeType, 0), + } + MESSAGE_WIRE_TYPE = 53 diff --git a/trezorlib/messages/SignMessage.py b/trezorlib/messages/SignMessage.py new file mode 100644 index 0000000..3bfe731 --- /dev/null +++ b/trezorlib/messages/SignMessage.py @@ -0,0 +1,13 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class SignMessage(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('message', p.BytesType, 0), # required + 3: ('coin_name', p.UnicodeType, 0), # default='Bitcoin' + 4: ('script_type', p.UVarintType, 0), # default=0 + } + MESSAGE_WIRE_TYPE = 38 diff --git a/trezorlib/messages/SignTx.py b/trezorlib/messages/SignTx.py new file mode 100644 index 0000000..63180a6 --- /dev/null +++ b/trezorlib/messages/SignTx.py @@ -0,0 +1,14 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class SignTx(p.MessageType): + FIELDS = { + 1: ('outputs_count', p.UVarintType, 0), # required + 2: ('inputs_count', p.UVarintType, 0), # required + 3: ('coin_name', p.UnicodeType, 0), # default='Bitcoin' + 4: ('version', p.UVarintType, 0), # default=1 + 5: ('lock_time', p.UVarintType, 0), # default=0 + } + MESSAGE_WIRE_TYPE = 15 diff --git a/trezorlib/messages/SignedIdentity.py b/trezorlib/messages/SignedIdentity.py new file mode 100644 index 0000000..0e3e264 --- /dev/null +++ b/trezorlib/messages/SignedIdentity.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class SignedIdentity(p.MessageType): + FIELDS = { + 1: ('address', p.UnicodeType, 0), + 2: ('public_key', p.BytesType, 0), + 3: ('signature', p.BytesType, 0), + } + MESSAGE_WIRE_TYPE = 54 diff --git a/trezorlib/messages/SimpleSignTx.py b/trezorlib/messages/SimpleSignTx.py new file mode 100644 index 0000000..595af18 --- /dev/null +++ b/trezorlib/messages/SimpleSignTx.py @@ -0,0 +1,18 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .TxInputType import TxInputType +from .TransactionType import TransactionType +from .TxOutputType import TxOutputType + + +class SimpleSignTx(p.MessageType): + FIELDS = { + 1: ('inputs', TxInputType, p.FLAG_REPEATED), + 2: ('outputs', TxOutputType, p.FLAG_REPEATED), + 3: ('transactions', TransactionType, p.FLAG_REPEATED), + 4: ('coin_name', p.UnicodeType, 0), # default='Bitcoin' + 5: ('version', p.UVarintType, 0), # default=1 + 6: ('lock_time', p.UVarintType, 0), # default=0 + } + MESSAGE_WIRE_TYPE = 16 diff --git a/trezorlib/messages/Storage.py b/trezorlib/messages/Storage.py new file mode 100644 index 0000000..9044b1f --- /dev/null +++ b/trezorlib/messages/Storage.py @@ -0,0 +1,22 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .HDNodeType import HDNodeType + + +class Storage(p.MessageType): + FIELDS = { + 1: ('version', p.UVarintType, 0), # required + 2: ('node', HDNodeType, 0), + 3: ('mnemonic', p.UnicodeType, 0), + 4: ('passphrase_protection', p.BoolType, 0), + 5: ('pin_failed_attempts', p.UVarintType, 0), + 6: ('pin', p.UnicodeType, 0), + 7: ('language', p.UnicodeType, 0), + 8: ('label', p.UnicodeType, 0), + 9: ('imported', p.BoolType, 0), + 10: ('homescreen', p.BytesType, 0), + 11: ('u2f_counter', p.UVarintType, 0), + 12: ('needs_backup', p.BoolType, 0), + 13: ('flags', p.UVarintType, 0), + } diff --git a/trezorlib/messages/Success.py b/trezorlib/messages/Success.py new file mode 100644 index 0000000..0b3cc14 --- /dev/null +++ b/trezorlib/messages/Success.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class Success(p.MessageType): + FIELDS = { + 1: ('message', p.UnicodeType, 0), + } + MESSAGE_WIRE_TYPE = 2 diff --git a/trezorlib/messages/TransactionType.py b/trezorlib/messages/TransactionType.py new file mode 100644 index 0000000..b76939f --- /dev/null +++ b/trezorlib/messages/TransactionType.py @@ -0,0 +1,20 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .TxInputType import TxInputType +from .TxOutputType import TxOutputType +from .TxOutputBinType import TxOutputBinType + + +class TransactionType(p.MessageType): + FIELDS = { + 1: ('version', p.UVarintType, 0), + 2: ('inputs', TxInputType, p.FLAG_REPEATED), + 3: ('bin_outputs', TxOutputBinType, p.FLAG_REPEATED), + 4: ('lock_time', p.UVarintType, 0), + 5: ('outputs', TxOutputType, p.FLAG_REPEATED), + 6: ('inputs_cnt', p.UVarintType, 0), + 7: ('outputs_cnt', p.UVarintType, 0), + 8: ('extra_data', p.BytesType, 0), + 9: ('extra_data_len', p.UVarintType, 0), + } diff --git a/trezorlib/messages/TxAck.py b/trezorlib/messages/TxAck.py new file mode 100644 index 0000000..47ebe4f --- /dev/null +++ b/trezorlib/messages/TxAck.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .TransactionType import TransactionType + + +class TxAck(p.MessageType): + FIELDS = { + 1: ('tx', TransactionType, 0), + } + MESSAGE_WIRE_TYPE = 22 diff --git a/trezorlib/messages/TxInputType.py b/trezorlib/messages/TxInputType.py new file mode 100644 index 0000000..738d3aa --- /dev/null +++ b/trezorlib/messages/TxInputType.py @@ -0,0 +1,17 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .MultisigRedeemScriptType import MultisigRedeemScriptType + + +class TxInputType(p.MessageType): + FIELDS = { + 1: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 2: ('prev_hash', p.BytesType, 0), # required + 3: ('prev_index', p.UVarintType, 0), # required + 4: ('script_sig', p.BytesType, 0), + 5: ('sequence', p.UVarintType, 0), # default=4294967295 + 6: ('script_type', p.UVarintType, 0), # default=0 + 7: ('multisig', MultisigRedeemScriptType, 0), + 8: ('amount', p.UVarintType, 0), + } diff --git a/trezorlib/messages/TxOutputBinType.py b/trezorlib/messages/TxOutputBinType.py new file mode 100644 index 0000000..8d4306f --- /dev/null +++ b/trezorlib/messages/TxOutputBinType.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class TxOutputBinType(p.MessageType): + FIELDS = { + 1: ('amount', p.UVarintType, 0), # required + 2: ('script_pubkey', p.BytesType, 0), # required + } diff --git a/trezorlib/messages/TxOutputType.py b/trezorlib/messages/TxOutputType.py new file mode 100644 index 0000000..a5f7559 --- /dev/null +++ b/trezorlib/messages/TxOutputType.py @@ -0,0 +1,15 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .MultisigRedeemScriptType import MultisigRedeemScriptType + + +class TxOutputType(p.MessageType): + FIELDS = { + 1: ('address', p.UnicodeType, 0), + 2: ('address_n', p.UVarintType, p.FLAG_REPEATED), + 3: ('amount', p.UVarintType, 0), # required + 4: ('script_type', p.UVarintType, 0), # required + 5: ('multisig', MultisigRedeemScriptType, 0), + 6: ('op_return_data', p.BytesType, 0), + } diff --git a/trezorlib/messages/TxRequest.py b/trezorlib/messages/TxRequest.py new file mode 100644 index 0000000..a0a934e --- /dev/null +++ b/trezorlib/messages/TxRequest.py @@ -0,0 +1,14 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p +from .TxRequestSerializedType import TxRequestSerializedType +from .TxRequestDetailsType import TxRequestDetailsType + + +class TxRequest(p.MessageType): + FIELDS = { + 1: ('request_type', p.UVarintType, 0), + 2: ('details', TxRequestDetailsType, 0), + 3: ('serialized', TxRequestSerializedType, 0), + } + MESSAGE_WIRE_TYPE = 21 diff --git a/trezorlib/messages/TxRequestDetailsType.py b/trezorlib/messages/TxRequestDetailsType.py new file mode 100644 index 0000000..50cd1de --- /dev/null +++ b/trezorlib/messages/TxRequestDetailsType.py @@ -0,0 +1,12 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class TxRequestDetailsType(p.MessageType): + FIELDS = { + 1: ('request_index', p.UVarintType, 0), + 2: ('tx_hash', p.BytesType, 0), + 3: ('extra_data_len', p.UVarintType, 0), + 4: ('extra_data_offset', p.UVarintType, 0), + } diff --git a/trezorlib/messages/TxRequestSerializedType.py b/trezorlib/messages/TxRequestSerializedType.py new file mode 100644 index 0000000..eda9831 --- /dev/null +++ b/trezorlib/messages/TxRequestSerializedType.py @@ -0,0 +1,11 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class TxRequestSerializedType(p.MessageType): + FIELDS = { + 1: ('signature_index', p.UVarintType, 0), + 2: ('signature', p.BytesType, 0), + 3: ('serialized_tx', p.BytesType, 0), + } diff --git a/trezorlib/messages/TxSize.py b/trezorlib/messages/TxSize.py new file mode 100644 index 0000000..2132a4a --- /dev/null +++ b/trezorlib/messages/TxSize.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class TxSize(p.MessageType): + FIELDS = { + 1: ('tx_size', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 44 diff --git a/trezorlib/messages/VerifyMessage.py b/trezorlib/messages/VerifyMessage.py new file mode 100644 index 0000000..5777a27 --- /dev/null +++ b/trezorlib/messages/VerifyMessage.py @@ -0,0 +1,13 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class VerifyMessage(p.MessageType): + FIELDS = { + 1: ('address', p.UnicodeType, 0), + 2: ('signature', p.BytesType, 0), + 3: ('message', p.BytesType, 0), + 4: ('coin_name', p.UnicodeType, 0), # default='Bitcoin' + } + MESSAGE_WIRE_TYPE = 39 diff --git a/trezorlib/messages/WipeDevice.py b/trezorlib/messages/WipeDevice.py new file mode 100644 index 0000000..3474c98 --- /dev/null +++ b/trezorlib/messages/WipeDevice.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class WipeDevice(p.MessageType): + MESSAGE_WIRE_TYPE = 5 diff --git a/trezorlib/messages/WordAck.py b/trezorlib/messages/WordAck.py new file mode 100644 index 0000000..c1914e4 --- /dev/null +++ b/trezorlib/messages/WordAck.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class WordAck(p.MessageType): + FIELDS = { + 1: ('word', p.UnicodeType, 0), # required + } + MESSAGE_WIRE_TYPE = 47 diff --git a/trezorlib/messages/WordRequest.py b/trezorlib/messages/WordRequest.py new file mode 100644 index 0000000..06f28a7 --- /dev/null +++ b/trezorlib/messages/WordRequest.py @@ -0,0 +1,10 @@ +# Automatically generated by pb2py +from __future__ import absolute_import +from .. import protobuf as p + + +class WordRequest(p.MessageType): + FIELDS = { + 1: ('type', p.UVarintType, 0), + } + MESSAGE_WIRE_TYPE = 46 diff --git a/trezorlib/messages/WordRequestType.py b/trezorlib/messages/WordRequestType.py new file mode 100644 index 0000000..324b4c3 --- /dev/null +++ b/trezorlib/messages/WordRequestType.py @@ -0,0 +1,4 @@ +# Automatically generated by pb2py +Plain = 0 +Matrix9 = 1 +Matrix6 = 2 diff --git a/trezorlib/messages/__init__.py b/trezorlib/messages/__init__.py new file mode 100644 index 0000000..8ded549 --- /dev/null +++ b/trezorlib/messages/__init__.py @@ -0,0 +1,119 @@ +# Automatically generated by pb2py +from __future__ import absolute_import + +from .CoinType import * +from .HDNodePathType import * +from .HDNodeType import * +from .IdentityType import * +from .MultisigRedeemScriptType import * +from .NEMAggregateModification import * +from .NEMCosignatoryModification import * +from .NEMImportanceTransfer import * +from .NEMMosaic import * +from .NEMMosaicCreation import * +from .NEMMosaicDefinition import * +from .NEMMosaicSupplyChange import * +from .NEMProvisionNamespace import * +from .NEMTransactionCommon import * +from .NEMTransfer import * +from .TransactionType import * +from .TxInputType import * +from .TxOutputBinType import * +from .TxOutputType import * +from .TxRequestDetailsType import * +from .TxRequestSerializedType import * +from . import PinMatrixRequestType +from . import NEMSupplyChangeType +from . import NEMModificationType +from . import ButtonRequestType +from . import InputScriptType +from . import FailureType +from . import RecoveryDeviceType +from . import NEMImportanceTransferMode +from . import NEMMosaicLevy +from . import WordRequestType +from . import OutputScriptType +from . import RequestType +from .Address import * +from .ApplyFlags import * +from .ApplySettings import * +from .BackupDevice import * +from .ButtonAck import * +from .ButtonRequest import * +from .Cancel import * +from .ChangePin import * +from .CipherKeyValue import * +from .CipheredKeyValue import * +from .ClearSession import * +from .CosiCommit import * +from .CosiCommitment import * +from .CosiSign import * +from .CosiSignature import * +from .DebugLinkDecision import * +from .DebugLinkFlashErase import * +from .DebugLinkGetState import * +from .DebugLinkLog import * +from .DebugLinkMemory import * +from .DebugLinkMemoryRead import * +from .DebugLinkMemoryWrite import * +from .DebugLinkState import * +from .DebugLinkStop import * +from .DecryptMessage import * +from .DecryptedMessage import * +from .ECDHSessionKey import * +from .EncryptMessage import * +from .EncryptedMessage import * +from .Entropy import * +from .EntropyAck import * +from .EntropyRequest import * +from .EstimateTxSize import * +from .EthereumAddress import * +from .EthereumGetAddress import * +from .EthereumMessageSignature import * +from .EthereumSignMessage import * +from .EthereumSignTx import * +from .EthereumTxAck import * +from .EthereumTxRequest import * +from .EthereumVerifyMessage import * +from .Failure import * +from .Features import * +from .FirmwareErase import * +from .FirmwareRequest import * +from .FirmwareUpload import * +from .GetAddress import * +from .GetECDHSessionKey import * +from .GetEntropy import * +from .GetFeatures import * +from .GetPublicKey import * +from .Initialize import * +from .LoadDevice import * +from .MessageSignature import * +from .NEMAddress import * +from .NEMGetAddress import * +from .NEMSignTx import * +from .NEMSignedTx import * +from .PassphraseAck import * +from .PassphraseRequest import * +from .PinMatrixAck import * +from .PinMatrixRequest import * +from .Ping import * +from .PublicKey import * +from .RecoveryDevice import * +from .ResetDevice import * +from .SelfTest import * +from .SetU2FCounter import * +from .SignIdentity import * +from .SignMessage import * +from .SignTx import * +from .SignedIdentity import * +from .SimpleSignTx import * +from .Success import * +from .TxAck import * +from .TxRequest import * +from .TxSize import * +from .VerifyMessage import * +from .WipeDevice import * +from .WordAck import * +from .WordRequest import * +from . import MessageType +from .Storage import * diff --git a/trezorlib/messages_pb2.py b/trezorlib/messages_pb2.py deleted file mode 100644 index db5a82d..0000000 --- a/trezorlib/messages_pb2.py +++ /dev/null @@ -1,4758 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: messages.proto -# libprotoc 3.3.0 -# trezor-common c20bb1c567ac0c1ddabf74354f204043eeacad10 - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf.internal import enum_type_wrapper -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -from google.protobuf import descriptor_pb2 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from . import types_pb2 as types__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='messages.proto', - package='', - syntax='proto2', - serialized_pb=_b('\n\x0emessages.proto\x1a\x0btypes.proto\"\x0c\n\nInitialize\"\r\n\x0bGetFeatures\"\xbd\x03\n\x08\x46\x65\x61tures\x12\x0e\n\x06vendor\x18\x01 \x01(\t\x12\x15\n\rmajor_version\x18\x02 \x01(\r\x12\x15\n\rminor_version\x18\x03 \x01(\r\x12\x15\n\rpatch_version\x18\x04 \x01(\r\x12\x17\n\x0f\x62ootloader_mode\x18\x05 \x01(\x08\x12\x11\n\tdevice_id\x18\x06 \x01(\t\x12\x16\n\x0epin_protection\x18\x07 \x01(\x08\x12\x1d\n\x15passphrase_protection\x18\x08 \x01(\x08\x12\x10\n\x08language\x18\t \x01(\t\x12\r\n\x05label\x18\n \x01(\t\x12\x18\n\x05\x63oins\x18\x0b \x03(\x0b\x32\t.CoinType\x12\x13\n\x0binitialized\x18\x0c \x01(\x08\x12\x10\n\x08revision\x18\r \x01(\x0c\x12\x17\n\x0f\x62ootloader_hash\x18\x0e \x01(\x0c\x12\x10\n\x08imported\x18\x0f \x01(\x08\x12\x12\n\npin_cached\x18\x10 \x01(\x08\x12\x19\n\x11passphrase_cached\x18\x11 \x01(\x08\x12\x18\n\x10\x66irmware_present\x18\x12 \x01(\x08\x12\x14\n\x0cneeds_backup\x18\x13 \x01(\x08\x12\r\n\x05\x66lags\x18\x14 \x01(\r\"\x0e\n\x0c\x43learSession\"\\\n\rApplySettings\x12\x10\n\x08language\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12\x16\n\x0euse_passphrase\x18\x03 \x01(\x08\x12\x12\n\nhomescreen\x18\x04 \x01(\x0c\"\x1b\n\nApplyFlags\x12\r\n\x05\x66lags\x18\x01 \x01(\r\"\x1b\n\tChangePin\x12\x0e\n\x06remove\x18\x01 \x01(\x08\"i\n\x04Ping\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x19\n\x11\x62utton_protection\x18\x02 \x01(\x08\x12\x16\n\x0epin_protection\x18\x03 \x01(\x08\x12\x1d\n\x15passphrase_protection\x18\x04 \x01(\x08\"\x1a\n\x07Success\x12\x0f\n\x07message\x18\x01 \x01(\t\"6\n\x07\x46\x61ilure\x12\x1a\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x0c.FailureType\x12\x0f\n\x07message\x18\x02 \x01(\t\"?\n\rButtonRequest\x12 \n\x04\x63ode\x18\x01 \x01(\x0e\x32\x12.ButtonRequestType\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\t\"\x0b\n\tButtonAck\"7\n\x10PinMatrixRequest\x12#\n\x04type\x18\x01 \x01(\x0e\x32\x15.PinMatrixRequestType\"\x1b\n\x0cPinMatrixAck\x12\x0b\n\x03pin\x18\x01 \x02(\t\"\x08\n\x06\x43\x61ncel\"\x13\n\x11PassphraseRequest\"#\n\rPassphraseAck\x12\x12\n\npassphrase\x18\x01 \x02(\t\"\x1a\n\nGetEntropy\x12\x0c\n\x04size\x18\x01 \x02(\r\"\x1a\n\x07\x45ntropy\x12\x0f\n\x07\x65ntropy\x18\x01 \x02(\x0c\"m\n\x0cGetPublicKey\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x18\n\x10\x65\x63\x64sa_curve_name\x18\x02 \x01(\t\x12\x14\n\x0cshow_display\x18\x03 \x01(\x08\x12\x1a\n\tcoin_name\x18\x04 \x01(\t:\x07\x42itcoin\"4\n\tPublicKey\x12\x19\n\x04node\x18\x01 \x02(\x0b\x32\x0b.HDNodeType\x12\x0c\n\x04xpub\x18\x02 \x01(\t\"\xb3\x01\n\nGetAddress\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x1a\n\tcoin_name\x18\x02 \x01(\t:\x07\x42itcoin\x12\x14\n\x0cshow_display\x18\x03 \x01(\x08\x12+\n\x08multisig\x18\x04 \x01(\x0b\x32\x19.MultisigRedeemScriptType\x12\x33\n\x0bscript_type\x18\x05 \x01(\x0e\x32\x10.InputScriptType:\x0cSPENDADDRESS\"=\n\x12\x45thereumGetAddress\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x14\n\x0cshow_display\x18\x02 \x01(\x08\"\x1a\n\x07\x41\x64\x64ress\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x02(\t\"\"\n\x0f\x45thereumAddress\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x02(\x0c\"\x0c\n\nWipeDevice\"\xbb\x01\n\nLoadDevice\x12\x10\n\x08mnemonic\x18\x01 \x01(\t\x12\x19\n\x04node\x18\x02 \x01(\x0b\x32\x0b.HDNodeType\x12\x0b\n\x03pin\x18\x03 \x01(\t\x12\x1d\n\x15passphrase_protection\x18\x04 \x01(\x08\x12\x19\n\x08language\x18\x05 \x01(\t:\x07\x65nglish\x12\r\n\x05label\x18\x06 \x01(\t\x12\x15\n\rskip_checksum\x18\x07 \x01(\x08\x12\x13\n\x0bu2f_counter\x18\x08 \x01(\r\"\xc7\x01\n\x0bResetDevice\x12\x16\n\x0e\x64isplay_random\x18\x01 \x01(\x08\x12\x15\n\x08strength\x18\x02 \x01(\r:\x03\x32\x35\x36\x12\x1d\n\x15passphrase_protection\x18\x03 \x01(\x08\x12\x16\n\x0epin_protection\x18\x04 \x01(\x08\x12\x19\n\x08language\x18\x05 \x01(\t:\x07\x65nglish\x12\r\n\x05label\x18\x06 \x01(\t\x12\x13\n\x0bu2f_counter\x18\x07 \x01(\r\x12\x13\n\x0bskip_backup\x18\x08 \x01(\x08\"\x0e\n\x0c\x42\x61\x63kupDevice\"\x10\n\x0e\x45ntropyRequest\"\x1d\n\nEntropyAck\x12\x0f\n\x07\x65ntropy\x18\x01 \x01(\x0c\"\xd3\x01\n\x0eRecoveryDevice\x12\x12\n\nword_count\x18\x01 \x01(\r\x12\x1d\n\x15passphrase_protection\x18\x02 \x01(\x08\x12\x16\n\x0epin_protection\x18\x03 \x01(\x08\x12\x19\n\x08language\x18\x04 \x01(\t:\x07\x65nglish\x12\r\n\x05label\x18\x05 \x01(\t\x12\x18\n\x10\x65nforce_wordlist\x18\x06 \x01(\x08\x12\x0c\n\x04type\x18\x08 \x01(\r\x12\x13\n\x0bu2f_counter\x18\t \x01(\r\x12\x0f\n\x07\x64ry_run\x18\n \x01(\x08\"-\n\x0bWordRequest\x12\x1e\n\x04type\x18\x01 \x01(\x0e\x32\x10.WordRequestType\"\x17\n\x07WordAck\x12\x0c\n\x04word\x18\x01 \x02(\t\"\x82\x01\n\x0bSignMessage\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x0f\n\x07message\x18\x02 \x02(\x0c\x12\x1a\n\tcoin_name\x18\x03 \x01(\t:\x07\x42itcoin\x12\x33\n\x0bscript_type\x18\x04 \x01(\x0e\x32\x10.InputScriptType:\x0cSPENDADDRESS\"`\n\rVerifyMessage\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x11\n\tsignature\x18\x02 \x01(\x0c\x12\x0f\n\x07message\x18\x03 \x01(\x0c\x12\x1a\n\tcoin_name\x18\x04 \x01(\t:\x07\x42itcoin\"6\n\x10MessageSignature\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x11\n\tsignature\x18\x02 \x01(\x0c\"v\n\x0e\x45ncryptMessage\x12\x0e\n\x06pubkey\x18\x01 \x01(\x0c\x12\x0f\n\x07message\x18\x02 \x01(\x0c\x12\x14\n\x0c\x64isplay_only\x18\x03 \x01(\x08\x12\x11\n\taddress_n\x18\x04 \x03(\r\x12\x1a\n\tcoin_name\x18\x05 \x01(\t:\x07\x42itcoin\"@\n\x10\x45ncryptedMessage\x12\r\n\x05nonce\x18\x01 \x01(\x0c\x12\x0f\n\x07message\x18\x02 \x01(\x0c\x12\x0c\n\x04hmac\x18\x03 \x01(\x0c\"Q\n\x0e\x44\x65\x63ryptMessage\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\r\n\x05nonce\x18\x02 \x01(\x0c\x12\x0f\n\x07message\x18\x03 \x01(\x0c\x12\x0c\n\x04hmac\x18\x04 \x01(\x0c\"4\n\x10\x44\x65\x63ryptedMessage\x12\x0f\n\x07message\x18\x01 \x01(\x0c\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\"\x8c\x01\n\x0e\x43ipherKeyValue\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\x0c\x12\x0f\n\x07\x65ncrypt\x18\x04 \x01(\x08\x12\x16\n\x0e\x61sk_on_encrypt\x18\x05 \x01(\x08\x12\x16\n\x0e\x61sk_on_decrypt\x18\x06 \x01(\x08\x12\n\n\x02iv\x18\x07 \x01(\x0c\"!\n\x10\x43ipheredKeyValue\x12\r\n\x05value\x18\x01 \x01(\x0c\"Y\n\x0e\x45stimateTxSize\x12\x15\n\routputs_count\x18\x01 \x02(\r\x12\x14\n\x0cinputs_count\x18\x02 \x02(\r\x12\x1a\n\tcoin_name\x18\x03 \x01(\t:\x07\x42itcoin\"\x19\n\x06TxSize\x12\x0f\n\x07tx_size\x18\x01 \x01(\r\"{\n\x06SignTx\x12\x15\n\routputs_count\x18\x01 \x02(\r\x12\x14\n\x0cinputs_count\x18\x02 \x02(\r\x12\x1a\n\tcoin_name\x18\x03 \x01(\t:\x07\x42itcoin\x12\x12\n\x07version\x18\x04 \x01(\r:\x01\x31\x12\x14\n\tlock_time\x18\x05 \x01(\r:\x01\x30\"\xba\x01\n\x0cSimpleSignTx\x12\x1c\n\x06inputs\x18\x01 \x03(\x0b\x32\x0c.TxInputType\x12\x1e\n\x07outputs\x18\x02 \x03(\x0b\x32\r.TxOutputType\x12&\n\x0ctransactions\x18\x03 \x03(\x0b\x32\x10.TransactionType\x12\x1a\n\tcoin_name\x18\x04 \x01(\t:\x07\x42itcoin\x12\x12\n\x07version\x18\x05 \x01(\r:\x01\x31\x12\x14\n\tlock_time\x18\x06 \x01(\r:\x01\x30\"\x85\x01\n\tTxRequest\x12\"\n\x0crequest_type\x18\x01 \x01(\x0e\x32\x0c.RequestType\x12&\n\x07\x64\x65tails\x18\x02 \x01(\x0b\x32\x15.TxRequestDetailsType\x12,\n\nserialized\x18\x03 \x01(\x0b\x32\x18.TxRequestSerializedType\"%\n\x05TxAck\x12\x1c\n\x02tx\x18\x01 \x01(\x0b\x32\x10.TransactionType\"\xb6\x01\n\x0e\x45thereumSignTx\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\r\n\x05nonce\x18\x02 \x01(\x0c\x12\x11\n\tgas_price\x18\x03 \x01(\x0c\x12\x11\n\tgas_limit\x18\x04 \x01(\x0c\x12\n\n\x02to\x18\x05 \x01(\x0c\x12\r\n\x05value\x18\x06 \x01(\x0c\x12\x1a\n\x12\x64\x61ta_initial_chunk\x18\x07 \x01(\x0c\x12\x13\n\x0b\x64\x61ta_length\x18\x08 \x01(\r\x12\x10\n\x08\x63hain_id\x18\t \x01(\r\"g\n\x11\x45thereumTxRequest\x12\x13\n\x0b\x64\x61ta_length\x18\x01 \x01(\r\x12\x13\n\x0bsignature_v\x18\x02 \x01(\r\x12\x13\n\x0bsignature_r\x18\x03 \x01(\x0c\x12\x13\n\x0bsignature_s\x18\x04 \x01(\x0c\"#\n\rEthereumTxAck\x12\x12\n\ndata_chunk\x18\x01 \x01(\x0c\"9\n\x13\x45thereumSignMessage\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x0f\n\x07message\x18\x02 \x02(\x0c\"L\n\x15\x45thereumVerifyMessage\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0c\x12\x11\n\tsignature\x18\x02 \x01(\x0c\x12\x0f\n\x07message\x18\x03 \x01(\x0c\">\n\x18\x45thereumMessageSignature\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0c\x12\x11\n\tsignature\x18\x02 \x01(\x0c\"}\n\x0cSignIdentity\x12\x1f\n\x08identity\x18\x01 \x01(\x0b\x32\r.IdentityType\x12\x18\n\x10\x63hallenge_hidden\x18\x02 \x01(\x0c\x12\x18\n\x10\x63hallenge_visual\x18\x03 \x01(\t\x12\x18\n\x10\x65\x63\x64sa_curve_name\x18\x04 \x01(\t\"H\n\x0eSignedIdentity\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x12\n\npublic_key\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\"g\n\x11GetECDHSessionKey\x12\x1f\n\x08identity\x18\x01 \x01(\x0b\x32\r.IdentityType\x12\x17\n\x0fpeer_public_key\x18\x02 \x01(\x0c\x12\x18\n\x10\x65\x63\x64sa_curve_name\x18\x03 \x01(\t\"%\n\x0e\x45\x43\x44HSessionKey\x12\x13\n\x0bsession_key\x18\x01 \x01(\x0c\"$\n\rSetU2FCounter\x12\x13\n\x0bu2f_counter\x18\x01 \x01(\r\"\x1f\n\rFirmwareErase\x12\x0e\n\x06length\x18\x01 \x01(\r\"1\n\x0f\x46irmwareRequest\x12\x0e\n\x06offset\x18\x01 \x01(\r\x12\x0e\n\x06length\x18\x02 \x01(\r\"/\n\x0e\x46irmwareUpload\x12\x0f\n\x07payload\x18\x01 \x02(\x0c\x12\x0c\n\x04hash\x18\x02 \x01(\x0c\"\x1b\n\x08SelfTest\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\"I\n\rNEMGetAddress\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x0f\n\x07network\x18\x02 \x01(\r\x12\x14\n\x0cshow_display\x18\x03 \x01(\x08\"\x1d\n\nNEMAddress\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x02(\t\"\xdf\x02\n\tNEMSignTx\x12*\n\x0btransaction\x18\x01 \x01(\x0b\x32\x15.NEMTransactionCommon\x12\'\n\x08multisig\x18\x02 \x01(\x0b\x32\x15.NEMTransactionCommon\x12\x1e\n\x08transfer\x18\x03 \x01(\x0b\x32\x0c.NEMTransfer\x12\x11\n\tcosigning\x18\x04 \x01(\x08\x12\x33\n\x13provision_namespace\x18\x05 \x01(\x0b\x32\x16.NEMProvisionNamespace\x12+\n\x0fmosaic_creation\x18\x06 \x01(\x0b\x32\x12.NEMMosaicCreation\x12-\n\rsupply_change\x18\x07 \x01(\x0b\x32\x16.NEMMosaicSupplyChange\x12\x39\n\x16\x61ggregate_modification\x18\x08 \x01(\x0b\x32\x19.NEMAggregateModification\".\n\x0bNEMSignedTx\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x11\n\tsignature\x18\x02 \x01(\x0c\"-\n\nCosiCommit\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"4\n\x0e\x43osiCommitment\x12\x12\n\ncommitment\x18\x01 \x01(\x0c\x12\x0e\n\x06pubkey\x18\x02 \x01(\x0c\"]\n\x08\x43osiSign\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x19\n\x11global_commitment\x18\x03 \x01(\x0c\x12\x15\n\rglobal_pubkey\x18\x04 \x01(\x0c\"\"\n\rCosiSignature\x12\x11\n\tsignature\x18\x01 \x01(\x0c\"#\n\x11\x44\x65\x62ugLinkDecision\x12\x0e\n\x06yes_no\x18\x01 \x02(\x08\"\x13\n\x11\x44\x65\x62ugLinkGetState\"\xeb\x01\n\x0e\x44\x65\x62ugLinkState\x12\x0e\n\x06layout\x18\x01 \x01(\x0c\x12\x0b\n\x03pin\x18\x02 \x01(\t\x12\x0e\n\x06matrix\x18\x03 \x01(\t\x12\x10\n\x08mnemonic\x18\x04 \x01(\t\x12\x19\n\x04node\x18\x05 \x01(\x0b\x32\x0b.HDNodeType\x12\x1d\n\x15passphrase_protection\x18\x06 \x01(\x08\x12\x12\n\nreset_word\x18\x07 \x01(\t\x12\x15\n\rreset_entropy\x18\x08 \x01(\x0c\x12\x1a\n\x12recovery_fake_word\x18\t \x01(\t\x12\x19\n\x11recovery_word_pos\x18\n \x01(\r\"\x0f\n\rDebugLinkStop\";\n\x0c\x44\x65\x62ugLinkLog\x12\r\n\x05level\x18\x01 \x01(\r\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12\x0c\n\x04text\x18\x03 \x01(\t\"6\n\x13\x44\x65\x62ugLinkMemoryRead\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\r\x12\x0e\n\x06length\x18\x02 \x01(\r\"!\n\x0f\x44\x65\x62ugLinkMemory\x12\x0e\n\x06memory\x18\x01 \x01(\x0c\"F\n\x14\x44\x65\x62ugLinkMemoryWrite\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\r\x12\x0e\n\x06memory\x18\x02 \x01(\x0c\x12\r\n\x05\x66lash\x18\x03 \x01(\x08\"%\n\x13\x44\x65\x62ugLinkFlashErase\x12\x0e\n\x06sector\x18\x01 \x01(\r*\xc3\x17\n\x0bMessageType\x12 \n\x16MessageType_Initialize\x10\x00\x1a\x04\x90\xb5\x18\x01\x12\x1a\n\x10MessageType_Ping\x10\x01\x1a\x04\x90\xb5\x18\x01\x12\x1d\n\x13MessageType_Success\x10\x02\x1a\x04\x98\xb5\x18\x01\x12\x1d\n\x13MessageType_Failure\x10\x03\x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_ChangePin\x10\x04\x1a\x04\x90\xb5\x18\x01\x12 \n\x16MessageType_WipeDevice\x10\x05\x1a\x04\x90\xb5\x18\x01\x12\'\n\x19MessageType_FirmwareErase\x10\x06\x1a\x08\x90\xb5\x18\x01\xb8\xb5\x18\x01\x12(\n\x1aMessageType_FirmwareUpload\x10\x07\x1a\x08\x90\xb5\x18\x01\xb8\xb5\x18\x01\x12)\n\x1bMessageType_FirmwareRequest\x10\x08\x1a\x08\x98\xb5\x18\x01\xb8\xb5\x18\x01\x12 \n\x16MessageType_GetEntropy\x10\t\x1a\x04\x90\xb5\x18\x01\x12\x1d\n\x13MessageType_Entropy\x10\n\x1a\x04\x98\xb5\x18\x01\x12\"\n\x18MessageType_GetPublicKey\x10\x0b\x1a\x04\x90\xb5\x18\x01\x12\x1f\n\x15MessageType_PublicKey\x10\x0c\x1a\x04\x98\xb5\x18\x01\x12 \n\x16MessageType_LoadDevice\x10\r\x1a\x04\x90\xb5\x18\x01\x12!\n\x17MessageType_ResetDevice\x10\x0e\x1a\x04\x90\xb5\x18\x01\x12\x1c\n\x12MessageType_SignTx\x10\x0f\x1a\x04\x90\xb5\x18\x01\x12$\n\x18MessageType_SimpleSignTx\x10\x10\x1a\x06\x08\x01\x90\xb5\x18\x01\x12\x1e\n\x14MessageType_Features\x10\x11\x1a\x04\x98\xb5\x18\x01\x12&\n\x1cMessageType_PinMatrixRequest\x10\x12\x1a\x04\x98\xb5\x18\x01\x12&\n\x18MessageType_PinMatrixAck\x10\x13\x1a\x08\x90\xb5\x18\x01\xb0\xb5\x18\x01\x12\x1c\n\x12MessageType_Cancel\x10\x14\x1a\x04\x90\xb5\x18\x01\x12\x1f\n\x15MessageType_TxRequest\x10\x15\x1a\x04\x98\xb5\x18\x01\x12\x1b\n\x11MessageType_TxAck\x10\x16\x1a\x04\x90\xb5\x18\x01\x12$\n\x1aMessageType_CipherKeyValue\x10\x17\x1a\x04\x90\xb5\x18\x01\x12\"\n\x18MessageType_ClearSession\x10\x18\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_ApplySettings\x10\x19\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_ButtonRequest\x10\x1a\x1a\x04\x98\xb5\x18\x01\x12#\n\x15MessageType_ButtonAck\x10\x1b\x1a\x08\x90\xb5\x18\x01\xb0\xb5\x18\x01\x12 \n\x16MessageType_ApplyFlags\x10\x1c\x1a\x04\x90\xb5\x18\x01\x12 \n\x16MessageType_GetAddress\x10\x1d\x1a\x04\x90\xb5\x18\x01\x12\x1d\n\x13MessageType_Address\x10\x1e\x1a\x04\x98\xb5\x18\x01\x12\"\n\x14MessageType_SelfTest\x10 \x1a\x08\x90\xb5\x18\x01\xb8\xb5\x18\x01\x12\"\n\x18MessageType_BackupDevice\x10\"\x1a\x04\x90\xb5\x18\x01\x12$\n\x1aMessageType_EntropyRequest\x10#\x1a\x04\x98\xb5\x18\x01\x12 \n\x16MessageType_EntropyAck\x10$\x1a\x04\x90\xb5\x18\x01\x12!\n\x17MessageType_SignMessage\x10&\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_VerifyMessage\x10\'\x1a\x04\x90\xb5\x18\x01\x12&\n\x1cMessageType_MessageSignature\x10(\x1a\x04\x98\xb5\x18\x01\x12\'\n\x1dMessageType_PassphraseRequest\x10)\x1a\x04\x98\xb5\x18\x01\x12\'\n\x19MessageType_PassphraseAck\x10*\x1a\x08\x90\xb5\x18\x01\xb0\xb5\x18\x01\x12&\n\x1aMessageType_EstimateTxSize\x10+\x1a\x06\x08\x01\x90\xb5\x18\x01\x12\x1e\n\x12MessageType_TxSize\x10,\x1a\x06\x08\x01\x98\xb5\x18\x01\x12$\n\x1aMessageType_RecoveryDevice\x10-\x1a\x04\x90\xb5\x18\x01\x12!\n\x17MessageType_WordRequest\x10.\x1a\x04\x98\xb5\x18\x01\x12\x1d\n\x13MessageType_WordAck\x10/\x1a\x04\x90\xb5\x18\x01\x12&\n\x1cMessageType_CipheredKeyValue\x10\x30\x1a\x04\x98\xb5\x18\x01\x12&\n\x1aMessageType_EncryptMessage\x10\x31\x1a\x06\x08\x01\x90\xb5\x18\x01\x12(\n\x1cMessageType_EncryptedMessage\x10\x32\x1a\x06\x08\x01\x98\xb5\x18\x01\x12&\n\x1aMessageType_DecryptMessage\x10\x33\x1a\x06\x08\x01\x90\xb5\x18\x01\x12(\n\x1cMessageType_DecryptedMessage\x10\x34\x1a\x06\x08\x01\x98\xb5\x18\x01\x12\"\n\x18MessageType_SignIdentity\x10\x35\x1a\x04\x90\xb5\x18\x01\x12$\n\x1aMessageType_SignedIdentity\x10\x36\x1a\x04\x98\xb5\x18\x01\x12!\n\x17MessageType_GetFeatures\x10\x37\x1a\x04\x90\xb5\x18\x01\x12(\n\x1eMessageType_EthereumGetAddress\x10\x38\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessageType_EthereumAddress\x10\x39\x1a\x04\x98\xb5\x18\x01\x12$\n\x1aMessageType_EthereumSignTx\x10:\x1a\x04\x90\xb5\x18\x01\x12\'\n\x1dMessageType_EthereumTxRequest\x10;\x1a\x04\x98\xb5\x18\x01\x12#\n\x19MessageType_EthereumTxAck\x10<\x1a\x04\x90\xb5\x18\x01\x12\'\n\x1dMessageType_GetECDHSessionKey\x10=\x1a\x04\x90\xb5\x18\x01\x12$\n\x1aMessageType_ECDHSessionKey\x10>\x1a\x04\x98\xb5\x18\x01\x12#\n\x19MessageType_SetU2FCounter\x10?\x1a\x04\x90\xb5\x18\x01\x12)\n\x1fMessageType_EthereumSignMessage\x10@\x1a\x04\x90\xb5\x18\x01\x12+\n!MessageType_EthereumVerifyMessage\x10\x41\x1a\x04\x90\xb5\x18\x01\x12.\n$MessageType_EthereumMessageSignature\x10\x42\x1a\x04\x98\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddress\x10\x43\x1a\x04\x90\xb5\x18\x01\x12 \n\x16MessageType_NEMAddress\x10\x44\x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10\x45\x1a\x04\x90\xb5\x18\x01\x12!\n\x17MessageType_NEMSignedTx\x10\x46\x1a\x04\x98\xb5\x18\x01\x12 \n\x16MessageType_CosiCommit\x10G\x1a\x04\x90\xb5\x18\x01\x12$\n\x1aMessageType_CosiCommitment\x10H\x1a\x04\x98\xb5\x18\x01\x12\x1e\n\x14MessageType_CosiSign\x10I\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_CosiSignature\x10J\x1a\x04\x98\xb5\x18\x01\x12+\n\x1dMessageType_DebugLinkDecision\x10\x64\x1a\x08\xa0\xb5\x18\x01\xb0\xb5\x18\x01\x12\'\n\x1dMessageType_DebugLinkGetState\x10\x65\x1a\x04\xa0\xb5\x18\x01\x12$\n\x1aMessageType_DebugLinkState\x10\x66\x1a\x04\xa8\xb5\x18\x01\x12#\n\x19MessageType_DebugLinkStop\x10g\x1a\x04\xa0\xb5\x18\x01\x12\"\n\x18MessageType_DebugLinkLog\x10h\x1a\x04\xa8\xb5\x18\x01\x12)\n\x1fMessageType_DebugLinkMemoryRead\x10n\x1a\x04\xa0\xb5\x18\x01\x12%\n\x1bMessageType_DebugLinkMemory\x10o\x1a\x04\xa8\xb5\x18\x01\x12*\n MessageType_DebugLinkMemoryWrite\x10p\x1a\x04\xa0\xb5\x18\x01\x12)\n\x1fMessageType_DebugLinkFlashErase\x10q\x1a\x04\xa0\xb5\x18\x01\x42\x34\n#com.satoshilabs.trezor.lib.protobufB\rTrezorMessage') - , - dependencies=[types__pb2.DESCRIPTOR,]) - -_MESSAGETYPE = _descriptor.EnumDescriptor( - name='MessageType', - full_name='MessageType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='MessageType_Initialize', index=0, number=0, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_Ping', index=1, number=1, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_Success', index=2, number=2, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_Failure', index=3, number=3, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_ChangePin', index=4, number=4, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_WipeDevice', index=5, number=5, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_FirmwareErase', index=6, number=6, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\270\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_FirmwareUpload', index=7, number=7, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\270\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_FirmwareRequest', index=8, number=8, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001\270\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_GetEntropy', index=9, number=9, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_Entropy', index=10, number=10, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_GetPublicKey', index=11, number=11, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_PublicKey', index=12, number=12, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_LoadDevice', index=13, number=13, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_ResetDevice', index=14, number=14, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_SignTx', index=15, number=15, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_SimpleSignTx', index=16, number=16, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_Features', index=17, number=17, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_PinMatrixRequest', index=18, number=18, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_PinMatrixAck', index=19, number=19, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\260\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_Cancel', index=20, number=20, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_TxRequest', index=21, number=21, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_TxAck', index=22, number=22, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_CipherKeyValue', index=23, number=23, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_ClearSession', index=24, number=24, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_ApplySettings', index=25, number=25, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_ButtonRequest', index=26, number=26, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_ButtonAck', index=27, number=27, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\260\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_ApplyFlags', index=28, number=28, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_GetAddress', index=29, number=29, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_Address', index=30, number=30, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_SelfTest', index=31, number=32, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\270\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_BackupDevice', index=32, number=34, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EntropyRequest', index=33, number=35, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EntropyAck', index=34, number=36, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_SignMessage', index=35, number=38, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_VerifyMessage', index=36, number=39, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_MessageSignature', index=37, number=40, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_PassphraseRequest', index=38, number=41, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_PassphraseAck', index=39, number=42, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\260\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EstimateTxSize', index=40, number=43, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_TxSize', index=41, number=44, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_RecoveryDevice', index=42, number=45, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_WordRequest', index=43, number=46, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_WordAck', index=44, number=47, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_CipheredKeyValue', index=45, number=48, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EncryptMessage', index=46, number=49, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EncryptedMessage', index=47, number=50, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_DecryptMessage', index=48, number=51, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_DecryptedMessage', index=49, number=52, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_SignIdentity', index=50, number=53, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_SignedIdentity', index=51, number=54, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_GetFeatures', index=52, number=55, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EthereumGetAddress', index=53, number=56, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EthereumAddress', index=54, number=57, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EthereumSignTx', index=55, number=58, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EthereumTxRequest', index=56, number=59, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EthereumTxAck', index=57, number=60, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_GetECDHSessionKey', index=58, number=61, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_ECDHSessionKey', index=59, number=62, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_SetU2FCounter', index=60, number=63, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EthereumSignMessage', index=61, number=64, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EthereumVerifyMessage', index=62, number=65, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_EthereumMessageSignature', index=63, number=66, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_NEMGetAddress', index=64, number=67, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_NEMAddress', index=65, number=68, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_NEMSignTx', index=66, number=69, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_NEMSignedTx', index=67, number=70, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_CosiCommit', index=68, number=71, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_CosiCommitment', index=69, number=72, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_CosiSign', index=70, number=73, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_CosiSignature', index=71, number=74, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_DebugLinkDecision', index=72, number=100, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001\260\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_DebugLinkGetState', index=73, number=101, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_DebugLinkState', index=74, number=102, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\250\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_DebugLinkStop', index=75, number=103, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_DebugLinkLog', index=76, number=104, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\250\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_DebugLinkMemoryRead', index=77, number=110, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_DebugLinkMemory', index=78, number=111, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\250\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_DebugLinkMemoryWrite', index=79, number=112, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001')), - type=None), - _descriptor.EnumValueDescriptor( - name='MessageType_DebugLinkFlashErase', index=80, number=113, - options=_descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001')), - type=None), - ], - containing_type=None, - options=None, - serialized_start=6171, - serialized_end=9182, -) -_sym_db.RegisterEnumDescriptor(_MESSAGETYPE) - -MessageType = enum_type_wrapper.EnumTypeWrapper(_MESSAGETYPE) -MessageType_Initialize = 0 -MessageType_Ping = 1 -MessageType_Success = 2 -MessageType_Failure = 3 -MessageType_ChangePin = 4 -MessageType_WipeDevice = 5 -MessageType_FirmwareErase = 6 -MessageType_FirmwareUpload = 7 -MessageType_FirmwareRequest = 8 -MessageType_GetEntropy = 9 -MessageType_Entropy = 10 -MessageType_GetPublicKey = 11 -MessageType_PublicKey = 12 -MessageType_LoadDevice = 13 -MessageType_ResetDevice = 14 -MessageType_SignTx = 15 -MessageType_SimpleSignTx = 16 -MessageType_Features = 17 -MessageType_PinMatrixRequest = 18 -MessageType_PinMatrixAck = 19 -MessageType_Cancel = 20 -MessageType_TxRequest = 21 -MessageType_TxAck = 22 -MessageType_CipherKeyValue = 23 -MessageType_ClearSession = 24 -MessageType_ApplySettings = 25 -MessageType_ButtonRequest = 26 -MessageType_ButtonAck = 27 -MessageType_ApplyFlags = 28 -MessageType_GetAddress = 29 -MessageType_Address = 30 -MessageType_SelfTest = 32 -MessageType_BackupDevice = 34 -MessageType_EntropyRequest = 35 -MessageType_EntropyAck = 36 -MessageType_SignMessage = 38 -MessageType_VerifyMessage = 39 -MessageType_MessageSignature = 40 -MessageType_PassphraseRequest = 41 -MessageType_PassphraseAck = 42 -MessageType_EstimateTxSize = 43 -MessageType_TxSize = 44 -MessageType_RecoveryDevice = 45 -MessageType_WordRequest = 46 -MessageType_WordAck = 47 -MessageType_CipheredKeyValue = 48 -MessageType_EncryptMessage = 49 -MessageType_EncryptedMessage = 50 -MessageType_DecryptMessage = 51 -MessageType_DecryptedMessage = 52 -MessageType_SignIdentity = 53 -MessageType_SignedIdentity = 54 -MessageType_GetFeatures = 55 -MessageType_EthereumGetAddress = 56 -MessageType_EthereumAddress = 57 -MessageType_EthereumSignTx = 58 -MessageType_EthereumTxRequest = 59 -MessageType_EthereumTxAck = 60 -MessageType_GetECDHSessionKey = 61 -MessageType_ECDHSessionKey = 62 -MessageType_SetU2FCounter = 63 -MessageType_EthereumSignMessage = 64 -MessageType_EthereumVerifyMessage = 65 -MessageType_EthereumMessageSignature = 66 -MessageType_NEMGetAddress = 67 -MessageType_NEMAddress = 68 -MessageType_NEMSignTx = 69 -MessageType_NEMSignedTx = 70 -MessageType_CosiCommit = 71 -MessageType_CosiCommitment = 72 -MessageType_CosiSign = 73 -MessageType_CosiSignature = 74 -MessageType_DebugLinkDecision = 100 -MessageType_DebugLinkGetState = 101 -MessageType_DebugLinkState = 102 -MessageType_DebugLinkStop = 103 -MessageType_DebugLinkLog = 104 -MessageType_DebugLinkMemoryRead = 110 -MessageType_DebugLinkMemory = 111 -MessageType_DebugLinkMemoryWrite = 112 -MessageType_DebugLinkFlashErase = 113 - - - -_INITIALIZE = _descriptor.Descriptor( - name='Initialize', - full_name='Initialize', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=31, - serialized_end=43, -) - - -_GETFEATURES = _descriptor.Descriptor( - name='GetFeatures', - full_name='GetFeatures', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=45, - serialized_end=58, -) - - -_FEATURES = _descriptor.Descriptor( - name='Features', - full_name='Features', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='vendor', full_name='Features.vendor', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='major_version', full_name='Features.major_version', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='minor_version', full_name='Features.minor_version', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='patch_version', full_name='Features.patch_version', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='bootloader_mode', full_name='Features.bootloader_mode', index=4, - number=5, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='device_id', full_name='Features.device_id', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='pin_protection', full_name='Features.pin_protection', index=6, - number=7, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='passphrase_protection', full_name='Features.passphrase_protection', index=7, - number=8, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='language', full_name='Features.language', index=8, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='label', full_name='Features.label', index=9, - number=10, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='coins', full_name='Features.coins', index=10, - number=11, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='initialized', full_name='Features.initialized', index=11, - number=12, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='revision', full_name='Features.revision', index=12, - number=13, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='bootloader_hash', full_name='Features.bootloader_hash', index=13, - number=14, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='imported', full_name='Features.imported', index=14, - number=15, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='pin_cached', full_name='Features.pin_cached', index=15, - number=16, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='passphrase_cached', full_name='Features.passphrase_cached', index=16, - number=17, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='firmware_present', full_name='Features.firmware_present', index=17, - number=18, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='needs_backup', full_name='Features.needs_backup', index=18, - number=19, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='flags', full_name='Features.flags', index=19, - number=20, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=61, - serialized_end=506, -) - - -_CLEARSESSION = _descriptor.Descriptor( - name='ClearSession', - full_name='ClearSession', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=508, - serialized_end=522, -) - - -_APPLYSETTINGS = _descriptor.Descriptor( - name='ApplySettings', - full_name='ApplySettings', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='language', full_name='ApplySettings.language', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='label', full_name='ApplySettings.label', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='use_passphrase', full_name='ApplySettings.use_passphrase', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='homescreen', full_name='ApplySettings.homescreen', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=524, - serialized_end=616, -) - - -_APPLYFLAGS = _descriptor.Descriptor( - name='ApplyFlags', - full_name='ApplyFlags', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='flags', full_name='ApplyFlags.flags', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=618, - serialized_end=645, -) - - -_CHANGEPIN = _descriptor.Descriptor( - name='ChangePin', - full_name='ChangePin', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='remove', full_name='ChangePin.remove', index=0, - number=1, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=647, - serialized_end=674, -) - - -_PING = _descriptor.Descriptor( - name='Ping', - full_name='Ping', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='message', full_name='Ping.message', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='button_protection', full_name='Ping.button_protection', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='pin_protection', full_name='Ping.pin_protection', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='passphrase_protection', full_name='Ping.passphrase_protection', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=676, - serialized_end=781, -) - - -_SUCCESS = _descriptor.Descriptor( - name='Success', - full_name='Success', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='message', full_name='Success.message', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=783, - serialized_end=809, -) - - -_FAILURE = _descriptor.Descriptor( - name='Failure', - full_name='Failure', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='code', full_name='Failure.code', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=1, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='message', full_name='Failure.message', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=811, - serialized_end=865, -) - - -_BUTTONREQUEST = _descriptor.Descriptor( - name='ButtonRequest', - full_name='ButtonRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='code', full_name='ButtonRequest.code', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=1, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='data', full_name='ButtonRequest.data', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=867, - serialized_end=930, -) - - -_BUTTONACK = _descriptor.Descriptor( - name='ButtonAck', - full_name='ButtonAck', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=932, - serialized_end=943, -) - - -_PINMATRIXREQUEST = _descriptor.Descriptor( - name='PinMatrixRequest', - full_name='PinMatrixRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='PinMatrixRequest.type', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=1, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=945, - serialized_end=1000, -) - - -_PINMATRIXACK = _descriptor.Descriptor( - name='PinMatrixAck', - full_name='PinMatrixAck', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='pin', full_name='PinMatrixAck.pin', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1002, - serialized_end=1029, -) - - -_CANCEL = _descriptor.Descriptor( - name='Cancel', - full_name='Cancel', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1031, - serialized_end=1039, -) - - -_PASSPHRASEREQUEST = _descriptor.Descriptor( - name='PassphraseRequest', - full_name='PassphraseRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1041, - serialized_end=1060, -) - - -_PASSPHRASEACK = _descriptor.Descriptor( - name='PassphraseAck', - full_name='PassphraseAck', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='passphrase', full_name='PassphraseAck.passphrase', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1062, - serialized_end=1097, -) - - -_GETENTROPY = _descriptor.Descriptor( - name='GetEntropy', - full_name='GetEntropy', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='size', full_name='GetEntropy.size', index=0, - number=1, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1099, - serialized_end=1125, -) - - -_ENTROPY = _descriptor.Descriptor( - name='Entropy', - full_name='Entropy', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='entropy', full_name='Entropy.entropy', index=0, - number=1, type=12, cpp_type=9, label=2, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1127, - serialized_end=1153, -) - - -_GETPUBLICKEY = _descriptor.Descriptor( - name='GetPublicKey', - full_name='GetPublicKey', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='GetPublicKey.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='ecdsa_curve_name', full_name='GetPublicKey.ecdsa_curve_name', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='show_display', full_name='GetPublicKey.show_display', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='coin_name', full_name='GetPublicKey.coin_name', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=True, default_value=_b("Bitcoin").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1155, - serialized_end=1264, -) - - -_PUBLICKEY = _descriptor.Descriptor( - name='PublicKey', - full_name='PublicKey', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='node', full_name='PublicKey.node', index=0, - number=1, type=11, cpp_type=10, label=2, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='xpub', full_name='PublicKey.xpub', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1266, - serialized_end=1318, -) - - -_GETADDRESS = _descriptor.Descriptor( - name='GetAddress', - full_name='GetAddress', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='GetAddress.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='coin_name', full_name='GetAddress.coin_name', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=True, default_value=_b("Bitcoin").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='show_display', full_name='GetAddress.show_display', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='multisig', full_name='GetAddress.multisig', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='script_type', full_name='GetAddress.script_type', index=4, - number=5, type=14, cpp_type=8, label=1, - has_default_value=True, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1321, - serialized_end=1500, -) - - -_ETHEREUMGETADDRESS = _descriptor.Descriptor( - name='EthereumGetAddress', - full_name='EthereumGetAddress', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='EthereumGetAddress.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='show_display', full_name='EthereumGetAddress.show_display', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1502, - serialized_end=1563, -) - - -_ADDRESS = _descriptor.Descriptor( - name='Address', - full_name='Address', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='Address.address', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1565, - serialized_end=1591, -) - - -_ETHEREUMADDRESS = _descriptor.Descriptor( - name='EthereumAddress', - full_name='EthereumAddress', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='EthereumAddress.address', index=0, - number=1, type=12, cpp_type=9, label=2, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1593, - serialized_end=1627, -) - - -_WIPEDEVICE = _descriptor.Descriptor( - name='WipeDevice', - full_name='WipeDevice', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1629, - serialized_end=1641, -) - - -_LOADDEVICE = _descriptor.Descriptor( - name='LoadDevice', - full_name='LoadDevice', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='mnemonic', full_name='LoadDevice.mnemonic', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='node', full_name='LoadDevice.node', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='pin', full_name='LoadDevice.pin', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='passphrase_protection', full_name='LoadDevice.passphrase_protection', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='language', full_name='LoadDevice.language', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=True, default_value=_b("english").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='label', full_name='LoadDevice.label', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='skip_checksum', full_name='LoadDevice.skip_checksum', index=6, - number=7, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='u2f_counter', full_name='LoadDevice.u2f_counter', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1644, - serialized_end=1831, -) - - -_RESETDEVICE = _descriptor.Descriptor( - name='ResetDevice', - full_name='ResetDevice', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='display_random', full_name='ResetDevice.display_random', index=0, - number=1, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='strength', full_name='ResetDevice.strength', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=True, default_value=256, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='passphrase_protection', full_name='ResetDevice.passphrase_protection', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='pin_protection', full_name='ResetDevice.pin_protection', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='language', full_name='ResetDevice.language', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=True, default_value=_b("english").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='label', full_name='ResetDevice.label', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='u2f_counter', full_name='ResetDevice.u2f_counter', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='skip_backup', full_name='ResetDevice.skip_backup', index=7, - number=8, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1834, - serialized_end=2033, -) - - -_BACKUPDEVICE = _descriptor.Descriptor( - name='BackupDevice', - full_name='BackupDevice', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2035, - serialized_end=2049, -) - - -_ENTROPYREQUEST = _descriptor.Descriptor( - name='EntropyRequest', - full_name='EntropyRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2051, - serialized_end=2067, -) - - -_ENTROPYACK = _descriptor.Descriptor( - name='EntropyAck', - full_name='EntropyAck', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='entropy', full_name='EntropyAck.entropy', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2069, - serialized_end=2098, -) - - -_RECOVERYDEVICE = _descriptor.Descriptor( - name='RecoveryDevice', - full_name='RecoveryDevice', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='word_count', full_name='RecoveryDevice.word_count', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='passphrase_protection', full_name='RecoveryDevice.passphrase_protection', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='pin_protection', full_name='RecoveryDevice.pin_protection', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='language', full_name='RecoveryDevice.language', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=True, default_value=_b("english").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='label', full_name='RecoveryDevice.label', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='enforce_wordlist', full_name='RecoveryDevice.enforce_wordlist', index=5, - number=6, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='type', full_name='RecoveryDevice.type', index=6, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='u2f_counter', full_name='RecoveryDevice.u2f_counter', index=7, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='dry_run', full_name='RecoveryDevice.dry_run', index=8, - number=10, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2101, - serialized_end=2312, -) - - -_WORDREQUEST = _descriptor.Descriptor( - name='WordRequest', - full_name='WordRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='WordRequest.type', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2314, - serialized_end=2359, -) - - -_WORDACK = _descriptor.Descriptor( - name='WordAck', - full_name='WordAck', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='word', full_name='WordAck.word', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2361, - serialized_end=2384, -) - - -_SIGNMESSAGE = _descriptor.Descriptor( - name='SignMessage', - full_name='SignMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='SignMessage.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='message', full_name='SignMessage.message', index=1, - number=2, type=12, cpp_type=9, label=2, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='coin_name', full_name='SignMessage.coin_name', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=True, default_value=_b("Bitcoin").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='script_type', full_name='SignMessage.script_type', index=3, - number=4, type=14, cpp_type=8, label=1, - has_default_value=True, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2387, - serialized_end=2517, -) - - -_VERIFYMESSAGE = _descriptor.Descriptor( - name='VerifyMessage', - full_name='VerifyMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='VerifyMessage.address', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signature', full_name='VerifyMessage.signature', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='message', full_name='VerifyMessage.message', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='coin_name', full_name='VerifyMessage.coin_name', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=True, default_value=_b("Bitcoin").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2519, - serialized_end=2615, -) - - -_MESSAGESIGNATURE = _descriptor.Descriptor( - name='MessageSignature', - full_name='MessageSignature', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='MessageSignature.address', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signature', full_name='MessageSignature.signature', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2617, - serialized_end=2671, -) - - -_ENCRYPTMESSAGE = _descriptor.Descriptor( - name='EncryptMessage', - full_name='EncryptMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='pubkey', full_name='EncryptMessage.pubkey', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='message', full_name='EncryptMessage.message', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='display_only', full_name='EncryptMessage.display_only', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='address_n', full_name='EncryptMessage.address_n', index=3, - number=4, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='coin_name', full_name='EncryptMessage.coin_name', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=True, default_value=_b("Bitcoin").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2673, - serialized_end=2791, -) - - -_ENCRYPTEDMESSAGE = _descriptor.Descriptor( - name='EncryptedMessage', - full_name='EncryptedMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='nonce', full_name='EncryptedMessage.nonce', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='message', full_name='EncryptedMessage.message', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='hmac', full_name='EncryptedMessage.hmac', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2793, - serialized_end=2857, -) - - -_DECRYPTMESSAGE = _descriptor.Descriptor( - name='DecryptMessage', - full_name='DecryptMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='DecryptMessage.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='nonce', full_name='DecryptMessage.nonce', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='message', full_name='DecryptMessage.message', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='hmac', full_name='DecryptMessage.hmac', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2859, - serialized_end=2940, -) - - -_DECRYPTEDMESSAGE = _descriptor.Descriptor( - name='DecryptedMessage', - full_name='DecryptedMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='message', full_name='DecryptedMessage.message', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='address', full_name='DecryptedMessage.address', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2942, - serialized_end=2994, -) - - -_CIPHERKEYVALUE = _descriptor.Descriptor( - name='CipherKeyValue', - full_name='CipherKeyValue', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='CipherKeyValue.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='key', full_name='CipherKeyValue.key', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='value', full_name='CipherKeyValue.value', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='encrypt', full_name='CipherKeyValue.encrypt', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='ask_on_encrypt', full_name='CipherKeyValue.ask_on_encrypt', index=4, - number=5, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='ask_on_decrypt', full_name='CipherKeyValue.ask_on_decrypt', index=5, - number=6, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='iv', full_name='CipherKeyValue.iv', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2997, - serialized_end=3137, -) - - -_CIPHEREDKEYVALUE = _descriptor.Descriptor( - name='CipheredKeyValue', - full_name='CipheredKeyValue', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='value', full_name='CipheredKeyValue.value', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3139, - serialized_end=3172, -) - - -_ESTIMATETXSIZE = _descriptor.Descriptor( - name='EstimateTxSize', - full_name='EstimateTxSize', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='outputs_count', full_name='EstimateTxSize.outputs_count', index=0, - number=1, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='inputs_count', full_name='EstimateTxSize.inputs_count', index=1, - number=2, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='coin_name', full_name='EstimateTxSize.coin_name', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=True, default_value=_b("Bitcoin").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3174, - serialized_end=3263, -) - - -_TXSIZE = _descriptor.Descriptor( - name='TxSize', - full_name='TxSize', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='tx_size', full_name='TxSize.tx_size', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3265, - serialized_end=3290, -) - - -_SIGNTX = _descriptor.Descriptor( - name='SignTx', - full_name='SignTx', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='outputs_count', full_name='SignTx.outputs_count', index=0, - number=1, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='inputs_count', full_name='SignTx.inputs_count', index=1, - number=2, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='coin_name', full_name='SignTx.coin_name', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=True, default_value=_b("Bitcoin").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='version', full_name='SignTx.version', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=True, default_value=1, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='lock_time', full_name='SignTx.lock_time', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=True, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3292, - serialized_end=3415, -) - - -_SIMPLESIGNTX = _descriptor.Descriptor( - name='SimpleSignTx', - full_name='SimpleSignTx', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='inputs', full_name='SimpleSignTx.inputs', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='outputs', full_name='SimpleSignTx.outputs', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='transactions', full_name='SimpleSignTx.transactions', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='coin_name', full_name='SimpleSignTx.coin_name', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=True, default_value=_b("Bitcoin").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='version', full_name='SimpleSignTx.version', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=True, default_value=1, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='lock_time', full_name='SimpleSignTx.lock_time', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=True, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3418, - serialized_end=3604, -) - - -_TXREQUEST = _descriptor.Descriptor( - name='TxRequest', - full_name='TxRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='request_type', full_name='TxRequest.request_type', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='details', full_name='TxRequest.details', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='serialized', full_name='TxRequest.serialized', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3607, - serialized_end=3740, -) - - -_TXACK = _descriptor.Descriptor( - name='TxAck', - full_name='TxAck', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='tx', full_name='TxAck.tx', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3742, - serialized_end=3779, -) - - -_ETHEREUMSIGNTX = _descriptor.Descriptor( - name='EthereumSignTx', - full_name='EthereumSignTx', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='EthereumSignTx.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='nonce', full_name='EthereumSignTx.nonce', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='gas_price', full_name='EthereumSignTx.gas_price', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='gas_limit', full_name='EthereumSignTx.gas_limit', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='to', full_name='EthereumSignTx.to', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='value', full_name='EthereumSignTx.value', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='data_initial_chunk', full_name='EthereumSignTx.data_initial_chunk', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='data_length', full_name='EthereumSignTx.data_length', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='chain_id', full_name='EthereumSignTx.chain_id', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3782, - serialized_end=3964, -) - - -_ETHEREUMTXREQUEST = _descriptor.Descriptor( - name='EthereumTxRequest', - full_name='EthereumTxRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='data_length', full_name='EthereumTxRequest.data_length', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signature_v', full_name='EthereumTxRequest.signature_v', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signature_r', full_name='EthereumTxRequest.signature_r', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signature_s', full_name='EthereumTxRequest.signature_s', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3966, - serialized_end=4069, -) - - -_ETHEREUMTXACK = _descriptor.Descriptor( - name='EthereumTxAck', - full_name='EthereumTxAck', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='data_chunk', full_name='EthereumTxAck.data_chunk', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4071, - serialized_end=4106, -) - - -_ETHEREUMSIGNMESSAGE = _descriptor.Descriptor( - name='EthereumSignMessage', - full_name='EthereumSignMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='EthereumSignMessage.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='message', full_name='EthereumSignMessage.message', index=1, - number=2, type=12, cpp_type=9, label=2, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4108, - serialized_end=4165, -) - - -_ETHEREUMVERIFYMESSAGE = _descriptor.Descriptor( - name='EthereumVerifyMessage', - full_name='EthereumVerifyMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='EthereumVerifyMessage.address', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signature', full_name='EthereumVerifyMessage.signature', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='message', full_name='EthereumVerifyMessage.message', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4167, - serialized_end=4243, -) - - -_ETHEREUMMESSAGESIGNATURE = _descriptor.Descriptor( - name='EthereumMessageSignature', - full_name='EthereumMessageSignature', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='EthereumMessageSignature.address', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signature', full_name='EthereumMessageSignature.signature', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4245, - serialized_end=4307, -) - - -_SIGNIDENTITY = _descriptor.Descriptor( - name='SignIdentity', - full_name='SignIdentity', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='identity', full_name='SignIdentity.identity', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='challenge_hidden', full_name='SignIdentity.challenge_hidden', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='challenge_visual', full_name='SignIdentity.challenge_visual', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='ecdsa_curve_name', full_name='SignIdentity.ecdsa_curve_name', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4309, - serialized_end=4434, -) - - -_SIGNEDIDENTITY = _descriptor.Descriptor( - name='SignedIdentity', - full_name='SignedIdentity', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='SignedIdentity.address', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='public_key', full_name='SignedIdentity.public_key', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signature', full_name='SignedIdentity.signature', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4436, - serialized_end=4508, -) - - -_GETECDHSESSIONKEY = _descriptor.Descriptor( - name='GetECDHSessionKey', - full_name='GetECDHSessionKey', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='identity', full_name='GetECDHSessionKey.identity', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='peer_public_key', full_name='GetECDHSessionKey.peer_public_key', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='ecdsa_curve_name', full_name='GetECDHSessionKey.ecdsa_curve_name', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4510, - serialized_end=4613, -) - - -_ECDHSESSIONKEY = _descriptor.Descriptor( - name='ECDHSessionKey', - full_name='ECDHSessionKey', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='session_key', full_name='ECDHSessionKey.session_key', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4615, - serialized_end=4652, -) - - -_SETU2FCOUNTER = _descriptor.Descriptor( - name='SetU2FCounter', - full_name='SetU2FCounter', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='u2f_counter', full_name='SetU2FCounter.u2f_counter', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4654, - serialized_end=4690, -) - - -_FIRMWAREERASE = _descriptor.Descriptor( - name='FirmwareErase', - full_name='FirmwareErase', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='length', full_name='FirmwareErase.length', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4692, - serialized_end=4723, -) - - -_FIRMWAREREQUEST = _descriptor.Descriptor( - name='FirmwareRequest', - full_name='FirmwareRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='offset', full_name='FirmwareRequest.offset', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='length', full_name='FirmwareRequest.length', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4725, - serialized_end=4774, -) - - -_FIRMWAREUPLOAD = _descriptor.Descriptor( - name='FirmwareUpload', - full_name='FirmwareUpload', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='payload', full_name='FirmwareUpload.payload', index=0, - number=1, type=12, cpp_type=9, label=2, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='hash', full_name='FirmwareUpload.hash', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4776, - serialized_end=4823, -) - - -_SELFTEST = _descriptor.Descriptor( - name='SelfTest', - full_name='SelfTest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='payload', full_name='SelfTest.payload', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4825, - serialized_end=4852, -) - - -_NEMGETADDRESS = _descriptor.Descriptor( - name='NEMGetAddress', - full_name='NEMGetAddress', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='NEMGetAddress.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='network', full_name='NEMGetAddress.network', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='show_display', full_name='NEMGetAddress.show_display', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4854, - serialized_end=4927, -) - - -_NEMADDRESS = _descriptor.Descriptor( - name='NEMAddress', - full_name='NEMAddress', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='NEMAddress.address', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4929, - serialized_end=4958, -) - - -_NEMSIGNTX = _descriptor.Descriptor( - name='NEMSignTx', - full_name='NEMSignTx', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='transaction', full_name='NEMSignTx.transaction', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='multisig', full_name='NEMSignTx.multisig', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='transfer', full_name='NEMSignTx.transfer', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='cosigning', full_name='NEMSignTx.cosigning', index=3, - number=4, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='provision_namespace', full_name='NEMSignTx.provision_namespace', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='mosaic_creation', full_name='NEMSignTx.mosaic_creation', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='supply_change', full_name='NEMSignTx.supply_change', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='aggregate_modification', full_name='NEMSignTx.aggregate_modification', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4961, - serialized_end=5312, -) - - -_NEMSIGNEDTX = _descriptor.Descriptor( - name='NEMSignedTx', - full_name='NEMSignedTx', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='data', full_name='NEMSignedTx.data', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signature', full_name='NEMSignedTx.signature', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5314, - serialized_end=5360, -) - - -_COSICOMMIT = _descriptor.Descriptor( - name='CosiCommit', - full_name='CosiCommit', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='CosiCommit.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='data', full_name='CosiCommit.data', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5362, - serialized_end=5407, -) - - -_COSICOMMITMENT = _descriptor.Descriptor( - name='CosiCommitment', - full_name='CosiCommitment', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='commitment', full_name='CosiCommitment.commitment', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='pubkey', full_name='CosiCommitment.pubkey', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5409, - serialized_end=5461, -) - - -_COSISIGN = _descriptor.Descriptor( - name='CosiSign', - full_name='CosiSign', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='CosiSign.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='data', full_name='CosiSign.data', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='global_commitment', full_name='CosiSign.global_commitment', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='global_pubkey', full_name='CosiSign.global_pubkey', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5463, - serialized_end=5556, -) - - -_COSISIGNATURE = _descriptor.Descriptor( - name='CosiSignature', - full_name='CosiSignature', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='signature', full_name='CosiSignature.signature', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5558, - serialized_end=5592, -) - - -_DEBUGLINKDECISION = _descriptor.Descriptor( - name='DebugLinkDecision', - full_name='DebugLinkDecision', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='yes_no', full_name='DebugLinkDecision.yes_no', index=0, - number=1, type=8, cpp_type=7, label=2, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5594, - serialized_end=5629, -) - - -_DEBUGLINKGETSTATE = _descriptor.Descriptor( - name='DebugLinkGetState', - full_name='DebugLinkGetState', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5631, - serialized_end=5650, -) - - -_DEBUGLINKSTATE = _descriptor.Descriptor( - name='DebugLinkState', - full_name='DebugLinkState', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='layout', full_name='DebugLinkState.layout', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='pin', full_name='DebugLinkState.pin', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='matrix', full_name='DebugLinkState.matrix', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='mnemonic', full_name='DebugLinkState.mnemonic', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='node', full_name='DebugLinkState.node', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='passphrase_protection', full_name='DebugLinkState.passphrase_protection', index=5, - number=6, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='reset_word', full_name='DebugLinkState.reset_word', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='reset_entropy', full_name='DebugLinkState.reset_entropy', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='recovery_fake_word', full_name='DebugLinkState.recovery_fake_word', index=8, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='recovery_word_pos', full_name='DebugLinkState.recovery_word_pos', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5653, - serialized_end=5888, -) - - -_DEBUGLINKSTOP = _descriptor.Descriptor( - name='DebugLinkStop', - full_name='DebugLinkStop', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5890, - serialized_end=5905, -) - - -_DEBUGLINKLOG = _descriptor.Descriptor( - name='DebugLinkLog', - full_name='DebugLinkLog', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='level', full_name='DebugLinkLog.level', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='bucket', full_name='DebugLinkLog.bucket', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='text', full_name='DebugLinkLog.text', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5907, - serialized_end=5966, -) - - -_DEBUGLINKMEMORYREAD = _descriptor.Descriptor( - name='DebugLinkMemoryRead', - full_name='DebugLinkMemoryRead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='DebugLinkMemoryRead.address', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='length', full_name='DebugLinkMemoryRead.length', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5968, - serialized_end=6022, -) - - -_DEBUGLINKMEMORY = _descriptor.Descriptor( - name='DebugLinkMemory', - full_name='DebugLinkMemory', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='memory', full_name='DebugLinkMemory.memory', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6024, - serialized_end=6057, -) - - -_DEBUGLINKMEMORYWRITE = _descriptor.Descriptor( - name='DebugLinkMemoryWrite', - full_name='DebugLinkMemoryWrite', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='DebugLinkMemoryWrite.address', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='memory', full_name='DebugLinkMemoryWrite.memory', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='flash', full_name='DebugLinkMemoryWrite.flash', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6059, - serialized_end=6129, -) - - -_DEBUGLINKFLASHERASE = _descriptor.Descriptor( - name='DebugLinkFlashErase', - full_name='DebugLinkFlashErase', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='sector', full_name='DebugLinkFlashErase.sector', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6131, - serialized_end=6168, -) - -_FEATURES.fields_by_name['coins'].message_type = types__pb2._COINTYPE -_FAILURE.fields_by_name['code'].enum_type = types__pb2._FAILURETYPE -_BUTTONREQUEST.fields_by_name['code'].enum_type = types__pb2._BUTTONREQUESTTYPE -_PINMATRIXREQUEST.fields_by_name['type'].enum_type = types__pb2._PINMATRIXREQUESTTYPE -_PUBLICKEY.fields_by_name['node'].message_type = types__pb2._HDNODETYPE -_GETADDRESS.fields_by_name['multisig'].message_type = types__pb2._MULTISIGREDEEMSCRIPTTYPE -_GETADDRESS.fields_by_name['script_type'].enum_type = types__pb2._INPUTSCRIPTTYPE -_LOADDEVICE.fields_by_name['node'].message_type = types__pb2._HDNODETYPE -_WORDREQUEST.fields_by_name['type'].enum_type = types__pb2._WORDREQUESTTYPE -_SIGNMESSAGE.fields_by_name['script_type'].enum_type = types__pb2._INPUTSCRIPTTYPE -_SIMPLESIGNTX.fields_by_name['inputs'].message_type = types__pb2._TXINPUTTYPE -_SIMPLESIGNTX.fields_by_name['outputs'].message_type = types__pb2._TXOUTPUTTYPE -_SIMPLESIGNTX.fields_by_name['transactions'].message_type = types__pb2._TRANSACTIONTYPE -_TXREQUEST.fields_by_name['request_type'].enum_type = types__pb2._REQUESTTYPE -_TXREQUEST.fields_by_name['details'].message_type = types__pb2._TXREQUESTDETAILSTYPE -_TXREQUEST.fields_by_name['serialized'].message_type = types__pb2._TXREQUESTSERIALIZEDTYPE -_TXACK.fields_by_name['tx'].message_type = types__pb2._TRANSACTIONTYPE -_SIGNIDENTITY.fields_by_name['identity'].message_type = types__pb2._IDENTITYTYPE -_GETECDHSESSIONKEY.fields_by_name['identity'].message_type = types__pb2._IDENTITYTYPE -_NEMSIGNTX.fields_by_name['transaction'].message_type = types__pb2._NEMTRANSACTIONCOMMON -_NEMSIGNTX.fields_by_name['multisig'].message_type = types__pb2._NEMTRANSACTIONCOMMON -_NEMSIGNTX.fields_by_name['transfer'].message_type = types__pb2._NEMTRANSFER -_NEMSIGNTX.fields_by_name['provision_namespace'].message_type = types__pb2._NEMPROVISIONNAMESPACE -_NEMSIGNTX.fields_by_name['mosaic_creation'].message_type = types__pb2._NEMMOSAICCREATION -_NEMSIGNTX.fields_by_name['supply_change'].message_type = types__pb2._NEMMOSAICSUPPLYCHANGE -_NEMSIGNTX.fields_by_name['aggregate_modification'].message_type = types__pb2._NEMAGGREGATEMODIFICATION -_DEBUGLINKSTATE.fields_by_name['node'].message_type = types__pb2._HDNODETYPE -DESCRIPTOR.message_types_by_name['Initialize'] = _INITIALIZE -DESCRIPTOR.message_types_by_name['GetFeatures'] = _GETFEATURES -DESCRIPTOR.message_types_by_name['Features'] = _FEATURES -DESCRIPTOR.message_types_by_name['ClearSession'] = _CLEARSESSION -DESCRIPTOR.message_types_by_name['ApplySettings'] = _APPLYSETTINGS -DESCRIPTOR.message_types_by_name['ApplyFlags'] = _APPLYFLAGS -DESCRIPTOR.message_types_by_name['ChangePin'] = _CHANGEPIN -DESCRIPTOR.message_types_by_name['Ping'] = _PING -DESCRIPTOR.message_types_by_name['Success'] = _SUCCESS -DESCRIPTOR.message_types_by_name['Failure'] = _FAILURE -DESCRIPTOR.message_types_by_name['ButtonRequest'] = _BUTTONREQUEST -DESCRIPTOR.message_types_by_name['ButtonAck'] = _BUTTONACK -DESCRIPTOR.message_types_by_name['PinMatrixRequest'] = _PINMATRIXREQUEST -DESCRIPTOR.message_types_by_name['PinMatrixAck'] = _PINMATRIXACK -DESCRIPTOR.message_types_by_name['Cancel'] = _CANCEL -DESCRIPTOR.message_types_by_name['PassphraseRequest'] = _PASSPHRASEREQUEST -DESCRIPTOR.message_types_by_name['PassphraseAck'] = _PASSPHRASEACK -DESCRIPTOR.message_types_by_name['GetEntropy'] = _GETENTROPY -DESCRIPTOR.message_types_by_name['Entropy'] = _ENTROPY -DESCRIPTOR.message_types_by_name['GetPublicKey'] = _GETPUBLICKEY -DESCRIPTOR.message_types_by_name['PublicKey'] = _PUBLICKEY -DESCRIPTOR.message_types_by_name['GetAddress'] = _GETADDRESS -DESCRIPTOR.message_types_by_name['EthereumGetAddress'] = _ETHEREUMGETADDRESS -DESCRIPTOR.message_types_by_name['Address'] = _ADDRESS -DESCRIPTOR.message_types_by_name['EthereumAddress'] = _ETHEREUMADDRESS -DESCRIPTOR.message_types_by_name['WipeDevice'] = _WIPEDEVICE -DESCRIPTOR.message_types_by_name['LoadDevice'] = _LOADDEVICE -DESCRIPTOR.message_types_by_name['ResetDevice'] = _RESETDEVICE -DESCRIPTOR.message_types_by_name['BackupDevice'] = _BACKUPDEVICE -DESCRIPTOR.message_types_by_name['EntropyRequest'] = _ENTROPYREQUEST -DESCRIPTOR.message_types_by_name['EntropyAck'] = _ENTROPYACK -DESCRIPTOR.message_types_by_name['RecoveryDevice'] = _RECOVERYDEVICE -DESCRIPTOR.message_types_by_name['WordRequest'] = _WORDREQUEST -DESCRIPTOR.message_types_by_name['WordAck'] = _WORDACK -DESCRIPTOR.message_types_by_name['SignMessage'] = _SIGNMESSAGE -DESCRIPTOR.message_types_by_name['VerifyMessage'] = _VERIFYMESSAGE -DESCRIPTOR.message_types_by_name['MessageSignature'] = _MESSAGESIGNATURE -DESCRIPTOR.message_types_by_name['EncryptMessage'] = _ENCRYPTMESSAGE -DESCRIPTOR.message_types_by_name['EncryptedMessage'] = _ENCRYPTEDMESSAGE -DESCRIPTOR.message_types_by_name['DecryptMessage'] = _DECRYPTMESSAGE -DESCRIPTOR.message_types_by_name['DecryptedMessage'] = _DECRYPTEDMESSAGE -DESCRIPTOR.message_types_by_name['CipherKeyValue'] = _CIPHERKEYVALUE -DESCRIPTOR.message_types_by_name['CipheredKeyValue'] = _CIPHEREDKEYVALUE -DESCRIPTOR.message_types_by_name['EstimateTxSize'] = _ESTIMATETXSIZE -DESCRIPTOR.message_types_by_name['TxSize'] = _TXSIZE -DESCRIPTOR.message_types_by_name['SignTx'] = _SIGNTX -DESCRIPTOR.message_types_by_name['SimpleSignTx'] = _SIMPLESIGNTX -DESCRIPTOR.message_types_by_name['TxRequest'] = _TXREQUEST -DESCRIPTOR.message_types_by_name['TxAck'] = _TXACK -DESCRIPTOR.message_types_by_name['EthereumSignTx'] = _ETHEREUMSIGNTX -DESCRIPTOR.message_types_by_name['EthereumTxRequest'] = _ETHEREUMTXREQUEST -DESCRIPTOR.message_types_by_name['EthereumTxAck'] = _ETHEREUMTXACK -DESCRIPTOR.message_types_by_name['EthereumSignMessage'] = _ETHEREUMSIGNMESSAGE -DESCRIPTOR.message_types_by_name['EthereumVerifyMessage'] = _ETHEREUMVERIFYMESSAGE -DESCRIPTOR.message_types_by_name['EthereumMessageSignature'] = _ETHEREUMMESSAGESIGNATURE -DESCRIPTOR.message_types_by_name['SignIdentity'] = _SIGNIDENTITY -DESCRIPTOR.message_types_by_name['SignedIdentity'] = _SIGNEDIDENTITY -DESCRIPTOR.message_types_by_name['GetECDHSessionKey'] = _GETECDHSESSIONKEY -DESCRIPTOR.message_types_by_name['ECDHSessionKey'] = _ECDHSESSIONKEY -DESCRIPTOR.message_types_by_name['SetU2FCounter'] = _SETU2FCOUNTER -DESCRIPTOR.message_types_by_name['FirmwareErase'] = _FIRMWAREERASE -DESCRIPTOR.message_types_by_name['FirmwareRequest'] = _FIRMWAREREQUEST -DESCRIPTOR.message_types_by_name['FirmwareUpload'] = _FIRMWAREUPLOAD -DESCRIPTOR.message_types_by_name['SelfTest'] = _SELFTEST -DESCRIPTOR.message_types_by_name['NEMGetAddress'] = _NEMGETADDRESS -DESCRIPTOR.message_types_by_name['NEMAddress'] = _NEMADDRESS -DESCRIPTOR.message_types_by_name['NEMSignTx'] = _NEMSIGNTX -DESCRIPTOR.message_types_by_name['NEMSignedTx'] = _NEMSIGNEDTX -DESCRIPTOR.message_types_by_name['CosiCommit'] = _COSICOMMIT -DESCRIPTOR.message_types_by_name['CosiCommitment'] = _COSICOMMITMENT -DESCRIPTOR.message_types_by_name['CosiSign'] = _COSISIGN -DESCRIPTOR.message_types_by_name['CosiSignature'] = _COSISIGNATURE -DESCRIPTOR.message_types_by_name['DebugLinkDecision'] = _DEBUGLINKDECISION -DESCRIPTOR.message_types_by_name['DebugLinkGetState'] = _DEBUGLINKGETSTATE -DESCRIPTOR.message_types_by_name['DebugLinkState'] = _DEBUGLINKSTATE -DESCRIPTOR.message_types_by_name['DebugLinkStop'] = _DEBUGLINKSTOP -DESCRIPTOR.message_types_by_name['DebugLinkLog'] = _DEBUGLINKLOG -DESCRIPTOR.message_types_by_name['DebugLinkMemoryRead'] = _DEBUGLINKMEMORYREAD -DESCRIPTOR.message_types_by_name['DebugLinkMemory'] = _DEBUGLINKMEMORY -DESCRIPTOR.message_types_by_name['DebugLinkMemoryWrite'] = _DEBUGLINKMEMORYWRITE -DESCRIPTOR.message_types_by_name['DebugLinkFlashErase'] = _DEBUGLINKFLASHERASE -DESCRIPTOR.enum_types_by_name['MessageType'] = _MESSAGETYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Initialize = _reflection.GeneratedProtocolMessageType('Initialize', (_message.Message,), dict( - DESCRIPTOR = _INITIALIZE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:Initialize) - )) -_sym_db.RegisterMessage(Initialize) - -GetFeatures = _reflection.GeneratedProtocolMessageType('GetFeatures', (_message.Message,), dict( - DESCRIPTOR = _GETFEATURES, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:GetFeatures) - )) -_sym_db.RegisterMessage(GetFeatures) - -Features = _reflection.GeneratedProtocolMessageType('Features', (_message.Message,), dict( - DESCRIPTOR = _FEATURES, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:Features) - )) -_sym_db.RegisterMessage(Features) - -ClearSession = _reflection.GeneratedProtocolMessageType('ClearSession', (_message.Message,), dict( - DESCRIPTOR = _CLEARSESSION, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:ClearSession) - )) -_sym_db.RegisterMessage(ClearSession) - -ApplySettings = _reflection.GeneratedProtocolMessageType('ApplySettings', (_message.Message,), dict( - DESCRIPTOR = _APPLYSETTINGS, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:ApplySettings) - )) -_sym_db.RegisterMessage(ApplySettings) - -ApplyFlags = _reflection.GeneratedProtocolMessageType('ApplyFlags', (_message.Message,), dict( - DESCRIPTOR = _APPLYFLAGS, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:ApplyFlags) - )) -_sym_db.RegisterMessage(ApplyFlags) - -ChangePin = _reflection.GeneratedProtocolMessageType('ChangePin', (_message.Message,), dict( - DESCRIPTOR = _CHANGEPIN, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:ChangePin) - )) -_sym_db.RegisterMessage(ChangePin) - -Ping = _reflection.GeneratedProtocolMessageType('Ping', (_message.Message,), dict( - DESCRIPTOR = _PING, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:Ping) - )) -_sym_db.RegisterMessage(Ping) - -Success = _reflection.GeneratedProtocolMessageType('Success', (_message.Message,), dict( - DESCRIPTOR = _SUCCESS, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:Success) - )) -_sym_db.RegisterMessage(Success) - -Failure = _reflection.GeneratedProtocolMessageType('Failure', (_message.Message,), dict( - DESCRIPTOR = _FAILURE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:Failure) - )) -_sym_db.RegisterMessage(Failure) - -ButtonRequest = _reflection.GeneratedProtocolMessageType('ButtonRequest', (_message.Message,), dict( - DESCRIPTOR = _BUTTONREQUEST, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:ButtonRequest) - )) -_sym_db.RegisterMessage(ButtonRequest) - -ButtonAck = _reflection.GeneratedProtocolMessageType('ButtonAck', (_message.Message,), dict( - DESCRIPTOR = _BUTTONACK, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:ButtonAck) - )) -_sym_db.RegisterMessage(ButtonAck) - -PinMatrixRequest = _reflection.GeneratedProtocolMessageType('PinMatrixRequest', (_message.Message,), dict( - DESCRIPTOR = _PINMATRIXREQUEST, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:PinMatrixRequest) - )) -_sym_db.RegisterMessage(PinMatrixRequest) - -PinMatrixAck = _reflection.GeneratedProtocolMessageType('PinMatrixAck', (_message.Message,), dict( - DESCRIPTOR = _PINMATRIXACK, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:PinMatrixAck) - )) -_sym_db.RegisterMessage(PinMatrixAck) - -Cancel = _reflection.GeneratedProtocolMessageType('Cancel', (_message.Message,), dict( - DESCRIPTOR = _CANCEL, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:Cancel) - )) -_sym_db.RegisterMessage(Cancel) - -PassphraseRequest = _reflection.GeneratedProtocolMessageType('PassphraseRequest', (_message.Message,), dict( - DESCRIPTOR = _PASSPHRASEREQUEST, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:PassphraseRequest) - )) -_sym_db.RegisterMessage(PassphraseRequest) - -PassphraseAck = _reflection.GeneratedProtocolMessageType('PassphraseAck', (_message.Message,), dict( - DESCRIPTOR = _PASSPHRASEACK, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:PassphraseAck) - )) -_sym_db.RegisterMessage(PassphraseAck) - -GetEntropy = _reflection.GeneratedProtocolMessageType('GetEntropy', (_message.Message,), dict( - DESCRIPTOR = _GETENTROPY, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:GetEntropy) - )) -_sym_db.RegisterMessage(GetEntropy) - -Entropy = _reflection.GeneratedProtocolMessageType('Entropy', (_message.Message,), dict( - DESCRIPTOR = _ENTROPY, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:Entropy) - )) -_sym_db.RegisterMessage(Entropy) - -GetPublicKey = _reflection.GeneratedProtocolMessageType('GetPublicKey', (_message.Message,), dict( - DESCRIPTOR = _GETPUBLICKEY, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:GetPublicKey) - )) -_sym_db.RegisterMessage(GetPublicKey) - -PublicKey = _reflection.GeneratedProtocolMessageType('PublicKey', (_message.Message,), dict( - DESCRIPTOR = _PUBLICKEY, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:PublicKey) - )) -_sym_db.RegisterMessage(PublicKey) - -GetAddress = _reflection.GeneratedProtocolMessageType('GetAddress', (_message.Message,), dict( - DESCRIPTOR = _GETADDRESS, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:GetAddress) - )) -_sym_db.RegisterMessage(GetAddress) - -EthereumGetAddress = _reflection.GeneratedProtocolMessageType('EthereumGetAddress', (_message.Message,), dict( - DESCRIPTOR = _ETHEREUMGETADDRESS, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EthereumGetAddress) - )) -_sym_db.RegisterMessage(EthereumGetAddress) - -Address = _reflection.GeneratedProtocolMessageType('Address', (_message.Message,), dict( - DESCRIPTOR = _ADDRESS, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:Address) - )) -_sym_db.RegisterMessage(Address) - -EthereumAddress = _reflection.GeneratedProtocolMessageType('EthereumAddress', (_message.Message,), dict( - DESCRIPTOR = _ETHEREUMADDRESS, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EthereumAddress) - )) -_sym_db.RegisterMessage(EthereumAddress) - -WipeDevice = _reflection.GeneratedProtocolMessageType('WipeDevice', (_message.Message,), dict( - DESCRIPTOR = _WIPEDEVICE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:WipeDevice) - )) -_sym_db.RegisterMessage(WipeDevice) - -LoadDevice = _reflection.GeneratedProtocolMessageType('LoadDevice', (_message.Message,), dict( - DESCRIPTOR = _LOADDEVICE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:LoadDevice) - )) -_sym_db.RegisterMessage(LoadDevice) - -ResetDevice = _reflection.GeneratedProtocolMessageType('ResetDevice', (_message.Message,), dict( - DESCRIPTOR = _RESETDEVICE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:ResetDevice) - )) -_sym_db.RegisterMessage(ResetDevice) - -BackupDevice = _reflection.GeneratedProtocolMessageType('BackupDevice', (_message.Message,), dict( - DESCRIPTOR = _BACKUPDEVICE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:BackupDevice) - )) -_sym_db.RegisterMessage(BackupDevice) - -EntropyRequest = _reflection.GeneratedProtocolMessageType('EntropyRequest', (_message.Message,), dict( - DESCRIPTOR = _ENTROPYREQUEST, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EntropyRequest) - )) -_sym_db.RegisterMessage(EntropyRequest) - -EntropyAck = _reflection.GeneratedProtocolMessageType('EntropyAck', (_message.Message,), dict( - DESCRIPTOR = _ENTROPYACK, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EntropyAck) - )) -_sym_db.RegisterMessage(EntropyAck) - -RecoveryDevice = _reflection.GeneratedProtocolMessageType('RecoveryDevice', (_message.Message,), dict( - DESCRIPTOR = _RECOVERYDEVICE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:RecoveryDevice) - )) -_sym_db.RegisterMessage(RecoveryDevice) - -WordRequest = _reflection.GeneratedProtocolMessageType('WordRequest', (_message.Message,), dict( - DESCRIPTOR = _WORDREQUEST, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:WordRequest) - )) -_sym_db.RegisterMessage(WordRequest) - -WordAck = _reflection.GeneratedProtocolMessageType('WordAck', (_message.Message,), dict( - DESCRIPTOR = _WORDACK, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:WordAck) - )) -_sym_db.RegisterMessage(WordAck) - -SignMessage = _reflection.GeneratedProtocolMessageType('SignMessage', (_message.Message,), dict( - DESCRIPTOR = _SIGNMESSAGE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:SignMessage) - )) -_sym_db.RegisterMessage(SignMessage) - -VerifyMessage = _reflection.GeneratedProtocolMessageType('VerifyMessage', (_message.Message,), dict( - DESCRIPTOR = _VERIFYMESSAGE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:VerifyMessage) - )) -_sym_db.RegisterMessage(VerifyMessage) - -MessageSignature = _reflection.GeneratedProtocolMessageType('MessageSignature', (_message.Message,), dict( - DESCRIPTOR = _MESSAGESIGNATURE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:MessageSignature) - )) -_sym_db.RegisterMessage(MessageSignature) - -EncryptMessage = _reflection.GeneratedProtocolMessageType('EncryptMessage', (_message.Message,), dict( - DESCRIPTOR = _ENCRYPTMESSAGE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EncryptMessage) - )) -_sym_db.RegisterMessage(EncryptMessage) - -EncryptedMessage = _reflection.GeneratedProtocolMessageType('EncryptedMessage', (_message.Message,), dict( - DESCRIPTOR = _ENCRYPTEDMESSAGE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EncryptedMessage) - )) -_sym_db.RegisterMessage(EncryptedMessage) - -DecryptMessage = _reflection.GeneratedProtocolMessageType('DecryptMessage', (_message.Message,), dict( - DESCRIPTOR = _DECRYPTMESSAGE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:DecryptMessage) - )) -_sym_db.RegisterMessage(DecryptMessage) - -DecryptedMessage = _reflection.GeneratedProtocolMessageType('DecryptedMessage', (_message.Message,), dict( - DESCRIPTOR = _DECRYPTEDMESSAGE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:DecryptedMessage) - )) -_sym_db.RegisterMessage(DecryptedMessage) - -CipherKeyValue = _reflection.GeneratedProtocolMessageType('CipherKeyValue', (_message.Message,), dict( - DESCRIPTOR = _CIPHERKEYVALUE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:CipherKeyValue) - )) -_sym_db.RegisterMessage(CipherKeyValue) - -CipheredKeyValue = _reflection.GeneratedProtocolMessageType('CipheredKeyValue', (_message.Message,), dict( - DESCRIPTOR = _CIPHEREDKEYVALUE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:CipheredKeyValue) - )) -_sym_db.RegisterMessage(CipheredKeyValue) - -EstimateTxSize = _reflection.GeneratedProtocolMessageType('EstimateTxSize', (_message.Message,), dict( - DESCRIPTOR = _ESTIMATETXSIZE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EstimateTxSize) - )) -_sym_db.RegisterMessage(EstimateTxSize) - -TxSize = _reflection.GeneratedProtocolMessageType('TxSize', (_message.Message,), dict( - DESCRIPTOR = _TXSIZE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:TxSize) - )) -_sym_db.RegisterMessage(TxSize) - -SignTx = _reflection.GeneratedProtocolMessageType('SignTx', (_message.Message,), dict( - DESCRIPTOR = _SIGNTX, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:SignTx) - )) -_sym_db.RegisterMessage(SignTx) - -SimpleSignTx = _reflection.GeneratedProtocolMessageType('SimpleSignTx', (_message.Message,), dict( - DESCRIPTOR = _SIMPLESIGNTX, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:SimpleSignTx) - )) -_sym_db.RegisterMessage(SimpleSignTx) - -TxRequest = _reflection.GeneratedProtocolMessageType('TxRequest', (_message.Message,), dict( - DESCRIPTOR = _TXREQUEST, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:TxRequest) - )) -_sym_db.RegisterMessage(TxRequest) - -TxAck = _reflection.GeneratedProtocolMessageType('TxAck', (_message.Message,), dict( - DESCRIPTOR = _TXACK, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:TxAck) - )) -_sym_db.RegisterMessage(TxAck) - -EthereumSignTx = _reflection.GeneratedProtocolMessageType('EthereumSignTx', (_message.Message,), dict( - DESCRIPTOR = _ETHEREUMSIGNTX, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EthereumSignTx) - )) -_sym_db.RegisterMessage(EthereumSignTx) - -EthereumTxRequest = _reflection.GeneratedProtocolMessageType('EthereumTxRequest', (_message.Message,), dict( - DESCRIPTOR = _ETHEREUMTXREQUEST, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EthereumTxRequest) - )) -_sym_db.RegisterMessage(EthereumTxRequest) - -EthereumTxAck = _reflection.GeneratedProtocolMessageType('EthereumTxAck', (_message.Message,), dict( - DESCRIPTOR = _ETHEREUMTXACK, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EthereumTxAck) - )) -_sym_db.RegisterMessage(EthereumTxAck) - -EthereumSignMessage = _reflection.GeneratedProtocolMessageType('EthereumSignMessage', (_message.Message,), dict( - DESCRIPTOR = _ETHEREUMSIGNMESSAGE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EthereumSignMessage) - )) -_sym_db.RegisterMessage(EthereumSignMessage) - -EthereumVerifyMessage = _reflection.GeneratedProtocolMessageType('EthereumVerifyMessage', (_message.Message,), dict( - DESCRIPTOR = _ETHEREUMVERIFYMESSAGE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EthereumVerifyMessage) - )) -_sym_db.RegisterMessage(EthereumVerifyMessage) - -EthereumMessageSignature = _reflection.GeneratedProtocolMessageType('EthereumMessageSignature', (_message.Message,), dict( - DESCRIPTOR = _ETHEREUMMESSAGESIGNATURE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:EthereumMessageSignature) - )) -_sym_db.RegisterMessage(EthereumMessageSignature) - -SignIdentity = _reflection.GeneratedProtocolMessageType('SignIdentity', (_message.Message,), dict( - DESCRIPTOR = _SIGNIDENTITY, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:SignIdentity) - )) -_sym_db.RegisterMessage(SignIdentity) - -SignedIdentity = _reflection.GeneratedProtocolMessageType('SignedIdentity', (_message.Message,), dict( - DESCRIPTOR = _SIGNEDIDENTITY, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:SignedIdentity) - )) -_sym_db.RegisterMessage(SignedIdentity) - -GetECDHSessionKey = _reflection.GeneratedProtocolMessageType('GetECDHSessionKey', (_message.Message,), dict( - DESCRIPTOR = _GETECDHSESSIONKEY, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:GetECDHSessionKey) - )) -_sym_db.RegisterMessage(GetECDHSessionKey) - -ECDHSessionKey = _reflection.GeneratedProtocolMessageType('ECDHSessionKey', (_message.Message,), dict( - DESCRIPTOR = _ECDHSESSIONKEY, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:ECDHSessionKey) - )) -_sym_db.RegisterMessage(ECDHSessionKey) - -SetU2FCounter = _reflection.GeneratedProtocolMessageType('SetU2FCounter', (_message.Message,), dict( - DESCRIPTOR = _SETU2FCOUNTER, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:SetU2FCounter) - )) -_sym_db.RegisterMessage(SetU2FCounter) - -FirmwareErase = _reflection.GeneratedProtocolMessageType('FirmwareErase', (_message.Message,), dict( - DESCRIPTOR = _FIRMWAREERASE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:FirmwareErase) - )) -_sym_db.RegisterMessage(FirmwareErase) - -FirmwareRequest = _reflection.GeneratedProtocolMessageType('FirmwareRequest', (_message.Message,), dict( - DESCRIPTOR = _FIRMWAREREQUEST, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:FirmwareRequest) - )) -_sym_db.RegisterMessage(FirmwareRequest) - -FirmwareUpload = _reflection.GeneratedProtocolMessageType('FirmwareUpload', (_message.Message,), dict( - DESCRIPTOR = _FIRMWAREUPLOAD, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:FirmwareUpload) - )) -_sym_db.RegisterMessage(FirmwareUpload) - -SelfTest = _reflection.GeneratedProtocolMessageType('SelfTest', (_message.Message,), dict( - DESCRIPTOR = _SELFTEST, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:SelfTest) - )) -_sym_db.RegisterMessage(SelfTest) - -NEMGetAddress = _reflection.GeneratedProtocolMessageType('NEMGetAddress', (_message.Message,), dict( - DESCRIPTOR = _NEMGETADDRESS, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:NEMGetAddress) - )) -_sym_db.RegisterMessage(NEMGetAddress) - -NEMAddress = _reflection.GeneratedProtocolMessageType('NEMAddress', (_message.Message,), dict( - DESCRIPTOR = _NEMADDRESS, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:NEMAddress) - )) -_sym_db.RegisterMessage(NEMAddress) - -NEMSignTx = _reflection.GeneratedProtocolMessageType('NEMSignTx', (_message.Message,), dict( - DESCRIPTOR = _NEMSIGNTX, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:NEMSignTx) - )) -_sym_db.RegisterMessage(NEMSignTx) - -NEMSignedTx = _reflection.GeneratedProtocolMessageType('NEMSignedTx', (_message.Message,), dict( - DESCRIPTOR = _NEMSIGNEDTX, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:NEMSignedTx) - )) -_sym_db.RegisterMessage(NEMSignedTx) - -CosiCommit = _reflection.GeneratedProtocolMessageType('CosiCommit', (_message.Message,), dict( - DESCRIPTOR = _COSICOMMIT, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:CosiCommit) - )) -_sym_db.RegisterMessage(CosiCommit) - -CosiCommitment = _reflection.GeneratedProtocolMessageType('CosiCommitment', (_message.Message,), dict( - DESCRIPTOR = _COSICOMMITMENT, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:CosiCommitment) - )) -_sym_db.RegisterMessage(CosiCommitment) - -CosiSign = _reflection.GeneratedProtocolMessageType('CosiSign', (_message.Message,), dict( - DESCRIPTOR = _COSISIGN, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:CosiSign) - )) -_sym_db.RegisterMessage(CosiSign) - -CosiSignature = _reflection.GeneratedProtocolMessageType('CosiSignature', (_message.Message,), dict( - DESCRIPTOR = _COSISIGNATURE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:CosiSignature) - )) -_sym_db.RegisterMessage(CosiSignature) - -DebugLinkDecision = _reflection.GeneratedProtocolMessageType('DebugLinkDecision', (_message.Message,), dict( - DESCRIPTOR = _DEBUGLINKDECISION, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:DebugLinkDecision) - )) -_sym_db.RegisterMessage(DebugLinkDecision) - -DebugLinkGetState = _reflection.GeneratedProtocolMessageType('DebugLinkGetState', (_message.Message,), dict( - DESCRIPTOR = _DEBUGLINKGETSTATE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:DebugLinkGetState) - )) -_sym_db.RegisterMessage(DebugLinkGetState) - -DebugLinkState = _reflection.GeneratedProtocolMessageType('DebugLinkState', (_message.Message,), dict( - DESCRIPTOR = _DEBUGLINKSTATE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:DebugLinkState) - )) -_sym_db.RegisterMessage(DebugLinkState) - -DebugLinkStop = _reflection.GeneratedProtocolMessageType('DebugLinkStop', (_message.Message,), dict( - DESCRIPTOR = _DEBUGLINKSTOP, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:DebugLinkStop) - )) -_sym_db.RegisterMessage(DebugLinkStop) - -DebugLinkLog = _reflection.GeneratedProtocolMessageType('DebugLinkLog', (_message.Message,), dict( - DESCRIPTOR = _DEBUGLINKLOG, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:DebugLinkLog) - )) -_sym_db.RegisterMessage(DebugLinkLog) - -DebugLinkMemoryRead = _reflection.GeneratedProtocolMessageType('DebugLinkMemoryRead', (_message.Message,), dict( - DESCRIPTOR = _DEBUGLINKMEMORYREAD, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:DebugLinkMemoryRead) - )) -_sym_db.RegisterMessage(DebugLinkMemoryRead) - -DebugLinkMemory = _reflection.GeneratedProtocolMessageType('DebugLinkMemory', (_message.Message,), dict( - DESCRIPTOR = _DEBUGLINKMEMORY, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:DebugLinkMemory) - )) -_sym_db.RegisterMessage(DebugLinkMemory) - -DebugLinkMemoryWrite = _reflection.GeneratedProtocolMessageType('DebugLinkMemoryWrite', (_message.Message,), dict( - DESCRIPTOR = _DEBUGLINKMEMORYWRITE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:DebugLinkMemoryWrite) - )) -_sym_db.RegisterMessage(DebugLinkMemoryWrite) - -DebugLinkFlashErase = _reflection.GeneratedProtocolMessageType('DebugLinkFlashErase', (_message.Message,), dict( - DESCRIPTOR = _DEBUGLINKFLASHERASE, - __module__ = 'messages_pb2' - # @@protoc_insertion_point(class_scope:DebugLinkFlashErase) - )) -_sym_db.RegisterMessage(DebugLinkFlashErase) - - -DESCRIPTOR.has_options = True -DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n#com.satoshilabs.trezor.lib.protobufB\rTrezorMessage')) -_MESSAGETYPE.values_by_name["MessageType_Initialize"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_Initialize"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_Ping"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_Ping"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_Success"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_Success"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_Failure"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_Failure"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_ChangePin"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_ChangePin"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_WipeDevice"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_WipeDevice"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_FirmwareErase"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_FirmwareErase"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\270\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_FirmwareUpload"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_FirmwareUpload"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\270\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_FirmwareRequest"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_FirmwareRequest"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001\270\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_GetEntropy"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_GetEntropy"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_Entropy"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_Entropy"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_GetPublicKey"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_GetPublicKey"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_PublicKey"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_PublicKey"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_LoadDevice"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_LoadDevice"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_ResetDevice"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_ResetDevice"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_SignTx"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_SignTx"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_SimpleSignTx"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_SimpleSignTx"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_Features"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_Features"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_PinMatrixRequest"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_PinMatrixRequest"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_PinMatrixAck"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_PinMatrixAck"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\260\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_Cancel"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_Cancel"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_TxRequest"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_TxRequest"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_TxAck"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_TxAck"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_CipherKeyValue"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_CipherKeyValue"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_ClearSession"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_ClearSession"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_ApplySettings"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_ApplySettings"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_ButtonRequest"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_ButtonRequest"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_ButtonAck"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_ButtonAck"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\260\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_ApplyFlags"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_ApplyFlags"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_GetAddress"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_GetAddress"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_Address"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_Address"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_SelfTest"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_SelfTest"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\270\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_BackupDevice"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_BackupDevice"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EntropyRequest"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EntropyRequest"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EntropyAck"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EntropyAck"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_SignMessage"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_SignMessage"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_VerifyMessage"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_VerifyMessage"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_MessageSignature"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_MessageSignature"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_PassphraseRequest"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_PassphraseRequest"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_PassphraseAck"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_PassphraseAck"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001\260\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EstimateTxSize"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EstimateTxSize"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_TxSize"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_TxSize"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_RecoveryDevice"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_RecoveryDevice"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_WordRequest"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_WordRequest"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_WordAck"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_WordAck"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_CipheredKeyValue"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_CipheredKeyValue"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EncryptMessage"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EncryptMessage"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EncryptedMessage"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EncryptedMessage"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_DecryptMessage"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_DecryptMessage"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_DecryptedMessage"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_DecryptedMessage"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\010\001\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_SignIdentity"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_SignIdentity"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_SignedIdentity"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_SignedIdentity"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_GetFeatures"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_GetFeatures"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EthereumGetAddress"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EthereumGetAddress"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EthereumAddress"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EthereumAddress"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EthereumSignTx"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EthereumSignTx"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EthereumTxRequest"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EthereumTxRequest"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EthereumTxAck"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EthereumTxAck"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_GetECDHSessionKey"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_GetECDHSessionKey"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_ECDHSessionKey"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_ECDHSessionKey"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_SetU2FCounter"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_SetU2FCounter"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EthereumSignMessage"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EthereumSignMessage"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EthereumVerifyMessage"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EthereumVerifyMessage"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_EthereumMessageSignature"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_EthereumMessageSignature"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_NEMGetAddress"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_NEMGetAddress"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_NEMAddress"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_NEMAddress"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_NEMSignTx"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_NEMSignTx"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_NEMSignedTx"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_NEMSignedTx"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_CosiCommit"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_CosiCommit"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_CosiCommitment"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_CosiCommitment"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_CosiSign"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_CosiSign"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\220\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_CosiSignature"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_CosiSignature"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\230\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_DebugLinkDecision"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_DebugLinkDecision"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001\260\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_DebugLinkGetState"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_DebugLinkGetState"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_DebugLinkState"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_DebugLinkState"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\250\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_DebugLinkStop"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_DebugLinkStop"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_DebugLinkLog"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_DebugLinkLog"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\250\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_DebugLinkMemoryRead"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_DebugLinkMemoryRead"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_DebugLinkMemory"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_DebugLinkMemory"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\250\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_DebugLinkMemoryWrite"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_DebugLinkMemoryWrite"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001')) -_MESSAGETYPE.values_by_name["MessageType_DebugLinkFlashErase"].has_options = True -_MESSAGETYPE.values_by_name["MessageType_DebugLinkFlashErase"]._options = _descriptor._ParseOptions(descriptor_pb2.EnumValueOptions(), _b('\240\265\030\001')) -# @@protoc_insertion_point(module_scope) diff --git a/trezorlib/protobuf.py b/trezorlib/protobuf.py new file mode 100644 index 0000000..4237610 --- /dev/null +++ b/trezorlib/protobuf.py @@ -0,0 +1,305 @@ +# This file is part of the TREZOR project. +# +# Copyright (C) 2012-2016 Marek Palatinus +# Copyright (C) 2012-2016 Pavol Rusnak +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library. If not, see . + +''' +Extremely minimal streaming codec for a subset of protobuf. Supports uint32, +bytes, string, embedded message and repeated fields. + +For de-sererializing (loading) protobuf types, object with `Reader` +interface is required: + +>>> class Reader: +>>> def readinto(self, buffer): +>>> """ +>>> Reads `len(buffer)` bytes into `buffer`, or raises `EOFError`. +>>> """ + +For serializing (dumping) protobuf types, object with `Writer` interface is +required: + +>>> class Writer: +>>> def write(self, buffer): +>>> """ +>>> Writes all bytes from `buffer`, or raises `EOFError`. +>>> """ +''' + +from io import BytesIO + +_UVARINT_BUFFER = bytearray(1) + + +def load_uvarint(reader): + buffer = _UVARINT_BUFFER + result = 0 + shift = 0 + byte = 0x80 + while byte & 0x80: + if reader.readinto(buffer) == 0: + raise EOFError + byte = buffer[0] + result += (byte & 0x7F) << shift + shift += 7 + return result + + +def dump_uvarint(writer, n): + buffer = _UVARINT_BUFFER + shifted = True + while shifted: + shifted = n >> 7 + buffer[0] = (n & 0x7F) | (0x80 if shifted else 0x00) + writer.write(buffer) + n = shifted + + +class UVarintType: + WIRE_TYPE = 0 + + +class Sint32Type: + WIRE_TYPE = 0 + + +class BoolType: + WIRE_TYPE = 0 + + +class BytesType: + WIRE_TYPE = 2 + + +class UnicodeType: + WIRE_TYPE = 2 + + +class MessageType: + WIRE_TYPE = 2 + FIELDS = {} + + def __init__(self, **kwargs): + for kw in kwargs: + setattr(self, kw, kwargs[kw]) + + def __eq__(self, rhs): + return (self.__class__ is rhs.__class__ and + self.__dict__ == rhs.__dict__) + + def __repr__(self): + return '<%s: %s>' % (self.__class__.__name__, self.__dict__) + + def __iter__(self): + return self.__dict__.__iter__() + + def __getattr__(self, attr): + if attr.startswith('_add_'): + return self._additem(attr[5:]) + + if attr.startswith('_extend_'): + return self._extenditem(attr[8:]) + + raise AttributeError(attr) + + def _extenditem(self, attr): + def f(param): + try: + l = getattr(self, attr) + except AttributeError: + l = [] + setattr(self, attr, l) + + l += param + + return f + + def _additem(self, attr): + # Add new item for repeated field type + for v in self.FIELDS.values(): + if v[0] != attr: + continue + if not (v[2] & FLAG_REPEATED): + raise AttributeError + + try: + l = getattr(self, v[0]) + except AttributeError: + l = [] + setattr(self, v[0], l) + + item = v[1]() + l.append(item) + return lambda: item + + raise AttributeError + + def _fill_missing(self): + # fill missing fields + for tag in self.FIELDS: + field = self.FIELDS[tag] + if not hasattr(self, field[0]): + setattr(self, field[0], None) + + def CopyFrom(self, obj): + self.__dict__ = obj.__dict__.copy() + + def ByteSize(self): + data = BytesIO() + dump_message(data, self) + return len(data.getvalue()) + + +class LimitedReader: + + def __init__(self, reader, limit): + self.reader = reader + self.limit = limit + + def readinto(self, buf): + if self.limit < len(buf): + raise EOFError + else: + nread = self.reader.readinto(buf) + self.limit -= nread + return nread + + +class CountingWriter: + + def __init__(self): + self.size = 0 + + def write(self, buf): + nwritten = len(buf) + self.size += nwritten + return nwritten + + +FLAG_REPEATED = 1 + + +def load_message(reader, msg_type): + fields = msg_type.FIELDS + msg = msg_type() + + while True: + try: + fkey = load_uvarint(reader) + except EOFError: + break # no more fields to load + + ftag = fkey >> 3 + wtype = fkey & 7 + + field = fields.get(ftag, None) + + if field is None: # unknown field, skip it + if wtype == 0: + load_uvarint(reader) + elif wtype == 2: + ivalue = load_uvarint(reader) + reader.readinto(bytearray(ivalue)) + else: + raise ValueError + continue + + fname, ftype, fflags = field + if wtype != ftype.WIRE_TYPE: + raise TypeError # parsed wire type differs from the schema + + ivalue = load_uvarint(reader) + + if ftype is UVarintType: + fvalue = ivalue + elif ftype is Sint32Type: + fvalue = (ivalue >> 1) ^ ((ivalue << 31) & 0xffffffff) + elif ftype is BoolType: + fvalue = bool(ivalue) + elif ftype is BytesType: + fvalue = bytearray(ivalue) + reader.readinto(fvalue) + elif ftype is UnicodeType: + fvalue = bytearray(ivalue) + reader.readinto(fvalue) + fvalue = fvalue.decode() + elif issubclass(ftype, MessageType): + fvalue = load_message(LimitedReader(reader, ivalue), ftype) + else: + raise TypeError # field type is unknown + + if fflags & FLAG_REPEATED: + pvalue = getattr(msg, fname, []) + pvalue.append(fvalue) + fvalue = pvalue + setattr(msg, fname, fvalue) + + msg._fill_missing() + return msg + + +def dump_message(writer, msg): + repvalue = [0] + mtype = msg.__class__ + fields = mtype.FIELDS + + for ftag in fields: + field = fields[ftag] + fname = field[0] + ftype = field[1] + fflags = field[2] + + fvalue = getattr(msg, fname, None) + if fvalue is None: + continue + + fkey = (ftag << 3) | ftype.WIRE_TYPE + + if not fflags & FLAG_REPEATED: + repvalue[0] = fvalue + fvalue = repvalue + + for svalue in fvalue: + dump_uvarint(writer, fkey) + + if ftype is UVarintType: + dump_uvarint(writer, svalue) + + elif ftype is Sint32Type: + dump_uvarint(writer, ((svalue << 1) & 0xffffffff) ^ (svalue >> 31)) + + elif ftype is BoolType: + dump_uvarint(writer, int(svalue)) + + elif ftype is BytesType: + dump_uvarint(writer, len(svalue)) + writer.write(svalue) + + elif ftype is UnicodeType: + if not isinstance(svalue, bytes): + svalue = svalue.encode() + + dump_uvarint(writer, len(svalue)) + writer.write(svalue) + + elif issubclass(ftype, MessageType): + counter = CountingWriter() + dump_message(counter, svalue) + dump_uvarint(writer, counter.size) + dump_message(writer, svalue) + + else: + raise TypeError diff --git a/trezorlib/protocol_v1.py b/trezorlib/protocol_v1.py index 74e8e7b..6c04af3 100644 --- a/trezorlib/protocol_v1.py +++ b/trezorlib/protocol_v1.py @@ -18,8 +18,10 @@ from __future__ import absolute_import +from io import BytesIO import struct from . import mapping +from . import protobuf REPLEN = 64 @@ -33,7 +35,9 @@ class ProtocolV1(object): pass def write(self, transport, msg): - ser = msg.SerializeToString() + data = BytesIO() + protobuf.dump_message(data, msg) + ser = data.getvalue() header = struct.pack(">HL", mapping.get_type(msg), len(ser)) data = bytearray(b"##" + header + ser) @@ -54,12 +58,11 @@ class ProtocolV1(object): chunk = transport.read_chunk() data.extend(self.parse_next(chunk)) - # Strip padding zeros - data = data[:datalen] + # Strip padding + data = BytesIO(data[:datalen]) # Parse to protobuf - msg = mapping.get_class(msg_type)() - msg.ParseFromString(bytes(data)) + msg = protobuf.load_message(data, mapping.get_class(msg_type)) return msg def parse_first(self, chunk): diff --git a/trezorlib/protocol_v2.py b/trezorlib/protocol_v2.py index a9f0d26..2ab48a8 100644 --- a/trezorlib/protocol_v2.py +++ b/trezorlib/protocol_v2.py @@ -19,7 +19,10 @@ from __future__ import absolute_import import struct +from io import BytesIO +from . import messages as proto from . import mapping +from . import protobuf REPLEN = 64 @@ -49,11 +52,14 @@ class ProtocolV2(object): self.session = None def write(self, transport, msg): + print(msg) if not self.session: raise RuntimeError('Missing session for v2 protocol') # Serialize whole message - data = bytearray(msg.SerializeToString()) + data = BytesIO() + protobuf.dump_message(data, msg) + data = data.getvalue() dataheader = struct.pack('>LL', mapping.get_type(msg), len(data)) data = dataheader + data seq = -1 @@ -86,11 +92,11 @@ class ProtocolV2(object): data.extend(next_data) # Strip padding - data = data[:datalen] + data = BytesIO(data[:datalen]) # Parse to protobuf - msg = mapping.get_class(msg_type)() - msg.ParseFromString(bytes(data)) + msg = protobuf.load_message(data, mapping.get_class(msg_type)) + print(msg) return msg def parse_first(self, chunk): diff --git a/trezorlib/tools.py b/trezorlib/tools.py index ec54a81..4ff3b50 100644 --- a/trezorlib/tools.py +++ b/trezorlib/tools.py @@ -120,19 +120,3 @@ def b58decode(v, length): return None return result - - -def monkeypatch_google_protobuf_text_format(): - # monkeypatching: text formatting of protobuf messages - import google.protobuf.text_format - import google.protobuf.descriptor - - _oldPrintFieldValue = google.protobuf.text_format.PrintFieldValue - - def _customPrintFieldValue(field, value, out, indent=0, as_utf8=False, as_one_line=False, pointy_brackets=False, float_format=None): - if field.type == google.protobuf.descriptor.FieldDescriptor.TYPE_BYTES: - _oldPrintFieldValue(field, 'hex(%s)' % binascii.hexlify(value), out, indent, as_utf8, as_one_line) - else: - _oldPrintFieldValue(field, value, out, indent, as_utf8, as_one_line) - - google.protobuf.text_format.PrintFieldValue = _customPrintFieldValue diff --git a/trezorlib/tx_api.py b/trezorlib/tx_api.py index 2eea05a..ad2be6c 100644 --- a/trezorlib/tx_api.py +++ b/trezorlib/tx_api.py @@ -21,8 +21,8 @@ import binascii from decimal import Decimal import requests import json -from . import types_pb2 as proto_types +from . import messages as proto cache_dir = None @@ -45,6 +45,7 @@ class TxApi(object): return j except: pass + try: url = self.get_url(resource, resourceid) r = requests.get(url, headers={'User-agent': 'Mozilla/5.0'}) @@ -72,12 +73,12 @@ class TxApiInsight(TxApi): data = self.fetch_json('tx', txhash) - t = proto_types.TransactionType() + t = proto.TransactionType() t.version = data['version'] t.lock_time = data['locktime'] for vin in data['vin']: - i = t.inputs.add() + i = t._add_inputs() if 'coinbase' in vin.keys(): i.prev_hash = b"\0" * 32 i.prev_index = 0xffffffff # signed int -1 @@ -91,7 +92,7 @@ class TxApiInsight(TxApi): i.sequence = vin['sequence'] for vout in data['vout']: - o = t.bin_outputs.add() + o = t._add_bin_outputs() o.amount = int(Decimal(vout['value']) * 100000000) o.script_pubkey = binascii.unhexlify(vout['scriptPubKey']['hex']) @@ -120,7 +121,7 @@ class TxApiSmartbit(TxApi): data = data['transaction'] - t = proto_types.TransactionType() + t = proto.TransactionType() t.version = int(data['version']) t.lock_time = data['locktime'] @@ -152,7 +153,7 @@ class TxApiBlockCypher(TxApi): data = self.fetch_json('txs', txhash) - t = proto_types.TransactionType() + t = proto.TransactionType() t.version = data['ver'] t.lock_time = data['lock_time'] diff --git a/trezorlib/types_pb2.py b/trezorlib/types_pb2.py deleted file mode 100644 index ac5f4ed..0000000 --- a/trezorlib/types_pb2.py +++ /dev/null @@ -1,1914 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: types.proto -# libprotoc 3.3.0 -# trezor-common c20bb1c567ac0c1ddabf74354f204043eeacad10 - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf.internal import enum_type_wrapper -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -from google.protobuf import descriptor_pb2 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='types.proto', - package='', - syntax='proto2', - serialized_pb=_b('\n\x0btypes.proto\x1a google/protobuf/descriptor.proto\"\x80\x01\n\nHDNodeType\x12\r\n\x05\x64\x65pth\x18\x01 \x02(\r\x12\x13\n\x0b\x66ingerprint\x18\x02 \x02(\r\x12\x11\n\tchild_num\x18\x03 \x02(\r\x12\x12\n\nchain_code\x18\x04 \x02(\x0c\x12\x13\n\x0bprivate_key\x18\x05 \x01(\x0c\x12\x12\n\npublic_key\x18\x06 \x01(\x0c\">\n\x0eHDNodePathType\x12\x19\n\x04node\x18\x01 \x02(\x0b\x32\x0b.HDNodeType\x12\x11\n\taddress_n\x18\x02 \x03(\r\"\xf9\x01\n\x08\x43oinType\x12\x11\n\tcoin_name\x18\x01 \x01(\t\x12\x15\n\rcoin_shortcut\x18\x02 \x01(\t\x12\x17\n\x0c\x61\x64\x64ress_type\x18\x03 \x01(\r:\x01\x30\x12\x11\n\tmaxfee_kb\x18\x04 \x01(\x04\x12\x1c\n\x11\x61\x64\x64ress_type_p2sh\x18\x05 \x01(\r:\x01\x35\x12\x1d\n\x15signed_message_header\x18\x08 \x01(\t\x12\x1c\n\nxpub_magic\x18\t \x01(\r:\x08\x37\x36\x30\x36\x37\x33\x35\x38\x12\x1c\n\nxprv_magic\x18\n \x01(\r:\x08\x37\x36\x30\x36\x36\x32\x37\x36\x12\x0e\n\x06segwit\x18\x0b \x01(\x08\x12\x0e\n\x06\x66orkid\x18\x0c \x01(\r\"[\n\x18MultisigRedeemScriptType\x12 \n\x07pubkeys\x18\x01 \x03(\x0b\x32\x0f.HDNodePathType\x12\x12\n\nsignatures\x18\x02 \x03(\x0c\x12\t\n\x01m\x18\x03 \x01(\r\"\xeb\x01\n\x0bTxInputType\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x11\n\tprev_hash\x18\x02 \x02(\x0c\x12\x12\n\nprev_index\x18\x03 \x02(\r\x12\x12\n\nscript_sig\x18\x04 \x01(\x0c\x12\x1c\n\x08sequence\x18\x05 \x01(\r:\n4294967295\x12\x33\n\x0bscript_type\x18\x06 \x01(\x0e\x32\x10.InputScriptType:\x0cSPENDADDRESS\x12+\n\x08multisig\x18\x07 \x01(\x0b\x32\x19.MultisigRedeemScriptType\x12\x0e\n\x06\x61mount\x18\x08 \x01(\x04\"\xaf\x01\n\x0cTxOutputType\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x11\n\taddress_n\x18\x02 \x03(\r\x12\x0e\n\x06\x61mount\x18\x03 \x02(\x04\x12&\n\x0bscript_type\x18\x04 \x02(\x0e\x32\x11.OutputScriptType\x12+\n\x08multisig\x18\x05 \x01(\x0b\x32\x19.MultisigRedeemScriptType\x12\x16\n\x0eop_return_data\x18\x06 \x01(\x0c\"8\n\x0fTxOutputBinType\x12\x0e\n\x06\x61mount\x18\x01 \x02(\x04\x12\x15\n\rscript_pubkey\x18\x02 \x02(\x0c\"\xef\x01\n\x0fTransactionType\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x1c\n\x06inputs\x18\x02 \x03(\x0b\x32\x0c.TxInputType\x12%\n\x0b\x62in_outputs\x18\x03 \x03(\x0b\x32\x10.TxOutputBinType\x12\x1e\n\x07outputs\x18\x05 \x03(\x0b\x32\r.TxOutputType\x12\x11\n\tlock_time\x18\x04 \x01(\r\x12\x12\n\ninputs_cnt\x18\x06 \x01(\r\x12\x13\n\x0boutputs_cnt\x18\x07 \x01(\r\x12\x12\n\nextra_data\x18\x08 \x01(\x0c\x12\x16\n\x0e\x65xtra_data_len\x18\t \x01(\r\"q\n\x14TxRequestDetailsType\x12\x15\n\rrequest_index\x18\x01 \x01(\r\x12\x0f\n\x07tx_hash\x18\x02 \x01(\x0c\x12\x16\n\x0e\x65xtra_data_len\x18\x03 \x01(\r\x12\x19\n\x11\x65xtra_data_offset\x18\x04 \x01(\r\"\\\n\x17TxRequestSerializedType\x12\x17\n\x0fsignature_index\x18\x01 \x01(\r\x12\x11\n\tsignature\x18\x02 \x01(\x0c\x12\x15\n\rserialized_tx\x18\x03 \x01(\x0c\"g\n\x0cIdentityType\x12\r\n\x05proto\x18\x01 \x01(\t\x12\x0c\n\x04user\x18\x02 \x01(\t\x12\x0c\n\x04host\x18\x03 \x01(\t\x12\x0c\n\x04port\x18\x04 \x01(\t\x12\x0c\n\x04path\x18\x05 \x01(\t\x12\x10\n\x05index\x18\x06 \x01(\r:\x01\x30\"|\n\x14NEMTransactionCommon\x12\x11\n\taddress_n\x18\x01 \x03(\r\x12\x0f\n\x07network\x18\x02 \x01(\r\x12\x11\n\ttimestamp\x18\x03 \x01(\r\x12\x0b\n\x03\x66\x65\x65\x18\x04 \x01(\x04\x12\x10\n\x08\x64\x65\x61\x64line\x18\x05 \x01(\r\x12\x0e\n\x06signer\x18\x06 \x01(\x0c\"r\n\x0bNEMTransfer\x12\x11\n\trecipient\x18\x01 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x0f\n\x07payload\x18\x03 \x01(\x0c\x12\x12\n\npublic_key\x18\x04 \x01(\x0c\x12\x1b\n\x07mosaics\x18\x05 \x03(\x0b\x32\n.NEMMosaic\"@\n\tNEMMosaic\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x0e\n\x06mosaic\x18\x02 \x01(\t\x12\x10\n\x08quantity\x18\x03 \x01(\x04\"U\n\x15NEMProvisionNamespace\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x0e\n\x06parent\x18\x02 \x01(\t\x12\x0c\n\x04sink\x18\x03 \x01(\t\x12\x0b\n\x03\x66\x65\x65\x18\x04 \x01(\x04\"X\n\x11NEMMosaicCreation\x12(\n\ndefinition\x18\x01 \x01(\x0b\x32\x14.NEMMosaicDefinition\x12\x0c\n\x04sink\x18\x02 \x01(\t\x12\x0b\n\x03\x66\x65\x65\x18\x03 \x01(\x04\"\xbf\x02\n\x13NEMMosaicDefinition\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06ticker\x18\x02 \x01(\t\x12\x11\n\tnamespace\x18\x03 \x01(\t\x12\x0e\n\x06mosaic\x18\x04 \x01(\t\x12\x14\n\x0c\x64ivisibility\x18\x05 \x01(\r\x12\x1c\n\x04levy\x18\x06 \x01(\x0e\x32\x0e.NEMMosaicLevy\x12\x0b\n\x03\x66\x65\x65\x18\x07 \x01(\x04\x12\x14\n\x0clevy_address\x18\x08 \x01(\t\x12\x16\n\x0elevy_namespace\x18\t \x01(\t\x12\x13\n\x0blevy_mosaic\x18\n \x01(\t\x12\x0e\n\x06supply\x18\x0b \x01(\x04\x12\x16\n\x0emutable_supply\x18\x0c \x01(\x08\x12\x14\n\x0ctransferable\x18\r \x01(\x08\x12\x13\n\x0b\x64\x65scription\x18\x0e \x01(\t\x12\x10\n\x08networks\x18\x0f \x03(\r\"m\n\x15NEMMosaicSupplyChange\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x0e\n\x06mosaic\x18\x02 \x01(\t\x12\"\n\x04type\x18\x03 \x01(\x0e\x32\x14.NEMSupplyChangeType\x12\r\n\x05\x64\x65lta\x18\x04 \x01(\x04\"g\n\x18NEMAggregateModification\x12\x32\n\rmodifications\x18\x01 \x03(\x0b\x32\x1b.NEMCosignatoryModification\x12\x17\n\x0frelative_change\x18\x02 \x01(\x11\"T\n\x1aNEMCosignatoryModification\x12\"\n\x04type\x18\x01 \x01(\x0e\x32\x14.NEMModificationType\x12\x12\n\npublic_key\x18\x02 \x01(\x0c*\xd2\x02\n\x0b\x46\x61ilureType\x12\x1d\n\x19\x46\x61ilure_UnexpectedMessage\x10\x01\x12\x1a\n\x16\x46\x61ilure_ButtonExpected\x10\x02\x12\x15\n\x11\x46\x61ilure_DataError\x10\x03\x12\x1b\n\x17\x46\x61ilure_ActionCancelled\x10\x04\x12\x17\n\x13\x46\x61ilure_PinExpected\x10\x05\x12\x18\n\x14\x46\x61ilure_PinCancelled\x10\x06\x12\x16\n\x12\x46\x61ilure_PinInvalid\x10\x07\x12\x1c\n\x18\x46\x61ilure_InvalidSignature\x10\x08\x12\x18\n\x14\x46\x61ilure_ProcessError\x10\t\x12\x1a\n\x16\x46\x61ilure_NotEnoughFunds\x10\n\x12\x1a\n\x16\x46\x61ilure_NotInitialized\x10\x0b\x12\x19\n\x15\x46\x61ilure_FirmwareError\x10\x63*\x87\x01\n\x10OutputScriptType\x12\x10\n\x0cPAYTOADDRESS\x10\x00\x12\x13\n\x0fPAYTOSCRIPTHASH\x10\x01\x12\x11\n\rPAYTOMULTISIG\x10\x02\x12\x11\n\rPAYTOOPRETURN\x10\x03\x12\x10\n\x0cPAYTOWITNESS\x10\x04\x12\x14\n\x10PAYTOP2SHWITNESS\x10\x05*l\n\x0fInputScriptType\x12\x10\n\x0cSPENDADDRESS\x10\x00\x12\x11\n\rSPENDMULTISIG\x10\x01\x12\x0c\n\x08\x45XTERNAL\x10\x02\x12\x10\n\x0cSPENDWITNESS\x10\x03\x12\x14\n\x10SPENDP2SHWITNESS\x10\x04*U\n\x0bRequestType\x12\x0b\n\x07TXINPUT\x10\x00\x12\x0c\n\x08TXOUTPUT\x10\x01\x12\n\n\x06TXMETA\x10\x02\x12\x0e\n\nTXFINISHED\x10\x03\x12\x0f\n\x0bTXEXTRADATA\x10\x04*\xdf\x02\n\x11\x42uttonRequestType\x12\x17\n\x13\x42uttonRequest_Other\x10\x01\x12\"\n\x1e\x42uttonRequest_FeeOverThreshold\x10\x02\x12\x1f\n\x1b\x42uttonRequest_ConfirmOutput\x10\x03\x12\x1d\n\x19\x42uttonRequest_ResetDevice\x10\x04\x12\x1d\n\x19\x42uttonRequest_ConfirmWord\x10\x05\x12\x1c\n\x18\x42uttonRequest_WipeDevice\x10\x06\x12\x1d\n\x19\x42uttonRequest_ProtectCall\x10\x07\x12\x18\n\x14\x42uttonRequest_SignTx\x10\x08\x12\x1f\n\x1b\x42uttonRequest_FirmwareCheck\x10\t\x12\x19\n\x15\x42uttonRequest_Address\x10\n\x12\x1b\n\x17\x42uttonRequest_PublicKey\x10\x0b*\x7f\n\x14PinMatrixRequestType\x12 \n\x1cPinMatrixRequestType_Current\x10\x01\x12!\n\x1dPinMatrixRequestType_NewFirst\x10\x02\x12\"\n\x1ePinMatrixRequestType_NewSecond\x10\x03*Z\n\x12RecoveryDeviceType\x12%\n!RecoveryDeviceType_ScrambledWords\x10\x00\x12\x1d\n\x19RecoveryDeviceType_Matrix\x10\x01*f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plain\x10\x00\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordRequestType_Matrix6\x10\x02*C\n\rNEMMosaicLevy\x12\x17\n\x13MosaicLevy_Absolute\x10\x01\x12\x19\n\x15MosaicLevy_Percentile\x10\x02*K\n\x13NEMSupplyChangeType\x12\x19\n\x15SupplyChange_Increase\x10\x01\x12\x19\n\x15SupplyChange_Decrease\x10\x02*Z\n\x13NEMModificationType\x12\x1f\n\x1b\x43osignatoryModification_Add\x10\x01\x12\"\n\x1e\x43osignatoryModification_Delete\x10\x02:4\n\x07wire_in\x12!.google.protobuf.EnumValueOptions\x18\xd2\x86\x03 \x01(\x08:5\n\x08wire_out\x12!.google.protobuf.EnumValueOptions\x18\xd3\x86\x03 \x01(\x08::\n\rwire_debug_in\x12!.google.protobuf.EnumValueOptions\x18\xd4\x86\x03 \x01(\x08:;\n\x0ewire_debug_out\x12!.google.protobuf.EnumValueOptions\x18\xd5\x86\x03 \x01(\x08:6\n\twire_tiny\x12!.google.protobuf.EnumValueOptions\x18\xd6\x86\x03 \x01(\x08:<\n\x0fwire_bootloader\x12!.google.protobuf.EnumValueOptions\x18\xd7\x86\x03 \x01(\x08\x42\x31\n#com.satoshilabs.trezor.lib.protobufB\nTrezorType') - , - dependencies=[google_dot_protobuf_dot_descriptor__pb2.DESCRIPTOR,]) - -_FAILURETYPE = _descriptor.EnumDescriptor( - name='FailureType', - full_name='FailureType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='Failure_UnexpectedMessage', index=0, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Failure_ButtonExpected', index=1, number=2, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Failure_DataError', index=2, number=3, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Failure_ActionCancelled', index=3, number=4, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Failure_PinExpected', index=4, number=5, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Failure_PinCancelled', index=5, number=6, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Failure_PinInvalid', index=6, number=7, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Failure_InvalidSignature', index=7, number=8, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Failure_ProcessError', index=8, number=9, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Failure_NotEnoughFunds', index=9, number=10, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Failure_NotInitialized', index=10, number=11, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='Failure_FirmwareError', index=11, number=99, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=2729, - serialized_end=3067, -) -_sym_db.RegisterEnumDescriptor(_FAILURETYPE) - -FailureType = enum_type_wrapper.EnumTypeWrapper(_FAILURETYPE) -_OUTPUTSCRIPTTYPE = _descriptor.EnumDescriptor( - name='OutputScriptType', - full_name='OutputScriptType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='PAYTOADDRESS', index=0, number=0, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='PAYTOSCRIPTHASH', index=1, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='PAYTOMULTISIG', index=2, number=2, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='PAYTOOPRETURN', index=3, number=3, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='PAYTOWITNESS', index=4, number=4, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='PAYTOP2SHWITNESS', index=5, number=5, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=3070, - serialized_end=3205, -) -_sym_db.RegisterEnumDescriptor(_OUTPUTSCRIPTTYPE) - -OutputScriptType = enum_type_wrapper.EnumTypeWrapper(_OUTPUTSCRIPTTYPE) -_INPUTSCRIPTTYPE = _descriptor.EnumDescriptor( - name='InputScriptType', - full_name='InputScriptType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='SPENDADDRESS', index=0, number=0, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='SPENDMULTISIG', index=1, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='EXTERNAL', index=2, number=2, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='SPENDWITNESS', index=3, number=3, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='SPENDP2SHWITNESS', index=4, number=4, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=3207, - serialized_end=3315, -) -_sym_db.RegisterEnumDescriptor(_INPUTSCRIPTTYPE) - -InputScriptType = enum_type_wrapper.EnumTypeWrapper(_INPUTSCRIPTTYPE) -_REQUESTTYPE = _descriptor.EnumDescriptor( - name='RequestType', - full_name='RequestType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='TXINPUT', index=0, number=0, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='TXOUTPUT', index=1, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='TXMETA', index=2, number=2, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='TXFINISHED', index=3, number=3, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='TXEXTRADATA', index=4, number=4, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=3317, - serialized_end=3402, -) -_sym_db.RegisterEnumDescriptor(_REQUESTTYPE) - -RequestType = enum_type_wrapper.EnumTypeWrapper(_REQUESTTYPE) -_BUTTONREQUESTTYPE = _descriptor.EnumDescriptor( - name='ButtonRequestType', - full_name='ButtonRequestType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='ButtonRequest_Other', index=0, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ButtonRequest_FeeOverThreshold', index=1, number=2, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ButtonRequest_ConfirmOutput', index=2, number=3, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ButtonRequest_ResetDevice', index=3, number=4, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ButtonRequest_ConfirmWord', index=4, number=5, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ButtonRequest_WipeDevice', index=5, number=6, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ButtonRequest_ProtectCall', index=6, number=7, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ButtonRequest_SignTx', index=7, number=8, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ButtonRequest_FirmwareCheck', index=8, number=9, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ButtonRequest_Address', index=9, number=10, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='ButtonRequest_PublicKey', index=10, number=11, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=3405, - serialized_end=3756, -) -_sym_db.RegisterEnumDescriptor(_BUTTONREQUESTTYPE) - -ButtonRequestType = enum_type_wrapper.EnumTypeWrapper(_BUTTONREQUESTTYPE) -_PINMATRIXREQUESTTYPE = _descriptor.EnumDescriptor( - name='PinMatrixRequestType', - full_name='PinMatrixRequestType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='PinMatrixRequestType_Current', index=0, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='PinMatrixRequestType_NewFirst', index=1, number=2, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='PinMatrixRequestType_NewSecond', index=2, number=3, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=3758, - serialized_end=3885, -) -_sym_db.RegisterEnumDescriptor(_PINMATRIXREQUESTTYPE) - -PinMatrixRequestType = enum_type_wrapper.EnumTypeWrapper(_PINMATRIXREQUESTTYPE) -_RECOVERYDEVICETYPE = _descriptor.EnumDescriptor( - name='RecoveryDeviceType', - full_name='RecoveryDeviceType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='RecoveryDeviceType_ScrambledWords', index=0, number=0, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='RecoveryDeviceType_Matrix', index=1, number=1, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=3887, - serialized_end=3977, -) -_sym_db.RegisterEnumDescriptor(_RECOVERYDEVICETYPE) - -RecoveryDeviceType = enum_type_wrapper.EnumTypeWrapper(_RECOVERYDEVICETYPE) -_WORDREQUESTTYPE = _descriptor.EnumDescriptor( - name='WordRequestType', - full_name='WordRequestType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='WordRequestType_Plain', index=0, number=0, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='WordRequestType_Matrix9', index=1, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='WordRequestType_Matrix6', index=2, number=2, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=3979, - serialized_end=4081, -) -_sym_db.RegisterEnumDescriptor(_WORDREQUESTTYPE) - -WordRequestType = enum_type_wrapper.EnumTypeWrapper(_WORDREQUESTTYPE) -_NEMMOSAICLEVY = _descriptor.EnumDescriptor( - name='NEMMosaicLevy', - full_name='NEMMosaicLevy', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='MosaicLevy_Absolute', index=0, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='MosaicLevy_Percentile', index=1, number=2, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=4083, - serialized_end=4150, -) -_sym_db.RegisterEnumDescriptor(_NEMMOSAICLEVY) - -NEMMosaicLevy = enum_type_wrapper.EnumTypeWrapper(_NEMMOSAICLEVY) -_NEMSUPPLYCHANGETYPE = _descriptor.EnumDescriptor( - name='NEMSupplyChangeType', - full_name='NEMSupplyChangeType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='SupplyChange_Increase', index=0, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='SupplyChange_Decrease', index=1, number=2, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=4152, - serialized_end=4227, -) -_sym_db.RegisterEnumDescriptor(_NEMSUPPLYCHANGETYPE) - -NEMSupplyChangeType = enum_type_wrapper.EnumTypeWrapper(_NEMSUPPLYCHANGETYPE) -_NEMMODIFICATIONTYPE = _descriptor.EnumDescriptor( - name='NEMModificationType', - full_name='NEMModificationType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='CosignatoryModification_Add', index=0, number=1, - options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='CosignatoryModification_Delete', index=1, number=2, - options=None, - type=None), - ], - containing_type=None, - options=None, - serialized_start=4229, - serialized_end=4319, -) -_sym_db.RegisterEnumDescriptor(_NEMMODIFICATIONTYPE) - -NEMModificationType = enum_type_wrapper.EnumTypeWrapper(_NEMMODIFICATIONTYPE) -Failure_UnexpectedMessage = 1 -Failure_ButtonExpected = 2 -Failure_DataError = 3 -Failure_ActionCancelled = 4 -Failure_PinExpected = 5 -Failure_PinCancelled = 6 -Failure_PinInvalid = 7 -Failure_InvalidSignature = 8 -Failure_ProcessError = 9 -Failure_NotEnoughFunds = 10 -Failure_NotInitialized = 11 -Failure_FirmwareError = 99 -PAYTOADDRESS = 0 -PAYTOSCRIPTHASH = 1 -PAYTOMULTISIG = 2 -PAYTOOPRETURN = 3 -PAYTOWITNESS = 4 -PAYTOP2SHWITNESS = 5 -SPENDADDRESS = 0 -SPENDMULTISIG = 1 -EXTERNAL = 2 -SPENDWITNESS = 3 -SPENDP2SHWITNESS = 4 -TXINPUT = 0 -TXOUTPUT = 1 -TXMETA = 2 -TXFINISHED = 3 -TXEXTRADATA = 4 -ButtonRequest_Other = 1 -ButtonRequest_FeeOverThreshold = 2 -ButtonRequest_ConfirmOutput = 3 -ButtonRequest_ResetDevice = 4 -ButtonRequest_ConfirmWord = 5 -ButtonRequest_WipeDevice = 6 -ButtonRequest_ProtectCall = 7 -ButtonRequest_SignTx = 8 -ButtonRequest_FirmwareCheck = 9 -ButtonRequest_Address = 10 -ButtonRequest_PublicKey = 11 -PinMatrixRequestType_Current = 1 -PinMatrixRequestType_NewFirst = 2 -PinMatrixRequestType_NewSecond = 3 -RecoveryDeviceType_ScrambledWords = 0 -RecoveryDeviceType_Matrix = 1 -WordRequestType_Plain = 0 -WordRequestType_Matrix9 = 1 -WordRequestType_Matrix6 = 2 -MosaicLevy_Absolute = 1 -MosaicLevy_Percentile = 2 -SupplyChange_Increase = 1 -SupplyChange_Decrease = 2 -CosignatoryModification_Add = 1 -CosignatoryModification_Delete = 2 - -WIRE_IN_FIELD_NUMBER = 50002 -wire_in = _descriptor.FieldDescriptor( - name='wire_in', full_name='wire_in', index=0, - number=50002, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=True, extension_scope=None, - options=None) -WIRE_OUT_FIELD_NUMBER = 50003 -wire_out = _descriptor.FieldDescriptor( - name='wire_out', full_name='wire_out', index=1, - number=50003, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=True, extension_scope=None, - options=None) -WIRE_DEBUG_IN_FIELD_NUMBER = 50004 -wire_debug_in = _descriptor.FieldDescriptor( - name='wire_debug_in', full_name='wire_debug_in', index=2, - number=50004, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=True, extension_scope=None, - options=None) -WIRE_DEBUG_OUT_FIELD_NUMBER = 50005 -wire_debug_out = _descriptor.FieldDescriptor( - name='wire_debug_out', full_name='wire_debug_out', index=3, - number=50005, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=True, extension_scope=None, - options=None) -WIRE_TINY_FIELD_NUMBER = 50006 -wire_tiny = _descriptor.FieldDescriptor( - name='wire_tiny', full_name='wire_tiny', index=4, - number=50006, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=True, extension_scope=None, - options=None) -WIRE_BOOTLOADER_FIELD_NUMBER = 50007 -wire_bootloader = _descriptor.FieldDescriptor( - name='wire_bootloader', full_name='wire_bootloader', index=5, - number=50007, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=True, extension_scope=None, - options=None) - - -_HDNODETYPE = _descriptor.Descriptor( - name='HDNodeType', - full_name='HDNodeType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='depth', full_name='HDNodeType.depth', index=0, - number=1, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='fingerprint', full_name='HDNodeType.fingerprint', index=1, - number=2, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='child_num', full_name='HDNodeType.child_num', index=2, - number=3, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='chain_code', full_name='HDNodeType.chain_code', index=3, - number=4, type=12, cpp_type=9, label=2, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='private_key', full_name='HDNodeType.private_key', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='public_key', full_name='HDNodeType.public_key', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=50, - serialized_end=178, -) - - -_HDNODEPATHTYPE = _descriptor.Descriptor( - name='HDNodePathType', - full_name='HDNodePathType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='node', full_name='HDNodePathType.node', index=0, - number=1, type=11, cpp_type=10, label=2, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='address_n', full_name='HDNodePathType.address_n', index=1, - number=2, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=180, - serialized_end=242, -) - - -_COINTYPE = _descriptor.Descriptor( - name='CoinType', - full_name='CoinType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='coin_name', full_name='CoinType.coin_name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='coin_shortcut', full_name='CoinType.coin_shortcut', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='address_type', full_name='CoinType.address_type', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=True, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='maxfee_kb', full_name='CoinType.maxfee_kb', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='address_type_p2sh', full_name='CoinType.address_type_p2sh', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=True, default_value=5, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signed_message_header', full_name='CoinType.signed_message_header', index=5, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='xpub_magic', full_name='CoinType.xpub_magic', index=6, - number=9, type=13, cpp_type=3, label=1, - has_default_value=True, default_value=76067358, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='xprv_magic', full_name='CoinType.xprv_magic', index=7, - number=10, type=13, cpp_type=3, label=1, - has_default_value=True, default_value=76066276, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='segwit', full_name='CoinType.segwit', index=8, - number=11, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='forkid', full_name='CoinType.forkid', index=9, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=245, - serialized_end=494, -) - - -_MULTISIGREDEEMSCRIPTTYPE = _descriptor.Descriptor( - name='MultisigRedeemScriptType', - full_name='MultisigRedeemScriptType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='pubkeys', full_name='MultisigRedeemScriptType.pubkeys', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signatures', full_name='MultisigRedeemScriptType.signatures', index=1, - number=2, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='m', full_name='MultisigRedeemScriptType.m', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=496, - serialized_end=587, -) - - -_TXINPUTTYPE = _descriptor.Descriptor( - name='TxInputType', - full_name='TxInputType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='TxInputType.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='prev_hash', full_name='TxInputType.prev_hash', index=1, - number=2, type=12, cpp_type=9, label=2, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='prev_index', full_name='TxInputType.prev_index', index=2, - number=3, type=13, cpp_type=3, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='script_sig', full_name='TxInputType.script_sig', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='sequence', full_name='TxInputType.sequence', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=True, default_value=4294967295, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='script_type', full_name='TxInputType.script_type', index=5, - number=6, type=14, cpp_type=8, label=1, - has_default_value=True, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='multisig', full_name='TxInputType.multisig', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='amount', full_name='TxInputType.amount', index=7, - number=8, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=590, - serialized_end=825, -) - - -_TXOUTPUTTYPE = _descriptor.Descriptor( - name='TxOutputType', - full_name='TxOutputType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='TxOutputType.address', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='address_n', full_name='TxOutputType.address_n', index=1, - number=2, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='amount', full_name='TxOutputType.amount', index=2, - number=3, type=4, cpp_type=4, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='script_type', full_name='TxOutputType.script_type', index=3, - number=4, type=14, cpp_type=8, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='multisig', full_name='TxOutputType.multisig', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='op_return_data', full_name='TxOutputType.op_return_data', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=828, - serialized_end=1003, -) - - -_TXOUTPUTBINTYPE = _descriptor.Descriptor( - name='TxOutputBinType', - full_name='TxOutputBinType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='amount', full_name='TxOutputBinType.amount', index=0, - number=1, type=4, cpp_type=4, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='script_pubkey', full_name='TxOutputBinType.script_pubkey', index=1, - number=2, type=12, cpp_type=9, label=2, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1005, - serialized_end=1061, -) - - -_TRANSACTIONTYPE = _descriptor.Descriptor( - name='TransactionType', - full_name='TransactionType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='version', full_name='TransactionType.version', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='inputs', full_name='TransactionType.inputs', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='bin_outputs', full_name='TransactionType.bin_outputs', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='outputs', full_name='TransactionType.outputs', index=3, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='lock_time', full_name='TransactionType.lock_time', index=4, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='inputs_cnt', full_name='TransactionType.inputs_cnt', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='outputs_cnt', full_name='TransactionType.outputs_cnt', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='extra_data', full_name='TransactionType.extra_data', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='extra_data_len', full_name='TransactionType.extra_data_len', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1064, - serialized_end=1303, -) - - -_TXREQUESTDETAILSTYPE = _descriptor.Descriptor( - name='TxRequestDetailsType', - full_name='TxRequestDetailsType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='request_index', full_name='TxRequestDetailsType.request_index', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='tx_hash', full_name='TxRequestDetailsType.tx_hash', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='extra_data_len', full_name='TxRequestDetailsType.extra_data_len', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='extra_data_offset', full_name='TxRequestDetailsType.extra_data_offset', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1305, - serialized_end=1418, -) - - -_TXREQUESTSERIALIZEDTYPE = _descriptor.Descriptor( - name='TxRequestSerializedType', - full_name='TxRequestSerializedType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='signature_index', full_name='TxRequestSerializedType.signature_index', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signature', full_name='TxRequestSerializedType.signature', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='serialized_tx', full_name='TxRequestSerializedType.serialized_tx', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1420, - serialized_end=1512, -) - - -_IDENTITYTYPE = _descriptor.Descriptor( - name='IdentityType', - full_name='IdentityType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='proto', full_name='IdentityType.proto', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='user', full_name='IdentityType.user', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='host', full_name='IdentityType.host', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='port', full_name='IdentityType.port', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='path', full_name='IdentityType.path', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='index', full_name='IdentityType.index', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=True, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1514, - serialized_end=1617, -) - - -_NEMTRANSACTIONCOMMON = _descriptor.Descriptor( - name='NEMTransactionCommon', - full_name='NEMTransactionCommon', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_n', full_name='NEMTransactionCommon.address_n', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='network', full_name='NEMTransactionCommon.network', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='timestamp', full_name='NEMTransactionCommon.timestamp', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='fee', full_name='NEMTransactionCommon.fee', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='deadline', full_name='NEMTransactionCommon.deadline', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='signer', full_name='NEMTransactionCommon.signer', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1619, - serialized_end=1743, -) - - -_NEMTRANSFER = _descriptor.Descriptor( - name='NEMTransfer', - full_name='NEMTransfer', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='recipient', full_name='NEMTransfer.recipient', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='amount', full_name='NEMTransfer.amount', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='payload', full_name='NEMTransfer.payload', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='public_key', full_name='NEMTransfer.public_key', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='mosaics', full_name='NEMTransfer.mosaics', index=4, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1745, - serialized_end=1859, -) - - -_NEMMOSAIC = _descriptor.Descriptor( - name='NEMMosaic', - full_name='NEMMosaic', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='namespace', full_name='NEMMosaic.namespace', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='mosaic', full_name='NEMMosaic.mosaic', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='quantity', full_name='NEMMosaic.quantity', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1861, - serialized_end=1925, -) - - -_NEMPROVISIONNAMESPACE = _descriptor.Descriptor( - name='NEMProvisionNamespace', - full_name='NEMProvisionNamespace', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='namespace', full_name='NEMProvisionNamespace.namespace', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='parent', full_name='NEMProvisionNamespace.parent', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='sink', full_name='NEMProvisionNamespace.sink', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='fee', full_name='NEMProvisionNamespace.fee', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1927, - serialized_end=2012, -) - - -_NEMMOSAICCREATION = _descriptor.Descriptor( - name='NEMMosaicCreation', - full_name='NEMMosaicCreation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='definition', full_name='NEMMosaicCreation.definition', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='sink', full_name='NEMMosaicCreation.sink', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='fee', full_name='NEMMosaicCreation.fee', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2014, - serialized_end=2102, -) - - -_NEMMOSAICDEFINITION = _descriptor.Descriptor( - name='NEMMosaicDefinition', - full_name='NEMMosaicDefinition', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='name', full_name='NEMMosaicDefinition.name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='ticker', full_name='NEMMosaicDefinition.ticker', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='namespace', full_name='NEMMosaicDefinition.namespace', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='mosaic', full_name='NEMMosaicDefinition.mosaic', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='divisibility', full_name='NEMMosaicDefinition.divisibility', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='levy', full_name='NEMMosaicDefinition.levy', index=5, - number=6, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=1, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='fee', full_name='NEMMosaicDefinition.fee', index=6, - number=7, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='levy_address', full_name='NEMMosaicDefinition.levy_address', index=7, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='levy_namespace', full_name='NEMMosaicDefinition.levy_namespace', index=8, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='levy_mosaic', full_name='NEMMosaicDefinition.levy_mosaic', index=9, - number=10, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='supply', full_name='NEMMosaicDefinition.supply', index=10, - number=11, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='mutable_supply', full_name='NEMMosaicDefinition.mutable_supply', index=11, - number=12, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='transferable', full_name='NEMMosaicDefinition.transferable', index=12, - number=13, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='description', full_name='NEMMosaicDefinition.description', index=13, - number=14, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='networks', full_name='NEMMosaicDefinition.networks', index=14, - number=15, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2105, - serialized_end=2424, -) - - -_NEMMOSAICSUPPLYCHANGE = _descriptor.Descriptor( - name='NEMMosaicSupplyChange', - full_name='NEMMosaicSupplyChange', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='namespace', full_name='NEMMosaicSupplyChange.namespace', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='mosaic', full_name='NEMMosaicSupplyChange.mosaic', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='type', full_name='NEMMosaicSupplyChange.type', index=2, - number=3, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=1, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='delta', full_name='NEMMosaicSupplyChange.delta', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2426, - serialized_end=2535, -) - - -_NEMAGGREGATEMODIFICATION = _descriptor.Descriptor( - name='NEMAggregateModification', - full_name='NEMAggregateModification', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='modifications', full_name='NEMAggregateModification.modifications', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='relative_change', full_name='NEMAggregateModification.relative_change', index=1, - number=2, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2537, - serialized_end=2640, -) - - -_NEMCOSIGNATORYMODIFICATION = _descriptor.Descriptor( - name='NEMCosignatoryModification', - full_name='NEMCosignatoryModification', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='NEMCosignatoryModification.type', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=1, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='public_key', full_name='NEMCosignatoryModification.public_key', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - options=None), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2642, - serialized_end=2726, -) - -_HDNODEPATHTYPE.fields_by_name['node'].message_type = _HDNODETYPE -_MULTISIGREDEEMSCRIPTTYPE.fields_by_name['pubkeys'].message_type = _HDNODEPATHTYPE -_TXINPUTTYPE.fields_by_name['script_type'].enum_type = _INPUTSCRIPTTYPE -_TXINPUTTYPE.fields_by_name['multisig'].message_type = _MULTISIGREDEEMSCRIPTTYPE -_TXOUTPUTTYPE.fields_by_name['script_type'].enum_type = _OUTPUTSCRIPTTYPE -_TXOUTPUTTYPE.fields_by_name['multisig'].message_type = _MULTISIGREDEEMSCRIPTTYPE -_TRANSACTIONTYPE.fields_by_name['inputs'].message_type = _TXINPUTTYPE -_TRANSACTIONTYPE.fields_by_name['bin_outputs'].message_type = _TXOUTPUTBINTYPE -_TRANSACTIONTYPE.fields_by_name['outputs'].message_type = _TXOUTPUTTYPE -_NEMTRANSFER.fields_by_name['mosaics'].message_type = _NEMMOSAIC -_NEMMOSAICCREATION.fields_by_name['definition'].message_type = _NEMMOSAICDEFINITION -_NEMMOSAICDEFINITION.fields_by_name['levy'].enum_type = _NEMMOSAICLEVY -_NEMMOSAICSUPPLYCHANGE.fields_by_name['type'].enum_type = _NEMSUPPLYCHANGETYPE -_NEMAGGREGATEMODIFICATION.fields_by_name['modifications'].message_type = _NEMCOSIGNATORYMODIFICATION -_NEMCOSIGNATORYMODIFICATION.fields_by_name['type'].enum_type = _NEMMODIFICATIONTYPE -DESCRIPTOR.message_types_by_name['HDNodeType'] = _HDNODETYPE -DESCRIPTOR.message_types_by_name['HDNodePathType'] = _HDNODEPATHTYPE -DESCRIPTOR.message_types_by_name['CoinType'] = _COINTYPE -DESCRIPTOR.message_types_by_name['MultisigRedeemScriptType'] = _MULTISIGREDEEMSCRIPTTYPE -DESCRIPTOR.message_types_by_name['TxInputType'] = _TXINPUTTYPE -DESCRIPTOR.message_types_by_name['TxOutputType'] = _TXOUTPUTTYPE -DESCRIPTOR.message_types_by_name['TxOutputBinType'] = _TXOUTPUTBINTYPE -DESCRIPTOR.message_types_by_name['TransactionType'] = _TRANSACTIONTYPE -DESCRIPTOR.message_types_by_name['TxRequestDetailsType'] = _TXREQUESTDETAILSTYPE -DESCRIPTOR.message_types_by_name['TxRequestSerializedType'] = _TXREQUESTSERIALIZEDTYPE -DESCRIPTOR.message_types_by_name['IdentityType'] = _IDENTITYTYPE -DESCRIPTOR.message_types_by_name['NEMTransactionCommon'] = _NEMTRANSACTIONCOMMON -DESCRIPTOR.message_types_by_name['NEMTransfer'] = _NEMTRANSFER -DESCRIPTOR.message_types_by_name['NEMMosaic'] = _NEMMOSAIC -DESCRIPTOR.message_types_by_name['NEMProvisionNamespace'] = _NEMPROVISIONNAMESPACE -DESCRIPTOR.message_types_by_name['NEMMosaicCreation'] = _NEMMOSAICCREATION -DESCRIPTOR.message_types_by_name['NEMMosaicDefinition'] = _NEMMOSAICDEFINITION -DESCRIPTOR.message_types_by_name['NEMMosaicSupplyChange'] = _NEMMOSAICSUPPLYCHANGE -DESCRIPTOR.message_types_by_name['NEMAggregateModification'] = _NEMAGGREGATEMODIFICATION -DESCRIPTOR.message_types_by_name['NEMCosignatoryModification'] = _NEMCOSIGNATORYMODIFICATION -DESCRIPTOR.enum_types_by_name['FailureType'] = _FAILURETYPE -DESCRIPTOR.enum_types_by_name['OutputScriptType'] = _OUTPUTSCRIPTTYPE -DESCRIPTOR.enum_types_by_name['InputScriptType'] = _INPUTSCRIPTTYPE -DESCRIPTOR.enum_types_by_name['RequestType'] = _REQUESTTYPE -DESCRIPTOR.enum_types_by_name['ButtonRequestType'] = _BUTTONREQUESTTYPE -DESCRIPTOR.enum_types_by_name['PinMatrixRequestType'] = _PINMATRIXREQUESTTYPE -DESCRIPTOR.enum_types_by_name['RecoveryDeviceType'] = _RECOVERYDEVICETYPE -DESCRIPTOR.enum_types_by_name['WordRequestType'] = _WORDREQUESTTYPE -DESCRIPTOR.enum_types_by_name['NEMMosaicLevy'] = _NEMMOSAICLEVY -DESCRIPTOR.enum_types_by_name['NEMSupplyChangeType'] = _NEMSUPPLYCHANGETYPE -DESCRIPTOR.enum_types_by_name['NEMModificationType'] = _NEMMODIFICATIONTYPE -DESCRIPTOR.extensions_by_name['wire_in'] = wire_in -DESCRIPTOR.extensions_by_name['wire_out'] = wire_out -DESCRIPTOR.extensions_by_name['wire_debug_in'] = wire_debug_in -DESCRIPTOR.extensions_by_name['wire_debug_out'] = wire_debug_out -DESCRIPTOR.extensions_by_name['wire_tiny'] = wire_tiny -DESCRIPTOR.extensions_by_name['wire_bootloader'] = wire_bootloader -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -HDNodeType = _reflection.GeneratedProtocolMessageType('HDNodeType', (_message.Message,), dict( - DESCRIPTOR = _HDNODETYPE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:HDNodeType) - )) -_sym_db.RegisterMessage(HDNodeType) - -HDNodePathType = _reflection.GeneratedProtocolMessageType('HDNodePathType', (_message.Message,), dict( - DESCRIPTOR = _HDNODEPATHTYPE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:HDNodePathType) - )) -_sym_db.RegisterMessage(HDNodePathType) - -CoinType = _reflection.GeneratedProtocolMessageType('CoinType', (_message.Message,), dict( - DESCRIPTOR = _COINTYPE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:CoinType) - )) -_sym_db.RegisterMessage(CoinType) - -MultisigRedeemScriptType = _reflection.GeneratedProtocolMessageType('MultisigRedeemScriptType', (_message.Message,), dict( - DESCRIPTOR = _MULTISIGREDEEMSCRIPTTYPE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:MultisigRedeemScriptType) - )) -_sym_db.RegisterMessage(MultisigRedeemScriptType) - -TxInputType = _reflection.GeneratedProtocolMessageType('TxInputType', (_message.Message,), dict( - DESCRIPTOR = _TXINPUTTYPE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:TxInputType) - )) -_sym_db.RegisterMessage(TxInputType) - -TxOutputType = _reflection.GeneratedProtocolMessageType('TxOutputType', (_message.Message,), dict( - DESCRIPTOR = _TXOUTPUTTYPE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:TxOutputType) - )) -_sym_db.RegisterMessage(TxOutputType) - -TxOutputBinType = _reflection.GeneratedProtocolMessageType('TxOutputBinType', (_message.Message,), dict( - DESCRIPTOR = _TXOUTPUTBINTYPE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:TxOutputBinType) - )) -_sym_db.RegisterMessage(TxOutputBinType) - -TransactionType = _reflection.GeneratedProtocolMessageType('TransactionType', (_message.Message,), dict( - DESCRIPTOR = _TRANSACTIONTYPE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:TransactionType) - )) -_sym_db.RegisterMessage(TransactionType) - -TxRequestDetailsType = _reflection.GeneratedProtocolMessageType('TxRequestDetailsType', (_message.Message,), dict( - DESCRIPTOR = _TXREQUESTDETAILSTYPE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:TxRequestDetailsType) - )) -_sym_db.RegisterMessage(TxRequestDetailsType) - -TxRequestSerializedType = _reflection.GeneratedProtocolMessageType('TxRequestSerializedType', (_message.Message,), dict( - DESCRIPTOR = _TXREQUESTSERIALIZEDTYPE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:TxRequestSerializedType) - )) -_sym_db.RegisterMessage(TxRequestSerializedType) - -IdentityType = _reflection.GeneratedProtocolMessageType('IdentityType', (_message.Message,), dict( - DESCRIPTOR = _IDENTITYTYPE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:IdentityType) - )) -_sym_db.RegisterMessage(IdentityType) - -NEMTransactionCommon = _reflection.GeneratedProtocolMessageType('NEMTransactionCommon', (_message.Message,), dict( - DESCRIPTOR = _NEMTRANSACTIONCOMMON, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:NEMTransactionCommon) - )) -_sym_db.RegisterMessage(NEMTransactionCommon) - -NEMTransfer = _reflection.GeneratedProtocolMessageType('NEMTransfer', (_message.Message,), dict( - DESCRIPTOR = _NEMTRANSFER, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:NEMTransfer) - )) -_sym_db.RegisterMessage(NEMTransfer) - -NEMMosaic = _reflection.GeneratedProtocolMessageType('NEMMosaic', (_message.Message,), dict( - DESCRIPTOR = _NEMMOSAIC, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:NEMMosaic) - )) -_sym_db.RegisterMessage(NEMMosaic) - -NEMProvisionNamespace = _reflection.GeneratedProtocolMessageType('NEMProvisionNamespace', (_message.Message,), dict( - DESCRIPTOR = _NEMPROVISIONNAMESPACE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:NEMProvisionNamespace) - )) -_sym_db.RegisterMessage(NEMProvisionNamespace) - -NEMMosaicCreation = _reflection.GeneratedProtocolMessageType('NEMMosaicCreation', (_message.Message,), dict( - DESCRIPTOR = _NEMMOSAICCREATION, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:NEMMosaicCreation) - )) -_sym_db.RegisterMessage(NEMMosaicCreation) - -NEMMosaicDefinition = _reflection.GeneratedProtocolMessageType('NEMMosaicDefinition', (_message.Message,), dict( - DESCRIPTOR = _NEMMOSAICDEFINITION, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:NEMMosaicDefinition) - )) -_sym_db.RegisterMessage(NEMMosaicDefinition) - -NEMMosaicSupplyChange = _reflection.GeneratedProtocolMessageType('NEMMosaicSupplyChange', (_message.Message,), dict( - DESCRIPTOR = _NEMMOSAICSUPPLYCHANGE, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:NEMMosaicSupplyChange) - )) -_sym_db.RegisterMessage(NEMMosaicSupplyChange) - -NEMAggregateModification = _reflection.GeneratedProtocolMessageType('NEMAggregateModification', (_message.Message,), dict( - DESCRIPTOR = _NEMAGGREGATEMODIFICATION, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:NEMAggregateModification) - )) -_sym_db.RegisterMessage(NEMAggregateModification) - -NEMCosignatoryModification = _reflection.GeneratedProtocolMessageType('NEMCosignatoryModification', (_message.Message,), dict( - DESCRIPTOR = _NEMCOSIGNATORYMODIFICATION, - __module__ = 'types_pb2' - # @@protoc_insertion_point(class_scope:NEMCosignatoryModification) - )) -_sym_db.RegisterMessage(NEMCosignatoryModification) - -google_dot_protobuf_dot_descriptor__pb2.EnumValueOptions.RegisterExtension(wire_in) -google_dot_protobuf_dot_descriptor__pb2.EnumValueOptions.RegisterExtension(wire_out) -google_dot_protobuf_dot_descriptor__pb2.EnumValueOptions.RegisterExtension(wire_debug_in) -google_dot_protobuf_dot_descriptor__pb2.EnumValueOptions.RegisterExtension(wire_debug_out) -google_dot_protobuf_dot_descriptor__pb2.EnumValueOptions.RegisterExtension(wire_tiny) -google_dot_protobuf_dot_descriptor__pb2.EnumValueOptions.RegisterExtension(wire_bootloader) - -DESCRIPTOR.has_options = True -DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n#com.satoshilabs.trezor.lib.protobufB\nTrezorType')) -# @@protoc_insertion_point(module_scope)