From 95c553569db3a9683e4693206625ac19648e83ea Mon Sep 17 00:00:00 2001 From: M1nd3r Date: Thu, 30 Jan 2025 12:06:00 +0100 Subject: [PATCH] chore: add DebugLinkPairingInfo [no changelog] --- common/protob/messages-debug.proto | 28 +- common/protob/messages.proto | 2 + core/src/apps/debug/__init__.py | 85 +- core/src/apps/thp/pairing.py | 3 +- core/src/trezor/enums/MessageType.py | 2 + core/src/trezor/enums/__init__.py | 2 + core/src/trezor/messages.py | 48 +- core/src/trezor/wire/thp/pairing_context.py | 9 +- legacy/firmware/protob/messages-debug.options | 5 - python/src/trezorlib/debuglink.py | 23 +- python/src/trezorlib/messages.py | 60 +- rust/trezor-client/src/messages/generated.rs | 2 + .../src/protos/generated/messages.rs | 644 +++++++------ .../src/protos/generated/messages_debug.rs | 901 +++++++++++++----- tests/device_tests/thp/test_thp.py | 15 +- 15 files changed, 1192 insertions(+), 637 deletions(-) diff --git a/common/protob/messages-debug.proto b/common/protob/messages-debug.proto index 357496f37bb..4486905d75e 100644 --- a/common/protob/messages-debug.proto +++ b/common/protob/messages-debug.proto @@ -110,8 +110,6 @@ message DebugLinkGetState { // trezor-core only - wait until current layout changes // changed in 2.6.4: multiple wait types instead of true/false. optional DebugWaitType wait_layout = 3 [default=IMMEDIATE]; - // THP only - it is used to get information from specified channel - optional bytes thp_channel_id=4; } /** @@ -132,9 +130,29 @@ message DebugLinkState { optional uint32 reset_word_pos = 11; // index of mnemonic word the device is expecting during ResetDevice workflow optional management.BackupType mnemonic_type = 12; // current mnemonic type (BIP-39/SLIP-39) repeated string tokens = 13; // current layout represented as a list of string tokens - optional uint32 thp_pairing_code_entry_code = 14; - optional bytes thp_pairing_code_qr_code = 15; - optional bytes thp_pairing_code_nfc = 16; +} + +/** + * Request: Computer asks for device pairing info + * @start + * @next DebugLinkPairingInfo + */ + message DebugLinkGetPairingInfo { + optional bytes channel_id = 1; // ID of the THP channel to get pairing info from + optional bytes handshake_hash = 2; // handshake hash of the THP channel + optional bytes nfc_secret_host = 3; // host's NFC secret (In case of NFC pairing) +} + + /** + * Response: Device pairing info + * @end + */ + message DebugLinkPairingInfo { + optional bytes channel_id = 1; // ID of the THP channel the pairing info is from + optional bytes handshake_hash = 2; // handshake hash of the THP channel + optional uint32 code_entry_code = 3; // CodeEntry pairing code + optional bytes code_qr_code = 4; // QrCode pairing code + optional bytes nfc_secret_trezor = 5; // NFC secret used in NFC pairing } /** diff --git a/common/protob/messages.proto b/common/protob/messages.proto index ae7fdfda599..f807d8c477b 100644 --- a/common/protob/messages.proto +++ b/common/protob/messages.proto @@ -134,6 +134,8 @@ enum MessageType { MessageType_DebugLinkWatchLayout = 9006 [(bitcoin_only) = true, (wire_debug_in) = true]; MessageType_DebugLinkResetDebugEvents = 9007 [(bitcoin_only) = true, (wire_debug_in) = true]; MessageType_DebugLinkOptigaSetSecMax = 9008 [(bitcoin_only) = true, (wire_debug_in) = true]; + MessageType_DebugLinkGetPairingInfo = 9009 [(bitcoin_only) = true, (wire_debug_in) = true]; + MessageType_DebugLinkPairingInfo = 9010 [(bitcoin_only) = true, (wire_debug_out) = true]; // Ethereum MessageType_EthereumGetPublicKey = 450 [(wire_in) = true]; diff --git a/core/src/apps/debug/__init__.py b/core/src/apps/debug/__init__.py index df21c5e750d..56fc3dfd19d 100644 --- a/core/src/apps/debug/__init__.py +++ b/core/src/apps/debug/__init__.py @@ -24,8 +24,10 @@ from trezor.messages import ( DebugLinkDecision, DebugLinkEraseSdCard, + DebugLinkGetPairingInfo, DebugLinkGetState, DebugLinkOptigaSetSecMax, + DebugLinkPairingInfo, DebugLinkRecordScreen, DebugLinkReseedRandom, DebugLinkState, @@ -249,11 +251,7 @@ async def dispatch_DebugLinkDecision( # If no exception was raised, the layout did not shut down. That means that it # just updated itself. The update is already live for the caller to retrieve. - def _state( - thp_pairing_code_entry_code: int | None = None, - thp_pairing_code_qr_code: bytes | None = None, - thp_pairing_code_nfc: bytes | None = None, - ) -> DebugLinkState: + def _state() -> DebugLinkState: from trezor.messages import DebugLinkState from apps.common import mnemonic, passphrase @@ -272,46 +270,50 @@ def callback(*args: str) -> None: passphrase_protection=passphrase.is_enabled(), reset_entropy=storage.reset_internal_entropy, tokens=tokens, - thp_pairing_code_entry_code=thp_pairing_code_entry_code, - thp_pairing_code_qr_code=thp_pairing_code_qr_code, - thp_pairing_code_nfc=thp_pairing_code_nfc, + ) + + async def dispatch_DebugLinkGetPairingInfo( + msg: DebugLinkGetPairingInfo, + ) -> DebugLinkPairingInfo | None: + if not utils.USE_THP: + raise RuntimeError("Trezor does not support THP") + if msg.channel_id is None: + raise RuntimeError("Invalid DebugLinkGetPairingInfo message") + + from trezor.wire.thp.channel import Channel + from trezor.wire.thp.pairing_context import PairingContext + from trezor.wire.thp.thp_main import _CHANNELS + + channel_id = int.from_bytes(msg.channel_id, "big") + channel: Channel | None = None + ctx: PairingContext | None = None + try: + channel = _CHANNELS[channel_id] + ctx = channel.connection_context + except KeyError: + pass + + if ctx is None or not isinstance(ctx, PairingContext): + raise RuntimeError("Trezor is not in pairing mode") + + ctx.nfc_secret_host = msg.nfc_secret_host + ctx.handshake_hash_host = msg.handshake_hash + from trezor.messages import DebugLinkPairingInfo + + return DebugLinkPairingInfo( + channel_id=ctx.channel_id, + handshake_hash=ctx.channel_ctx.get_handshake_hash(), + code_entry_code=ctx.display_data.code_code_entry, + code_qr_code=ctx.display_data.code_qr_code, + nfc_secret_trezor=ctx.nfc_secret, ) async def dispatch_DebugLinkGetState( msg: DebugLinkGetState, ) -> DebugLinkState | None: - thp_pairing_code_entry_code: int | None = None - thp_pairing_code_qr_code: bytes | None = None - thp_pairing_code_nfc: bytes | None = None - if utils.USE_THP and msg.thp_channel_id is not None: - channel_id = int.from_bytes(msg.thp_channel_id, "big") - - from trezor.wire.thp.channel import Channel - from trezor.wire.thp.pairing_context import PairingContext - from trezor.wire.thp.thp_main import _CHANNELS - - channel: Channel | None = None - ctx: PairingContext | None = None - try: - channel = _CHANNELS[channel_id] - ctx = channel.connection_context - except KeyError: - pass - if ctx is not None and isinstance(ctx, PairingContext): - thp_pairing_code_entry_code = ctx.display_data.code_code_entry - thp_pairing_code_qr_code = ctx.display_data.code_qr_code - thp_pairing_code_nfc = ctx.display_data.code_nfc - # if msg.host_nfc_secret is not None: - # ctx.host_nfc_secret = msg.host_nfc_secret - if msg.wait_layout == DebugWaitType.IMMEDIATE: - return _state( - thp_pairing_code_entry_code, - thp_pairing_code_qr_code, - thp_pairing_code_nfc, - ) - + return _state() assert DEBUG_CONTEXT is not None if msg.wait_layout == DebugWaitType.NEXT_LAYOUT: layout_change_box.clear() @@ -321,11 +323,7 @@ async def dispatch_DebugLinkGetState( if not layout_is_ready(): return await return_layout_change(DEBUG_CONTEXT, detect_deadlock=True) else: - return _state( - thp_pairing_code_entry_code, - thp_pairing_code_qr_code, - thp_pairing_code_nfc, - ) + return _state() async def dispatch_DebugLinkRecordScreen(msg: DebugLinkRecordScreen) -> Success: if msg.target_directory: @@ -466,6 +464,7 @@ async def handle_session(iface: WireInterface) -> None: WORKFLOW_HANDLERS: dict[int, Handler] = { MessageType.DebugLinkDecision: dispatch_DebugLinkDecision, MessageType.DebugLinkGetState: dispatch_DebugLinkGetState, + MessageType.DebugLinkGetPairingInfo: dispatch_DebugLinkGetPairingInfo, MessageType.DebugLinkReseedRandom: dispatch_DebugLinkReseedRandom, MessageType.DebugLinkRecordScreen: dispatch_DebugLinkRecordScreen, MessageType.DebugLinkEraseSdCard: dispatch_DebugLinkEraseSdCard, diff --git a/core/src/apps/thp/pairing.py b/core/src/apps/thp/pairing.py index 14be4e9b79b..367c85f8e28 100644 --- a/core/src/apps/thp/pairing.py +++ b/core/src/apps/thp/pairing.py @@ -310,7 +310,7 @@ async def _handle_qr_code_tag( hexlify(ctx.display_data.code_qr_code).decode(), ) # TODO remove after testing print( - "expected secret:", hexlify(ctx.qr_code_secret).decode() + "expected secret:", hexlify(ctx.qr_code_secret or b"").decode() ) # TODO remove after testing raise ThpError("Unexpected QR Code Tag") @@ -329,6 +329,7 @@ async def _handle_nfc_tag( assert isinstance(message, ThpNfcTagHost) sha_ctx = sha256(ThpPairingMethod.NFC.to_bytes(1, "big")) sha_ctx.update(ctx.channel_ctx.get_handshake_hash()) + assert ctx.nfc_secret is not None sha_ctx.update(ctx.nfc_secret) expected_tag = sha_ctx.digest() if expected_tag != message.tag: diff --git a/core/src/trezor/enums/MessageType.py b/core/src/trezor/enums/MessageType.py index ed569795b0b..1a955fbcb7f 100644 --- a/core/src/trezor/enums/MessageType.py +++ b/core/src/trezor/enums/MessageType.py @@ -97,6 +97,8 @@ DebugLinkWatchLayout = 9006 DebugLinkResetDebugEvents = 9007 DebugLinkOptigaSetSecMax = 9008 +DebugLinkGetPairingInfo = 9009 +DebugLinkPairingInfo = 9010 BenchmarkListNames = 9100 BenchmarkNames = 9101 BenchmarkRun = 9102 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index 414f9ad2db8..c39574773f6 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -477,6 +477,8 @@ class MessageType(IntEnum): DebugLinkWatchLayout = 9006 DebugLinkResetDebugEvents = 9007 DebugLinkOptigaSetSecMax = 9008 + DebugLinkGetPairingInfo = 9009 + DebugLinkPairingInfo = 9010 EthereumGetPublicKey = 450 EthereumPublicKey = 451 EthereumGetAddress = 56 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index 77ba5851172..40605bc34fc 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -2900,13 +2900,11 @@ def is_type_of(cls, msg: Any) -> TypeGuard["DebugLinkRecordScreen"]: class DebugLinkGetState(protobuf.MessageType): wait_layout: "DebugWaitType" - thp_channel_id: "bytes | None" def __init__( self, *, wait_layout: "DebugWaitType | None" = None, - thp_channel_id: "bytes | None" = None, ) -> None: pass @@ -2928,9 +2926,6 @@ class DebugLinkState(protobuf.MessageType): reset_word_pos: "int | None" mnemonic_type: "BackupType | None" tokens: "list[str]" - thp_pairing_code_entry_code: "int | None" - thp_pairing_code_qr_code: "bytes | None" - thp_pairing_code_nfc: "bytes | None" def __init__( self, @@ -2948,9 +2943,6 @@ def __init__( recovery_word_pos: "int | None" = None, reset_word_pos: "int | None" = None, mnemonic_type: "BackupType | None" = None, - thp_pairing_code_entry_code: "int | None" = None, - thp_pairing_code_qr_code: "bytes | None" = None, - thp_pairing_code_nfc: "bytes | None" = None, ) -> None: pass @@ -2958,6 +2950,46 @@ def __init__( def is_type_of(cls, msg: Any) -> TypeGuard["DebugLinkState"]: return isinstance(msg, cls) + class DebugLinkGetPairingInfo(protobuf.MessageType): + channel_id: "bytes | None" + handshake_hash: "bytes | None" + nfc_secret_host: "bytes | None" + + def __init__( + self, + *, + channel_id: "bytes | None" = None, + handshake_hash: "bytes | None" = None, + nfc_secret_host: "bytes | None" = None, + ) -> None: + pass + + @classmethod + def is_type_of(cls, msg: Any) -> TypeGuard["DebugLinkGetPairingInfo"]: + return isinstance(msg, cls) + + class DebugLinkPairingInfo(protobuf.MessageType): + channel_id: "bytes | None" + handshake_hash: "bytes | None" + code_entry_code: "int | None" + code_qr_code: "bytes | None" + nfc_secret_trezor: "bytes | None" + + def __init__( + self, + *, + channel_id: "bytes | None" = None, + handshake_hash: "bytes | None" = None, + code_entry_code: "int | None" = None, + code_qr_code: "bytes | None" = None, + nfc_secret_trezor: "bytes | None" = None, + ) -> None: + pass + + @classmethod + def is_type_of(cls, msg: Any) -> TypeGuard["DebugLinkPairingInfo"]: + return isinstance(msg, cls) + class DebugLinkStop(protobuf.MessageType): @classmethod diff --git a/core/src/trezor/wire/thp/pairing_context.py b/core/src/trezor/wire/thp/pairing_context.py index 34ff3929d5b..3b45dcb9ddc 100644 --- a/core/src/trezor/wire/thp/pairing_context.py +++ b/core/src/trezor/wire/thp/pairing_context.py @@ -80,11 +80,16 @@ def __init__(self, channel_ctx: Channel) -> None: super().__init__(channel_ctx.iface, channel_ctx.channel_id) self.channel_ctx: Channel = channel_ctx self.incoming_message = loop.mailbox() - self.nfc_secret: bytes - self.qr_code_secret: bytes + self.nfc_secret: bytes | None = None + self.qr_code_secret: bytes | None = None self.code_entry_secret: bytes | None = None + self.selected_method: ThpPairingMethod + # The 2 following attributes are important for NFC pairing + self.nfc_secret_host: bytes | None = None + self.handshake_hash_host: bytes | None = None + self.display_data: PairingDisplayData = PairingDisplayData() self.cpace: Cpace self.host_name: str diff --git a/legacy/firmware/protob/messages-debug.options b/legacy/firmware/protob/messages-debug.options index f57ff9e14ef..793413e96ba 100644 --- a/legacy/firmware/protob/messages-debug.options +++ b/legacy/firmware/protob/messages-debug.options @@ -2,8 +2,6 @@ DebugLinkDecision.input max_size:33 DebugLinkDecision.x type:FT_IGNORE DebugLinkDecision.y type:FT_IGNORE -DebugLinkGetState.thp_channel_id type:FT_IGNORE - DebugLinkState.layout max_size:1024 DebugLinkState.pin max_size:51 DebugLinkState.matrix max_size:10 @@ -12,9 +10,6 @@ DebugLinkState.reset_word max_size:12 DebugLinkState.reset_entropy max_size:128 DebugLinkState.recovery_fake_word max_size:12 DebugLinkState.tokens type:FT_IGNORE -DebugLinkState.thp_pairing_code_entry_code type:FT_IGNORE -DebugLinkState.thp_pairing_code_qr_code type:FT_IGNORE -DebugLinkState.thp_pairing_code_nfc type:FT_IGNORE DebugLinkLog.bucket max_size:33 DebugLinkLog.text max_size:256 diff --git a/python/src/trezorlib/debuglink.py b/python/src/trezorlib/debuglink.py index ac04d7da7ea..db4531885b5 100644 --- a/python/src/trezorlib/debuglink.py +++ b/python/src/trezorlib/debuglink.py @@ -539,7 +539,6 @@ def _call(self, msg: protobuf.MessageType) -> t.Any: def state( self, wait_type: DebugWaitType | None = None, - thp_channel_id: bytes | None = None, ) -> messages.DebugLinkState: if wait_type is None: wait_type = ( @@ -547,13 +546,27 @@ def state( if self.has_global_layout else DebugWaitType.IMMEDIATE ) + result = self._call(messages.DebugLinkGetState(wait_layout=wait_type)) + while not isinstance(result, (messages.Failure, messages.DebugLinkState)): + result = self._read() + if isinstance(result, messages.Failure): + raise TrezorFailure(result) + return result + + def pairing_info( + self, + thp_channel_id: bytes | None = None, + handshake_hash: bytes | None = None, + nfc_secret_host: bytes | None = None, + ) -> messages.DebugLinkPairingInfo: result = self._call( - messages.DebugLinkGetState( - wait_layout=wait_type, - thp_channel_id=thp_channel_id, + messages.DebugLinkGetPairingInfo( + channel_id=thp_channel_id, + handshake_hash=handshake_hash, + nfc_secret_host=nfc_secret_host, ) ) - while not isinstance(result, (messages.Failure, messages.DebugLinkState)): + while not isinstance(result, (messages.Failure, messages.DebugLinkPairingInfo)): result = self._read() if isinstance(result, messages.Failure): raise TrezorFailure(result) diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 0e7de6b7a67..0980cff73cd 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -532,6 +532,8 @@ class MessageType(IntEnum): DebugLinkWatchLayout = 9006 DebugLinkResetDebugEvents = 9007 DebugLinkOptigaSetSecMax = 9008 + DebugLinkGetPairingInfo = 9009 + DebugLinkPairingInfo = 9010 EthereumGetPublicKey = 450 EthereumPublicKey = 451 EthereumGetAddress = 56 @@ -4168,7 +4170,6 @@ class DebugLinkGetState(protobuf.MessageType): 1: protobuf.Field("wait_word_list", "bool", repeated=False, required=False, default=None), 2: protobuf.Field("wait_word_pos", "bool", repeated=False, required=False, default=None), 3: protobuf.Field("wait_layout", "DebugWaitType", repeated=False, required=False, default=DebugWaitType.IMMEDIATE), - 4: protobuf.Field("thp_channel_id", "bytes", repeated=False, required=False, default=None), } def __init__( @@ -4177,12 +4178,10 @@ def __init__( wait_word_list: Optional["bool"] = None, wait_word_pos: Optional["bool"] = None, wait_layout: Optional["DebugWaitType"] = DebugWaitType.IMMEDIATE, - thp_channel_id: Optional["bytes"] = None, ) -> None: self.wait_word_list = wait_word_list self.wait_word_pos = wait_word_pos self.wait_layout = wait_layout - self.thp_channel_id = thp_channel_id class DebugLinkState(protobuf.MessageType): @@ -4201,9 +4200,6 @@ class DebugLinkState(protobuf.MessageType): 11: protobuf.Field("reset_word_pos", "uint32", repeated=False, required=False, default=None), 12: protobuf.Field("mnemonic_type", "BackupType", repeated=False, required=False, default=None), 13: protobuf.Field("tokens", "string", repeated=True, required=False, default=None), - 14: protobuf.Field("thp_pairing_code_entry_code", "uint32", repeated=False, required=False, default=None), - 15: protobuf.Field("thp_pairing_code_qr_code", "bytes", repeated=False, required=False, default=None), - 16: protobuf.Field("thp_pairing_code_nfc", "bytes", repeated=False, required=False, default=None), } def __init__( @@ -4222,9 +4218,6 @@ def __init__( recovery_word_pos: Optional["int"] = None, reset_word_pos: Optional["int"] = None, mnemonic_type: Optional["BackupType"] = None, - thp_pairing_code_entry_code: Optional["int"] = None, - thp_pairing_code_qr_code: Optional["bytes"] = None, - thp_pairing_code_nfc: Optional["bytes"] = None, ) -> None: self.tokens: Sequence["str"] = tokens if tokens is not None else [] self.layout = layout @@ -4239,9 +4232,52 @@ def __init__( self.recovery_word_pos = recovery_word_pos self.reset_word_pos = reset_word_pos self.mnemonic_type = mnemonic_type - self.thp_pairing_code_entry_code = thp_pairing_code_entry_code - self.thp_pairing_code_qr_code = thp_pairing_code_qr_code - self.thp_pairing_code_nfc = thp_pairing_code_nfc + + +class DebugLinkGetPairingInfo(protobuf.MessageType): + MESSAGE_WIRE_TYPE = 9009 + FIELDS = { + 1: protobuf.Field("channel_id", "bytes", repeated=False, required=False, default=None), + 2: protobuf.Field("handshake_hash", "bytes", repeated=False, required=False, default=None), + 3: protobuf.Field("nfc_secret_host", "bytes", repeated=False, required=False, default=None), + } + + def __init__( + self, + *, + channel_id: Optional["bytes"] = None, + handshake_hash: Optional["bytes"] = None, + nfc_secret_host: Optional["bytes"] = None, + ) -> None: + self.channel_id = channel_id + self.handshake_hash = handshake_hash + self.nfc_secret_host = nfc_secret_host + + +class DebugLinkPairingInfo(protobuf.MessageType): + MESSAGE_WIRE_TYPE = 9010 + FIELDS = { + 1: protobuf.Field("channel_id", "bytes", repeated=False, required=False, default=None), + 2: protobuf.Field("handshake_hash", "bytes", repeated=False, required=False, default=None), + 3: protobuf.Field("code_entry_code", "uint32", repeated=False, required=False, default=None), + 4: protobuf.Field("code_qr_code", "bytes", repeated=False, required=False, default=None), + 5: protobuf.Field("nfc_secret_trezor", "bytes", repeated=False, required=False, default=None), + } + + def __init__( + self, + *, + channel_id: Optional["bytes"] = None, + handshake_hash: Optional["bytes"] = None, + code_entry_code: Optional["int"] = None, + code_qr_code: Optional["bytes"] = None, + nfc_secret_trezor: Optional["bytes"] = None, + ) -> None: + self.channel_id = channel_id + self.handshake_hash = handshake_hash + self.code_entry_code = code_entry_code + self.code_qr_code = code_qr_code + self.nfc_secret_trezor = nfc_secret_trezor class DebugLinkStop(protobuf.MessageType): diff --git a/rust/trezor-client/src/messages/generated.rs b/rust/trezor-client/src/messages/generated.rs index 551a1e92e22..ab956549368 100644 --- a/rust/trezor-client/src/messages/generated.rs +++ b/rust/trezor-client/src/messages/generated.rs @@ -82,6 +82,8 @@ trezor_message_impl! { DebugLinkWatchLayout => MessageType_DebugLinkWatchLayout, DebugLinkResetDebugEvents => MessageType_DebugLinkResetDebugEvents, DebugLinkOptigaSetSecMax => MessageType_DebugLinkOptigaSetSecMax, + DebugLinkGetPairingInfo => MessageType_DebugLinkGetPairingInfo, + DebugLinkPairingInfo => MessageType_DebugLinkPairingInfo, BenchmarkListNames => MessageType_BenchmarkListNames, BenchmarkNames => MessageType_BenchmarkNames, BenchmarkRun => MessageType_BenchmarkRun, diff --git a/rust/trezor-client/src/protos/generated/messages.rs b/rust/trezor-client/src/protos/generated/messages.rs index 0a265410a6c..109f6e52329 100644 --- a/rust/trezor-client/src/protos/generated/messages.rs +++ b/rust/trezor-client/src/protos/generated/messages.rs @@ -226,6 +226,10 @@ pub enum MessageType { MessageType_DebugLinkResetDebugEvents = 9007, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_DebugLinkOptigaSetSecMax) MessageType_DebugLinkOptigaSetSecMax = 9008, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_DebugLinkGetPairingInfo) + MessageType_DebugLinkGetPairingInfo = 9009, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_DebugLinkPairingInfo) + MessageType_DebugLinkPairingInfo = 9010, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_EthereumGetPublicKey) MessageType_EthereumGetPublicKey = 450, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_EthereumPublicKey) @@ -632,6 +636,8 @@ impl ::protobuf::Enum for MessageType { 9006 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkWatchLayout), 9007 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkResetDebugEvents), 9008 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkOptigaSetSecMax), + 9009 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkGetPairingInfo), + 9010 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkPairingInfo), 450 => ::std::option::Option::Some(MessageType::MessageType_EthereumGetPublicKey), 451 => ::std::option::Option::Some(MessageType::MessageType_EthereumPublicKey), 56 => ::std::option::Option::Some(MessageType::MessageType_EthereumGetAddress), @@ -885,6 +891,8 @@ impl ::protobuf::Enum for MessageType { "MessageType_DebugLinkWatchLayout" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkWatchLayout), "MessageType_DebugLinkResetDebugEvents" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkResetDebugEvents), "MessageType_DebugLinkOptigaSetSecMax" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkOptigaSetSecMax), + "MessageType_DebugLinkGetPairingInfo" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkGetPairingInfo), + "MessageType_DebugLinkPairingInfo" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkPairingInfo), "MessageType_EthereumGetPublicKey" => ::std::option::Option::Some(MessageType::MessageType_EthereumGetPublicKey), "MessageType_EthereumPublicKey" => ::std::option::Option::Some(MessageType::MessageType_EthereumPublicKey), "MessageType_EthereumGetAddress" => ::std::option::Option::Some(MessageType::MessageType_EthereumGetAddress), @@ -1137,6 +1145,8 @@ impl ::protobuf::Enum for MessageType { MessageType::MessageType_DebugLinkWatchLayout, MessageType::MessageType_DebugLinkResetDebugEvents, MessageType::MessageType_DebugLinkOptigaSetSecMax, + MessageType::MessageType_DebugLinkGetPairingInfo, + MessageType::MessageType_DebugLinkPairingInfo, MessageType::MessageType_EthereumGetPublicKey, MessageType::MessageType_EthereumPublicKey, MessageType::MessageType_EthereumGetAddress, @@ -1395,154 +1405,156 @@ impl ::protobuf::EnumFull for MessageType { MessageType::MessageType_DebugLinkWatchLayout => 96, MessageType::MessageType_DebugLinkResetDebugEvents => 97, MessageType::MessageType_DebugLinkOptigaSetSecMax => 98, - MessageType::MessageType_EthereumGetPublicKey => 99, - MessageType::MessageType_EthereumPublicKey => 100, - MessageType::MessageType_EthereumGetAddress => 101, - MessageType::MessageType_EthereumAddress => 102, - MessageType::MessageType_EthereumSignTx => 103, - MessageType::MessageType_EthereumSignTxEIP1559 => 104, - MessageType::MessageType_EthereumTxRequest => 105, - MessageType::MessageType_EthereumTxAck => 106, - MessageType::MessageType_EthereumSignMessage => 107, - MessageType::MessageType_EthereumVerifyMessage => 108, - MessageType::MessageType_EthereumMessageSignature => 109, - MessageType::MessageType_EthereumSignTypedData => 110, - MessageType::MessageType_EthereumTypedDataStructRequest => 111, - MessageType::MessageType_EthereumTypedDataStructAck => 112, - MessageType::MessageType_EthereumTypedDataValueRequest => 113, - MessageType::MessageType_EthereumTypedDataValueAck => 114, - MessageType::MessageType_EthereumTypedDataSignature => 115, - MessageType::MessageType_EthereumSignTypedHash => 116, - MessageType::MessageType_NEMGetAddress => 117, - MessageType::MessageType_NEMAddress => 118, - MessageType::MessageType_NEMSignTx => 119, - MessageType::MessageType_NEMSignedTx => 120, - MessageType::MessageType_NEMDecryptMessage => 121, - MessageType::MessageType_NEMDecryptedMessage => 122, - MessageType::MessageType_TezosGetAddress => 123, - MessageType::MessageType_TezosAddress => 124, - MessageType::MessageType_TezosSignTx => 125, - MessageType::MessageType_TezosSignedTx => 126, - MessageType::MessageType_TezosGetPublicKey => 127, - MessageType::MessageType_TezosPublicKey => 128, - MessageType::MessageType_StellarSignTx => 129, - MessageType::MessageType_StellarTxOpRequest => 130, - MessageType::MessageType_StellarGetAddress => 131, - MessageType::MessageType_StellarAddress => 132, - MessageType::MessageType_StellarCreateAccountOp => 133, - MessageType::MessageType_StellarPaymentOp => 134, - MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 135, - MessageType::MessageType_StellarManageSellOfferOp => 136, - MessageType::MessageType_StellarCreatePassiveSellOfferOp => 137, - MessageType::MessageType_StellarSetOptionsOp => 138, - MessageType::MessageType_StellarChangeTrustOp => 139, - MessageType::MessageType_StellarAllowTrustOp => 140, - MessageType::MessageType_StellarAccountMergeOp => 141, - MessageType::MessageType_StellarManageDataOp => 142, - MessageType::MessageType_StellarBumpSequenceOp => 143, - MessageType::MessageType_StellarManageBuyOfferOp => 144, - MessageType::MessageType_StellarPathPaymentStrictSendOp => 145, - MessageType::MessageType_StellarClaimClaimableBalanceOp => 146, - MessageType::MessageType_StellarSignedTx => 147, - MessageType::MessageType_CardanoGetPublicKey => 148, - MessageType::MessageType_CardanoPublicKey => 149, - MessageType::MessageType_CardanoGetAddress => 150, - MessageType::MessageType_CardanoAddress => 151, - MessageType::MessageType_CardanoTxItemAck => 152, - MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 153, - MessageType::MessageType_CardanoTxWitnessRequest => 154, - MessageType::MessageType_CardanoTxWitnessResponse => 155, - MessageType::MessageType_CardanoTxHostAck => 156, - MessageType::MessageType_CardanoTxBodyHash => 157, - MessageType::MessageType_CardanoSignTxFinished => 158, - MessageType::MessageType_CardanoSignTxInit => 159, - MessageType::MessageType_CardanoTxInput => 160, - MessageType::MessageType_CardanoTxOutput => 161, - MessageType::MessageType_CardanoAssetGroup => 162, - MessageType::MessageType_CardanoToken => 163, - MessageType::MessageType_CardanoTxCertificate => 164, - MessageType::MessageType_CardanoTxWithdrawal => 165, - MessageType::MessageType_CardanoTxAuxiliaryData => 166, - MessageType::MessageType_CardanoPoolOwner => 167, - MessageType::MessageType_CardanoPoolRelayParameters => 168, - MessageType::MessageType_CardanoGetNativeScriptHash => 169, - MessageType::MessageType_CardanoNativeScriptHash => 170, - MessageType::MessageType_CardanoTxMint => 171, - MessageType::MessageType_CardanoTxCollateralInput => 172, - MessageType::MessageType_CardanoTxRequiredSigner => 173, - MessageType::MessageType_CardanoTxInlineDatumChunk => 174, - MessageType::MessageType_CardanoTxReferenceScriptChunk => 175, - MessageType::MessageType_CardanoTxReferenceInput => 176, - MessageType::MessageType_RippleGetAddress => 177, - MessageType::MessageType_RippleAddress => 178, - MessageType::MessageType_RippleSignTx => 179, - MessageType::MessageType_RippleSignedTx => 180, - MessageType::MessageType_MoneroTransactionInitRequest => 181, - MessageType::MessageType_MoneroTransactionInitAck => 182, - MessageType::MessageType_MoneroTransactionSetInputRequest => 183, - MessageType::MessageType_MoneroTransactionSetInputAck => 184, - MessageType::MessageType_MoneroTransactionInputViniRequest => 185, - MessageType::MessageType_MoneroTransactionInputViniAck => 186, - MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 187, - MessageType::MessageType_MoneroTransactionAllInputsSetAck => 188, - MessageType::MessageType_MoneroTransactionSetOutputRequest => 189, - MessageType::MessageType_MoneroTransactionSetOutputAck => 190, - MessageType::MessageType_MoneroTransactionAllOutSetRequest => 191, - MessageType::MessageType_MoneroTransactionAllOutSetAck => 192, - MessageType::MessageType_MoneroTransactionSignInputRequest => 193, - MessageType::MessageType_MoneroTransactionSignInputAck => 194, - MessageType::MessageType_MoneroTransactionFinalRequest => 195, - MessageType::MessageType_MoneroTransactionFinalAck => 196, - MessageType::MessageType_MoneroKeyImageExportInitRequest => 197, - MessageType::MessageType_MoneroKeyImageExportInitAck => 198, - MessageType::MessageType_MoneroKeyImageSyncStepRequest => 199, - MessageType::MessageType_MoneroKeyImageSyncStepAck => 200, - MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 201, - MessageType::MessageType_MoneroKeyImageSyncFinalAck => 202, - MessageType::MessageType_MoneroGetAddress => 203, - MessageType::MessageType_MoneroAddress => 204, - MessageType::MessageType_MoneroGetWatchKey => 205, - MessageType::MessageType_MoneroWatchKey => 206, - MessageType::MessageType_DebugMoneroDiagRequest => 207, - MessageType::MessageType_DebugMoneroDiagAck => 208, - MessageType::MessageType_MoneroGetTxKeyRequest => 209, - MessageType::MessageType_MoneroGetTxKeyAck => 210, - MessageType::MessageType_MoneroLiveRefreshStartRequest => 211, - MessageType::MessageType_MoneroLiveRefreshStartAck => 212, - MessageType::MessageType_MoneroLiveRefreshStepRequest => 213, - MessageType::MessageType_MoneroLiveRefreshStepAck => 214, - MessageType::MessageType_MoneroLiveRefreshFinalRequest => 215, - MessageType::MessageType_MoneroLiveRefreshFinalAck => 216, - MessageType::MessageType_EosGetPublicKey => 217, - MessageType::MessageType_EosPublicKey => 218, - MessageType::MessageType_EosSignTx => 219, - MessageType::MessageType_EosTxActionRequest => 220, - MessageType::MessageType_EosTxActionAck => 221, - MessageType::MessageType_EosSignedTx => 222, - MessageType::MessageType_BinanceGetAddress => 223, - MessageType::MessageType_BinanceAddress => 224, - MessageType::MessageType_BinanceGetPublicKey => 225, - MessageType::MessageType_BinancePublicKey => 226, - MessageType::MessageType_BinanceSignTx => 227, - MessageType::MessageType_BinanceTxRequest => 228, - MessageType::MessageType_BinanceTransferMsg => 229, - MessageType::MessageType_BinanceOrderMsg => 230, - MessageType::MessageType_BinanceCancelMsg => 231, - MessageType::MessageType_BinanceSignedTx => 232, - MessageType::MessageType_WebAuthnListResidentCredentials => 233, - MessageType::MessageType_WebAuthnCredentials => 234, - MessageType::MessageType_WebAuthnAddResidentCredential => 235, - MessageType::MessageType_WebAuthnRemoveResidentCredential => 236, - MessageType::MessageType_SolanaGetPublicKey => 237, - MessageType::MessageType_SolanaPublicKey => 238, - MessageType::MessageType_SolanaGetAddress => 239, - MessageType::MessageType_SolanaAddress => 240, - MessageType::MessageType_SolanaSignTx => 241, - MessageType::MessageType_SolanaTxSignature => 242, - MessageType::MessageType_BenchmarkListNames => 243, - MessageType::MessageType_BenchmarkNames => 244, - MessageType::MessageType_BenchmarkRun => 245, - MessageType::MessageType_BenchmarkResult => 246, + MessageType::MessageType_DebugLinkGetPairingInfo => 99, + MessageType::MessageType_DebugLinkPairingInfo => 100, + MessageType::MessageType_EthereumGetPublicKey => 101, + MessageType::MessageType_EthereumPublicKey => 102, + MessageType::MessageType_EthereumGetAddress => 103, + MessageType::MessageType_EthereumAddress => 104, + MessageType::MessageType_EthereumSignTx => 105, + MessageType::MessageType_EthereumSignTxEIP1559 => 106, + MessageType::MessageType_EthereumTxRequest => 107, + MessageType::MessageType_EthereumTxAck => 108, + MessageType::MessageType_EthereumSignMessage => 109, + MessageType::MessageType_EthereumVerifyMessage => 110, + MessageType::MessageType_EthereumMessageSignature => 111, + MessageType::MessageType_EthereumSignTypedData => 112, + MessageType::MessageType_EthereumTypedDataStructRequest => 113, + MessageType::MessageType_EthereumTypedDataStructAck => 114, + MessageType::MessageType_EthereumTypedDataValueRequest => 115, + MessageType::MessageType_EthereumTypedDataValueAck => 116, + MessageType::MessageType_EthereumTypedDataSignature => 117, + MessageType::MessageType_EthereumSignTypedHash => 118, + MessageType::MessageType_NEMGetAddress => 119, + MessageType::MessageType_NEMAddress => 120, + MessageType::MessageType_NEMSignTx => 121, + MessageType::MessageType_NEMSignedTx => 122, + MessageType::MessageType_NEMDecryptMessage => 123, + MessageType::MessageType_NEMDecryptedMessage => 124, + MessageType::MessageType_TezosGetAddress => 125, + MessageType::MessageType_TezosAddress => 126, + MessageType::MessageType_TezosSignTx => 127, + MessageType::MessageType_TezosSignedTx => 128, + MessageType::MessageType_TezosGetPublicKey => 129, + MessageType::MessageType_TezosPublicKey => 130, + MessageType::MessageType_StellarSignTx => 131, + MessageType::MessageType_StellarTxOpRequest => 132, + MessageType::MessageType_StellarGetAddress => 133, + MessageType::MessageType_StellarAddress => 134, + MessageType::MessageType_StellarCreateAccountOp => 135, + MessageType::MessageType_StellarPaymentOp => 136, + MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 137, + MessageType::MessageType_StellarManageSellOfferOp => 138, + MessageType::MessageType_StellarCreatePassiveSellOfferOp => 139, + MessageType::MessageType_StellarSetOptionsOp => 140, + MessageType::MessageType_StellarChangeTrustOp => 141, + MessageType::MessageType_StellarAllowTrustOp => 142, + MessageType::MessageType_StellarAccountMergeOp => 143, + MessageType::MessageType_StellarManageDataOp => 144, + MessageType::MessageType_StellarBumpSequenceOp => 145, + MessageType::MessageType_StellarManageBuyOfferOp => 146, + MessageType::MessageType_StellarPathPaymentStrictSendOp => 147, + MessageType::MessageType_StellarClaimClaimableBalanceOp => 148, + MessageType::MessageType_StellarSignedTx => 149, + MessageType::MessageType_CardanoGetPublicKey => 150, + MessageType::MessageType_CardanoPublicKey => 151, + MessageType::MessageType_CardanoGetAddress => 152, + MessageType::MessageType_CardanoAddress => 153, + MessageType::MessageType_CardanoTxItemAck => 154, + MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 155, + MessageType::MessageType_CardanoTxWitnessRequest => 156, + MessageType::MessageType_CardanoTxWitnessResponse => 157, + MessageType::MessageType_CardanoTxHostAck => 158, + MessageType::MessageType_CardanoTxBodyHash => 159, + MessageType::MessageType_CardanoSignTxFinished => 160, + MessageType::MessageType_CardanoSignTxInit => 161, + MessageType::MessageType_CardanoTxInput => 162, + MessageType::MessageType_CardanoTxOutput => 163, + MessageType::MessageType_CardanoAssetGroup => 164, + MessageType::MessageType_CardanoToken => 165, + MessageType::MessageType_CardanoTxCertificate => 166, + MessageType::MessageType_CardanoTxWithdrawal => 167, + MessageType::MessageType_CardanoTxAuxiliaryData => 168, + MessageType::MessageType_CardanoPoolOwner => 169, + MessageType::MessageType_CardanoPoolRelayParameters => 170, + MessageType::MessageType_CardanoGetNativeScriptHash => 171, + MessageType::MessageType_CardanoNativeScriptHash => 172, + MessageType::MessageType_CardanoTxMint => 173, + MessageType::MessageType_CardanoTxCollateralInput => 174, + MessageType::MessageType_CardanoTxRequiredSigner => 175, + MessageType::MessageType_CardanoTxInlineDatumChunk => 176, + MessageType::MessageType_CardanoTxReferenceScriptChunk => 177, + MessageType::MessageType_CardanoTxReferenceInput => 178, + MessageType::MessageType_RippleGetAddress => 179, + MessageType::MessageType_RippleAddress => 180, + MessageType::MessageType_RippleSignTx => 181, + MessageType::MessageType_RippleSignedTx => 182, + MessageType::MessageType_MoneroTransactionInitRequest => 183, + MessageType::MessageType_MoneroTransactionInitAck => 184, + MessageType::MessageType_MoneroTransactionSetInputRequest => 185, + MessageType::MessageType_MoneroTransactionSetInputAck => 186, + MessageType::MessageType_MoneroTransactionInputViniRequest => 187, + MessageType::MessageType_MoneroTransactionInputViniAck => 188, + MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 189, + MessageType::MessageType_MoneroTransactionAllInputsSetAck => 190, + MessageType::MessageType_MoneroTransactionSetOutputRequest => 191, + MessageType::MessageType_MoneroTransactionSetOutputAck => 192, + MessageType::MessageType_MoneroTransactionAllOutSetRequest => 193, + MessageType::MessageType_MoneroTransactionAllOutSetAck => 194, + MessageType::MessageType_MoneroTransactionSignInputRequest => 195, + MessageType::MessageType_MoneroTransactionSignInputAck => 196, + MessageType::MessageType_MoneroTransactionFinalRequest => 197, + MessageType::MessageType_MoneroTransactionFinalAck => 198, + MessageType::MessageType_MoneroKeyImageExportInitRequest => 199, + MessageType::MessageType_MoneroKeyImageExportInitAck => 200, + MessageType::MessageType_MoneroKeyImageSyncStepRequest => 201, + MessageType::MessageType_MoneroKeyImageSyncStepAck => 202, + MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 203, + MessageType::MessageType_MoneroKeyImageSyncFinalAck => 204, + MessageType::MessageType_MoneroGetAddress => 205, + MessageType::MessageType_MoneroAddress => 206, + MessageType::MessageType_MoneroGetWatchKey => 207, + MessageType::MessageType_MoneroWatchKey => 208, + MessageType::MessageType_DebugMoneroDiagRequest => 209, + MessageType::MessageType_DebugMoneroDiagAck => 210, + MessageType::MessageType_MoneroGetTxKeyRequest => 211, + MessageType::MessageType_MoneroGetTxKeyAck => 212, + MessageType::MessageType_MoneroLiveRefreshStartRequest => 213, + MessageType::MessageType_MoneroLiveRefreshStartAck => 214, + MessageType::MessageType_MoneroLiveRefreshStepRequest => 215, + MessageType::MessageType_MoneroLiveRefreshStepAck => 216, + MessageType::MessageType_MoneroLiveRefreshFinalRequest => 217, + MessageType::MessageType_MoneroLiveRefreshFinalAck => 218, + MessageType::MessageType_EosGetPublicKey => 219, + MessageType::MessageType_EosPublicKey => 220, + MessageType::MessageType_EosSignTx => 221, + MessageType::MessageType_EosTxActionRequest => 222, + MessageType::MessageType_EosTxActionAck => 223, + MessageType::MessageType_EosSignedTx => 224, + MessageType::MessageType_BinanceGetAddress => 225, + MessageType::MessageType_BinanceAddress => 226, + MessageType::MessageType_BinanceGetPublicKey => 227, + MessageType::MessageType_BinancePublicKey => 228, + MessageType::MessageType_BinanceSignTx => 229, + MessageType::MessageType_BinanceTxRequest => 230, + MessageType::MessageType_BinanceTransferMsg => 231, + MessageType::MessageType_BinanceOrderMsg => 232, + MessageType::MessageType_BinanceCancelMsg => 233, + MessageType::MessageType_BinanceSignedTx => 234, + MessageType::MessageType_WebAuthnListResidentCredentials => 235, + MessageType::MessageType_WebAuthnCredentials => 236, + MessageType::MessageType_WebAuthnAddResidentCredential => 237, + MessageType::MessageType_WebAuthnRemoveResidentCredential => 238, + MessageType::MessageType_SolanaGetPublicKey => 239, + MessageType::MessageType_SolanaPublicKey => 240, + MessageType::MessageType_SolanaGetAddress => 241, + MessageType::MessageType_SolanaAddress => 242, + MessageType::MessageType_SolanaSignTx => 243, + MessageType::MessageType_SolanaTxSignature => 244, + MessageType::MessageType_BenchmarkListNames => 245, + MessageType::MessageType_BenchmarkNames => 246, + MessageType::MessageType_BenchmarkRun => 247, + MessageType::MessageType_BenchmarkResult => 248, }; Self::enum_descriptor().value_by_index(index) } @@ -1561,7 +1573,7 @@ impl MessageType { } static file_descriptor_proto_data: &'static [u8] = b"\ - \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xe8U\ + \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xcdV\ \n\x0bMessageType\x12(\n\x16MessageType_Initialize\x10\0\x1a\x0c\x80\xa6\ \x1d\x01\xb0\xb5\x18\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\ @@ -1681,172 +1693,174 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x1d\x01\xa0\xb5\x18\x01\x124\n%MessageType_DebugLinkResetDebugEvents\ \x10\xafF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x123\n$MessageType_Deb\ ugLinkOptigaSetSecMax\x10\xb0F\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\ - \x12+\n\x20MessageType_EthereumGetPublicKey\x10\xc2\x03\x1a\x04\x90\xb5\ - \x18\x01\x12(\n\x1dMessageType_EthereumPublicKey\x10\xc3\x03\x1a\x04\x98\ - \xb5\x18\x01\x12(\n\x1eMessageType_EthereumGetAddress\x108\x1a\x04\x90\ - \xb5\x18\x01\x12%\n\x1bMessageType_EthereumAddress\x109\x1a\x04\x98\xb5\ - \x18\x01\x12$\n\x1aMessageType_EthereumSignTx\x10:\x1a\x04\x90\xb5\x18\ - \x01\x12,\n!MessageType_EthereumSignTxEIP1559\x10\xc4\x03\x1a\x04\x90\ - \xb5\x18\x01\x12'\n\x1dMessageType_EthereumTxRequest\x10;\x1a\x04\x98\ - \xb5\x18\x01\x12#\n\x19MessageType_EthereumTxAck\x10<\x1a\x04\x90\xb5\ - \x18\x01\x12)\n\x1fMessageType_EthereumSignMessage\x10@\x1a\x04\x90\xb5\ - \x18\x01\x12+\n!MessageType_EthereumVerifyMessage\x10A\x1a\x04\x90\xb5\ - \x18\x01\x12.\n$MessageType_EthereumMessageSignature\x10B\x1a\x04\x98\ - \xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedData\x10\xd0\x03\x1a\ - \x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTypedDataStructRequest\ - \x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_EthereumTypedDat\ - aStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_Ethere\ - umTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\x18\x01\x120\n%Messa\ - geType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\x04\x90\xb5\x18\x01\x12\ - 1\n&MessageType_EthereumTypedDataSignature\x10\xd5\x03\x1a\x04\x98\xb5\ - \x18\x01\x12,\n!MessageType_EthereumSignTypedHash\x10\xd6\x03\x1a\x04\ - \x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddress\x10C\x1a\x04\x90\ - \xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\x1a\x04\x98\xb5\ - \x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\x90\xb5\x18\x01\ - \x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\x18\x01\x12'\n\ - \x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\x18\x01\x12)\n\ - \x1fMessageType_NEMDecryptedMessage\x10L\x1a\x04\x98\xb5\x18\x01\x12&\n\ - \x1bMessageType_TezosGetAddress\x10\x96\x01\x1a\x04\x90\xb5\x18\x01\x12#\ - \n\x18MessageType_TezosAddress\x10\x97\x01\x1a\x04\x98\xb5\x18\x01\x12\"\ - \n\x17MessageType_TezosSignTx\x10\x98\x01\x1a\x04\x90\xb5\x18\x01\x12$\n\ - \x19MessageType_TezosSignedTx\x10\x99\x01\x1a\x04\x98\xb5\x18\x01\x12(\n\ - \x1dMessageType_TezosGetPublicKey\x10\x9a\x01\x1a\x04\x90\xb5\x18\x01\ - \x12%\n\x1aMessageType_TezosPublicKey\x10\x9b\x01\x1a\x04\x98\xb5\x18\ - \x01\x12$\n\x19MessageType_StellarSignTx\x10\xca\x01\x1a\x04\x90\xb5\x18\ - \x01\x12)\n\x1eMessageType_StellarTxOpRequest\x10\xcb\x01\x1a\x04\x98\ - \xb5\x18\x01\x12(\n\x1dMessageType_StellarGetAddress\x10\xcf\x01\x1a\x04\ - \x90\xb5\x18\x01\x12%\n\x1aMessageType_StellarAddress\x10\xd0\x01\x1a\ - \x04\x98\xb5\x18\x01\x12-\n\"MessageType_StellarCreateAccountOp\x10\xd2\ - \x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_StellarPaymentOp\x10\ - \xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_StellarPathPaymentSt\ - rictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_Ste\ - llarManageSellOfferOp\x10\xd5\x01\x1a\x04\x90\xb5\x18\x01\x126\n+Message\ - Type_StellarCreatePassiveSellOfferOp\x10\xd6\x01\x1a\x04\x90\xb5\x18\x01\ - \x12*\n\x1fMessageType_StellarSetOptionsOp\x10\xd7\x01\x1a\x04\x90\xb5\ - \x18\x01\x12+\n\x20MessageType_StellarChangeTrustOp\x10\xd8\x01\x1a\x04\ - \x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarAllowTrustOp\x10\xd9\x01\ - \x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccountMergeOp\x10\ - \xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarManageData\ - Op\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarBumpSeq\ - uenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_StellarMa\ - nageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_St\ - ellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\x01\x125\n*\ - MessageType_StellarClaimClaimableBalanceOp\x10\xe1\x01\x1a\x04\x90\xb5\ - \x18\x01\x12&\n\x1bMessageType_StellarSignedTx\x10\xe6\x01\x1a\x04\x98\ - \xb5\x18\x01\x12*\n\x1fMessageType_CardanoGetPublicKey\x10\xb1\x02\x1a\ - \x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_CardanoPublicKey\x10\xb2\x02\ - \x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoGetAddress\x10\xb3\ - \x02\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoAddress\x10\ - \xb4\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoTxItemAck\ - \x10\xb9\x02\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_CardanoTxAuxilia\ - ryDataSupplement\x10\xba\x02\x1a\x04\x98\xb5\x18\x01\x12.\n#MessageType_\ - CardanoTxWitnessRequest\x10\xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\n$Messa\ - geType_CardanoTxWitnessResponse\x10\xbc\x02\x1a\x04\x98\xb5\x18\x01\x12'\ - \n\x1cMessageType_CardanoTxHostAck\x10\xbd\x02\x1a\x04\x90\xb5\x18\x01\ - \x12(\n\x1dMessageType_CardanoTxBodyHash\x10\xbe\x02\x1a\x04\x98\xb5\x18\ - \x01\x12,\n!MessageType_CardanoSignTxFinished\x10\xbf\x02\x1a\x04\x98\ - \xb5\x18\x01\x12(\n\x1dMessageType_CardanoSignTxInit\x10\xc0\x02\x1a\x04\ - \x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoTxInput\x10\xc1\x02\x1a\ - \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_CardanoTxOutput\x10\xc2\x02\ - \x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_CardanoAssetGroup\x10\xc3\ - \x02\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_CardanoToken\x10\xc4\ - \x02\x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_CardanoTxCertificate\ - \x10\xc5\x02\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_CardanoTxWith\ - drawal\x10\xc6\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_CardanoTx\ - AuxiliaryData\x10\xc7\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_\ - CardanoPoolOwner\x10\xc8\x02\x1a\x04\x90\xb5\x18\x01\x121\n&MessageType_\ - CardanoPoolRelayParameters\x10\xc9\x02\x1a\x04\x90\xb5\x18\x01\x121\n&Me\ - ssageType_CardanoGetNativeScriptHash\x10\xca\x02\x1a\x04\x90\xb5\x18\x01\ - \x12.\n#MessageType_CardanoNativeScriptHash\x10\xcb\x02\x1a\x04\x98\xb5\ - \x18\x01\x12$\n\x19MessageType_CardanoTxMint\x10\xcc\x02\x1a\x04\x90\xb5\ - \x18\x01\x12/\n$MessageType_CardanoTxCollateralInput\x10\xcd\x02\x1a\x04\ - \x90\xb5\x18\x01\x12.\n#MessageType_CardanoTxRequiredSigner\x10\xce\x02\ - \x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_CardanoTxInlineDatumChunk\ - \x10\xcf\x02\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_CardanoTxReferen\ - ceScriptChunk\x10\xd0\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_Car\ - danoTxReferenceInput\x10\xd1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessa\ - geType_RippleGetAddress\x10\x90\x03\x1a\x04\x90\xb5\x18\x01\x12$\n\x19Me\ - ssageType_RippleAddress\x10\x91\x03\x1a\x04\x98\xb5\x18\x01\x12#\n\x18Me\ - ssageType_RippleSignTx\x10\x92\x03\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMes\ - sageType_RippleSignedTx\x10\x93\x03\x1a\x04\x90\xb5\x18\x01\x123\n(Messa\ - geType_MoneroTransactionInitRequest\x10\xf5\x03\x1a\x04\x98\xb5\x18\x01\ - \x12/\n$MessageType_MoneroTransactionInitAck\x10\xf6\x03\x1a\x04\x98\xb5\ - \x18\x01\x127\n,MessageType_MoneroTransactionSetInputRequest\x10\xf7\x03\ - \x1a\x04\x98\xb5\x18\x01\x123\n(MessageType_MoneroTransactionSetInputAck\ - \x10\xf8\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactio\ - nInputViniRequest\x10\xfb\x03\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ - _MoneroTransactionInputViniAck\x10\xfc\x03\x1a\x04\x98\xb5\x18\x01\x12;\ - \n0MessageType_MoneroTransactionAllInputsSetRequest\x10\xfd\x03\x1a\x04\ - \x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionAllInputsSetAck\x10\ - \xfe\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactionSet\ - OutputRequest\x10\xff\x03\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_Mon\ - eroTransactionSetOutputAck\x10\x80\x04\x1a\x04\x98\xb5\x18\x01\x128\n-Me\ - ssageType_MoneroTransactionAllOutSetRequest\x10\x81\x04\x1a\x04\x98\xb5\ - \x18\x01\x124\n)MessageType_MoneroTransactionAllOutSetAck\x10\x82\x04\ - \x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactionSignInputRe\ - quest\x10\x83\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroTrans\ - actionSignInputAck\x10\x84\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageTyp\ - e_MoneroTransactionFinalRequest\x10\x85\x04\x1a\x04\x98\xb5\x18\x01\x120\ - \n%MessageType_MoneroTransactionFinalAck\x10\x86\x04\x1a\x04\x98\xb5\x18\ - \x01\x126\n+MessageType_MoneroKeyImageExportInitRequest\x10\x92\x04\x1a\ - \x04\x98\xb5\x18\x01\x122\n'MessageType_MoneroKeyImageExportInitAck\x10\ - \x93\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroKeyImageSyncSt\ - epRequest\x10\x94\x04\x1a\x04\x98\xb5\x18\x01\x120\n%MessageType_MoneroK\ - eyImageSyncStepAck\x10\x95\x04\x1a\x04\x98\xb5\x18\x01\x125\n*MessageTyp\ - e_MoneroKeyImageSyncFinalRequest\x10\x96\x04\x1a\x04\x98\xb5\x18\x01\x12\ - 1\n&MessageType_MoneroKeyImageSyncFinalAck\x10\x97\x04\x1a\x04\x98\xb5\ - \x18\x01\x12'\n\x1cMessageType_MoneroGetAddress\x10\x9c\x04\x1a\x04\x90\ - \xb5\x18\x01\x12$\n\x19MessageType_MoneroAddress\x10\x9d\x04\x1a\x04\x98\ - \xb5\x18\x01\x12(\n\x1dMessageType_MoneroGetWatchKey\x10\x9e\x04\x1a\x04\ - \x90\xb5\x18\x01\x12%\n\x1aMessageType_MoneroWatchKey\x10\x9f\x04\x1a\ - \x04\x98\xb5\x18\x01\x12-\n\"MessageType_DebugMoneroDiagRequest\x10\xa2\ - \x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_DebugMoneroDiagAck\ - \x10\xa3\x04\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_MoneroGetTxKeyRe\ - quest\x10\xa6\x04\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGe\ - tTxKeyAck\x10\xa7\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroL\ - iveRefreshStartRequest\x10\xa8\x04\x1a\x04\x90\xb5\x18\x01\x120\n%Messag\ - eType_MoneroLiveRefreshStartAck\x10\xa9\x04\x1a\x04\x98\xb5\x18\x01\x123\ - \n(MessageType_MoneroLiveRefreshStepRequest\x10\xaa\x04\x1a\x04\x90\xb5\ - \x18\x01\x12/\n$MessageType_MoneroLiveRefreshStepAck\x10\xab\x04\x1a\x04\ - \x98\xb5\x18\x01\x124\n)MessageType_MoneroLiveRefreshFinalRequest\x10\ - \xac\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroLiveRefreshFin\ - alAck\x10\xad\x04\x1a\x04\x98\xb5\x18\x01\x12&\n\x1bMessageType_EosGetPu\ - blicKey\x10\xd8\x04\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_EosPub\ - licKey\x10\xd9\x04\x1a\x04\x98\xb5\x18\x01\x12\x20\n\x15MessageType_EosS\ - ignTx\x10\xda\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_EosTxAct\ - ionRequest\x10\xdb\x04\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMessageType_Eos\ - TxActionAck\x10\xdc\x04\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17MessageType_E\ - osSignedTx\x10\xdd\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_Bin\ - anceGetAddress\x10\xbc\x05\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType\ - _BinanceAddress\x10\xbd\x05\x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageTyp\ - e_BinanceGetPublicKey\x10\xbe\x05\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMess\ - ageType_BinancePublicKey\x10\xbf\x05\x1a\x04\x98\xb5\x18\x01\x12$\n\x19M\ - essageType_BinanceSignTx\x10\xc0\x05\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cM\ - essageType_BinanceTxRequest\x10\xc1\x05\x1a\x04\x98\xb5\x18\x01\x12)\n\ - \x1eMessageType_BinanceTransferMsg\x10\xc2\x05\x1a\x04\x90\xb5\x18\x01\ - \x12&\n\x1bMessageType_BinanceOrderMsg\x10\xc3\x05\x1a\x04\x90\xb5\x18\ - \x01\x12'\n\x1cMessageType_BinanceCancelMsg\x10\xc4\x05\x1a\x04\x90\xb5\ - \x18\x01\x12&\n\x1bMessageType_BinanceSignedTx\x10\xc5\x05\x1a\x04\x98\ - \xb5\x18\x01\x126\n+MessageType_WebAuthnListResidentCredentials\x10\xa0\ - \x06\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_WebAuthnCredentials\ - \x10\xa1\x06\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_WebAuthnAddResid\ - entCredential\x10\xa2\x06\x1a\x04\x90\xb5\x18\x01\x127\n,MessageType_Web\ - AuthnRemoveResidentCredential\x10\xa3\x06\x1a\x04\x90\xb5\x18\x01\x12)\n\ - \x1eMessageType_SolanaGetPublicKey\x10\x84\x07\x1a\x04\x90\xb5\x18\x01\ - \x12&\n\x1bMessageType_SolanaPublicKey\x10\x85\x07\x1a\x04\x98\xb5\x18\ - \x01\x12'\n\x1cMessageType_SolanaGetAddress\x10\x86\x07\x1a\x04\x90\xb5\ - \x18\x01\x12$\n\x19MessageType_SolanaAddress\x10\x87\x07\x1a\x04\x98\xb5\ - \x18\x01\x12#\n\x18MessageType_SolanaSignTx\x10\x88\x07\x1a\x04\x90\xb5\ - \x18\x01\x12(\n\x1dMessageType_SolanaTxSignature\x10\x89\x07\x1a\x04\x98\ - \xb5\x18\x01\x12)\n\x1eMessageType_BenchmarkListNames\x10\x8cG\x1a\x04\ - \x80\xa6\x1d\x01\x12%\n\x1aMessageType_BenchmarkNames\x10\x8dG\x1a\x04\ - \x80\xa6\x1d\x01\x12#\n\x18MessageType_BenchmarkRun\x10\x8eG\x1a\x04\x80\ - \xa6\x1d\x01\x12&\n\x1bMessageType_BenchmarkResult\x10\x8fG\x1a\x04\x80\ - \xa6\x1d\x01\x1a\x04\xc8\xf3\x18\x01\"\x04\x08Z\x10\\\"\x04\x08G\x10J\"\ - \x04\x08r\x10z\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\x08\xe0\x01\x10\xe0\ - \x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\x02\x10\xb8\x02\"\x06\ - \x08\xe8\x07\x10\xcb\x08B8\n#com.satoshilabs.trezor.lib.protobufB\rTrezo\ - rMessage\x80\xa6\x1d\x01\ + \x122\n#MessageType_DebugLinkGetPairingInfo\x10\xb1F\x1a\x08\x80\xa6\x1d\ + \x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_DebugLinkPairingInfo\x10\xb2F\ + \x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12+\n\x20MessageType_EthereumG\ + etPublicKey\x10\xc2\x03\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_Et\ + hereumPublicKey\x10\xc3\x03\x1a\x04\x98\xb5\x18\x01\x12(\n\x1eMessageTyp\ + e_EthereumGetAddress\x108\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessageType_\ + EthereumAddress\x109\x1a\x04\x98\xb5\x18\x01\x12$\n\x1aMessageType_Ether\ + eumSignTx\x10:\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_EthereumSignTx\ + EIP1559\x10\xc4\x03\x1a\x04\x90\xb5\x18\x01\x12'\n\x1dMessageType_Ethere\ + umTxRequest\x10;\x1a\x04\x98\xb5\x18\x01\x12#\n\x19MessageType_EthereumT\ + xAck\x10<\x1a\x04\x90\xb5\x18\x01\x12)\n\x1fMessageType_EthereumSignMess\ + age\x10@\x1a\x04\x90\xb5\x18\x01\x12+\n!MessageType_EthereumVerifyMessag\ + e\x10A\x1a\x04\x90\xb5\x18\x01\x12.\n$MessageType_EthereumMessageSignatu\ + re\x10B\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedData\ + \x10\xd0\x03\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTypedDat\ + aStructRequest\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_Et\ + hereumTypedDataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n)Mess\ + ageType_EthereumTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\x18\ + \x01\x120\n%MessageType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\x04\ + \x90\xb5\x18\x01\x121\n&MessageType_EthereumTypedDataSignature\x10\xd5\ + \x03\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedHash\ + \x10\xd6\x03\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddress\ + \x10C\x1a\x04\x90\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\ + \x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\ + \x90\xb5\x18\x01\x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\ + \x18\x01\x12'\n\x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\ + \x18\x01\x12)\n\x1fMessageType_NEMDecryptedMessage\x10L\x1a\x04\x98\xb5\ + \x18\x01\x12&\n\x1bMessageType_TezosGetAddress\x10\x96\x01\x1a\x04\x90\ + \xb5\x18\x01\x12#\n\x18MessageType_TezosAddress\x10\x97\x01\x1a\x04\x98\ + \xb5\x18\x01\x12\"\n\x17MessageType_TezosSignTx\x10\x98\x01\x1a\x04\x90\ + \xb5\x18\x01\x12$\n\x19MessageType_TezosSignedTx\x10\x99\x01\x1a\x04\x98\ + \xb5\x18\x01\x12(\n\x1dMessageType_TezosGetPublicKey\x10\x9a\x01\x1a\x04\ + \x90\xb5\x18\x01\x12%\n\x1aMessageType_TezosPublicKey\x10\x9b\x01\x1a\ + \x04\x98\xb5\x18\x01\x12$\n\x19MessageType_StellarSignTx\x10\xca\x01\x1a\ + \x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_StellarTxOpRequest\x10\xcb\ + \x01\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_StellarGetAddress\x10\ + \xcf\x01\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_StellarAddress\ + \x10\xd0\x01\x1a\x04\x98\xb5\x18\x01\x12-\n\"MessageType_StellarCreateAc\ + countOp\x10\xd2\x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_Stella\ + rPaymentOp\x10\xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_Stella\ + rPathPaymentStrictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$M\ + essageType_StellarManageSellOfferOp\x10\xd5\x01\x1a\x04\x90\xb5\x18\x01\ + \x126\n+MessageType_StellarCreatePassiveSellOfferOp\x10\xd6\x01\x1a\x04\ + \x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarSetOptionsOp\x10\xd7\x01\ + \x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_StellarChangeTrustOp\x10\ + \xd8\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarAllowTrust\ + Op\x10\xd9\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccount\ + MergeOp\x10\xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_Stella\ + rManageDataOp\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_Ste\ + llarBumpSequenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageTyp\ + e_StellarManageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*Mes\ + sageType_StellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\ + \x01\x125\n*MessageType_StellarClaimClaimableBalanceOp\x10\xe1\x01\x1a\ + \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_StellarSignedTx\x10\xe6\x01\ + \x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageType_CardanoGetPublicKey\x10\ + \xb1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_CardanoPublicKey\ + \x10\xb2\x02\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoGetAdd\ + ress\x10\xb3\x02\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoAd\ + dress\x10\xb4\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoT\ + xItemAck\x10\xb9\x02\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_CardanoT\ + xAuxiliaryDataSupplement\x10\xba\x02\x1a\x04\x98\xb5\x18\x01\x12.\n#Mess\ + ageType_CardanoTxWitnessRequest\x10\xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\ + \n$MessageType_CardanoTxWitnessResponse\x10\xbc\x02\x1a\x04\x98\xb5\x18\ + \x01\x12'\n\x1cMessageType_CardanoTxHostAck\x10\xbd\x02\x1a\x04\x90\xb5\ + \x18\x01\x12(\n\x1dMessageType_CardanoTxBodyHash\x10\xbe\x02\x1a\x04\x98\ + \xb5\x18\x01\x12,\n!MessageType_CardanoSignTxFinished\x10\xbf\x02\x1a\ + \x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoSignTxInit\x10\xc0\x02\ + \x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoTxInput\x10\xc1\ + \x02\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_CardanoTxOutput\x10\ + \xc2\x02\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_CardanoAssetGroup\ + \x10\xc3\x02\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_CardanoToken\ + \x10\xc4\x02\x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_CardanoTxCert\ + ificate\x10\xc5\x02\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_Cardan\ + oTxWithdrawal\x10\xc6\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_Ca\ + rdanoTxAuxiliaryData\x10\xc7\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessa\ + geType_CardanoPoolOwner\x10\xc8\x02\x1a\x04\x90\xb5\x18\x01\x121\n&Messa\ + geType_CardanoPoolRelayParameters\x10\xc9\x02\x1a\x04\x90\xb5\x18\x01\ + \x121\n&MessageType_CardanoGetNativeScriptHash\x10\xca\x02\x1a\x04\x90\ + \xb5\x18\x01\x12.\n#MessageType_CardanoNativeScriptHash\x10\xcb\x02\x1a\ + \x04\x98\xb5\x18\x01\x12$\n\x19MessageType_CardanoTxMint\x10\xcc\x02\x1a\ + \x04\x90\xb5\x18\x01\x12/\n$MessageType_CardanoTxCollateralInput\x10\xcd\ + \x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_CardanoTxRequiredSigner\ + \x10\xce\x02\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_CardanoTxInlineD\ + atumChunk\x10\xcf\x02\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_Cardano\ + TxReferenceScriptChunk\x10\xd0\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#Messag\ + eType_CardanoTxReferenceInput\x10\xd1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\ + \x1cMessageType_RippleGetAddress\x10\x90\x03\x1a\x04\x90\xb5\x18\x01\x12\ + $\n\x19MessageType_RippleAddress\x10\x91\x03\x1a\x04\x98\xb5\x18\x01\x12\ + #\n\x18MessageType_RippleSignTx\x10\x92\x03\x1a\x04\x90\xb5\x18\x01\x12%\ + \n\x1aMessageType_RippleSignedTx\x10\x93\x03\x1a\x04\x90\xb5\x18\x01\x12\ + 3\n(MessageType_MoneroTransactionInitRequest\x10\xf5\x03\x1a\x04\x98\xb5\ + \x18\x01\x12/\n$MessageType_MoneroTransactionInitAck\x10\xf6\x03\x1a\x04\ + \x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionSetInputRequest\x10\ + \xf7\x03\x1a\x04\x98\xb5\x18\x01\x123\n(MessageType_MoneroTransactionSet\ + InputAck\x10\xf8\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTr\ + ansactionInputViniRequest\x10\xfb\x03\x1a\x04\x98\xb5\x18\x01\x124\n)Mes\ + sageType_MoneroTransactionInputViniAck\x10\xfc\x03\x1a\x04\x98\xb5\x18\ + \x01\x12;\n0MessageType_MoneroTransactionAllInputsSetRequest\x10\xfd\x03\ + \x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionAllInputsSe\ + tAck\x10\xfe\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransa\ + ctionSetOutputRequest\x10\xff\x03\x1a\x04\x98\xb5\x18\x01\x124\n)Message\ + Type_MoneroTransactionSetOutputAck\x10\x80\x04\x1a\x04\x98\xb5\x18\x01\ + \x128\n-MessageType_MoneroTransactionAllOutSetRequest\x10\x81\x04\x1a\ + \x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroTransactionAllOutSetAck\ + \x10\x82\x04\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactio\ + nSignInputRequest\x10\x83\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ + _MoneroTransactionSignInputAck\x10\x84\x04\x1a\x04\x98\xb5\x18\x01\x124\ + \n)MessageType_MoneroTransactionFinalRequest\x10\x85\x04\x1a\x04\x98\xb5\ + \x18\x01\x120\n%MessageType_MoneroTransactionFinalAck\x10\x86\x04\x1a\ + \x04\x98\xb5\x18\x01\x126\n+MessageType_MoneroKeyImageExportInitRequest\ + \x10\x92\x04\x1a\x04\x98\xb5\x18\x01\x122\n'MessageType_MoneroKeyImageEx\ + portInitAck\x10\x93\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_Moner\ + oKeyImageSyncStepRequest\x10\x94\x04\x1a\x04\x98\xb5\x18\x01\x120\n%Mess\ + ageType_MoneroKeyImageSyncStepAck\x10\x95\x04\x1a\x04\x98\xb5\x18\x01\ + \x125\n*MessageType_MoneroKeyImageSyncFinalRequest\x10\x96\x04\x1a\x04\ + \x98\xb5\x18\x01\x121\n&MessageType_MoneroKeyImageSyncFinalAck\x10\x97\ + \x04\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_MoneroGetAddress\x10\ + \x9c\x04\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_MoneroAddress\x10\ + \x9d\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGetWatchKey\ + \x10\x9e\x04\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_MoneroWatchKe\ + y\x10\x9f\x04\x1a\x04\x98\xb5\x18\x01\x12-\n\"MessageType_DebugMoneroDia\ + gRequest\x10\xa2\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_Debug\ + MoneroDiagAck\x10\xa3\x04\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_Mon\ + eroGetTxKeyRequest\x10\xa6\x04\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessage\ + Type_MoneroGetTxKeyAck\x10\xa7\x04\x1a\x04\x98\xb5\x18\x01\x124\n)Messag\ + eType_MoneroLiveRefreshStartRequest\x10\xa8\x04\x1a\x04\x90\xb5\x18\x01\ + \x120\n%MessageType_MoneroLiveRefreshStartAck\x10\xa9\x04\x1a\x04\x98\ + \xb5\x18\x01\x123\n(MessageType_MoneroLiveRefreshStepRequest\x10\xaa\x04\ + \x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_MoneroLiveRefreshStepAck\x10\ + \xab\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroLiveRefreshFin\ + alRequest\x10\xac\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroL\ + iveRefreshFinalAck\x10\xad\x04\x1a\x04\x98\xb5\x18\x01\x12&\n\x1bMessage\ + Type_EosGetPublicKey\x10\xd8\x04\x1a\x04\x90\xb5\x18\x01\x12#\n\x18Messa\ + geType_EosPublicKey\x10\xd9\x04\x1a\x04\x98\xb5\x18\x01\x12\x20\n\x15Mes\ + sageType_EosSignTx\x10\xda\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessage\ + Type_EosTxActionRequest\x10\xdb\x04\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMe\ + ssageType_EosTxActionAck\x10\xdc\x04\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17\ + MessageType_EosSignedTx\x10\xdd\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMe\ + ssageType_BinanceGetAddress\x10\xbc\x05\x1a\x04\x90\xb5\x18\x01\x12%\n\ + \x1aMessageType_BinanceAddress\x10\xbd\x05\x1a\x04\x98\xb5\x18\x01\x12*\ + \n\x1fMessageType_BinanceGetPublicKey\x10\xbe\x05\x1a\x04\x90\xb5\x18\ + \x01\x12'\n\x1cMessageType_BinancePublicKey\x10\xbf\x05\x1a\x04\x98\xb5\ + \x18\x01\x12$\n\x19MessageType_BinanceSignTx\x10\xc0\x05\x1a\x04\x90\xb5\ + \x18\x01\x12'\n\x1cMessageType_BinanceTxRequest\x10\xc1\x05\x1a\x04\x98\ + \xb5\x18\x01\x12)\n\x1eMessageType_BinanceTransferMsg\x10\xc2\x05\x1a\ + \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_BinanceOrderMsg\x10\xc3\x05\ + \x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_BinanceCancelMsg\x10\xc4\ + \x05\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_BinanceSignedTx\x10\ + \xc5\x05\x1a\x04\x98\xb5\x18\x01\x126\n+MessageType_WebAuthnListResident\ + Credentials\x10\xa0\x06\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_We\ + bAuthnCredentials\x10\xa1\x06\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ + _WebAuthnAddResidentCredential\x10\xa2\x06\x1a\x04\x90\xb5\x18\x01\x127\ + \n,MessageType_WebAuthnRemoveResidentCredential\x10\xa3\x06\x1a\x04\x90\ + \xb5\x18\x01\x12)\n\x1eMessageType_SolanaGetPublicKey\x10\x84\x07\x1a\ + \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_SolanaPublicKey\x10\x85\x07\ + \x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_SolanaGetAddress\x10\x86\ + \x07\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_SolanaAddress\x10\x87\ + \x07\x1a\x04\x98\xb5\x18\x01\x12#\n\x18MessageType_SolanaSignTx\x10\x88\ + \x07\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_SolanaTxSignature\x10\ + \x89\x07\x1a\x04\x98\xb5\x18\x01\x12)\n\x1eMessageType_BenchmarkListName\ + s\x10\x8cG\x1a\x04\x80\xa6\x1d\x01\x12%\n\x1aMessageType_BenchmarkNames\ + \x10\x8dG\x1a\x04\x80\xa6\x1d\x01\x12#\n\x18MessageType_BenchmarkRun\x10\ + \x8eG\x1a\x04\x80\xa6\x1d\x01\x12&\n\x1bMessageType_BenchmarkResult\x10\ + \x8fG\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\xf3\x18\x01\"\x04\x08Z\x10\\\"\ + \x04\x08G\x10J\"\x04\x08r\x10z\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\x08\ + \xe0\x01\x10\xe0\x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\x02\x10\ + \xb8\x02\"\x06\x08\xe8\x07\x10\xcb\x08B8\n#com.satoshilabs.trezor.lib.pr\ + otobufB\rTrezorMessage\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/rust/trezor-client/src/protos/generated/messages_debug.rs b/rust/trezor-client/src/protos/generated/messages_debug.rs index a36190201d5..52b30c5c71b 100644 --- a/rust/trezor-client/src/protos/generated/messages_debug.rs +++ b/rust/trezor-client/src/protos/generated/messages_debug.rs @@ -1128,8 +1128,6 @@ pub struct DebugLinkGetState { pub wait_word_pos: ::std::option::Option, // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkGetState.wait_layout) pub wait_layout: ::std::option::Option<::protobuf::EnumOrUnknown>, - // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkGetState.thp_channel_id) - pub thp_channel_id: ::std::option::Option<::std::vec::Vec>, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.debug.DebugLinkGetState.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -1206,44 +1204,8 @@ impl DebugLinkGetState { self.wait_layout = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); } - // optional bytes thp_channel_id = 4; - - pub fn thp_channel_id(&self) -> &[u8] { - match self.thp_channel_id.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_thp_channel_id(&mut self) { - self.thp_channel_id = ::std::option::Option::None; - } - - pub fn has_thp_channel_id(&self) -> bool { - self.thp_channel_id.is_some() - } - - // Param is passed by value, moved - pub fn set_thp_channel_id(&mut self, v: ::std::vec::Vec) { - self.thp_channel_id = ::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_thp_channel_id(&mut self) -> &mut ::std::vec::Vec { - if self.thp_channel_id.is_none() { - self.thp_channel_id = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.thp_channel_id.as_mut().unwrap() - } - - // Take field - pub fn take_thp_channel_id(&mut self) -> ::std::vec::Vec { - self.thp_channel_id.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(4); + let mut fields = ::std::vec::Vec::with_capacity(3); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "wait_word_list", @@ -1260,11 +1222,6 @@ impl DebugLinkGetState { |m: &DebugLinkGetState| { &m.wait_layout }, |m: &mut DebugLinkGetState| { &mut m.wait_layout }, )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "thp_channel_id", - |m: &DebugLinkGetState| { &m.thp_channel_id }, - |m: &mut DebugLinkGetState| { &mut m.thp_channel_id }, - )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( "DebugLinkGetState", fields, @@ -1292,9 +1249,6 @@ impl ::protobuf::Message for DebugLinkGetState { 24 => { self.wait_layout = ::std::option::Option::Some(is.read_enum_or_unknown()?); }, - 34 => { - self.thp_channel_id = ::std::option::Option::Some(is.read_bytes()?); - }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -1316,9 +1270,6 @@ impl ::protobuf::Message for DebugLinkGetState { if let Some(v) = self.wait_layout { my_size += ::protobuf::rt::int32_size(3, v.value()); } - if let Some(v) = self.thp_channel_id.as_ref() { - my_size += ::protobuf::rt::bytes_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 @@ -1334,9 +1285,6 @@ impl ::protobuf::Message for DebugLinkGetState { if let Some(v) = self.wait_layout { os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?; } - if let Some(v) = self.thp_channel_id.as_ref() { - os.write_bytes(4, v)?; - } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -1357,7 +1305,6 @@ impl ::protobuf::Message for DebugLinkGetState { self.wait_word_list = ::std::option::Option::None; self.wait_word_pos = ::std::option::Option::None; self.wait_layout = ::std::option::Option::None; - self.thp_channel_id = ::std::option::Option::None; self.special_fields.clear(); } @@ -1366,7 +1313,6 @@ impl ::protobuf::Message for DebugLinkGetState { wait_word_list: ::std::option::Option::None, wait_word_pos: ::std::option::Option::None, wait_layout: ::std::option::Option::None, - thp_channel_id: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -1490,12 +1436,6 @@ pub struct DebugLinkState { pub mnemonic_type: ::std::option::Option<::protobuf::EnumOrUnknown>, // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkState.tokens) pub tokens: ::std::vec::Vec<::std::string::String>, - // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkState.thp_pairing_code_entry_code) - pub thp_pairing_code_entry_code: ::std::option::Option, - // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkState.thp_pairing_code_qr_code) - pub thp_pairing_code_qr_code: ::std::option::Option<::std::vec::Vec>, - // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkState.thp_pairing_code_nfc) - pub thp_pairing_code_nfc: ::std::option::Option<::std::vec::Vec>, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.debug.DebugLinkState.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -1843,99 +1783,8 @@ impl DebugLinkState { self.mnemonic_type = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); } - // optional uint32 thp_pairing_code_entry_code = 14; - - pub fn thp_pairing_code_entry_code(&self) -> u32 { - self.thp_pairing_code_entry_code.unwrap_or(0) - } - - pub fn clear_thp_pairing_code_entry_code(&mut self) { - self.thp_pairing_code_entry_code = ::std::option::Option::None; - } - - pub fn has_thp_pairing_code_entry_code(&self) -> bool { - self.thp_pairing_code_entry_code.is_some() - } - - // Param is passed by value, moved - pub fn set_thp_pairing_code_entry_code(&mut self, v: u32) { - self.thp_pairing_code_entry_code = ::std::option::Option::Some(v); - } - - // optional bytes thp_pairing_code_qr_code = 15; - - pub fn thp_pairing_code_qr_code(&self) -> &[u8] { - match self.thp_pairing_code_qr_code.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_thp_pairing_code_qr_code(&mut self) { - self.thp_pairing_code_qr_code = ::std::option::Option::None; - } - - pub fn has_thp_pairing_code_qr_code(&self) -> bool { - self.thp_pairing_code_qr_code.is_some() - } - - // Param is passed by value, moved - pub fn set_thp_pairing_code_qr_code(&mut self, v: ::std::vec::Vec) { - self.thp_pairing_code_qr_code = ::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_thp_pairing_code_qr_code(&mut self) -> &mut ::std::vec::Vec { - if self.thp_pairing_code_qr_code.is_none() { - self.thp_pairing_code_qr_code = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.thp_pairing_code_qr_code.as_mut().unwrap() - } - - // Take field - pub fn take_thp_pairing_code_qr_code(&mut self) -> ::std::vec::Vec { - self.thp_pairing_code_qr_code.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - // optional bytes thp_pairing_code_nfc = 16; - - pub fn thp_pairing_code_nfc(&self) -> &[u8] { - match self.thp_pairing_code_nfc.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_thp_pairing_code_nfc(&mut self) { - self.thp_pairing_code_nfc = ::std::option::Option::None; - } - - pub fn has_thp_pairing_code_nfc(&self) -> bool { - self.thp_pairing_code_nfc.is_some() - } - - // Param is passed by value, moved - pub fn set_thp_pairing_code_nfc(&mut self, v: ::std::vec::Vec) { - self.thp_pairing_code_nfc = ::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_thp_pairing_code_nfc(&mut self) -> &mut ::std::vec::Vec { - if self.thp_pairing_code_nfc.is_none() { - self.thp_pairing_code_nfc = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.thp_pairing_code_nfc.as_mut().unwrap() - } - - // Take field - pub fn take_thp_pairing_code_nfc(&mut self) -> ::std::vec::Vec { - self.thp_pairing_code_nfc.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(16); + let mut fields = ::std::vec::Vec::with_capacity(13); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "layout", @@ -2002,21 +1851,6 @@ impl DebugLinkState { |m: &DebugLinkState| { &m.tokens }, |m: &mut DebugLinkState| { &mut m.tokens }, )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "thp_pairing_code_entry_code", - |m: &DebugLinkState| { &m.thp_pairing_code_entry_code }, - |m: &mut DebugLinkState| { &mut m.thp_pairing_code_entry_code }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "thp_pairing_code_qr_code", - |m: &DebugLinkState| { &m.thp_pairing_code_qr_code }, - |m: &mut DebugLinkState| { &mut m.thp_pairing_code_qr_code }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "thp_pairing_code_nfc", - |m: &DebugLinkState| { &m.thp_pairing_code_nfc }, - |m: &mut DebugLinkState| { &mut m.thp_pairing_code_nfc }, - )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( "DebugLinkState", fields, @@ -2079,15 +1913,6 @@ impl ::protobuf::Message for DebugLinkState { 106 => { self.tokens.push(is.read_string()?); }, - 112 => { - self.thp_pairing_code_entry_code = ::std::option::Option::Some(is.read_uint32()?); - }, - 122 => { - self.thp_pairing_code_qr_code = ::std::option::Option::Some(is.read_bytes()?); - }, - 130 => { - self.thp_pairing_code_nfc = ::std::option::Option::Some(is.read_bytes()?); - }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -2140,15 +1965,6 @@ impl ::protobuf::Message for DebugLinkState { for value in &self.tokens { my_size += ::protobuf::rt::string_size(13, &value); }; - if let Some(v) = self.thp_pairing_code_entry_code { - my_size += ::protobuf::rt::uint32_size(14, v); - } - if let Some(v) = self.thp_pairing_code_qr_code.as_ref() { - my_size += ::protobuf::rt::bytes_size(15, &v); - } - if let Some(v) = self.thp_pairing_code_nfc.as_ref() { - my_size += ::protobuf::rt::bytes_size(16, &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 @@ -2194,15 +2010,6 @@ impl ::protobuf::Message for DebugLinkState { for v in &self.tokens { os.write_string(13, &v)?; }; - if let Some(v) = self.thp_pairing_code_entry_code { - os.write_uint32(14, v)?; - } - if let Some(v) = self.thp_pairing_code_qr_code.as_ref() { - os.write_bytes(15, v)?; - } - if let Some(v) = self.thp_pairing_code_nfc.as_ref() { - os.write_bytes(16, v)?; - } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -2233,9 +2040,6 @@ impl ::protobuf::Message for DebugLinkState { self.reset_word_pos = ::std::option::Option::None; self.mnemonic_type = ::std::option::Option::None; self.tokens.clear(); - self.thp_pairing_code_entry_code = ::std::option::Option::None; - self.thp_pairing_code_qr_code = ::std::option::Option::None; - self.thp_pairing_code_nfc = ::std::option::Option::None; self.special_fields.clear(); } @@ -2254,9 +2058,6 @@ impl ::protobuf::Message for DebugLinkState { reset_word_pos: ::std::option::Option::None, mnemonic_type: ::std::option::Option::None, tokens: ::std::vec::Vec::new(), - thp_pairing_code_entry_code: ::std::option::Option::None, - thp_pairing_code_qr_code: ::std::option::Option::None, - thp_pairing_code_nfc: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -2280,6 +2081,629 @@ impl ::protobuf::reflect::ProtobufValue for DebugLinkState { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; } +// @@protoc_insertion_point(message:hw.trezor.messages.debug.DebugLinkGetPairingInfo) +#[derive(PartialEq,Clone,Default,Debug)] +pub struct DebugLinkGetPairingInfo { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkGetPairingInfo.channel_id) + pub channel_id: ::std::option::Option<::std::vec::Vec>, + // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkGetPairingInfo.handshake_hash) + pub handshake_hash: ::std::option::Option<::std::vec::Vec>, + // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkGetPairingInfo.nfc_secret_host) + pub nfc_secret_host: ::std::option::Option<::std::vec::Vec>, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.debug.DebugLinkGetPairingInfo.special_fields) + pub special_fields: ::protobuf::SpecialFields, +} + +impl<'a> ::std::default::Default for &'a DebugLinkGetPairingInfo { + fn default() -> &'a DebugLinkGetPairingInfo { + ::default_instance() + } +} + +impl DebugLinkGetPairingInfo { + pub fn new() -> DebugLinkGetPairingInfo { + ::std::default::Default::default() + } + + // optional bytes channel_id = 1; + + pub fn channel_id(&self) -> &[u8] { + match self.channel_id.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_channel_id(&mut self) { + self.channel_id = ::std::option::Option::None; + } + + pub fn has_channel_id(&self) -> bool { + self.channel_id.is_some() + } + + // Param is passed by value, moved + pub fn set_channel_id(&mut self, v: ::std::vec::Vec) { + self.channel_id = ::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_channel_id(&mut self) -> &mut ::std::vec::Vec { + if self.channel_id.is_none() { + self.channel_id = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.channel_id.as_mut().unwrap() + } + + // Take field + pub fn take_channel_id(&mut self) -> ::std::vec::Vec { + self.channel_id.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + // optional bytes handshake_hash = 2; + + pub fn handshake_hash(&self) -> &[u8] { + match self.handshake_hash.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_handshake_hash(&mut self) { + self.handshake_hash = ::std::option::Option::None; + } + + pub fn has_handshake_hash(&self) -> bool { + self.handshake_hash.is_some() + } + + // Param is passed by value, moved + pub fn set_handshake_hash(&mut self, v: ::std::vec::Vec) { + self.handshake_hash = ::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_handshake_hash(&mut self) -> &mut ::std::vec::Vec { + if self.handshake_hash.is_none() { + self.handshake_hash = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.handshake_hash.as_mut().unwrap() + } + + // Take field + pub fn take_handshake_hash(&mut self) -> ::std::vec::Vec { + self.handshake_hash.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + // optional bytes nfc_secret_host = 3; + + pub fn nfc_secret_host(&self) -> &[u8] { + match self.nfc_secret_host.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_nfc_secret_host(&mut self) { + self.nfc_secret_host = ::std::option::Option::None; + } + + pub fn has_nfc_secret_host(&self) -> bool { + self.nfc_secret_host.is_some() + } + + // Param is passed by value, moved + pub fn set_nfc_secret_host(&mut self, v: ::std::vec::Vec) { + self.nfc_secret_host = ::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_nfc_secret_host(&mut self) -> &mut ::std::vec::Vec { + if self.nfc_secret_host.is_none() { + self.nfc_secret_host = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.nfc_secret_host.as_mut().unwrap() + } + + // Take field + pub fn take_nfc_secret_host(&mut self) -> ::std::vec::Vec { + self.nfc_secret_host.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(3); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "channel_id", + |m: &DebugLinkGetPairingInfo| { &m.channel_id }, + |m: &mut DebugLinkGetPairingInfo| { &mut m.channel_id }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "handshake_hash", + |m: &DebugLinkGetPairingInfo| { &m.handshake_hash }, + |m: &mut DebugLinkGetPairingInfo| { &mut m.handshake_hash }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "nfc_secret_host", + |m: &DebugLinkGetPairingInfo| { &m.nfc_secret_host }, + |m: &mut DebugLinkGetPairingInfo| { &mut m.nfc_secret_host }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( + "DebugLinkGetPairingInfo", + fields, + oneofs, + ) + } +} + +impl ::protobuf::Message for DebugLinkGetPairingInfo { + const NAME: &'static str = "DebugLinkGetPairingInfo"; + + fn is_initialized(&self) -> bool { + 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.channel_id = ::std::option::Option::Some(is.read_bytes()?); + }, + 18 => { + self.handshake_hash = ::std::option::Option::Some(is.read_bytes()?); + }, + 26 => { + self.nfc_secret_host = ::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.channel_id.as_ref() { + my_size += ::protobuf::rt::bytes_size(1, &v); + } + if let Some(v) = self.handshake_hash.as_ref() { + my_size += ::protobuf::rt::bytes_size(2, &v); + } + if let Some(v) = self.nfc_secret_host.as_ref() { + my_size += ::protobuf::rt::bytes_size(3, &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.channel_id.as_ref() { + os.write_bytes(1, v)?; + } + if let Some(v) = self.handshake_hash.as_ref() { + os.write_bytes(2, v)?; + } + if let Some(v) = self.nfc_secret_host.as_ref() { + os.write_bytes(3, 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() -> DebugLinkGetPairingInfo { + DebugLinkGetPairingInfo::new() + } + + fn clear(&mut self) { + self.channel_id = ::std::option::Option::None; + self.handshake_hash = ::std::option::Option::None; + self.nfc_secret_host = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static DebugLinkGetPairingInfo { + static instance: DebugLinkGetPairingInfo = DebugLinkGetPairingInfo { + channel_id: ::std::option::Option::None, + handshake_hash: ::std::option::Option::None, + nfc_secret_host: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } +} + +impl ::protobuf::MessageFull for DebugLinkGetPairingInfo { + 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("DebugLinkGetPairingInfo").unwrap()).clone() + } +} + +impl ::std::fmt::Display for DebugLinkGetPairingInfo { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for DebugLinkGetPairingInfo { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; +} + +// @@protoc_insertion_point(message:hw.trezor.messages.debug.DebugLinkPairingInfo) +#[derive(PartialEq,Clone,Default,Debug)] +pub struct DebugLinkPairingInfo { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkPairingInfo.channel_id) + pub channel_id: ::std::option::Option<::std::vec::Vec>, + // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkPairingInfo.handshake_hash) + pub handshake_hash: ::std::option::Option<::std::vec::Vec>, + // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkPairingInfo.code_entry_code) + pub code_entry_code: ::std::option::Option, + // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkPairingInfo.code_qr_code) + pub code_qr_code: ::std::option::Option<::std::vec::Vec>, + // @@protoc_insertion_point(field:hw.trezor.messages.debug.DebugLinkPairingInfo.nfc_secret_trezor) + pub nfc_secret_trezor: ::std::option::Option<::std::vec::Vec>, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.debug.DebugLinkPairingInfo.special_fields) + pub special_fields: ::protobuf::SpecialFields, +} + +impl<'a> ::std::default::Default for &'a DebugLinkPairingInfo { + fn default() -> &'a DebugLinkPairingInfo { + ::default_instance() + } +} + +impl DebugLinkPairingInfo { + pub fn new() -> DebugLinkPairingInfo { + ::std::default::Default::default() + } + + // optional bytes channel_id = 1; + + pub fn channel_id(&self) -> &[u8] { + match self.channel_id.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_channel_id(&mut self) { + self.channel_id = ::std::option::Option::None; + } + + pub fn has_channel_id(&self) -> bool { + self.channel_id.is_some() + } + + // Param is passed by value, moved + pub fn set_channel_id(&mut self, v: ::std::vec::Vec) { + self.channel_id = ::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_channel_id(&mut self) -> &mut ::std::vec::Vec { + if self.channel_id.is_none() { + self.channel_id = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.channel_id.as_mut().unwrap() + } + + // Take field + pub fn take_channel_id(&mut self) -> ::std::vec::Vec { + self.channel_id.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + // optional bytes handshake_hash = 2; + + pub fn handshake_hash(&self) -> &[u8] { + match self.handshake_hash.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_handshake_hash(&mut self) { + self.handshake_hash = ::std::option::Option::None; + } + + pub fn has_handshake_hash(&self) -> bool { + self.handshake_hash.is_some() + } + + // Param is passed by value, moved + pub fn set_handshake_hash(&mut self, v: ::std::vec::Vec) { + self.handshake_hash = ::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_handshake_hash(&mut self) -> &mut ::std::vec::Vec { + if self.handshake_hash.is_none() { + self.handshake_hash = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.handshake_hash.as_mut().unwrap() + } + + // Take field + pub fn take_handshake_hash(&mut self) -> ::std::vec::Vec { + self.handshake_hash.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + // optional uint32 code_entry_code = 3; + + pub fn code_entry_code(&self) -> u32 { + self.code_entry_code.unwrap_or(0) + } + + pub fn clear_code_entry_code(&mut self) { + self.code_entry_code = ::std::option::Option::None; + } + + pub fn has_code_entry_code(&self) -> bool { + self.code_entry_code.is_some() + } + + // Param is passed by value, moved + pub fn set_code_entry_code(&mut self, v: u32) { + self.code_entry_code = ::std::option::Option::Some(v); + } + + // optional bytes code_qr_code = 4; + + pub fn code_qr_code(&self) -> &[u8] { + match self.code_qr_code.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_code_qr_code(&mut self) { + self.code_qr_code = ::std::option::Option::None; + } + + pub fn has_code_qr_code(&self) -> bool { + self.code_qr_code.is_some() + } + + // Param is passed by value, moved + pub fn set_code_qr_code(&mut self, v: ::std::vec::Vec) { + self.code_qr_code = ::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_code_qr_code(&mut self) -> &mut ::std::vec::Vec { + if self.code_qr_code.is_none() { + self.code_qr_code = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.code_qr_code.as_mut().unwrap() + } + + // Take field + pub fn take_code_qr_code(&mut self) -> ::std::vec::Vec { + self.code_qr_code.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + // optional bytes nfc_secret_trezor = 5; + + pub fn nfc_secret_trezor(&self) -> &[u8] { + match self.nfc_secret_trezor.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_nfc_secret_trezor(&mut self) { + self.nfc_secret_trezor = ::std::option::Option::None; + } + + pub fn has_nfc_secret_trezor(&self) -> bool { + self.nfc_secret_trezor.is_some() + } + + // Param is passed by value, moved + pub fn set_nfc_secret_trezor(&mut self, v: ::std::vec::Vec) { + self.nfc_secret_trezor = ::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_nfc_secret_trezor(&mut self) -> &mut ::std::vec::Vec { + if self.nfc_secret_trezor.is_none() { + self.nfc_secret_trezor = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.nfc_secret_trezor.as_mut().unwrap() + } + + // Take field + pub fn take_nfc_secret_trezor(&mut self) -> ::std::vec::Vec { + self.nfc_secret_trezor.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(5); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "channel_id", + |m: &DebugLinkPairingInfo| { &m.channel_id }, + |m: &mut DebugLinkPairingInfo| { &mut m.channel_id }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "handshake_hash", + |m: &DebugLinkPairingInfo| { &m.handshake_hash }, + |m: &mut DebugLinkPairingInfo| { &mut m.handshake_hash }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "code_entry_code", + |m: &DebugLinkPairingInfo| { &m.code_entry_code }, + |m: &mut DebugLinkPairingInfo| { &mut m.code_entry_code }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "code_qr_code", + |m: &DebugLinkPairingInfo| { &m.code_qr_code }, + |m: &mut DebugLinkPairingInfo| { &mut m.code_qr_code }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "nfc_secret_trezor", + |m: &DebugLinkPairingInfo| { &m.nfc_secret_trezor }, + |m: &mut DebugLinkPairingInfo| { &mut m.nfc_secret_trezor }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( + "DebugLinkPairingInfo", + fields, + oneofs, + ) + } +} + +impl ::protobuf::Message for DebugLinkPairingInfo { + const NAME: &'static str = "DebugLinkPairingInfo"; + + fn is_initialized(&self) -> bool { + 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.channel_id = ::std::option::Option::Some(is.read_bytes()?); + }, + 18 => { + self.handshake_hash = ::std::option::Option::Some(is.read_bytes()?); + }, + 24 => { + self.code_entry_code = ::std::option::Option::Some(is.read_uint32()?); + }, + 34 => { + self.code_qr_code = ::std::option::Option::Some(is.read_bytes()?); + }, + 42 => { + self.nfc_secret_trezor = ::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.channel_id.as_ref() { + my_size += ::protobuf::rt::bytes_size(1, &v); + } + if let Some(v) = self.handshake_hash.as_ref() { + my_size += ::protobuf::rt::bytes_size(2, &v); + } + if let Some(v) = self.code_entry_code { + my_size += ::protobuf::rt::uint32_size(3, v); + } + if let Some(v) = self.code_qr_code.as_ref() { + my_size += ::protobuf::rt::bytes_size(4, &v); + } + if let Some(v) = self.nfc_secret_trezor.as_ref() { + my_size += ::protobuf::rt::bytes_size(5, &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.channel_id.as_ref() { + os.write_bytes(1, v)?; + } + if let Some(v) = self.handshake_hash.as_ref() { + os.write_bytes(2, v)?; + } + if let Some(v) = self.code_entry_code { + os.write_uint32(3, v)?; + } + if let Some(v) = self.code_qr_code.as_ref() { + os.write_bytes(4, v)?; + } + if let Some(v) = self.nfc_secret_trezor.as_ref() { + os.write_bytes(5, 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() -> DebugLinkPairingInfo { + DebugLinkPairingInfo::new() + } + + fn clear(&mut self) { + self.channel_id = ::std::option::Option::None; + self.handshake_hash = ::std::option::Option::None; + self.code_entry_code = ::std::option::Option::None; + self.code_qr_code = ::std::option::Option::None; + self.nfc_secret_trezor = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static DebugLinkPairingInfo { + static instance: DebugLinkPairingInfo = DebugLinkPairingInfo { + channel_id: ::std::option::Option::None, + handshake_hash: ::std::option::Option::None, + code_entry_code: ::std::option::Option::None, + code_qr_code: ::std::option::Option::None, + nfc_secret_trezor: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } +} + +impl ::protobuf::MessageFull for DebugLinkPairingInfo { + 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("DebugLinkPairingInfo").unwrap()).clone() + } +} + +impl ::std::fmt::Display for DebugLinkPairingInfo { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for DebugLinkPairingInfo { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; +} + // @@protoc_insertion_point(message:hw.trezor.messages.debug.DebugLinkStop) #[derive(PartialEq,Clone,Default,Debug)] pub struct DebugLinkStop { @@ -3849,44 +4273,47 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x01\x20\x03(\tR\x06tokens:\x02\x18\x01\"-\n\x15DebugLinkReseedRandom\ \x12\x14\n\x05value\x18\x01\x20\x01(\rR\x05value\"j\n\x15DebugLinkRecord\ Screen\x12)\n\x10target_directory\x18\x01\x20\x01(\tR\x0ftargetDirectory\ - \x12&\n\rrefresh_index\x18\x02\x20\x01(\r:\x010R\x0crefreshIndex\"\xb7\ + \x12&\n\rrefresh_index\x18\x02\x20\x01(\r:\x010R\x0crefreshIndex\"\x91\ \x02\n\x11DebugLinkGetState\x12(\n\x0ewait_word_list\x18\x01\x20\x01(\ \x08R\x0cwaitWordListB\x02\x18\x01\x12&\n\rwait_word_pos\x18\x02\x20\x01\ (\x08R\x0bwaitWordPosB\x02\x18\x01\x12e\n\x0bwait_layout\x18\x03\x20\x01\ (\x0e29.hw.trezor.messages.debug.DebugLinkGetState.DebugWaitType:\tIMMED\ - IATER\nwaitLayout\x12$\n\x0ethp_channel_id\x18\x04\x20\x01(\x0cR\x0cthpC\ - hannelId\"C\n\rDebugWaitType\x12\r\n\tIMMEDIATE\x10\0\x12\x0f\n\x0bNEXT_\ - LAYOUT\x10\x01\x12\x12\n\x0eCURRENT_LAYOUT\x10\x02\"\xbe\x05\n\x0eDebugL\ - inkState\x12\x16\n\x06layout\x18\x01\x20\x01(\x0cR\x06layout\x12\x10\n\ - \x03pin\x18\x02\x20\x01(\tR\x03pin\x12\x16\n\x06matrix\x18\x03\x20\x01(\ - \tR\x06matrix\x12'\n\x0fmnemonic_secret\x18\x04\x20\x01(\x0cR\x0emnemoni\ - cSecret\x129\n\x04node\x18\x05\x20\x01(\x0b2%.hw.trezor.messages.common.\ - HDNodeTypeR\x04node\x123\n\x15passphrase_protection\x18\x06\x20\x01(\x08\ - R\x14passphraseProtection\x12\x1d\n\nreset_word\x18\x07\x20\x01(\tR\tres\ - etWord\x12#\n\rreset_entropy\x18\x08\x20\x01(\x0cR\x0cresetEntropy\x12,\ - \n\x12recovery_fake_word\x18\t\x20\x01(\tR\x10recoveryFakeWord\x12*\n\ - \x11recovery_word_pos\x18\n\x20\x01(\rR\x0frecoveryWordPos\x12$\n\x0eres\ - et_word_pos\x18\x0b\x20\x01(\rR\x0cresetWordPos\x12N\n\rmnemonic_type\ - \x18\x0c\x20\x01(\x0e2).hw.trezor.messages.management.BackupTypeR\x0cmne\ - monicType\x12\x16\n\x06tokens\x18\r\x20\x03(\tR\x06tokens\x12<\n\x1bthp_\ - pairing_code_entry_code\x18\x0e\x20\x01(\rR\x17thpPairingCodeEntryCode\ - \x126\n\x18thp_pairing_code_qr_code\x18\x0f\x20\x01(\x0cR\x14thpPairingC\ - odeQrCode\x12/\n\x14thp_pairing_code_nfc\x18\x10\x20\x01(\x0cR\x11thpPai\ - ringCodeNfc\"\x0f\n\rDebugLinkStop\"P\n\x0cDebugLinkLog\x12\x14\n\x05lev\ - el\x18\x01\x20\x01(\rR\x05level\x12\x16\n\x06bucket\x18\x02\x20\x01(\tR\ - \x06bucket\x12\x12\n\x04text\x18\x03\x20\x01(\tR\x04text\"G\n\x13DebugLi\ - nkMemoryRead\x12\x18\n\x07address\x18\x01\x20\x01(\rR\x07address\x12\x16\ - \n\x06length\x18\x02\x20\x01(\rR\x06length\")\n\x0fDebugLinkMemory\x12\ - \x16\n\x06memory\x18\x01\x20\x01(\x0cR\x06memory\"^\n\x14DebugLinkMemory\ - Write\x12\x18\n\x07address\x18\x01\x20\x01(\rR\x07address\x12\x16\n\x06m\ - emory\x18\x02\x20\x01(\x0cR\x06memory\x12\x14\n\x05flash\x18\x03\x20\x01\ - (\x08R\x05flash\"-\n\x13DebugLinkFlashErase\x12\x16\n\x06sector\x18\x01\ - \x20\x01(\rR\x06sector\".\n\x14DebugLinkEraseSdCard\x12\x16\n\x06format\ - \x18\x01\x20\x01(\x08R\x06format\"0\n\x14DebugLinkWatchLayout\x12\x14\n\ - \x05watch\x18\x01\x20\x01(\x08R\x05watch:\x02\x18\x01\"\x1f\n\x19DebugLi\ - nkResetDebugEvents:\x02\x18\x01\"\x1a\n\x18DebugLinkOptigaSetSecMaxB=\n#\ - com.satoshilabs.trezor.lib.protobufB\x12TrezorMessageDebug\x80\xa6\x1d\ - \x01\ + IATER\nwaitLayout\"C\n\rDebugWaitType\x12\r\n\tIMMEDIATE\x10\0\x12\x0f\n\ + \x0bNEXT_LAYOUT\x10\x01\x12\x12\n\x0eCURRENT_LAYOUT\x10\x02\"\x97\x04\n\ + \x0eDebugLinkState\x12\x16\n\x06layout\x18\x01\x20\x01(\x0cR\x06layout\ + \x12\x10\n\x03pin\x18\x02\x20\x01(\tR\x03pin\x12\x16\n\x06matrix\x18\x03\ + \x20\x01(\tR\x06matrix\x12'\n\x0fmnemonic_secret\x18\x04\x20\x01(\x0cR\ + \x0emnemonicSecret\x129\n\x04node\x18\x05\x20\x01(\x0b2%.hw.trezor.messa\ + ges.common.HDNodeTypeR\x04node\x123\n\x15passphrase_protection\x18\x06\ + \x20\x01(\x08R\x14passphraseProtection\x12\x1d\n\nreset_word\x18\x07\x20\ + \x01(\tR\tresetWord\x12#\n\rreset_entropy\x18\x08\x20\x01(\x0cR\x0creset\ + Entropy\x12,\n\x12recovery_fake_word\x18\t\x20\x01(\tR\x10recoveryFakeWo\ + rd\x12*\n\x11recovery_word_pos\x18\n\x20\x01(\rR\x0frecoveryWordPos\x12$\ + \n\x0ereset_word_pos\x18\x0b\x20\x01(\rR\x0cresetWordPos\x12N\n\rmnemoni\ + c_type\x18\x0c\x20\x01(\x0e2).hw.trezor.messages.management.BackupTypeR\ + \x0cmnemonicType\x12\x16\n\x06tokens\x18\r\x20\x03(\tR\x06tokens\"\x87\ + \x01\n\x17DebugLinkGetPairingInfo\x12\x1d\n\nchannel_id\x18\x01\x20\x01(\ + \x0cR\tchannelId\x12%\n\x0ehandshake_hash\x18\x02\x20\x01(\x0cR\rhandsha\ + keHash\x12&\n\x0fnfc_secret_host\x18\x03\x20\x01(\x0cR\rnfcSecretHost\"\ + \xd2\x01\n\x14DebugLinkPairingInfo\x12\x1d\n\nchannel_id\x18\x01\x20\x01\ + (\x0cR\tchannelId\x12%\n\x0ehandshake_hash\x18\x02\x20\x01(\x0cR\rhandsh\ + akeHash\x12&\n\x0fcode_entry_code\x18\x03\x20\x01(\rR\rcodeEntryCode\x12\ + \x20\n\x0ccode_qr_code\x18\x04\x20\x01(\x0cR\ncodeQrCode\x12*\n\x11nfc_s\ + ecret_trezor\x18\x05\x20\x01(\x0cR\x0fnfcSecretTrezor\"\x0f\n\rDebugLink\ + Stop\"P\n\x0cDebugLinkLog\x12\x14\n\x05level\x18\x01\x20\x01(\rR\x05leve\ + l\x12\x16\n\x06bucket\x18\x02\x20\x01(\tR\x06bucket\x12\x12\n\x04text\ + \x18\x03\x20\x01(\tR\x04text\"G\n\x13DebugLinkMemoryRead\x12\x18\n\x07ad\ + dress\x18\x01\x20\x01(\rR\x07address\x12\x16\n\x06length\x18\x02\x20\x01\ + (\rR\x06length\")\n\x0fDebugLinkMemory\x12\x16\n\x06memory\x18\x01\x20\ + \x01(\x0cR\x06memory\"^\n\x14DebugLinkMemoryWrite\x12\x18\n\x07address\ + \x18\x01\x20\x01(\rR\x07address\x12\x16\n\x06memory\x18\x02\x20\x01(\x0c\ + R\x06memory\x12\x14\n\x05flash\x18\x03\x20\x01(\x08R\x05flash\"-\n\x13De\ + bugLinkFlashErase\x12\x16\n\x06sector\x18\x01\x20\x01(\rR\x06sector\".\n\ + \x14DebugLinkEraseSdCard\x12\x16\n\x06format\x18\x01\x20\x01(\x08R\x06fo\ + rmat\"0\n\x14DebugLinkWatchLayout\x12\x14\n\x05watch\x18\x01\x20\x01(\ + \x08R\x05watch:\x02\x18\x01\"\x1f\n\x19DebugLinkResetDebugEvents:\x02\ + \x18\x01\"\x1a\n\x18DebugLinkOptigaSetSecMaxB=\n#com.satoshilabs.trezor.\ + lib.protobufB\x12TrezorMessageDebug\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -3907,13 +4334,15 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { deps.push(super::messages_common::file_descriptor().clone()); deps.push(super::messages_management::file_descriptor().clone()); deps.push(super::options::file_descriptor().clone()); - let mut messages = ::std::vec::Vec::with_capacity(16); + let mut messages = ::std::vec::Vec::with_capacity(18); messages.push(DebugLinkDecision::generated_message_descriptor_data()); messages.push(DebugLinkLayout::generated_message_descriptor_data()); messages.push(DebugLinkReseedRandom::generated_message_descriptor_data()); messages.push(DebugLinkRecordScreen::generated_message_descriptor_data()); messages.push(DebugLinkGetState::generated_message_descriptor_data()); messages.push(DebugLinkState::generated_message_descriptor_data()); + messages.push(DebugLinkGetPairingInfo::generated_message_descriptor_data()); + messages.push(DebugLinkPairingInfo::generated_message_descriptor_data()); messages.push(DebugLinkStop::generated_message_descriptor_data()); messages.push(DebugLinkLog::generated_message_descriptor_data()); messages.push(DebugLinkMemoryRead::generated_message_descriptor_data()); diff --git a/tests/device_tests/thp/test_thp.py b/tests/device_tests/thp/test_thp.py index d48f615806a..c436213694f 100644 --- a/tests/device_tests/thp/test_thp.py +++ b/tests/device_tests/thp/test_thp.py @@ -155,12 +155,15 @@ def test_pairing_qr_code(client: Client) -> None: _send_message(ButtonAck()) # Read code from "Trezor's display" using debuglink - state = client.debug.state(thp_channel_id=protocol.channel_id.to_bytes(2, "big")) - code = state.thp_pairing_code_qr_code + + pairing_info = client.debug.pairing_info( + thp_channel_id=protocol.channel_id.to_bytes(2, "big") + ) + code = pairing_info.code_qr_code # Compute tag for response sha_ctx = hashlib.sha256(protocol.handshake_hash) - sha_ctx.update(state.thp_pairing_code_qr_code) + sha_ctx.update(code) tag = sha_ctx.digest() _send_message(ThpQrCodeTag(tag=tag)) @@ -218,8 +221,10 @@ def test_pairing_code_entry(client: Client) -> None: _read_message(ButtonRequest) _send_message(ButtonAck()) - state = client.debug.state(thp_channel_id=protocol.channel_id.to_bytes(2, "big")) - code = state.thp_pairing_code_entry_code + pairing_info = client.debug.pairing_info( + thp_channel_id=protocol.channel_id.to_bytes(2, "big") + ) + code = pairing_info.code_entry_code # TODO fix missing CPACE cpace_shared_secret = b"\x01"