1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-03-12 14:16:06 +00:00

BLE handling in micropython

This commit is contained in:
tychovrahe 2024-10-01 11:09:17 +02:00 committed by M1nd3r
parent 8aa2606d4a
commit b62a5aec6b
24 changed files with 731 additions and 274 deletions

View File

@ -0,0 +1,30 @@
syntax = "proto2";
package hw.trezor.messages.ble;
// Sugar for easier handling in Java
option java_package = "com.satoshilabs.trezor.lib.protobuf";
option java_outer_classname = "TrezorMessageBLE";
import "options.proto";
option (include_in_bitcoin_only) = true;
/**
* Request: erases all BLE bonds
* @start
* @next Success
* @next Failure
*/
message EraseBonds {
}
/**
* Request: disconnect
* @start
* @next Success
* @next Failure
*/
message Disconnect {
}

View File

@ -39,6 +39,7 @@ message Failure {
Failure_PinMismatch = 12;
Failure_WipeCodeMismatch = 13;
Failure_InvalidSession = 14;
Failure_DeviceIsBusy = 15;
Failure_FirmwareError = 99;
}
}

View File

@ -88,6 +88,10 @@ enum MessageType {
MessageType_FirmwareRequest = 8 [(bitcoin_only) = true, (wire_out) = true, (wire_bootloader) = true];
MessageType_ProdTestT1 = 32 [(bitcoin_only) = true, (wire_in) = true, (wire_bootloader) = true];
// BLE
MessageType_EraseBonds = 8006 [(bitcoin_only) = true, (wire_in) = true];
MessageType_Disconnect = 8007 [(bitcoin_only) = true, (wire_in) = true];
// Bitcoin
MessageType_GetPublicKey = 11 [(bitcoin_only) = true, (wire_in) = true];
MessageType_PublicKey = 12 [(bitcoin_only) = true, (wire_out) = true];

View File

@ -1062,6 +1062,10 @@ pub static mp_module_trezorui_api: Module = obj_module! {
/// def button_event(self, event: int, button: int) -> LayoutState | None:
/// """Receive a button event `event` for button `button`."""
///
/// if utils.USE_BLE:
/// def ble_event(self, event: int, data: bytes) -> LayoutState | None:
/// """Receive a BLE events."""
///
/// def progress_event(self, value: int, description: str) -> LayoutState | None:
/// """Receive a progress event."""
///

View File

@ -23,7 +23,7 @@ def erase_bonds() -> bool:
# upymod/modtrezorio/modtrezorio-ble.h
def unpair() -> None:
def unpair() -> bool:
"""
Erases bond for current connection, if any
"""

View File

@ -22,6 +22,9 @@ class LayoutObj(Generic[T]):
if utils.USE_BUTTON:
def button_event(self, event: int, button: int) -> LayoutState | None:
"""Receive a button event `event` for button `button`."""
if utils.USE_BLE:
def ble_event(self, event: int, data: bytes) -> LayoutState | None:
"""Receive a BLE events."""
def progress_event(self, value: int, description: str) -> LayoutState | None:
"""Receive a progress event."""
def usb_event(self, connected: bool) -> LayoutState | None:

View File

@ -33,6 +33,8 @@ from trezor import utils
all_modules
import all_modules
bluetooth
import bluetooth
boot
import boot
main
@ -367,6 +369,10 @@ apps.management.authenticate_device
import apps.management.authenticate_device
apps.management.backup_device
import apps.management.backup_device
apps.management.ble.disconnect
import apps.management.ble.disconnect
apps.management.ble.erase_bonds
import apps.management.ble.erase_bonds
apps.management.change_language
import apps.management.change_language
apps.management.change_pin

View File

@ -0,0 +1,21 @@
from trezorio import ble
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from trezor.messages import Disconnect, Success
async def disconnect(_msg: Disconnect) -> Success:
from trezor.messages import Success
from trezor.ui.layouts import confirm_action
from trezor.wire.context import get_context
await confirm_action("disconnect", "DISCONNECT")
ctx = get_context()
await ctx.write(Success(message="Erasing"))
ble.disconnect()
raise RuntimeError

View File

@ -0,0 +1,21 @@
from trezorio import ble
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from trezor.messages import EraseBonds, Success
async def erase_bonds(_msg: EraseBonds) -> Success:
from trezor.messages import Success
from trezor.ui.layouts import confirm_action
from trezor.wire.context import get_context
await confirm_action("erase bonds", "ERASE BONDS")
ctx = get_context()
await ctx.write(Success(message="Erasing"))
ble.erase_bonds()
raise RuntimeError

View File

@ -76,6 +76,12 @@ def _find_message_handler_module(msg_type: int) -> str:
if utils.USE_OPTIGA and msg_type == MessageType.AuthenticateDevice:
return "apps.management.authenticate_device"
if utils.USE_BLE:
if msg_type == MessageType.EraseBonds:
return "apps.management.ble.erase_bonds"
if msg_type == MessageType.Disconnect:
return "apps.management.ble.disconnect"
# bitcoin
if msg_type == MessageType.AuthorizeCoinJoin:
return "apps.bitcoin.authorize_coinjoin"

20
core/src/bluetooth.py Normal file
View File

@ -0,0 +1,20 @@
from trezorio import BLE, ble
class BleInterface:
RX_PACKET_LEN = ble.RX_PACKET_LEN
TX_PACKET_LEN = ble.TX_PACKET_LEN
def iface_num(self) -> int:
return BLE
def write(self, msg: bytes) -> int:
return ble.write(msg)
def read(self, buffer: bytearray, offset: int = 0) -> int:
return ble.read(buffer, offset)
# interface used for trezor wire protocol
iface_ble = BleInterface()

View File

@ -49,6 +49,13 @@ import storage.device
usb.bus.open(storage.device.get_device_id())
if utils.USE_BLE:
from trezorio import ble
ble.start_comm()
if ble.peer_count() > 0:
ble.start_advertising(True, storage.device.get_label())
# run the endless loop
while True:
with unimport_manager:

View File

@ -1,9 +1,15 @@
# isort: skip_file
from micropython import const
from trezor import log, loop, utils, wire, workflow
import apps.base
import usb
_PROTOBUF_BUFFER_SIZE = const(8192)
WIRE_BUFFER = bytearray(_PROTOBUF_BUFFER_SIZE)
apps.base.boot()
if not utils.BITCOIN_ONLY and usb.ENABLE_IFACE_WEBAUTHN:
@ -16,12 +22,22 @@ if __debug__:
apps.debug.boot()
# run main event loop and specify which screen is the default
apps.base.set_homescreen()
workflow.start_default()
# initialize the wire codec
wire.setup(usb.iface_wire)
wire.setup(usb.iface_wire, WIRE_BUFFER)
if utils.USE_BLE:
import bluetooth
BLE_BUFFER = bytearray(_PROTOBUF_BUFFER_SIZE)
wire.setup(bluetooth.iface_ble, BLE_BUFFER)
# start the event loop
loop.run()

View File

@ -16,4 +16,5 @@ NotInitialized = 11
PinMismatch = 12
WipeCodeMismatch = 13
InvalidSession = 14
DeviceIsBusy = 15
FirmwareError = 99

View File

@ -60,6 +60,8 @@ FirmwareErase = 6
FirmwareUpload = 7
FirmwareRequest = 8
ProdTestT1 = 32
EraseBonds = 8006
Disconnect = 8007
GetPublicKey = 11
PublicKey = 12
SignTx = 15

View File

@ -39,6 +39,7 @@ if TYPE_CHECKING:
PinMismatch = 12
WipeCodeMismatch = 13
InvalidSession = 14
DeviceIsBusy = 15
FirmwareError = 99
class ButtonRequestType(IntEnum):
@ -409,6 +410,8 @@ if TYPE_CHECKING:
FirmwareUpload = 7
FirmwareRequest = 8
ProdTestT1 = 32
EraseBonds = 8006
Disconnect = 8007
GetPublicKey = 11
PublicKey = 12
SignTx = 15

View File

@ -1256,6 +1256,18 @@ if TYPE_CHECKING:
def is_type_of(cls, msg: Any) -> TypeGuard["TxAckPrevExtraDataWrapper"]:
return isinstance(msg, cls)
class EraseBonds(protobuf.MessageType):
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["EraseBonds"]:
return isinstance(msg, cls)
class Disconnect(protobuf.MessageType):
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["Disconnect"]:
return isinstance(msg, cls)
class CardanoBlockchainPointerType(protobuf.MessageType):
block_index: "int"
tx_index: "int"

View File

@ -381,6 +381,8 @@ class Layout(Generic[T]):
yield self._handle_input_iface(io.BUTTON, self.layout.button_event)
if utils.USE_TOUCH:
yield self._handle_input_iface(io.TOUCH, self.layout.touch_event)
if utils.USE_BLE:
yield self._handle_input_iface(io.BLE_EVENT, self.layout.ble_event)
def _handle_input_iface(
self, iface: int, event_call: Callable[..., LayoutState | None]

View File

@ -23,7 +23,6 @@ reads the message's header. When the message type is known the first handler is
"""
from micropython import const
from typing import TYPE_CHECKING
from trezor import log, loop, protobuf, utils
@ -37,10 +36,6 @@ from .message_handler import failure
# other packages.
from .errors import * # isort:skip # noqa: F401,F403
_PROTOBUF_BUFFER_SIZE = const(8192)
WIRE_BUFFER = bytearray(_PROTOBUF_BUFFER_SIZE)
if TYPE_CHECKING:
from trezorio import WireInterface
from typing import Any, Callable, Coroutine, TypeVar
@ -52,13 +47,13 @@ if TYPE_CHECKING:
LoadedMessageType = TypeVar("LoadedMessageType", bound=protobuf.MessageType)
def setup(iface: WireInterface) -> None:
def setup(iface: WireInterface, buffer: bytearray) -> None:
"""Initialize the wire stack on the provided WireInterface."""
loop.schedule(handle_session(iface))
loop.schedule(handle_session(iface, buffer))
async def handle_session(iface: WireInterface) -> None:
ctx = CodecContext(iface, WIRE_BUFFER)
async def handle_session(iface: WireInterface, buffer: bytearray) -> None:
ctx = CodecContext(iface, buffer)
next_msg: protocol_common.Message | None = None
# Take a mark of modules that are imported at this point, so we can

View File

@ -43,6 +43,7 @@ class FailureType(IntEnum):
PinMismatch = 12
WipeCodeMismatch = 13
InvalidSession = 14
DeviceIsBusy = 15
FirmwareError = 99
@ -462,6 +463,8 @@ class MessageType(IntEnum):
FirmwareUpload = 7
FirmwareRequest = 8
ProdTestT1 = 32
EraseBonds = 8006
Disconnect = 8007
GetPublicKey = 11
PublicKey = 12
SignTx = 15
@ -2207,6 +2210,14 @@ class TxAckPrevExtraDataWrapper(protobuf.MessageType):
self.extra_data_chunk = extra_data_chunk
class EraseBonds(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 8006
class Disconnect(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 8007
class FirmwareErase(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 6
FIELDS = {

View File

@ -60,6 +60,8 @@ trezor_message_impl! {
FirmwareUpload => MessageType_FirmwareUpload,
FirmwareRequest => MessageType_FirmwareRequest,
ProdTestT1 => MessageType_ProdTestT1,
EraseBonds => MessageType_EraseBonds,
Disconnect => MessageType_Disconnect,
CipherKeyValue => MessageType_CipherKeyValue,
CipheredKeyValue => MessageType_CipheredKeyValue,
SignIdentity => MessageType_SignIdentity,

View File

@ -150,6 +150,10 @@ pub enum MessageType {
MessageType_FirmwareRequest = 8,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_ProdTestT1)
MessageType_ProdTestT1 = 32,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_EraseBonds)
MessageType_EraseBonds = 8006,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_Disconnect)
MessageType_Disconnect = 8007,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_GetPublicKey)
MessageType_GetPublicKey = 11,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_PublicKey)
@ -602,6 +606,8 @@ impl ::protobuf::Enum for MessageType {
7 => ::std::option::Option::Some(MessageType::MessageType_FirmwareUpload),
8 => ::std::option::Option::Some(MessageType::MessageType_FirmwareRequest),
32 => ::std::option::Option::Some(MessageType::MessageType_ProdTestT1),
8006 => ::std::option::Option::Some(MessageType::MessageType_EraseBonds),
8007 => ::std::option::Option::Some(MessageType::MessageType_Disconnect),
11 => ::std::option::Option::Some(MessageType::MessageType_GetPublicKey),
12 => ::std::option::Option::Some(MessageType::MessageType_PublicKey),
15 => ::std::option::Option::Some(MessageType::MessageType_SignTx),
@ -859,6 +865,8 @@ impl ::protobuf::Enum for MessageType {
"MessageType_FirmwareUpload" => ::std::option::Option::Some(MessageType::MessageType_FirmwareUpload),
"MessageType_FirmwareRequest" => ::std::option::Option::Some(MessageType::MessageType_FirmwareRequest),
"MessageType_ProdTestT1" => ::std::option::Option::Some(MessageType::MessageType_ProdTestT1),
"MessageType_EraseBonds" => ::std::option::Option::Some(MessageType::MessageType_EraseBonds),
"MessageType_Disconnect" => ::std::option::Option::Some(MessageType::MessageType_Disconnect),
"MessageType_GetPublicKey" => ::std::option::Option::Some(MessageType::MessageType_GetPublicKey),
"MessageType_PublicKey" => ::std::option::Option::Some(MessageType::MessageType_PublicKey),
"MessageType_SignTx" => ::std::option::Option::Some(MessageType::MessageType_SignTx),
@ -1115,6 +1123,8 @@ impl ::protobuf::Enum for MessageType {
MessageType::MessageType_FirmwareUpload,
MessageType::MessageType_FirmwareRequest,
MessageType::MessageType_ProdTestT1,
MessageType::MessageType_EraseBonds,
MessageType::MessageType_Disconnect,
MessageType::MessageType_GetPublicKey,
MessageType::MessageType_PublicKey,
MessageType::MessageType_SignTx,
@ -1377,196 +1387,198 @@ impl ::protobuf::EnumFull for MessageType {
MessageType::MessageType_FirmwareUpload => 58,
MessageType::MessageType_FirmwareRequest => 59,
MessageType::MessageType_ProdTestT1 => 60,
MessageType::MessageType_GetPublicKey => 61,
MessageType::MessageType_PublicKey => 62,
MessageType::MessageType_SignTx => 63,
MessageType::MessageType_TxRequest => 64,
MessageType::MessageType_TxAck => 65,
MessageType::MessageType_GetAddress => 66,
MessageType::MessageType_Address => 67,
MessageType::MessageType_TxAckPaymentRequest => 68,
MessageType::MessageType_SignMessage => 69,
MessageType::MessageType_VerifyMessage => 70,
MessageType::MessageType_MessageSignature => 71,
MessageType::MessageType_GetOwnershipId => 72,
MessageType::MessageType_OwnershipId => 73,
MessageType::MessageType_GetOwnershipProof => 74,
MessageType::MessageType_OwnershipProof => 75,
MessageType::MessageType_AuthorizeCoinJoin => 76,
MessageType::MessageType_CipherKeyValue => 77,
MessageType::MessageType_CipheredKeyValue => 78,
MessageType::MessageType_SignIdentity => 79,
MessageType::MessageType_SignedIdentity => 80,
MessageType::MessageType_GetECDHSessionKey => 81,
MessageType::MessageType_ECDHSessionKey => 82,
MessageType::MessageType_DebugLinkDecision => 83,
MessageType::MessageType_DebugLinkGetState => 84,
MessageType::MessageType_DebugLinkState => 85,
MessageType::MessageType_DebugLinkStop => 86,
MessageType::MessageType_DebugLinkLog => 87,
MessageType::MessageType_DebugLinkMemoryRead => 88,
MessageType::MessageType_DebugLinkMemory => 89,
MessageType::MessageType_DebugLinkMemoryWrite => 90,
MessageType::MessageType_DebugLinkFlashErase => 91,
MessageType::MessageType_DebugLinkLayout => 92,
MessageType::MessageType_DebugLinkReseedRandom => 93,
MessageType::MessageType_DebugLinkRecordScreen => 94,
MessageType::MessageType_DebugLinkEraseSdCard => 95,
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_NostrGetPubkey => 243,
MessageType::MessageType_NostrPubkey => 244,
MessageType::MessageType_NostrSignEvent => 245,
MessageType::MessageType_NostrEventSignature => 246,
MessageType::MessageType_BenchmarkListNames => 247,
MessageType::MessageType_BenchmarkNames => 248,
MessageType::MessageType_BenchmarkRun => 249,
MessageType::MessageType_BenchmarkResult => 250,
MessageType::MessageType_EraseBonds => 61,
MessageType::MessageType_Disconnect => 62,
MessageType::MessageType_GetPublicKey => 63,
MessageType::MessageType_PublicKey => 64,
MessageType::MessageType_SignTx => 65,
MessageType::MessageType_TxRequest => 66,
MessageType::MessageType_TxAck => 67,
MessageType::MessageType_GetAddress => 68,
MessageType::MessageType_Address => 69,
MessageType::MessageType_TxAckPaymentRequest => 70,
MessageType::MessageType_SignMessage => 71,
MessageType::MessageType_VerifyMessage => 72,
MessageType::MessageType_MessageSignature => 73,
MessageType::MessageType_GetOwnershipId => 74,
MessageType::MessageType_OwnershipId => 75,
MessageType::MessageType_GetOwnershipProof => 76,
MessageType::MessageType_OwnershipProof => 77,
MessageType::MessageType_AuthorizeCoinJoin => 78,
MessageType::MessageType_CipherKeyValue => 79,
MessageType::MessageType_CipheredKeyValue => 80,
MessageType::MessageType_SignIdentity => 81,
MessageType::MessageType_SignedIdentity => 82,
MessageType::MessageType_GetECDHSessionKey => 83,
MessageType::MessageType_ECDHSessionKey => 84,
MessageType::MessageType_DebugLinkDecision => 85,
MessageType::MessageType_DebugLinkGetState => 86,
MessageType::MessageType_DebugLinkState => 87,
MessageType::MessageType_DebugLinkStop => 88,
MessageType::MessageType_DebugLinkLog => 89,
MessageType::MessageType_DebugLinkMemoryRead => 90,
MessageType::MessageType_DebugLinkMemory => 91,
MessageType::MessageType_DebugLinkMemoryWrite => 92,
MessageType::MessageType_DebugLinkFlashErase => 93,
MessageType::MessageType_DebugLinkLayout => 94,
MessageType::MessageType_DebugLinkReseedRandom => 95,
MessageType::MessageType_DebugLinkRecordScreen => 96,
MessageType::MessageType_DebugLinkEraseSdCard => 97,
MessageType::MessageType_DebugLinkWatchLayout => 98,
MessageType::MessageType_DebugLinkResetDebugEvents => 99,
MessageType::MessageType_DebugLinkOptigaSetSecMax => 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_NostrGetPubkey => 245,
MessageType::MessageType_NostrPubkey => 246,
MessageType::MessageType_NostrSignEvent => 247,
MessageType::MessageType_NostrEventSignature => 248,
MessageType::MessageType_BenchmarkListNames => 249,
MessageType::MessageType_BenchmarkNames => 250,
MessageType::MessageType_BenchmarkRun => 251,
MessageType::MessageType_BenchmarkResult => 252,
};
Self::enum_descriptor().value_by_index(index)
}
@ -1585,7 +1597,7 @@ impl MessageType {
}
static file_descriptor_proto_data: &'static [u8] = b"\
\n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\x86W\
\n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xd4W\
\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\
@ -1659,37 +1671,39 @@ static file_descriptor_proto_data: &'static [u8] = b"\
\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12-\n\x1bMessageType_FirmwareR\
equest\x10\x08\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x98\xb5\x18\x01\
\x12(\n\x16MessageType_ProdTestT1\x10\x20\x1a\x0c\xb8\xb5\x18\x01\x80\
\xa6\x1d\x01\x90\xb5\x18\x01\x12&\n\x18MessageType_GetPublicKey\x10\x0b\
\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12#\n\x15MessageType_PublicKey\
\x10\x0c\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12\x20\n\x12MessageTyp\
e_SignTx\x10\x0f\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12#\n\x15Messa\
geType_TxRequest\x10\x15\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12\x1f\
\n\x11MessageType_TxAck\x10\x16\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\
\x12$\n\x16MessageType_GetAddress\x10\x1d\x1a\x08\x80\xa6\x1d\x01\x90\
\xb5\x18\x01\x12!\n\x13MessageType_Address\x10\x1e\x1a\x08\x80\xa6\x1d\
\x01\x98\xb5\x18\x01\x12)\n\x1fMessageType_TxAckPaymentRequest\x10%\x1a\
\x04\x90\xb5\x18\x01\x12%\n\x17MessageType_SignMessage\x10&\x1a\x08\x80\
\xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19MessageType_VerifyMessage\x10'\
\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12*\n\x1cMessageType_MessageSi\
gnature\x10(\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12(\n\x1aMessageTy\
pe_GetOwnershipId\x10+\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12%\n\
\x17MessageType_OwnershipId\x10,\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\
\x12+\n\x1dMessageType_GetOwnershipProof\x101\x1a\x08\x80\xa6\x1d\x01\
\x90\xb5\x18\x01\x12(\n\x1aMessageType_OwnershipProof\x102\x1a\x08\x80\
\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_AuthorizeCoinJoin\x10\
3\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_CipherKe\
yValue\x10\x17\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12*\n\x1cMessage\
Type_CipheredKeyValue\x100\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12&\
\n\x18MessageType_SignIdentity\x105\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\
\x01\x12(\n\x1aMessageType_SignedIdentity\x106\x1a\x08\x80\xa6\x1d\x01\
\x98\xb5\x18\x01\x12+\n\x1dMessageType_GetECDHSessionKey\x10=\x1a\x08\
\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_ECDHSessionKey\
\x10>\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x123\n\x1dMessageType_Debu\
gLinkDecision\x10d\x1a\x10\xc0\xb5\x18\x01\xb0\xb5\x18\x01\x80\xa6\x1d\
\x01\xa0\xb5\x18\x01\x12/\n\x1dMessageType_DebugLinkGetState\x10e\x1a\
\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\xa0\xb5\x18\x01\x12(\n\x1aMessageTy\
pe_DebugLinkState\x10f\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12'\n\
\x19MessageType_DebugLinkStop\x10g\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\
\xa6\x1d\x01\x90\xb5\x18\x01\x12%\n\x16MessageType_EraseBonds\x10\xc6>\
\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12%\n\x16MessageType_Disconnec\
t\x10\xc7>\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12&\n\x18MessageType\
_GetPublicKey\x10\x0b\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12#\n\x15\
MessageType_PublicKey\x10\x0c\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\
\x12\x20\n\x12MessageType_SignTx\x10\x0f\x1a\x08\x80\xa6\x1d\x01\x90\xb5\
\x18\x01\x12#\n\x15MessageType_TxRequest\x10\x15\x1a\x08\x80\xa6\x1d\x01\
\x98\xb5\x18\x01\x12\x1f\n\x11MessageType_TxAck\x10\x16\x1a\x08\x80\xa6\
\x1d\x01\x90\xb5\x18\x01\x12$\n\x16MessageType_GetAddress\x10\x1d\x1a\
\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12!\n\x13MessageType_Address\x10\
\x1e\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12)\n\x1fMessageType_TxAck\
PaymentRequest\x10%\x1a\x04\x90\xb5\x18\x01\x12%\n\x17MessageType_SignMe\
ssage\x10&\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19MessageType\
_VerifyMessage\x10'\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12*\n\x1cMe\
ssageType_MessageSignature\x10(\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\
\x12(\n\x1aMessageType_GetOwnershipId\x10+\x1a\x08\x80\xa6\x1d\x01\x90\
\xb5\x18\x01\x12%\n\x17MessageType_OwnershipId\x10,\x1a\x08\x80\xa6\x1d\
\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_GetOwnershipProof\x101\x1a\
\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_OwnershipProo\
f\x102\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_Aut\
horizeCoinJoin\x103\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMe\
ssageType_CipherKeyValue\x10\x17\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\
\x12*\n\x1cMessageType_CipheredKeyValue\x100\x1a\x08\x80\xa6\x1d\x01\x98\
\xb5\x18\x01\x12&\n\x18MessageType_SignIdentity\x105\x1a\x08\x80\xa6\x1d\
\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_SignedIdentity\x106\x1a\x08\
\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_GetECDHSessionKey\
\x10=\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_ECDH\
SessionKey\x10>\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x123\n\x1dMessag\
eType_DebugLinkDecision\x10d\x1a\x10\xc0\xb5\x18\x01\xb0\xb5\x18\x01\x80\
\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x1dMessageType_DebugLinkGetState\x10\
e\x1a\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\xa0\xb5\x18\x01\x12(\n\x1aMess\
ageType_DebugLinkState\x10f\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12'\
\n\x19MessageType_DebugLinkStop\x10g\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\
\x01\x12&\n\x18MessageType_DebugLinkLog\x10h\x1a\x08\x80\xa6\x1d\x01\xa8\
\xb5\x18\x01\x12-\n\x1fMessageType_DebugLinkMemoryRead\x10n\x1a\x08\x80\
\xa6\x1d\x01\xa0\xb5\x18\x01\x12)\n\x1bMessageType_DebugLinkMemory\x10o\

View File

@ -0,0 +1,269 @@
// This file is generated by rust-protobuf 3.3.0. Do not edit
// .proto file is parsed by protoc 3.19.6
// @generated
// https://github.com/rust-lang/rust-clippy/issues/702
#![allow(unknown_lints)]
#![allow(clippy::all)]
#![allow(unused_attributes)]
#![cfg_attr(rustfmt, rustfmt::skip)]
#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unused_results)]
#![allow(unused_mut)]
//! Generated file from `messages-ble.proto`
/// Generated files are compatible only with the same version
/// of protobuf runtime.
const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_3_0;
// @@protoc_insertion_point(message:hw.trezor.messages.ble.EraseBonds)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct EraseBonds {
// special fields
// @@protoc_insertion_point(special_field:hw.trezor.messages.ble.EraseBonds.special_fields)
pub special_fields: ::protobuf::SpecialFields,
}
impl<'a> ::std::default::Default for &'a EraseBonds {
fn default() -> &'a EraseBonds {
<EraseBonds as ::protobuf::Message>::default_instance()
}
}
impl EraseBonds {
pub fn new() -> EraseBonds {
::std::default::Default::default()
}
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
let mut fields = ::std::vec::Vec::with_capacity(0);
let mut oneofs = ::std::vec::Vec::with_capacity(0);
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<EraseBonds>(
"EraseBonds",
fields,
oneofs,
)
}
}
impl ::protobuf::Message for EraseBonds {
const NAME: &'static str = "EraseBonds";
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 {
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;
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<()> {
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() -> EraseBonds {
EraseBonds::new()
}
fn clear(&mut self) {
self.special_fields.clear();
}
fn default_instance() -> &'static EraseBonds {
static instance: EraseBonds = EraseBonds {
special_fields: ::protobuf::SpecialFields::new(),
};
&instance
}
}
impl ::protobuf::MessageFull for EraseBonds {
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("EraseBonds").unwrap()).clone()
}
}
impl ::std::fmt::Display for EraseBonds {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f)
}
}
impl ::protobuf::reflect::ProtobufValue for EraseBonds {
type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}
// @@protoc_insertion_point(message:hw.trezor.messages.ble.Disconnect)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct Disconnect {
// special fields
// @@protoc_insertion_point(special_field:hw.trezor.messages.ble.Disconnect.special_fields)
pub special_fields: ::protobuf::SpecialFields,
}
impl<'a> ::std::default::Default for &'a Disconnect {
fn default() -> &'a Disconnect {
<Disconnect as ::protobuf::Message>::default_instance()
}
}
impl Disconnect {
pub fn new() -> Disconnect {
::std::default::Default::default()
}
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
let mut fields = ::std::vec::Vec::with_capacity(0);
let mut oneofs = ::std::vec::Vec::with_capacity(0);
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Disconnect>(
"Disconnect",
fields,
oneofs,
)
}
}
impl ::protobuf::Message for Disconnect {
const NAME: &'static str = "Disconnect";
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 {
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;
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<()> {
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() -> Disconnect {
Disconnect::new()
}
fn clear(&mut self) {
self.special_fields.clear();
}
fn default_instance() -> &'static Disconnect {
static instance: Disconnect = Disconnect {
special_fields: ::protobuf::SpecialFields::new(),
};
&instance
}
}
impl ::protobuf::MessageFull for Disconnect {
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("Disconnect").unwrap()).clone()
}
}
impl ::std::fmt::Display for Disconnect {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f)
}
}
impl ::protobuf::reflect::ProtobufValue for Disconnect {
type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}
static file_descriptor_proto_data: &'static [u8] = b"\
\n\x12messages-ble.proto\x12\x16hw.trezor.messages.ble\x1a\roptions.prot\
o\"\x0c\n\nEraseBonds\"\x0c\n\nDisconnectB;\n#com.satoshilabs.trezor.lib\
.protobufB\x10TrezorMessageBLE\x80\xa6\x1d\x01\
";
/// `FileDescriptorProto` object which was a source for this generated file
fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
file_descriptor_proto_lazy.get(|| {
::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
})
}
/// `FileDescriptor` object which allows dynamic access to files
pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
file_descriptor.get(|| {
let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
let mut deps = ::std::vec::Vec::with_capacity(1);
deps.push(super::options::file_descriptor().clone());
let mut messages = ::std::vec::Vec::with_capacity(2);
messages.push(EraseBonds::generated_message_descriptor_data());
messages.push(Disconnect::generated_message_descriptor_data());
let mut enums = ::std::vec::Vec::with_capacity(0);
::protobuf::reflect::GeneratedFileDescriptor::new_generated(
file_descriptor_proto(),
deps,
messages,
enums,
)
});
::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
})
}

View File

@ -414,6 +414,8 @@ pub mod failure {
Failure_WipeCodeMismatch = 13,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.common.Failure.FailureType.Failure_InvalidSession)
Failure_InvalidSession = 14,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.common.Failure.FailureType.Failure_DeviceIsBusy)
Failure_DeviceIsBusy = 15,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.common.Failure.FailureType.Failure_FirmwareError)
Failure_FirmwareError = 99,
}
@ -441,6 +443,7 @@ pub mod failure {
12 => ::std::option::Option::Some(FailureType::Failure_PinMismatch),
13 => ::std::option::Option::Some(FailureType::Failure_WipeCodeMismatch),
14 => ::std::option::Option::Some(FailureType::Failure_InvalidSession),
15 => ::std::option::Option::Some(FailureType::Failure_DeviceIsBusy),
99 => ::std::option::Option::Some(FailureType::Failure_FirmwareError),
_ => ::std::option::Option::None
}
@ -462,6 +465,7 @@ pub mod failure {
"Failure_PinMismatch" => ::std::option::Option::Some(FailureType::Failure_PinMismatch),
"Failure_WipeCodeMismatch" => ::std::option::Option::Some(FailureType::Failure_WipeCodeMismatch),
"Failure_InvalidSession" => ::std::option::Option::Some(FailureType::Failure_InvalidSession),
"Failure_DeviceIsBusy" => ::std::option::Option::Some(FailureType::Failure_DeviceIsBusy),
"Failure_FirmwareError" => ::std::option::Option::Some(FailureType::Failure_FirmwareError),
_ => ::std::option::Option::None
}
@ -482,6 +486,7 @@ pub mod failure {
FailureType::Failure_PinMismatch,
FailureType::Failure_WipeCodeMismatch,
FailureType::Failure_InvalidSession,
FailureType::Failure_DeviceIsBusy,
FailureType::Failure_FirmwareError,
];
}
@ -508,7 +513,8 @@ pub mod failure {
FailureType::Failure_PinMismatch => 11,
FailureType::Failure_WipeCodeMismatch => 12,
FailureType::Failure_InvalidSession => 13,
FailureType::Failure_FirmwareError => 14,
FailureType::Failure_DeviceIsBusy => 14,
FailureType::Failure_FirmwareError => 15,
};
Self::enum_descriptor().value_by_index(index)
}
@ -2481,9 +2487,9 @@ impl ::protobuf::reflect::ProtobufValue for HDNodeType {
static file_descriptor_proto_data: &'static [u8] = b"\
\n\x15messages-common.proto\x12\x19hw.trezor.messages.common\x1a\roption\
s.proto\"%\n\x07Success\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07m\
essage\"\x8f\x04\n\x07Failure\x12B\n\x04code\x18\x01\x20\x01(\x0e2..hw.t\
essage\"\xa9\x04\n\x07Failure\x12B\n\x04code\x18\x01\x20\x01(\x0e2..hw.t\
rezor.messages.common.Failure.FailureTypeR\x04code\x12\x18\n\x07message\
\x18\x02\x20\x01(\tR\x07message\"\xa5\x03\n\x0bFailureType\x12\x1d\n\x19\
\x18\x02\x20\x01(\tR\x07message\"\xbf\x03\n\x0bFailureType\x12\x1d\n\x19\
Failure_UnexpectedMessage\x10\x01\x12\x1a\n\x16Failure_ButtonExpected\
\x10\x02\x12\x15\n\x11Failure_DataError\x10\x03\x12\x1b\n\x17Failure_Act\
ionCancelled\x10\x04\x12\x17\n\x13Failure_PinExpected\x10\x05\x12\x18\n\
@ -2492,44 +2498,45 @@ static file_descriptor_proto_data: &'static [u8] = b"\
essError\x10\t\x12\x1a\n\x16Failure_NotEnoughFunds\x10\n\x12\x1a\n\x16Fa\
ilure_NotInitialized\x10\x0b\x12\x17\n\x13Failure_PinMismatch\x10\x0c\
\x12\x1c\n\x18Failure_WipeCodeMismatch\x10\r\x12\x1a\n\x16Failure_Invali\
dSession\x10\x0e\x12\x19\n\x15Failure_FirmwareError\x10c\"\xab\x06\n\rBu\
ttonRequest\x12N\n\x04code\x18\x01\x20\x01(\x0e2:.hw.trezor.messages.com\
mon.ButtonRequest.ButtonRequestTypeR\x04code\x12\x14\n\x05pages\x18\x02\
\x20\x01(\rR\x05pages\x12\x12\n\x04name\x18\x04\x20\x01(\tR\x04name\"\
\x99\x05\n\x11ButtonRequestType\x12\x17\n\x13ButtonRequest_Other\x10\x01\
\x12\"\n\x1eButtonRequest_FeeOverThreshold\x10\x02\x12\x1f\n\x1bButtonRe\
quest_ConfirmOutput\x10\x03\x12\x1d\n\x19ButtonRequest_ResetDevice\x10\
\x04\x12\x1d\n\x19ButtonRequest_ConfirmWord\x10\x05\x12\x1c\n\x18ButtonR\
equest_WipeDevice\x10\x06\x12\x1d\n\x19ButtonRequest_ProtectCall\x10\x07\
\x12\x18\n\x14ButtonRequest_SignTx\x10\x08\x12\x1f\n\x1bButtonRequest_Fi\
rmwareCheck\x10\t\x12\x19\n\x15ButtonRequest_Address\x10\n\x12\x1b\n\x17\
ButtonRequest_PublicKey\x10\x0b\x12#\n\x1fButtonRequest_MnemonicWordCoun\
t\x10\x0c\x12\x1f\n\x1bButtonRequest_MnemonicInput\x10\r\x120\n(_Depreca\
ted_ButtonRequest_PassphraseType\x10\x0e\x1a\x02\x08\x01\x12'\n#ButtonRe\
quest_UnknownDerivationPath\x10\x0f\x12\"\n\x1eButtonRequest_RecoveryHom\
epage\x10\x10\x12\x19\n\x15ButtonRequest_Success\x10\x11\x12\x19\n\x15Bu\
ttonRequest_Warning\x10\x12\x12!\n\x1dButtonRequest_PassphraseEntry\x10\
\x13\x12\x1a\n\x16ButtonRequest_PinEntry\x10\x14J\x04\x08\x03\x10\x04\"\
\x0b\n\tButtonAck\"\xbb\x02\n\x10PinMatrixRequest\x12T\n\x04type\x18\x01\
\x20\x01(\x0e2@.hw.trezor.messages.common.PinMatrixRequest.PinMatrixRequ\
estTypeR\x04type\"\xd0\x01\n\x14PinMatrixRequestType\x12\x20\n\x1cPinMat\
rixRequestType_Current\x10\x01\x12!\n\x1dPinMatrixRequestType_NewFirst\
\x10\x02\x12\"\n\x1ePinMatrixRequestType_NewSecond\x10\x03\x12&\n\"PinMa\
trixRequestType_WipeCodeFirst\x10\x04\x12'\n#PinMatrixRequestType_WipeCo\
deSecond\x10\x05\"\x20\n\x0cPinMatrixAck\x12\x10\n\x03pin\x18\x01\x20\
\x02(\tR\x03pin\"5\n\x11PassphraseRequest\x12\x20\n\n_on_device\x18\x01\
\x20\x01(\x08R\x08OnDeviceB\x02\x18\x01\"g\n\rPassphraseAck\x12\x1e\n\np\
assphrase\x18\x01\x20\x01(\tR\npassphrase\x12\x19\n\x06_state\x18\x02\
\x20\x01(\x0cR\x05StateB\x02\x18\x01\x12\x1b\n\ton_device\x18\x03\x20\
\x01(\x08R\x08onDevice\"=\n!Deprecated_PassphraseStateRequest\x12\x14\n\
\x05state\x18\x01\x20\x01(\x0cR\x05state:\x02\x18\x01\"#\n\x1dDeprecated\
_PassphraseStateAck:\x02\x18\x01\"\xc0\x01\n\nHDNodeType\x12\x14\n\x05de\
pth\x18\x01\x20\x02(\rR\x05depth\x12\x20\n\x0bfingerprint\x18\x02\x20\
\x02(\rR\x0bfingerprint\x12\x1b\n\tchild_num\x18\x03\x20\x02(\rR\x08chil\
dNum\x12\x1d\n\nchain_code\x18\x04\x20\x02(\x0cR\tchainCode\x12\x1f\n\
\x0bprivate_key\x18\x05\x20\x01(\x0cR\nprivateKey\x12\x1d\n\npublic_key\
\x18\x06\x20\x02(\x0cR\tpublicKeyB>\n#com.satoshilabs.trezor.lib.protobu\
fB\x13TrezorMessageCommon\x80\xa6\x1d\x01\
dSession\x10\x0e\x12\x18\n\x14Failure_DeviceIsBusy\x10\x0f\x12\x19\n\x15\
Failure_FirmwareError\x10c\"\xab\x06\n\rButtonRequest\x12N\n\x04code\x18\
\x01\x20\x01(\x0e2:.hw.trezor.messages.common.ButtonRequest.ButtonReques\
tTypeR\x04code\x12\x14\n\x05pages\x18\x02\x20\x01(\rR\x05pages\x12\x12\n\
\x04name\x18\x04\x20\x01(\tR\x04name\"\x99\x05\n\x11ButtonRequestType\
\x12\x17\n\x13ButtonRequest_Other\x10\x01\x12\"\n\x1eButtonRequest_FeeOv\
erThreshold\x10\x02\x12\x1f\n\x1bButtonRequest_ConfirmOutput\x10\x03\x12\
\x1d\n\x19ButtonRequest_ResetDevice\x10\x04\x12\x1d\n\x19ButtonRequest_C\
onfirmWord\x10\x05\x12\x1c\n\x18ButtonRequest_WipeDevice\x10\x06\x12\x1d\
\n\x19ButtonRequest_ProtectCall\x10\x07\x12\x18\n\x14ButtonRequest_SignT\
x\x10\x08\x12\x1f\n\x1bButtonRequest_FirmwareCheck\x10\t\x12\x19\n\x15Bu\
ttonRequest_Address\x10\n\x12\x1b\n\x17ButtonRequest_PublicKey\x10\x0b\
\x12#\n\x1fButtonRequest_MnemonicWordCount\x10\x0c\x12\x1f\n\x1bButtonRe\
quest_MnemonicInput\x10\r\x120\n(_Deprecated_ButtonRequest_PassphraseTyp\
e\x10\x0e\x1a\x02\x08\x01\x12'\n#ButtonRequest_UnknownDerivationPath\x10\
\x0f\x12\"\n\x1eButtonRequest_RecoveryHomepage\x10\x10\x12\x19\n\x15Butt\
onRequest_Success\x10\x11\x12\x19\n\x15ButtonRequest_Warning\x10\x12\x12\
!\n\x1dButtonRequest_PassphraseEntry\x10\x13\x12\x1a\n\x16ButtonRequest_\
PinEntry\x10\x14J\x04\x08\x03\x10\x04\"\x0b\n\tButtonAck\"\xbb\x02\n\x10\
PinMatrixRequest\x12T\n\x04type\x18\x01\x20\x01(\x0e2@.hw.trezor.message\
s.common.PinMatrixRequest.PinMatrixRequestTypeR\x04type\"\xd0\x01\n\x14P\
inMatrixRequestType\x12\x20\n\x1cPinMatrixRequestType_Current\x10\x01\
\x12!\n\x1dPinMatrixRequestType_NewFirst\x10\x02\x12\"\n\x1ePinMatrixReq\
uestType_NewSecond\x10\x03\x12&\n\"PinMatrixRequestType_WipeCodeFirst\
\x10\x04\x12'\n#PinMatrixRequestType_WipeCodeSecond\x10\x05\"\x20\n\x0cP\
inMatrixAck\x12\x10\n\x03pin\x18\x01\x20\x02(\tR\x03pin\"5\n\x11Passphra\
seRequest\x12\x20\n\n_on_device\x18\x01\x20\x01(\x08R\x08OnDeviceB\x02\
\x18\x01\"g\n\rPassphraseAck\x12\x1e\n\npassphrase\x18\x01\x20\x01(\tR\n\
passphrase\x12\x19\n\x06_state\x18\x02\x20\x01(\x0cR\x05StateB\x02\x18\
\x01\x12\x1b\n\ton_device\x18\x03\x20\x01(\x08R\x08onDevice\"=\n!Depreca\
ted_PassphraseStateRequest\x12\x14\n\x05state\x18\x01\x20\x01(\x0cR\x05s\
tate:\x02\x18\x01\"#\n\x1dDeprecated_PassphraseStateAck:\x02\x18\x01\"\
\xc0\x01\n\nHDNodeType\x12\x14\n\x05depth\x18\x01\x20\x02(\rR\x05depth\
\x12\x20\n\x0bfingerprint\x18\x02\x20\x02(\rR\x0bfingerprint\x12\x1b\n\t\
child_num\x18\x03\x20\x02(\rR\x08childNum\x12\x1d\n\nchain_code\x18\x04\
\x20\x02(\x0cR\tchainCode\x12\x1f\n\x0bprivate_key\x18\x05\x20\x01(\x0cR\
\nprivateKey\x12\x1d\n\npublic_key\x18\x06\x20\x02(\x0cR\tpublicKeyB>\n#\
com.satoshilabs.trezor.lib.protobufB\x13TrezorMessageCommon\x80\xa6\x1d\
\x01\
";
/// `FileDescriptorProto` object which was a source for this generated file