What changed, and why it matters
This commit adds a new device setting called auto_lock_delay_battery_ms to the Trezor protocol definitions. It lets users configure how long the device waits before automatically locking when running on battery or a wireless charger. The change only updates generated message bindings across Python, Rust, and core firmware; it does not contain any actual lock behavior logic or security fix.
No immediate security action is required for this commit. When the corresponding firmware logic is later implemented, review it for proper bounds validation, safe defaults, and user confirmation before the setting takes effect.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch extends the ApplySettings protobuf message with an optional uint32 field auto_lock_delay_battery_ms (field number 15) and regenerates the corresponding bindings in core/src/trezor/messages.py, python/src/trezorlib/messages.py, and rust/trezor-client/src/protos/generated/messages_management.rs. No firmware logic consuming this field is present in the diff, and no validation, bounds checking, or security behavior is shown.
Changed components
common/protob/messages-management.protocore/src/trezor/messages.pypython/src/trezorlib/messages.pyrust/trezor-client/src/protos/generated/messages_management.rsInspect captured patch +139 / −95
diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto
index cea951110..4e361165a 100644
--- a/common/protob/messages-management.proto
+++ b/common/protob/messages-management.proto
@@ -220,6 +220,7 @@ message ApplySettings {
optional bool hide_passphrase_from_host = 11; // do not show passphrase coming from host
optional bool haptic_feedback = 13; // enable haptic feedback
optional uint32 homescreen_length = 14; // byte length of new homescreen, device will request chunks
+ optional uint32 auto_lock_delay_battery_ms = 15; // time in ms after which device locks when on battery or wireless charger
}
/**
diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py
index 6ac8ff532..f7c0c93aa 100644
--- a/core/src/trezor/messages.py
+++ b/core/src/trezor/messages.py
@@ -2186,6 +2186,7 @@ if TYPE_CHECKING:
hide_passphrase_from_host: "bool | None"
haptic_feedback: "bool | None"
homescreen_length: "int | None"
+ auto_lock_delay_battery_ms: "int | None"
def __init__(
self,
@@ -2201,6 +2202,7 @@ if TYPE_CHECKING:
hide_passphrase_from_host: "bool | None" = None,
haptic_feedback: "bool | None" = None,
homescreen_length: "int | None" = None,
+ auto_lock_delay_battery_ms: "int | None" = None,
) -> None:
pass
diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py
index 852c2f87e..d498857a3 100644
--- a/python/src/trezorlib/messages.py
+++ b/python/src/trezorlib/messages.py
@@ -3391,6 +3391,7 @@ class ApplySettings(protobuf.MessageType):
11: protobuf.Field("hide_passphrase_from_host", "bool", repeated=False, required=False, default=None),
13: protobuf.Field("haptic_feedback", "bool", repeated=False, required=False, default=None),
14: protobuf.Field("homescreen_length", "uint32", repeated=False, required=False, default=None),
+ 15: protobuf.Field("auto_lock_delay_battery_ms", "uint32", repeated=False, required=False, default=None),
}
def __init__(
@@ -3409,6 +3410,7 @@ class ApplySettings(protobuf.MessageType):
hide_passphrase_from_host: Optional["bool"] = None,
haptic_feedback: Optional["bool"] = None,
homescreen_length: Optional["int"] = None,
+ auto_lock_delay_battery_ms: Optional["int"] = None,
) -> None:
self.language = language
self.label = label
@@ -3423,6 +3425,7 @@ class ApplySettings(protobuf.MessageType):
self.hide_passphrase_from_host = hide_passphrase_from_host
self.haptic_feedback = haptic_feedback
self.homescreen_length = homescreen_length
+ self.auto_lock_delay_battery_ms = auto_lock_delay_battery_ms
class ChangeLanguage(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 1243c14ec..911ce8c5f 100644
--- a/rust/trezor-client/src/protos/generated/messages_management.rs
+++ b/rust/trezor-client/src/protos/generated/messages_management.rs
@@ -3314,6 +3314,8 @@ pub struct ApplySettings {
pub haptic_feedback: ::std::option::Option<bool>,
// @@protoc_insertion_point(field:hw.trezor.messages.management.ApplySettings.homescreen_length)
pub homescreen_length: ::std::option::Option<u32>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.ApplySettings.auto_lock_delay_battery_ms)
+ pub auto_lock_delay_battery_ms: ::std::option::Option<u32>,
// special fields
// @@protoc_insertion_point(special_field:hw.trezor.messages.management.ApplySettings.special_fields)
pub special_fields: ::protobuf::SpecialFields,
@@ -3634,8 +3636,27 @@ impl ApplySettings {
self.homescreen_length = ::std::option::Option::Some(v);
}
+ // optional uint32 auto_lock_delay_battery_ms = 15;
+
+ pub fn auto_lock_delay_battery_ms(&self) -> u32 {
+ self.auto_lock_delay_battery_ms.unwrap_or(0)
+ }
+
+ pub fn clear_auto_lock_delay_battery_ms(&mut self) {
+ self.auto_lock_delay_battery_ms = ::std::option::Option::None;
+ }
+
+ pub fn has_auto_lock_delay_battery_ms(&self) -> bool {
+ self.auto_lock_delay_battery_ms.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_auto_lock_delay_battery_ms(&mut self, v: u32) {
+ self.auto_lock_delay_battery_ms = ::std::option::Option::Some(v);
+ }
+
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
- let mut fields = ::std::vec::Vec::with_capacity(13);
+ let mut fields = ::std::vec::Vec::with_capacity(14);
let mut oneofs = ::std::vec::Vec::with_capacity(0);
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
"language",
@@ -3702,6 +3723,11 @@ impl ApplySettings {
|m: &ApplySettings| { &m.homescreen_length },
|m: &mut ApplySettings| { &mut m.homescreen_length },
));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "auto_lock_delay_battery_ms",
+ |m: &ApplySettings| { &m.auto_lock_delay_battery_ms },
+ |m: &mut ApplySettings| { &mut m.auto_lock_delay_battery_ms },
+ ));
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ApplySettings>(
"ApplySettings",
fields,
@@ -3759,6 +3785,9 @@ impl ::protobuf::Message for ApplySettings {
112 => {
self.homescreen_length = ::std::option::Option::Some(is.read_uint32()?);
},
+ 120 => {
+ self.auto_lock_delay_battery_ms = ::std::option::Option::Some(is.read_uint32()?);
+ },
tag => {
::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
},
@@ -3810,6 +3839,9 @@ impl ::protobuf::Message for ApplySettings {
if let Some(v) = self.homescreen_length {
my_size += ::protobuf::rt::uint32_size(14, v);
}
+ if let Some(v) = self.auto_lock_delay_battery_ms {
+ my_size += ::protobuf::rt::uint32_size(15, v);
+ }
my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
self.special_fields.cached_size().set(my_size as u32);
my_size
@@ -3855,6 +3887,9 @@ impl ::protobuf::Message for ApplySettings {
if let Some(v) = self.homescreen_length {
os.write_uint32(14, v)?;
}
+ if let Some(v) = self.auto_lock_delay_battery_ms {
+ os.write_uint32(15, v)?;
+ }
os.write_unknown_fields(self.special_fields.unknown_fields())?;
::std::result::Result::Ok(())
}
@@ -3885,6 +3920,7 @@ impl ::protobuf::Message for ApplySettings {
self.hide_passphrase_from_host = ::std::option::Option::None;
self.haptic_feedback = ::std::option::Option::None;
self.homescreen_length = ::std::option::Option::None;
+ self.auto_lock_delay_battery_ms = ::std::option::Option::None;
self.special_fields.clear();
}
@@ -3903,6 +3939,7 @@ impl ::protobuf::Message for ApplySettings {
hide_passphrase_from_host: ::std::option::Option::None,
haptic_feedback: ::std::option::Option::None,
homescreen_length: ::std::option::Option::None,
+ auto_lock_delay_battery_ms: ::std::option::Option::None,
special_fields: ::protobuf::SpecialFields::new(),
};
&instance
@@ -11723,7 +11760,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\
ability_BLE\x10\x16\x1a\x04\x80\xa6\x1d\x01\x12\x18\n\x0eCapability_NFC\
\x10\x17\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\xf3\x18\x01\"\x0c\n\nLockDe\
vice\"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\x18\x01\x20\x01(\rR\x08expiryM\
- s\"\x0c\n\nEndSession\"\xa1\x05\n\rApplySettings\x12\x1e\n\x08language\
+ s\"\x0c\n\nEndSession\"\xdd\x05\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\rus\
ePassphrase\x12\x1e\n\nhomescreen\x18\x04\x20\x01(\x0cR\nhomescreen\x120\
@@ -11737,99 +11774,100 @@ static file_descriptor_proto_data: &'static [u8] = b"\
\x01(\x08R\x14experimentalFeatures\x129\n\x19hide_passphrase_from_host\
\x18\x0b\x20\x01(\x08R\x16hidePassphraseFromHost\x12'\n\x0fhaptic_feedba\
ck\x18\r\x20\x01(\x08R\x0ehapticFeedback\x12+\n\x11homescreen_length\x18\
- \x0e\x20\x01(\rR\x10homescreenLength\"T\n\x0eChangeLanguage\x12\x1f\n\
- \x0bdata_length\x18\x01\x20\x02(\rR\ndataLength\x12!\n\x0cshow_display\
- \x18\x02\x20\x01(\x08R\x0bshowDisplay\"T\n\x10DataChunkRequest\x12\x1f\n\
- \x0bdata_length\x18\x01\x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\
- \x18\x02\x20\x02(\rR\ndataOffset\"-\n\x0cDataChunkAck\x12\x1d\n\ndata_ch\
- unk\x18\x01\x20\x02(\x0cR\tdataChunk\"\"\n\nApplyFlags\x12\x14\n\x05flag\
- s\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\"\x9d\x03\n\x0bResetDevice\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\x12#\n\ren\
- tropy_check\x18\x0b\x20\x01(\x08R\x0centropyCheckJ\x04\x08\x01\x10\x02\"\
- \xe5\x01\n\x0cBackupDevice\x12'\n\x0fgroup_threshold\x18\x01\x20\x01(\rR\
- \x0egroupThreshold\x12O\n\x06groups\x18\x02\x20\x03(\x0b27.hw.trezor.mes\
- sages.management.BackupDevice.Slip39GroupR\x06groups\x1a[\n\x0bSlip39Gro\
- up\x12)\n\x10member_threshold\x18\x01\x20\x02(\rR\x0fmemberThreshold\x12\
- !\n\x0cmember_count\x18\x02\x20\x02(\rR\x0bmemberCount\"b\n\x0eEntropyRe\
- quest\x12-\n\x12entropy_commitment\x18\x01\x20\x01(\x0cR\x11entropyCommi\
- tment\x12!\n\x0cprev_entropy\x18\x02\x20\x01(\x0cR\x0bprevEntropy\"&\n\n\
- EntropyAck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\x13\n\
- \x11EntropyCheckReady\"5\n\x14EntropyCheckContinue\x12\x1d\n\x06finish\
- \x18\x01\x20\x01(\x08:\x05falseR\x06finish\"\x8d\x04\n\x0eRecoveryDevice\
- \x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCount\x123\n\x15passphra\
- se_protection\x18\x02\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epi\
- n_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\
- \x0fenforceWordlist\x12j\n\x0cinput_method\x18\x08\x20\x01(\x0e2G.hw.tre\
- zor.messages.management.RecoveryDevice.RecoveryDeviceInputMethodR\x0binp\
- utMethod\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\rR\nu2fCounter\x12O\n\
- \x04type\x18\n\x20\x01(\x0e2+.hw.trezor.messages.management.RecoveryType\
- :\x0eNormalRecoveryR\x04type\";\n\x19RecoveryDeviceInputMethod\x12\x12\n\
- \x0eScrambledWords\x10\0\x12\n\n\x06Matrix\x10\x01J\x04\x08\x07\x10\x08\
- \"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\x01\x20\x02(\x0e2:.hw.tre\
- zor.messages.management.WordRequest.WordRequestTypeR\x04type\"f\n\x0fWor\
- dRequestType\x12\x19\n\x15WordRequestType_Plain\x10\0\x12\x1b\n\x17WordR\
- equestType_Matrix9\x10\x01\x12\x1b\n\x17WordRequestType_Matrix6\x10\x02\
- \"\x1d\n\x07WordAck\x12\x12\n\x04word\x18\x01\x20\x02(\tR\x04word\"0\n\r\
- SetU2FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\
- \x13\n\x11GetNextU2FCounter\"1\n\x0eNextU2FCounter\x12\x1f\n\x0bu2f_coun\
- ter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\n\x0fDoPreauthorized\"\x16\n\
- \x14PreauthorizedRequest\"\x15\n\x13CancelAuthorization\"\x9a\x02\n\x12R\
- ebootToBootloader\x12o\n\x0cboot_command\x18\x01\x20\x01(\x0e2=.hw.trezo\
- r.messages.management.RebootToBootloader.BootCommand:\rSTOP_AND_WAITR\
- \x0bbootCommand\x12'\n\x0ffirmware_header\x18\x02\x20\x01(\x0cR\x0efirmw\
- areHeader\x123\n\x14language_data_length\x18\x03\x20\x01(\r:\x010R\x12la\
- nguageDataLength\"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\x02(\x0cR\x03mac\"\
- \x14\n\x12ShowDeviceTutorial\"\x12\n\x10UnlockBootloader\"%\n\rSetBright\
- ness\x12\x14\n\x05value\x18\x01\x20\x01(\rR\x05value*\x99\x01\n\nBackupT\
- ype\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0cSlip39_Basic\x10\x01\x12\x13\n\
- \x0fSlip39_Advanced\x10\x02\x12\x1c\n\x18Slip39_Single_Extendable\x10\
- \x03\x12\x1b\n\x17Slip39_Basic_Extendable\x10\x04\x12\x1e\n\x1aSlip39_Ad\
- vanced_Extendable\x10\x05*G\n\x10SafetyCheckLevel\x12\n\n\x06Strict\x10\
- \0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\x11PromptTemporarily\x10\
- \x02*=\n\x0fDisplayRotation\x12\t\n\x05North\x10\0\x12\x08\n\x04East\x10\
- Z\x12\n\n\x05South\x10\xb4\x01\x12\t\n\x04West\x10\x8e\x02*0\n\x10Homesc\
- reenFormat\x12\x08\n\x04Toif\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\
- \x04ToiG\x10\x03*H\n\x0cRecoveryType\x12\x12\n\x0eNormalRecovery\x10\0\
- \x12\n\n\x06DryRun\x10\x01\x12\x18\n\x14UnlockRepeatedBackup\x10\x02BB\n\
- #com.satoshilabs.trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\
- \x1d\x01\
+ \x0e\x20\x01(\rR\x10homescreenLength\x12:\n\x1aauto_lock_delay_battery_m\
+ s\x18\x0f\x20\x01(\rR\x16autoLockDelayBatteryMs\"T\n\x0eChangeLanguage\
+ \x12\x1f\n\x0bdata_length\x18\x01\x20\x02(\rR\ndataLength\x12!\n\x0cshow\
+ _display\x18\x02\x20\x01(\x08R\x0bshowDisplay\"T\n\x10DataChunkRequest\
+ \x12\x1f\n\x0bdata_length\x18\x01\x20\x02(\rR\ndataLength\x12\x1f\n\x0bd\
+ ata_offset\x18\x02\x20\x02(\rR\ndataOffset\"-\n\x0cDataChunkAck\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\toperation\x18\x01\x20\x02(\x0e2?.hw.trezor.messages.management.\
+ SdProtect.SdProtectOperationTypeR\toperation\">\n\x16SdProtectOperationT\
+ ype\x12\x0b\n\x07DISABLE\x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07RE\
+ FRESH\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\x10buttonP\
+ rotection\"\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\x04has\
+ h\x18\x01\x20\x02(\x0cR\x04hash\"2\n\x12AuthenticateDevice\x12\x1c\n\tch\
+ allenge\x18\x01\x20\x02(\x0cR\tchallenge\"U\n\x11AuthenticityProof\x12\"\
+ \n\x0ccertificates\x18\x01\x20\x03(\x0cR\x0ccertificates\x12\x1c\n\tsign\
+ ature\x18\x02\x20\x02(\x0cR\tsignature\"\x0c\n\nWipeDevice\"\xad\x02\n\n\
+ LoadDevice\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\x05label\x12#\n\rskip_checksum\x18\x07\x20\x01(\x08R\x0cskipChecksu\
+ m\x12\x1f\n\x0bu2f_counter\x18\x08\x20\x01(\rR\nu2fCounter\x12!\n\x0cnee\
+ ds_backup\x18\t\x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\tno_backup\x18\n\
+ \x20\x01(\x08R\x08noBackup\"\x9d\x03\n\x0bResetDevice\x12\x1f\n\x08stren\
+ gth\x18\x02\x20\x01(\r:\x03256R\x08strength\x123\n\x15passphrase_protect\
+ ion\x18\x03\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_protecti\
+ on\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\x05label\x12\x1f\n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCounter\
+ \x12\x1f\n\x0bskip_backup\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\tn\
+ o_backup\x18\t\x20\x01(\x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\x20\
+ \x01(\x0e2).hw.trezor.messages.management.BackupType:\x05Bip39R\nbackupT\
+ ype\x12#\n\rentropy_check\x18\x0b\x20\x01(\x08R\x0centropyCheckJ\x04\x08\
+ \x01\x10\x02\"\xe5\x01\n\x0cBackupDevice\x12'\n\x0fgroup_threshold\x18\
+ \x01\x20\x01(\rR\x0egroupThreshold\x12O\n\x06groups\x18\x02\x20\x03(\x0b\
+ 27.hw.trezor.messages.management.BackupDevice.Slip39GroupR\x06groups\x1a\
+ [\n\x0bSlip39Group\x12)\n\x10member_threshold\x18\x01\x20\x02(\rR\x0fmem\
+ berThreshold\x12!\n\x0cmember_count\x18\x02\x20\x02(\rR\x0bmemberCount\"\
+ b\n\x0eEntropyRequest\x12-\n\x12entropy_commitment\x18\x01\x20\x01(\x0cR\
+ \x11entropyCommitment\x12!\n\x0cprev_entropy\x18\x02\x20\x01(\x0cR\x0bpr\
+ evEntropy\"&\n\nEntropyAck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\
+ \x07entropy\"\x13\n\x11EntropyCheckReady\"5\n\x14EntropyCheckContinue\
+ \x12\x1d\n\x06finish\x18\x01\x20\x01(\x08:\x05falseR\x06finish\"\x8d\x04\
+ \n\x0eRecoveryDevice\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCoun\
+ t\x123\n\x15passphrase_protection\x18\x02\x20\x01(\x08R\x14passphrasePro\
+ tection\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\x0fenforceWordlist\x12j\n\x0cinput_method\x18\x08\
+ \x20\x01(\x0e2G.hw.trezor.messages.management.RecoveryDevice.RecoveryDev\
+ iceInputMethodR\x0binputMethod\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\r\
+ R\nu2fCounter\x12O\n\x04type\x18\n\x20\x01(\x0e2+.hw.trezor.messages.man\
+ agement.RecoveryType:\x0eNormalRecoveryR\x04type\";\n\x19RecoveryDeviceI\
+ nputMethod\x12\x12\n\x0eScrambledWords\x10\0\x12\n\n\x06Matrix\x10\x01J\
+ \x04\x08\x07\x10\x08\"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\x01\
+ \x20\x02(\x0e2:.hw.trezor.messages.management.WordRequest.WordRequestTyp\
+ eR\x04type\"f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plain\
+ \x10\0\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordReq\
+ uestType_Matrix6\x10\x02\"\x1d\n\x07WordAck\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\x11GetNextU2FCounter\"1\n\x0eNextU2\
+ FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\
+ \n\x0fDoPreauthorized\"\x16\n\x14PreauthorizedRequest\"\x15\n\x13CancelA\
+ uthorization\"\x9a\x02\n\x12RebootToBootloader\x12o\n\x0cboot_command\
+ \x18\x01\x20\x01(\x0e2=.hw.trezor.messages.management.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\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\x02(\x0cR\x03mac\"\x14\n\x12ShowDeviceTutorial\"\x12\n\x10U\
+ nlockBootloader\"%\n\rSetBrightness\x12\x14\n\x05value\x18\x01\x20\x01(\
+ \rR\x05value*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0c\
+ Slip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02\x12\x1c\n\x18S\
+ lip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip39_Basic_Extendable\x10\
+ \x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\x05*G\n\x10SafetyCheckL\
+ evel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\
+ \x11PromptTemporarily\x10\x02*=\n\x0fDisplayRotation\x12\t\n\x05North\
+ \x10\0\x12\x08\n\x04East\x10Z\x12\n\n\x05South\x10\xb4\x01\x12\t\n\x04We\
+ st\x10\x8e\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toif\x10\x01\x12\x08\
+ \n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03*H\n\x0cRecoveryType\x12\x12\
+ \n\x0eNormalRecovery\x10\0\x12\n\n\x06DryRun\x10\x01\x12\x18\n\x14Unlock\
+ RepeatedBackup\x10\x02BB\n#com.satoshilabs.trezor.lib.protobufB\x17Trezo\
+ rMessageManagement\x80\xa6\x1d\x01\
";
/// `FileDescriptorProto` object which was a source for this generated file
Why this scored 19/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.