diff --git a/tests/device_tests/common.py b/tests/device_tests/common.py
index f7202cc157..24fe344a62 100644
--- a/tests/device_tests/common.py
+++ b/tests/device_tests/common.py
@@ -19,6 +19,8 @@
from __future__ import print_function
import unittest
+import hashlib
+
from trezorlib.client import TrezorClient, TrezorDebugClient
from trezorlib import tx_api
import config
@@ -28,6 +30,7 @@ tx_api.cache_dir = '../txcache'
class TrezorTest(unittest.TestCase):
+
def setUp(self):
transport = config.TRANSPORT(*config.TRANSPORT_ARGS, **config.TRANSPORT_KWARGS)
if hasattr(config, 'DEBUG_TRANSPORT'):
@@ -68,3 +71,32 @@ class TrezorTest(unittest.TestCase):
def tearDown(self):
self.client.close()
+
+
+def generate_entropy(strength, internal_entropy, external_entropy):
+ '''
+ strength - length of produced seed. One of 128, 192, 256
+ random - binary stream of random data from external HRNG
+ '''
+ if strength not in (128, 192, 256):
+ raise Exception("Invalid strength")
+
+ if not internal_entropy:
+ raise Exception("Internal entropy is not provided")
+
+ if len(internal_entropy) < 32:
+ raise Exception("Internal entropy too short")
+
+ if not external_entropy:
+ raise Exception("External entropy is not provided")
+
+ if len(external_entropy) < 32:
+ raise Exception("External entropy too short")
+
+ entropy = hashlib.sha256(internal_entropy + external_entropy).digest()
+ entropy_stripped = entropy[:strength // 8]
+
+ if len(entropy_stripped) * 8 != strength:
+ raise Exception("Entropy length mismatch")
+
+ return entropy_stripped
diff --git a/tests/device_tests/test_msg_resetdevice.py b/tests/device_tests/test_msg_resetdevice.py
index ab646e3869..1d00ff00fe 100644
--- a/tests/device_tests/test_msg_resetdevice.py
+++ b/tests/device_tests/test_msg_resetdevice.py
@@ -17,45 +17,16 @@
# along with this library. If not, see .
import unittest
-import hashlib
import common
from trezorlib import messages_pb2 as proto
from mnemonic import Mnemonic
-def generate_entropy(strength, internal_entropy, external_entropy):
- '''
- strength - length of produced seed. One of 128, 192, 256
- random - binary stream of random data from external HRNG
- '''
- if strength not in (128, 192, 256):
- raise Exception("Invalid strength")
-
- if not internal_entropy:
- raise Exception("Internal entropy is not provided")
-
- if len(internal_entropy) < 32:
- raise Exception("Internal entropy too short")
-
- if not external_entropy:
- raise Exception("External entropy is not provided")
-
- if len(external_entropy) < 32:
- raise Exception("External entropy too short")
-
- entropy = hashlib.sha256(internal_entropy + external_entropy).digest()
- entropy_stripped = entropy[:strength // 8]
-
- if len(entropy_stripped) * 8 != strength:
- raise Exception("Entropy length mismatch")
-
- return entropy_stripped
-
-
class TestDeviceReset(common.TrezorTest):
def test_reset_device(self):
+
# No PIN, no passphrase
external_entropy = b'zlutoucky kun upel divoke ody' * 2
strength = 128
@@ -75,7 +46,7 @@ class TestDeviceReset(common.TrezorTest):
ret = self.client.call_raw(proto.EntropyAck(entropy=external_entropy))
# Generate mnemonic locally
- entropy = generate_entropy(strength, internal_entropy, external_entropy)
+ entropy = common.generate_entropy(strength, internal_entropy, external_entropy)
expected_mnemonic = Mnemonic('english').to_mnemonic(entropy)
mnemonic = []
@@ -106,6 +77,8 @@ class TestDeviceReset(common.TrezorTest):
# Check if device is properly initialized
resp = self.client.call_raw(proto.Initialize())
+ self.assertTrue(resp.initialized)
+ self.assertFalse(resp.needs_backup)
self.assertFalse(resp.pin_protection)
self.assertFalse(resp.passphrase_protection)
@@ -151,7 +124,7 @@ class TestDeviceReset(common.TrezorTest):
ret = self.client.call_raw(proto.EntropyAck(entropy=external_entropy))
# Generate mnemonic locally
- entropy = generate_entropy(strength, internal_entropy, external_entropy)
+ entropy = common.generate_entropy(strength, internal_entropy, external_entropy)
expected_mnemonic = Mnemonic('english').to_mnemonic(entropy)
mnemonic = []
@@ -182,6 +155,8 @@ class TestDeviceReset(common.TrezorTest):
# Check if device is properly initialized
resp = self.client.call_raw(proto.Initialize())
+ self.assertTrue(resp.initialized)
+ self.assertFalse(resp.needs_backup)
self.assertTrue(resp.pin_protection)
self.assertTrue(resp.passphrase_protection)
diff --git a/tests/device_tests/test_msg_resetdevice_skipbackup.py b/tests/device_tests/test_msg_resetdevice_skipbackup.py
new file mode 100644
index 0000000000..da827893af
--- /dev/null
+++ b/tests/device_tests/test_msg_resetdevice_skipbackup.py
@@ -0,0 +1,98 @@
+# 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 .
+
+import unittest
+import common
+
+from trezorlib import messages_pb2 as proto
+from mnemonic import Mnemonic
+
+
+class TestDeviceResetSkipBackup(common.TrezorTest):
+
+ def test_reset_device_skip_backup(self):
+
+ external_entropy = b'zlutoucky kun upel divoke ody' * 2
+ strength = 128
+
+ ret = self.client.call_raw(proto.ResetDevice(
+ display_random=False,
+ strength=strength,
+ passphrase_protection=False,
+ pin_protection=False,
+ language='english',
+ label='test',
+ skip_backup=True
+ ))
+
+ # Provide entropy
+ self.assertIsInstance(ret, proto.EntropyRequest)
+ internal_entropy = self.client.debug.read_reset_entropy()
+ ret = self.client.call_raw(proto.EntropyAck(entropy=external_entropy))
+ self.assertIsInstance(ret, proto.Success)
+
+ # Check if device is properly initialized
+ resp = self.client.call_raw(proto.Initialize())
+ self.assertTrue(resp.initialized)
+ self.assertTrue(resp.needs_backup)
+
+ # Generate mnemonic locally
+ entropy = common.generate_entropy(strength, internal_entropy, external_entropy)
+ expected_mnemonic = Mnemonic('english').to_mnemonic(entropy)
+
+ # start Backup workflow
+ ret = self.client.call_raw(proto.BackupDevice())
+
+ mnemonic = []
+ for _ in range(strength // 32 * 3):
+ self.assertIsInstance(ret, proto.ButtonRequest)
+ mnemonic.append(self.client.debug.read_reset_word())
+ self.client.debug.press_yes()
+ self.client.call_raw(proto.ButtonAck())
+
+ mnemonic = ' '.join(mnemonic)
+
+ # Compare that device generated proper mnemonic for given entropies
+ self.assertEqual(mnemonic, expected_mnemonic)
+
+ mnemonic = []
+ for _ in range(strength // 32 * 3):
+ self.assertIsInstance(ret, proto.ButtonRequest)
+ mnemonic.append(self.client.debug.read_reset_word())
+ self.client.debug.press_yes()
+ resp = self.client.call_raw(proto.ButtonAck())
+
+ self.assertIsInstance(resp, proto.Success)
+
+ mnemonic = ' '.join(mnemonic)
+
+ # Compare that second pass printed out the same mnemonic once again
+ self.assertEqual(mnemonic, expected_mnemonic)
+
+ # start backup again - should fail
+ ret = self.client.call_raw(proto.BackupDevice())
+ self.assertIsInstance(ret, proto.Failure)
+
+ def test_initialized_device_backup_fail(self):
+ self.setup_mnemonic_nopin_nopassphrase()
+ ret = self.client.call_raw(proto.BackupDevice())
+ self.assertIsInstance(ret, proto.Failure)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/trezorlib/messages_pb2.py b/trezorlib/messages_pb2.py
index dbdf1f975c..2d85cc6cf8 100644
--- a/trezorlib/messages_pb2.py
+++ b/trezorlib/messages_pb2.py
@@ -1,7 +1,7 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: messages.proto
# libprotoc 3.3.0
-# trezor-common e04ecf819bf5e00413408b735f446431e28428e1
+# trezor-common 654ee5d8ec575331b6be15343617a8fcfdd66cdd
import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
@@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
name='messages.proto',
package='',
syntax='proto2',
- serialized_pb=_b('\n\x0emessages.proto\x1a\x0btypes.proto\"\x0c\n\nInitialize\"\r\n\x0bGetFeatures\"\x98\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\"\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\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\"M\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\"`\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\"}\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\"#\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*\xd9\x13\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_GetAddress\x10\x1d\x1a\x04\x90\xb5\x18\x01\x12\x1d\n\x13MessageType_Address\x10\x1e\x1a\x04\x98\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\x04\x90\xb5\x18\x01\x12\x1c\n\x12MessageType_TxSize\x10,\x1a\x04\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\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\x30\n\x1f\x63om.satoshilabs.trezor.protobufB\rTrezorMessage')
+ serialized_pb=_b('\n\x0emessages.proto\x1a\x0btypes.proto\"\x0c\n\nInitialize\"\r\n\x0bGetFeatures\"\xae\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\"\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\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\"M\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\"`\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\"}\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\"#\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*\xd9\x13\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_GetAddress\x10\x1d\x1a\x04\x90\xb5\x18\x01\x12\x1d\n\x13MessageType_Address\x10\x1e\x1a\x04\x98\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\x04\x90\xb5\x18\x01\x12\x1c\n\x12MessageType_TxSize\x10,\x1a\x04\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\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\x30\n\x1f\x63om.satoshilabs.trezor.protobufB\rTrezorMessage')
,
dependencies=[types__pb2.DESCRIPTOR,])
@@ -308,8 +308,8 @@ _MESSAGETYPE = _descriptor.EnumDescriptor(
],
containing_type=None,
options=None,
- serialized_start=5081,
- serialized_end=7602,
+ serialized_start=5103,
+ serialized_end=7624,
)
_sym_db.RegisterEnumDescriptor(_MESSAGETYPE)
@@ -566,6 +566,13 @@ _FEATURES = _descriptor.Descriptor(
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),
],
extensions=[
],
@@ -579,7 +586,7 @@ _FEATURES = _descriptor.Descriptor(
oneofs=[
],
serialized_start=61,
- serialized_end=469,
+ serialized_end=491,
)
@@ -602,8 +609,8 @@ _CLEARSESSION = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=471,
- serialized_end=485,
+ serialized_start=493,
+ serialized_end=507,
)
@@ -654,8 +661,8 @@ _APPLYSETTINGS = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=487,
- serialized_end=579,
+ serialized_start=509,
+ serialized_end=601,
)
@@ -685,8 +692,8 @@ _CHANGEPIN = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=581,
- serialized_end=608,
+ serialized_start=603,
+ serialized_end=630,
)
@@ -737,8 +744,8 @@ _PING = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=610,
- serialized_end=715,
+ serialized_start=632,
+ serialized_end=737,
)
@@ -768,8 +775,8 @@ _SUCCESS = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=717,
- serialized_end=743,
+ serialized_start=739,
+ serialized_end=765,
)
@@ -806,8 +813,8 @@ _FAILURE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=745,
- serialized_end=799,
+ serialized_start=767,
+ serialized_end=821,
)
@@ -844,8 +851,8 @@ _BUTTONREQUEST = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=801,
- serialized_end=864,
+ serialized_start=823,
+ serialized_end=886,
)
@@ -868,8 +875,8 @@ _BUTTONACK = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=866,
- serialized_end=877,
+ serialized_start=888,
+ serialized_end=899,
)
@@ -899,8 +906,8 @@ _PINMATRIXREQUEST = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=879,
- serialized_end=934,
+ serialized_start=901,
+ serialized_end=956,
)
@@ -930,8 +937,8 @@ _PINMATRIXACK = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=936,
- serialized_end=963,
+ serialized_start=958,
+ serialized_end=985,
)
@@ -954,8 +961,8 @@ _CANCEL = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=965,
- serialized_end=973,
+ serialized_start=987,
+ serialized_end=995,
)
@@ -978,8 +985,8 @@ _PASSPHRASEREQUEST = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=975,
- serialized_end=994,
+ serialized_start=997,
+ serialized_end=1016,
)
@@ -1009,8 +1016,8 @@ _PASSPHRASEACK = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=996,
- serialized_end=1031,
+ serialized_start=1018,
+ serialized_end=1053,
)
@@ -1040,8 +1047,8 @@ _GETENTROPY = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1033,
- serialized_end=1059,
+ serialized_start=1055,
+ serialized_end=1081,
)
@@ -1071,8 +1078,8 @@ _ENTROPY = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1061,
- serialized_end=1087,
+ serialized_start=1083,
+ serialized_end=1109,
)
@@ -1123,8 +1130,8 @@ _GETPUBLICKEY = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1089,
- serialized_end=1198,
+ serialized_start=1111,
+ serialized_end=1220,
)
@@ -1161,8 +1168,8 @@ _PUBLICKEY = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1200,
- serialized_end=1252,
+ serialized_start=1222,
+ serialized_end=1274,
)
@@ -1220,8 +1227,8 @@ _GETADDRESS = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1255,
- serialized_end=1434,
+ serialized_start=1277,
+ serialized_end=1456,
)
@@ -1258,8 +1265,8 @@ _ETHEREUMGETADDRESS = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1436,
- serialized_end=1497,
+ serialized_start=1458,
+ serialized_end=1519,
)
@@ -1289,8 +1296,8 @@ _ADDRESS = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1499,
- serialized_end=1525,
+ serialized_start=1521,
+ serialized_end=1547,
)
@@ -1320,8 +1327,8 @@ _ETHEREUMADDRESS = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1527,
- serialized_end=1561,
+ serialized_start=1549,
+ serialized_end=1583,
)
@@ -1344,8 +1351,8 @@ _WIPEDEVICE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1563,
- serialized_end=1575,
+ serialized_start=1585,
+ serialized_end=1597,
)
@@ -1424,8 +1431,8 @@ _LOADDEVICE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1578,
- serialized_end=1765,
+ serialized_start=1600,
+ serialized_end=1787,
)
@@ -1504,8 +1511,8 @@ _RESETDEVICE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1768,
- serialized_end=1967,
+ serialized_start=1790,
+ serialized_end=1989,
)
@@ -1528,8 +1535,8 @@ _BACKUPDEVICE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1969,
- serialized_end=1983,
+ serialized_start=1991,
+ serialized_end=2005,
)
@@ -1552,8 +1559,8 @@ _ENTROPYREQUEST = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=1985,
- serialized_end=2001,
+ serialized_start=2007,
+ serialized_end=2023,
)
@@ -1583,8 +1590,8 @@ _ENTROPYACK = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2003,
- serialized_end=2032,
+ serialized_start=2025,
+ serialized_end=2054,
)
@@ -1670,8 +1677,8 @@ _RECOVERYDEVICE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2035,
- serialized_end=2246,
+ serialized_start=2057,
+ serialized_end=2268,
)
@@ -1701,8 +1708,8 @@ _WORDREQUEST = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2248,
- serialized_end=2293,
+ serialized_start=2270,
+ serialized_end=2315,
)
@@ -1732,8 +1739,8 @@ _WORDACK = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2295,
- serialized_end=2318,
+ serialized_start=2317,
+ serialized_end=2340,
)
@@ -1777,8 +1784,8 @@ _SIGNMESSAGE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2320,
- serialized_end=2397,
+ serialized_start=2342,
+ serialized_end=2419,
)
@@ -1829,8 +1836,8 @@ _VERIFYMESSAGE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2399,
- serialized_end=2495,
+ serialized_start=2421,
+ serialized_end=2517,
)
@@ -1867,8 +1874,8 @@ _MESSAGESIGNATURE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2497,
- serialized_end=2551,
+ serialized_start=2519,
+ serialized_end=2573,
)
@@ -1926,8 +1933,8 @@ _ENCRYPTMESSAGE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2553,
- serialized_end=2671,
+ serialized_start=2575,
+ serialized_end=2693,
)
@@ -1971,8 +1978,8 @@ _ENCRYPTEDMESSAGE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2673,
- serialized_end=2737,
+ serialized_start=2695,
+ serialized_end=2759,
)
@@ -2023,8 +2030,8 @@ _DECRYPTMESSAGE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2739,
- serialized_end=2820,
+ serialized_start=2761,
+ serialized_end=2842,
)
@@ -2061,8 +2068,8 @@ _DECRYPTEDMESSAGE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2822,
- serialized_end=2874,
+ serialized_start=2844,
+ serialized_end=2896,
)
@@ -2134,8 +2141,8 @@ _CIPHERKEYVALUE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=2877,
- serialized_end=3017,
+ serialized_start=2899,
+ serialized_end=3039,
)
@@ -2165,8 +2172,8 @@ _CIPHEREDKEYVALUE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=3019,
- serialized_end=3052,
+ serialized_start=3041,
+ serialized_end=3074,
)
@@ -2210,8 +2217,8 @@ _ESTIMATETXSIZE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=3054,
- serialized_end=3143,
+ serialized_start=3076,
+ serialized_end=3165,
)
@@ -2241,8 +2248,8 @@ _TXSIZE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=3145,
- serialized_end=3170,
+ serialized_start=3167,
+ serialized_end=3192,
)
@@ -2300,8 +2307,8 @@ _SIGNTX = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=3172,
- serialized_end=3295,
+ serialized_start=3194,
+ serialized_end=3317,
)
@@ -2366,8 +2373,8 @@ _SIMPLESIGNTX = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=3298,
- serialized_end=3484,
+ serialized_start=3320,
+ serialized_end=3506,
)
@@ -2411,8 +2418,8 @@ _TXREQUEST = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=3487,
- serialized_end=3620,
+ serialized_start=3509,
+ serialized_end=3642,
)
@@ -2442,8 +2449,8 @@ _TXACK = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=3622,
- serialized_end=3659,
+ serialized_start=3644,
+ serialized_end=3681,
)
@@ -2529,8 +2536,8 @@ _ETHEREUMSIGNTX = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=3662,
- serialized_end=3844,
+ serialized_start=3684,
+ serialized_end=3866,
)
@@ -2581,8 +2588,8 @@ _ETHEREUMTXREQUEST = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=3846,
- serialized_end=3949,
+ serialized_start=3868,
+ serialized_end=3971,
)
@@ -2612,8 +2619,8 @@ _ETHEREUMTXACK = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=3951,
- serialized_end=3986,
+ serialized_start=3973,
+ serialized_end=4008,
)
@@ -2664,8 +2671,8 @@ _SIGNIDENTITY = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=3988,
- serialized_end=4113,
+ serialized_start=4010,
+ serialized_end=4135,
)
@@ -2709,8 +2716,8 @@ _SIGNEDIDENTITY = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4115,
- serialized_end=4187,
+ serialized_start=4137,
+ serialized_end=4209,
)
@@ -2754,8 +2761,8 @@ _GETECDHSESSIONKEY = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4189,
- serialized_end=4292,
+ serialized_start=4211,
+ serialized_end=4314,
)
@@ -2785,8 +2792,8 @@ _ECDHSESSIONKEY = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4294,
- serialized_end=4331,
+ serialized_start=4316,
+ serialized_end=4353,
)
@@ -2816,8 +2823,8 @@ _SETU2FCOUNTER = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4333,
- serialized_end=4369,
+ serialized_start=4355,
+ serialized_end=4391,
)
@@ -2847,8 +2854,8 @@ _FIRMWAREERASE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4371,
- serialized_end=4402,
+ serialized_start=4393,
+ serialized_end=4424,
)
@@ -2885,8 +2892,8 @@ _FIRMWAREREQUEST = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4404,
- serialized_end=4453,
+ serialized_start=4426,
+ serialized_end=4475,
)
@@ -2923,8 +2930,8 @@ _FIRMWAREUPLOAD = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4455,
- serialized_end=4502,
+ serialized_start=4477,
+ serialized_end=4524,
)
@@ -2954,8 +2961,8 @@ _DEBUGLINKDECISION = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4504,
- serialized_end=4539,
+ serialized_start=4526,
+ serialized_end=4561,
)
@@ -2978,8 +2985,8 @@ _DEBUGLINKGETSTATE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4541,
- serialized_end=4560,
+ serialized_start=4563,
+ serialized_end=4582,
)
@@ -3072,8 +3079,8 @@ _DEBUGLINKSTATE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4563,
- serialized_end=4798,
+ serialized_start=4585,
+ serialized_end=4820,
)
@@ -3096,8 +3103,8 @@ _DEBUGLINKSTOP = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4800,
- serialized_end=4815,
+ serialized_start=4822,
+ serialized_end=4837,
)
@@ -3141,8 +3148,8 @@ _DEBUGLINKLOG = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4817,
- serialized_end=4876,
+ serialized_start=4839,
+ serialized_end=4898,
)
@@ -3179,8 +3186,8 @@ _DEBUGLINKMEMORYREAD = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4878,
- serialized_end=4932,
+ serialized_start=4900,
+ serialized_end=4954,
)
@@ -3210,8 +3217,8 @@ _DEBUGLINKMEMORY = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4934,
- serialized_end=4967,
+ serialized_start=4956,
+ serialized_end=4989,
)
@@ -3255,8 +3262,8 @@ _DEBUGLINKMEMORYWRITE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=4969,
- serialized_end=5039,
+ serialized_start=4991,
+ serialized_end=5061,
)
@@ -3286,8 +3293,8 @@ _DEBUGLINKFLASHERASE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
- serialized_start=5041,
- serialized_end=5078,
+ serialized_start=5063,
+ serialized_end=5100,
)
_FEATURES.fields_by_name['coins'].message_type = types__pb2._COINTYPE
diff --git a/trezorlib/types_pb2.py b/trezorlib/types_pb2.py
index b70030c86f..77202af7ca 100644
--- a/trezorlib/types_pb2.py
+++ b/trezorlib/types_pb2.py
@@ -1,7 +1,7 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: types.proto
# libprotoc 3.3.0
-# trezor-common e04ecf819bf5e00413408b735f446431e28428e1
+# trezor-common 654ee5d8ec575331b6be15343617a8fcfdd66cdd
import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))