1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-01-22 05:10:56 +00:00

BLE handling

This commit is contained in:
tychovrahe 2024-10-01 11:09:17 +02:00
parent 75910b77e9
commit 90765e6fae
23 changed files with 2001 additions and 835 deletions

View File

@ -0,0 +1,63 @@
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;
import "messages.proto";
/**
* Request: initializes upload of a new ble firmware im
* @start
* @next UploadBLEFirmwareNextChunk
* @next Failure
*/
message UploadBLEFirmwareInit {
required bytes init_data = 1;
required uint32 binsize = 2;
}
/**
* Response: Requests next chunk of a new ble firmware im
* @next UploadBLEFirmwareChunk
*/
message UploadBLEFirmwareNextChunk {
required uint32 offset = 1;
}
/**
* Request: sends next chunk of a new ble firmware im
* @next UploadBLEFirmwareNextChunk
* @next Success
* @next Failure
*/
message UploadBLEFirmwareChunk {
required bytes data = 1;
}
/**
* 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

@ -87,6 +87,13 @@ 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_UploadBLEFirmwareInit = 8000 [(bitcoin_only) = true, (wire_in) = true];
MessageType_UploadBLEFirmwareNextChunk = 8001 [(bitcoin_only) = true, (wire_out) = true];
MessageType_UploadBLEFirmwareChunk = 8002 [(bitcoin_only) = true, (wire_in) = true];
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

@ -33,10 +33,14 @@ from trezor import utils
all_modules
import all_modules
bluetooth
import bluetooth
boot
import boot
main
import main
mutex
import mutex
session
import session
typing
@ -351,6 +355,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,16 @@
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
await confirm_action("disconnect", "DISCONNECT")
ble.disconnect()
return Success()

View File

@ -0,0 +1,16 @@
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
await confirm_action("erase bonds", "ERASE BONDS")
ble.erase_bonds()
return Success()

View File

@ -1,7 +1,7 @@
def boot() -> None:
def boot(mutex) -> None:
import usb
from trezor import loop
from .fido2 import handle_reports
loop.schedule(handle_reports(usb.iface_webauthn))
loop.schedule(handle_reports(usb.iface_webauthn, mutex))

View File

@ -539,7 +539,7 @@ def send_cmd_sync(cmd: Cmd, iface: HID) -> None:
seq += 1
async def handle_reports(iface: HID) -> None:
async def handle_reports(iface: HID, mutex) -> None:
dialog_mgr = DialogManager(iface)
while True:
@ -547,10 +547,14 @@ async def handle_reports(iface: HID) -> None:
req = await _read_cmd(iface)
if req is None:
continue
if not dialog_mgr.allow_cid(req.cid):
if mutex is not None and mutex.get_busy(iface.iface_num()):
resp: Cmd | None = cmd_error(req.cid, _ERR_CHANNEL_BUSY)
else:
resp = _dispatch_cmd(req, dialog_mgr)
mutex.set_busy(iface.iface_num())
if not dialog_mgr.allow_cid(req.cid):
resp: Cmd | None = cmd_error(req.cid, _ERR_CHANNEL_BUSY)
else:
resp = _dispatch_cmd(req, dialog_mgr)
if resp is not None:
await send_cmd(resp, iface)
except Exception as e:

View File

@ -78,6 +78,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"

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

@ -0,0 +1,13 @@
from trezorio import ble
class BleInterface:
def iface_num(self) -> int:
return 16
def write(self, msg: bytes) -> int:
return ble.write(self, msg)
# interface used for trezor wire protocol
iface_ble = BleInterface()

View File

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

23
core/src/mutex.py Normal file
View File

@ -0,0 +1,23 @@
class Mutex:
def __init__(self):
self.ifaces = []
self.busy = None
def add(self, iface_num: int):
if iface_num not in self.ifaces:
self.ifaces.append(iface_num)
def set_busy(self, iface_num: int):
if iface_num in self.ifaces:
self.busy = iface_num
def get_busy(self, iface_num: int) -> int:
return (
iface_num in self.ifaces
and self.busy is not None
and self.busy != iface_num
)
def release(self, iface_num: int):
if iface_num == self.busy:
self.busy = None

View File

@ -1,29 +1,60 @@
# isort: skip_file
from micropython import const
from mutex import Mutex
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()
mutex = Mutex()
if not utils.BITCOIN_ONLY and usb.ENABLE_IFACE_WEBAUTHN:
import apps.webauthn
apps.webauthn.boot()
apps.webauthn.boot(mutex)
if __debug__:
import apps.debug
apps.debug.boot()
# run main event loop and specify which screen is the default
apps.base.set_homescreen()
workflow.start_default()
mutex.add(usb.iface_wire.iface_num())
# initialize the wire codec
wire.setup(usb.iface_wire)
wire.setup(usb.iface_wire, WIRE_BUFFER, mutex=mutex)
if __debug__:
wire.setup(usb.iface_debug, is_debug_session=True)
PROTOBUF_BUFFER_SIZE_DEBUG = 1024
WIRE_BUFFER_DEBUG = bytearray(PROTOBUF_BUFFER_SIZE_DEBUG)
mutex.add(usb.iface_debug.iface_num())
wire.setup(
usb.iface_debug,
WIRE_BUFFER_DEBUG,
is_debug_session=True,
)
if utils.USE_BLE:
import bluetooth
BLE_BUFFER = bytearray(_PROTOBUF_BUFFER_SIZE)
mutex.add(bluetooth.iface_ble.iface_num())
wire.setup(bluetooth.iface_ble, BLE_BUFFER, mutex=mutex)
loop.run()

View File

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

View File

@ -58,6 +58,11 @@ FirmwareErase = 6
FirmwareUpload = 7
FirmwareRequest = 8
ProdTestT1 = 32
UploadBLEFirmwareInit = 8000
UploadBLEFirmwareNextChunk = 8001
UploadBLEFirmwareChunk = 8002
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):
@ -107,6 +108,258 @@ if TYPE_CHECKING:
TXORIGOUTPUT = 6
TXPAYMENTREQ = 7
class MessageType(IntEnum):
Initialize = 0
Ping = 1
Success = 2
Failure = 3
ChangePin = 4
WipeDevice = 5
GetEntropy = 9
Entropy = 10
LoadDevice = 13
ResetDevice = 14
SetBusy = 16
Features = 17
PinMatrixRequest = 18
PinMatrixAck = 19
Cancel = 20
LockDevice = 24
ApplySettings = 25
ButtonRequest = 26
ButtonAck = 27
ApplyFlags = 28
GetNonce = 31
Nonce = 33
BackupDevice = 34
EntropyRequest = 35
EntropyAck = 36
PassphraseRequest = 41
PassphraseAck = 42
RecoveryDevice = 45
WordRequest = 46
WordAck = 47
GetFeatures = 55
SdProtect = 79
ChangeWipeCode = 82
EndSession = 83
DoPreauthorized = 84
PreauthorizedRequest = 85
CancelAuthorization = 86
RebootToBootloader = 87
GetFirmwareHash = 88
FirmwareHash = 89
UnlockPath = 93
UnlockedPathRequest = 94
ShowDeviceTutorial = 95
UnlockBootloader = 96
AuthenticateDevice = 97
AuthenticityProof = 98
ChangeLanguage = 990
TranslationDataRequest = 991
TranslationDataAck = 992
SetBrightness = 993
SetU2FCounter = 63
GetNextU2FCounter = 80
NextU2FCounter = 81
Deprecated_PassphraseStateRequest = 77
Deprecated_PassphraseStateAck = 78
FirmwareErase = 6
FirmwareUpload = 7
FirmwareRequest = 8
ProdTestT1 = 32
UploadBLEFirmwareInit = 8000
UploadBLEFirmwareNextChunk = 8001
UploadBLEFirmwareChunk = 8002
EraseBonds = 8006
Disconnect = 8007
GetPublicKey = 11
PublicKey = 12
SignTx = 15
TxRequest = 21
TxAck = 22
GetAddress = 29
Address = 30
TxAckPaymentRequest = 37
SignMessage = 38
VerifyMessage = 39
MessageSignature = 40
GetOwnershipId = 43
OwnershipId = 44
GetOwnershipProof = 49
OwnershipProof = 50
AuthorizeCoinJoin = 51
CipherKeyValue = 23
CipheredKeyValue = 48
SignIdentity = 53
SignedIdentity = 54
GetECDHSessionKey = 61
ECDHSessionKey = 62
DebugLinkDecision = 100
DebugLinkGetState = 101
DebugLinkState = 102
DebugLinkStop = 103
DebugLinkLog = 104
DebugLinkMemoryRead = 110
DebugLinkMemory = 111
DebugLinkMemoryWrite = 112
DebugLinkFlashErase = 113
DebugLinkLayout = 9001
DebugLinkReseedRandom = 9002
DebugLinkRecordScreen = 9003
DebugLinkEraseSdCard = 9005
DebugLinkWatchLayout = 9006
DebugLinkResetDebugEvents = 9007
DebugLinkOptigaSetSecMax = 9008
EthereumGetPublicKey = 450
EthereumPublicKey = 451
EthereumGetAddress = 56
EthereumAddress = 57
EthereumSignTx = 58
EthereumSignTxEIP1559 = 452
EthereumTxRequest = 59
EthereumTxAck = 60
EthereumSignMessage = 64
EthereumVerifyMessage = 65
EthereumMessageSignature = 66
EthereumSignTypedData = 464
EthereumTypedDataStructRequest = 465
EthereumTypedDataStructAck = 466
EthereumTypedDataValueRequest = 467
EthereumTypedDataValueAck = 468
EthereumTypedDataSignature = 469
EthereumSignTypedHash = 470
NEMGetAddress = 67
NEMAddress = 68
NEMSignTx = 69
NEMSignedTx = 70
NEMDecryptMessage = 75
NEMDecryptedMessage = 76
TezosGetAddress = 150
TezosAddress = 151
TezosSignTx = 152
TezosSignedTx = 153
TezosGetPublicKey = 154
TezosPublicKey = 155
StellarSignTx = 202
StellarTxOpRequest = 203
StellarGetAddress = 207
StellarAddress = 208
StellarCreateAccountOp = 210
StellarPaymentOp = 211
StellarPathPaymentStrictReceiveOp = 212
StellarManageSellOfferOp = 213
StellarCreatePassiveSellOfferOp = 214
StellarSetOptionsOp = 215
StellarChangeTrustOp = 216
StellarAllowTrustOp = 217
StellarAccountMergeOp = 218
StellarManageDataOp = 220
StellarBumpSequenceOp = 221
StellarManageBuyOfferOp = 222
StellarPathPaymentStrictSendOp = 223
StellarClaimClaimableBalanceOp = 225
StellarSignedTx = 230
CardanoGetPublicKey = 305
CardanoPublicKey = 306
CardanoGetAddress = 307
CardanoAddress = 308
CardanoTxItemAck = 313
CardanoTxAuxiliaryDataSupplement = 314
CardanoTxWitnessRequest = 315
CardanoTxWitnessResponse = 316
CardanoTxHostAck = 317
CardanoTxBodyHash = 318
CardanoSignTxFinished = 319
CardanoSignTxInit = 320
CardanoTxInput = 321
CardanoTxOutput = 322
CardanoAssetGroup = 323
CardanoToken = 324
CardanoTxCertificate = 325
CardanoTxWithdrawal = 326
CardanoTxAuxiliaryData = 327
CardanoPoolOwner = 328
CardanoPoolRelayParameters = 329
CardanoGetNativeScriptHash = 330
CardanoNativeScriptHash = 331
CardanoTxMint = 332
CardanoTxCollateralInput = 333
CardanoTxRequiredSigner = 334
CardanoTxInlineDatumChunk = 335
CardanoTxReferenceScriptChunk = 336
CardanoTxReferenceInput = 337
RippleGetAddress = 400
RippleAddress = 401
RippleSignTx = 402
RippleSignedTx = 403
MoneroTransactionInitRequest = 501
MoneroTransactionInitAck = 502
MoneroTransactionSetInputRequest = 503
MoneroTransactionSetInputAck = 504
MoneroTransactionInputViniRequest = 507
MoneroTransactionInputViniAck = 508
MoneroTransactionAllInputsSetRequest = 509
MoneroTransactionAllInputsSetAck = 510
MoneroTransactionSetOutputRequest = 511
MoneroTransactionSetOutputAck = 512
MoneroTransactionAllOutSetRequest = 513
MoneroTransactionAllOutSetAck = 514
MoneroTransactionSignInputRequest = 515
MoneroTransactionSignInputAck = 516
MoneroTransactionFinalRequest = 517
MoneroTransactionFinalAck = 518
MoneroKeyImageExportInitRequest = 530
MoneroKeyImageExportInitAck = 531
MoneroKeyImageSyncStepRequest = 532
MoneroKeyImageSyncStepAck = 533
MoneroKeyImageSyncFinalRequest = 534
MoneroKeyImageSyncFinalAck = 535
MoneroGetAddress = 540
MoneroAddress = 541
MoneroGetWatchKey = 542
MoneroWatchKey = 543
DebugMoneroDiagRequest = 546
DebugMoneroDiagAck = 547
MoneroGetTxKeyRequest = 550
MoneroGetTxKeyAck = 551
MoneroLiveRefreshStartRequest = 552
MoneroLiveRefreshStartAck = 553
MoneroLiveRefreshStepRequest = 554
MoneroLiveRefreshStepAck = 555
MoneroLiveRefreshFinalRequest = 556
MoneroLiveRefreshFinalAck = 557
EosGetPublicKey = 600
EosPublicKey = 601
EosSignTx = 602
EosTxActionRequest = 603
EosTxActionAck = 604
EosSignedTx = 605
BinanceGetAddress = 700
BinanceAddress = 701
BinanceGetPublicKey = 702
BinancePublicKey = 703
BinanceSignTx = 704
BinanceTxRequest = 705
BinanceTransferMsg = 706
BinanceOrderMsg = 707
BinanceCancelMsg = 708
BinanceSignedTx = 709
WebAuthnListResidentCredentials = 800
WebAuthnCredentials = 801
WebAuthnAddResidentCredential = 802
WebAuthnRemoveResidentCredential = 803
SolanaGetPublicKey = 900
SolanaPublicKey = 901
SolanaGetAddress = 902
SolanaAddress = 903
SolanaSignTx = 904
SolanaTxSignature = 905
BenchmarkListNames = 9100
BenchmarkNames = 9101
BenchmarkRun = 9102
BenchmarkResult = 9103
class CardanoDerivationType(IntEnum):
LEDGER = 0
ICARUS = 1
@ -331,250 +584,3 @@ if TYPE_CHECKING:
Yay = 0
Nay = 1
Pass = 2
class MessageType(IntEnum):
Initialize = 0
Ping = 1
Success = 2
Failure = 3
ChangePin = 4
WipeDevice = 5
GetEntropy = 9
Entropy = 10
LoadDevice = 13
ResetDevice = 14
SetBusy = 16
Features = 17
PinMatrixRequest = 18
PinMatrixAck = 19
Cancel = 20
LockDevice = 24
ApplySettings = 25
ButtonRequest = 26
ButtonAck = 27
ApplyFlags = 28
GetNonce = 31
Nonce = 33
BackupDevice = 34
EntropyRequest = 35
EntropyAck = 36
PassphraseRequest = 41
PassphraseAck = 42
RecoveryDevice = 45
WordRequest = 46
WordAck = 47
GetFeatures = 55
SdProtect = 79
ChangeWipeCode = 82
EndSession = 83
DoPreauthorized = 84
PreauthorizedRequest = 85
CancelAuthorization = 86
RebootToBootloader = 87
GetFirmwareHash = 88
FirmwareHash = 89
UnlockPath = 93
UnlockedPathRequest = 94
ShowDeviceTutorial = 95
UnlockBootloader = 96
AuthenticateDevice = 97
AuthenticityProof = 98
ChangeLanguage = 990
TranslationDataRequest = 991
TranslationDataAck = 992
SetBrightness = 993
SetU2FCounter = 63
GetNextU2FCounter = 80
NextU2FCounter = 81
Deprecated_PassphraseStateRequest = 77
Deprecated_PassphraseStateAck = 78
FirmwareErase = 6
FirmwareUpload = 7
FirmwareRequest = 8
ProdTestT1 = 32
GetPublicKey = 11
PublicKey = 12
SignTx = 15
TxRequest = 21
TxAck = 22
GetAddress = 29
Address = 30
TxAckPaymentRequest = 37
SignMessage = 38
VerifyMessage = 39
MessageSignature = 40
GetOwnershipId = 43
OwnershipId = 44
GetOwnershipProof = 49
OwnershipProof = 50
AuthorizeCoinJoin = 51
CipherKeyValue = 23
CipheredKeyValue = 48
SignIdentity = 53
SignedIdentity = 54
GetECDHSessionKey = 61
ECDHSessionKey = 62
DebugLinkDecision = 100
DebugLinkGetState = 101
DebugLinkState = 102
DebugLinkStop = 103
DebugLinkLog = 104
DebugLinkMemoryRead = 110
DebugLinkMemory = 111
DebugLinkMemoryWrite = 112
DebugLinkFlashErase = 113
DebugLinkLayout = 9001
DebugLinkReseedRandom = 9002
DebugLinkRecordScreen = 9003
DebugLinkEraseSdCard = 9005
DebugLinkWatchLayout = 9006
DebugLinkResetDebugEvents = 9007
DebugLinkOptigaSetSecMax = 9008
EthereumGetPublicKey = 450
EthereumPublicKey = 451
EthereumGetAddress = 56
EthereumAddress = 57
EthereumSignTx = 58
EthereumSignTxEIP1559 = 452
EthereumTxRequest = 59
EthereumTxAck = 60
EthereumSignMessage = 64
EthereumVerifyMessage = 65
EthereumMessageSignature = 66
EthereumSignTypedData = 464
EthereumTypedDataStructRequest = 465
EthereumTypedDataStructAck = 466
EthereumTypedDataValueRequest = 467
EthereumTypedDataValueAck = 468
EthereumTypedDataSignature = 469
EthereumSignTypedHash = 470
NEMGetAddress = 67
NEMAddress = 68
NEMSignTx = 69
NEMSignedTx = 70
NEMDecryptMessage = 75
NEMDecryptedMessage = 76
TezosGetAddress = 150
TezosAddress = 151
TezosSignTx = 152
TezosSignedTx = 153
TezosGetPublicKey = 154
TezosPublicKey = 155
StellarSignTx = 202
StellarTxOpRequest = 203
StellarGetAddress = 207
StellarAddress = 208
StellarCreateAccountOp = 210
StellarPaymentOp = 211
StellarPathPaymentStrictReceiveOp = 212
StellarManageSellOfferOp = 213
StellarCreatePassiveSellOfferOp = 214
StellarSetOptionsOp = 215
StellarChangeTrustOp = 216
StellarAllowTrustOp = 217
StellarAccountMergeOp = 218
StellarManageDataOp = 220
StellarBumpSequenceOp = 221
StellarManageBuyOfferOp = 222
StellarPathPaymentStrictSendOp = 223
StellarClaimClaimableBalanceOp = 225
StellarSignedTx = 230
CardanoGetPublicKey = 305
CardanoPublicKey = 306
CardanoGetAddress = 307
CardanoAddress = 308
CardanoTxItemAck = 313
CardanoTxAuxiliaryDataSupplement = 314
CardanoTxWitnessRequest = 315
CardanoTxWitnessResponse = 316
CardanoTxHostAck = 317
CardanoTxBodyHash = 318
CardanoSignTxFinished = 319
CardanoSignTxInit = 320
CardanoTxInput = 321
CardanoTxOutput = 322
CardanoAssetGroup = 323
CardanoToken = 324
CardanoTxCertificate = 325
CardanoTxWithdrawal = 326
CardanoTxAuxiliaryData = 327
CardanoPoolOwner = 328
CardanoPoolRelayParameters = 329
CardanoGetNativeScriptHash = 330
CardanoNativeScriptHash = 331
CardanoTxMint = 332
CardanoTxCollateralInput = 333
CardanoTxRequiredSigner = 334
CardanoTxInlineDatumChunk = 335
CardanoTxReferenceScriptChunk = 336
CardanoTxReferenceInput = 337
RippleGetAddress = 400
RippleAddress = 401
RippleSignTx = 402
RippleSignedTx = 403
MoneroTransactionInitRequest = 501
MoneroTransactionInitAck = 502
MoneroTransactionSetInputRequest = 503
MoneroTransactionSetInputAck = 504
MoneroTransactionInputViniRequest = 507
MoneroTransactionInputViniAck = 508
MoneroTransactionAllInputsSetRequest = 509
MoneroTransactionAllInputsSetAck = 510
MoneroTransactionSetOutputRequest = 511
MoneroTransactionSetOutputAck = 512
MoneroTransactionAllOutSetRequest = 513
MoneroTransactionAllOutSetAck = 514
MoneroTransactionSignInputRequest = 515
MoneroTransactionSignInputAck = 516
MoneroTransactionFinalRequest = 517
MoneroTransactionFinalAck = 518
MoneroKeyImageExportInitRequest = 530
MoneroKeyImageExportInitAck = 531
MoneroKeyImageSyncStepRequest = 532
MoneroKeyImageSyncStepAck = 533
MoneroKeyImageSyncFinalRequest = 534
MoneroKeyImageSyncFinalAck = 535
MoneroGetAddress = 540
MoneroAddress = 541
MoneroGetWatchKey = 542
MoneroWatchKey = 543
DebugMoneroDiagRequest = 546
DebugMoneroDiagAck = 547
MoneroGetTxKeyRequest = 550
MoneroGetTxKeyAck = 551
MoneroLiveRefreshStartRequest = 552
MoneroLiveRefreshStartAck = 553
MoneroLiveRefreshStepRequest = 554
MoneroLiveRefreshStepAck = 555
MoneroLiveRefreshFinalRequest = 556
MoneroLiveRefreshFinalAck = 557
EosGetPublicKey = 600
EosPublicKey = 601
EosSignTx = 602
EosTxActionRequest = 603
EosTxActionAck = 604
EosSignedTx = 605
BinanceGetAddress = 700
BinanceAddress = 701
BinanceGetPublicKey = 702
BinancePublicKey = 703
BinanceSignTx = 704
BinanceTxRequest = 705
BinanceTransferMsg = 706
BinanceOrderMsg = 707
BinanceCancelMsg = 708
BinanceSignedTx = 709
WebAuthnListResidentCredentials = 800
WebAuthnCredentials = 801
WebAuthnAddResidentCredential = 802
WebAuthnRemoveResidentCredential = 803
SolanaGetPublicKey = 900
SolanaPublicKey = 901
SolanaGetAddress = 902
SolanaAddress = 903
SolanaSignTx = 904
SolanaTxSignature = 905
BenchmarkListNames = 9100
BenchmarkNames = 9101
BenchmarkRun = 9102
BenchmarkResult = 9103

View File

@ -1251,6 +1251,62 @@ if TYPE_CHECKING:
def is_type_of(cls, msg: Any) -> TypeGuard["TxAckPrevExtraDataWrapper"]:
return isinstance(msg, cls)
class UploadBLEFirmwareInit(protobuf.MessageType):
init_data: "bytes"
binsize: "int"
def __init__(
self,
*,
init_data: "bytes",
binsize: "int",
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["UploadBLEFirmwareInit"]:
return isinstance(msg, cls)
class UploadBLEFirmwareNextChunk(protobuf.MessageType):
offset: "int"
def __init__(
self,
*,
offset: "int",
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["UploadBLEFirmwareNextChunk"]:
return isinstance(msg, cls)
class UploadBLEFirmwareChunk(protobuf.MessageType):
data: "bytes"
def __init__(
self,
*,
data: "bytes",
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["UploadBLEFirmwareChunk"]:
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

@ -53,9 +53,13 @@ if TYPE_CHECKING:
EXPERIMENTAL_ENABLED = False
def setup(iface: WireInterface, is_debug_session: bool = False) -> None:
def setup(
iface: WireInterface, buffer: bytearray, is_debug_session: bool = False, mutex=None
) -> None:
"""Initialize the wire stack on passed USB interface."""
loop.schedule(handle_session(iface, codec_v1.SESSION_ID, is_debug_session))
loop.schedule(
handle_session(iface, codec_v1.SESSION_ID, buffer, is_debug_session, mutex)
)
def wrap_protobuf_load(
@ -199,13 +203,12 @@ async def _handle_single_message(
async def handle_session(
iface: WireInterface, session_id: int, is_debug_session: bool = False
iface: WireInterface,
session_id: int,
ctx_buffer: bytearray,
is_debug_session: bool = False,
mutex=None,
) -> None:
if __debug__ and is_debug_session:
ctx_buffer = WIRE_BUFFER_DEBUG
else:
ctx_buffer = WIRE_BUFFER
ctx = context.Context(iface, session_id, ctx_buffer)
next_msg: codec_v1.Message | None = None
@ -224,6 +227,18 @@ async def handle_session(
# wait for a new one coming from the wire.
try:
msg = await ctx.read_from_wire()
if mutex is not None:
if mutex.get_busy(iface.iface_num()):
await ctx.write(
Failure(
code=FailureType.DeviceIsBusy,
message="Device is busy",
)
)
continue
else:
mutex.set_busy(iface.iface_num())
except codec_v1.CodecError as exc:
if __debug__:
log.exception(__name__, exc)

View File

@ -43,6 +43,7 @@ class FailureType(IntEnum):
PinMismatch = 12
WipeCodeMismatch = 13
InvalidSession = 14
DeviceIsBusy = 15
FirmwareError = 99
@ -119,6 +120,259 @@ class RequestType(IntEnum):
TXPAYMENTREQ = 7
class MessageType(IntEnum):
Initialize = 0
Ping = 1
Success = 2
Failure = 3
ChangePin = 4
WipeDevice = 5
GetEntropy = 9
Entropy = 10
LoadDevice = 13
ResetDevice = 14
SetBusy = 16
Features = 17
PinMatrixRequest = 18
PinMatrixAck = 19
Cancel = 20
LockDevice = 24
ApplySettings = 25
ButtonRequest = 26
ButtonAck = 27
ApplyFlags = 28
GetNonce = 31
Nonce = 33
BackupDevice = 34
EntropyRequest = 35
EntropyAck = 36
PassphraseRequest = 41
PassphraseAck = 42
RecoveryDevice = 45
WordRequest = 46
WordAck = 47
GetFeatures = 55
SdProtect = 79
ChangeWipeCode = 82
EndSession = 83
DoPreauthorized = 84
PreauthorizedRequest = 85
CancelAuthorization = 86
RebootToBootloader = 87
GetFirmwareHash = 88
FirmwareHash = 89
UnlockPath = 93
UnlockedPathRequest = 94
ShowDeviceTutorial = 95
UnlockBootloader = 96
AuthenticateDevice = 97
AuthenticityProof = 98
ChangeLanguage = 990
TranslationDataRequest = 991
TranslationDataAck = 992
SetBrightness = 993
SetU2FCounter = 63
GetNextU2FCounter = 80
NextU2FCounter = 81
Deprecated_PassphraseStateRequest = 77
Deprecated_PassphraseStateAck = 78
FirmwareErase = 6
FirmwareUpload = 7
FirmwareRequest = 8
ProdTestT1 = 32
UploadBLEFirmwareInit = 8000
UploadBLEFirmwareNextChunk = 8001
UploadBLEFirmwareChunk = 8002
EraseBonds = 8006
Disconnect = 8007
GetPublicKey = 11
PublicKey = 12
SignTx = 15
TxRequest = 21
TxAck = 22
GetAddress = 29
Address = 30
TxAckPaymentRequest = 37
SignMessage = 38
VerifyMessage = 39
MessageSignature = 40
GetOwnershipId = 43
OwnershipId = 44
GetOwnershipProof = 49
OwnershipProof = 50
AuthorizeCoinJoin = 51
CipherKeyValue = 23
CipheredKeyValue = 48
SignIdentity = 53
SignedIdentity = 54
GetECDHSessionKey = 61
ECDHSessionKey = 62
DebugLinkDecision = 100
DebugLinkGetState = 101
DebugLinkState = 102
DebugLinkStop = 103
DebugLinkLog = 104
DebugLinkMemoryRead = 110
DebugLinkMemory = 111
DebugLinkMemoryWrite = 112
DebugLinkFlashErase = 113
DebugLinkLayout = 9001
DebugLinkReseedRandom = 9002
DebugLinkRecordScreen = 9003
DebugLinkEraseSdCard = 9005
DebugLinkWatchLayout = 9006
DebugLinkResetDebugEvents = 9007
DebugLinkOptigaSetSecMax = 9008
EthereumGetPublicKey = 450
EthereumPublicKey = 451
EthereumGetAddress = 56
EthereumAddress = 57
EthereumSignTx = 58
EthereumSignTxEIP1559 = 452
EthereumTxRequest = 59
EthereumTxAck = 60
EthereumSignMessage = 64
EthereumVerifyMessage = 65
EthereumMessageSignature = 66
EthereumSignTypedData = 464
EthereumTypedDataStructRequest = 465
EthereumTypedDataStructAck = 466
EthereumTypedDataValueRequest = 467
EthereumTypedDataValueAck = 468
EthereumTypedDataSignature = 469
EthereumSignTypedHash = 470
NEMGetAddress = 67
NEMAddress = 68
NEMSignTx = 69
NEMSignedTx = 70
NEMDecryptMessage = 75
NEMDecryptedMessage = 76
TezosGetAddress = 150
TezosAddress = 151
TezosSignTx = 152
TezosSignedTx = 153
TezosGetPublicKey = 154
TezosPublicKey = 155
StellarSignTx = 202
StellarTxOpRequest = 203
StellarGetAddress = 207
StellarAddress = 208
StellarCreateAccountOp = 210
StellarPaymentOp = 211
StellarPathPaymentStrictReceiveOp = 212
StellarManageSellOfferOp = 213
StellarCreatePassiveSellOfferOp = 214
StellarSetOptionsOp = 215
StellarChangeTrustOp = 216
StellarAllowTrustOp = 217
StellarAccountMergeOp = 218
StellarManageDataOp = 220
StellarBumpSequenceOp = 221
StellarManageBuyOfferOp = 222
StellarPathPaymentStrictSendOp = 223
StellarClaimClaimableBalanceOp = 225
StellarSignedTx = 230
CardanoGetPublicKey = 305
CardanoPublicKey = 306
CardanoGetAddress = 307
CardanoAddress = 308
CardanoTxItemAck = 313
CardanoTxAuxiliaryDataSupplement = 314
CardanoTxWitnessRequest = 315
CardanoTxWitnessResponse = 316
CardanoTxHostAck = 317
CardanoTxBodyHash = 318
CardanoSignTxFinished = 319
CardanoSignTxInit = 320
CardanoTxInput = 321
CardanoTxOutput = 322
CardanoAssetGroup = 323
CardanoToken = 324
CardanoTxCertificate = 325
CardanoTxWithdrawal = 326
CardanoTxAuxiliaryData = 327
CardanoPoolOwner = 328
CardanoPoolRelayParameters = 329
CardanoGetNativeScriptHash = 330
CardanoNativeScriptHash = 331
CardanoTxMint = 332
CardanoTxCollateralInput = 333
CardanoTxRequiredSigner = 334
CardanoTxInlineDatumChunk = 335
CardanoTxReferenceScriptChunk = 336
CardanoTxReferenceInput = 337
RippleGetAddress = 400
RippleAddress = 401
RippleSignTx = 402
RippleSignedTx = 403
MoneroTransactionInitRequest = 501
MoneroTransactionInitAck = 502
MoneroTransactionSetInputRequest = 503
MoneroTransactionSetInputAck = 504
MoneroTransactionInputViniRequest = 507
MoneroTransactionInputViniAck = 508
MoneroTransactionAllInputsSetRequest = 509
MoneroTransactionAllInputsSetAck = 510
MoneroTransactionSetOutputRequest = 511
MoneroTransactionSetOutputAck = 512
MoneroTransactionAllOutSetRequest = 513
MoneroTransactionAllOutSetAck = 514
MoneroTransactionSignInputRequest = 515
MoneroTransactionSignInputAck = 516
MoneroTransactionFinalRequest = 517
MoneroTransactionFinalAck = 518
MoneroKeyImageExportInitRequest = 530
MoneroKeyImageExportInitAck = 531
MoneroKeyImageSyncStepRequest = 532
MoneroKeyImageSyncStepAck = 533
MoneroKeyImageSyncFinalRequest = 534
MoneroKeyImageSyncFinalAck = 535
MoneroGetAddress = 540
MoneroAddress = 541
MoneroGetWatchKey = 542
MoneroWatchKey = 543
DebugMoneroDiagRequest = 546
DebugMoneroDiagAck = 547
MoneroGetTxKeyRequest = 550
MoneroGetTxKeyAck = 551
MoneroLiveRefreshStartRequest = 552
MoneroLiveRefreshStartAck = 553
MoneroLiveRefreshStepRequest = 554
MoneroLiveRefreshStepAck = 555
MoneroLiveRefreshFinalRequest = 556
MoneroLiveRefreshFinalAck = 557
EosGetPublicKey = 600
EosPublicKey = 601
EosSignTx = 602
EosTxActionRequest = 603
EosTxActionAck = 604
EosSignedTx = 605
BinanceGetAddress = 700
BinanceAddress = 701
BinanceGetPublicKey = 702
BinancePublicKey = 703
BinanceSignTx = 704
BinanceTxRequest = 705
BinanceTransferMsg = 706
BinanceOrderMsg = 707
BinanceCancelMsg = 708
BinanceSignedTx = 709
WebAuthnListResidentCredentials = 800
WebAuthnCredentials = 801
WebAuthnAddResidentCredential = 802
WebAuthnRemoveResidentCredential = 803
SolanaGetPublicKey = 900
SolanaPublicKey = 901
SolanaGetAddress = 902
SolanaAddress = 903
SolanaSignTx = 904
SolanaTxSignature = 905
BenchmarkListNames = 9100
BenchmarkNames = 9101
BenchmarkRun = 9102
BenchmarkResult = 9103
class CardanoDerivationType(IntEnum):
LEDGER = 0
ICARUS = 1
@ -382,254 +636,6 @@ class TezosBallotType(IntEnum):
Pass = 2
class MessageType(IntEnum):
Initialize = 0
Ping = 1
Success = 2
Failure = 3
ChangePin = 4
WipeDevice = 5
GetEntropy = 9
Entropy = 10
LoadDevice = 13
ResetDevice = 14
SetBusy = 16
Features = 17
PinMatrixRequest = 18
PinMatrixAck = 19
Cancel = 20
LockDevice = 24
ApplySettings = 25
ButtonRequest = 26
ButtonAck = 27
ApplyFlags = 28
GetNonce = 31
Nonce = 33
BackupDevice = 34
EntropyRequest = 35
EntropyAck = 36
PassphraseRequest = 41
PassphraseAck = 42
RecoveryDevice = 45
WordRequest = 46
WordAck = 47
GetFeatures = 55
SdProtect = 79
ChangeWipeCode = 82
EndSession = 83
DoPreauthorized = 84
PreauthorizedRequest = 85
CancelAuthorization = 86
RebootToBootloader = 87
GetFirmwareHash = 88
FirmwareHash = 89
UnlockPath = 93
UnlockedPathRequest = 94
ShowDeviceTutorial = 95
UnlockBootloader = 96
AuthenticateDevice = 97
AuthenticityProof = 98
ChangeLanguage = 990
TranslationDataRequest = 991
TranslationDataAck = 992
SetBrightness = 993
SetU2FCounter = 63
GetNextU2FCounter = 80
NextU2FCounter = 81
Deprecated_PassphraseStateRequest = 77
Deprecated_PassphraseStateAck = 78
FirmwareErase = 6
FirmwareUpload = 7
FirmwareRequest = 8
ProdTestT1 = 32
GetPublicKey = 11
PublicKey = 12
SignTx = 15
TxRequest = 21
TxAck = 22
GetAddress = 29
Address = 30
TxAckPaymentRequest = 37
SignMessage = 38
VerifyMessage = 39
MessageSignature = 40
GetOwnershipId = 43
OwnershipId = 44
GetOwnershipProof = 49
OwnershipProof = 50
AuthorizeCoinJoin = 51
CipherKeyValue = 23
CipheredKeyValue = 48
SignIdentity = 53
SignedIdentity = 54
GetECDHSessionKey = 61
ECDHSessionKey = 62
DebugLinkDecision = 100
DebugLinkGetState = 101
DebugLinkState = 102
DebugLinkStop = 103
DebugLinkLog = 104
DebugLinkMemoryRead = 110
DebugLinkMemory = 111
DebugLinkMemoryWrite = 112
DebugLinkFlashErase = 113
DebugLinkLayout = 9001
DebugLinkReseedRandom = 9002
DebugLinkRecordScreen = 9003
DebugLinkEraseSdCard = 9005
DebugLinkWatchLayout = 9006
DebugLinkResetDebugEvents = 9007
DebugLinkOptigaSetSecMax = 9008
EthereumGetPublicKey = 450
EthereumPublicKey = 451
EthereumGetAddress = 56
EthereumAddress = 57
EthereumSignTx = 58
EthereumSignTxEIP1559 = 452
EthereumTxRequest = 59
EthereumTxAck = 60
EthereumSignMessage = 64
EthereumVerifyMessage = 65
EthereumMessageSignature = 66
EthereumSignTypedData = 464
EthereumTypedDataStructRequest = 465
EthereumTypedDataStructAck = 466
EthereumTypedDataValueRequest = 467
EthereumTypedDataValueAck = 468
EthereumTypedDataSignature = 469
EthereumSignTypedHash = 470
NEMGetAddress = 67
NEMAddress = 68
NEMSignTx = 69
NEMSignedTx = 70
NEMDecryptMessage = 75
NEMDecryptedMessage = 76
TezosGetAddress = 150
TezosAddress = 151
TezosSignTx = 152
TezosSignedTx = 153
TezosGetPublicKey = 154
TezosPublicKey = 155
StellarSignTx = 202
StellarTxOpRequest = 203
StellarGetAddress = 207
StellarAddress = 208
StellarCreateAccountOp = 210
StellarPaymentOp = 211
StellarPathPaymentStrictReceiveOp = 212
StellarManageSellOfferOp = 213
StellarCreatePassiveSellOfferOp = 214
StellarSetOptionsOp = 215
StellarChangeTrustOp = 216
StellarAllowTrustOp = 217
StellarAccountMergeOp = 218
StellarManageDataOp = 220
StellarBumpSequenceOp = 221
StellarManageBuyOfferOp = 222
StellarPathPaymentStrictSendOp = 223
StellarClaimClaimableBalanceOp = 225
StellarSignedTx = 230
CardanoGetPublicKey = 305
CardanoPublicKey = 306
CardanoGetAddress = 307
CardanoAddress = 308
CardanoTxItemAck = 313
CardanoTxAuxiliaryDataSupplement = 314
CardanoTxWitnessRequest = 315
CardanoTxWitnessResponse = 316
CardanoTxHostAck = 317
CardanoTxBodyHash = 318
CardanoSignTxFinished = 319
CardanoSignTxInit = 320
CardanoTxInput = 321
CardanoTxOutput = 322
CardanoAssetGroup = 323
CardanoToken = 324
CardanoTxCertificate = 325
CardanoTxWithdrawal = 326
CardanoTxAuxiliaryData = 327
CardanoPoolOwner = 328
CardanoPoolRelayParameters = 329
CardanoGetNativeScriptHash = 330
CardanoNativeScriptHash = 331
CardanoTxMint = 332
CardanoTxCollateralInput = 333
CardanoTxRequiredSigner = 334
CardanoTxInlineDatumChunk = 335
CardanoTxReferenceScriptChunk = 336
CardanoTxReferenceInput = 337
RippleGetAddress = 400
RippleAddress = 401
RippleSignTx = 402
RippleSignedTx = 403
MoneroTransactionInitRequest = 501
MoneroTransactionInitAck = 502
MoneroTransactionSetInputRequest = 503
MoneroTransactionSetInputAck = 504
MoneroTransactionInputViniRequest = 507
MoneroTransactionInputViniAck = 508
MoneroTransactionAllInputsSetRequest = 509
MoneroTransactionAllInputsSetAck = 510
MoneroTransactionSetOutputRequest = 511
MoneroTransactionSetOutputAck = 512
MoneroTransactionAllOutSetRequest = 513
MoneroTransactionAllOutSetAck = 514
MoneroTransactionSignInputRequest = 515
MoneroTransactionSignInputAck = 516
MoneroTransactionFinalRequest = 517
MoneroTransactionFinalAck = 518
MoneroKeyImageExportInitRequest = 530
MoneroKeyImageExportInitAck = 531
MoneroKeyImageSyncStepRequest = 532
MoneroKeyImageSyncStepAck = 533
MoneroKeyImageSyncFinalRequest = 534
MoneroKeyImageSyncFinalAck = 535
MoneroGetAddress = 540
MoneroAddress = 541
MoneroGetWatchKey = 542
MoneroWatchKey = 543
DebugMoneroDiagRequest = 546
DebugMoneroDiagAck = 547
MoneroGetTxKeyRequest = 550
MoneroGetTxKeyAck = 551
MoneroLiveRefreshStartRequest = 552
MoneroLiveRefreshStartAck = 553
MoneroLiveRefreshStepRequest = 554
MoneroLiveRefreshStepAck = 555
MoneroLiveRefreshFinalRequest = 556
MoneroLiveRefreshFinalAck = 557
EosGetPublicKey = 600
EosPublicKey = 601
EosSignTx = 602
EosTxActionRequest = 603
EosTxActionAck = 604
EosSignedTx = 605
BinanceGetAddress = 700
BinanceAddress = 701
BinanceGetPublicKey = 702
BinancePublicKey = 703
BinanceSignTx = 704
BinanceTxRequest = 705
BinanceTransferMsg = 706
BinanceOrderMsg = 707
BinanceCancelMsg = 708
BinanceSignedTx = 709
WebAuthnListResidentCredentials = 800
WebAuthnCredentials = 801
WebAuthnAddResidentCredential = 802
WebAuthnRemoveResidentCredential = 803
SolanaGetPublicKey = 900
SolanaPublicKey = 901
SolanaGetAddress = 902
SolanaAddress = 903
SolanaSignTx = 904
SolanaTxSignature = 905
BenchmarkListNames = 9100
BenchmarkNames = 9101
BenchmarkRun = 9102
BenchmarkResult = 9103
class BenchmarkListNames(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 9100
@ -2180,6 +2186,59 @@ class TxAckPrevExtraDataWrapper(protobuf.MessageType):
self.extra_data_chunk = extra_data_chunk
class UploadBLEFirmwareInit(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 8000
FIELDS = {
1: protobuf.Field("init_data", "bytes", repeated=False, required=True),
2: protobuf.Field("binsize", "uint32", repeated=False, required=True),
}
def __init__(
self,
*,
init_data: "bytes",
binsize: "int",
) -> None:
self.init_data = init_data
self.binsize = binsize
class UploadBLEFirmwareNextChunk(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 8001
FIELDS = {
1: protobuf.Field("offset", "uint32", repeated=False, required=True),
}
def __init__(
self,
*,
offset: "int",
) -> None:
self.offset = offset
class UploadBLEFirmwareChunk(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 8002
FIELDS = {
1: protobuf.Field("data", "bytes", repeated=False, required=True),
}
def __init__(
self,
*,
data: "bytes",
) -> None:
self.data = data
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

@ -58,6 +58,11 @@ trezor_message_impl! {
FirmwareUpload => MessageType_FirmwareUpload,
FirmwareRequest => MessageType_FirmwareRequest,
ProdTestT1 => MessageType_ProdTestT1,
UploadBLEFirmwareInit => MessageType_UploadBLEFirmwareInit,
UploadBLEFirmwareNextChunk => MessageType_UploadBLEFirmwareNextChunk,
UploadBLEFirmwareChunk => MessageType_UploadBLEFirmwareChunk,
EraseBonds => MessageType_EraseBonds,
Disconnect => MessageType_Disconnect,
CipherKeyValue => MessageType_CipherKeyValue,
CipheredKeyValue => MessageType_CipheredKeyValue,
SignIdentity => MessageType_SignIdentity,

View File

@ -146,6 +146,16 @@ 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_UploadBLEFirmwareInit)
MessageType_UploadBLEFirmwareInit = 8000,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_UploadBLEFirmwareNextChunk)
MessageType_UploadBLEFirmwareNextChunk = 8001,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_UploadBLEFirmwareChunk)
MessageType_UploadBLEFirmwareChunk = 8002,
// @@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)
@ -588,6 +598,11 @@ 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),
8000 => ::std::option::Option::Some(MessageType::MessageType_UploadBLEFirmwareInit),
8001 => ::std::option::Option::Some(MessageType::MessageType_UploadBLEFirmwareNextChunk),
8002 => ::std::option::Option::Some(MessageType::MessageType_UploadBLEFirmwareChunk),
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),
@ -839,6 +854,11 @@ 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_UploadBLEFirmwareInit" => ::std::option::Option::Some(MessageType::MessageType_UploadBLEFirmwareInit),
"MessageType_UploadBLEFirmwareNextChunk" => ::std::option::Option::Some(MessageType::MessageType_UploadBLEFirmwareNextChunk),
"MessageType_UploadBLEFirmwareChunk" => ::std::option::Option::Some(MessageType::MessageType_UploadBLEFirmwareChunk),
"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),
@ -1089,6 +1109,11 @@ impl ::protobuf::Enum for MessageType {
MessageType::MessageType_FirmwareUpload,
MessageType::MessageType_FirmwareRequest,
MessageType::MessageType_ProdTestT1,
MessageType::MessageType_UploadBLEFirmwareInit,
MessageType::MessageType_UploadBLEFirmwareNextChunk,
MessageType::MessageType_UploadBLEFirmwareChunk,
MessageType::MessageType_EraseBonds,
MessageType::MessageType_Disconnect,
MessageType::MessageType_GetPublicKey,
MessageType::MessageType_PublicKey,
MessageType::MessageType_SignTx,
@ -1345,192 +1370,197 @@ impl ::protobuf::EnumFull for MessageType {
MessageType::MessageType_FirmwareUpload => 56,
MessageType::MessageType_FirmwareRequest => 57,
MessageType::MessageType_ProdTestT1 => 58,
MessageType::MessageType_GetPublicKey => 59,
MessageType::MessageType_PublicKey => 60,
MessageType::MessageType_SignTx => 61,
MessageType::MessageType_TxRequest => 62,
MessageType::MessageType_TxAck => 63,
MessageType::MessageType_GetAddress => 64,
MessageType::MessageType_Address => 65,
MessageType::MessageType_TxAckPaymentRequest => 66,
MessageType::MessageType_SignMessage => 67,
MessageType::MessageType_VerifyMessage => 68,
MessageType::MessageType_MessageSignature => 69,
MessageType::MessageType_GetOwnershipId => 70,
MessageType::MessageType_OwnershipId => 71,
MessageType::MessageType_GetOwnershipProof => 72,
MessageType::MessageType_OwnershipProof => 73,
MessageType::MessageType_AuthorizeCoinJoin => 74,
MessageType::MessageType_CipherKeyValue => 75,
MessageType::MessageType_CipheredKeyValue => 76,
MessageType::MessageType_SignIdentity => 77,
MessageType::MessageType_SignedIdentity => 78,
MessageType::MessageType_GetECDHSessionKey => 79,
MessageType::MessageType_ECDHSessionKey => 80,
MessageType::MessageType_DebugLinkDecision => 81,
MessageType::MessageType_DebugLinkGetState => 82,
MessageType::MessageType_DebugLinkState => 83,
MessageType::MessageType_DebugLinkStop => 84,
MessageType::MessageType_DebugLinkLog => 85,
MessageType::MessageType_DebugLinkMemoryRead => 86,
MessageType::MessageType_DebugLinkMemory => 87,
MessageType::MessageType_DebugLinkMemoryWrite => 88,
MessageType::MessageType_DebugLinkFlashErase => 89,
MessageType::MessageType_DebugLinkLayout => 90,
MessageType::MessageType_DebugLinkReseedRandom => 91,
MessageType::MessageType_DebugLinkRecordScreen => 92,
MessageType::MessageType_DebugLinkEraseSdCard => 93,
MessageType::MessageType_DebugLinkWatchLayout => 94,
MessageType::MessageType_DebugLinkResetDebugEvents => 95,
MessageType::MessageType_DebugLinkOptigaSetSecMax => 96,
MessageType::MessageType_EthereumGetPublicKey => 97,
MessageType::MessageType_EthereumPublicKey => 98,
MessageType::MessageType_EthereumGetAddress => 99,
MessageType::MessageType_EthereumAddress => 100,
MessageType::MessageType_EthereumSignTx => 101,
MessageType::MessageType_EthereumSignTxEIP1559 => 102,
MessageType::MessageType_EthereumTxRequest => 103,
MessageType::MessageType_EthereumTxAck => 104,
MessageType::MessageType_EthereumSignMessage => 105,
MessageType::MessageType_EthereumVerifyMessage => 106,
MessageType::MessageType_EthereumMessageSignature => 107,
MessageType::MessageType_EthereumSignTypedData => 108,
MessageType::MessageType_EthereumTypedDataStructRequest => 109,
MessageType::MessageType_EthereumTypedDataStructAck => 110,
MessageType::MessageType_EthereumTypedDataValueRequest => 111,
MessageType::MessageType_EthereumTypedDataValueAck => 112,
MessageType::MessageType_EthereumTypedDataSignature => 113,
MessageType::MessageType_EthereumSignTypedHash => 114,
MessageType::MessageType_NEMGetAddress => 115,
MessageType::MessageType_NEMAddress => 116,
MessageType::MessageType_NEMSignTx => 117,
MessageType::MessageType_NEMSignedTx => 118,
MessageType::MessageType_NEMDecryptMessage => 119,
MessageType::MessageType_NEMDecryptedMessage => 120,
MessageType::MessageType_TezosGetAddress => 121,
MessageType::MessageType_TezosAddress => 122,
MessageType::MessageType_TezosSignTx => 123,
MessageType::MessageType_TezosSignedTx => 124,
MessageType::MessageType_TezosGetPublicKey => 125,
MessageType::MessageType_TezosPublicKey => 126,
MessageType::MessageType_StellarSignTx => 127,
MessageType::MessageType_StellarTxOpRequest => 128,
MessageType::MessageType_StellarGetAddress => 129,
MessageType::MessageType_StellarAddress => 130,
MessageType::MessageType_StellarCreateAccountOp => 131,
MessageType::MessageType_StellarPaymentOp => 132,
MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 133,
MessageType::MessageType_StellarManageSellOfferOp => 134,
MessageType::MessageType_StellarCreatePassiveSellOfferOp => 135,
MessageType::MessageType_StellarSetOptionsOp => 136,
MessageType::MessageType_StellarChangeTrustOp => 137,
MessageType::MessageType_StellarAllowTrustOp => 138,
MessageType::MessageType_StellarAccountMergeOp => 139,
MessageType::MessageType_StellarManageDataOp => 140,
MessageType::MessageType_StellarBumpSequenceOp => 141,
MessageType::MessageType_StellarManageBuyOfferOp => 142,
MessageType::MessageType_StellarPathPaymentStrictSendOp => 143,
MessageType::MessageType_StellarClaimClaimableBalanceOp => 144,
MessageType::MessageType_StellarSignedTx => 145,
MessageType::MessageType_CardanoGetPublicKey => 146,
MessageType::MessageType_CardanoPublicKey => 147,
MessageType::MessageType_CardanoGetAddress => 148,
MessageType::MessageType_CardanoAddress => 149,
MessageType::MessageType_CardanoTxItemAck => 150,
MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 151,
MessageType::MessageType_CardanoTxWitnessRequest => 152,
MessageType::MessageType_CardanoTxWitnessResponse => 153,
MessageType::MessageType_CardanoTxHostAck => 154,
MessageType::MessageType_CardanoTxBodyHash => 155,
MessageType::MessageType_CardanoSignTxFinished => 156,
MessageType::MessageType_CardanoSignTxInit => 157,
MessageType::MessageType_CardanoTxInput => 158,
MessageType::MessageType_CardanoTxOutput => 159,
MessageType::MessageType_CardanoAssetGroup => 160,
MessageType::MessageType_CardanoToken => 161,
MessageType::MessageType_CardanoTxCertificate => 162,
MessageType::MessageType_CardanoTxWithdrawal => 163,
MessageType::MessageType_CardanoTxAuxiliaryData => 164,
MessageType::MessageType_CardanoPoolOwner => 165,
MessageType::MessageType_CardanoPoolRelayParameters => 166,
MessageType::MessageType_CardanoGetNativeScriptHash => 167,
MessageType::MessageType_CardanoNativeScriptHash => 168,
MessageType::MessageType_CardanoTxMint => 169,
MessageType::MessageType_CardanoTxCollateralInput => 170,
MessageType::MessageType_CardanoTxRequiredSigner => 171,
MessageType::MessageType_CardanoTxInlineDatumChunk => 172,
MessageType::MessageType_CardanoTxReferenceScriptChunk => 173,
MessageType::MessageType_CardanoTxReferenceInput => 174,
MessageType::MessageType_RippleGetAddress => 175,
MessageType::MessageType_RippleAddress => 176,
MessageType::MessageType_RippleSignTx => 177,
MessageType::MessageType_RippleSignedTx => 178,
MessageType::MessageType_MoneroTransactionInitRequest => 179,
MessageType::MessageType_MoneroTransactionInitAck => 180,
MessageType::MessageType_MoneroTransactionSetInputRequest => 181,
MessageType::MessageType_MoneroTransactionSetInputAck => 182,
MessageType::MessageType_MoneroTransactionInputViniRequest => 183,
MessageType::MessageType_MoneroTransactionInputViniAck => 184,
MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 185,
MessageType::MessageType_MoneroTransactionAllInputsSetAck => 186,
MessageType::MessageType_MoneroTransactionSetOutputRequest => 187,
MessageType::MessageType_MoneroTransactionSetOutputAck => 188,
MessageType::MessageType_MoneroTransactionAllOutSetRequest => 189,
MessageType::MessageType_MoneroTransactionAllOutSetAck => 190,
MessageType::MessageType_MoneroTransactionSignInputRequest => 191,
MessageType::MessageType_MoneroTransactionSignInputAck => 192,
MessageType::MessageType_MoneroTransactionFinalRequest => 193,
MessageType::MessageType_MoneroTransactionFinalAck => 194,
MessageType::MessageType_MoneroKeyImageExportInitRequest => 195,
MessageType::MessageType_MoneroKeyImageExportInitAck => 196,
MessageType::MessageType_MoneroKeyImageSyncStepRequest => 197,
MessageType::MessageType_MoneroKeyImageSyncStepAck => 198,
MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 199,
MessageType::MessageType_MoneroKeyImageSyncFinalAck => 200,
MessageType::MessageType_MoneroGetAddress => 201,
MessageType::MessageType_MoneroAddress => 202,
MessageType::MessageType_MoneroGetWatchKey => 203,
MessageType::MessageType_MoneroWatchKey => 204,
MessageType::MessageType_DebugMoneroDiagRequest => 205,
MessageType::MessageType_DebugMoneroDiagAck => 206,
MessageType::MessageType_MoneroGetTxKeyRequest => 207,
MessageType::MessageType_MoneroGetTxKeyAck => 208,
MessageType::MessageType_MoneroLiveRefreshStartRequest => 209,
MessageType::MessageType_MoneroLiveRefreshStartAck => 210,
MessageType::MessageType_MoneroLiveRefreshStepRequest => 211,
MessageType::MessageType_MoneroLiveRefreshStepAck => 212,
MessageType::MessageType_MoneroLiveRefreshFinalRequest => 213,
MessageType::MessageType_MoneroLiveRefreshFinalAck => 214,
MessageType::MessageType_EosGetPublicKey => 215,
MessageType::MessageType_EosPublicKey => 216,
MessageType::MessageType_EosSignTx => 217,
MessageType::MessageType_EosTxActionRequest => 218,
MessageType::MessageType_EosTxActionAck => 219,
MessageType::MessageType_EosSignedTx => 220,
MessageType::MessageType_BinanceGetAddress => 221,
MessageType::MessageType_BinanceAddress => 222,
MessageType::MessageType_BinanceGetPublicKey => 223,
MessageType::MessageType_BinancePublicKey => 224,
MessageType::MessageType_BinanceSignTx => 225,
MessageType::MessageType_BinanceTxRequest => 226,
MessageType::MessageType_BinanceTransferMsg => 227,
MessageType::MessageType_BinanceOrderMsg => 228,
MessageType::MessageType_BinanceCancelMsg => 229,
MessageType::MessageType_BinanceSignedTx => 230,
MessageType::MessageType_WebAuthnListResidentCredentials => 231,
MessageType::MessageType_WebAuthnCredentials => 232,
MessageType::MessageType_WebAuthnAddResidentCredential => 233,
MessageType::MessageType_WebAuthnRemoveResidentCredential => 234,
MessageType::MessageType_SolanaGetPublicKey => 235,
MessageType::MessageType_SolanaPublicKey => 236,
MessageType::MessageType_SolanaGetAddress => 237,
MessageType::MessageType_SolanaAddress => 238,
MessageType::MessageType_SolanaSignTx => 239,
MessageType::MessageType_SolanaTxSignature => 240,
MessageType::MessageType_BenchmarkListNames => 241,
MessageType::MessageType_BenchmarkNames => 242,
MessageType::MessageType_BenchmarkRun => 243,
MessageType::MessageType_BenchmarkResult => 244,
MessageType::MessageType_UploadBLEFirmwareInit => 59,
MessageType::MessageType_UploadBLEFirmwareNextChunk => 60,
MessageType::MessageType_UploadBLEFirmwareChunk => 61,
MessageType::MessageType_EraseBonds => 62,
MessageType::MessageType_Disconnect => 63,
MessageType::MessageType_GetPublicKey => 64,
MessageType::MessageType_PublicKey => 65,
MessageType::MessageType_SignTx => 66,
MessageType::MessageType_TxRequest => 67,
MessageType::MessageType_TxAck => 68,
MessageType::MessageType_GetAddress => 69,
MessageType::MessageType_Address => 70,
MessageType::MessageType_TxAckPaymentRequest => 71,
MessageType::MessageType_SignMessage => 72,
MessageType::MessageType_VerifyMessage => 73,
MessageType::MessageType_MessageSignature => 74,
MessageType::MessageType_GetOwnershipId => 75,
MessageType::MessageType_OwnershipId => 76,
MessageType::MessageType_GetOwnershipProof => 77,
MessageType::MessageType_OwnershipProof => 78,
MessageType::MessageType_AuthorizeCoinJoin => 79,
MessageType::MessageType_CipherKeyValue => 80,
MessageType::MessageType_CipheredKeyValue => 81,
MessageType::MessageType_SignIdentity => 82,
MessageType::MessageType_SignedIdentity => 83,
MessageType::MessageType_GetECDHSessionKey => 84,
MessageType::MessageType_ECDHSessionKey => 85,
MessageType::MessageType_DebugLinkDecision => 86,
MessageType::MessageType_DebugLinkGetState => 87,
MessageType::MessageType_DebugLinkState => 88,
MessageType::MessageType_DebugLinkStop => 89,
MessageType::MessageType_DebugLinkLog => 90,
MessageType::MessageType_DebugLinkMemoryRead => 91,
MessageType::MessageType_DebugLinkMemory => 92,
MessageType::MessageType_DebugLinkMemoryWrite => 93,
MessageType::MessageType_DebugLinkFlashErase => 94,
MessageType::MessageType_DebugLinkLayout => 95,
MessageType::MessageType_DebugLinkReseedRandom => 96,
MessageType::MessageType_DebugLinkRecordScreen => 97,
MessageType::MessageType_DebugLinkEraseSdCard => 98,
MessageType::MessageType_DebugLinkWatchLayout => 99,
MessageType::MessageType_DebugLinkResetDebugEvents => 100,
MessageType::MessageType_DebugLinkOptigaSetSecMax => 101,
MessageType::MessageType_EthereumGetPublicKey => 102,
MessageType::MessageType_EthereumPublicKey => 103,
MessageType::MessageType_EthereumGetAddress => 104,
MessageType::MessageType_EthereumAddress => 105,
MessageType::MessageType_EthereumSignTx => 106,
MessageType::MessageType_EthereumSignTxEIP1559 => 107,
MessageType::MessageType_EthereumTxRequest => 108,
MessageType::MessageType_EthereumTxAck => 109,
MessageType::MessageType_EthereumSignMessage => 110,
MessageType::MessageType_EthereumVerifyMessage => 111,
MessageType::MessageType_EthereumMessageSignature => 112,
MessageType::MessageType_EthereumSignTypedData => 113,
MessageType::MessageType_EthereumTypedDataStructRequest => 114,
MessageType::MessageType_EthereumTypedDataStructAck => 115,
MessageType::MessageType_EthereumTypedDataValueRequest => 116,
MessageType::MessageType_EthereumTypedDataValueAck => 117,
MessageType::MessageType_EthereumTypedDataSignature => 118,
MessageType::MessageType_EthereumSignTypedHash => 119,
MessageType::MessageType_NEMGetAddress => 120,
MessageType::MessageType_NEMAddress => 121,
MessageType::MessageType_NEMSignTx => 122,
MessageType::MessageType_NEMSignedTx => 123,
MessageType::MessageType_NEMDecryptMessage => 124,
MessageType::MessageType_NEMDecryptedMessage => 125,
MessageType::MessageType_TezosGetAddress => 126,
MessageType::MessageType_TezosAddress => 127,
MessageType::MessageType_TezosSignTx => 128,
MessageType::MessageType_TezosSignedTx => 129,
MessageType::MessageType_TezosGetPublicKey => 130,
MessageType::MessageType_TezosPublicKey => 131,
MessageType::MessageType_StellarSignTx => 132,
MessageType::MessageType_StellarTxOpRequest => 133,
MessageType::MessageType_StellarGetAddress => 134,
MessageType::MessageType_StellarAddress => 135,
MessageType::MessageType_StellarCreateAccountOp => 136,
MessageType::MessageType_StellarPaymentOp => 137,
MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 138,
MessageType::MessageType_StellarManageSellOfferOp => 139,
MessageType::MessageType_StellarCreatePassiveSellOfferOp => 140,
MessageType::MessageType_StellarSetOptionsOp => 141,
MessageType::MessageType_StellarChangeTrustOp => 142,
MessageType::MessageType_StellarAllowTrustOp => 143,
MessageType::MessageType_StellarAccountMergeOp => 144,
MessageType::MessageType_StellarManageDataOp => 145,
MessageType::MessageType_StellarBumpSequenceOp => 146,
MessageType::MessageType_StellarManageBuyOfferOp => 147,
MessageType::MessageType_StellarPathPaymentStrictSendOp => 148,
MessageType::MessageType_StellarClaimClaimableBalanceOp => 149,
MessageType::MessageType_StellarSignedTx => 150,
MessageType::MessageType_CardanoGetPublicKey => 151,
MessageType::MessageType_CardanoPublicKey => 152,
MessageType::MessageType_CardanoGetAddress => 153,
MessageType::MessageType_CardanoAddress => 154,
MessageType::MessageType_CardanoTxItemAck => 155,
MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 156,
MessageType::MessageType_CardanoTxWitnessRequest => 157,
MessageType::MessageType_CardanoTxWitnessResponse => 158,
MessageType::MessageType_CardanoTxHostAck => 159,
MessageType::MessageType_CardanoTxBodyHash => 160,
MessageType::MessageType_CardanoSignTxFinished => 161,
MessageType::MessageType_CardanoSignTxInit => 162,
MessageType::MessageType_CardanoTxInput => 163,
MessageType::MessageType_CardanoTxOutput => 164,
MessageType::MessageType_CardanoAssetGroup => 165,
MessageType::MessageType_CardanoToken => 166,
MessageType::MessageType_CardanoTxCertificate => 167,
MessageType::MessageType_CardanoTxWithdrawal => 168,
MessageType::MessageType_CardanoTxAuxiliaryData => 169,
MessageType::MessageType_CardanoPoolOwner => 170,
MessageType::MessageType_CardanoPoolRelayParameters => 171,
MessageType::MessageType_CardanoGetNativeScriptHash => 172,
MessageType::MessageType_CardanoNativeScriptHash => 173,
MessageType::MessageType_CardanoTxMint => 174,
MessageType::MessageType_CardanoTxCollateralInput => 175,
MessageType::MessageType_CardanoTxRequiredSigner => 176,
MessageType::MessageType_CardanoTxInlineDatumChunk => 177,
MessageType::MessageType_CardanoTxReferenceScriptChunk => 178,
MessageType::MessageType_CardanoTxReferenceInput => 179,
MessageType::MessageType_RippleGetAddress => 180,
MessageType::MessageType_RippleAddress => 181,
MessageType::MessageType_RippleSignTx => 182,
MessageType::MessageType_RippleSignedTx => 183,
MessageType::MessageType_MoneroTransactionInitRequest => 184,
MessageType::MessageType_MoneroTransactionInitAck => 185,
MessageType::MessageType_MoneroTransactionSetInputRequest => 186,
MessageType::MessageType_MoneroTransactionSetInputAck => 187,
MessageType::MessageType_MoneroTransactionInputViniRequest => 188,
MessageType::MessageType_MoneroTransactionInputViniAck => 189,
MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 190,
MessageType::MessageType_MoneroTransactionAllInputsSetAck => 191,
MessageType::MessageType_MoneroTransactionSetOutputRequest => 192,
MessageType::MessageType_MoneroTransactionSetOutputAck => 193,
MessageType::MessageType_MoneroTransactionAllOutSetRequest => 194,
MessageType::MessageType_MoneroTransactionAllOutSetAck => 195,
MessageType::MessageType_MoneroTransactionSignInputRequest => 196,
MessageType::MessageType_MoneroTransactionSignInputAck => 197,
MessageType::MessageType_MoneroTransactionFinalRequest => 198,
MessageType::MessageType_MoneroTransactionFinalAck => 199,
MessageType::MessageType_MoneroKeyImageExportInitRequest => 200,
MessageType::MessageType_MoneroKeyImageExportInitAck => 201,
MessageType::MessageType_MoneroKeyImageSyncStepRequest => 202,
MessageType::MessageType_MoneroKeyImageSyncStepAck => 203,
MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 204,
MessageType::MessageType_MoneroKeyImageSyncFinalAck => 205,
MessageType::MessageType_MoneroGetAddress => 206,
MessageType::MessageType_MoneroAddress => 207,
MessageType::MessageType_MoneroGetWatchKey => 208,
MessageType::MessageType_MoneroWatchKey => 209,
MessageType::MessageType_DebugMoneroDiagRequest => 210,
MessageType::MessageType_DebugMoneroDiagAck => 211,
MessageType::MessageType_MoneroGetTxKeyRequest => 212,
MessageType::MessageType_MoneroGetTxKeyAck => 213,
MessageType::MessageType_MoneroLiveRefreshStartRequest => 214,
MessageType::MessageType_MoneroLiveRefreshStartAck => 215,
MessageType::MessageType_MoneroLiveRefreshStepRequest => 216,
MessageType::MessageType_MoneroLiveRefreshStepAck => 217,
MessageType::MessageType_MoneroLiveRefreshFinalRequest => 218,
MessageType::MessageType_MoneroLiveRefreshFinalAck => 219,
MessageType::MessageType_EosGetPublicKey => 220,
MessageType::MessageType_EosPublicKey => 221,
MessageType::MessageType_EosSignTx => 222,
MessageType::MessageType_EosTxActionRequest => 223,
MessageType::MessageType_EosTxActionAck => 224,
MessageType::MessageType_EosSignedTx => 225,
MessageType::MessageType_BinanceGetAddress => 226,
MessageType::MessageType_BinanceAddress => 227,
MessageType::MessageType_BinanceGetPublicKey => 228,
MessageType::MessageType_BinancePublicKey => 229,
MessageType::MessageType_BinanceSignTx => 230,
MessageType::MessageType_BinanceTxRequest => 231,
MessageType::MessageType_BinanceTransferMsg => 232,
MessageType::MessageType_BinanceOrderMsg => 233,
MessageType::MessageType_BinanceCancelMsg => 234,
MessageType::MessageType_BinanceSignedTx => 235,
MessageType::MessageType_WebAuthnListResidentCredentials => 236,
MessageType::MessageType_WebAuthnCredentials => 237,
MessageType::MessageType_WebAuthnAddResidentCredential => 238,
MessageType::MessageType_WebAuthnRemoveResidentCredential => 239,
MessageType::MessageType_SolanaGetPublicKey => 240,
MessageType::MessageType_SolanaPublicKey => 241,
MessageType::MessageType_SolanaGetAddress => 242,
MessageType::MessageType_SolanaAddress => 243,
MessageType::MessageType_SolanaSignTx => 244,
MessageType::MessageType_SolanaTxSignature => 245,
MessageType::MessageType_BenchmarkListNames => 246,
MessageType::MessageType_BenchmarkNames => 247,
MessageType::MessageType_BenchmarkRun => 248,
MessageType::MessageType_BenchmarkResult => 249,
};
Self::enum_descriptor().value_by_index(index)
}
@ -1549,7 +1579,7 @@ impl MessageType {
}
static file_descriptor_proto_data: &'static [u8] = b"\
\n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\x81U\
\n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xebV\
\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\
@ -1620,102 +1650,108 @@ static file_descriptor_proto_data: &'static [u8] = b"\
d\x10\x07\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12-\n\
\x1bMessageType_FirmwareRequest\x10\x08\x1a\x0c\xb8\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\x18MessageTy\
pe_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\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_T\
xAckPaymentRequest\x10%\x1a\x04\x90\xb5\x18\x01\x12%\n\x17MessageType_Si\
gnMessage\x10&\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19Message\
Type_VerifyMessage\x10'\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12*\n\
\x1cMessageType_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\x10\
1\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_Ownershi\
pProof\x102\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageTyp\
e_AuthorizeCoinJoin\x103\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\
\x1aMessageType_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_GetECDHSe\
ssionKey\x10=\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageT\
ype_ECDHSessionKey\x10>\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x123\n\
\x1dMessageType_DebugLinkDecision\x10d\x1a\x10\xc0\xb5\x18\x01\xb0\xb5\
\x18\x01\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x1dMessageType_DebugLink\
GetState\x10e\x1a\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\xa0\xb5\x18\x01\
\x12(\n\x1aMessageType_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_DebugLinkMemoryRe\
ad\x10n\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12)\n\x1bMessageType_De\
bugLinkMemory\x10o\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12.\n\x20Mes\
sageType_DebugLinkMemoryWrite\x10p\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\
\x01\x12-\n\x1fMessageType_DebugLinkFlashErase\x10q\x1a\x08\x80\xa6\x1d\
\x01\xa0\xb5\x18\x01\x12*\n\x1bMessageType_DebugLinkLayout\x10\xa9F\x1a\
\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x120\n!MessageType_DebugLinkReseedR\
andom\x10\xaaF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x120\n!MessageTyp\
e_DebugLinkRecordScreen\x10\xabF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\
\x12/\n\x20MessageType_DebugLinkEraseSdCard\x10\xadF\x1a\x08\x80\xa6\x1d\
\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_DebugLinkWatchLayout\x10\xaeF\
\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x124\n%MessageType_DebugLinkRes\
etDebugEvents\x10\xafF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x123\n$Me\
ssageType_DebugLinkOptigaSetSecMax\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_EthereumTypedDataStr\
uctRequest\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_Ethere\
umTypedDataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n)MessageT\
ype_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\x10\
C\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_StellarCreateAccoun\
tOp\x10\xd2\x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_StellarPay\
mentOp\x10\xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_StellarPat\
hPaymentStrictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$Messa\
geType_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_StellarAllowTrustOp\
\x10\xd9\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccountMe\
rgeOp\x10\xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarM\
anageDataOp\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_Stell\
arBumpSequenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_\
StellarManageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*Messa\
geType_StellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\
\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x120\n!MessageType_\
UploadBLEFirmwareInit\x10\xc0>\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\
\x125\n&MessageType_UploadBLEFirmwareNextChunk\x10\xc1>\x1a\x08\x80\xa6\
\x1d\x01\x98\xb5\x18\x01\x121\n\"MessageType_UploadBLEFirmwareChunk\x10\
\xc2>\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12%\n\x16MessageType_Eras\
eBonds\x10\xc6>\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12%\n\x16Messag\
eType_Disconnect\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\x15MessageType_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_A\
ddress\x10\x1e\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12)\n\x1fMessage\
Type_TxAckPaymentRequest\x10%\x1a\x04\x90\xb5\x18\x01\x12%\n\x17MessageT\
ype_SignMessage\x10&\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19M\
essageType_VerifyMessage\x10'\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\
\x12*\n\x1cMessageType_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_Owne\
rshipProof\x102\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessag\
eType_AuthorizeCoinJoin\x103\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12\
(\n\x1aMessageType_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_GetE\
CDHSessionKey\x10=\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMes\
sageType_ECDHSessionKey\x10>\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12\
3\n\x1dMessageType_DebugLinkDecision\x10d\x1a\x10\xc0\xb5\x18\x01\xb0\
\xb5\x18\x01\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x1dMessageType_Debug\
LinkGetState\x10e\x1a\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\xa0\xb5\x18\
\x01\x12(\n\x1aMessageType_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_DebugLinkMemo\
ryRead\x10n\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12)\n\x1bMessageTyp\
e_DebugLinkMemory\x10o\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12.\n\
\x20MessageType_DebugLinkMemoryWrite\x10p\x1a\x08\x80\xa6\x1d\x01\xa0\
\xb5\x18\x01\x12-\n\x1fMessageType_DebugLinkFlashErase\x10q\x1a\x08\x80\
\xa6\x1d\x01\xa0\xb5\x18\x01\x12*\n\x1bMessageType_DebugLinkLayout\x10\
\xa9F\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x120\n!MessageType_DebugLi\
nkReseedRandom\x10\xaaF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x120\n!M\
essageType_DebugLinkRecordScreen\x10\xabF\x1a\x08\x80\xa6\x1d\x01\xa0\
\xb5\x18\x01\x12/\n\x20MessageType_DebugLinkEraseSdCard\x10\xadF\x1a\x08\
\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_DebugLinkWatchLay\
out\x10\xaeF\x1a\x08\x80\xa6\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_DebugLinkOptigaSetSecMax\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_EthereumPubli\
cKey\x10\xc3\x03\x1a\x04\x98\xb5\x18\x01\x12(\n\x1eMessageType_EthereumG\
etAddress\x108\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessageType_EthereumAdd\
ress\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_EthereumTxReq\
uest\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_EthereumMessageSignatur\
e\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\

View File

@ -0,0 +1,784 @@
// 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.UploadBLEFirmwareInit)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct UploadBLEFirmwareInit {
// message fields
// @@protoc_insertion_point(field:hw.trezor.messages.ble.UploadBLEFirmwareInit.init_data)
pub init_data: ::std::option::Option<::std::vec::Vec<u8>>,
// @@protoc_insertion_point(field:hw.trezor.messages.ble.UploadBLEFirmwareInit.binsize)
pub binsize: ::std::option::Option<u32>,
// special fields
// @@protoc_insertion_point(special_field:hw.trezor.messages.ble.UploadBLEFirmwareInit.special_fields)
pub special_fields: ::protobuf::SpecialFields,
}
impl<'a> ::std::default::Default for &'a UploadBLEFirmwareInit {
fn default() -> &'a UploadBLEFirmwareInit {
<UploadBLEFirmwareInit as ::protobuf::Message>::default_instance()
}
}
impl UploadBLEFirmwareInit {
pub fn new() -> UploadBLEFirmwareInit {
::std::default::Default::default()
}
// required bytes init_data = 1;
pub fn init_data(&self) -> &[u8] {
match self.init_data.as_ref() {
Some(v) => v,
None => &[],
}
}
pub fn clear_init_data(&mut self) {
self.init_data = ::std::option::Option::None;
}
pub fn has_init_data(&self) -> bool {
self.init_data.is_some()
}
// Param is passed by value, moved
pub fn set_init_data(&mut self, v: ::std::vec::Vec<u8>) {
self.init_data = ::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_init_data(&mut self) -> &mut ::std::vec::Vec<u8> {
if self.init_data.is_none() {
self.init_data = ::std::option::Option::Some(::std::vec::Vec::new());
}
self.init_data.as_mut().unwrap()
}
// Take field
pub fn take_init_data(&mut self) -> ::std::vec::Vec<u8> {
self.init_data.take().unwrap_or_else(|| ::std::vec::Vec::new())
}
// required uint32 binsize = 2;
pub fn binsize(&self) -> u32 {
self.binsize.unwrap_or(0)
}
pub fn clear_binsize(&mut self) {
self.binsize = ::std::option::Option::None;
}
pub fn has_binsize(&self) -> bool {
self.binsize.is_some()
}
// Param is passed by value, moved
pub fn set_binsize(&mut self, v: u32) {
self.binsize = ::std::option::Option::Some(v);
}
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
let mut fields = ::std::vec::Vec::with_capacity(2);
let mut oneofs = ::std::vec::Vec::with_capacity(0);
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
"init_data",
|m: &UploadBLEFirmwareInit| { &m.init_data },
|m: &mut UploadBLEFirmwareInit| { &mut m.init_data },
));
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
"binsize",
|m: &UploadBLEFirmwareInit| { &m.binsize },
|m: &mut UploadBLEFirmwareInit| { &mut m.binsize },
));
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<UploadBLEFirmwareInit>(
"UploadBLEFirmwareInit",
fields,
oneofs,
)
}
}
impl ::protobuf::Message for UploadBLEFirmwareInit {
const NAME: &'static str = "UploadBLEFirmwareInit";
fn is_initialized(&self) -> bool {
if self.init_data.is_none() {
return false;
}
if self.binsize.is_none() {
return false;
}
true
}
fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
while let Some(tag) = is.read_raw_tag_or_eof()? {
match tag {
10 => {
self.init_data = ::std::option::Option::Some(is.read_bytes()?);
},
16 => {
self.binsize = ::std::option::Option::Some(is.read_uint32()?);
},
tag => {
::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
},
};
}
::std::result::Result::Ok(())
}
// Compute sizes of nested messages
#[allow(unused_variables)]
fn compute_size(&self) -> u64 {
let mut my_size = 0;
if let Some(v) = self.init_data.as_ref() {
my_size += ::protobuf::rt::bytes_size(1, &v);
}
if let Some(v) = self.binsize {
my_size += ::protobuf::rt::uint32_size(2, 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.init_data.as_ref() {
os.write_bytes(1, v)?;
}
if let Some(v) = self.binsize {
os.write_uint32(2, 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() -> UploadBLEFirmwareInit {
UploadBLEFirmwareInit::new()
}
fn clear(&mut self) {
self.init_data = ::std::option::Option::None;
self.binsize = ::std::option::Option::None;
self.special_fields.clear();
}
fn default_instance() -> &'static UploadBLEFirmwareInit {
static instance: UploadBLEFirmwareInit = UploadBLEFirmwareInit {
init_data: ::std::option::Option::None,
binsize: ::std::option::Option::None,
special_fields: ::protobuf::SpecialFields::new(),
};
&instance
}
}
impl ::protobuf::MessageFull for UploadBLEFirmwareInit {
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("UploadBLEFirmwareInit").unwrap()).clone()
}
}
impl ::std::fmt::Display for UploadBLEFirmwareInit {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f)
}
}
impl ::protobuf::reflect::ProtobufValue for UploadBLEFirmwareInit {
type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}
// @@protoc_insertion_point(message:hw.trezor.messages.ble.UploadBLEFirmwareNextChunk)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct UploadBLEFirmwareNextChunk {
// message fields
// @@protoc_insertion_point(field:hw.trezor.messages.ble.UploadBLEFirmwareNextChunk.offset)
pub offset: ::std::option::Option<u32>,
// special fields
// @@protoc_insertion_point(special_field:hw.trezor.messages.ble.UploadBLEFirmwareNextChunk.special_fields)
pub special_fields: ::protobuf::SpecialFields,
}
impl<'a> ::std::default::Default for &'a UploadBLEFirmwareNextChunk {
fn default() -> &'a UploadBLEFirmwareNextChunk {
<UploadBLEFirmwareNextChunk as ::protobuf::Message>::default_instance()
}
}
impl UploadBLEFirmwareNextChunk {
pub fn new() -> UploadBLEFirmwareNextChunk {
::std::default::Default::default()
}
// required uint32 offset = 1;
pub fn offset(&self) -> u32 {
self.offset.unwrap_or(0)
}
pub fn clear_offset(&mut self) {
self.offset = ::std::option::Option::None;
}
pub fn has_offset(&self) -> bool {
self.offset.is_some()
}
// Param is passed by value, moved
pub fn set_offset(&mut self, v: u32) {
self.offset = ::std::option::Option::Some(v);
}
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
let mut fields = ::std::vec::Vec::with_capacity(1);
let mut oneofs = ::std::vec::Vec::with_capacity(0);
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
"offset",
|m: &UploadBLEFirmwareNextChunk| { &m.offset },
|m: &mut UploadBLEFirmwareNextChunk| { &mut m.offset },
));
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<UploadBLEFirmwareNextChunk>(
"UploadBLEFirmwareNextChunk",
fields,
oneofs,
)
}
}
impl ::protobuf::Message for UploadBLEFirmwareNextChunk {
const NAME: &'static str = "UploadBLEFirmwareNextChunk";
fn is_initialized(&self) -> bool {
if self.offset.is_none() {
return false;
}
true
}
fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
while let Some(tag) = is.read_raw_tag_or_eof()? {
match tag {
8 => {
self.offset = ::std::option::Option::Some(is.read_uint32()?);
},
tag => {
::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
},
};
}
::std::result::Result::Ok(())
}
// Compute sizes of nested messages
#[allow(unused_variables)]
fn compute_size(&self) -> u64 {
let mut my_size = 0;
if let Some(v) = self.offset {
my_size += ::protobuf::rt::uint32_size(1, v);
}
my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
self.special_fields.cached_size().set(my_size as u32);
my_size
}
fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
if let Some(v) = self.offset {
os.write_uint32(1, v)?;
}
os.write_unknown_fields(self.special_fields.unknown_fields())?;
::std::result::Result::Ok(())
}
fn special_fields(&self) -> &::protobuf::SpecialFields {
&self.special_fields
}
fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
&mut self.special_fields
}
fn new() -> UploadBLEFirmwareNextChunk {
UploadBLEFirmwareNextChunk::new()
}
fn clear(&mut self) {
self.offset = ::std::option::Option::None;
self.special_fields.clear();
}
fn default_instance() -> &'static UploadBLEFirmwareNextChunk {
static instance: UploadBLEFirmwareNextChunk = UploadBLEFirmwareNextChunk {
offset: ::std::option::Option::None,
special_fields: ::protobuf::SpecialFields::new(),
};
&instance
}
}
impl ::protobuf::MessageFull for UploadBLEFirmwareNextChunk {
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("UploadBLEFirmwareNextChunk").unwrap()).clone()
}
}
impl ::std::fmt::Display for UploadBLEFirmwareNextChunk {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f)
}
}
impl ::protobuf::reflect::ProtobufValue for UploadBLEFirmwareNextChunk {
type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}
// @@protoc_insertion_point(message:hw.trezor.messages.ble.UploadBLEFirmwareChunk)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct UploadBLEFirmwareChunk {
// message fields
// @@protoc_insertion_point(field:hw.trezor.messages.ble.UploadBLEFirmwareChunk.data)
pub data: ::std::option::Option<::std::vec::Vec<u8>>,
// special fields
// @@protoc_insertion_point(special_field:hw.trezor.messages.ble.UploadBLEFirmwareChunk.special_fields)
pub special_fields: ::protobuf::SpecialFields,
}
impl<'a> ::std::default::Default for &'a UploadBLEFirmwareChunk {
fn default() -> &'a UploadBLEFirmwareChunk {
<UploadBLEFirmwareChunk as ::protobuf::Message>::default_instance()
}
}
impl UploadBLEFirmwareChunk {
pub fn new() -> UploadBLEFirmwareChunk {
::std::default::Default::default()
}
// required bytes data = 1;
pub fn data(&self) -> &[u8] {
match self.data.as_ref() {
Some(v) => v,
None => &[],
}
}
pub fn clear_data(&mut self) {
self.data = ::std::option::Option::None;
}
pub fn has_data(&self) -> bool {
self.data.is_some()
}
// Param is passed by value, moved
pub fn set_data(&mut self, v: ::std::vec::Vec<u8>) {
self.data = ::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_data(&mut self) -> &mut ::std::vec::Vec<u8> {
if self.data.is_none() {
self.data = ::std::option::Option::Some(::std::vec::Vec::new());
}
self.data.as_mut().unwrap()
}
// Take field
pub fn take_data(&mut self) -> ::std::vec::Vec<u8> {
self.data.take().unwrap_or_else(|| ::std::vec::Vec::new())
}
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
let mut fields = ::std::vec::Vec::with_capacity(1);
let mut oneofs = ::std::vec::Vec::with_capacity(0);
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
"data",
|m: &UploadBLEFirmwareChunk| { &m.data },
|m: &mut UploadBLEFirmwareChunk| { &mut m.data },
));
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<UploadBLEFirmwareChunk>(
"UploadBLEFirmwareChunk",
fields,
oneofs,
)
}
}
impl ::protobuf::Message for UploadBLEFirmwareChunk {
const NAME: &'static str = "UploadBLEFirmwareChunk";
fn is_initialized(&self) -> bool {
if self.data.is_none() {
return false;
}
true
}
fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
while let Some(tag) = is.read_raw_tag_or_eof()? {
match tag {
10 => {
self.data = ::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.data.as_ref() {
my_size += ::protobuf::rt::bytes_size(1, &v);
}
my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
self.special_fields.cached_size().set(my_size as u32);
my_size
}
fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
if let Some(v) = self.data.as_ref() {
os.write_bytes(1, v)?;
}
os.write_unknown_fields(self.special_fields.unknown_fields())?;
::std::result::Result::Ok(())
}
fn special_fields(&self) -> &::protobuf::SpecialFields {
&self.special_fields
}
fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
&mut self.special_fields
}
fn new() -> UploadBLEFirmwareChunk {
UploadBLEFirmwareChunk::new()
}
fn clear(&mut self) {
self.data = ::std::option::Option::None;
self.special_fields.clear();
}
fn default_instance() -> &'static UploadBLEFirmwareChunk {
static instance: UploadBLEFirmwareChunk = UploadBLEFirmwareChunk {
data: ::std::option::Option::None,
special_fields: ::protobuf::SpecialFields::new(),
};
&instance
}
}
impl ::protobuf::MessageFull for UploadBLEFirmwareChunk {
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("UploadBLEFirmwareChunk").unwrap()).clone()
}
}
impl ::std::fmt::Display for UploadBLEFirmwareChunk {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f)
}
}
impl ::protobuf::reflect::ProtobufValue for UploadBLEFirmwareChunk {
type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}
// @@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\x1a\x0emessages.proto\"N\n\x15UploadBLEFirmwareInit\x12\x1b\n\tinit_da\
ta\x18\x01\x20\x02(\x0cR\x08initData\x12\x18\n\x07binsize\x18\x02\x20\
\x02(\rR\x07binsize\"4\n\x1aUploadBLEFirmwareNextChunk\x12\x16\n\x06offs\
et\x18\x01\x20\x02(\rR\x06offset\",\n\x16UploadBLEFirmwareChunk\x12\x12\
\n\x04data\x18\x01\x20\x02(\x0cR\x04data\"\x0c\n\nEraseBonds\"\x0c\n\nDi\
sconnectB;\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(2);
deps.push(super::options::file_descriptor().clone());
deps.push(super::messages::file_descriptor().clone());
let mut messages = ::std::vec::Vec::with_capacity(5);
messages.push(UploadBLEFirmwareInit::generated_message_descriptor_data());
messages.push(UploadBLEFirmwareNextChunk::generated_message_descriptor_data());
messages.push(UploadBLEFirmwareChunk::generated_message_descriptor_data());
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