From f53b945e615157525dfe589b09051f663cc89015 Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Thu, 22 Feb 2024 13:45:30 +0100 Subject: [PATCH] feat(common): Add language_version_matches flag to Features [no changelog] --- common/protob/messages-management.proto | 1 + core/src/trezor/messages.py | 2 + python/src/trezorlib/messages.py | 3 + .../protos/generated/messages_management.rs | 248 ++++++++++-------- 4 files changed, 149 insertions(+), 105 deletions(-) diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto index f148dc90c3..c9a47a5b0f 100644 --- a/common/protob/messages-management.proto +++ b/common/protob/messages-management.proto @@ -131,6 +131,7 @@ message Features { optional uint32 homescreen_width = 47; // homescreen width in pixels optional uint32 homescreen_height = 48; // homescreen height in pixels optional bool bootloader_locked = 49; // bootloader is locked + optional bool language_version_matches = 50 [default=true]; // translation blob version matches firmware version } /** diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index c986c2e3d5..11ffb750c1 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -2134,6 +2134,7 @@ if TYPE_CHECKING: homescreen_width: "int | None" homescreen_height: "int | None" bootloader_locked: "bool | None" + language_version_matches: "bool" def __init__( self, @@ -2184,6 +2185,7 @@ if TYPE_CHECKING: homescreen_width: "int | None" = None, homescreen_height: "int | None" = None, bootloader_locked: "bool | None" = None, + language_version_matches: "bool | None" = None, ) -> None: pass diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 05bd146f91..5cae28ea10 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -3213,6 +3213,7 @@ class Features(protobuf.MessageType): 47: protobuf.Field("homescreen_width", "uint32", repeated=False, required=False, default=None), 48: protobuf.Field("homescreen_height", "uint32", repeated=False, required=False, default=None), 49: protobuf.Field("bootloader_locked", "bool", repeated=False, required=False, default=None), + 50: protobuf.Field("language_version_matches", "bool", repeated=False, required=False, default=True), } def __init__( @@ -3265,6 +3266,7 @@ class Features(protobuf.MessageType): homescreen_width: Optional["int"] = None, homescreen_height: Optional["int"] = None, bootloader_locked: Optional["bool"] = None, + language_version_matches: Optional["bool"] = True, ) -> None: self.capabilities: Sequence["Capability"] = capabilities if capabilities is not None else [] self.major_version = major_version @@ -3313,6 +3315,7 @@ class Features(protobuf.MessageType): self.homescreen_width = homescreen_width self.homescreen_height = homescreen_height self.bootloader_locked = bootloader_locked + self.language_version_matches = language_version_matches class LockDevice(protobuf.MessageType): diff --git a/rust/trezor-client/src/protos/generated/messages_management.rs b/rust/trezor-client/src/protos/generated/messages_management.rs index 60184149fe..12bf9495fd 100644 --- a/rust/trezor-client/src/protos/generated/messages_management.rs +++ b/rust/trezor-client/src/protos/generated/messages_management.rs @@ -458,6 +458,8 @@ pub struct Features { pub homescreen_height: ::std::option::Option, // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.bootloader_locked) pub bootloader_locked: ::std::option::Option, + // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.language_version_matches) + pub language_version_matches: ::std::option::Option, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.management.Features.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -1527,8 +1529,27 @@ impl Features { self.bootloader_locked = ::std::option::Option::Some(v); } + // optional bool language_version_matches = 50; + + pub fn language_version_matches(&self) -> bool { + self.language_version_matches.unwrap_or(true) + } + + pub fn clear_language_version_matches(&mut self) { + self.language_version_matches = ::std::option::Option::None; + } + + pub fn has_language_version_matches(&self) -> bool { + self.language_version_matches.is_some() + } + + // Param is passed by value, moved + pub fn set_language_version_matches(&mut self, v: bool) { + self.language_version_matches = ::std::option::Option::Some(v); + } + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(47); + let mut fields = ::std::vec::Vec::with_capacity(48); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "vendor", @@ -1765,6 +1786,11 @@ impl Features { |m: &Features| { &m.bootloader_locked }, |m: &mut Features| { &mut m.bootloader_locked }, )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "language_version_matches", + |m: &Features| { &m.language_version_matches }, + |m: &mut Features| { &mut m.language_version_matches }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( "Features", fields, @@ -1936,6 +1962,9 @@ impl ::protobuf::Message for Features { 392 => { self.bootloader_locked = ::std::option::Option::Some(is.read_bool()?); }, + 400 => { + self.language_version_matches = ::std::option::Option::Some(is.read_bool()?); + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -2089,6 +2118,9 @@ impl ::protobuf::Message for Features { if let Some(v) = self.bootloader_locked { my_size += 2 + 1; } + if let Some(v) = self.language_version_matches { + my_size += 2 + 1; + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -2236,6 +2268,9 @@ impl ::protobuf::Message for Features { if let Some(v) = self.bootloader_locked { os.write_bool(49, v)?; } + if let Some(v) = self.language_version_matches { + os.write_bool(50, v)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -2300,6 +2335,7 @@ impl ::protobuf::Message for Features { self.homescreen_width = ::std::option::Option::None; self.homescreen_height = ::std::option::Option::None; self.bootloader_locked = ::std::option::Option::None; + self.language_version_matches = ::std::option::Option::None; self.special_fields.clear(); } @@ -2352,6 +2388,7 @@ impl ::protobuf::Message for Features { homescreen_width: ::std::option::Option::None, homescreen_height: ::std::option::Option::None, bootloader_locked: ::std::option::Option::None, + language_version_matches: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -10268,7 +10305,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x0emessages.proto\"\x80\x01\n\nInitialize\x12\x1d\n\nsession_id\x18\x01\ \x20\x01(\x0cR\tsessionId\x12,\n\x10_skip_passphrase\x18\x02\x20\x01(\ \x08R\x0eSkipPassphraseB\x02\x18\x01\x12%\n\x0ederive_cardano\x18\x03\ - \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\xf0\x12\n\x08Featur\ + \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\xb0\x13\n\x08Featur\ es\x12\x16\n\x06vendor\x18\x01\x20\x01(\tR\x06vendor\x12#\n\rmajor_versi\ on\x18\x02\x20\x02(\rR\x0cmajorVersion\x12#\n\rminor_version\x18\x03\x20\ \x02(\rR\x0cminorVersion\x12#\n\rpatch_version\x18\x04\x20\x02(\rR\x0cpa\ @@ -10311,109 +10348,110 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \n\x0cunit_btconly\x18.\x20\x01(\x08R\x0bunitBtconly\x12)\n\x10homescree\ n_width\x18/\x20\x01(\rR\x0fhomescreenWidth\x12+\n\x11homescreen_height\ \x180\x20\x01(\rR\x10homescreenHeight\x12+\n\x11bootloader_locked\x181\ - \x20\x01(\x08R\x10bootloaderLocked\"\xe1\x03\n\nCapability\x12\x1c\n\x12\ - Capability_Bitcoin\x10\x01\x1a\x04\x80\xa6\x1d\x01\x12\x1b\n\x17Capabili\ - ty_Bitcoin_like\x10\x02\x12\x16\n\x12Capability_Binance\x10\x03\x12\x16\ - \n\x12Capability_Cardano\x10\x04\x12\x1b\n\x11Capability_Crypto\x10\x05\ - \x1a\x04\x80\xa6\x1d\x01\x12\x12\n\x0eCapability_EOS\x10\x06\x12\x17\n\ - \x13Capability_Ethereum\x10\x07\x12\x17\n\x0fCapability_Lisk\x10\x08\x1a\ - \x02\x08\x01\x12\x15\n\x11Capability_Monero\x10\t\x12\x12\n\x0eCapabilit\ - y_NEM\x10\n\x12\x15\n\x11Capability_Ripple\x10\x0b\x12\x16\n\x12Capabili\ - ty_Stellar\x10\x0c\x12\x14\n\x10Capability_Tezos\x10\r\x12\x12\n\x0eCapa\ - bility_U2F\x10\x0e\x12\x1b\n\x11Capability_Shamir\x10\x0f\x1a\x04\x80\ - \xa6\x1d\x01\x12!\n\x17Capability_ShamirGroups\x10\x10\x1a\x04\x80\xa6\ - \x1d\x01\x12$\n\x1aCapability_PassphraseEntry\x10\x11\x1a\x04\x80\xa6\ - \x1d\x01\x12\x15\n\x11Capability_Solana\x10\x12\x1a\x04\xc8\xf3\x18\x01\ - \"\x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\x18\x01\x20\ - \x01(\rR\x08expiryMs\"\x0c\n\nEndSession\"\x9b\x04\n\rApplySettings\x12\ - \x1e\n\x08language\x18\x01\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\ - \n\x05label\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_passphrase\x18\ - \x03\x20\x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\x04\x20\x01(\ - \x0cR\nhomescreen\x120\n\x12_passphrase_source\x18\x05\x20\x01(\rR\x10Pa\ - ssphraseSourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\x18\x06\x20\x01\ - (\rR\x0fautoLockDelayMs\x12)\n\x10display_rotation\x18\x07\x20\x01(\rR\ - \x0fdisplayRotation\x12=\n\x1bpassphrase_always_on_device\x18\x08\x20\ - \x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_checks\x18\t\x20\ - \x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevelR\x0csafetyChe\ - cks\x123\n\x15experimental_features\x18\n\x20\x01(\x08R\x14experimentalF\ - eatures\x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01(\x08R\x16hid\ - ePassphraseFromHost\"T\n\x0eChangeLanguage\x12\x1f\n\x0bdata_length\x18\ - \x01\x20\x02(\rR\ndataLength\x12!\n\x0cshow_display\x18\x02\x20\x01(\x08\ - R\x0bshowDisplay\"Z\n\x16TranslationDataRequest\x12\x1f\n\x0bdata_length\ - \x18\x01\x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\x18\x02\x20\ - \x02(\rR\ndataOffset\"3\n\x12TranslationDataAck\x12\x1d\n\ndata_chunk\ - \x18\x01\x20\x02(\x0cR\tdataChunk\"\"\n\nApplyFlags\x12\x14\n\x05flags\ - \x18\x01\x20\x02(\rR\x05flags\"#\n\tChangePin\x12\x16\n\x06remove\x18\ - \x01\x20\x01(\x08R\x06remove\"(\n\x0eChangeWipeCode\x12\x16\n\x06remove\ - \x18\x01\x20\x01(\x08R\x06remove\"\xaa\x01\n\tSdProtect\x12]\n\toperatio\ - n\x18\x01\x20\x02(\x0e2?.hw.trezor.messages.management.SdProtect.SdProte\ - ctOperationTypeR\toperation\">\n\x16SdProtectOperationType\x12\x0b\n\x07\ - DISABLE\x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07REFRESH\x10\x02\"O\ - \n\x04Ping\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07message\x12+\n\ - \x11button_protection\x18\x02\x20\x01(\x08R\x10buttonProtection\"\x08\n\ - \x06Cancel\"\x20\n\nGetEntropy\x12\x12\n\x04size\x18\x01\x20\x02(\rR\x04\ - size\"#\n\x07Entropy\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entro\ - py\"/\n\x0fGetFirmwareHash\x12\x1c\n\tchallenge\x18\x01\x20\x01(\x0cR\tc\ - hallenge\"\"\n\x0cFirmwareHash\x12\x12\n\x04hash\x18\x01\x20\x02(\x0cR\ - \x04hash\"2\n\x12AuthenticateDevice\x12\x1c\n\tchallenge\x18\x01\x20\x02\ - (\x0cR\tchallenge\"U\n\x11AuthenticityProof\x12\"\n\x0ccertificates\x18\ - \x01\x20\x03(\x0cR\x0ccertificates\x12\x1c\n\tsignature\x18\x02\x20\x02(\ - \x0cR\tsignature\"\x0c\n\nWipeDevice\"\xad\x02\n\nLoadDevice\x12\x1c\n\t\ - mnemonics\x18\x01\x20\x03(\tR\tmnemonics\x12\x10\n\x03pin\x18\x03\x20\ - \x01(\tR\x03pin\x123\n\x15passphrase_protection\x18\x04\x20\x01(\x08R\ - \x14passphraseProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08la\ - nguageB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12#\ - \n\rskip_checksum\x18\x07\x20\x01(\x08R\x0cskipChecksum\x12\x1f\n\x0bu2f\ - _counter\x18\x08\x20\x01(\rR\nu2fCounter\x12!\n\x0cneeds_backup\x18\t\ - \x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\tno_backup\x18\n\x20\x01(\x08R\ - \x08noBackup\"\x99\x03\n\x0bResetDevice\x12%\n\x0edisplay_random\x18\x01\ - \x20\x01(\x08R\rdisplayRandom\x12\x1f\n\x08strength\x18\x02\x20\x01(\r:\ - \x03256R\x08strength\x123\n\x15passphrase_protection\x18\x03\x20\x01(\ - \x08R\x14passphraseProtection\x12%\n\x0epin_protection\x18\x04\x20\x01(\ - \x08R\rpinProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08langua\ - geB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12\x1f\ - \n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_back\ - up\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\ - \x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.m\ - essages.management.BackupType:\x05Bip39R\nbackupType\"\x0e\n\x0cBackupDe\ - vice\"\x10\n\x0eEntropyRequest\"&\n\nEntropyAck\x12\x18\n\x07entropy\x18\ - \x01\x20\x02(\x0cR\x07entropy\"\xd8\x03\n\x0eRecoveryDevice\x12\x1d\n\nw\ - ord_count\x18\x01\x20\x01(\rR\twordCount\x123\n\x15passphrase_protection\ - \x18\x02\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_protection\ - \x18\x03\x20\x01(\x08R\rpinProtection\x12\x1e\n\x08language\x18\x04\x20\ - \x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x05\x20\x01(\tR\ - \x05label\x12)\n\x10enforce_wordlist\x18\x06\x20\x01(\x08R\x0fenforceWor\ - dlist\x12T\n\x04type\x18\x08\x20\x01(\x0e2@.hw.trezor.messages.managemen\ - t.RecoveryDevice.RecoveryDeviceTypeR\x04type\x12\x1f\n\x0bu2f_counter\ - \x18\t\x20\x01(\rR\nu2fCounter\x12\x17\n\x07dry_run\x18\n\x20\x01(\x08R\ - \x06dryRun\"Z\n\x12RecoveryDeviceType\x12%\n!RecoveryDeviceType_Scramble\ - dWords\x10\0\x12\x1d\n\x19RecoveryDeviceType_Matrix\x10\x01\"\xc5\x01\n\ - \x0bWordRequest\x12N\n\x04type\x18\x01\x20\x02(\x0e2:.hw.trezor.messages\ - .management.WordRequest.WordRequestTypeR\x04type\"f\n\x0fWordRequestType\ - \x12\x19\n\x15WordRequestType_Plain\x10\0\x12\x1b\n\x17WordRequestType_M\ - atrix9\x10\x01\x12\x1b\n\x17WordRequestType_Matrix6\x10\x02\"\x1d\n\x07W\ - ordAck\x12\x12\n\x04word\x18\x01\x20\x02(\tR\x04word\"0\n\rSetU2FCounter\ - \x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x13\n\x11Get\ - NextU2FCounter\"1\n\x0eNextU2FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\ - \x20\x02(\rR\nu2fCounter\"\x11\n\x0fDoPreauthorized\"\x16\n\x14Preauthor\ - izedRequest\"\x15\n\x13CancelAuthorization\"\x9a\x02\n\x12RebootToBootlo\ - ader\x12o\n\x0cboot_command\x18\x01\x20\x01(\x0e2=.hw.trezor.messages.ma\ - nagement.RebootToBootloader.BootCommand:\rSTOP_AND_WAITR\x0bbootCommand\ - \x12'\n\x0ffirmware_header\x18\x02\x20\x01(\x0cR\x0efirmwareHeader\x123\ - \n\x14language_data_length\x18\x03\x20\x01(\r:\x010R\x12languageDataLeng\ - th\"5\n\x0bBootCommand\x12\x11\n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTA\ - LL_UPGRADE\x10\x01\"\x10\n\x08GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonc\ - e\x12\x14\n\x05nonce\x18\x01\x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\ - \";\n\nUnlockPath\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\ - \x12\x10\n\x03mac\x18\x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathReque\ - st\x12\x10\n\x03mac\x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTu\ - torial\"\x12\n\x10UnlockBootloader*>\n\nBackupType\x12\t\n\x05Bip39\x10\ - \0\x12\x10\n\x0cSlip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\ - \x02*G\n\x10SafetyCheckLevel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPrompt\ - Always\x10\x01\x12\x15\n\x11PromptTemporarily\x10\x02*0\n\x10HomescreenF\ - ormat\x12\x08\n\x04Toif\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04T\ - oiG\x10\x03BB\n#com.satoshilabs.trezor.lib.protobufB\x17TrezorMessageMan\ - agement\x80\xa6\x1d\x01\ + \x20\x01(\x08R\x10bootloaderLocked\x12>\n\x18language_version_matches\ + \x182\x20\x01(\x08:\x04trueR\x16languageVersionMatches\"\xe1\x03\n\nCapa\ + bility\x12\x1c\n\x12Capability_Bitcoin\x10\x01\x1a\x04\x80\xa6\x1d\x01\ + \x12\x1b\n\x17Capability_Bitcoin_like\x10\x02\x12\x16\n\x12Capability_Bi\ + nance\x10\x03\x12\x16\n\x12Capability_Cardano\x10\x04\x12\x1b\n\x11Capab\ + ility_Crypto\x10\x05\x1a\x04\x80\xa6\x1d\x01\x12\x12\n\x0eCapability_EOS\ + \x10\x06\x12\x17\n\x13Capability_Ethereum\x10\x07\x12\x17\n\x0fCapabilit\ + y_Lisk\x10\x08\x1a\x02\x08\x01\x12\x15\n\x11Capability_Monero\x10\t\x12\ + \x12\n\x0eCapability_NEM\x10\n\x12\x15\n\x11Capability_Ripple\x10\x0b\ + \x12\x16\n\x12Capability_Stellar\x10\x0c\x12\x14\n\x10Capability_Tezos\ + \x10\r\x12\x12\n\x0eCapability_U2F\x10\x0e\x12\x1b\n\x11Capability_Shami\ + r\x10\x0f\x1a\x04\x80\xa6\x1d\x01\x12!\n\x17Capability_ShamirGroups\x10\ + \x10\x1a\x04\x80\xa6\x1d\x01\x12$\n\x1aCapability_PassphraseEntry\x10\ + \x11\x1a\x04\x80\xa6\x1d\x01\x12\x15\n\x11Capability_Solana\x10\x12\x1a\ + \x04\xc8\xf3\x18\x01\"\x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpi\ + ry_ms\x18\x01\x20\x01(\rR\x08expiryMs\"\x0c\n\nEndSession\"\x9b\x04\n\rA\ + pplySettings\x12\x1e\n\x08language\x18\x01\x20\x01(\tR\x08languageB\x02\ + \x18\x01\x12\x14\n\x05label\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_p\ + assphrase\x18\x03\x20\x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\ + \x04\x20\x01(\x0cR\nhomescreen\x120\n\x12_passphrase_source\x18\x05\x20\ + \x01(\rR\x10PassphraseSourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\ + \x18\x06\x20\x01(\rR\x0fautoLockDelayMs\x12)\n\x10display_rotation\x18\ + \x07\x20\x01(\rR\x0fdisplayRotation\x12=\n\x1bpassphrase_always_on_devic\ + e\x18\x08\x20\x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_check\ + s\x18\t\x20\x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevelR\ + \x0csafetyChecks\x123\n\x15experimental_features\x18\n\x20\x01(\x08R\x14\ + experimentalFeatures\x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01\ + (\x08R\x16hidePassphraseFromHost\"T\n\x0eChangeLanguage\x12\x1f\n\x0bdat\ + a_length\x18\x01\x20\x02(\rR\ndataLength\x12!\n\x0cshow_display\x18\x02\ + \x20\x01(\x08R\x0bshowDisplay\"Z\n\x16TranslationDataRequest\x12\x1f\n\ + \x0bdata_length\x18\x01\x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\ + \x18\x02\x20\x02(\rR\ndataOffset\"3\n\x12TranslationDataAck\x12\x1d\n\nd\ + ata_chunk\x18\x01\x20\x02(\x0cR\tdataChunk\"\"\n\nApplyFlags\x12\x14\n\ + \x05flags\x18\x01\x20\x02(\rR\x05flags\"#\n\tChangePin\x12\x16\n\x06remo\ + ve\x18\x01\x20\x01(\x08R\x06remove\"(\n\x0eChangeWipeCode\x12\x16\n\x06r\ + emove\x18\x01\x20\x01(\x08R\x06remove\"\xaa\x01\n\tSdProtect\x12]\n\tope\ + ration\x18\x01\x20\x02(\x0e2?.hw.trezor.messages.management.SdProtect.Sd\ + ProtectOperationTypeR\toperation\">\n\x16SdProtectOperationType\x12\x0b\ + \n\x07DISABLE\x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07REFRESH\x10\ + \x02\"O\n\x04Ping\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07message\ + \x12+\n\x11button_protection\x18\x02\x20\x01(\x08R\x10buttonProtection\"\ + \x08\n\x06Cancel\"\x20\n\nGetEntropy\x12\x12\n\x04size\x18\x01\x20\x02(\ + \rR\x04size\"#\n\x07Entropy\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\ + \x07entropy\"/\n\x0fGetFirmwareHash\x12\x1c\n\tchallenge\x18\x01\x20\x01\ + (\x0cR\tchallenge\"\"\n\x0cFirmwareHash\x12\x12\n\x04hash\x18\x01\x20\ + \x02(\x0cR\x04hash\"2\n\x12AuthenticateDevice\x12\x1c\n\tchallenge\x18\ + \x01\x20\x02(\x0cR\tchallenge\"U\n\x11AuthenticityProof\x12\"\n\x0ccerti\ + ficates\x18\x01\x20\x03(\x0cR\x0ccertificates\x12\x1c\n\tsignature\x18\ + \x02\x20\x02(\x0cR\tsignature\"\x0c\n\nWipeDevice\"\xad\x02\n\nLoadDevic\ + e\x12\x1c\n\tmnemonics\x18\x01\x20\x03(\tR\tmnemonics\x12\x10\n\x03pin\ + \x18\x03\x20\x01(\tR\x03pin\x123\n\x15passphrase_protection\x18\x04\x20\ + \x01(\x08R\x14passphraseProtection\x12\x1e\n\x08language\x18\x05\x20\x01\ + (\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05\ + label\x12#\n\rskip_checksum\x18\x07\x20\x01(\x08R\x0cskipChecksum\x12\ + \x1f\n\x0bu2f_counter\x18\x08\x20\x01(\rR\nu2fCounter\x12!\n\x0cneeds_ba\ + ckup\x18\t\x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\tno_backup\x18\n\x20\ + \x01(\x08R\x08noBackup\"\x99\x03\n\x0bResetDevice\x12%\n\x0edisplay_rand\ + om\x18\x01\x20\x01(\x08R\rdisplayRandom\x12\x1f\n\x08strength\x18\x02\ + \x20\x01(\r:\x03256R\x08strength\x123\n\x15passphrase_protection\x18\x03\ + \x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_protection\x18\x04\ + \x20\x01(\x08R\rpinProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\ + \x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05labe\ + l\x12\x1f\n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0b\ + skip_backup\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\ + \x20\x01(\x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw\ + .trezor.messages.management.BackupType:\x05Bip39R\nbackupType\"\x0e\n\ + \x0cBackupDevice\"\x10\n\x0eEntropyRequest\"&\n\nEntropyAck\x12\x18\n\ + \x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\xd8\x03\n\x0eRecoveryDevi\ + ce\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCount\x123\n\x15passph\ + rase_protection\x18\x02\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0e\ + pin_protection\x18\x03\x20\x01(\x08R\rpinProtection\x12\x1e\n\x08languag\ + e\x18\x04\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\ + \x05\x20\x01(\tR\x05label\x12)\n\x10enforce_wordlist\x18\x06\x20\x01(\ + \x08R\x0fenforceWordlist\x12T\n\x04type\x18\x08\x20\x01(\x0e2@.hw.trezor\ + .messages.management.RecoveryDevice.RecoveryDeviceTypeR\x04type\x12\x1f\ + \n\x0bu2f_counter\x18\t\x20\x01(\rR\nu2fCounter\x12\x17\n\x07dry_run\x18\ + \n\x20\x01(\x08R\x06dryRun\"Z\n\x12RecoveryDeviceType\x12%\n!RecoveryDev\ + iceType_ScrambledWords\x10\0\x12\x1d\n\x19RecoveryDeviceType_Matrix\x10\ + \x01\"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\x01\x20\x02(\x0e2:.hw\ + .trezor.messages.management.WordRequest.WordRequestTypeR\x04type\"f\n\ + \x0fWordRequestType\x12\x19\n\x15WordRequestType_Plain\x10\0\x12\x1b\n\ + \x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordRequestType_Matrix6\ + \x10\x02\"\x1d\n\x07WordAck\x12\x12\n\x04word\x18\x01\x20\x02(\tR\x04wor\ + d\"0\n\rSetU2FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fC\ + ounter\"\x13\n\x11GetNextU2FCounter\"1\n\x0eNextU2FCounter\x12\x1f\n\x0b\ + u2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\n\x0fDoPreauthorized\"\ + \x16\n\x14PreauthorizedRequest\"\x15\n\x13CancelAuthorization\"\x9a\x02\ + \n\x12RebootToBootloader\x12o\n\x0cboot_command\x18\x01\x20\x01(\x0e2=.h\ + w.trezor.messages.management.RebootToBootloader.BootCommand:\rSTOP_AND_W\ + AITR\x0bbootCommand\x12'\n\x0ffirmware_header\x18\x02\x20\x01(\x0cR\x0ef\ + irmwareHeader\x123\n\x14language_data_length\x18\x03\x20\x01(\r:\x010R\ + \x12languageDataLength\"5\n\x0bBootCommand\x12\x11\n\rSTOP_AND_WAIT\x10\ + \0\x12\x13\n\x0fINSTALL_UPGRADE\x10\x01\"\x10\n\x08GetNonce:\x04\x88\xb2\ + \x19\x01\"#\n\x05Nonce\x12\x14\n\x05nonce\x18\x01\x20\x02(\x0cR\x05nonce\ + :\x04\x88\xb2\x19\x01\";\n\nUnlockPath\x12\x1b\n\taddress_n\x18\x01\x20\ + \x03(\rR\x08addressN\x12\x10\n\x03mac\x18\x02\x20\x01(\x0cR\x03mac\"'\n\ + \x13UnlockedPathRequest\x12\x10\n\x03mac\x18\x01\x20\x01(\x0cR\x03mac\"\ + \x14\n\x12ShowDeviceTutorial\"\x12\n\x10UnlockBootloader*>\n\nBackupType\ + \x12\t\n\x05Bip39\x10\0\x12\x10\n\x0cSlip39_Basic\x10\x01\x12\x13\n\x0fS\ + lip39_Advanced\x10\x02*G\n\x10SafetyCheckLevel\x12\n\n\x06Strict\x10\0\ + \x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\x11PromptTemporarily\x10\ + \x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toif\x10\x01\x12\x08\n\x04Jpeg\ + \x10\x02\x12\x08\n\x04ToiG\x10\x03BB\n#com.satoshilabs.trezor.lib.protob\ + ufB\x17TrezorMessageManagement\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file