1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-04-20 00:59:02 +00:00

refactor: Move TxAckPaymentRequest to common messages as PaymentRequest.

This commit is contained in:
Andrew Kozlik 2025-04-08 14:21:21 +02:00
parent 010336ade8
commit 6b7016cc96
20 changed files with 1848 additions and 1846 deletions

View File

@ -234,7 +234,7 @@ message SignTx {
* @next TxAckPrevInput
* @next TxAckPrevOutput
* @next TxAckPrevExtraData
* @next TxAckPaymentRequest
* @next PaymentRequest
*/
message TxRequest {
optional RequestType request_type = 1; // what should be filled in TxAck message?
@ -445,41 +445,6 @@ message PrevOutput {
optional uint32 decred_script_version = 3; // only for Decred
}
/** Data type of a payment request for a set of outputs.
* @next TxRequest
*/
message TxAckPaymentRequest {
option (experimental_message) = true;
optional bytes nonce = 1; // the nonce used in the signature computation
required string recipient_name = 2; // merchant's name
repeated PaymentRequestMemo memos = 3; // any memos that were signed as part of the request
optional uint64 amount = 4; // the sum of the external output amounts requested, required for non-CoinJoin
required bytes signature = 5; // the trusted party's signature of the paymentRequestDigest
message PaymentRequestMemo {
optional TextMemo text_memo = 1;
optional RefundMemo refund_memo = 2;
optional CoinPurchaseMemo coin_purchase_memo = 3;
}
message TextMemo {
required string text = 1; // plain-text note explaining the purpose of the payment request
}
message RefundMemo {
required string address = 1; // the address where the payment should be refunded if necessary
required bytes mac = 2; // the MAC returned by GetAddress
}
message CoinPurchaseMemo {
required uint32 coin_type = 1; // the SLIP-0044 coin type of the address
required string amount = 2; // the amount the address will receive as a human-readable string including units, e.g. "0.025 BTC"
required string address = 3; // the address where the coin purchase will be delivered
required bytes mac = 4; // the MAC returned by GetAddress
}
}
/**
* Request: Data about input to be signed.
* Wire-alias of TxAck.

View File

@ -169,3 +169,40 @@ message HDNodeType {
optional bytes private_key = 5;
required bytes public_key = 6;
}
/**
* Structure representing a SLIP-0024 payment request.
* @next TxRequest
* @embed
*/
message PaymentRequest {
option (experimental_message) = true;
optional bytes nonce = 1; // the nonce used in the signature computation
required string recipient_name = 2; // merchant's name
repeated PaymentRequestMemo memos = 3; // any memos that were signed as part of the request
optional uint64 amount = 4; // the sum of the external output amounts requested, required for non-CoinJoin
required bytes signature = 5; // the trusted party's signature of the paymentRequestDigest
message PaymentRequestMemo {
optional TextMemo text_memo = 1;
optional RefundMemo refund_memo = 2;
optional CoinPurchaseMemo coin_purchase_memo = 3;
}
message TextMemo {
required string text = 1; // plain-text note explaining the purpose of the payment request
}
message RefundMemo {
required string address = 1; // the address where the payment should be refunded if necessary
required bytes mac = 2; // the MAC returned by GetAddress
}
message CoinPurchaseMemo {
required uint32 coin_type = 1; // the SLIP-0044 coin type of the address
required string amount = 2; // the amount the address will receive as a human-readable string including units, e.g. "0.025 BTC"
required string address = 3; // the address where the coin purchase will be delivered
required bytes mac = 4; // the MAC returned by GetAddress
}
}

View File

@ -45,6 +45,7 @@ enum MessageType {
MessageType_BackupDevice = 34 [(bitcoin_only) = true, (wire_in) = true];
MessageType_EntropyRequest = 35 [(bitcoin_only) = true, (wire_out) = true];
MessageType_EntropyAck = 36 [(bitcoin_only) = true, (wire_in) = true];
MessageType_PaymentRequest = 37 [(bitcoin_only) = true, (wire_in) = true];
MessageType_EntropyCheckReady = 994 [(bitcoin_only) = true, (wire_out) = true];
MessageType_EntropyCheckContinue = 995 [(bitcoin_only) = true, (wire_in) = true];
MessageType_PassphraseRequest = 41 [(bitcoin_only) = true, (wire_out) = true];
@ -99,7 +100,6 @@ enum MessageType {
MessageType_TxAck = 22 [(bitcoin_only) = true, (wire_in) = true];
MessageType_GetAddress = 29 [(bitcoin_only) = true, (wire_in) = true];
MessageType_Address = 30 [(bitcoin_only) = true, (wire_out) = true];
MessageType_TxAckPaymentRequest = 37 [(wire_in) = true];
MessageType_SignMessage = 38 [(bitcoin_only) = true, (wire_in) = true];
MessageType_VerifyMessage = 39 [(bitcoin_only) = true, (wire_in) = true];
MessageType_MessageSignature = 40 [(bitcoin_only) = true, (wire_out) = true];

View File

@ -14,7 +14,7 @@ if TYPE_CHECKING:
from typing import Optional
from trezor.crypto import bip32
from trezor.messages import SignTx, TxAckPaymentRequest, TxInput, TxOutput
from trezor.messages import PaymentRequest, SignTx, TxInput, TxOutput
from apps.common.coininfo import CoinInfo
from apps.common.keychain import Keychain
@ -89,7 +89,7 @@ class Approver:
self.total_out += txo.amount
async def add_payment_request(
self, msg: TxAckPaymentRequest, keychain: Keychain
self, msg: PaymentRequest, keychain: Keychain
) -> None:
from .payment_request import PaymentRequestVerifier
@ -241,7 +241,7 @@ class BasicApprover(Approver):
self.external_output_index += 1
async def add_payment_request(
self, msg: TxAckPaymentRequest, keychain: Keychain
self, msg: PaymentRequest, keychain: Keychain
) -> None:
await super().add_payment_request(msg, keychain)
if msg.amount is None:

View File

@ -13,11 +13,11 @@ if TYPE_CHECKING:
from trezor.enums import AmountUnit
from trezor.messages import (
PaymentRequest,
PrevInput,
PrevOutput,
PrevTx,
SignTx,
TxAckPaymentRequest,
TxInput,
TxOutput,
TxRequest,
@ -82,7 +82,7 @@ class UiConfirmDecredSSTXSubmission(UiConfirm):
class UiConfirmPaymentRequest(UiConfirm):
def __init__(
self,
payment_req: TxAckPaymentRequest,
payment_req: PaymentRequest,
coin: CoinInfo,
amount_unit: AmountUnit,
) -> None:
@ -258,7 +258,7 @@ def confirm_decred_sstx_submission(output: TxOutput, coin: CoinInfo, amount_unit
return (yield UiConfirmDecredSSTXSubmission(output, coin, amount_unit)) # type: ignore [awaitable-return-type]
def should_show_payment_request_details(payment_req: TxAckPaymentRequest, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[bool]: # type: ignore [awaitable-return-type]
def should_show_payment_request_details(payment_req: PaymentRequest, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[bool]: # type: ignore [awaitable-return-type]
return (yield UiConfirmPaymentRequest(payment_req, coin, amount_unit)) # type: ignore [awaitable-return-type]
@ -393,13 +393,13 @@ def request_tx_prev_output(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: b
return ack.tx.output
def request_payment_req(tx_req: TxRequest, i: int) -> Awaitable[TxAckPaymentRequest]: # type: ignore [awaitable-return-type]
from trezor.messages import TxAckPaymentRequest
def request_payment_req(tx_req: TxRequest, i: int) -> Awaitable[PaymentRequest]: # type: ignore [awaitable-return-type]
from trezor.messages import PaymentRequest
assert tx_req.details is not None
tx_req.request_type = RequestType.TXPAYMENTREQ
tx_req.details.request_index = i
ack = yield TxAckPaymentRequest, tx_req # type: ignore [awaitable-return-type]
ack = yield PaymentRequest, tx_req # type: ignore [awaitable-return-type]
_clear_tx_request(tx_req)
return _sanitize_payment_req(ack)
@ -585,7 +585,7 @@ def _sanitize_tx_output(txo: TxOutput, coin: CoinInfo) -> TxOutput:
return txo
def _sanitize_payment_req(payment_req: TxAckPaymentRequest) -> TxAckPaymentRequest:
def _sanitize_payment_req(payment_req: PaymentRequest) -> PaymentRequest:
for memo in payment_req.memos:
if (memo.text_memo, memo.refund_memo, memo.coin_purchase_memo).count(None) != 2:
raise DataError(

View File

@ -19,7 +19,7 @@ from ..keychain import address_n_to_name
if TYPE_CHECKING:
from trezor.enums import AmountUnit
from trezor.messages import TxAckPaymentRequest, TxOutput
from trezor.messages import PaymentRequest, TxOutput
from apps.common.coininfo import CoinInfo
from apps.common.paths import Bip32Path
@ -155,7 +155,7 @@ async def confirm_decred_sstx_submission(
async def should_show_payment_request_details(
msg: TxAckPaymentRequest,
msg: PaymentRequest,
coin: CoinInfo,
amount_unit: AmountUnit,
) -> bool:

View File

@ -6,7 +6,7 @@ from trezor.wire import DataError, context
from .. import writers
if TYPE_CHECKING:
from trezor.messages import TxAckPaymentRequest, TxOutput
from trezor.messages import PaymentRequest, TxOutput
from apps.common import coininfo
from apps.common.keychain import Keychain
@ -24,7 +24,7 @@ class PaymentRequestVerifier:
PUBLIC_KEY = b""
def __init__(
self, msg: TxAckPaymentRequest, coin: coininfo.CoinInfo, keychain: Keychain
self, msg: PaymentRequest, coin: coininfo.CoinInfo, keychain: Keychain
) -> None:
from storage.cache_common import APP_COMMON_NONCE
from trezor.crypto.hashlib import sha256

View File

@ -29,6 +29,7 @@ Nonce = 33
BackupDevice = 34
EntropyRequest = 35
EntropyAck = 36
PaymentRequest = 37
EntropyCheckReady = 994
EntropyCheckContinue = 995
PassphraseRequest = 41
@ -106,7 +107,6 @@ if not utils.BITCOIN_ONLY:
SetU2FCounter = 63
GetNextU2FCounter = 80
NextU2FCounter = 81
TxAckPaymentRequest = 37
EthereumGetPublicKey = 450
EthereumPublicKey = 451
EthereumGetAddress = 56

View File

@ -373,6 +373,7 @@ if TYPE_CHECKING:
BackupDevice = 34
EntropyRequest = 35
EntropyAck = 36
PaymentRequest = 37
EntropyCheckReady = 994
EntropyCheckContinue = 995
PassphraseRequest = 41
@ -417,7 +418,6 @@ if TYPE_CHECKING:
TxAck = 22
GetAddress = 29
Address = 30
TxAckPaymentRequest = 37
SignMessage = 38
VerifyMessage = 39
MessageSignature = 40

View File

@ -456,6 +456,96 @@ if TYPE_CHECKING:
def is_type_of(cls, msg: Any) -> TypeGuard["HDNodeType"]:
return isinstance(msg, cls)
class PaymentRequest(protobuf.MessageType):
nonce: "bytes | None"
recipient_name: "str"
memos: "list[PaymentRequestMemo]"
amount: "int | None"
signature: "bytes"
def __init__(
self,
*,
recipient_name: "str",
signature: "bytes",
memos: "list[PaymentRequestMemo] | None" = None,
nonce: "bytes | None" = None,
amount: "int | None" = None,
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["PaymentRequest"]:
return isinstance(msg, cls)
class PaymentRequestMemo(protobuf.MessageType):
text_memo: "TextMemo | None"
refund_memo: "RefundMemo | None"
coin_purchase_memo: "CoinPurchaseMemo | None"
def __init__(
self,
*,
text_memo: "TextMemo | None" = None,
refund_memo: "RefundMemo | None" = None,
coin_purchase_memo: "CoinPurchaseMemo | None" = None,
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["PaymentRequestMemo"]:
return isinstance(msg, cls)
class TextMemo(protobuf.MessageType):
text: "str"
def __init__(
self,
*,
text: "str",
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["TextMemo"]:
return isinstance(msg, cls)
class RefundMemo(protobuf.MessageType):
address: "str"
mac: "bytes"
def __init__(
self,
*,
address: "str",
mac: "bytes",
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["RefundMemo"]:
return isinstance(msg, cls)
class CoinPurchaseMemo(protobuf.MessageType):
coin_type: "int"
amount: "str"
address: "str"
mac: "bytes"
def __init__(
self,
*,
coin_type: "int",
amount: "str",
address: "str",
mac: "bytes",
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["CoinPurchaseMemo"]:
return isinstance(msg, cls)
class MultisigRedeemScriptType(protobuf.MessageType):
pubkeys: "list[HDNodePathType]"
signatures: "list[bytes]"
@ -866,28 +956,6 @@ if TYPE_CHECKING:
def is_type_of(cls, msg: Any) -> TypeGuard["PrevOutput"]:
return isinstance(msg, cls)
class TxAckPaymentRequest(protobuf.MessageType):
nonce: "bytes | None"
recipient_name: "str"
memos: "list[PaymentRequestMemo]"
amount: "int | None"
signature: "bytes"
def __init__(
self,
*,
recipient_name: "str",
signature: "bytes",
memos: "list[PaymentRequestMemo] | None" = None,
nonce: "bytes | None" = None,
amount: "int | None" = None,
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["TxAckPaymentRequest"]:
return isinstance(msg, cls)
class TxAckInput(protobuf.MessageType):
tx: "TxAckInputWrapper"
@ -1118,74 +1186,6 @@ if TYPE_CHECKING:
def is_type_of(cls, msg: Any) -> TypeGuard["TxRequestSerializedType"]:
return isinstance(msg, cls)
class PaymentRequestMemo(protobuf.MessageType):
text_memo: "TextMemo | None"
refund_memo: "RefundMemo | None"
coin_purchase_memo: "CoinPurchaseMemo | None"
def __init__(
self,
*,
text_memo: "TextMemo | None" = None,
refund_memo: "RefundMemo | None" = None,
coin_purchase_memo: "CoinPurchaseMemo | None" = None,
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["PaymentRequestMemo"]:
return isinstance(msg, cls)
class TextMemo(protobuf.MessageType):
text: "str"
def __init__(
self,
*,
text: "str",
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["TextMemo"]:
return isinstance(msg, cls)
class RefundMemo(protobuf.MessageType):
address: "str"
mac: "bytes"
def __init__(
self,
*,
address: "str",
mac: "bytes",
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["RefundMemo"]:
return isinstance(msg, cls)
class CoinPurchaseMemo(protobuf.MessageType):
coin_type: "int"
amount: "str"
address: "str"
mac: "bytes"
def __init__(
self,
*,
coin_type: "int",
amount: "str",
address: "str",
mac: "bytes",
) -> None:
pass
@classmethod
def is_type_of(cls, msg: Any) -> TypeGuard["CoinPurchaseMemo"]:
return isinstance(msg, cls)
class TxAckInputWrapper(protobuf.MessageType):
input: "TxInput"

View File

@ -306,7 +306,7 @@ Trezor sets `request_type` to `TXPAYMENTREQ`, and `request_details.tx_hash` is u
`request_details.request_index` is the index of the payment request in the transaction:
0 is the first payment request, 1 is second, etc.
The host must respond with a `TxAckPaymentRequest` message.
The host must respond with a `PaymentRequest` message.
## Replacement transactions

View File

@ -5,7 +5,7 @@ endif
SKIPPED_MESSAGES := Binance Cardano DebugMonero Eos Monero Ontology Ripple SdProtect Tezos WebAuthn \
DebugLinkRecordScreen DebugLinkEraseSdCard DebugLinkWatchLayout \
DebugLinkLayout DebugLinkResetDebugEvents GetNonce \
TxAckInput TxAckOutput TxAckPrev TxAckPaymentRequest \
TxAckInput TxAckOutput TxAckPrev PaymentRequest \
EthereumSignTypedData EthereumTypedDataStructRequest EthereumTypedDataStructAck \
EthereumTypedDataValueRequest EthereumTypedDataValueAck ShowDeviceTutorial \
UnlockBootloader AuthenticateDevice AuthenticityProof \

View File

@ -100,5 +100,5 @@ CoinJoinRequest.mask_public_key max_size:33
CoinJoinRequest.signature max_size:64
# Unused messages.
TxAckPaymentRequest skip_message:true
PaymentRequest skip_message:true
PaymentRequestMemo skip_message:true

View File

@ -272,7 +272,7 @@ def sign_tx(
outputs: Sequence[messages.TxOutputType],
details: Optional[messages.SignTx] = None,
prev_txes: Optional["TxCacheType"] = None,
payment_reqs: Sequence[messages.TxAckPaymentRequest] = (),
payment_reqs: Sequence[messages.PaymentRequest] = (),
preauthorized: bool = False,
unlock_path: Optional[List[int]] = None,
unlock_path_mac: Optional[bytes] = None,

View File

@ -426,6 +426,7 @@ class MessageType(IntEnum):
BackupDevice = 34
EntropyRequest = 35
EntropyAck = 36
PaymentRequest = 37
EntropyCheckReady = 994
EntropyCheckContinue = 995
PassphraseRequest = 41
@ -470,7 +471,6 @@ class MessageType(IntEnum):
TxAck = 22
GetAddress = 29
Address = 30
TxAckPaymentRequest = 37
SignMessage = 38
VerifyMessage = 39
MessageSignature = 40
@ -1098,6 +1098,106 @@ class HDNodeType(protobuf.MessageType):
self.private_key = private_key
class PaymentRequest(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 37
FIELDS = {
1: protobuf.Field("nonce", "bytes", repeated=False, required=False, default=None),
2: protobuf.Field("recipient_name", "string", repeated=False, required=True),
3: protobuf.Field("memos", "PaymentRequestMemo", repeated=True, required=False, default=None),
4: protobuf.Field("amount", "uint64", repeated=False, required=False, default=None),
5: protobuf.Field("signature", "bytes", repeated=False, required=True),
}
def __init__(
self,
*,
recipient_name: "str",
signature: "bytes",
memos: Optional[Sequence["PaymentRequestMemo"]] = None,
nonce: Optional["bytes"] = None,
amount: Optional["int"] = None,
) -> None:
self.memos: Sequence["PaymentRequestMemo"] = memos if memos is not None else []
self.recipient_name = recipient_name
self.signature = signature
self.nonce = nonce
self.amount = amount
class PaymentRequestMemo(protobuf.MessageType):
MESSAGE_WIRE_TYPE = None
FIELDS = {
1: protobuf.Field("text_memo", "TextMemo", repeated=False, required=False, default=None),
2: protobuf.Field("refund_memo", "RefundMemo", repeated=False, required=False, default=None),
3: protobuf.Field("coin_purchase_memo", "CoinPurchaseMemo", repeated=False, required=False, default=None),
}
def __init__(
self,
*,
text_memo: Optional["TextMemo"] = None,
refund_memo: Optional["RefundMemo"] = None,
coin_purchase_memo: Optional["CoinPurchaseMemo"] = None,
) -> None:
self.text_memo = text_memo
self.refund_memo = refund_memo
self.coin_purchase_memo = coin_purchase_memo
class TextMemo(protobuf.MessageType):
MESSAGE_WIRE_TYPE = None
FIELDS = {
1: protobuf.Field("text", "string", repeated=False, required=True),
}
def __init__(
self,
*,
text: "str",
) -> None:
self.text = text
class RefundMemo(protobuf.MessageType):
MESSAGE_WIRE_TYPE = None
FIELDS = {
1: protobuf.Field("address", "string", repeated=False, required=True),
2: protobuf.Field("mac", "bytes", repeated=False, required=True),
}
def __init__(
self,
*,
address: "str",
mac: "bytes",
) -> None:
self.address = address
self.mac = mac
class CoinPurchaseMemo(protobuf.MessageType):
MESSAGE_WIRE_TYPE = None
FIELDS = {
1: protobuf.Field("coin_type", "uint32", repeated=False, required=True),
2: protobuf.Field("amount", "string", repeated=False, required=True),
3: protobuf.Field("address", "string", repeated=False, required=True),
4: protobuf.Field("mac", "bytes", repeated=False, required=True),
}
def __init__(
self,
*,
coin_type: "int",
amount: "str",
address: "str",
mac: "bytes",
) -> None:
self.coin_type = coin_type
self.amount = amount
self.address = address
self.mac = mac
class MultisigRedeemScriptType(protobuf.MessageType):
MESSAGE_WIRE_TYPE = None
FIELDS = {
@ -1611,32 +1711,6 @@ class PrevOutput(protobuf.MessageType):
self.decred_script_version = decred_script_version
class TxAckPaymentRequest(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 37
FIELDS = {
1: protobuf.Field("nonce", "bytes", repeated=False, required=False, default=None),
2: protobuf.Field("recipient_name", "string", repeated=False, required=True),
3: protobuf.Field("memos", "PaymentRequestMemo", repeated=True, required=False, default=None),
4: protobuf.Field("amount", "uint64", repeated=False, required=False, default=None),
5: protobuf.Field("signature", "bytes", repeated=False, required=True),
}
def __init__(
self,
*,
recipient_name: "str",
signature: "bytes",
memos: Optional[Sequence["PaymentRequestMemo"]] = None,
nonce: Optional["bytes"] = None,
amount: Optional["int"] = None,
) -> None:
self.memos: Sequence["PaymentRequestMemo"] = memos if memos is not None else []
self.recipient_name = recipient_name
self.signature = signature
self.nonce = nonce
self.amount = amount
class TxAckInput(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 22
FIELDS = {
@ -2064,80 +2138,6 @@ class TxOutputType(protobuf.MessageType):
self.payment_req_index = payment_req_index
class PaymentRequestMemo(protobuf.MessageType):
MESSAGE_WIRE_TYPE = None
FIELDS = {
1: protobuf.Field("text_memo", "TextMemo", repeated=False, required=False, default=None),
2: protobuf.Field("refund_memo", "RefundMemo", repeated=False, required=False, default=None),
3: protobuf.Field("coin_purchase_memo", "CoinPurchaseMemo", repeated=False, required=False, default=None),
}
def __init__(
self,
*,
text_memo: Optional["TextMemo"] = None,
refund_memo: Optional["RefundMemo"] = None,
coin_purchase_memo: Optional["CoinPurchaseMemo"] = None,
) -> None:
self.text_memo = text_memo
self.refund_memo = refund_memo
self.coin_purchase_memo = coin_purchase_memo
class TextMemo(protobuf.MessageType):
MESSAGE_WIRE_TYPE = None
FIELDS = {
1: protobuf.Field("text", "string", repeated=False, required=True),
}
def __init__(
self,
*,
text: "str",
) -> None:
self.text = text
class RefundMemo(protobuf.MessageType):
MESSAGE_WIRE_TYPE = None
FIELDS = {
1: protobuf.Field("address", "string", repeated=False, required=True),
2: protobuf.Field("mac", "bytes", repeated=False, required=True),
}
def __init__(
self,
*,
address: "str",
mac: "bytes",
) -> None:
self.address = address
self.mac = mac
class CoinPurchaseMemo(protobuf.MessageType):
MESSAGE_WIRE_TYPE = None
FIELDS = {
1: protobuf.Field("coin_type", "uint32", repeated=False, required=True),
2: protobuf.Field("amount", "string", repeated=False, required=True),
3: protobuf.Field("address", "string", repeated=False, required=True),
4: protobuf.Field("mac", "bytes", repeated=False, required=True),
}
def __init__(
self,
*,
coin_type: "int",
amount: "str",
address: "str",
mac: "bytes",
) -> None:
self.coin_type = coin_type
self.amount = amount
self.address = address
self.mac = mac
class TxAckInputWrapper(protobuf.MessageType):
MESSAGE_WIRE_TYPE = None
FIELDS = {

View File

@ -24,6 +24,7 @@ trezor_message_impl! {
BackupDevice => MessageType_BackupDevice,
EntropyRequest => MessageType_EntropyRequest,
EntropyAck => MessageType_EntropyAck,
PaymentRequest => MessageType_PaymentRequest,
EntropyCheckReady => MessageType_EntropyCheckReady,
EntropyCheckContinue => MessageType_EntropyCheckContinue,
PassphraseRequest => MessageType_PassphraseRequest,
@ -112,7 +113,6 @@ trezor_message_impl! {
TxAck => MessageType_TxAck,
GetAddress => MessageType_GetAddress,
Address => MessageType_Address,
TxAckPaymentRequest => MessageType_TxAckPaymentRequest,
SignMessage => MessageType_SignMessage,
VerifyMessage => MessageType_VerifyMessage,
MessageSignature => MessageType_MessageSignature,

View File

@ -78,6 +78,8 @@ pub enum MessageType {
MessageType_EntropyRequest = 35,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_EntropyAck)
MessageType_EntropyAck = 36,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_PaymentRequest)
MessageType_PaymentRequest = 37,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_EntropyCheckReady)
MessageType_EntropyCheckReady = 994,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_EntropyCheckContinue)
@ -166,8 +168,6 @@ pub enum MessageType {
MessageType_GetAddress = 29,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_Address)
MessageType_Address = 30,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_TxAckPaymentRequest)
MessageType_TxAckPaymentRequest = 37,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_SignMessage)
MessageType_SignMessage = 38,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_VerifyMessage)
@ -568,6 +568,7 @@ impl ::protobuf::Enum for MessageType {
34 => ::std::option::Option::Some(MessageType::MessageType_BackupDevice),
35 => ::std::option::Option::Some(MessageType::MessageType_EntropyRequest),
36 => ::std::option::Option::Some(MessageType::MessageType_EntropyAck),
37 => ::std::option::Option::Some(MessageType::MessageType_PaymentRequest),
994 => ::std::option::Option::Some(MessageType::MessageType_EntropyCheckReady),
995 => ::std::option::Option::Some(MessageType::MessageType_EntropyCheckContinue),
41 => ::std::option::Option::Some(MessageType::MessageType_PassphraseRequest),
@ -612,7 +613,6 @@ impl ::protobuf::Enum for MessageType {
22 => ::std::option::Option::Some(MessageType::MessageType_TxAck),
29 => ::std::option::Option::Some(MessageType::MessageType_GetAddress),
30 => ::std::option::Option::Some(MessageType::MessageType_Address),
37 => ::std::option::Option::Some(MessageType::MessageType_TxAckPaymentRequest),
38 => ::std::option::Option::Some(MessageType::MessageType_SignMessage),
39 => ::std::option::Option::Some(MessageType::MessageType_VerifyMessage),
40 => ::std::option::Option::Some(MessageType::MessageType_MessageSignature),
@ -826,6 +826,7 @@ impl ::protobuf::Enum for MessageType {
"MessageType_BackupDevice" => ::std::option::Option::Some(MessageType::MessageType_BackupDevice),
"MessageType_EntropyRequest" => ::std::option::Option::Some(MessageType::MessageType_EntropyRequest),
"MessageType_EntropyAck" => ::std::option::Option::Some(MessageType::MessageType_EntropyAck),
"MessageType_PaymentRequest" => ::std::option::Option::Some(MessageType::MessageType_PaymentRequest),
"MessageType_EntropyCheckReady" => ::std::option::Option::Some(MessageType::MessageType_EntropyCheckReady),
"MessageType_EntropyCheckContinue" => ::std::option::Option::Some(MessageType::MessageType_EntropyCheckContinue),
"MessageType_PassphraseRequest" => ::std::option::Option::Some(MessageType::MessageType_PassphraseRequest),
@ -870,7 +871,6 @@ impl ::protobuf::Enum for MessageType {
"MessageType_TxAck" => ::std::option::Option::Some(MessageType::MessageType_TxAck),
"MessageType_GetAddress" => ::std::option::Option::Some(MessageType::MessageType_GetAddress),
"MessageType_Address" => ::std::option::Option::Some(MessageType::MessageType_Address),
"MessageType_TxAckPaymentRequest" => ::std::option::Option::Some(MessageType::MessageType_TxAckPaymentRequest),
"MessageType_SignMessage" => ::std::option::Option::Some(MessageType::MessageType_SignMessage),
"MessageType_VerifyMessage" => ::std::option::Option::Some(MessageType::MessageType_VerifyMessage),
"MessageType_MessageSignature" => ::std::option::Option::Some(MessageType::MessageType_MessageSignature),
@ -1083,6 +1083,7 @@ impl ::protobuf::Enum for MessageType {
MessageType::MessageType_BackupDevice,
MessageType::MessageType_EntropyRequest,
MessageType::MessageType_EntropyAck,
MessageType::MessageType_PaymentRequest,
MessageType::MessageType_EntropyCheckReady,
MessageType::MessageType_EntropyCheckContinue,
MessageType::MessageType_PassphraseRequest,
@ -1127,7 +1128,6 @@ impl ::protobuf::Enum for MessageType {
MessageType::MessageType_TxAck,
MessageType::MessageType_GetAddress,
MessageType::MessageType_Address,
MessageType::MessageType_TxAckPaymentRequest,
MessageType::MessageType_SignMessage,
MessageType::MessageType_VerifyMessage,
MessageType::MessageType_MessageSignature,
@ -1346,51 +1346,51 @@ impl ::protobuf::EnumFull for MessageType {
MessageType::MessageType_BackupDevice => 22,
MessageType::MessageType_EntropyRequest => 23,
MessageType::MessageType_EntropyAck => 24,
MessageType::MessageType_EntropyCheckReady => 25,
MessageType::MessageType_EntropyCheckContinue => 26,
MessageType::MessageType_PassphraseRequest => 27,
MessageType::MessageType_PassphraseAck => 28,
MessageType::MessageType_RecoveryDevice => 29,
MessageType::MessageType_WordRequest => 30,
MessageType::MessageType_WordAck => 31,
MessageType::MessageType_GetFeatures => 32,
MessageType::MessageType_SdProtect => 33,
MessageType::MessageType_ChangeWipeCode => 34,
MessageType::MessageType_EndSession => 35,
MessageType::MessageType_DoPreauthorized => 36,
MessageType::MessageType_PreauthorizedRequest => 37,
MessageType::MessageType_CancelAuthorization => 38,
MessageType::MessageType_RebootToBootloader => 39,
MessageType::MessageType_GetFirmwareHash => 40,
MessageType::MessageType_FirmwareHash => 41,
MessageType::MessageType_UnlockPath => 42,
MessageType::MessageType_UnlockedPathRequest => 43,
MessageType::MessageType_ShowDeviceTutorial => 44,
MessageType::MessageType_UnlockBootloader => 45,
MessageType::MessageType_AuthenticateDevice => 46,
MessageType::MessageType_AuthenticityProof => 47,
MessageType::MessageType_ChangeLanguage => 48,
MessageType::MessageType_TranslationDataRequest => 49,
MessageType::MessageType_TranslationDataAck => 50,
MessageType::MessageType_SetBrightness => 51,
MessageType::MessageType_SetU2FCounter => 52,
MessageType::MessageType_GetNextU2FCounter => 53,
MessageType::MessageType_NextU2FCounter => 54,
MessageType::MessageType_Deprecated_PassphraseStateRequest => 55,
MessageType::MessageType_Deprecated_PassphraseStateAck => 56,
MessageType::MessageType_FirmwareErase => 57,
MessageType::MessageType_FirmwareUpload => 58,
MessageType::MessageType_FirmwareRequest => 59,
MessageType::MessageType_ProdTestT1 => 60,
MessageType::MessageType_BleUnpair => 61,
MessageType::MessageType_GetPublicKey => 62,
MessageType::MessageType_PublicKey => 63,
MessageType::MessageType_SignTx => 64,
MessageType::MessageType_TxRequest => 65,
MessageType::MessageType_TxAck => 66,
MessageType::MessageType_GetAddress => 67,
MessageType::MessageType_Address => 68,
MessageType::MessageType_TxAckPaymentRequest => 69,
MessageType::MessageType_PaymentRequest => 25,
MessageType::MessageType_EntropyCheckReady => 26,
MessageType::MessageType_EntropyCheckContinue => 27,
MessageType::MessageType_PassphraseRequest => 28,
MessageType::MessageType_PassphraseAck => 29,
MessageType::MessageType_RecoveryDevice => 30,
MessageType::MessageType_WordRequest => 31,
MessageType::MessageType_WordAck => 32,
MessageType::MessageType_GetFeatures => 33,
MessageType::MessageType_SdProtect => 34,
MessageType::MessageType_ChangeWipeCode => 35,
MessageType::MessageType_EndSession => 36,
MessageType::MessageType_DoPreauthorized => 37,
MessageType::MessageType_PreauthorizedRequest => 38,
MessageType::MessageType_CancelAuthorization => 39,
MessageType::MessageType_RebootToBootloader => 40,
MessageType::MessageType_GetFirmwareHash => 41,
MessageType::MessageType_FirmwareHash => 42,
MessageType::MessageType_UnlockPath => 43,
MessageType::MessageType_UnlockedPathRequest => 44,
MessageType::MessageType_ShowDeviceTutorial => 45,
MessageType::MessageType_UnlockBootloader => 46,
MessageType::MessageType_AuthenticateDevice => 47,
MessageType::MessageType_AuthenticityProof => 48,
MessageType::MessageType_ChangeLanguage => 49,
MessageType::MessageType_TranslationDataRequest => 50,
MessageType::MessageType_TranslationDataAck => 51,
MessageType::MessageType_SetBrightness => 52,
MessageType::MessageType_SetU2FCounter => 53,
MessageType::MessageType_GetNextU2FCounter => 54,
MessageType::MessageType_NextU2FCounter => 55,
MessageType::MessageType_Deprecated_PassphraseStateRequest => 56,
MessageType::MessageType_Deprecated_PassphraseStateAck => 57,
MessageType::MessageType_FirmwareErase => 58,
MessageType::MessageType_FirmwareUpload => 59,
MessageType::MessageType_FirmwareRequest => 60,
MessageType::MessageType_ProdTestT1 => 61,
MessageType::MessageType_BleUnpair => 62,
MessageType::MessageType_GetPublicKey => 63,
MessageType::MessageType_PublicKey => 64,
MessageType::MessageType_SignTx => 65,
MessageType::MessageType_TxRequest => 66,
MessageType::MessageType_TxAck => 67,
MessageType::MessageType_GetAddress => 68,
MessageType::MessageType_Address => 69,
MessageType::MessageType_SignMessage => 70,
MessageType::MessageType_VerifyMessage => 71,
MessageType::MessageType_MessageSignature => 72,
@ -1591,7 +1591,7 @@ impl MessageType {
}
static file_descriptor_proto_data: &'static [u8] = b"\
\n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xacW\
\n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xabW\
\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\
@ -1622,266 +1622,266 @@ static file_descriptor_proto_data: &'static [u8] = b"\
essageType_BackupDevice\x10\"\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\
\x12(\n\x1aMessageType_EntropyRequest\x10#\x1a\x08\x80\xa6\x1d\x01\x98\
\xb5\x18\x01\x12$\n\x16MessageType_EntropyAck\x10$\x1a\x08\x80\xa6\x1d\
\x01\x90\xb5\x18\x01\x12,\n\x1dMessageType_EntropyCheckReady\x10\xe2\x07\
\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12/\n\x20MessageType_EntropyCh\
eckContinue\x10\xe3\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12+\n\
\x1dMessageType_PassphraseRequest\x10)\x1a\x08\x80\xa6\x1d\x01\x98\xb5\
\x18\x01\x12/\n\x19MessageType_PassphraseAck\x10*\x1a\x10\xc0\xb5\x18\
\x01\xb0\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageTy\
pe_RecoveryDevice\x10-\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12%\n\
\x17MessageType_WordRequest\x10.\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\
\x12!\n\x13MessageType_WordAck\x10/\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\
\x01\x12%\n\x17MessageType_GetFeatures\x107\x1a\x08\x80\xa6\x1d\x01\x90\
\xb5\x18\x01\x12#\n\x15MessageType_SdProtect\x10O\x1a\x08\x80\xa6\x1d\
\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_ChangeWipeCode\x10R\x1a\x08\
\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12$\n\x16MessageType_EndSession\x10S\
\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12)\n\x1bMessageType_DoPreauth\
orized\x10T\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12.\n\x20MessageTyp\
e_PreauthorizedRequest\x10U\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12-\
\n\x1fMessageType_CancelAuthorization\x10V\x1a\x08\x80\xa6\x1d\x01\x90\
\xb5\x18\x01\x12,\n\x1eMessageType_RebootToBootloader\x10W\x1a\x08\x80\
\xa6\x1d\x01\x90\xb5\x18\x01\x12)\n\x1bMessageType_GetFirmwareHash\x10X\
\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12&\n\x18MessageType_FirmwareH\
ash\x10Y\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12$\n\x16MessageType_U\
nlockPath\x10]\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12-\n\x1fMessage\
Type_UnlockedPathRequest\x10^\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\
\x12,\n\x1eMessageType_ShowDeviceTutorial\x10_\x1a\x08\x80\xa6\x1d\x01\
\x90\xb5\x18\x01\x12*\n\x1cMessageType_UnlockBootloader\x10`\x1a\x08\x80\
\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1eMessageType_AuthenticateDevice\
\x10a\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_Auth\
enticityProof\x10b\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12)\n\x1aMes\
sageType_ChangeLanguage\x10\xde\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\
\x01\x121\n\"MessageType_TranslationDataRequest\x10\xdf\x07\x1a\x08\x80\
\xa6\x1d\x01\x98\xb5\x18\x01\x12-\n\x1eMessageType_TranslationDataAck\
\x10\xe0\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x19MessageTy\
pe_SetBrightness\x10\xe1\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12\
#\n\x19MessageType_SetU2FCounter\x10?\x1a\x04\x90\xb5\x18\x01\x12'\n\x1d\
MessageType_GetNextU2FCounter\x10P\x1a\x04\x90\xb5\x18\x01\x12$\n\x1aMes\
sageType_NextU2FCounter\x10Q\x1a\x04\x98\xb5\x18\x01\x125\n-MessageType_\
Deprecated_PassphraseStateRequest\x10M\x1a\x02\x08\x01\x121\n)MessageTyp\
e_Deprecated_PassphraseStateAck\x10N\x1a\x02\x08\x01\x12+\n\x19MessageTy\
pe_FirmwareErase\x10\x06\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\
\x18\x01\x12,\n\x1aMessageType_FirmwareUpload\x10\x07\x1a\x0c\xb8\xb5\
\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12-\n\x1bMessageType_FirmwareR\
equest\x10\x08\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x98\xb5\x18\x01\
\x12(\n\x16MessageType_ProdTestT1\x10\x20\x1a\x0c\xb8\xb5\x18\x01\x80\
\xa6\x1d\x01\x90\xb5\x18\x01\x12$\n\x15MessageType_BleUnpair\x10\xc1>\
\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12&\n\x18MessageType_GetPublic\
Key\x10\x0b\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12#\n\x15MessageTyp\
e_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_TxAckPaymentR\
equest\x10%\x1a\x04\x90\xb5\x18\x01\x12%\n\x17MessageType_SignMessage\
\x10&\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19MessageType_Veri\
fyMessage\x10'\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12*\n\x1cMessage\
Type_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_OwnershipProof\
\x102\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_Auth\
orizeCoinJoin\x103\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMes\
sageType_CipherKeyValue\x10\x17\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\
\x12*\n\x1cMessageType_CipheredKeyValue\x100\x1a\x08\x80\xa6\x1d\x01\x98\
\xb5\x18\x01\x12&\n\x18MessageType_SignIdentity\x105\x1a\x08\x80\xa6\x1d\
\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_SignedIdentity\x106\x1a\x08\
\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_GetECDHSessionKey\
\x10=\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_ECDH\
SessionKey\x10>\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x123\n\x1dMessag\
eType_DebugLinkDecision\x10d\x1a\x10\xc0\xb5\x18\x01\xb0\xb5\x18\x01\x80\
\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x1dMessageType_DebugLinkGetState\x10\
e\x1a\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\xa0\xb5\x18\x01\x12(\n\x1aMess\
ageType_DebugLinkState\x10f\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12'\
\n\x19MessageType_DebugLinkStop\x10g\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\
\x01\x12&\n\x18MessageType_DebugLinkLog\x10h\x1a\x08\x80\xa6\x1d\x01\xa8\
\xb5\x18\x01\x12-\n\x1fMessageType_DebugLinkMemoryRead\x10n\x1a\x08\x80\
\xa6\x1d\x01\xa0\xb5\x18\x01\x12)\n\x1bMessageType_DebugLinkMemory\x10o\
\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12.\n\x20MessageType_DebugLink\
MemoryWrite\x10p\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12-\n\x1fMessa\
geType_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_DebugLinkReseedRandom\x10\xaaF\x1a\
\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x120\n!MessageType_DebugLinkRecordS\
creen\x10\xabF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20Message\
Type_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_DebugLinkResetDebugEvents\
\x10\xafF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x123\n$MessageType_Deb\
ugLinkOptigaSetSecMax\x10\xb0F\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\
\x12+\n\x20MessageType_EthereumGetPublicKey\x10\xc2\x03\x1a\x04\x90\xb5\
\x18\x01\x12(\n\x1dMessageType_EthereumPublicKey\x10\xc3\x03\x1a\x04\x98\
\xb5\x18\x01\x12(\n\x1eMessageType_EthereumGetAddress\x108\x1a\x04\x90\
\xb5\x18\x01\x12%\n\x1bMessageType_EthereumAddress\x109\x1a\x04\x98\xb5\
\x18\x01\x12$\n\x1aMessageType_EthereumSignTx\x10:\x1a\x04\x90\xb5\x18\
\x01\x12,\n!MessageType_EthereumSignTxEIP1559\x10\xc4\x03\x1a\x04\x90\
\xb5\x18\x01\x12'\n\x1dMessageType_EthereumTxRequest\x10;\x1a\x04\x98\
\xb5\x18\x01\x12#\n\x19MessageType_EthereumTxAck\x10<\x1a\x04\x90\xb5\
\x18\x01\x12)\n\x1fMessageType_EthereumSignMessage\x10@\x1a\x04\x90\xb5\
\x18\x01\x12+\n!MessageType_EthereumVerifyMessage\x10A\x1a\x04\x90\xb5\
\x18\x01\x12.\n$MessageType_EthereumMessageSignature\x10B\x1a\x04\x98\
\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedData\x10\xd0\x03\x1a\
\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTypedDataStructRequest\
\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_EthereumTypedDat\
aStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_Ethere\
umTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\x18\x01\x120\n%Messa\
geType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\x04\x90\xb5\x18\x01\x12\
1\n&MessageType_EthereumTypedDataSignature\x10\xd5\x03\x1a\x04\x98\xb5\
\x18\x01\x12,\n!MessageType_EthereumSignTypedHash\x10\xd6\x03\x1a\x04\
\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddress\x10C\x1a\x04\x90\
\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\x1a\x04\x98\xb5\
\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\x90\xb5\x18\x01\
\x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\x18\x01\x12'\n\
\x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\x18\x01\x12)\n\
\x1fMessageType_NEMDecryptedMessage\x10L\x1a\x04\x98\xb5\x18\x01\x12&\n\
\x1bMessageType_TezosGetAddress\x10\x96\x01\x1a\x04\x90\xb5\x18\x01\x12#\
\n\x18MessageType_TezosAddress\x10\x97\x01\x1a\x04\x98\xb5\x18\x01\x12\"\
\n\x17MessageType_TezosSignTx\x10\x98\x01\x1a\x04\x90\xb5\x18\x01\x12$\n\
\x19MessageType_TezosSignedTx\x10\x99\x01\x1a\x04\x98\xb5\x18\x01\x12(\n\
\x1dMessageType_TezosGetPublicKey\x10\x9a\x01\x1a\x04\x90\xb5\x18\x01\
\x12%\n\x1aMessageType_TezosPublicKey\x10\x9b\x01\x1a\x04\x98\xb5\x18\
\x01\x12$\n\x19MessageType_StellarSignTx\x10\xca\x01\x1a\x04\x90\xb5\x18\
\x01\x12)\n\x1eMessageType_StellarTxOpRequest\x10\xcb\x01\x1a\x04\x98\
\xb5\x18\x01\x12(\n\x1dMessageType_StellarGetAddress\x10\xcf\x01\x1a\x04\
\x90\xb5\x18\x01\x12%\n\x1aMessageType_StellarAddress\x10\xd0\x01\x1a\
\x04\x98\xb5\x18\x01\x12-\n\"MessageType_StellarCreateAccountOp\x10\xd2\
\x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_StellarPaymentOp\x10\
\xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_StellarPathPaymentSt\
rictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_Ste\
llarManageSellOfferOp\x10\xd5\x01\x1a\x04\x90\xb5\x18\x01\x126\n+Message\
Type_StellarCreatePassiveSellOfferOp\x10\xd6\x01\x1a\x04\x90\xb5\x18\x01\
\x12*\n\x1fMessageType_StellarSetOptionsOp\x10\xd7\x01\x1a\x04\x90\xb5\
\x18\x01\x12+\n\x20MessageType_StellarChangeTrustOp\x10\xd8\x01\x1a\x04\
\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarAllowTrustOp\x10\xd9\x01\
\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccountMergeOp\x10\
\xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarManageData\
Op\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarBumpSeq\
uenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_StellarMa\
nageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_St\
ellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\x01\x125\n*\
MessageType_StellarClaimClaimableBalanceOp\x10\xe1\x01\x1a\x04\x90\xb5\
\x18\x01\x12&\n\x1bMessageType_StellarSignedTx\x10\xe6\x01\x1a\x04\x98\
\xb5\x18\x01\x12*\n\x1fMessageType_CardanoGetPublicKey\x10\xb1\x02\x1a\
\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_CardanoPublicKey\x10\xb2\x02\
\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoGetAddress\x10\xb3\
\x02\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoAddress\x10\
\xb4\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoTxItemAck\
\x10\xb9\x02\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_CardanoTxAuxilia\
ryDataSupplement\x10\xba\x02\x1a\x04\x98\xb5\x18\x01\x12.\n#MessageType_\
CardanoTxWitnessRequest\x10\xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\n$Messa\
geType_CardanoTxWitnessResponse\x10\xbc\x02\x1a\x04\x98\xb5\x18\x01\x12'\
\n\x1cMessageType_CardanoTxHostAck\x10\xbd\x02\x1a\x04\x90\xb5\x18\x01\
\x12(\n\x1dMessageType_CardanoTxBodyHash\x10\xbe\x02\x1a\x04\x98\xb5\x18\
\x01\x12,\n!MessageType_CardanoSignTxFinished\x10\xbf\x02\x1a\x04\x98\
\xb5\x18\x01\x12(\n\x1dMessageType_CardanoSignTxInit\x10\xc0\x02\x1a\x04\
\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoTxInput\x10\xc1\x02\x1a\
\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_CardanoTxOutput\x10\xc2\x02\
\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_CardanoAssetGroup\x10\xc3\
\x02\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_CardanoToken\x10\xc4\
\x02\x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_CardanoTxCertificate\
\x10\xc5\x02\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_CardanoTxWith\
drawal\x10\xc6\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_CardanoTx\
AuxiliaryData\x10\xc7\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_\
CardanoPoolOwner\x10\xc8\x02\x1a\x04\x90\xb5\x18\x01\x121\n&MessageType_\
CardanoPoolRelayParameters\x10\xc9\x02\x1a\x04\x90\xb5\x18\x01\x121\n&Me\
ssageType_CardanoGetNativeScriptHash\x10\xca\x02\x1a\x04\x90\xb5\x18\x01\
\x12.\n#MessageType_CardanoNativeScriptHash\x10\xcb\x02\x1a\x04\x98\xb5\
\x18\x01\x12$\n\x19MessageType_CardanoTxMint\x10\xcc\x02\x1a\x04\x90\xb5\
\x18\x01\x12/\n$MessageType_CardanoTxCollateralInput\x10\xcd\x02\x1a\x04\
\x90\xb5\x18\x01\x12.\n#MessageType_CardanoTxRequiredSigner\x10\xce\x02\
\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_CardanoTxInlineDatumChunk\
\x10\xcf\x02\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_CardanoTxReferen\
ceScriptChunk\x10\xd0\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_Car\
danoTxReferenceInput\x10\xd1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessa\
geType_RippleGetAddress\x10\x90\x03\x1a\x04\x90\xb5\x18\x01\x12$\n\x19Me\
ssageType_RippleAddress\x10\x91\x03\x1a\x04\x98\xb5\x18\x01\x12#\n\x18Me\
ssageType_RippleSignTx\x10\x92\x03\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMes\
sageType_RippleSignedTx\x10\x93\x03\x1a\x04\x90\xb5\x18\x01\x123\n(Messa\
geType_MoneroTransactionInitRequest\x10\xf5\x03\x1a\x04\x98\xb5\x18\x01\
\x12/\n$MessageType_MoneroTransactionInitAck\x10\xf6\x03\x1a\x04\x98\xb5\
\x18\x01\x127\n,MessageType_MoneroTransactionSetInputRequest\x10\xf7\x03\
\x1a\x04\x98\xb5\x18\x01\x123\n(MessageType_MoneroTransactionSetInputAck\
\x10\xf8\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactio\
nInputViniRequest\x10\xfb\x03\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\
_MoneroTransactionInputViniAck\x10\xfc\x03\x1a\x04\x98\xb5\x18\x01\x12;\
\n0MessageType_MoneroTransactionAllInputsSetRequest\x10\xfd\x03\x1a\x04\
\x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionAllInputsSetAck\x10\
\xfe\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactionSet\
OutputRequest\x10\xff\x03\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_Mon\
eroTransactionSetOutputAck\x10\x80\x04\x1a\x04\x98\xb5\x18\x01\x128\n-Me\
ssageType_MoneroTransactionAllOutSetRequest\x10\x81\x04\x1a\x04\x98\xb5\
\x18\x01\x124\n)MessageType_MoneroTransactionAllOutSetAck\x10\x82\x04\
\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactionSignInputRe\
quest\x10\x83\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroTrans\
actionSignInputAck\x10\x84\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageTyp\
e_MoneroTransactionFinalRequest\x10\x85\x04\x1a\x04\x98\xb5\x18\x01\x120\
\n%MessageType_MoneroTransactionFinalAck\x10\x86\x04\x1a\x04\x98\xb5\x18\
\x01\x126\n+MessageType_MoneroKeyImageExportInitRequest\x10\x92\x04\x1a\
\x04\x98\xb5\x18\x01\x122\n'MessageType_MoneroKeyImageExportInitAck\x10\
\x93\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroKeyImageSyncSt\
epRequest\x10\x94\x04\x1a\x04\x98\xb5\x18\x01\x120\n%MessageType_MoneroK\
eyImageSyncStepAck\x10\x95\x04\x1a\x04\x98\xb5\x18\x01\x125\n*MessageTyp\
e_MoneroKeyImageSyncFinalRequest\x10\x96\x04\x1a\x04\x98\xb5\x18\x01\x12\
1\n&MessageType_MoneroKeyImageSyncFinalAck\x10\x97\x04\x1a\x04\x98\xb5\
\x18\x01\x12'\n\x1cMessageType_MoneroGetAddress\x10\x9c\x04\x1a\x04\x90\
\xb5\x18\x01\x12$\n\x19MessageType_MoneroAddress\x10\x9d\x04\x1a\x04\x98\
\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGetWatchKey\x10\x9e\x04\x1a\x04\
\x90\xb5\x18\x01\x12%\n\x1aMessageType_MoneroWatchKey\x10\x9f\x04\x1a\
\x04\x98\xb5\x18\x01\x12-\n\"MessageType_DebugMoneroDiagRequest\x10\xa2\
\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_DebugMoneroDiagAck\
\x10\xa3\x04\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_MoneroGetTxKeyRe\
quest\x10\xa6\x04\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGe\
tTxKeyAck\x10\xa7\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroL\
iveRefreshStartRequest\x10\xa8\x04\x1a\x04\x90\xb5\x18\x01\x120\n%Messag\
eType_MoneroLiveRefreshStartAck\x10\xa9\x04\x1a\x04\x98\xb5\x18\x01\x123\
\n(MessageType_MoneroLiveRefreshStepRequest\x10\xaa\x04\x1a\x04\x90\xb5\
\x18\x01\x12/\n$MessageType_MoneroLiveRefreshStepAck\x10\xab\x04\x1a\x04\
\x98\xb5\x18\x01\x124\n)MessageType_MoneroLiveRefreshFinalRequest\x10\
\xac\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroLiveRefreshFin\
alAck\x10\xad\x04\x1a\x04\x98\xb5\x18\x01\x12&\n\x1bMessageType_EosGetPu\
blicKey\x10\xd8\x04\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_EosPub\
licKey\x10\xd9\x04\x1a\x04\x98\xb5\x18\x01\x12\x20\n\x15MessageType_EosS\
ignTx\x10\xda\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_EosTxAct\
ionRequest\x10\xdb\x04\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMessageType_Eos\
TxActionAck\x10\xdc\x04\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17MessageType_E\
osSignedTx\x10\xdd\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_Bin\
anceGetAddress\x10\xbc\x05\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType\
_BinanceAddress\x10\xbd\x05\x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageTyp\
e_BinanceGetPublicKey\x10\xbe\x05\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMess\
ageType_BinancePublicKey\x10\xbf\x05\x1a\x04\x98\xb5\x18\x01\x12$\n\x19M\
essageType_BinanceSignTx\x10\xc0\x05\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cM\
essageType_BinanceTxRequest\x10\xc1\x05\x1a\x04\x98\xb5\x18\x01\x12)\n\
\x1eMessageType_BinanceTransferMsg\x10\xc2\x05\x1a\x04\x90\xb5\x18\x01\
\x12&\n\x1bMessageType_BinanceOrderMsg\x10\xc3\x05\x1a\x04\x90\xb5\x18\
\x01\x12'\n\x1cMessageType_BinanceCancelMsg\x10\xc4\x05\x1a\x04\x90\xb5\
\x18\x01\x12&\n\x1bMessageType_BinanceSignedTx\x10\xc5\x05\x1a\x04\x98\
\xb5\x18\x01\x126\n+MessageType_WebAuthnListResidentCredentials\x10\xa0\
\x06\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_WebAuthnCredentials\
\x10\xa1\x06\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_WebAuthnAddResid\
entCredential\x10\xa2\x06\x1a\x04\x90\xb5\x18\x01\x127\n,MessageType_Web\
AuthnRemoveResidentCredential\x10\xa3\x06\x1a\x04\x90\xb5\x18\x01\x12)\n\
\x1eMessageType_SolanaGetPublicKey\x10\x84\x07\x1a\x04\x90\xb5\x18\x01\
\x12&\n\x1bMessageType_SolanaPublicKey\x10\x85\x07\x1a\x04\x98\xb5\x18\
\x01\x12'\n\x1cMessageType_SolanaGetAddress\x10\x86\x07\x1a\x04\x90\xb5\
\x18\x01\x12$\n\x19MessageType_SolanaAddress\x10\x87\x07\x1a\x04\x98\xb5\
\x18\x01\x12#\n\x18MessageType_SolanaSignTx\x10\x88\x07\x1a\x04\x90\xb5\
\x18\x01\x12(\n\x1dMessageType_SolanaTxSignature\x10\x89\x07\x1a\x04\x98\
\xb5\x18\x01\x12%\n\x1aMessageType_NostrGetPubkey\x10\xd1\x0f\x1a\x04\
\x90\xb5\x18\x01\x12\"\n\x17MessageType_NostrPubkey\x10\xd2\x0f\x1a\x04\
\x98\xb5\x18\x01\x12%\n\x1aMessageType_NostrSignEvent\x10\xd3\x0f\x1a\
\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_NostrEventSignature\x10\xd4\
\x0f\x1a\x04\x98\xb5\x18\x01\x12)\n\x1eMessageType_BenchmarkListNames\
\x10\x8cG\x1a\x04\x80\xa6\x1d\x01\x12%\n\x1aMessageType_BenchmarkNames\
\x10\x8dG\x1a\x04\x80\xa6\x1d\x01\x12#\n\x18MessageType_BenchmarkRun\x10\
\x8eG\x1a\x04\x80\xa6\x1d\x01\x12&\n\x1bMessageType_BenchmarkResult\x10\
\x8fG\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\xf3\x18\x01\"\x04\x08Z\x10\\\"\
\x04\x08G\x10J\"\x04\x08r\x10z\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\x08\
\xe0\x01\x10\xe0\x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\x02\x10\
\xb8\x02\"\x06\x08\xe8\x07\x10\xcb\x08B8\n#com.satoshilabs.trezor.lib.pr\
otobufB\rTrezorMessage\x80\xa6\x1d\x01\
\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_PaymentRequest\x10%\x1a\x08\
\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1dMessageType_EntropyCheckReady\
\x10\xe2\x07\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12/\n\x20MessageTy\
pe_EntropyCheckContinue\x10\xe3\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\
\x01\x12+\n\x1dMessageType_PassphraseRequest\x10)\x1a\x08\x80\xa6\x1d\
\x01\x98\xb5\x18\x01\x12/\n\x19MessageType_PassphraseAck\x10*\x1a\x10\
\xc0\xb5\x18\x01\xb0\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\
\x1aMessageType_RecoveryDevice\x10-\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\
\x01\x12%\n\x17MessageType_WordRequest\x10.\x1a\x08\x80\xa6\x1d\x01\x98\
\xb5\x18\x01\x12!\n\x13MessageType_WordAck\x10/\x1a\x08\x80\xa6\x1d\x01\
\x90\xb5\x18\x01\x12%\n\x17MessageType_GetFeatures\x107\x1a\x08\x80\xa6\
\x1d\x01\x90\xb5\x18\x01\x12#\n\x15MessageType_SdProtect\x10O\x1a\x08\
\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_ChangeWipeCode\
\x10R\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12$\n\x16MessageType_EndS\
ession\x10S\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12)\n\x1bMessageTyp\
e_DoPreauthorized\x10T\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12.\n\
\x20MessageType_PreauthorizedRequest\x10U\x1a\x08\x80\xa6\x1d\x01\x98\
\xb5\x18\x01\x12-\n\x1fMessageType_CancelAuthorization\x10V\x1a\x08\x80\
\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1eMessageType_RebootToBootloader\
\x10W\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12)\n\x1bMessageType_GetF\
irmwareHash\x10X\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12&\n\x18Messa\
geType_FirmwareHash\x10Y\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12$\n\
\x16MessageType_UnlockPath\x10]\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\
\x12-\n\x1fMessageType_UnlockedPathRequest\x10^\x1a\x08\x80\xa6\x1d\x01\
\x98\xb5\x18\x01\x12,\n\x1eMessageType_ShowDeviceTutorial\x10_\x1a\x08\
\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12*\n\x1cMessageType_UnlockBootloader\
\x10`\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1eMessageType_Auth\
enticateDevice\x10a\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMe\
ssageType_AuthenticityProof\x10b\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\
\x12)\n\x1aMessageType_ChangeLanguage\x10\xde\x07\x1a\x08\x80\xa6\x1d\
\x01\x90\xb5\x18\x01\x121\n\"MessageType_TranslationDataRequest\x10\xdf\
\x07\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12-\n\x1eMessageType_Trans\
lationDataAck\x10\xe0\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\
\x19MessageType_SetBrightness\x10\xe1\x07\x1a\x08\x80\xa6\x1d\x01\x90\
\xb5\x18\x01\x12#\n\x19MessageType_SetU2FCounter\x10?\x1a\x04\x90\xb5\
\x18\x01\x12'\n\x1dMessageType_GetNextU2FCounter\x10P\x1a\x04\x90\xb5\
\x18\x01\x12$\n\x1aMessageType_NextU2FCounter\x10Q\x1a\x04\x98\xb5\x18\
\x01\x125\n-MessageType_Deprecated_PassphraseStateRequest\x10M\x1a\x02\
\x08\x01\x121\n)MessageType_Deprecated_PassphraseStateAck\x10N\x1a\x02\
\x08\x01\x12+\n\x19MessageType_FirmwareErase\x10\x06\x1a\x0c\xb8\xb5\x18\
\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1aMessageType_FirmwareUploa\
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\x15MessageTy\
pe_BleUnpair\x10\xc1>\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12&\n\x18\
MessageType_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_Addre\
ss\x10\x1e\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12%\n\x17MessageType\
_SignMessage\x10&\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19Mess\
ageType_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\
\x01\x125\n*MessageType_StellarClaimClaimableBalanceOp\x10\xe1\x01\x1a\
\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_StellarSignedTx\x10\xe6\x01\
\x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageType_CardanoGetPublicKey\x10\
\xb1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_CardanoPublicKey\
\x10\xb2\x02\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoGetAdd\
ress\x10\xb3\x02\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoAd\
dress\x10\xb4\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoT\
xItemAck\x10\xb9\x02\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_CardanoT\
xAuxiliaryDataSupplement\x10\xba\x02\x1a\x04\x98\xb5\x18\x01\x12.\n#Mess\
ageType_CardanoTxWitnessRequest\x10\xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\
\n$MessageType_CardanoTxWitnessResponse\x10\xbc\x02\x1a\x04\x98\xb5\x18\
\x01\x12'\n\x1cMessageType_CardanoTxHostAck\x10\xbd\x02\x1a\x04\x90\xb5\
\x18\x01\x12(\n\x1dMessageType_CardanoTxBodyHash\x10\xbe\x02\x1a\x04\x98\
\xb5\x18\x01\x12,\n!MessageType_CardanoSignTxFinished\x10\xbf\x02\x1a\
\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoSignTxInit\x10\xc0\x02\
\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoTxInput\x10\xc1\
\x02\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_CardanoTxOutput\x10\
\xc2\x02\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_CardanoAssetGroup\
\x10\xc3\x02\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_CardanoToken\
\x10\xc4\x02\x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_CardanoTxCert\
ificate\x10\xc5\x02\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_Cardan\
oTxWithdrawal\x10\xc6\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_Ca\
rdanoTxAuxiliaryData\x10\xc7\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessa\
geType_CardanoPoolOwner\x10\xc8\x02\x1a\x04\x90\xb5\x18\x01\x121\n&Messa\
geType_CardanoPoolRelayParameters\x10\xc9\x02\x1a\x04\x90\xb5\x18\x01\
\x121\n&MessageType_CardanoGetNativeScriptHash\x10\xca\x02\x1a\x04\x90\
\xb5\x18\x01\x12.\n#MessageType_CardanoNativeScriptHash\x10\xcb\x02\x1a\
\x04\x98\xb5\x18\x01\x12$\n\x19MessageType_CardanoTxMint\x10\xcc\x02\x1a\
\x04\x90\xb5\x18\x01\x12/\n$MessageType_CardanoTxCollateralInput\x10\xcd\
\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_CardanoTxRequiredSigner\
\x10\xce\x02\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_CardanoTxInlineD\
atumChunk\x10\xcf\x02\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_Cardano\
TxReferenceScriptChunk\x10\xd0\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#Messag\
eType_CardanoTxReferenceInput\x10\xd1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\
\x1cMessageType_RippleGetAddress\x10\x90\x03\x1a\x04\x90\xb5\x18\x01\x12\
$\n\x19MessageType_RippleAddress\x10\x91\x03\x1a\x04\x98\xb5\x18\x01\x12\
#\n\x18MessageType_RippleSignTx\x10\x92\x03\x1a\x04\x90\xb5\x18\x01\x12%\
\n\x1aMessageType_RippleSignedTx\x10\x93\x03\x1a\x04\x90\xb5\x18\x01\x12\
3\n(MessageType_MoneroTransactionInitRequest\x10\xf5\x03\x1a\x04\x98\xb5\
\x18\x01\x12/\n$MessageType_MoneroTransactionInitAck\x10\xf6\x03\x1a\x04\
\x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionSetInputRequest\x10\
\xf7\x03\x1a\x04\x98\xb5\x18\x01\x123\n(MessageType_MoneroTransactionSet\
InputAck\x10\xf8\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTr\
ansactionInputViniRequest\x10\xfb\x03\x1a\x04\x98\xb5\x18\x01\x124\n)Mes\
sageType_MoneroTransactionInputViniAck\x10\xfc\x03\x1a\x04\x98\xb5\x18\
\x01\x12;\n0MessageType_MoneroTransactionAllInputsSetRequest\x10\xfd\x03\
\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionAllInputsSe\
tAck\x10\xfe\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransa\
ctionSetOutputRequest\x10\xff\x03\x1a\x04\x98\xb5\x18\x01\x124\n)Message\
Type_MoneroTransactionSetOutputAck\x10\x80\x04\x1a\x04\x98\xb5\x18\x01\
\x128\n-MessageType_MoneroTransactionAllOutSetRequest\x10\x81\x04\x1a\
\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroTransactionAllOutSetAck\
\x10\x82\x04\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactio\
nSignInputRequest\x10\x83\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\
_MoneroTransactionSignInputAck\x10\x84\x04\x1a\x04\x98\xb5\x18\x01\x124\
\n)MessageType_MoneroTransactionFinalRequest\x10\x85\x04\x1a\x04\x98\xb5\
\x18\x01\x120\n%MessageType_MoneroTransactionFinalAck\x10\x86\x04\x1a\
\x04\x98\xb5\x18\x01\x126\n+MessageType_MoneroKeyImageExportInitRequest\
\x10\x92\x04\x1a\x04\x98\xb5\x18\x01\x122\n'MessageType_MoneroKeyImageEx\
portInitAck\x10\x93\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_Moner\
oKeyImageSyncStepRequest\x10\x94\x04\x1a\x04\x98\xb5\x18\x01\x120\n%Mess\
ageType_MoneroKeyImageSyncStepAck\x10\x95\x04\x1a\x04\x98\xb5\x18\x01\
\x125\n*MessageType_MoneroKeyImageSyncFinalRequest\x10\x96\x04\x1a\x04\
\x98\xb5\x18\x01\x121\n&MessageType_MoneroKeyImageSyncFinalAck\x10\x97\
\x04\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_MoneroGetAddress\x10\
\x9c\x04\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_MoneroAddress\x10\
\x9d\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGetWatchKey\
\x10\x9e\x04\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_MoneroWatchKe\
y\x10\x9f\x04\x1a\x04\x98\xb5\x18\x01\x12-\n\"MessageType_DebugMoneroDia\
gRequest\x10\xa2\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_Debug\
MoneroDiagAck\x10\xa3\x04\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_Mon\
eroGetTxKeyRequest\x10\xa6\x04\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessage\
Type_MoneroGetTxKeyAck\x10\xa7\x04\x1a\x04\x98\xb5\x18\x01\x124\n)Messag\
eType_MoneroLiveRefreshStartRequest\x10\xa8\x04\x1a\x04\x90\xb5\x18\x01\
\x120\n%MessageType_MoneroLiveRefreshStartAck\x10\xa9\x04\x1a\x04\x98\
\xb5\x18\x01\x123\n(MessageType_MoneroLiveRefreshStepRequest\x10\xaa\x04\
\x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_MoneroLiveRefreshStepAck\x10\
\xab\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroLiveRefreshFin\
alRequest\x10\xac\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroL\
iveRefreshFinalAck\x10\xad\x04\x1a\x04\x98\xb5\x18\x01\x12&\n\x1bMessage\
Type_EosGetPublicKey\x10\xd8\x04\x1a\x04\x90\xb5\x18\x01\x12#\n\x18Messa\
geType_EosPublicKey\x10\xd9\x04\x1a\x04\x98\xb5\x18\x01\x12\x20\n\x15Mes\
sageType_EosSignTx\x10\xda\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessage\
Type_EosTxActionRequest\x10\xdb\x04\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMe\
ssageType_EosTxActionAck\x10\xdc\x04\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17\
MessageType_EosSignedTx\x10\xdd\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMe\
ssageType_BinanceGetAddress\x10\xbc\x05\x1a\x04\x90\xb5\x18\x01\x12%\n\
\x1aMessageType_BinanceAddress\x10\xbd\x05\x1a\x04\x98\xb5\x18\x01\x12*\
\n\x1fMessageType_BinanceGetPublicKey\x10\xbe\x05\x1a\x04\x90\xb5\x18\
\x01\x12'\n\x1cMessageType_BinancePublicKey\x10\xbf\x05\x1a\x04\x98\xb5\
\x18\x01\x12$\n\x19MessageType_BinanceSignTx\x10\xc0\x05\x1a\x04\x90\xb5\
\x18\x01\x12'\n\x1cMessageType_BinanceTxRequest\x10\xc1\x05\x1a\x04\x98\
\xb5\x18\x01\x12)\n\x1eMessageType_BinanceTransferMsg\x10\xc2\x05\x1a\
\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_BinanceOrderMsg\x10\xc3\x05\
\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_BinanceCancelMsg\x10\xc4\
\x05\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_BinanceSignedTx\x10\
\xc5\x05\x1a\x04\x98\xb5\x18\x01\x126\n+MessageType_WebAuthnListResident\
Credentials\x10\xa0\x06\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_We\
bAuthnCredentials\x10\xa1\x06\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\
_WebAuthnAddResidentCredential\x10\xa2\x06\x1a\x04\x90\xb5\x18\x01\x127\
\n,MessageType_WebAuthnRemoveResidentCredential\x10\xa3\x06\x1a\x04\x90\
\xb5\x18\x01\x12)\n\x1eMessageType_SolanaGetPublicKey\x10\x84\x07\x1a\
\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_SolanaPublicKey\x10\x85\x07\
\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_SolanaGetAddress\x10\x86\
\x07\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_SolanaAddress\x10\x87\
\x07\x1a\x04\x98\xb5\x18\x01\x12#\n\x18MessageType_SolanaSignTx\x10\x88\
\x07\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_SolanaTxSignature\x10\
\x89\x07\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMessageType_NostrGetPubkey\
\x10\xd1\x0f\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17MessageType_NostrPubkey\
\x10\xd2\x0f\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMessageType_NostrSignEven\
t\x10\xd3\x0f\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_NostrEventSi\
gnature\x10\xd4\x0f\x1a\x04\x98\xb5\x18\x01\x12)\n\x1eMessageType_Benchm\
arkListNames\x10\x8cG\x1a\x04\x80\xa6\x1d\x01\x12%\n\x1aMessageType_Benc\
hmarkNames\x10\x8dG\x1a\x04\x80\xa6\x1d\x01\x12#\n\x18MessageType_Benchm\
arkRun\x10\x8eG\x1a\x04\x80\xa6\x1d\x01\x12&\n\x1bMessageType_BenchmarkR\
esult\x10\x8fG\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\xf3\x18\x01\"\x04\x08\
Z\x10\\\"\x04\x08G\x10J\"\x04\x08r\x10z\"\x06\x08\xdb\x01\x10\xdb\x01\"\
\x06\x08\xe0\x01\x10\xe0\x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\
\x02\x10\xb8\x02\"\x06\x08\xe8\x07\x10\xcb\x08B8\n#com.satoshilabs.trezo\
r.lib.protobufB\rTrezorMessage\x80\xa6\x1d\x01\
";
/// `FileDescriptorProto` object which was a source for this generated file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -93,7 +93,7 @@ def make_payment_request(
h_pr.update(h_outputs.digest())
return messages.TxAckPaymentRequest(
return messages.PaymentRequest(
recipient_name=recipient_name,
amount=sum(txo.amount for txo in outputs if txo.address),
memos=msg_memos,