feat(common): allow streaming authenticity proofs
What changed, and why it matters
This commit only changes the protocol definitions (the 'language' the Trezor device and apps use to talk to each other). It adds a new optional streaming mode for requesting device-authenticity proofs, so large proofs can be sent in smaller chunks instead of one big message. There is no actual device firmware logic shown here—only generated message bindings—so it is not a security fix or vulnerability by itself. It is a feature addition that could, in theory, introduce new attack surface once the corresponding firmware code is implemented, but that code is not present in this commit.
Treat this as a feature commit, not a security patch. When the corresponding firmware implementation lands, review it for bounds checking on offset/size, validation of proof_type/index, and ensuring the streaming workflow cannot be abused to leak arbitrary memory or bypass authenticity verification.
Security signals we found
New wire protocol messages for device authenticity proof streaming
Optional streaming flag added to AuthenticateDevice
Legacy firmware skips new GetAuthenticityProofChunk message, indicating not all targets support it
No implementation logic present in the diff—only generated bindings and proto definitions
Evidence from the diff
The diff updates protobuf definitions and their generated bindings across Python, Rust, and Core to support streaming of AuthenticityProof data. New messages are added: AuthenticityProofSizes, GetAuthenticityProofChunk, and AuthenticityProofChunk; AuthenticateDevice gains an optional ‘stream’ bool; a new AuthenticityProofType enum (OPTIGA/TROPIC/MCU) is introduced. Legacy firmware build files explicitly skip the new GetAuthenticityProofChunk message. No firmware implementation of the new workflow is included, so this commit is purely interface/schema plumbing.
Changed components
common/protob/messages-management.protocommon/protob/messages.protocore/src/trezor/messages.pycore/src/trezor/enums/AuthenticityProofType.pypython/src/trezorlib/messages.pyrust/trezor-client/src/protos/generated/messages_management.rsrust/trezor-client/src/protos/generated/messages.rslegacy/firmware/protob/MakefileInspect captured patch +1385 / −328
diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto
index 3aaf9074..4a01e256 100644
--- a/common/protob/messages-management.proto
+++ b/common/protob/messages-management.proto
@@ -393,10 +393,13 @@ message FirmwareHash {
* Request: Request a signature of the provided challenge.
* @start
* @next AuthenticityProof
+ * @next AuthenticityProofSizes
* @next Failure
*/
message AuthenticateDevice {
required bytes challenge = 1; // A random challenge to sign.
+ optional bool stream = 2; // If set, the certificates and signatures data is sent using a stream of
+ // AuthenticityProofChunk responses (to avoid sending one large response).
}
/**
@@ -419,6 +422,45 @@ message AuthenticityProof {
// challenge that should be verified using the MCU device certificate.
}
+/**
+ * Response: Sizes of the corresponding proof parts (see above).
+ * @next GetAuthenticityProofChunk
+ */
+message AuthenticityProofSizes {
+ repeated uint32 optiga_certificates = 1;
+ required uint32 optiga_signature = 2;
+ repeated uint32 tropic_certificates = 3;
+ optional uint32 tropic_signature = 4;
+ repeated uint32 mcu_certificates = 5;
+ optional uint32 mcu_signature = 6;
+}
+
+/**
+ * Request: Request authenticity proof data chunk, or finish the workflow if `proof_type` is not set.
+ * @next AuthenticityProofChunk
+ * @next Success
+ */
+message GetAuthenticityProofChunk {
+ optional AuthenticityProofType proof_type = 1; // Specifies proof part to fetch.
+ optional uint32 index = 2; // If set, certificates[index] is fetched. Otherwise, signature is fetched.
+ required uint32 offset = 3; // Data chunk offset (in bytes).
+ required uint32 size = 4; // Data chunk size (in bytes).
+
+ enum AuthenticityProofType {
+ OPTIGA = 0;
+ TROPIC = 1;
+ MCU = 2;
+ }
+}
+
+/**
+ * Response: Return requested authenticity proof data chunk.
+ * @next GetAuthenticityProofChunk
+ */
+message AuthenticityProofChunk {
+ required bytes chunk = 1;
+}
+
/**
* Request: Request device to wipe all sensitive data and settings
* @start
diff --git a/common/protob/messages.proto b/common/protob/messages.proto
index 7674fad0..f8083336 100644
--- a/common/protob/messages.proto
+++ b/common/protob/messages.proto
@@ -72,12 +72,15 @@ enum MessageType {
MessageType_UnlockBootloader = 96 [(bitcoin_only) = true, (wire_in) = true];
MessageType_AuthenticateDevice = 97 [(bitcoin_only) = true, (wire_in) = true];
MessageType_AuthenticityProof = 98 [(bitcoin_only) = true, (wire_out) = true];
+ MessageType_AuthenticityProofSizes = 99 [(bitcoin_only) = true, (wire_out) = true];
MessageType_ChangeLanguage = 990 [(bitcoin_only) = true, (wire_in) = true];
MessageType_DataChunkRequest = 991 [(bitcoin_only) = true, (wire_out) = true];
MessageType_DataChunkAck = 992 [(bitcoin_only) = true, (wire_in) = true];
MessageType_SetBrightness = 993 [(bitcoin_only) = true, (wire_in) = true];
MessageType_GetSerialNumber = 996 [(bitcoin_only) = true, (wire_in) = true];
MessageType_SerialNumber = 997 [(bitcoin_only) = true, (wire_out) = true];
+ MessageType_GetAuthenticityProofChunk = 998 [(bitcoin_only) = true, (wire_in) = true];
+ MessageType_AuthenticityProofChunk = 999 [(bitcoin_only) = true, (wire_out) = true];
MessageType_SetU2FCounter = 63 [(wire_in) = true];
MessageType_GetNextU2FCounter = 80 [(wire_in) = true];
diff --git a/core/embed/upymod/qstrdefsport.h b/core/embed/upymod/qstrdefsport.h
index 5d6f1c9f..6116d1ba 100644
--- a/core/embed/upymod/qstrdefsport.h
+++ b/core/embed/upymod/qstrdefsport.h
@@ -22,6 +22,7 @@
// uncollectable garbage in the GC arena.
Q(AmountUnit)
+Q(AuthenticityProofType)
Q(BackupAvailability)
Q(BackupMethod)
Q(BackupType)
@@ -338,6 +339,7 @@ Q(trezor.crypto.scripts)
Q(trezor.crypto.slip39)
Q(trezor.enums)
Q(trezor.enums.AmountUnit)
+Q(trezor.enums.AuthenticityProofType)
Q(trezor.enums.BackupAvailability)
Q(trezor.enums.BackupMethod)
Q(trezor.enums.BackupType)
diff --git a/core/src/trezor/enums/AuthenticityProofType.py b/core/src/trezor/enums/AuthenticityProofType.py
new file mode 100644
index 00000000..04a1e144
--- /dev/null
+++ b/core/src/trezor/enums/AuthenticityProofType.py
@@ -0,0 +1,7 @@
+# Automatically generated by pb2py
+# fmt: off
+# isort:skip_file
+
+OPTIGA = 0
+TROPIC = 1
+MCU = 2
diff --git a/core/src/trezor/enums/MessageType.py b/core/src/trezor/enums/MessageType.py
index ba76d7d4..2e5ced09 100644
--- a/core/src/trezor/enums/MessageType.py
+++ b/core/src/trezor/enums/MessageType.py
@@ -53,12 +53,15 @@ ShowDeviceTutorial = 95
UnlockBootloader = 96
AuthenticateDevice = 97
AuthenticityProof = 98
+AuthenticityProofSizes = 99
ChangeLanguage = 990
DataChunkRequest = 991
DataChunkAck = 992
SetBrightness = 993
GetSerialNumber = 996
SerialNumber = 997
+GetAuthenticityProofChunk = 998
+AuthenticityProofChunk = 999
FirmwareErase = 6
FirmwareUpload = 7
FirmwareRequest = 8
diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py
index 9f17b029..97bf4cbe 100644
--- a/core/src/trezor/enums/__init__.py
+++ b/core/src/trezor/enums/__init__.py
@@ -247,6 +247,11 @@ if TYPE_CHECKING:
ENABLE = 1
REFRESH = 2
+ class AuthenticityProofType(IntEnum):
+ OPTIGA = 0
+ TROPIC = 1
+ MCU = 2
+
class RecoveryDeviceInputMethod(IntEnum):
ScrambledWords = 0
Matrix = 1
@@ -473,12 +478,15 @@ if TYPE_CHECKING:
UnlockBootloader = 96
AuthenticateDevice = 97
AuthenticityProof = 98
+ AuthenticityProofSizes = 99
ChangeLanguage = 990
DataChunkRequest = 991
DataChunkAck = 992
SetBrightness = 993
GetSerialNumber = 996
SerialNumber = 997
+ GetAuthenticityProofChunk = 998
+ AuthenticityProofChunk = 999
SetU2FCounter = 63
GetNextU2FCounter = 80
NextU2FCounter = 81
diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py
index 3109530d..0871e11d 100644
--- a/core/src/trezor/messages.py
+++ b/core/src/trezor/messages.py
@@ -18,6 +18,7 @@ if TYPE_CHECKING:
from buffer_types import AnyBytes
from typing import TypeGuard
from trezor.enums import AmountUnit # noqa: F401
+ from trezor.enums import AuthenticityProofType # noqa: F401
from trezor.enums import BackupAvailability # noqa: F401
from trezor.enums import BackupMethod # noqa: F401
from trezor.enums import BackupType # noqa: F401
@@ -2415,11 +2416,13 @@ if TYPE_CHECKING:
class AuthenticateDevice(protobuf.MessageType):
challenge: "AnyBytes"
+ stream: "bool | None"
def __init__(
self,
*,
challenge: "AnyBytes",
+ stream: "bool | None" = None,
) -> None:
pass
@@ -2451,6 +2454,64 @@ if TYPE_CHECKING:
def is_type_of(cls, msg: Any) -> TypeGuard["AuthenticityProof"]:
return isinstance(msg, cls)
+ class AuthenticityProofSizes(protobuf.MessageType):
+ optiga_certificates: "list[int]"
+ optiga_signature: "int"
+ tropic_certificates: "list[int]"
+ tropic_signature: "int | None"
+ mcu_certificates: "list[int]"
+ mcu_signature: "int | None"
+
+ def __init__(
+ self,
+ *,
+ optiga_signature: "int",
+ optiga_certificates: "list[int] | None" = None,
+ tropic_certificates: "list[int] | None" = None,
+ mcu_certificates: "list[int] | None" = None,
+ tropic_signature: "int | None" = None,
+ mcu_signature: "int | None" = None,
+ ) -> None:
+ pass
+
+ @classmethod
+ def is_type_of(cls, msg: Any) -> TypeGuard["AuthenticityProofSizes"]:
+ return isinstance(msg, cls)
+
+ class GetAuthenticityProofChunk(protobuf.MessageType):
+ proof_type: "AuthenticityProofType | None"
+ index: "int | None"
+ offset: "int"
+ size: "int"
+
+ def __init__(
+ self,
+ *,
+ offset: "int",
+ size: "int",
+ proof_type: "AuthenticityProofType | None" = None,
+ index: "int | None" = None,
+ ) -> None:
+ pass
+
+ @classmethod
+ def is_type_of(cls, msg: Any) -> TypeGuard["GetAuthenticityProofChunk"]:
+ return isinstance(msg, cls)
+
+ class AuthenticityProofChunk(protobuf.MessageType):
+ chunk: "AnyBytes"
+
+ def __init__(
+ self,
+ *,
+ chunk: "AnyBytes",
+ ) -> None:
+ pass
+
+ @classmethod
+ def is_type_of(cls, msg: Any) -> TypeGuard["AuthenticityProofChunk"]:
+ return isinstance(msg, cls)
+
class WipeDevice(protobuf.MessageType):
@classmethod
diff --git a/legacy/firmware/protob/Makefile b/legacy/firmware/protob/Makefile
index 4e208014..bd1dcc22 100644
--- a/legacy/firmware/protob/Makefile
+++ b/legacy/firmware/protob/Makefile
@@ -13,7 +13,7 @@ SKIPPED_MESSAGES := Cardano DebugMonero Eos Monero Ontology Ripple SdProtect Tez
EthereumDefinitionRequest EthereumDefinitionAck \
EthereumSignTypedData EthereumTypedDataStructRequest EthereumTypedDataStructAck \
EthereumTypedDataValueRequest EthereumTypedDataValueAck ShowDeviceTutorial \
- UnlockBootloader AuthenticateDevice AuthenticityProof \
+ UnlockBootloader AuthenticateDevice AuthenticityProof GetAuthenticityProofChunk \
Solana StellarClaimClaimableBalanceOp SetBrightness \
ChangeLanguage DataChunkRequest DataChunkAck Thp \
BenchmarkListNames BenchmarkRun BenchmarkNames BenchmarkResult \
diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py
index 9e4efb09..176cb4e2 100644
--- a/python/src/trezorlib/messages.py
+++ b/python/src/trezorlib/messages.py
@@ -279,6 +279,12 @@ class SdProtectOperationType(IntEnum):
REFRESH = 2
+class AuthenticityProofType(IntEnum):
+ OPTIGA = 0
+ TROPIC = 1
+ MCU = 2
+
+
class RecoveryDeviceInputMethod(IntEnum):
ScrambledWords = 0
Matrix = 1
@@ -532,12 +538,15 @@ class MessageType(IntEnum):
UnlockBootloader = 96
AuthenticateDevice = 97
AuthenticityProof = 98
+ AuthenticityProofSizes = 99
ChangeLanguage = 990
DataChunkRequest = 991
DataChunkAck = 992
SetBrightness = 993
GetSerialNumber = 996
SerialNumber = 997
+ GetAuthenticityProofChunk = 998
+ AuthenticityProofChunk = 999
SetU2FCounter = 63
GetNextU2FCounter = 80
NextU2FCounter = 81
@@ -3726,14 +3735,17 @@ class AuthenticateDevice(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 97
FIELDS = {
1: protobuf.Field("challenge", "bytes", repeated=False, required=True),
+ 2: protobuf.Field("stream", "bool", repeated=False, required=False, default=None),
}
def __init__(
self,
*,
challenge: "bytes",
+ stream: Optional["bool"] = None,
) -> None:
self.challenge = challenge
+ self.stream = stream
class AuthenticityProof(protobuf.MessageType):
@@ -3765,6 +3777,72 @@ class AuthenticityProof(protobuf.MessageType):
self.mcu_signature = mcu_signature
+class AuthenticityProofSizes(protobuf.MessageType):
+ MESSAGE_WIRE_TYPE = 99
+ FIELDS = {
+ 1: protobuf.Field("optiga_certificates", "uint32", repeated=True, required=False, default=None),
+ 2: protobuf.Field("optiga_signature", "uint32", repeated=False, required=True),
+ 3: protobuf.Field("tropic_certificates", "uint32", repeated=True, required=False, default=None),
+ 4: protobuf.Field("tropic_signature", "uint32", repeated=False, required=False, default=None),
+ 5: protobuf.Field("mcu_certificates", "uint32", repeated=True, required=False, default=None),
+ 6: protobuf.Field("mcu_signature", "uint32", repeated=False, required=False, default=None),
+ }
+
+ def __init__(
+ self,
+ *,
+ optiga_signature: "int",
+ optiga_certificates: Optional[Sequence["int"]] = None,
+ tropic_certificates: Optional[Sequence["int"]] = None,
+ mcu_certificates: Optional[Sequence["int"]] = None,
+ tropic_signature: Optional["int"] = None,
+ mcu_signature: Optional["int"] = None,
+ ) -> None:
+ self.optiga_certificates: Sequence["int"] = optiga_certificates if optiga_certificates is not None else []
+ self.tropic_certificates: Sequence["int"] = tropic_certificates if tropic_certificates is not None else []
+ self.mcu_certificates: Sequence["int"] = mcu_certificates if mcu_certificates is not None else []
+ self.optiga_signature = optiga_signature
+ self.tropic_signature = tropic_signature
+ self.mcu_signature = mcu_signature
+
+
+class GetAuthenticityProofChunk(protobuf.MessageType):
+ MESSAGE_WIRE_TYPE = 998
+ FIELDS = {
+ 1: protobuf.Field("proof_type", "AuthenticityProofType", repeated=False, required=False, default=None),
+ 2: protobuf.Field("index", "uint32", repeated=False, required=False, default=None),
+ 3: protobuf.Field("offset", "uint32", repeated=False, required=True),
+ 4: protobuf.Field("size", "uint32", repeated=False, required=True),
+ }
+
+ def __init__(
+ self,
+ *,
+ offset: "int",
+ size: "int",
+ proof_type: Optional["AuthenticityProofType"] = None,
+ index: Optional["int"] = None,
+ ) -> None:
+ self.offset = offset
+ self.size = size
+ self.proof_type = proof_type
+ self.index = index
+
+
+class AuthenticityProofChunk(protobuf.MessageType):
+ MESSAGE_WIRE_TYPE = 999
+ FIELDS = {
+ 1: protobuf.Field("chunk", "bytes", repeated=False, required=True),
+ }
+
+ def __init__(
+ self,
+ *,
+ chunk: "bytes",
+ ) -> None:
+ self.chunk = chunk
+
+
class WipeDevice(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 5
diff --git a/rust/trezor-client/src/messages/generated.rs b/rust/trezor-client/src/messages/generated.rs
index 2b1a03f8..c0f463d2 100644
--- a/rust/trezor-client/src/messages/generated.rs
+++ b/rust/trezor-client/src/messages/generated.rs
@@ -48,12 +48,15 @@ trezor_message_impl! {
UnlockBootloader => MessageType_UnlockBootloader,
AuthenticateDevice => MessageType_AuthenticateDevice,
AuthenticityProof => MessageType_AuthenticityProof,
+ AuthenticityProofSizes => MessageType_AuthenticityProofSizes,
ChangeLanguage => MessageType_ChangeLanguage,
DataChunkRequest => MessageType_DataChunkRequest,
DataChunkAck => MessageType_DataChunkAck,
SetBrightness => MessageType_SetBrightness,
GetSerialNumber => MessageType_GetSerialNumber,
SerialNumber => MessageType_SerialNumber,
+ GetAuthenticityProofChunk => MessageType_GetAuthenticityProofChunk,
+ AuthenticityProofChunk => MessageType_AuthenticityProofChunk,
SetU2FCounter => MessageType_SetU2FCounter,
GetNextU2FCounter => MessageType_GetNextU2FCounter,
NextU2FCounter => MessageType_NextU2FCounter,
diff --git a/rust/trezor-client/src/protos/generated/messages.rs b/rust/trezor-client/src/protos/generated/messages.rs
index 54287f05..5e0d3e3c 100644
--- a/rust/trezor-client/src/protos/generated/messages.rs
+++ b/rust/trezor-client/src/protos/generated/messages.rs
@@ -125,6 +125,8 @@ pub enum MessageType {
MessageType_AuthenticateDevice = 97,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_AuthenticityProof)
MessageType_AuthenticityProof = 98,
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_AuthenticityProofSizes)
+ MessageType_AuthenticityProofSizes = 99,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_ChangeLanguage)
MessageType_ChangeLanguage = 990,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_DataChunkRequest)
@@ -137,6 +139,10 @@ pub enum MessageType {
MessageType_GetSerialNumber = 996,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_SerialNumber)
MessageType_SerialNumber = 997,
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_GetAuthenticityProofChunk)
+ MessageType_GetAuthenticityProofChunk = 998,
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_AuthenticityProofChunk)
+ MessageType_AuthenticityProofChunk = 999,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_SetU2FCounter)
MessageType_SetU2FCounter = 63,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_GetNextU2FCounter)
@@ -659,12 +665,15 @@ impl ::protobuf::Enum for MessageType {
96 => ::std::option::Option::Some(MessageType::MessageType_UnlockBootloader),
97 => ::std::option::Option::Some(MessageType::MessageType_AuthenticateDevice),
98 => ::std::option::Option::Some(MessageType::MessageType_AuthenticityProof),
+ 99 => ::std::option::Option::Some(MessageType::MessageType_AuthenticityProofSizes),
990 => ::std::option::Option::Some(MessageType::MessageType_ChangeLanguage),
991 => ::std::option::Option::Some(MessageType::MessageType_DataChunkRequest),
992 => ::std::option::Option::Some(MessageType::MessageType_DataChunkAck),
993 => ::std::option::Option::Some(MessageType::MessageType_SetBrightness),
996 => ::std::option::Option::Some(MessageType::MessageType_GetSerialNumber),
997 => ::std::option::Option::Some(MessageType::MessageType_SerialNumber),
+ 998 => ::std::option::Option::Some(MessageType::MessageType_GetAuthenticityProofChunk),
+ 999 => ::std::option::Option::Some(MessageType::MessageType_AuthenticityProofChunk),
63 => ::std::option::Option::Some(MessageType::MessageType_SetU2FCounter),
80 => ::std::option::Option::Some(MessageType::MessageType_GetNextU2FCounter),
81 => ::std::option::Option::Some(MessageType::MessageType_NextU2FCounter),
@@ -951,12 +960,15 @@ impl ::protobuf::Enum for MessageType {
"MessageType_UnlockBootloader" => ::std::option::Option::Some(MessageType::MessageType_UnlockBootloader),
"MessageType_AuthenticateDevice" => ::std::option::Option::Some(MessageType::MessageType_AuthenticateDevice),
"MessageType_AuthenticityProof" => ::std::option::Option::Some(MessageType::MessageType_AuthenticityProof),
+ "MessageType_AuthenticityProofSizes" => ::std::option::Option::Some(MessageType::MessageType_AuthenticityProofSizes),
"MessageType_ChangeLanguage" => ::std::option::Option::Some(MessageType::MessageType_ChangeLanguage),
"MessageType_DataChunkRequest" => ::std::option::Option::Some(MessageType::MessageType_DataChunkRequest),
"MessageType_DataChunkAck" => ::std::option::Option::Some(MessageType::MessageType_DataChunkAck),
"MessageType_SetBrightness" => ::std::option::Option::Some(MessageType::MessageType_SetBrightness),
"MessageType_GetSerialNumber" => ::std::option::Option::Some(MessageType::MessageType_GetSerialNumber),
"MessageType_SerialNumber" => ::std::option::Option::Some(MessageType::MessageType_SerialNumber),
+ "MessageType_GetAuthenticityProofChunk" => ::std::option::Option::Some(MessageType::MessageType_GetAuthenticityProofChunk),
+ "MessageType_AuthenticityProofChunk" => ::std::option::Option::Some(MessageType::MessageType_AuthenticityProofChunk),
"MessageType_SetU2FCounter" => ::std::option::Option::Some(MessageType::MessageType_SetU2FCounter),
"MessageType_GetNextU2FCounter" => ::std::option::Option::Some(MessageType::MessageType_GetNextU2FCounter),
"MessageType_NextU2FCounter" => ::std::option::Option::Some(MessageType::MessageType_NextU2FCounter),
@@ -1242,12 +1254,15 @@ impl ::protobuf::Enum for MessageType {
MessageType::MessageType_UnlockBootloader,
MessageType::MessageType_AuthenticateDevice,
MessageType::MessageType_AuthenticityProof,
+ MessageType::MessageType_AuthenticityProofSizes,
MessageType::MessageType_ChangeLanguage,
MessageType::MessageType_DataChunkRequest,
MessageType::MessageType_DataChunkAck,
MessageType::MessageType_SetBrightness,
MessageType::MessageType_GetSerialNumber,
MessageType::MessageType_SerialNumber,
+ MessageType::MessageType_GetAuthenticityProofChunk,
+ MessageType::MessageType_AuthenticityProofChunk,
MessageType::MessageType_SetU2FCounter,
MessageType::MessageType_GetNextU2FCounter,
MessageType::MessageType_NextU2FCounter,
@@ -1539,243 +1554,246 @@ impl ::protobuf::EnumFull for MessageType {
MessageType::MessageType_UnlockBootloader => 46,
MessageType::MessageType_AuthenticateDevice => 47,
MessageType::MessageType_AuthenticityProof => 48,
- MessageType::MessageType_ChangeLanguage => 49,
- MessageType::MessageType_DataChunkRequest => 50,
- MessageType::MessageType_DataChunkAck => 51,
- MessageType::MessageType_SetBrightness => 52,
- MessageType::MessageType_GetSerialNumber => 53,
- MessageType::MessageType_SerialNumber => 54,
- MessageType::MessageType_SetU2FCounter => 55,
- MessageType::MessageType_GetNextU2FCounter => 56,
- MessageType::MessageType_NextU2FCounter => 57,
- MessageType::MessageType_Deprecated_PassphraseStateRequest => 58,
- MessageType::MessageType_Deprecated_PassphraseStateAck => 59,
- MessageType::MessageType_FirmwareErase => 60,
- MessageType::MessageType_FirmwareUpload => 61,
- MessageType::MessageType_FirmwareRequest => 62,
- MessageType::MessageType_ProdTestT1 => 63,
- MessageType::MessageType_BleUnpair => 64,
- MessageType::MessageType_GetPublicKey => 65,
- MessageType::MessageType_PublicKey => 66,
- MessageType::MessageType_SignTx => 67,
- MessageType::MessageType_TxRequest => 68,
- MessageType::MessageType_TxAck => 69,
- MessageType::MessageType_GetAddress => 70,
- MessageType::MessageType_Address => 71,
- MessageType::MessageType_SignMessage => 72,
- MessageType::MessageType_VerifyMessage => 73,
- MessageType::MessageType_MessageSignature => 74,
- MessageType::MessageType_GetOwnershipId => 75,
- MessageType::MessageType_OwnershipId => 76,
- MessageType::MessageType_GetOwnershipProof => 77,
- MessageType::MessageType_OwnershipProof => 78,
- MessageType::MessageType_AuthorizeCoinJoin => 79,
- MessageType::MessageType_CipherKeyValue => 80,
- MessageType::MessageType_CipheredKeyValue => 81,
- MessageType::MessageType_SignIdentity => 82,
- MessageType::MessageType_SignedIdentity => 83,
- MessageType::MessageType_GetECDHSessionKey => 84,
- MessageType::MessageType_ECDHSessionKey => 85,
- MessageType::MessageType_PaymentNotification => 86,
- MessageType::MessageType_DebugLinkDecision => 87,
- MessageType::MessageType_DebugLinkGetState => 88,
- MessageType::MessageType_DebugLinkState => 89,
- MessageType::MessageType_DebugLinkStop => 90,
- MessageType::MessageType_DebugLinkLog => 91,
- MessageType::MessageType_DebugLinkMemoryRead => 92,
- MessageType::MessageType_DebugLinkMemory => 93,
- MessageType::MessageType_DebugLinkMemoryWrite => 94,
- MessageType::MessageType_DebugLinkFlashErase => 95,
- MessageType::MessageType_DebugLinkLayout => 96,
- MessageType::MessageType_DebugLinkReseedRandom => 97,
- MessageType::MessageType_DebugLinkRecordScreen => 98,
- MessageType::MessageType_DebugLinkEraseSdCard => 99,
- MessageType::MessageType_DebugLinkWatchLayout => 100,
- MessageType::MessageType_DebugLinkResetDebugEvents => 101,
- MessageType::MessageType_DebugLinkOptigaSetSecMax => 102,
- MessageType::MessageType_DebugLinkGetGcInfo => 103,
- MessageType::MessageType_DebugLinkGcInfo => 104,
- MessageType::MessageType_DebugLinkGetPairingInfo => 105,
- MessageType::MessageType_DebugLinkPairingInfo => 106,
- MessageType::MessageType_DebugLinkSetLogFilter => 107,
- MessageType::MessageType_DebugLinkN4W1Connected => 108,
- MessageType::MessageType_DebugLinkN4W1Write => 109,
- MessageType::MessageType_DebugLinkN4W1Read => 110,
- MessageType::MessageType_DebugLinkN4W1Response => 111,
- MessageType::MessageType_DebugLinkSetBatteryState => 112,
- MessageType::MessageType_EthereumGetPublicKey => 113,
- MessageType::MessageType_EthereumPublicKey => 114,
- MessageType::MessageType_EthereumGetAddress => 115,
- MessageType::MessageType_EthereumAddress => 116,
- MessageType::MessageType_EthereumSignTx => 117,
- MessageType::MessageType_EthereumSignTxEIP1559 => 118,
- MessageType::MessageType_EthereumTxRequest => 119,
- MessageType::MessageType_EthereumTxAck => 120,
- MessageType::MessageType_EthereumSignMessage => 121,
- MessageType::MessageType_EthereumVerifyMessage => 122,
- MessageType::MessageType_EthereumMessageSignature => 123,
- MessageType::MessageType_EthereumSignTypedData => 124,
- MessageType::MessageType_EthereumTypedDataStructRequest => 125,
- MessageType::MessageType_EthereumTypedDataStructAck => 126,
- MessageType::MessageType_EthereumTypedDataValueRequest => 127,
- MessageType::MessageType_EthereumTypedDataValueAck => 128,
- MessageType::MessageType_EthereumTypedDataSignature => 129,
- MessageType::MessageType_EthereumSignTypedHash => 130,
- MessageType::MessageType_EthereumDefinitionRequest => 131,
- MessageType::MessageType_EthereumDefinitionAck => 132,
- MessageType::MessageType_NEMGetAddress => 133,
- MessageType::MessageType_NEMAddress => 134,
- MessageType::MessageType_NEMSignTx => 135,
- MessageType::MessageType_NEMSignedTx => 136,
- MessageType::MessageType_NEMDecryptMessage => 137,
- MessageType::MessageType_NEMDecryptedMessage => 138,
- MessageType::MessageType_TezosGetAddress => 139,
- MessageType::MessageType_TezosAddress => 140,
- MessageType::MessageType_TezosSignTx => 141,
- MessageType::MessageType_TezosSignedTx => 142,
- MessageType::MessageType_TezosGetPublicKey => 143,
- MessageType::MessageType_TezosPublicKey => 144,
- MessageType::MessageType_StellarSignTx => 145,
- MessageType::MessageType_StellarTxOpRequest => 146,
- MessageType::MessageType_StellarGetAddress => 147,
- MessageType::MessageType_StellarAddress => 148,
- MessageType::MessageType_StellarCreateAccountOp => 149,
- MessageType::MessageType_StellarPaymentOp => 150,
- MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 151,
- MessageType::MessageType_StellarManageSellOfferOp => 152,
- MessageType::MessageType_StellarCreatePassiveSellOfferOp => 153,
- MessageType::MessageType_StellarSetOptionsOp => 154,
- MessageType::MessageType_StellarChangeTrustOp => 155,
- MessageType::MessageType_StellarAllowTrustOp => 156,
- MessageType::MessageType_StellarAccountMergeOp => 157,
- MessageType::MessageType_StellarManageDataOp => 158,
- MessageType::MessageType_StellarBumpSequenceOp => 159,
- MessageType::MessageType_StellarManageBuyOfferOp => 160,
- MessageType::MessageType_StellarPathPaymentStrictSendOp => 161,
- MessageType::MessageType_StellarClaimClaimableBalanceOp => 162,
- MessageType::MessageType_StellarSignedTx => 163,
- MessageType::MessageType_CardanoGetPublicKey => 164,
- MessageType::MessageType_CardanoPublicKey => 165,
- MessageType::MessageType_CardanoGetAddress => 166,
- MessageType::MessageType_CardanoAddress => 167,
- MessageType::MessageType_CardanoTxItemAck => 168,
- MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 169,
- MessageType::MessageType_CardanoTxWitnessRequest => 170,
- MessageType::MessageType_CardanoTxWitnessResponse => 171,
- MessageType::MessageType_CardanoTxHostAck => 172,
- MessageType::MessageType_CardanoTxBodyHash => 173,
- MessageType::MessageType_CardanoSignTxFinished => 174,
- MessageType::MessageType_CardanoSignTxInit => 175,
- MessageType::MessageType_CardanoTxInput => 176,
- MessageType::MessageType_CardanoTxOutput => 177,
- MessageType::MessageType_CardanoAssetGroup => 178,
- MessageType::MessageType_CardanoToken => 179,
- MessageType::MessageType_CardanoTxCertificate => 180,
- MessageType::MessageType_CardanoTxWithdrawal => 181,
- MessageType::MessageType_CardanoTxAuxiliaryData => 182,
- MessageType::MessageType_CardanoPoolOwner => 183,
- MessageType::MessageType_CardanoPoolRelayParameters => 184,
- MessageType::MessageType_CardanoGetNativeScriptHash => 185,
- MessageType::MessageType_CardanoNativeScriptHash => 186,
- MessageType::MessageType_CardanoTxMint => 187,
- MessageType::MessageType_CardanoTxCollateralInput => 188,
- MessageType::MessageType_CardanoTxRequiredSigner => 189,
- MessageType::MessageType_CardanoTxInlineDatumChunk => 190,
- MessageType::MessageType_CardanoTxReferenceScriptChunk => 191,
- MessageType::MessageType_CardanoTxReferenceInput => 192,
- MessageType::MessageType_CardanoSignMessageInit => 193,
- MessageType::MessageType_CardanoMessageDataRequest => 194,
- MessageType::MessageType_CardanoMessageDataResponse => 195,
- MessageType::MessageType_CardanoMessageSignature => 196,
- MessageType::MessageType_RippleGetAddress => 197,
- MessageType::MessageType_RippleAddress => 198,
- MessageType::MessageType_RippleSignTx => 199,
- MessageType::MessageType_RippleSignedTx => 200,
- MessageType::MessageType_MoneroTransactionInitRequest => 201,
- MessageType::MessageType_MoneroTransactionInitAck => 202,
- MessageType::MessageType_MoneroTransactionSetInputRequest => 203,
- MessageType::MessageType_MoneroTransactionSetInputAck => 204,
- MessageType::MessageType_MoneroTransactionInputViniRequest => 205,
- MessageType::MessageType_MoneroTransactionInputViniAck => 206,
- MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 207,
- MessageType::MessageType_MoneroTransactionAllInputsSetAck => 208,
- MessageType::MessageType_MoneroTransactionSetOutputRequest => 209,
- MessageType::MessageType_MoneroTransactionSetOutputAck => 210,
- MessageType::MessageType_MoneroTransactionAllOutSetRequest => 211,
- MessageType::MessageType_MoneroTransactionAllOutSetAck => 212,
- MessageType::MessageType_MoneroTransactionSignInputRequest => 213,
- MessageType::MessageType_MoneroTransactionSignInputAck => 214,
- MessageType::MessageType_MoneroTransactionFinalRequest => 215,
- MessageType::MessageType_MoneroTransactionFinalAck => 216,
- MessageType::MessageType_MoneroKeyImageExportInitRequest => 217,
- MessageType::MessageType_MoneroKeyImageExportInitAck => 218,
- MessageType::MessageType_MoneroKeyImageSyncStepRequest => 219,
- MessageType::MessageType_MoneroKeyImageSyncStepAck => 220,
- MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 221,
- MessageType::MessageType_MoneroKeyImageSyncFinalAck => 222,
- MessageType::MessageType_MoneroGetAddress => 223,
- MessageType::MessageType_MoneroAddress => 224,
- MessageType::MessageType_MoneroGetWatchKey => 225,
- MessageType::MessageType_MoneroWatchKey => 226,
- MessageType::MessageType_DebugMoneroDiagRequest => 227,
- MessageType::MessageType_DebugMoneroDiagAck => 228,
- MessageType::MessageType_MoneroGetTxKeyRequest => 229,
- MessageType::MessageType_MoneroGetTxKeyAck => 230,
- MessageType::MessageType_MoneroLiveRefreshStartRequest => 231,
- MessageType::MessageType_MoneroLiveRefreshStartAck => 232,
- MessageType::MessageType_MoneroLiveRefreshStepRequest => 233,
- MessageType::MessageType_MoneroLiveRefreshStepAck => 234,
- MessageType::MessageType_MoneroLiveRefreshFinalRequest => 235,
- MessageType::MessageType_MoneroLiveRefreshFinalAck => 236,
- MessageType::MessageType_EosGetPublicKey => 237,
- MessageType::MessageType_EosPublicKey => 238,
- MessageType::MessageType_EosSignTx => 239,
- MessageType::MessageType_EosTxActionRequest => 240,
- MessageType::MessageType_EosTxActionAck => 241,
- MessageType::MessageType_EosSignedTx => 242,
- MessageType::MessageType_WebAuthnListResidentCredentials => 243,
- MessageType::MessageType_WebAuthnCredentials => 244,
- MessageType::MessageType_WebAuthnAddResidentCredential => 245,
- MessageType::MessageType_WebAuthnRemoveResidentCredential => 246,
- MessageType::MessageType_WebAuthnCredentialsAck => 247,
- MessageType::MessageType_SolanaGetPublicKey => 248,
- MessageType::MessageType_SolanaPublicKey => 249,
- MessageType::MessageType_SolanaGetAddress => 250,
- MessageType::MessageType_SolanaAddress => 251,
- MessageType::MessageType_SolanaSignTx => 252,
- MessageType::MessageType_SolanaTxSignature => 253,
- MessageType::MessageType_ThpCreateNewSession => 254,
- MessageType::MessageType_ThpCredentialRequest => 255,
- MessageType::MessageType_ThpCredentialResponse => 256,
- MessageType::MessageType_NostrGetPubkey => 257,
- MessageType::MessageType_NostrPubkey => 258,
- MessageType::MessageType_NostrSignEvent => 259,
- MessageType::MessageType_NostrEventSignature => 260,
- MessageType::MessageType_EvoluGetNode => 261,
- MessageType::MessageType_EvoluNode => 262,
- MessageType::MessageType_EvoluSignRegistrationRequest => 263,
- MessageType::MessageType_EvoluRegistrationRequest => 264,
- MessageType::MessageType_EvoluGetDelegatedIdentityKey => 265,
- MessageType::MessageType_EvoluDelegatedIdentityKey => 266,
- MessageType::MessageType_EvoluIndexManagement => 267,
- MessageType::MessageType_EvoluIndexManagementResponse => 268,
- MessageType::MessageType_TronGetAddress => 269,
- MessageType::MessageType_TronAddress => 270,
- MessageType::MessageType_TronSignTx => 271,
- MessageType::MessageType_TronSignature => 272,
- MessageType::MessageType_TronContractRequest => 273,
- MessageType::MessageType_TronTransferContract => 274,
- MessageType::MessageType_TronTriggerSmartContract => 275,
- MessageType::MessageType_TronFreezeBalanceV2Contract => 276,
- MessageType::MessageType_TronUnfreezeBalanceV2Contract => 277,
- MessageType::MessageType_TronWithdrawUnfreeze => 278,
- MessageType::MessageType_TronVoteWitnessContract => 279,
- MessageType::MessageType_BenchmarkListNames => 280,
- MessageType::MessageType_BenchmarkNames => 281,
- MessageType::MessageType_BenchmarkRun => 282,
- MessageType::MessageType_BenchmarkResult => 283,
- MessageType::MessageType_TelemetryGet => 284,
- MessageType::MessageType_Telemetry => 285,
+ MessageType::MessageType_AuthenticityProofSizes => 49,
+ MessageType::MessageType_ChangeLanguage => 50,
+ MessageType::MessageType_DataChunkRequest => 51,
+ MessageType::MessageType_DataChunkAck => 52,
+ MessageType::MessageType_SetBrightness => 53,
+ MessageType::MessageType_GetSerialNumber => 54,
+ MessageType::MessageType_SerialNumber => 55,
+ MessageType::MessageType_GetAuthenticityProofChunk => 56,
+ MessageType::MessageType_AuthenticityProofChunk => 57,
+ MessageType::MessageType_SetU2FCounter => 58,
+ MessageType::MessageType_GetNextU2FCounter => 59,
+ MessageType::MessageType_NextU2FCounter => 60,
+ MessageType::MessageType_Deprecated_PassphraseStateRequest => 61,
+ MessageType::MessageType_Deprecated_PassphraseStateAck => 62,
+ MessageType::MessageType_FirmwareErase => 63,
+ MessageType::MessageType_FirmwareUpload => 64,
+ MessageType::MessageType_FirmwareRequest => 65,
+ MessageType::MessageType_ProdTestT1 => 66,
+ MessageType::MessageType_BleUnpair => 67,
+ MessageType::MessageType_GetPublicKey => 68,
+ MessageType::MessageType_PublicKey => 69,
+ MessageType::MessageType_SignTx => 70,
+ MessageType::MessageType_TxRequest => 71,
+ MessageType::MessageType_TxAck => 72,
+ MessageType::MessageType_GetAddress => 73,
+ MessageType::MessageType_Address => 74,
+ MessageType::MessageType_SignMessage => 75,
+ MessageType::MessageType_VerifyMessage => 76,
+ MessageType::MessageType_MessageSignature => 77,
+ MessageType::MessageType_GetOwnershipId => 78,
+ MessageType::MessageType_OwnershipId => 79,
+ MessageType::MessageType_GetOwnershipProof => 80,
+ MessageType::MessageType_OwnershipProof => 81,
+ MessageType::MessageType_AuthorizeCoinJoin => 82,
+ MessageType::MessageType_CipherKeyValue => 83,
+ MessageType::MessageType_CipheredKeyValue => 84,
+ MessageType::MessageType_SignIdentity => 85,
+ MessageType::MessageType_SignedIdentity => 86,
+ MessageType::MessageType_GetECDHSessionKey => 87,
+ MessageType::MessageType_ECDHSessionKey => 88,
+ MessageType::MessageType_PaymentNotification => 89,
+ MessageType::MessageType_DebugLinkDecision => 90,
+ MessageType::MessageType_DebugLinkGetState => 91,
+ MessageType::MessageType_DebugLinkState => 92,
+ MessageType::MessageType_DebugLinkStop => 93,
+ MessageType::MessageType_DebugLinkLog => 94,
+ MessageType::MessageType_DebugLinkMemoryRead => 95,
+ MessageType::MessageType_DebugLinkMemory => 96,
+ MessageType::MessageType_DebugLinkMemoryWrite => 97,
+ MessageType::MessageType_DebugLinkFlashErase => 98,
+ MessageType::MessageType_DebugLinkLayout => 99,
+ MessageType::MessageType_DebugLinkReseedRandom => 100,
+ MessageType::MessageType_DebugLinkRecordScreen => 101,
+ MessageType::MessageType_DebugLinkEraseSdCard => 102,
+ MessageType::MessageType_DebugLinkWatchLayout => 103,
+ MessageType::MessageType_DebugLinkResetDebugEvents => 104,
+ MessageType::MessageType_DebugLinkOptigaSetSecMax => 105,
+ MessageType::MessageType_DebugLinkGetGcInfo => 106,
+ MessageType::MessageType_DebugLinkGcInfo => 107,
+ MessageType::MessageType_DebugLinkGetPairingInfo => 108,
+ MessageType::MessageType_DebugLinkPairingInfo => 109,
+ MessageType::MessageType_DebugLinkSetLogFilter => 110,
+ MessageType::MessageType_DebugLinkN4W1Connected => 111,
+ MessageType::MessageType_DebugLinkN4W1Write => 112,
+ MessageType::MessageType_DebugLinkN4W1Read => 113,
+ MessageType::MessageType_DebugLinkN4W1Response => 114,
+ MessageType::MessageType_DebugLinkSetBatteryState => 115,
+ MessageType::MessageType_EthereumGetPublicKey => 116,
+ MessageType::MessageType_EthereumPublicKey => 117,
+ MessageType::MessageType_EthereumGetAddress => 118,
+ MessageType::MessageType_EthereumAddress => 119,
+ MessageType::MessageType_EthereumSignTx => 120,
+ MessageType::MessageType_EthereumSignTxEIP1559 => 121,
+ MessageType::MessageType_EthereumTxRequest => 122,
+ MessageType::MessageType_EthereumTxAck => 123,
+ MessageType::MessageType_EthereumSignMessage => 124,
+ MessageType::MessageType_EthereumVerifyMessage => 125,
+ MessageType::MessageType_EthereumMessageSignature => 126,
+ MessageType::MessageType_EthereumSignTypedData => 127,
+ MessageType::MessageType_EthereumTypedDataStructRequest => 128,
+ MessageType::MessageType_EthereumTypedDataStructAck => 129,
+ MessageType::MessageType_EthereumTypedDataValueRequest => 130,
+ MessageType::MessageType_EthereumTypedDataValueAck => 131,
+ MessageType::MessageType_EthereumTypedDataSignature => 132,
+ MessageType::MessageType_EthereumSignTypedHash => 133,
+ MessageType::MessageType_EthereumDefinitionRequest => 134,
+ MessageType::MessageType_EthereumDefinitionAck => 135,
+ MessageType::MessageType_NEMGetAddress => 136,
+ MessageType::MessageType_NEMAddress => 137,
+ MessageType::MessageType_NEMSignTx => 138,
+ MessageType::MessageType_NEMSignedTx => 139,
+ MessageType::MessageType_NEMDecryptMessage => 140,
+ MessageType::MessageType_NEMDecryptedMessage => 141,
+ MessageType::MessageType_TezosGetAddress => 142,
+ MessageType::MessageType_TezosAddress => 143,
+ MessageType::MessageType_TezosSignTx => 144,
+ MessageType::MessageType_TezosSignedTx => 145,
+ MessageType::MessageType_TezosGetPublicKey => 146,
+ MessageType::MessageType_TezosPublicKey => 147,
+ MessageType::MessageType_StellarSignTx => 148,
+ MessageType::MessageType_StellarTxOpRequest => 149,
+ MessageType::MessageType_StellarGetAddress => 150,
+ MessageType::MessageType_StellarAddress => 151,
+ MessageType::MessageType_StellarCreateAccountOp => 152,
+ MessageType::MessageType_StellarPaymentOp => 153,
+ MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 154,
+ MessageType::MessageType_StellarManageSellOfferOp => 155,
+ MessageType::MessageType_StellarCreatePassiveSellOfferOp => 156,
+ MessageType::MessageType_StellarSetOptionsOp => 157,
+ MessageType::MessageType_StellarChangeTrustOp => 158,
+ MessageType::MessageType_StellarAllowTrustOp => 159,
+ MessageType::MessageType_StellarAccountMergeOp => 160,
+ MessageType::MessageType_StellarManageDataOp => 161,
+ MessageType::MessageType_StellarBumpSequenceOp => 162,
+ MessageType::MessageType_StellarManageBuyOfferOp => 163,
+ MessageType::MessageType_StellarPathPaymentStrictSendOp => 164,
+ MessageType::MessageType_StellarClaimClaimableBalanceOp => 165,
+ MessageType::MessageType_StellarSignedTx => 166,
+ MessageType::MessageType_CardanoGetPublicKey => 167,
+ MessageType::MessageType_CardanoPublicKey => 168,
+ MessageType::MessageType_CardanoGetAddress => 169,
+ MessageType::MessageType_CardanoAddress => 170,
+ MessageType::MessageType_CardanoTxItemAck => 171,
+ MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 172,
+ MessageType::MessageType_CardanoTxWitnessRequest => 173,
+ MessageType::MessageType_CardanoTxWitnessResponse => 174,
+ MessageType::MessageType_CardanoTxHostAck => 175,
+ MessageType::MessageType_CardanoTxBodyHash => 176,
+ MessageType::MessageType_CardanoSignTxFinished => 177,
+ MessageType::MessageType_CardanoSignTxInit => 178,
+ MessageType::MessageType_CardanoTxInput => 179,
+ MessageType::MessageType_CardanoTxOutput => 180,
+ MessageType::MessageType_CardanoAssetGroup => 181,
+ MessageType::MessageType_CardanoToken => 182,
+ MessageType::MessageType_CardanoTxCertificate => 183,
+ MessageType::MessageType_CardanoTxWithdrawal => 184,
+ MessageType::MessageType_CardanoTxAuxiliaryData => 185,
+ MessageType::MessageType_CardanoPoolOwner => 186,
+ MessageType::MessageType_CardanoPoolRelayParameters => 187,
+ MessageType::MessageType_CardanoGetNativeScriptHash => 188,
+ MessageType::MessageType_CardanoNativeScriptHash => 189,
+ MessageType::MessageType_CardanoTxMint => 190,
+ MessageType::MessageType_CardanoTxCollateralInput => 191,
+ MessageType::MessageType_CardanoTxRequiredSigner => 192,
+ MessageType::MessageType_CardanoTxInlineDatumChunk => 193,
+ MessageType::MessageType_CardanoTxReferenceScriptChunk => 194,
+ MessageType::MessageType_CardanoTxReferenceInput => 195,
+ MessageType::MessageType_CardanoSignMessageInit => 196,
+ MessageType::MessageType_CardanoMessageDataRequest => 197,
+ MessageType::MessageType_CardanoMessageDataResponse => 198,
+ MessageType::MessageType_CardanoMessageSignature => 199,
+ MessageType::MessageType_RippleGetAddress => 200,
+ MessageType::MessageType_RippleAddress => 201,
+ MessageType::MessageType_RippleSignTx => 202,
+ MessageType::MessageType_RippleSignedTx => 203,
+ MessageType::MessageType_MoneroTransactionInitRequest => 204,
+ MessageType::MessageType_MoneroTransactionInitAck => 205,
+ MessageType::MessageType_MoneroTransactionSetInputRequest => 206,
+ MessageType::MessageType_MoneroTransactionSetInputAck => 207,
+ MessageType::MessageType_MoneroTransactionInputViniRequest => 208,
+ MessageType::MessageType_MoneroTransactionInputViniAck => 209,
+ MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 210,
+ MessageType::MessageType_MoneroTransactionAllInputsSetAck => 211,
+ MessageType::MessageType_MoneroTransactionSetOutputRequest => 212,
+ MessageType::MessageType_MoneroTransactionSetOutputAck => 213,
+ MessageType::MessageType_MoneroTransactionAllOutSetRequest => 214,
+ MessageType::MessageType_MoneroTransactionAllOutSetAck => 215,
+ MessageType::MessageType_MoneroTransactionSignInputRequest => 216,
+ MessageType::MessageType_MoneroTransactionSignInputAck => 217,
+ MessageType::MessageType_MoneroTransactionFinalRequest => 218,
+ MessageType::MessageType_MoneroTransactionFinalAck => 219,
+ MessageType::MessageType_MoneroKeyImageExportInitRequest => 220,
+ MessageType::MessageType_MoneroKeyImageExportInitAck => 221,
+ MessageType::MessageType_MoneroKeyImageSyncStepRequest => 222,
+ MessageType::MessageType_MoneroKeyImageSyncStepAck => 223,
+ MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 224,
+ MessageType::MessageType_MoneroKeyImageSyncFinalAck => 225,
+ MessageType::MessageType_MoneroGetAddress => 226,
+ MessageType::MessageType_MoneroAddress => 227,
+ MessageType::MessageType_MoneroGetWatchKey => 228,
+ MessageType::MessageType_MoneroWatchKey => 229,
+ MessageType::MessageType_DebugMoneroDiagRequest => 230,
+ MessageType::MessageType_DebugMoneroDiagAck => 231,
+ MessageType::MessageType_MoneroGetTxKeyRequest => 232,
+ MessageType::MessageType_MoneroGetTxKeyAck => 233,
+ MessageType::MessageType_MoneroLiveRefreshStartRequest => 234,
+ MessageType::MessageType_MoneroLiveRefreshStartAck => 235,
+ MessageType::MessageType_MoneroLiveRefreshStepRequest => 236,
+ MessageType::MessageType_MoneroLiveRefreshStepAck => 237,
+ MessageType::MessageType_MoneroLiveRefreshFinalRequest => 238,
+ MessageType::MessageType_MoneroLiveRefreshFinalAck => 239,
+ MessageType::MessageType_EosGetPublicKey => 240,
+ MessageType::MessageType_EosPublicKey => 241,
+ MessageType::MessageType_EosSignTx => 242,
+ MessageType::MessageType_EosTxActionRequest => 243,
+ MessageType::MessageType_EosTxActionAck => 244,
+ MessageType::MessageType_EosSignedTx => 245,
+ MessageType::MessageType_WebAuthnListResidentCredentials => 246,
+ MessageType::MessageType_WebAuthnCredentials => 247,
+ MessageType::MessageType_WebAuthnAddResidentCredential => 248,
+ MessageType::MessageType_WebAuthnRemoveResidentCredential => 249,
+ MessageType::MessageType_WebAuthnCredentialsAck => 250,
+ MessageType::MessageType_SolanaGetPublicKey => 251,
+ MessageType::MessageType_SolanaPublicKey => 252,
+ MessageType::MessageType_SolanaGetAddress => 253,
+ MessageType::MessageType_SolanaAddress => 254,
+ MessageType::MessageType_SolanaSignTx => 255,
+ MessageType::MessageType_SolanaTxSignature => 256,
+ MessageType::MessageType_ThpCreateNewSession => 257,
+ MessageType::MessageType_ThpCredentialRequest => 258,
+ MessageType::MessageType_ThpCredentialResponse => 259,
+ MessageType::MessageType_NostrGetPubkey => 260,
+ MessageType::MessageType_NostrPubkey => 261,
+ MessageType::MessageType_NostrSignEvent => 262,
+ MessageType::MessageType_NostrEventSignature => 263,
+ MessageType::MessageType_EvoluGetNode => 264,
+ MessageType::MessageType_EvoluNode => 265,
+ MessageType::MessageType_EvoluSignRegistrationRequest => 266,
+ MessageType::MessageType_EvoluRegistrationRequest => 267,
+ MessageType::MessageType_EvoluGetDelegatedIdentityKey => 268,
+ MessageType::MessageType_EvoluDelegatedIdentityKey => 269,
+ MessageType::MessageType_EvoluIndexManagement => 270,
+ MessageType::MessageType_EvoluIndexManagementResponse => 271,
+ MessageType::MessageType_TronGetAddress => 272,
+ MessageType::MessageType_TronAddress => 273,
+ MessageType::MessageType_TronSignTx => 274,
+ MessageType::MessageType_TronSignature => 275,
+ MessageType::MessageType_TronContractRequest => 276,
+ MessageType::MessageType_TronTransferContract => 277,
+ MessageType::MessageType_TronTriggerSmartContract => 278,
+ MessageType::MessageType_TronFreezeBalanceV2Contract => 279,
+ MessageType::MessageType_TronUnfreezeBalanceV2Contract => 280,
+ MessageType::MessageType_TronWithdrawUnfreeze => 281,
+ MessageType::MessageType_TronVoteWitnessContract => 282,
+ MessageType::MessageType_BenchmarkListNames => 283,
+ MessageType::MessageType_BenchmarkNames => 284,
+ MessageType::MessageType_BenchmarkRun => 285,
+ MessageType::MessageType_BenchmarkResult => 286,
+ MessageType::MessageType_TelemetryGet => 287,
+ MessageType::MessageType_Telemetry => 288,
};
Self::enum_descriptor().value_by_index(index)
}
@@ -1794,7 +1812,7 @@ impl MessageType {
}
static file_descriptor_proto_data: &'static [u8] = b"\
- \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xbed\
+ \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xd9e\
\n\x0bMessageType\x12(\n\x16MessageType_Initialize\x10\0\x1a\x0c\xb0\xb5\
\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12\x1e\n\x10MessageType_Ping\
\x10\x01\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12%\n\x13MessageType_S\
@@ -1854,19 +1872,23 @@ static file_descriptor_proto_data: &'static [u8] = b"\
\x10`\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1eMessageType_Auth\
enticateDevice\x10a\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12+\n\x1dMe\
ssageType_AuthenticityProof\x10b\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\
- \x12)\n\x1aMessageType_ChangeLanguage\x10\xde\x07\x1a\x08\x80\xa6\x1d\
- \x01\x90\xb5\x18\x01\x12+\n\x1cMessageType_DataChunkRequest\x10\xdf\x07\
- \x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12'\n\x18MessageType_DataChunk\
- Ack\x10\xe0\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x19Messag\
- eType_SetBrightness\x10\xe1\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\
- \x12*\n\x1bMessageType_GetSerialNumber\x10\xe4\x07\x1a\x08\x80\xa6\x1d\
- \x01\x90\xb5\x18\x01\x12'\n\x18MessageType_SerialNumber\x10\xe5\x07\x1a\
- \x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12#\n\x19MessageType_SetU2FCounter\
- \x10?\x1a\x04\x90\xb5\x18\x01\x12'\n\x1dMessageType_GetNextU2FCounter\
- \x10P\x1a\x04\x90\xb5\x18\x01\x12$\n\x1aMessageType_NextU2FCounter\x10Q\
- \x1a\x04\x98\xb5\x18\x01\x125\n-MessageType_Deprecated_PassphraseStateRe\
- quest\x10M\x1a\x02\x08\x01\x121\n)MessageType_Deprecated_PassphraseState\
- Ack\x10N\x1a\x02\x08\x01\x12+\n\x19MessageType_FirmwareErase\x10\x06\x1a\
+ \x120\n\"MessageType_AuthenticityProofSizes\x10c\x1a\x08\x80\xa6\x1d\x01\
+ \x98\xb5\x18\x01\x12)\n\x1aMessageType_ChangeLanguage\x10\xde\x07\x1a\
+ \x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12+\n\x1cMessageType_DataChunkRequ\
+ est\x10\xdf\x07\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12'\n\x18Messag\
+ eType_DataChunkAck\x10\xe0\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\
+ \x12(\n\x19MessageType_SetBrightness\x10\xe1\x07\x1a\x08\x80\xa6\x1d\x01\
+ \x90\xb5\x18\x01\x12*\n\x1bMessageType_GetSerialNumber\x10\xe4\x07\x1a\
+ \x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x18MessageType_SerialNumber\
+ \x10\xe5\x07\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x124\n%MessageType_\
+ GetAuthenticityProofChunk\x10\xe6\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\
+ \x18\x01\x121\n\"MessageType_AuthenticityProofChunk\x10\xe7\x07\x1a\x08\
+ \x80\xa6\x1d\x01\x98\xb5\x18\x01\x12#\n\x19MessageType_SetU2FCounter\x10\
+ ?\x1a\x04\x90\xb5\x18\x01\x12'\n\x1dMessageType_GetNextU2FCounter\x10P\
+ \x1a\x04\x90\xb5\x18\x01\x12$\n\x1aMessageType_NextU2FCounter\x10Q\x1a\
+ \x04\x98\xb5\x18\x01\x125\n-MessageType_Deprecated_PassphraseStateReques\
+ t\x10M\x1a\x02\x08\x01\x121\n)MessageType_Deprecated_PassphraseStateAck\
+ \x10N\x1a\x02\x08\x01\x12+\n\x19MessageType_FirmwareErase\x10\x06\x1a\
\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1aMessageTy\
pe_FirmwareUpload\x10\x07\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\
\xb5\x18\x01\x12-\n\x1bMessageType_FirmwareRequest\x10\x08\x1a\x0c\xb8\
diff --git a/rust/trezor-client/src/protos/generated/messages_management.rs b/rust/trezor-client/src/protos/generated/messages_management.rs
index b16e2c64..575eb0d3 100644
--- a/rust/trezor-client/src/protos/generated/messages_management.rs
+++ b/rust/trezor-client/src/protos/generated/messages_management.rs
@@ -6374,6 +6374,8 @@ pub struct AuthenticateDevice {
// message fields
// @@protoc_insertion_point(field:hw.trezor.messages.management.AuthenticateDevice.challenge)
pub challenge: ::std::option::Option<::std::vec::Vec<u8>>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.AuthenticateDevice.stream)
+ pub stream: ::std::option::Option<bool>,
// special fields
// @@protoc_insertion_point(special_field:hw.trezor.messages.management.AuthenticateDevice.special_fields)
pub special_fields: ::protobuf::SpecialFields,
@@ -6426,14 +6428,38 @@ impl AuthenticateDevice {
self.challenge.take().unwrap_or_else(|| ::std::vec::Vec::new())
}
+ // optional bool stream = 2;
+
+ pub fn stream(&self) -> bool {
+ self.stream.unwrap_or(false)
+ }
+
+ pub fn clear_stream(&mut self) {
+ self.stream = ::std::option::Option::None;
+ }
+
+ pub fn has_stream(&self) -> bool {
+ self.stream.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_stream(&mut self, v: bool) {
+ self.stream = ::std::option::Option::Some(v);
+ }
+
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
- let mut fields = ::std::vec::Vec::with_capacity(1);
+ let mut fields = ::std::vec::Vec::with_capacity(2);
let mut oneofs = ::std::vec::Vec::with_capacity(0);
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
"challenge",
|m: &AuthenticateDevice| { &m.challenge },
|m: &mut AuthenticateDevice| { &mut m.challenge },
));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "stream",
+ |m: &AuthenticateDevice| { &m.stream },
+ |m: &mut AuthenticateDevice| { &mut m.stream },
+ ));
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<AuthenticateDevice>(
"AuthenticateDevice",
fields,
@@ -6458,6 +6484,9 @@ impl ::protobuf::Message for AuthenticateDevice {
10 => {
self.challenge = ::std::option::Option::Some(is.read_bytes()?);
},
+ 16 => {
+ self.stream = ::std::option::Option::Some(is.read_bool()?);
+ },
tag => {
::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
},
@@ -6473,6 +6502,9 @@ impl ::protobuf::Message for AuthenticateDevice {
if let Some(v) = self.challenge.as_ref() {
my_size += ::protobuf::rt::bytes_size(1, &v);
}
+ if let Some(v) = self.stream {
+ my_size += 1 + 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
@@ -6482,6 +6514,9 @@ impl ::protobuf::Message for AuthenticateDevice {
if let Some(v) = self.challenge.as_ref() {
os.write_bytes(1, v)?;
}
+ if let Some(v) = self.stream {
+ os.write_bool(2, v)?;
+ }
os.write_unknown_fields(self.special_fields.unknown_fields())?;
::std::result::Result::Ok(())
}
@@ -6500,12 +6535,14 @@ impl ::protobuf::Message for AuthenticateDevice {
fn clear(&mut self) {
self.challenge = ::std::option::Option::None;
+ self.stream = ::std::option::Option::None;
self.special_fields.clear();
}
fn default_instance() -> &'static AuthenticateDevice {
static instance: AuthenticateDevice = AuthenticateDevice {
challenge: ::std::option::Option::None,
+ stream: ::std::option::Option::None,
special_fields: ::protobuf::SpecialFields::new(),
};
&instance
@@ -6852,6 +6889,779 @@ impl ::protobuf::reflect::ProtobufValue for AuthenticityProof {
type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}
+// @@protoc_insertion_point(message:hw.trezor.messages.management.AuthenticityProofSizes)
+#[derive(PartialEq,Clone,Default,Debug)]
+pub struct AuthenticityProofSizes {
+ // message fields
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.AuthenticityProofSizes.optiga_certificates)
+ pub optiga_certificates: ::std::vec::Vec<u32>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.AuthenticityProofSizes.optiga_signature)
+ pub optiga_signature: ::std::option::Option<u32>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.AuthenticityProofSizes.tropic_certificates)
+ pub tropic_certificates: ::std::vec::Vec<u32>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.AuthenticityProofSizes.tropic_signature)
+ pub tropic_signature: ::std::option::Option<u32>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.AuthenticityProofSizes.mcu_certificates)
+ pub mcu_certificates: ::std::vec::Vec<u32>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.AuthenticityProofSizes.mcu_signature)
+ pub mcu_signature: ::std::option::Option<u32>,
+ // special fields
+ // @@protoc_insertion_point(special_field:hw.trezor.messages.management.AuthenticityProofSizes.special_fields)
+ pub special_fields: ::protobuf::SpecialFields,
+}
+
+impl<'a> ::std::default::Default for &'a AuthenticityProofSizes {
+ fn default() -> &'a AuthenticityProofSizes {
+ <AuthenticityProofSizes as ::protobuf::Message>::default_instance()
+ }
+}
+
+impl AuthenticityProofSizes {
+ pub fn new() -> AuthenticityProofSizes {
+ ::std::default::Default::default()
+ }
+
+ // required uint32 optiga_signature = 2;
+
+ pub fn optiga_signature(&self) -> u32 {
+ self.optiga_signature.unwrap_or(0)
+ }
+
+ pub fn clear_optiga_signature(&mut self) {
+ self.optiga_signature = ::std::option::Option::None;
+ }
+
+ pub fn has_optiga_signature(&self) -> bool {
+ self.optiga_signature.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_optiga_signature(&mut self, v: u32) {
+ self.optiga_signature = ::std::option::Option::Some(v);
+ }
+
+ // optional uint32 tropic_signature = 4;
+
+ pub fn tropic_signature(&self) -> u32 {
+ self.tropic_signature.unwrap_or(0)
+ }
+
+ pub fn clear_tropic_signature(&mut self) {
+ self.tropic_signature = ::std::option::Option::None;
+ }
+
+ pub fn has_tropic_signature(&self) -> bool {
+ self.tropic_signature.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_tropic_signature(&mut self, v: u32) {
+ self.tropic_signature = ::std::option::Option::Some(v);
+ }
+
+ // optional uint32 mcu_signature = 6;
+
+ pub fn mcu_signature(&self) -> u32 {
+ self.mcu_signature.unwrap_or(0)
+ }
+
+ pub fn clear_mcu_signature(&mut self) {
+ self.mcu_signature = ::std::option::Option::None;
+ }
+
+ pub fn has_mcu_signature(&self) -> bool {
+ self.mcu_signature.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_mcu_signature(&mut self, v: u32) {
+ self.mcu_signature = ::std::option::Option::Some(v);
+ }
+
+ fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
+ let mut fields = ::std::vec::Vec::with_capacity(6);
+ let mut oneofs = ::std::vec::Vec::with_capacity(0);
+ fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
+ "optiga_certificates",
+ |m: &AuthenticityProofSizes| { &m.optiga_certificates },
+ |m: &mut AuthenticityProofSizes| { &mut m.optiga_certificates },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "optiga_signature",
+ |m: &AuthenticityProofSizes| { &m.optiga_signature },
+ |m: &mut AuthenticityProofSizes| { &mut m.optiga_signature },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
+ "tropic_certificates",
+ |m: &AuthenticityProofSizes| { &m.tropic_certificates },
+ |m: &mut AuthenticityProofSizes| { &mut m.tropic_certificates },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "tropic_signature",
+ |m: &AuthenticityProofSizes| { &m.tropic_signature },
+ |m: &mut AuthenticityProofSizes| { &mut m.tropic_signature },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
+ "mcu_certificates",
+ |m: &AuthenticityProofSizes| { &m.mcu_certificates },
+ |m: &mut AuthenticityProofSizes| { &mut m.mcu_certificates },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "mcu_signature",
+ |m: &AuthenticityProofSizes| { &m.mcu_signature },
+ |m: &mut AuthenticityProofSizes| { &mut m.mcu_signature },
+ ));
+ ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<AuthenticityProofSizes>(
+ "AuthenticityProofSizes",
+ fields,
+ oneofs,
+ )
+ }
+}
+
+impl ::protobuf::Message for AuthenticityProofSizes {
+ const NAME: &'static str = "AuthenticityProofSizes";
+
+ fn is_initialized(&self) -> bool {
+ if self.optiga_signature.is_none() {
+ return false;
+ }
+ true
+ }
+
+ fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
+ while let Some(tag) = is.read_raw_tag_or_eof()? {
+ match tag {
+ 10 => {
+ is.read_repeated_packed_uint32_into(&mut self.optiga_certificates)?;
+ },
+ 8 => {
+ self.optiga_certificates.push(is.read_uint32()?);
+ },
+ 16 => {
+ self.optiga_signature = ::std::option::Option::Some(is.read_uint32()?);
+ },
+ 26 => {
+ is.read_repeated_packed_uint32_into(&mut self.tropic_certificates)?;
+ },
+ 24 => {
+ self.tropic_certificates.push(is.read_uint32()?);
+ },
+ 32 => {
+ self.tropic_signature = ::std::option::Option::Some(is.read_uint32()?);
+ },
+ 42 => {
+ is.read_repeated_packed_uint32_into(&mut self.mcu_certificates)?;
+ },
+ 40 => {
+ self.mcu_certificates.push(is.read_uint32()?);
+ },
+ 48 => {
+ self.mcu_signature = ::std::option::Option::Some(is.read_uint32()?);
+ },
+ tag => {
+ ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
+ },
+ };
+ }
+ ::std::result::Result::Ok(())
+ }
+
+ // Compute sizes of nested messages
+ #[allow(unused_variables)]
+ fn compute_size(&self) -> u64 {
+ let mut my_size = 0;
+ for value in &self.optiga_certificates {
+ my_size += ::protobuf::rt::uint32_size(1, *value);
+ };
+ if let Some(v) = self.optiga_signature {
+ my_size += ::protobuf::rt::uint32_size(2, v);
+ }
+ for value in &self.tropic_certificates {
+ my_size += ::protobuf::rt::uint32_size(3, *value);
+ };
+ if let Some(v) = self.tropic_signature {
+ my_size += ::protobuf::rt::uint32_size(4, v);
+ }
+ for value in &self.mcu_certificates {
+ my_size += ::protobuf::rt::uint32_size(5, *value);
+ };
+ if let Some(v) = self.mcu_signature {
+ my_size += ::protobuf::rt::uint32_size(6, 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
+ }
+
+ fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
+ for v in &self.optiga_certificates {
+ os.write_uint32(1, *v)?;
+ };
+ if let Some(v) = self.optiga_signature {
+ os.write_uint32(2, v)?;
+ }
+ for v in &self.tropic_certificates {
+ os.write_uint32(3, *v)?;
+ };
+ if let Some(v) = self.tropic_signature {
+ os.write_uint32(4, v)?;
+ }
+ for v in &self.mcu_certificates {
+ os.write_uint32(5, *v)?;
+ };
+ if let Some(v) = self.mcu_signature {
+ os.write_uint32(6, v)?;
+ }
+ os.write_unknown_fields(self.special_fields.unknown_fields())?;
+ ::std::result::Result::Ok(())
+ }
+
+ fn special_fields(&self) -> &::protobuf::SpecialFields {
+ &self.special_fields
+ }
+
+ fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
+ &mut self.special_fields
+ }
+
+ fn new() -> AuthenticityProofSizes {
+ AuthenticityProofSizes::new()
+ }
+
+ fn clear(&mut self) {
+ self.optiga_certificates.clear();
+ self.optiga_signature = ::std::option::Option::None;
+ self.tropic_certificates.clear();
+ self.tropic_signature = ::std::option::Option::None;
+ self.mcu_certificates.clear();
+ self.mcu_signature = ::std::option::Option::None;
+ self.special_fields.clear();
+ }
+
+ fn default_instance() -> &'static AuthenticityProofSizes {
+ static instance: AuthenticityProofSizes = AuthenticityProofSizes {
+ optiga_certificates: ::std::vec::Vec::new(),
+ optiga_signature: ::std::option::Option::None,
+ tropic_certificates: ::std::vec::Vec::new(),
+ tropic_signature: ::std::option::Option::None,
+ mcu_certificates: ::std::vec::Vec::new(),
+ mcu_signature: ::std::option::Option::None,
+ special_fields: ::protobuf::SpecialFields::new(),
+ };
+ &instance
+ }
+}
+
+impl ::protobuf::MessageFull for AuthenticityProofSizes {
+ fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
+ static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
+ descriptor.get(|| file_descriptor().message_by_package_relative_name("AuthenticityProofSizes").unwrap()).clone()
+ }
+}
+
+impl ::std::fmt::Display for AuthenticityProofSizes {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ ::protobuf::text_format::fmt(self, f)
+ }
+}
+
+impl ::protobuf::reflect::ProtobufValue for AuthenticityProofSizes {
+ type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
+}
+
+// @@protoc_insertion_point(message:hw.trezor.messages.management.GetAuthenticityProofChunk)
+#[derive(PartialEq,Clone,Default,Debug)]
+pub struct GetAuthenticityProofChunk {
+ // message fields
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.GetAuthenticityProofChunk.proof_type)
+ pub proof_type: ::std::option::Option<::protobuf::EnumOrUnknown<get_authenticity_proof_chunk::AuthenticityProofType>>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.GetAuthenticityProofChunk.index)
+ pub index: ::std::option::Option<u32>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.GetAuthenticityProofChunk.offset)
+ pub offset: ::std::option::Option<u32>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.GetAuthenticityProofChunk.size)
+ pub size: ::std::option::Option<u32>,
+ // special fields
+ // @@protoc_insertion_point(special_field:hw.trezor.messages.management.GetAuthenticityProofChunk.special_fields)
+ pub special_fields: ::protobuf::SpecialFields,
+}
+
+impl<'a> ::std::default::Default for &'a GetAuthenticityProofChunk {
+ fn default() -> &'a GetAuthenticityProofChunk {
+ <GetAuthenticityProofChunk as ::protobuf::Message>::default_instance()
+ }
+}
+
+impl GetAuthenticityProofChunk {
+ pub fn new() -> GetAuthenticityProofChunk {
+ ::std::default::Default::default()
+ }
+
+ // optional .hw.trezor.messages.management.GetAuthenticityProofChunk.AuthenticityProofType proof_type = 1;
+
+ pub fn proof_type(&self) -> get_authenticity_proof_chunk::AuthenticityProofType {
+ match self.proof_type {
+ Some(e) => e.enum_value_or(get_authenticity_proof_chunk::AuthenticityProofType::OPTIGA),
+ None => get_authenticity_proof_chunk::AuthenticityProofType::OPTIGA,
+ }
+ }
+
+ pub fn clear_proof_type(&mut self) {
+ self.proof_type = ::std::option::Option::None;
+ }
+
+ pub fn has_proof_type(&self) -> bool {
+ self.proof_type.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_proof_type(&mut self, v: get_authenticity_proof_chunk::AuthenticityProofType) {
+ self.proof_type = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
+ }
+
+ // optional uint32 index = 2;
+
+ pub fn index(&self) -> u32 {
+ self.index.unwrap_or(0)
+ }
+
+ pub fn clear_index(&mut self) {
+ self.index = ::std::option::Option::None;
+ }
+
+ pub fn has_index(&self) -> bool {
+ self.index.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_index(&mut self, v: u32) {
+ self.index = ::std::option::Option::Some(v);
+ }
+
+ // required uint32 offset = 3;
+
+ pub fn offset(&self) -> u32 {
+ self.offset.unwrap_or(0)
+ }
+
+ pub fn clear_offset(&mut self) {
+ self.offset = ::std::option::Option::None;
+ }
+
+ pub fn has_offset(&self) -> bool {
+ self.offset.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_offset(&mut self, v: u32) {
+ self.offset = ::std::option::Option::Some(v);
+ }
+
+ // required uint32 size = 4;
+
+ pub fn size(&self) -> u32 {
+ self.size.unwrap_or(0)
+ }
+
+ pub fn clear_size(&mut self) {
+ self.size = ::std::option::Option::None;
+ }
+
+ pub fn has_size(&self) -> bool {
+ self.size.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_size(&mut self, v: u32) {
+ self.size = ::std::option::Option::Some(v);
+ }
+
+ fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
+ let mut fields = ::std::vec::Vec::with_capacity(4);
+ let mut oneofs = ::std::vec::Vec::with_capacity(0);
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "proof_type",
+ |m: &GetAuthenticityProofChunk| { &m.proof_type },
+ |m: &mut GetAuthenticityProofChunk| { &mut m.proof_type },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "index",
+ |m: &GetAuthenticityProofChunk| { &m.index },
+ |m: &mut GetAuthenticityProofChunk| { &mut m.index },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "offset",
+ |m: &GetAuthenticityProofChunk| { &m.offset },
+ |m: &mut GetAuthenticityProofChunk| { &mut m.offset },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "size",
+ |m: &GetAuthenticityProofChunk| { &m.size },
+ |m: &mut GetAuthenticityProofChunk| { &mut m.size },
+ ));
+ ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<GetAuthenticityProofChunk>(
+ "GetAuthenticityProofChunk",
+ fields,
+ oneofs,
+ )
+ }
+}
+
+impl ::protobuf::Message for GetAuthenticityProofChunk {
+ const NAME: &'static str = "GetAuthenticityProofChunk";
+
+ fn is_initialized(&self) -> bool {
+ if self.offset.is_none() {
+ return false;
+ }
+ if self.size.is_none() {
+ return false;
+ }
+ true
+ }
+
+ fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
+ while let Some(tag) = is.read_raw_tag_or_eof()? {
+ match tag {
+ 8 => {
+ self.proof_type = ::std::option::Option::Some(is.read_enum_or_unknown()?);
+ },
+ 16 => {
+ self.index = ::std::option::Option::Some(is.read_uint32()?);
+ },
+ 24 => {
+ self.offset = ::std::option::Option::Some(is.read_uint32()?);
+ },
+ 32 => {
+ self.size = ::std::option::Option::Some(is.read_uint32()?);
+ },
+ tag => {
+ ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
+ },
+ };
+ }
+ ::std::result::Result::Ok(())
+ }
+
+ // Compute sizes of nested messages
+ #[allow(unused_variables)]
+ fn compute_size(&self) -> u64 {
+ let mut my_size = 0;
+ if let Some(v) = self.proof_type {
+ my_size += ::protobuf::rt::int32_size(1, v.value());
+ }
+ if let Some(v) = self.index {
+ my_size += ::protobuf::rt::uint32_size(2, v);
+ }
+ if let Some(v) = self.offset {
+ my_size += ::protobuf::rt::uint32_size(3, v);
+ }
+ if let Some(v) = self.size {
+ my_size += ::protobuf::rt::uint32_size(4, 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
+ }
+
+ fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
+ if let Some(v) = self.proof_type {
+ os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?;
+ }
+ if let Some(v) = self.index {
+ os.write_uint32(2, v)?;
+ }
+ if let Some(v) = self.offset {
+ os.write_uint32(3, v)?;
+ }
+ if let Some(v) = self.size {
+ os.write_uint32(4, v)?;
+ }
+ os.write_unknown_fields(self.special_fields.unknown_fields())?;
+ ::std::result::Result::Ok(())
+ }
+
+ fn special_fields(&self) -> &::protobuf::SpecialFields {
+ &self.special_fields
+ }
+
+ fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
+ &mut self.special_fields
+ }
+
+ fn new() -> GetAuthenticityProofChunk {
+ GetAuthenticityProofChunk::new()
+ }
+
+ fn clear(&mut self) {
+ self.proof_type = ::std::option::Option::None;
+ self.index = ::std::option::Option::None;
+ self.offset = ::std::option::Option::None;
+ self.size = ::std::option::Option::None;
+ self.special_fields.clear();
+ }
+
+ fn default_instance() -> &'static GetAuthenticityProofChunk {
+ static instance: GetAuthenticityProofChunk = GetAuthenticityProofChunk {
+ proof_type: ::std::option::Option::None,
+ index: ::std::option::Option::None,
+ offset: ::std::option::Option::None,
+ size: ::std::option::Option::None,
+ special_fields: ::protobuf::SpecialFields::new(),
+ };
+ &instance
+ }
+}
+
+impl ::protobuf::MessageFull for GetAuthenticityProofChunk {
+ fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
+ static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
+ descriptor.get(|| file_descriptor().message_by_package_relative_name("GetAuthenticityProofChunk").unwrap()).clone()
+ }
+}
+
+impl ::std::fmt::Display for GetAuthenticityProofChunk {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ ::protobuf::text_format::fmt(self, f)
+ }
+}
+
+impl ::protobuf::reflect::ProtobufValue for GetAuthenticityProofChunk {
+ type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
+}
+
+/// Nested message and enums of message `GetAuthenticityProofChunk`
+pub mod get_authenticity_proof_chunk {
+ #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
+ // @@protoc_insertion_point(enum:hw.trezor.messages.management.GetAuthenticityProofChunk.AuthenticityProofType)
+ pub enum AuthenticityProofType {
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.GetAuthenticityProofChunk.AuthenticityProofType.OPTIGA)
+ OPTIGA = 0,
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.GetAuthenticityProofChunk.AuthenticityProofType.TROPIC)
+ TROPIC = 1,
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.GetAuthenticityProofChunk.AuthenticityProofType.MCU)
+ MCU = 2,
+ }
+
+ impl ::protobuf::Enum for AuthenticityProofType {
+ const NAME: &'static str = "AuthenticityProofType";
+
+ fn value(&self) -> i32 {
+ *self as i32
+ }
+
+ fn from_i32(value: i32) -> ::std::option::Option<AuthenticityProofType> {
+ match value {
+ 0 => ::std::option::Option::Some(AuthenticityProofType::OPTIGA),
+ 1 => ::std::option::Option::Some(AuthenticityProofType::TROPIC),
+ 2 => ::std::option::Option::Some(AuthenticityProofType::MCU),
+ _ => ::std::option::Option::None
+ }
+ }
+
+ fn from_str(str: &str) -> ::std::option::Option<AuthenticityProofType> {
+ match str {
+ "OPTIGA" => ::std::option::Option::Some(AuthenticityProofType::OPTIGA),
+ "TROPIC" => ::std::option::Option::Some(AuthenticityProofType::TROPIC),
+ "MCU" => ::std::option::Option::Some(AuthenticityProofType::MCU),
+ _ => ::std::option::Option::None
+ }
+ }
+
+ const VALUES: &'static [AuthenticityProofType] = &[
+ AuthenticityProofType::OPTIGA,
+ AuthenticityProofType::TROPIC,
+ AuthenticityProofType::MCU,
+ ];
+ }
+
+ impl ::protobuf::EnumFull for AuthenticityProofType {
+ fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
+ static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
+ descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("GetAuthenticityProofChunk.AuthenticityProofType").unwrap()).clone()
+ }
+
+ fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
+ let index = *self as usize;
+ Self::enum_descriptor().value_by_index(index)
+ }
+ }
+
+ impl ::std::default::Default for AuthenticityProofType {
+ fn default() -> Self {
+ AuthenticityProofType::OPTIGA
+ }
+ }
+
+ impl AuthenticityProofType {
+ pub(in super) fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
+ ::protobuf::reflect::GeneratedEnumDescriptorData::new::<AuthenticityProofType>("GetAuthenticityProofChunk.AuthenticityProofType")
+ }
+ }
+}
+
+// @@protoc_insertion_point(message:hw.trezor.messages.management.AuthenticityProofChunk)
+#[derive(PartialEq,Clone,Default,Debug)]
+pub struct AuthenticityProofChunk {
+ // message fields
+ // @@protoc_insertion_point(field:hw.trezor.messages.management.AuthenticityProofChunk.chunk)
+ pub chunk: ::std::option::Option<::std::vec::Vec<u8>>,
+ // special fields
+ // @@protoc_insertion_point(special_field:hw.trezor.messages.management.AuthenticityProofChunk.special_fields)
+ pub special_fields: ::protobuf::SpecialFields,
+}
+
+impl<'a> ::std::default::Default for &'a AuthenticityProofChunk {
+ fn default() -> &'a AuthenticityProofChunk {
+ <AuthenticityProofChunk as ::protobuf::Message>::default_instance()
+ }
+}
+
+impl AuthenticityProofChunk {
+ pub fn new() -> AuthenticityProofChunk {
+ ::std::default::Default::default()
+ }
+
+ // required bytes chunk = 1;
+
+ pub fn chunk(&self) -> &[u8] {
+ match self.chunk.as_ref() {
+ Some(v) => v,
+ None => &[],
+ }
+ }
+
+ pub fn clear_chunk(&mut self) {
+ self.chunk = ::std::option::Option::None;
+ }
+
+ pub fn has_chunk(&self) -> bool {
+ self.chunk.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_chunk(&mut self, v: ::std::vec::Vec<u8>) {
+ self.chunk = ::std::option::Option::Some(v);
+ }
+
+ // Mutable pointer to the field.
+ // If field is not initialized, it is initialized with default value first.
+ pub fn mut_chunk(&mut self) -> &mut ::std::vec::Vec<u8> {
+ if self.chunk.is_none() {
+ self.chunk = ::std::option::Option::Some(::std::vec::Vec::new());
+ }
+ self.chunk.as_mut().unwrap()
+ }
+
+ // Take field
+ pub fn take_chunk(&mut self) -> ::std::vec::Vec<u8> {
+ self.chunk.take().unwrap_or_else(|| ::std::vec::Vec::new())
+ }
+
+ fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
+ let mut fields = ::std::vec::Vec::with_capacity(1);
+ let mut oneofs = ::std::vec::Vec::with_capacity(0);
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "chunk",
+ |m: &AuthenticityProofChunk| { &m.chunk },
+ |m: &mut AuthenticityProofChunk| { &mut m.chunk },
+ ));
+ ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<AuthenticityProofChunk>(
+ "AuthenticityProofChunk",
+ fields,
+ oneofs,
+ )
+ }
+}
+
+impl ::protobuf::Message for AuthenticityProofChunk {
+ const NAME: &'static str = "AuthenticityProofChunk";
+
+ fn is_initialized(&self) -> bool {
+ if self.chunk.is_none() {
+ return false;
+ }
+ true
+ }
+
+ fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
+ while let Some(tag) = is.read_raw_tag_or_eof()? {
+ match tag {
+ 10 => {
+ self.chunk = ::std::option::Option::Some(is.read_bytes()?);
+ },
+ tag => {
+ ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
+ },
+ };
+ }
+ ::std::result::Result::Ok(())
+ }
+
+ // Compute sizes of nested messages
+ #[allow(unused_variables)]
+ fn compute_size(&self) -> u64 {
+ let mut my_size = 0;
+ if let Some(v) = self.chunk.as_ref() {
+ my_size += ::protobuf::rt::bytes_size(1, &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
+ }
+
+ fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
+ if let Some(v) = self.chunk.as_ref() {
+ os.write_bytes(1, v)?;
+ }
+ os.write_unknown_fields(self.special_fields.unknown_fields())?;
+ ::std::result::Result::Ok(())
+ }
+
+ fn special_fields(&self) -> &::protobuf::SpecialFields {
+ &self.special_fields
+ }
+
+ fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
+ &mut self.special_fields
+ }
+
+ fn new() -> AuthenticityProofChunk {
+ AuthenticityProofChunk::new()
+ }
+
+ fn clear(&mut self) {
+ self.chunk = ::std::option::Option::None;
+ self.special_fields.clear();
+ }
+
+ fn default_instance() -> &'static AuthenticityProofChunk {
+ static instance: AuthenticityProofChunk = AuthenticityProofChunk {
+ chunk: ::std::option::Option::None,
+ special_fields: ::protobuf::SpecialFields::new(),
+ };
+ &instance
+ }
+}
+
+impl ::protobuf::MessageFull for AuthenticityProofChunk {
+ fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
+ static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
+ descriptor.get(|| file_descriptor().message_by_package_relative_name("AuthenticityProofChunk").unwrap()).clone()
+ }
+}
+
+impl ::std::fmt::Display for AuthenticityProofChunk {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ ::protobuf::text_format::fmt(self, f)
+ }
+}
+
+impl ::protobuf::reflect::ProtobufValue for AuthenticityProofChunk {
+ type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
+}
+
// @@protoc_insertion_point(message:hw.trezor.messages.management.WipeDevice)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct WipeDevice {
@@ -12706,79 +13516,93 @@ static file_descriptor_proto_data: &'static [u8] = b"\
\x18\x01\x20\x02(\rR\x04size\"#\n\x07Entropy\x12\x18\n\x07entropy\x18\
\x01\x20\x02(\x0cR\x07entropy\"/\n\x0fGetFirmwareHash\x12\x1c\n\tchallen\
ge\x18\x01\x20\x01(\x0cR\tchallenge\"\"\n\x0cFirmwareHash\x12\x12\n\x04h\
- ash\x18\x01\x20\x02(\x0cR\x04hash\"2\n\x12AuthenticateDevice\x12\x1c\n\t\
- challenge\x18\x01\x20\x02(\x0cR\tchallenge\"\x9b\x02\n\x11AuthenticityPr\
- oof\x12/\n\x13optiga_certificates\x18\x01\x20\x03(\x0cR\x12optigaCertifi\
- cates\x12)\n\x10optiga_signature\x18\x02\x20\x02(\x0cR\x0foptigaSignatur\
- e\x12/\n\x13tropic_certificates\x18\x03\x20\x03(\x0cR\x12tropicCertifica\
- tes\x12)\n\x10tropic_signature\x18\x04\x20\x01(\x0cR\x0ftropicSignature\
- \x12)\n\x10mcu_certificates\x18\x05\x20\x03(\x0cR\x0fmcuCertificates\x12\
- #\n\rmcu_signature\x18\x06\x20\x01(\x0cR\x0cmcuSignature\"\x0c\n\nWipeDe\
- vice\"\xda\x02\n\nLoadDevice\x12\x1c\n\tmnemonics\x18\x01\x20\x03(\tR\tm\
- nemonics\x12\x10\n\x03pin\x18\x03\x20\x01(\tR\x03pin\x123\n\x15passphras\
- e_protection\x18\x04\x20\x01(\x08R\x14passphraseProtection\x12\x1e\n\x08\
- language\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(\x08\
- R\x0cskipChecksum\x12\x1f\n\x0bu2f_counter\x18\x08\x20\x01(\rR\nu2fCount\
- er\x12!\n\x0cneeds_backup\x18\t\x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\t\
- no_backup\x18\n\x20\x01(\x08R\x08noBackup\x12+\n\x11unfinished_backup\
- \x18\x0b\x20\x01(\x08R\x10unfinishedBackup\"\xf8\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\x05l\
- abel\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\nski\
- pBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\x08R\x08noBackup\x12Q\n\x0bb\
- ackup_type\x18\n\x20\x01(\x0e2).hw.trezor.messages.management.BackupType\
- :\x05Bip39R\nbackupType\x12#\n\rentropy_check\x18\x0b\x20\x01(\x08R\x0ce\
- ntropyCheck\x12Y\n\rbackup_method\x18\x0c\x20\x01(\x0e2+.hw.trezor.messa\
- ges.management.BackupMethod:\x07DisplayR\x0cbackupMethodJ\x04\x08\x01\
- \x10\x02\"\xc0\x02\n\x0cBackupDevice\x12'\n\x0fgroup_threshold\x18\x01\
- \x20\x01(\rR\x0egroupThreshold\x12O\n\x06groups\x18\x02\x20\x03(\x0b27.h\
- w.trezor.messages.management.BackupDevice.Slip39GroupR\x06groups\x12Y\n\
- \rbackup_method\x18\x03\x20\x01(\x0e2+.hw.trezor.messages.management.Bac\
- kupMethod:\x07DisplayR\x0cbackupMethod\x1a[\n\x0bSlip39Group\x12)\n\x10m\
- ember_threshold\x18\x01\x20\x02(\rR\x0fmemberThreshold\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\x0bprevEntropy\"&\n\nEntropyAck\
- \x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\x13\n\x11Entrop\
- yCheckReady\"5\n\x14EntropyCheckContinue\x12\x1d\n\x06finish\x18\x01\x20\
- \x01(\x08:\x05falseR\x06finish\"\xdf\x04\n\x0eRecoveryDevice\x12\x1d\n\n\
- word_count\x18\x01\x20\x01(\rR\twordCount\x123\n\x15passphrase_protectio\
- n\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\x12j\n\x0cinput_method\x18\x08\x20\x01(\x0e2G.hw.trezor.messages.m\
- anagement.RecoveryDevice.RecoveryDeviceInputMethodR\x0binputMethod\x12\
- \x1f\n\x0bu2f_counter\x18\t\x20\x01(\rR\nu2fCounter\x12O\n\x04type\x18\n\
- \x20\x01(\x0e2+.hw.trezor.messages.management.RecoveryType:\x0eNormalRec\
- overyR\x04type\x12P\n\rbackup_method\x18\x0b\x20\x01(\x0e2+.hw.trezor.me\
- ssages.management.BackupMethodR\x0cbackupMethod\";\n\x19RecoveryDeviceIn\
- putMethod\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\"\xeb\x01\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\"5\n\x0bBootCommand\x12\x11\n\r\
- STOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UPGRADE\x10\x01J\x04\x08\x03\
- \x10\x04\"\n\n\x08GetNonce\"\x1d\n\x05Nonce\x12\x14\n\x05nonce\x18\x01\
- \x20\x02(\x0cR\x05nonce\";\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\rSetBrig\
- htness\x12\x14\n\x05value\x18\x01\x20\x01(\rR\x05value\"\x11\n\x0fGetSer\
- ialNumber\"3\n\x0cSerialNumber\x12#\n\rserial_number\x18\x01\x20\x02(\tR\
+ ash\x18\x01\x20\x02(\x0cR\x04hash\"J\n\x12AuthenticateDevice\x12\x1c\n\t\
+ challenge\x18\x01\x20\x02(\x0cR\tchallenge\x12\x16\n\x06stream\x18\x02\
+ \x20\x01(\x08R\x06stream\"\x9b\x02\n\x11AuthenticityProof\x12/\n\x13opti\
+ ga_certificates\x18\x01\x20\x03(\x0cR\x12optigaCertificates\x12)\n\x10op\
+ tiga_signature\x18\x02\x20\x02(\x0cR\x0foptigaSignature\x12/\n\x13tropic\
+ _certificates\x18\x03\x20\x03(\x0cR\x12tropicCertificates\x12)\n\x10trop\
+ ic_signature\x18\x04\x20\x01(\x0cR\x0ftropicSignature\x12)\n\x10mcu_cert\
+ ificates\x18\x05\x20\x03(\x0cR\x0fmcuCertificates\x12#\n\rmcu_signature\
+ \x18\x06\x20\x01(\x0cR\x0cmcuSignature\"\xa0\x02\n\x16AuthenticityProofS\
+ izes\x12/\n\x13optiga_certificates\x18\x01\x20\x03(\rR\x12optigaCertific\
+ ates\x12)\n\x10optiga_signature\x18\x02\x20\x02(\rR\x0foptigaSignature\
+ \x12/\n\x13tropic_certificates\x18\x03\x20\x03(\rR\x12tropicCertificates\
+ \x12)\n\x10tropic_signature\x18\x04\x20\x01(\rR\x0ftropicSignature\x12)\
+ \n\x10mcu_certificates\x18\x05\x20\x03(\rR\x0fmcuCertificates\x12#\n\rmc\
+ u_signature\x18\x06\x20\x01(\rR\x0cmcuSignature\"\x86\x02\n\x19GetAuthen\
+ ticityProofChunk\x12m\n\nproof_type\x18\x01\x20\x01(\x0e2N.hw.trezor.mes\
+ sages.management.GetAuthenticityProofChunk.AuthenticityProofTypeR\tproof\
+ Type\x12\x14\n\x05index\x18\x02\x20\x01(\rR\x05index\x12\x16\n\x06offset\
+ \x18\x03\x20\x02(\rR\x06offset\x12\x12\n\x04size\x18\x04\x20\x02(\rR\x04\
+ size\"8\n\x15AuthenticityProofType\x12\n\n\x06OPTIGA\x10\0\x12\n\n\x06TR\
+ OPIC\x10\x01\x12\x07\n\x03MCU\x10\x02\".\n\x16AuthenticityProofChunk\x12\
+ \x14\n\x05chunk\x18\x01\x20\x02(\x0cR\x05chunk\"\x0c\n\nWipeDevice\"\xda\
+ \x02\n\nLoadDevice\x12\x1c\n\tmnemonics\x18\x01\x20\x03(\tR\tmnemonics\
+ \x12\x10\n\x03pin\x18\x03\x20\x01(\tR\x03pin\x123\n\x15passphrase_protec\
+ tion\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\x0cski\
+ pChecksum\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_back\
+ up\x18\n\x20\x01(\x08R\x08noBackup\x12+\n\x11unfinished_backup\x18\x0b\
+ \x20\x01(\x08R\x10unfinishedBackup\"\xf8\x03\n\x0bResetDevice\x12\x1f\n\
+ \x08strength\x18\x02\x20\x01(\r:\x03256R\x08strength\x123\n\x15passphras\
+ e_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\x05label\x12\x1f\n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fC\
+ ounter\x12\x1f\n\x0bskip_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:\x05Bip39\
+ R\nbackupType\x12#\n\rentropy_check\x18\x0b\x20\x01(\x08R\x0centropyChec\
+ k\x12Y\n\rbackup_method\x18\x0c\x20\x01(\x0e2+.hw.trezor.messages.manage\
+ ment.BackupMethod:\x07DisplayR\x0cbackupMethodJ\x04\x08\x01\x10\x02\"\
+ \xc0\x02\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\x12Y\n\rbackup_meth\
+ od\x18\x03\x20\x01(\x0e2+.hw.trezor.messages.management.BackupMethod:\
+ \x07DisplayR\x0cbackupMethod\x1a[\n\x0bSlip39Group\x12)\n\x10member_thre\
+ shold\x18\x01\x20\x02(\rR\x0fmemberThreshold\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_en\
+ tropy\x18\x02\x20\x01(\x0cR\x0bprevEntropy\"&\n\nEntropyAck\x12\x18\n\
+ \x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\x13\n\x11EntropyCheckRead\
+ y\"5\n\x14EntropyCheckContinue\x12\x1d\n\x06finish\x18\x01\x20\x01(\x08:\
+ \x05falseR\x06finish\"\xdf\x04\n\x0eRecoveryDevice\x12\x1d\n\nword_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\x05labe\
+ l\x12)\n\x10enforce_wordlist\x18\x06\x20\x01(\x08R\x0fenforceWordlist\
+ \x12j\n\x0cinput_method\x18\x08\x20\x01(\x0e2G.hw.trezor.messages.manage\
+ ment.RecoveryDevice.RecoveryDeviceInputMethodR\x0binputMethod\x12\x1f\n\
+ \x0bu2f_counter\x18\t\x20\x01(\rR\nu2fCounter\x12O\n\x04type\x18\n\x20\
+ \x01(\x0e2+.hw.trezor.messages.management.RecoveryType:\x0eNormalRecover\
+ yR\x04type\x12P\n\rbackup_method\x18\x0b\x20\x01(\x0e2+.hw.trezor.messag\
+ es.management.BackupMethodR\x0cbackupMethod\";\n\x19RecoveryDeviceInputM\
+ ethod\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.WordRequestTypeR\
+ \x04type\"f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plain\x10\
+ \0\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordRequest\
+ Type_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\x0eNextU2FCou\
+ nter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\n\
+ \x0fDoPreauthorized\"\x16\n\x14PreauthorizedRequest\"\x15\n\x13CancelAut\
+ horization\"\xeb\x01\n\x12RebootToBootloader\x12o\n\x0cboot_command\x18\
+ \x01\x20\x01(\x0e2=.hw.trezor.messages.management.RebootToBootloader.Boo\
+ tCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\n\x0ffirmware_header\x18\
+ \x02\x20\x01(\x0cR\x0efirmwareHeader\"5\n\x0bBootCommand\x12\x11\n\rSTOP\
+ _AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UPGRADE\x10\x01J\x04\x08\x03\x10\
+ \x04\"\n\n\x08GetNonce\"\x1d\n\x05Nonce\x12\x14\n\x05nonce\x18\x01\x20\
+ \x02(\x0cR\x05nonce\";\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\"\x11\n\x0fGetSeria\
+ lNumber\"3\n\x0cSerialNumber\x12#\n\rserial_number\x18\x01\x20\x02(\tR\
\x0cserialNumber*\x99\x01\n\nBackupType\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_Extendabl\
@@ -12810,7 +13634,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
let mut deps = ::std::vec::Vec::with_capacity(1);
deps.push(super::options::file_descriptor().clone());
- let mut messages = ::std::vec::Vec::with_capacity(50);
+ let mut messages = ::std::vec::Vec::with_capacity(53);
messages.push(Initialize::generated_message_descriptor_data());
messages.push(GetFeatures::generated_message_descriptor_data());
messages.push(Features::generated_message_descriptor_data());
@@ -12833,6 +13657,9 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
messages.push(FirmwareHash::generated_message_descriptor_data());
messages.push(AuthenticateDevice::generated_message_descriptor_data());
messages.push(AuthenticityProof::generated_message_descriptor_data());
+ messages.push(AuthenticityProofSizes::generated_message_descriptor_data());
+ messages.push(GetAuthenticityProofChunk::generated_message_descriptor_data());
+ messages.push(AuthenticityProofChunk::generated_message_descriptor_data());
messages.push(WipeDevice::generated_message_descriptor_data());
messages.push(LoadDevice::generated_message_descriptor_data());
messages.push(ResetDevice::generated_message_descriptor_data());
@@ -12861,7 +13688,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
messages.push(GetSerialNumber::generated_message_descriptor_data());
messages.push(SerialNumber::generated_message_descriptor_data());
messages.push(backup_device::Slip39Group::generated_message_descriptor_data());
- let mut enums = ::std::vec::Vec::with_capacity(13);
+ let mut enums = ::std::vec::Vec::with_capacity(14);
enums.push(BackupType::generated_enum_descriptor_data());
enums.push(BackupMethod::generated_enum_descriptor_data());
enums.push(SafetyCheckLevel::generated_enum_descriptor_data());
@@ -12872,6 +13699,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
enums.push(features::RecoveryStatus::generated_enum_descriptor_data());
enums.push(features::Capability::generated_enum_descriptor_data());
enums.push(sd_protect::SdProtectOperationType::generated_enum_descriptor_data());
+ enums.push(get_authenticity_proof_chunk::AuthenticityProofType::generated_enum_descriptor_data());
enums.push(recovery_device::RecoveryDeviceInputMethod::generated_enum_descriptor_data());
enums.push(word_request::WordRequestType::generated_enum_descriptor_data());
enums.push(reboot_to_bootloader::BootCommand::generated_enum_descriptor_data());
Why this scored 21/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.