From 6b7016cc96990f236a18e835754069b491e6b74f Mon Sep 17 00:00:00 2001 From: Andrew Kozlik Date: Tue, 8 Apr 2025 14:21:21 +0200 Subject: [PATCH] refactor: Move TxAckPaymentRequest to common messages as PaymentRequest. --- common/protob/messages-bitcoin.proto | 37 +- common/protob/messages-common.proto | 37 + common/protob/messages.proto | 2 +- core/src/apps/bitcoin/sign_tx/approvers.py | 6 +- core/src/apps/bitcoin/sign_tx/helpers.py | 14 +- core/src/apps/bitcoin/sign_tx/layout.py | 4 +- .../apps/bitcoin/sign_tx/payment_request.py | 4 +- core/src/trezor/enums/MessageType.py | 2 +- core/src/trezor/enums/__init__.py | 2 +- core/src/trezor/messages.py | 180 +-- docs/common/communication/bitcoin-signing.md | 2 +- legacy/firmware/protob/Makefile | 2 +- .../firmware/protob/messages-bitcoin.options | 2 +- python/src/trezorlib/btc.py | 2 +- python/src/trezorlib/messages.py | 202 +-- rust/trezor-client/src/messages/generated.rs | 2 +- .../src/protos/generated/messages.rs | 622 ++++---- .../src/protos/generated/messages_bitcoin.rs | 1336 +---------------- .../src/protos/generated/messages_common.rs | 1234 ++++++++++++++- tests/device_tests/bitcoin/payment_req.py | 2 +- 20 files changed, 1848 insertions(+), 1846 deletions(-) diff --git a/common/protob/messages-bitcoin.proto b/common/protob/messages-bitcoin.proto index c38b5cf945..ff5c0eb9ba 100644 --- a/common/protob/messages-bitcoin.proto +++ b/common/protob/messages-bitcoin.proto @@ -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. diff --git a/common/protob/messages-common.proto b/common/protob/messages-common.proto index 3e8cb9537c..affc7d77a0 100644 --- a/common/protob/messages-common.proto +++ b/common/protob/messages-common.proto @@ -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 + } +} diff --git a/common/protob/messages.proto b/common/protob/messages.proto index 367632be02..97e50cd87e 100644 --- a/common/protob/messages.proto +++ b/common/protob/messages.proto @@ -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]; diff --git a/core/src/apps/bitcoin/sign_tx/approvers.py b/core/src/apps/bitcoin/sign_tx/approvers.py index 438255a0fb..c0ccd5a0a2 100644 --- a/core/src/apps/bitcoin/sign_tx/approvers.py +++ b/core/src/apps/bitcoin/sign_tx/approvers.py @@ -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: diff --git a/core/src/apps/bitcoin/sign_tx/helpers.py b/core/src/apps/bitcoin/sign_tx/helpers.py index 8142c3b35e..3bd3c7e7c9 100644 --- a/core/src/apps/bitcoin/sign_tx/helpers.py +++ b/core/src/apps/bitcoin/sign_tx/helpers.py @@ -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( diff --git a/core/src/apps/bitcoin/sign_tx/layout.py b/core/src/apps/bitcoin/sign_tx/layout.py index 4b81cf1b49..14304d4929 100644 --- a/core/src/apps/bitcoin/sign_tx/layout.py +++ b/core/src/apps/bitcoin/sign_tx/layout.py @@ -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: diff --git a/core/src/apps/bitcoin/sign_tx/payment_request.py b/core/src/apps/bitcoin/sign_tx/payment_request.py index 779646cc1c..666bd66179 100644 --- a/core/src/apps/bitcoin/sign_tx/payment_request.py +++ b/core/src/apps/bitcoin/sign_tx/payment_request.py @@ -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 diff --git a/core/src/trezor/enums/MessageType.py b/core/src/trezor/enums/MessageType.py index effd64f319..709fcf50e7 100644 --- a/core/src/trezor/enums/MessageType.py +++ b/core/src/trezor/enums/MessageType.py @@ -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 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index b57b81bb0b..a81a8c996e 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -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 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index 34dcc0c9de..bfb25bdb52 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -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" diff --git a/docs/common/communication/bitcoin-signing.md b/docs/common/communication/bitcoin-signing.md index 762f292d3d..cebbd45eb1 100644 --- a/docs/common/communication/bitcoin-signing.md +++ b/docs/common/communication/bitcoin-signing.md @@ -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 diff --git a/legacy/firmware/protob/Makefile b/legacy/firmware/protob/Makefile index f2a0955511..2b8f912505 100644 --- a/legacy/firmware/protob/Makefile +++ b/legacy/firmware/protob/Makefile @@ -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 \ diff --git a/legacy/firmware/protob/messages-bitcoin.options b/legacy/firmware/protob/messages-bitcoin.options index 6d235d2a4e..0a95c49392 100644 --- a/legacy/firmware/protob/messages-bitcoin.options +++ b/legacy/firmware/protob/messages-bitcoin.options @@ -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 diff --git a/python/src/trezorlib/btc.py b/python/src/trezorlib/btc.py index 078f486d9e..3300a70ae4 100644 --- a/python/src/trezorlib/btc.py +++ b/python/src/trezorlib/btc.py @@ -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, diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 51d30707bc..7410ebcfd6 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -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 = { diff --git a/rust/trezor-client/src/messages/generated.rs b/rust/trezor-client/src/messages/generated.rs index 39d734a94a..77a591330a 100644 --- a/rust/trezor-client/src/messages/generated.rs +++ b/rust/trezor-client/src/messages/generated.rs @@ -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, diff --git a/rust/trezor-client/src/protos/generated/messages.rs b/rust/trezor-client/src/protos/generated/messages.rs index ef5df068fa..6611950619 100644 --- a/rust/trezor-client/src/protos/generated/messages.rs +++ b/rust/trezor-client/src/protos/generated/messages.rs @@ -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 diff --git a/rust/trezor-client/src/protos/generated/messages_bitcoin.rs b/rust/trezor-client/src/protos/generated/messages_bitcoin.rs index 2bbbd8413d..3e8966901f 100644 --- a/rust/trezor-client/src/protos/generated/messages_bitcoin.rs +++ b/rust/trezor-client/src/protos/generated/messages_bitcoin.rs @@ -9383,1212 +9383,6 @@ impl ::protobuf::reflect::ProtobufValue for PrevOutput { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; } -// @@protoc_insertion_point(message:hw.trezor.messages.bitcoin.TxAckPaymentRequest) -#[derive(PartialEq,Clone,Default,Debug)] -pub struct TxAckPaymentRequest { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.nonce) - pub nonce: ::std::option::Option<::std::vec::Vec>, - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.recipient_name) - pub recipient_name: ::std::option::Option<::std::string::String>, - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.memos) - pub memos: ::std::vec::Vec, - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.amount) - pub amount: ::std::option::Option, - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.signature) - pub signature: ::std::option::Option<::std::vec::Vec>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.special_fields) - pub special_fields: ::protobuf::SpecialFields, -} - -impl<'a> ::std::default::Default for &'a TxAckPaymentRequest { - fn default() -> &'a TxAckPaymentRequest { - ::default_instance() - } -} - -impl TxAckPaymentRequest { - pub fn new() -> TxAckPaymentRequest { - ::std::default::Default::default() - } - - // optional bytes nonce = 1; - - pub fn nonce(&self) -> &[u8] { - match self.nonce.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_nonce(&mut self) { - self.nonce = ::std::option::Option::None; - } - - pub fn has_nonce(&self) -> bool { - self.nonce.is_some() - } - - // Param is passed by value, moved - pub fn set_nonce(&mut self, v: ::std::vec::Vec) { - self.nonce = ::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_nonce(&mut self) -> &mut ::std::vec::Vec { - if self.nonce.is_none() { - self.nonce = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.nonce.as_mut().unwrap() - } - - // Take field - pub fn take_nonce(&mut self) -> ::std::vec::Vec { - self.nonce.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - // required string recipient_name = 2; - - pub fn recipient_name(&self) -> &str { - match self.recipient_name.as_ref() { - Some(v) => v, - None => "", - } - } - - pub fn clear_recipient_name(&mut self) { - self.recipient_name = ::std::option::Option::None; - } - - pub fn has_recipient_name(&self) -> bool { - self.recipient_name.is_some() - } - - // Param is passed by value, moved - pub fn set_recipient_name(&mut self, v: ::std::string::String) { - self.recipient_name = ::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_recipient_name(&mut self) -> &mut ::std::string::String { - if self.recipient_name.is_none() { - self.recipient_name = ::std::option::Option::Some(::std::string::String::new()); - } - self.recipient_name.as_mut().unwrap() - } - - // Take field - pub fn take_recipient_name(&mut self) -> ::std::string::String { - self.recipient_name.take().unwrap_or_else(|| ::std::string::String::new()) - } - - // optional uint64 amount = 4; - - pub fn amount(&self) -> u64 { - self.amount.unwrap_or(0) - } - - pub fn clear_amount(&mut self) { - self.amount = ::std::option::Option::None; - } - - pub fn has_amount(&self) -> bool { - self.amount.is_some() - } - - // Param is passed by value, moved - pub fn set_amount(&mut self, v: u64) { - self.amount = ::std::option::Option::Some(v); - } - - // required bytes signature = 5; - - pub fn signature(&self) -> &[u8] { - match self.signature.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_signature(&mut self) { - self.signature = ::std::option::Option::None; - } - - pub fn has_signature(&self) -> bool { - self.signature.is_some() - } - - // Param is passed by value, moved - pub fn set_signature(&mut self, v: ::std::vec::Vec) { - self.signature = ::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_signature(&mut self) -> &mut ::std::vec::Vec { - if self.signature.is_none() { - self.signature = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.signature.as_mut().unwrap() - } - - // Take field - pub fn take_signature(&mut self) -> ::std::vec::Vec { - self.signature.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(5); - let mut oneofs = ::std::vec::Vec::with_capacity(0); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "nonce", - |m: &TxAckPaymentRequest| { &m.nonce }, - |m: &mut TxAckPaymentRequest| { &mut m.nonce }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "recipient_name", - |m: &TxAckPaymentRequest| { &m.recipient_name }, - |m: &mut TxAckPaymentRequest| { &mut m.recipient_name }, - )); - fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>( - "memos", - |m: &TxAckPaymentRequest| { &m.memos }, - |m: &mut TxAckPaymentRequest| { &mut m.memos }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "amount", - |m: &TxAckPaymentRequest| { &m.amount }, - |m: &mut TxAckPaymentRequest| { &mut m.amount }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "signature", - |m: &TxAckPaymentRequest| { &m.signature }, - |m: &mut TxAckPaymentRequest| { &mut m.signature }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( - "TxAckPaymentRequest", - fields, - oneofs, - ) - } -} - -impl ::protobuf::Message for TxAckPaymentRequest { - const NAME: &'static str = "TxAckPaymentRequest"; - - fn is_initialized(&self) -> bool { - if self.recipient_name.is_none() { - return false; - } - if self.signature.is_none() { - return false; - } - for v in &self.memos { - if !v.is_initialized() { - 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.nonce = ::std::option::Option::Some(is.read_bytes()?); - }, - 18 => { - self.recipient_name = ::std::option::Option::Some(is.read_string()?); - }, - 26 => { - self.memos.push(is.read_message()?); - }, - 32 => { - self.amount = ::std::option::Option::Some(is.read_uint64()?); - }, - 42 => { - self.signature = ::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.nonce.as_ref() { - my_size += ::protobuf::rt::bytes_size(1, &v); - } - if let Some(v) = self.recipient_name.as_ref() { - my_size += ::protobuf::rt::string_size(2, &v); - } - for value in &self.memos { - let len = value.compute_size(); - my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; - }; - if let Some(v) = self.amount { - my_size += ::protobuf::rt::uint64_size(4, v); - } - if let Some(v) = self.signature.as_ref() { - my_size += ::protobuf::rt::bytes_size(5, &v); - } - my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); - self.special_fields.cached_size().set(my_size as u32); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { - if let Some(v) = self.nonce.as_ref() { - os.write_bytes(1, v)?; - } - if let Some(v) = self.recipient_name.as_ref() { - os.write_string(2, v)?; - } - for v in &self.memos { - ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?; - }; - if let Some(v) = self.amount { - os.write_uint64(4, v)?; - } - if let Some(v) = self.signature.as_ref() { - os.write_bytes(5, v)?; - } - os.write_unknown_fields(self.special_fields.unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn special_fields(&self) -> &::protobuf::SpecialFields { - &self.special_fields - } - - fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { - &mut self.special_fields - } - - fn new() -> TxAckPaymentRequest { - TxAckPaymentRequest::new() - } - - fn clear(&mut self) { - self.nonce = ::std::option::Option::None; - self.recipient_name = ::std::option::Option::None; - self.memos.clear(); - self.amount = ::std::option::Option::None; - self.signature = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static TxAckPaymentRequest { - static instance: TxAckPaymentRequest = TxAckPaymentRequest { - nonce: ::std::option::Option::None, - recipient_name: ::std::option::Option::None, - memos: ::std::vec::Vec::new(), - amount: ::std::option::Option::None, - signature: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } -} - -impl ::protobuf::MessageFull for TxAckPaymentRequest { - 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("TxAckPaymentRequest").unwrap()).clone() - } -} - -impl ::std::fmt::Display for TxAckPaymentRequest { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for TxAckPaymentRequest { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; -} - -/// Nested message and enums of message `TxAckPaymentRequest` -pub mod tx_ack_payment_request { - // @@protoc_insertion_point(message:hw.trezor.messages.bitcoin.TxAckPaymentRequest.PaymentRequestMemo) - #[derive(PartialEq,Clone,Default,Debug)] - pub struct PaymentRequestMemo { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.PaymentRequestMemo.text_memo) - pub text_memo: ::protobuf::MessageField, - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.PaymentRequestMemo.refund_memo) - pub refund_memo: ::protobuf::MessageField, - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.PaymentRequestMemo.coin_purchase_memo) - pub coin_purchase_memo: ::protobuf::MessageField, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.PaymentRequestMemo.special_fields) - pub special_fields: ::protobuf::SpecialFields, - } - - impl<'a> ::std::default::Default for &'a PaymentRequestMemo { - fn default() -> &'a PaymentRequestMemo { - ::default_instance() - } - } - - impl PaymentRequestMemo { - pub fn new() -> PaymentRequestMemo { - ::std::default::Default::default() - } - - pub(in super) fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(3); - let mut oneofs = ::std::vec::Vec::with_capacity(0); - fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, TextMemo>( - "text_memo", - |m: &PaymentRequestMemo| { &m.text_memo }, - |m: &mut PaymentRequestMemo| { &mut m.text_memo }, - )); - fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RefundMemo>( - "refund_memo", - |m: &PaymentRequestMemo| { &m.refund_memo }, - |m: &mut PaymentRequestMemo| { &mut m.refund_memo }, - )); - fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, CoinPurchaseMemo>( - "coin_purchase_memo", - |m: &PaymentRequestMemo| { &m.coin_purchase_memo }, - |m: &mut PaymentRequestMemo| { &mut m.coin_purchase_memo }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( - "TxAckPaymentRequest.PaymentRequestMemo", - fields, - oneofs, - ) - } - } - - impl ::protobuf::Message for PaymentRequestMemo { - const NAME: &'static str = "PaymentRequestMemo"; - - fn is_initialized(&self) -> bool { - for v in &self.text_memo { - if !v.is_initialized() { - return false; - } - }; - for v in &self.refund_memo { - if !v.is_initialized() { - return false; - } - }; - for v in &self.coin_purchase_memo { - if !v.is_initialized() { - 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 => { - ::protobuf::rt::read_singular_message_into_field(is, &mut self.text_memo)?; - }, - 18 => { - ::protobuf::rt::read_singular_message_into_field(is, &mut self.refund_memo)?; - }, - 26 => { - ::protobuf::rt::read_singular_message_into_field(is, &mut self.coin_purchase_memo)?; - }, - 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.text_memo.as_ref() { - let len = v.compute_size(); - my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; - } - if let Some(v) = self.refund_memo.as_ref() { - let len = v.compute_size(); - my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; - } - if let Some(v) = self.coin_purchase_memo.as_ref() { - let len = v.compute_size(); - my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; - } - 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.text_memo.as_ref() { - ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?; - } - if let Some(v) = self.refund_memo.as_ref() { - ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?; - } - if let Some(v) = self.coin_purchase_memo.as_ref() { - ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?; - } - 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() -> PaymentRequestMemo { - PaymentRequestMemo::new() - } - - fn clear(&mut self) { - self.text_memo.clear(); - self.refund_memo.clear(); - self.coin_purchase_memo.clear(); - self.special_fields.clear(); - } - - fn default_instance() -> &'static PaymentRequestMemo { - static instance: PaymentRequestMemo = PaymentRequestMemo { - text_memo: ::protobuf::MessageField::none(), - refund_memo: ::protobuf::MessageField::none(), - coin_purchase_memo: ::protobuf::MessageField::none(), - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } - } - - impl ::protobuf::MessageFull for PaymentRequestMemo { - fn descriptor() -> ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); - descriptor.get(|| super::file_descriptor().message_by_package_relative_name("TxAckPaymentRequest.PaymentRequestMemo").unwrap()).clone() - } - } - - impl ::std::fmt::Display for PaymentRequestMemo { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } - } - - impl ::protobuf::reflect::ProtobufValue for PaymentRequestMemo { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; - } - - // @@protoc_insertion_point(message:hw.trezor.messages.bitcoin.TxAckPaymentRequest.TextMemo) - #[derive(PartialEq,Clone,Default,Debug)] - pub struct TextMemo { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.TextMemo.text) - pub text: ::std::option::Option<::std::string::String>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.TextMemo.special_fields) - pub special_fields: ::protobuf::SpecialFields, - } - - impl<'a> ::std::default::Default for &'a TextMemo { - fn default() -> &'a TextMemo { - ::default_instance() - } - } - - impl TextMemo { - pub fn new() -> TextMemo { - ::std::default::Default::default() - } - - // required string text = 1; - - pub fn text(&self) -> &str { - match self.text.as_ref() { - Some(v) => v, - None => "", - } - } - - pub fn clear_text(&mut self) { - self.text = ::std::option::Option::None; - } - - pub fn has_text(&self) -> bool { - self.text.is_some() - } - - // Param is passed by value, moved - pub fn set_text(&mut self, v: ::std::string::String) { - self.text = ::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_text(&mut self) -> &mut ::std::string::String { - if self.text.is_none() { - self.text = ::std::option::Option::Some(::std::string::String::new()); - } - self.text.as_mut().unwrap() - } - - // Take field - pub fn take_text(&mut self) -> ::std::string::String { - self.text.take().unwrap_or_else(|| ::std::string::String::new()) - } - - pub(in super) 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::<_, _>( - "text", - |m: &TextMemo| { &m.text }, - |m: &mut TextMemo| { &mut m.text }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( - "TxAckPaymentRequest.TextMemo", - fields, - oneofs, - ) - } - } - - impl ::protobuf::Message for TextMemo { - const NAME: &'static str = "TextMemo"; - - fn is_initialized(&self) -> bool { - if self.text.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.text = ::std::option::Option::Some(is.read_string()?); - }, - 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.text.as_ref() { - my_size += ::protobuf::rt::string_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.text.as_ref() { - os.write_string(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() -> TextMemo { - TextMemo::new() - } - - fn clear(&mut self) { - self.text = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static TextMemo { - static instance: TextMemo = TextMemo { - text: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } - } - - impl ::protobuf::MessageFull for TextMemo { - fn descriptor() -> ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); - descriptor.get(|| super::file_descriptor().message_by_package_relative_name("TxAckPaymentRequest.TextMemo").unwrap()).clone() - } - } - - impl ::std::fmt::Display for TextMemo { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } - } - - impl ::protobuf::reflect::ProtobufValue for TextMemo { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; - } - - // @@protoc_insertion_point(message:hw.trezor.messages.bitcoin.TxAckPaymentRequest.RefundMemo) - #[derive(PartialEq,Clone,Default,Debug)] - pub struct RefundMemo { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.RefundMemo.address) - pub address: ::std::option::Option<::std::string::String>, - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.RefundMemo.mac) - pub mac: ::std::option::Option<::std::vec::Vec>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.RefundMemo.special_fields) - pub special_fields: ::protobuf::SpecialFields, - } - - impl<'a> ::std::default::Default for &'a RefundMemo { - fn default() -> &'a RefundMemo { - ::default_instance() - } - } - - impl RefundMemo { - pub fn new() -> RefundMemo { - ::std::default::Default::default() - } - - // required string address = 1; - - pub fn address(&self) -> &str { - match self.address.as_ref() { - Some(v) => v, - None => "", - } - } - - pub fn clear_address(&mut self) { - self.address = ::std::option::Option::None; - } - - pub fn has_address(&self) -> bool { - self.address.is_some() - } - - // Param is passed by value, moved - pub fn set_address(&mut self, v: ::std::string::String) { - self.address = ::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_address(&mut self) -> &mut ::std::string::String { - if self.address.is_none() { - self.address = ::std::option::Option::Some(::std::string::String::new()); - } - self.address.as_mut().unwrap() - } - - // Take field - pub fn take_address(&mut self) -> ::std::string::String { - self.address.take().unwrap_or_else(|| ::std::string::String::new()) - } - - // required bytes mac = 2; - - pub fn mac(&self) -> &[u8] { - match self.mac.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_mac(&mut self) { - self.mac = ::std::option::Option::None; - } - - pub fn has_mac(&self) -> bool { - self.mac.is_some() - } - - // Param is passed by value, moved - pub fn set_mac(&mut self, v: ::std::vec::Vec) { - self.mac = ::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_mac(&mut self) -> &mut ::std::vec::Vec { - if self.mac.is_none() { - self.mac = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.mac.as_mut().unwrap() - } - - // Take field - pub fn take_mac(&mut self) -> ::std::vec::Vec { - self.mac.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - pub(in super) 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::<_, _>( - "address", - |m: &RefundMemo| { &m.address }, - |m: &mut RefundMemo| { &mut m.address }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "mac", - |m: &RefundMemo| { &m.mac }, - |m: &mut RefundMemo| { &mut m.mac }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( - "TxAckPaymentRequest.RefundMemo", - fields, - oneofs, - ) - } - } - - impl ::protobuf::Message for RefundMemo { - const NAME: &'static str = "RefundMemo"; - - fn is_initialized(&self) -> bool { - if self.address.is_none() { - return false; - } - if self.mac.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.address = ::std::option::Option::Some(is.read_string()?); - }, - 18 => { - self.mac = ::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.address.as_ref() { - my_size += ::protobuf::rt::string_size(1, &v); - } - if let Some(v) = self.mac.as_ref() { - my_size += ::protobuf::rt::bytes_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.address.as_ref() { - os.write_string(1, v)?; - } - if let Some(v) = self.mac.as_ref() { - os.write_bytes(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() -> RefundMemo { - RefundMemo::new() - } - - fn clear(&mut self) { - self.address = ::std::option::Option::None; - self.mac = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static RefundMemo { - static instance: RefundMemo = RefundMemo { - address: ::std::option::Option::None, - mac: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } - } - - impl ::protobuf::MessageFull for RefundMemo { - fn descriptor() -> ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); - descriptor.get(|| super::file_descriptor().message_by_package_relative_name("TxAckPaymentRequest.RefundMemo").unwrap()).clone() - } - } - - impl ::std::fmt::Display for RefundMemo { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } - } - - impl ::protobuf::reflect::ProtobufValue for RefundMemo { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; - } - - // @@protoc_insertion_point(message:hw.trezor.messages.bitcoin.TxAckPaymentRequest.CoinPurchaseMemo) - #[derive(PartialEq,Clone,Default,Debug)] - pub struct CoinPurchaseMemo { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.CoinPurchaseMemo.coin_type) - pub coin_type: ::std::option::Option, - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.CoinPurchaseMemo.amount) - pub amount: ::std::option::Option<::std::string::String>, - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.CoinPurchaseMemo.address) - pub address: ::std::option::Option<::std::string::String>, - // @@protoc_insertion_point(field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.CoinPurchaseMemo.mac) - pub mac: ::std::option::Option<::std::vec::Vec>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.bitcoin.TxAckPaymentRequest.CoinPurchaseMemo.special_fields) - pub special_fields: ::protobuf::SpecialFields, - } - - impl<'a> ::std::default::Default for &'a CoinPurchaseMemo { - fn default() -> &'a CoinPurchaseMemo { - ::default_instance() - } - } - - impl CoinPurchaseMemo { - pub fn new() -> CoinPurchaseMemo { - ::std::default::Default::default() - } - - // required uint32 coin_type = 1; - - pub fn coin_type(&self) -> u32 { - self.coin_type.unwrap_or(0) - } - - pub fn clear_coin_type(&mut self) { - self.coin_type = ::std::option::Option::None; - } - - pub fn has_coin_type(&self) -> bool { - self.coin_type.is_some() - } - - // Param is passed by value, moved - pub fn set_coin_type(&mut self, v: u32) { - self.coin_type = ::std::option::Option::Some(v); - } - - // required string amount = 2; - - pub fn amount(&self) -> &str { - match self.amount.as_ref() { - Some(v) => v, - None => "", - } - } - - pub fn clear_amount(&mut self) { - self.amount = ::std::option::Option::None; - } - - pub fn has_amount(&self) -> bool { - self.amount.is_some() - } - - // Param is passed by value, moved - pub fn set_amount(&mut self, v: ::std::string::String) { - self.amount = ::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_amount(&mut self) -> &mut ::std::string::String { - if self.amount.is_none() { - self.amount = ::std::option::Option::Some(::std::string::String::new()); - } - self.amount.as_mut().unwrap() - } - - // Take field - pub fn take_amount(&mut self) -> ::std::string::String { - self.amount.take().unwrap_or_else(|| ::std::string::String::new()) - } - - // required string address = 3; - - pub fn address(&self) -> &str { - match self.address.as_ref() { - Some(v) => v, - None => "", - } - } - - pub fn clear_address(&mut self) { - self.address = ::std::option::Option::None; - } - - pub fn has_address(&self) -> bool { - self.address.is_some() - } - - // Param is passed by value, moved - pub fn set_address(&mut self, v: ::std::string::String) { - self.address = ::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_address(&mut self) -> &mut ::std::string::String { - if self.address.is_none() { - self.address = ::std::option::Option::Some(::std::string::String::new()); - } - self.address.as_mut().unwrap() - } - - // Take field - pub fn take_address(&mut self) -> ::std::string::String { - self.address.take().unwrap_or_else(|| ::std::string::String::new()) - } - - // required bytes mac = 4; - - pub fn mac(&self) -> &[u8] { - match self.mac.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_mac(&mut self) { - self.mac = ::std::option::Option::None; - } - - pub fn has_mac(&self) -> bool { - self.mac.is_some() - } - - // Param is passed by value, moved - pub fn set_mac(&mut self, v: ::std::vec::Vec) { - self.mac = ::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_mac(&mut self) -> &mut ::std::vec::Vec { - if self.mac.is_none() { - self.mac = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.mac.as_mut().unwrap() - } - - // Take field - pub fn take_mac(&mut self) -> ::std::vec::Vec { - self.mac.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - pub(in super) fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(4); - let mut oneofs = ::std::vec::Vec::with_capacity(0); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "coin_type", - |m: &CoinPurchaseMemo| { &m.coin_type }, - |m: &mut CoinPurchaseMemo| { &mut m.coin_type }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "amount", - |m: &CoinPurchaseMemo| { &m.amount }, - |m: &mut CoinPurchaseMemo| { &mut m.amount }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "address", - |m: &CoinPurchaseMemo| { &m.address }, - |m: &mut CoinPurchaseMemo| { &mut m.address }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "mac", - |m: &CoinPurchaseMemo| { &m.mac }, - |m: &mut CoinPurchaseMemo| { &mut m.mac }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( - "TxAckPaymentRequest.CoinPurchaseMemo", - fields, - oneofs, - ) - } - } - - impl ::protobuf::Message for CoinPurchaseMemo { - const NAME: &'static str = "CoinPurchaseMemo"; - - fn is_initialized(&self) -> bool { - if self.coin_type.is_none() { - return false; - } - if self.amount.is_none() { - return false; - } - if self.address.is_none() { - return false; - } - if self.mac.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.coin_type = ::std::option::Option::Some(is.read_uint32()?); - }, - 18 => { - self.amount = ::std::option::Option::Some(is.read_string()?); - }, - 26 => { - self.address = ::std::option::Option::Some(is.read_string()?); - }, - 34 => { - self.mac = ::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.coin_type { - my_size += ::protobuf::rt::uint32_size(1, v); - } - if let Some(v) = self.amount.as_ref() { - my_size += ::protobuf::rt::string_size(2, &v); - } - if let Some(v) = self.address.as_ref() { - my_size += ::protobuf::rt::string_size(3, &v); - } - if let Some(v) = self.mac.as_ref() { - my_size += ::protobuf::rt::bytes_size(4, &v); - } - my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); - self.special_fields.cached_size().set(my_size as u32); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { - if let Some(v) = self.coin_type { - os.write_uint32(1, v)?; - } - if let Some(v) = self.amount.as_ref() { - os.write_string(2, v)?; - } - if let Some(v) = self.address.as_ref() { - os.write_string(3, v)?; - } - if let Some(v) = self.mac.as_ref() { - os.write_bytes(4, v)?; - } - os.write_unknown_fields(self.special_fields.unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn special_fields(&self) -> &::protobuf::SpecialFields { - &self.special_fields - } - - fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { - &mut self.special_fields - } - - fn new() -> CoinPurchaseMemo { - CoinPurchaseMemo::new() - } - - fn clear(&mut self) { - self.coin_type = ::std::option::Option::None; - self.amount = ::std::option::Option::None; - self.address = ::std::option::Option::None; - self.mac = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static CoinPurchaseMemo { - static instance: CoinPurchaseMemo = CoinPurchaseMemo { - coin_type: ::std::option::Option::None, - amount: ::std::option::Option::None, - address: ::std::option::Option::None, - mac: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } - } - - impl ::protobuf::MessageFull for CoinPurchaseMemo { - fn descriptor() -> ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); - descriptor.get(|| super::file_descriptor().message_by_package_relative_name("TxAckPaymentRequest.CoinPurchaseMemo").unwrap()).clone() - } - } - - impl ::std::fmt::Display for CoinPurchaseMemo { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } - } - - impl ::protobuf::reflect::ProtobufValue for CoinPurchaseMemo { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; - } -} - // @@protoc_insertion_point(message:hw.trezor.messages.bitcoin.TxAckInput) #[derive(PartialEq,Clone,Default,Debug)] pub struct TxAckInput { @@ -13623,76 +12417,59 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x13J\x04\x08\x13\x10\x14\"}\n\nPrevOutput\x12\x16\n\x06amount\x18\x01\ \x20\x02(\x04R\x06amount\x12#\n\rscript_pubkey\x18\x02\x20\x02(\x0cR\x0c\ scriptPubkey\x122\n\x15decred_script_version\x18\x03\x20\x01(\rR\x13decr\ - edScriptVersion\"\xf2\x05\n\x13TxAckPaymentRequest\x12\x14\n\x05nonce\ - \x18\x01\x20\x01(\x0cR\x05nonce\x12%\n\x0erecipient_name\x18\x02\x20\x02\ - (\tR\rrecipientName\x12X\n\x05memos\x18\x03\x20\x03(\x0b2B.hw.trezor.mes\ - sages.bitcoin.TxAckPaymentRequest.PaymentRequestMemoR\x05memos\x12\x16\n\ - \x06amount\x18\x04\x20\x01(\x04R\x06amount\x12\x1c\n\tsignature\x18\x05\ - \x20\x02(\x0cR\tsignature\x1a\xb8\x02\n\x12PaymentRequestMemo\x12U\n\tte\ - xt_memo\x18\x01\x20\x01(\x0b28.hw.trezor.messages.bitcoin.TxAckPaymentRe\ - quest.TextMemoR\x08textMemo\x12[\n\x0brefund_memo\x18\x02\x20\x01(\x0b2:\ - .hw.trezor.messages.bitcoin.TxAckPaymentRequest.RefundMemoR\nrefundMemo\ - \x12n\n\x12coin_purchase_memo\x18\x03\x20\x01(\x0b2@.hw.trezor.messages.\ - bitcoin.TxAckPaymentRequest.CoinPurchaseMemoR\x10coinPurchaseMemo\x1a\ - \x1e\n\x08TextMemo\x12\x12\n\x04text\x18\x01\x20\x02(\tR\x04text\x1a8\n\ - \nRefundMemo\x12\x18\n\x07address\x18\x01\x20\x02(\tR\x07address\x12\x10\ - \n\x03mac\x18\x02\x20\x02(\x0cR\x03mac\x1as\n\x10CoinPurchaseMemo\x12\ - \x1b\n\tcoin_type\x18\x01\x20\x02(\rR\x08coinType\x12\x16\n\x06amount\ - \x18\x02\x20\x02(\tR\x06amount\x12\x18\n\x07address\x18\x03\x20\x02(\tR\ - \x07address\x12\x10\n\x03mac\x18\x04\x20\x02(\x0cR\x03mac:\x04\x88\xb2\ - \x19\x01\"\xac\x01\n\nTxAckInput\x12H\n\x02tx\x18\x01\x20\x02(\x0b28.hw.\ - trezor.messages.bitcoin.TxAckInput.TxAckInputWrapperR\x02tx\x1aN\n\x11Tx\ - AckInputWrapper\x129\n\x05input\x18\x02\x20\x02(\x0b2#.hw.trezor.message\ - s.bitcoin.TxInputR\x05input:\x04\x90\xb2\x19\x16\"\xb3\x01\n\x0bTxAckOut\ - put\x12J\n\x02tx\x18\x01\x20\x02(\x0b2:.hw.trezor.messages.bitcoin.TxAck\ - Output.TxAckOutputWrapperR\x02tx\x1aR\n\x12TxAckOutputWrapper\x12<\n\x06\ - output\x18\x05\x20\x02(\x0b2$.hw.trezor.messages.bitcoin.TxOutputR\x06ou\ - tput:\x04\x90\xb2\x19\x16\"I\n\rTxAckPrevMeta\x122\n\x02tx\x18\x01\x20\ - \x02(\x0b2\".hw.trezor.messages.bitcoin.PrevTxR\x02tx:\x04\x90\xb2\x19\ - \x16\"\xbe\x01\n\x0eTxAckPrevInput\x12P\n\x02tx\x18\x01\x20\x02(\x0b2@.h\ - w.trezor.messages.bitcoin.TxAckPrevInput.TxAckPrevInputWrapperR\x02tx\ - \x1aT\n\x15TxAckPrevInputWrapper\x12;\n\x05input\x18\x02\x20\x02(\x0b2%.\ - hw.trezor.messages.bitcoin.PrevInputR\x05input:\x04\x90\xb2\x19\x16\"\ - \xc5\x01\n\x0fTxAckPrevOutput\x12R\n\x02tx\x18\x01\x20\x02(\x0b2B.hw.tre\ - zor.messages.bitcoin.TxAckPrevOutput.TxAckPrevOutputWrapperR\x02tx\x1aX\ - \n\x16TxAckPrevOutputWrapper\x12>\n\x06output\x18\x03\x20\x02(\x0b2&.hw.\ - trezor.messages.bitcoin.PrevOutputR\x06output:\x04\x90\xb2\x19\x16\"\xbb\ - \x01\n\x12TxAckPrevExtraData\x12X\n\x02tx\x18\x01\x20\x02(\x0b2H.hw.trez\ - or.messages.bitcoin.TxAckPrevExtraData.TxAckPrevExtraDataWrapperR\x02tx\ - \x1aE\n\x19TxAckPrevExtraDataWrapper\x12(\n\x10extra_data_chunk\x18\x08\ - \x20\x02(\x0cR\x0eextraDataChunk:\x04\x90\xb2\x19\x16\"\x88\x03\n\x11Get\ - OwnershipProof\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12$\ - \n\tcoin_name\x18\x02\x20\x01(\t:\x07BitcoinR\x08coinName\x12Z\n\x0bscri\ - pt_type\x18\x03\x20\x01(\x0e2+.hw.trezor.messages.bitcoin.InputScriptTyp\ - e:\x0cSPENDWITNESSR\nscriptType\x12P\n\x08multisig\x18\x04\x20\x01(\x0b2\ - 4.hw.trezor.messages.bitcoin.MultisigRedeemScriptTypeR\x08multisig\x122\ - \n\x11user_confirmation\x18\x05\x20\x01(\x08:\x05falseR\x10userConfirmat\ - ion\x12#\n\rownership_ids\x18\x06\x20\x03(\x0cR\x0cownershipIds\x12)\n\ - \x0fcommitment_data\x18\x07\x20\x01(\x0c:\0R\x0ecommitmentData\"W\n\x0eO\ - wnershipProof\x12'\n\x0fownership_proof\x18\x01\x20\x02(\x0cR\x0eownersh\ - ipProof\x12\x1c\n\tsignature\x18\x02\x20\x02(\x0cR\tsignature\"\xab\x03\ - \n\x11AuthorizeCoinJoin\x12\x20\n\x0bcoordinator\x18\x01\x20\x02(\tR\x0b\ - coordinator\x12\x1d\n\nmax_rounds\x18\x02\x20\x02(\x04R\tmaxRounds\x127\ - \n\x18max_coordinator_fee_rate\x18\x03\x20\x02(\rR\x15maxCoordinatorFeeR\ - ate\x12+\n\x12max_fee_per_kvbyte\x18\x04\x20\x02(\rR\x0fmaxFeePerKvbyte\ - \x12\x1b\n\taddress_n\x18\x05\x20\x03(\rR\x08addressN\x12$\n\tcoin_name\ - \x18\x06\x20\x01(\t:\x07BitcoinR\x08coinName\x12Z\n\x0bscript_type\x18\ - \x07\x20\x01(\x0e2+.hw.trezor.messages.bitcoin.InputScriptType:\x0cSPEND\ - ADDRESSR\nscriptType\x12P\n\x0bamount_unit\x18\x08\x20\x01(\x0e2&.hw.tre\ - zor.messages.bitcoin.AmountUnit:\x07BITCOINR\namountUnit*~\n\x0fInputScr\ - iptType\x12\x10\n\x0cSPENDADDRESS\x10\0\x12\x11\n\rSPENDMULTISIG\x10\x01\ - \x12\x0c\n\x08EXTERNAL\x10\x02\x12\x10\n\x0cSPENDWITNESS\x10\x03\x12\x14\ - \n\x10SPENDP2SHWITNESS\x10\x04\x12\x10\n\x0cSPENDTAPROOT\x10\x05*\x99\ - \x01\n\x10OutputScriptType\x12\x10\n\x0cPAYTOADDRESS\x10\0\x12\x13\n\x0f\ - PAYTOSCRIPTHASH\x10\x01\x12\x11\n\rPAYTOMULTISIG\x10\x02\x12\x11\n\rPAYT\ - OOPRETURN\x10\x03\x12\x10\n\x0cPAYTOWITNESS\x10\x04\x12\x14\n\x10PAYTOP2\ - SHWITNESS\x10\x05\x12\x10\n\x0cPAYTOTAPROOT\x10\x06*.\n\x16DecredStaking\ - SpendType\x12\t\n\x05SSGen\x10\0\x12\t\n\x05SSRTX\x10\x01*J\n\nAmountUni\ - t\x12\x0b\n\x07BITCOIN\x10\0\x12\x10\n\x0cMILLIBITCOIN\x10\x01\x12\x10\n\ - \x0cMICROBITCOIN\x10\x02\x12\x0b\n\x07SATOSHI\x10\x03*8\n\x14MultisigPub\ - keysOrder\x12\r\n\tPRESERVED\x10\0\x12\x11\n\rLEXICOGRAPHIC\x10\x01B?\n#\ - com.satoshilabs.trezor.lib.protobufB\x14TrezorMessageBitcoin\x80\xa6\x1d\ - \x01\ + edScriptVersion\"\xac\x01\n\nTxAckInput\x12H\n\x02tx\x18\x01\x20\x02(\ + \x0b28.hw.trezor.messages.bitcoin.TxAckInput.TxAckInputWrapperR\x02tx\ + \x1aN\n\x11TxAckInputWrapper\x129\n\x05input\x18\x02\x20\x02(\x0b2#.hw.t\ + rezor.messages.bitcoin.TxInputR\x05input:\x04\x90\xb2\x19\x16\"\xb3\x01\ + \n\x0bTxAckOutput\x12J\n\x02tx\x18\x01\x20\x02(\x0b2:.hw.trezor.messages\ + .bitcoin.TxAckOutput.TxAckOutputWrapperR\x02tx\x1aR\n\x12TxAckOutputWrap\ + per\x12<\n\x06output\x18\x05\x20\x02(\x0b2$.hw.trezor.messages.bitcoin.T\ + xOutputR\x06output:\x04\x90\xb2\x19\x16\"I\n\rTxAckPrevMeta\x122\n\x02tx\ + \x18\x01\x20\x02(\x0b2\".hw.trezor.messages.bitcoin.PrevTxR\x02tx:\x04\ + \x90\xb2\x19\x16\"\xbe\x01\n\x0eTxAckPrevInput\x12P\n\x02tx\x18\x01\x20\ + \x02(\x0b2@.hw.trezor.messages.bitcoin.TxAckPrevInput.TxAckPrevInputWrap\ + perR\x02tx\x1aT\n\x15TxAckPrevInputWrapper\x12;\n\x05input\x18\x02\x20\ + \x02(\x0b2%.hw.trezor.messages.bitcoin.PrevInputR\x05input:\x04\x90\xb2\ + \x19\x16\"\xc5\x01\n\x0fTxAckPrevOutput\x12R\n\x02tx\x18\x01\x20\x02(\ + \x0b2B.hw.trezor.messages.bitcoin.TxAckPrevOutput.TxAckPrevOutputWrapper\ + R\x02tx\x1aX\n\x16TxAckPrevOutputWrapper\x12>\n\x06output\x18\x03\x20\ + \x02(\x0b2&.hw.trezor.messages.bitcoin.PrevOutputR\x06output:\x04\x90\ + \xb2\x19\x16\"\xbb\x01\n\x12TxAckPrevExtraData\x12X\n\x02tx\x18\x01\x20\ + \x02(\x0b2H.hw.trezor.messages.bitcoin.TxAckPrevExtraData.TxAckPrevExtra\ + DataWrapperR\x02tx\x1aE\n\x19TxAckPrevExtraDataWrapper\x12(\n\x10extra_d\ + ata_chunk\x18\x08\x20\x02(\x0cR\x0eextraDataChunk:\x04\x90\xb2\x19\x16\"\ + \x88\x03\n\x11GetOwnershipProof\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\ + \x08addressN\x12$\n\tcoin_name\x18\x02\x20\x01(\t:\x07BitcoinR\x08coinNa\ + me\x12Z\n\x0bscript_type\x18\x03\x20\x01(\x0e2+.hw.trezor.messages.bitco\ + in.InputScriptType:\x0cSPENDWITNESSR\nscriptType\x12P\n\x08multisig\x18\ + \x04\x20\x01(\x0b24.hw.trezor.messages.bitcoin.MultisigRedeemScriptTypeR\ + \x08multisig\x122\n\x11user_confirmation\x18\x05\x20\x01(\x08:\x05falseR\ + \x10userConfirmation\x12#\n\rownership_ids\x18\x06\x20\x03(\x0cR\x0cowne\ + rshipIds\x12)\n\x0fcommitment_data\x18\x07\x20\x01(\x0c:\0R\x0ecommitmen\ + tData\"W\n\x0eOwnershipProof\x12'\n\x0fownership_proof\x18\x01\x20\x02(\ + \x0cR\x0eownershipProof\x12\x1c\n\tsignature\x18\x02\x20\x02(\x0cR\tsign\ + ature\"\xab\x03\n\x11AuthorizeCoinJoin\x12\x20\n\x0bcoordinator\x18\x01\ + \x20\x02(\tR\x0bcoordinator\x12\x1d\n\nmax_rounds\x18\x02\x20\x02(\x04R\ + \tmaxRounds\x127\n\x18max_coordinator_fee_rate\x18\x03\x20\x02(\rR\x15ma\ + xCoordinatorFeeRate\x12+\n\x12max_fee_per_kvbyte\x18\x04\x20\x02(\rR\x0f\ + maxFeePerKvbyte\x12\x1b\n\taddress_n\x18\x05\x20\x03(\rR\x08addressN\x12\ + $\n\tcoin_name\x18\x06\x20\x01(\t:\x07BitcoinR\x08coinName\x12Z\n\x0bscr\ + ipt_type\x18\x07\x20\x01(\x0e2+.hw.trezor.messages.bitcoin.InputScriptTy\ + pe:\x0cSPENDADDRESSR\nscriptType\x12P\n\x0bamount_unit\x18\x08\x20\x01(\ + \x0e2&.hw.trezor.messages.bitcoin.AmountUnit:\x07BITCOINR\namountUnit*~\ + \n\x0fInputScriptType\x12\x10\n\x0cSPENDADDRESS\x10\0\x12\x11\n\rSPENDMU\ + LTISIG\x10\x01\x12\x0c\n\x08EXTERNAL\x10\x02\x12\x10\n\x0cSPENDWITNESS\ + \x10\x03\x12\x14\n\x10SPENDP2SHWITNESS\x10\x04\x12\x10\n\x0cSPENDTAPROOT\ + \x10\x05*\x99\x01\n\x10OutputScriptType\x12\x10\n\x0cPAYTOADDRESS\x10\0\ + \x12\x13\n\x0fPAYTOSCRIPTHASH\x10\x01\x12\x11\n\rPAYTOMULTISIG\x10\x02\ + \x12\x11\n\rPAYTOOPRETURN\x10\x03\x12\x10\n\x0cPAYTOWITNESS\x10\x04\x12\ + \x14\n\x10PAYTOP2SHWITNESS\x10\x05\x12\x10\n\x0cPAYTOTAPROOT\x10\x06*.\n\ + \x16DecredStakingSpendType\x12\t\n\x05SSGen\x10\0\x12\t\n\x05SSRTX\x10\ + \x01*J\n\nAmountUnit\x12\x0b\n\x07BITCOIN\x10\0\x12\x10\n\x0cMILLIBITCOI\ + N\x10\x01\x12\x10\n\x0cMICROBITCOIN\x10\x02\x12\x0b\n\x07SATOSHI\x10\x03\ + *8\n\x14MultisigPubkeysOrder\x12\r\n\tPRESERVED\x10\0\x12\x11\n\rLEXICOG\ + RAPHIC\x10\x01B?\n#com.satoshilabs.trezor.lib.protobufB\x14TrezorMessage\ + Bitcoin\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -13712,7 +12489,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { let mut deps = ::std::vec::Vec::with_capacity(2); deps.push(super::messages_common::file_descriptor().clone()); deps.push(super::options::file_descriptor().clone()); - let mut messages = ::std::vec::Vec::with_capacity(45); + let mut messages = ::std::vec::Vec::with_capacity(40); messages.push(MultisigRedeemScriptType::generated_message_descriptor_data()); messages.push(GetPublicKey::generated_message_descriptor_data()); messages.push(PublicKey::generated_message_descriptor_data()); @@ -13731,7 +12508,6 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(PrevTx::generated_message_descriptor_data()); messages.push(PrevInput::generated_message_descriptor_data()); messages.push(PrevOutput::generated_message_descriptor_data()); - messages.push(TxAckPaymentRequest::generated_message_descriptor_data()); messages.push(TxAckInput::generated_message_descriptor_data()); messages.push(TxAckOutput::generated_message_descriptor_data()); messages.push(TxAckPrevMeta::generated_message_descriptor_data()); @@ -13749,10 +12525,6 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(tx_ack::transaction_type::TxInputType::generated_message_descriptor_data()); messages.push(tx_ack::transaction_type::TxOutputBinType::generated_message_descriptor_data()); messages.push(tx_ack::transaction_type::TxOutputType::generated_message_descriptor_data()); - messages.push(tx_ack_payment_request::PaymentRequestMemo::generated_message_descriptor_data()); - messages.push(tx_ack_payment_request::TextMemo::generated_message_descriptor_data()); - messages.push(tx_ack_payment_request::RefundMemo::generated_message_descriptor_data()); - messages.push(tx_ack_payment_request::CoinPurchaseMemo::generated_message_descriptor_data()); messages.push(tx_ack_input::TxAckInputWrapper::generated_message_descriptor_data()); messages.push(tx_ack_output::TxAckOutputWrapper::generated_message_descriptor_data()); messages.push(tx_ack_prev_input::TxAckPrevInputWrapper::generated_message_descriptor_data()); diff --git a/rust/trezor-client/src/protos/generated/messages_common.rs b/rust/trezor-client/src/protos/generated/messages_common.rs index 4fd72b22f0..4f3a883e32 100644 --- a/rust/trezor-client/src/protos/generated/messages_common.rs +++ b/rust/trezor-client/src/protos/generated/messages_common.rs @@ -2478,6 +2478,1212 @@ impl ::protobuf::reflect::ProtobufValue for HDNodeType { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; } +// @@protoc_insertion_point(message:hw.trezor.messages.common.PaymentRequest) +#[derive(PartialEq,Clone,Default,Debug)] +pub struct PaymentRequest { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.nonce) + pub nonce: ::std::option::Option<::std::vec::Vec>, + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.recipient_name) + pub recipient_name: ::std::option::Option<::std::string::String>, + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.memos) + pub memos: ::std::vec::Vec, + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.amount) + pub amount: ::std::option::Option, + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.signature) + pub signature: ::std::option::Option<::std::vec::Vec>, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.common.PaymentRequest.special_fields) + pub special_fields: ::protobuf::SpecialFields, +} + +impl<'a> ::std::default::Default for &'a PaymentRequest { + fn default() -> &'a PaymentRequest { + ::default_instance() + } +} + +impl PaymentRequest { + pub fn new() -> PaymentRequest { + ::std::default::Default::default() + } + + // optional bytes nonce = 1; + + pub fn nonce(&self) -> &[u8] { + match self.nonce.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_nonce(&mut self) { + self.nonce = ::std::option::Option::None; + } + + pub fn has_nonce(&self) -> bool { + self.nonce.is_some() + } + + // Param is passed by value, moved + pub fn set_nonce(&mut self, v: ::std::vec::Vec) { + self.nonce = ::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_nonce(&mut self) -> &mut ::std::vec::Vec { + if self.nonce.is_none() { + self.nonce = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.nonce.as_mut().unwrap() + } + + // Take field + pub fn take_nonce(&mut self) -> ::std::vec::Vec { + self.nonce.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + // required string recipient_name = 2; + + pub fn recipient_name(&self) -> &str { + match self.recipient_name.as_ref() { + Some(v) => v, + None => "", + } + } + + pub fn clear_recipient_name(&mut self) { + self.recipient_name = ::std::option::Option::None; + } + + pub fn has_recipient_name(&self) -> bool { + self.recipient_name.is_some() + } + + // Param is passed by value, moved + pub fn set_recipient_name(&mut self, v: ::std::string::String) { + self.recipient_name = ::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_recipient_name(&mut self) -> &mut ::std::string::String { + if self.recipient_name.is_none() { + self.recipient_name = ::std::option::Option::Some(::std::string::String::new()); + } + self.recipient_name.as_mut().unwrap() + } + + // Take field + pub fn take_recipient_name(&mut self) -> ::std::string::String { + self.recipient_name.take().unwrap_or_else(|| ::std::string::String::new()) + } + + // optional uint64 amount = 4; + + pub fn amount(&self) -> u64 { + self.amount.unwrap_or(0) + } + + pub fn clear_amount(&mut self) { + self.amount = ::std::option::Option::None; + } + + pub fn has_amount(&self) -> bool { + self.amount.is_some() + } + + // Param is passed by value, moved + pub fn set_amount(&mut self, v: u64) { + self.amount = ::std::option::Option::Some(v); + } + + // required bytes signature = 5; + + pub fn signature(&self) -> &[u8] { + match self.signature.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_signature(&mut self) { + self.signature = ::std::option::Option::None; + } + + pub fn has_signature(&self) -> bool { + self.signature.is_some() + } + + // Param is passed by value, moved + pub fn set_signature(&mut self, v: ::std::vec::Vec) { + self.signature = ::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_signature(&mut self) -> &mut ::std::vec::Vec { + if self.signature.is_none() { + self.signature = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.signature.as_mut().unwrap() + } + + // Take field + pub fn take_signature(&mut self) -> ::std::vec::Vec { + self.signature.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(5); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "nonce", + |m: &PaymentRequest| { &m.nonce }, + |m: &mut PaymentRequest| { &mut m.nonce }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "recipient_name", + |m: &PaymentRequest| { &m.recipient_name }, + |m: &mut PaymentRequest| { &mut m.recipient_name }, + )); + fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>( + "memos", + |m: &PaymentRequest| { &m.memos }, + |m: &mut PaymentRequest| { &mut m.memos }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "amount", + |m: &PaymentRequest| { &m.amount }, + |m: &mut PaymentRequest| { &mut m.amount }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "signature", + |m: &PaymentRequest| { &m.signature }, + |m: &mut PaymentRequest| { &mut m.signature }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( + "PaymentRequest", + fields, + oneofs, + ) + } +} + +impl ::protobuf::Message for PaymentRequest { + const NAME: &'static str = "PaymentRequest"; + + fn is_initialized(&self) -> bool { + if self.recipient_name.is_none() { + return false; + } + if self.signature.is_none() { + return false; + } + for v in &self.memos { + if !v.is_initialized() { + 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.nonce = ::std::option::Option::Some(is.read_bytes()?); + }, + 18 => { + self.recipient_name = ::std::option::Option::Some(is.read_string()?); + }, + 26 => { + self.memos.push(is.read_message()?); + }, + 32 => { + self.amount = ::std::option::Option::Some(is.read_uint64()?); + }, + 42 => { + self.signature = ::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.nonce.as_ref() { + my_size += ::protobuf::rt::bytes_size(1, &v); + } + if let Some(v) = self.recipient_name.as_ref() { + my_size += ::protobuf::rt::string_size(2, &v); + } + for value in &self.memos { + let len = value.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; + }; + if let Some(v) = self.amount { + my_size += ::protobuf::rt::uint64_size(4, v); + } + if let Some(v) = self.signature.as_ref() { + my_size += ::protobuf::rt::bytes_size(5, &v); + } + my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); + self.special_fields.cached_size().set(my_size as u32); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { + if let Some(v) = self.nonce.as_ref() { + os.write_bytes(1, v)?; + } + if let Some(v) = self.recipient_name.as_ref() { + os.write_string(2, v)?; + } + for v in &self.memos { + ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?; + }; + if let Some(v) = self.amount { + os.write_uint64(4, v)?; + } + if let Some(v) = self.signature.as_ref() { + os.write_bytes(5, v)?; + } + os.write_unknown_fields(self.special_fields.unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn special_fields(&self) -> &::protobuf::SpecialFields { + &self.special_fields + } + + fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { + &mut self.special_fields + } + + fn new() -> PaymentRequest { + PaymentRequest::new() + } + + fn clear(&mut self) { + self.nonce = ::std::option::Option::None; + self.recipient_name = ::std::option::Option::None; + self.memos.clear(); + self.amount = ::std::option::Option::None; + self.signature = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static PaymentRequest { + static instance: PaymentRequest = PaymentRequest { + nonce: ::std::option::Option::None, + recipient_name: ::std::option::Option::None, + memos: ::std::vec::Vec::new(), + amount: ::std::option::Option::None, + signature: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } +} + +impl ::protobuf::MessageFull for PaymentRequest { + 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("PaymentRequest").unwrap()).clone() + } +} + +impl ::std::fmt::Display for PaymentRequest { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for PaymentRequest { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; +} + +/// Nested message and enums of message `PaymentRequest` +pub mod payment_request { + // @@protoc_insertion_point(message:hw.trezor.messages.common.PaymentRequest.PaymentRequestMemo) + #[derive(PartialEq,Clone,Default,Debug)] + pub struct PaymentRequestMemo { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.PaymentRequestMemo.text_memo) + pub text_memo: ::protobuf::MessageField, + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.PaymentRequestMemo.refund_memo) + pub refund_memo: ::protobuf::MessageField, + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.PaymentRequestMemo.coin_purchase_memo) + pub coin_purchase_memo: ::protobuf::MessageField, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.common.PaymentRequest.PaymentRequestMemo.special_fields) + pub special_fields: ::protobuf::SpecialFields, + } + + impl<'a> ::std::default::Default for &'a PaymentRequestMemo { + fn default() -> &'a PaymentRequestMemo { + ::default_instance() + } + } + + impl PaymentRequestMemo { + pub fn new() -> PaymentRequestMemo { + ::std::default::Default::default() + } + + pub(in super) fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(3); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, TextMemo>( + "text_memo", + |m: &PaymentRequestMemo| { &m.text_memo }, + |m: &mut PaymentRequestMemo| { &mut m.text_memo }, + )); + fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, RefundMemo>( + "refund_memo", + |m: &PaymentRequestMemo| { &m.refund_memo }, + |m: &mut PaymentRequestMemo| { &mut m.refund_memo }, + )); + fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, CoinPurchaseMemo>( + "coin_purchase_memo", + |m: &PaymentRequestMemo| { &m.coin_purchase_memo }, + |m: &mut PaymentRequestMemo| { &mut m.coin_purchase_memo }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( + "PaymentRequest.PaymentRequestMemo", + fields, + oneofs, + ) + } + } + + impl ::protobuf::Message for PaymentRequestMemo { + const NAME: &'static str = "PaymentRequestMemo"; + + fn is_initialized(&self) -> bool { + for v in &self.text_memo { + if !v.is_initialized() { + return false; + } + }; + for v in &self.refund_memo { + if !v.is_initialized() { + return false; + } + }; + for v in &self.coin_purchase_memo { + if !v.is_initialized() { + 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 => { + ::protobuf::rt::read_singular_message_into_field(is, &mut self.text_memo)?; + }, + 18 => { + ::protobuf::rt::read_singular_message_into_field(is, &mut self.refund_memo)?; + }, + 26 => { + ::protobuf::rt::read_singular_message_into_field(is, &mut self.coin_purchase_memo)?; + }, + 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.text_memo.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; + } + if let Some(v) = self.refund_memo.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; + } + if let Some(v) = self.coin_purchase_memo.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; + } + 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.text_memo.as_ref() { + ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?; + } + if let Some(v) = self.refund_memo.as_ref() { + ::protobuf::rt::write_message_field_with_cached_size(2, v, os)?; + } + if let Some(v) = self.coin_purchase_memo.as_ref() { + ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?; + } + 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() -> PaymentRequestMemo { + PaymentRequestMemo::new() + } + + fn clear(&mut self) { + self.text_memo.clear(); + self.refund_memo.clear(); + self.coin_purchase_memo.clear(); + self.special_fields.clear(); + } + + fn default_instance() -> &'static PaymentRequestMemo { + static instance: PaymentRequestMemo = PaymentRequestMemo { + text_memo: ::protobuf::MessageField::none(), + refund_memo: ::protobuf::MessageField::none(), + coin_purchase_memo: ::protobuf::MessageField::none(), + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } + } + + impl ::protobuf::MessageFull for PaymentRequestMemo { + fn descriptor() -> ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| super::file_descriptor().message_by_package_relative_name("PaymentRequest.PaymentRequestMemo").unwrap()).clone() + } + } + + impl ::std::fmt::Display for PaymentRequestMemo { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } + } + + impl ::protobuf::reflect::ProtobufValue for PaymentRequestMemo { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; + } + + // @@protoc_insertion_point(message:hw.trezor.messages.common.PaymentRequest.TextMemo) + #[derive(PartialEq,Clone,Default,Debug)] + pub struct TextMemo { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.TextMemo.text) + pub text: ::std::option::Option<::std::string::String>, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.common.PaymentRequest.TextMemo.special_fields) + pub special_fields: ::protobuf::SpecialFields, + } + + impl<'a> ::std::default::Default for &'a TextMemo { + fn default() -> &'a TextMemo { + ::default_instance() + } + } + + impl TextMemo { + pub fn new() -> TextMemo { + ::std::default::Default::default() + } + + // required string text = 1; + + pub fn text(&self) -> &str { + match self.text.as_ref() { + Some(v) => v, + None => "", + } + } + + pub fn clear_text(&mut self) { + self.text = ::std::option::Option::None; + } + + pub fn has_text(&self) -> bool { + self.text.is_some() + } + + // Param is passed by value, moved + pub fn set_text(&mut self, v: ::std::string::String) { + self.text = ::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_text(&mut self) -> &mut ::std::string::String { + if self.text.is_none() { + self.text = ::std::option::Option::Some(::std::string::String::new()); + } + self.text.as_mut().unwrap() + } + + // Take field + pub fn take_text(&mut self) -> ::std::string::String { + self.text.take().unwrap_or_else(|| ::std::string::String::new()) + } + + pub(in super) 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::<_, _>( + "text", + |m: &TextMemo| { &m.text }, + |m: &mut TextMemo| { &mut m.text }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( + "PaymentRequest.TextMemo", + fields, + oneofs, + ) + } + } + + impl ::protobuf::Message for TextMemo { + const NAME: &'static str = "TextMemo"; + + fn is_initialized(&self) -> bool { + if self.text.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.text = ::std::option::Option::Some(is.read_string()?); + }, + 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.text.as_ref() { + my_size += ::protobuf::rt::string_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.text.as_ref() { + os.write_string(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() -> TextMemo { + TextMemo::new() + } + + fn clear(&mut self) { + self.text = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static TextMemo { + static instance: TextMemo = TextMemo { + text: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } + } + + impl ::protobuf::MessageFull for TextMemo { + fn descriptor() -> ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| super::file_descriptor().message_by_package_relative_name("PaymentRequest.TextMemo").unwrap()).clone() + } + } + + impl ::std::fmt::Display for TextMemo { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } + } + + impl ::protobuf::reflect::ProtobufValue for TextMemo { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; + } + + // @@protoc_insertion_point(message:hw.trezor.messages.common.PaymentRequest.RefundMemo) + #[derive(PartialEq,Clone,Default,Debug)] + pub struct RefundMemo { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.RefundMemo.address) + pub address: ::std::option::Option<::std::string::String>, + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.RefundMemo.mac) + pub mac: ::std::option::Option<::std::vec::Vec>, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.common.PaymentRequest.RefundMemo.special_fields) + pub special_fields: ::protobuf::SpecialFields, + } + + impl<'a> ::std::default::Default for &'a RefundMemo { + fn default() -> &'a RefundMemo { + ::default_instance() + } + } + + impl RefundMemo { + pub fn new() -> RefundMemo { + ::std::default::Default::default() + } + + // required string address = 1; + + pub fn address(&self) -> &str { + match self.address.as_ref() { + Some(v) => v, + None => "", + } + } + + pub fn clear_address(&mut self) { + self.address = ::std::option::Option::None; + } + + pub fn has_address(&self) -> bool { + self.address.is_some() + } + + // Param is passed by value, moved + pub fn set_address(&mut self, v: ::std::string::String) { + self.address = ::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_address(&mut self) -> &mut ::std::string::String { + if self.address.is_none() { + self.address = ::std::option::Option::Some(::std::string::String::new()); + } + self.address.as_mut().unwrap() + } + + // Take field + pub fn take_address(&mut self) -> ::std::string::String { + self.address.take().unwrap_or_else(|| ::std::string::String::new()) + } + + // required bytes mac = 2; + + pub fn mac(&self) -> &[u8] { + match self.mac.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_mac(&mut self) { + self.mac = ::std::option::Option::None; + } + + pub fn has_mac(&self) -> bool { + self.mac.is_some() + } + + // Param is passed by value, moved + pub fn set_mac(&mut self, v: ::std::vec::Vec) { + self.mac = ::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_mac(&mut self) -> &mut ::std::vec::Vec { + if self.mac.is_none() { + self.mac = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.mac.as_mut().unwrap() + } + + // Take field + pub fn take_mac(&mut self) -> ::std::vec::Vec { + self.mac.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + pub(in super) 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::<_, _>( + "address", + |m: &RefundMemo| { &m.address }, + |m: &mut RefundMemo| { &mut m.address }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "mac", + |m: &RefundMemo| { &m.mac }, + |m: &mut RefundMemo| { &mut m.mac }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( + "PaymentRequest.RefundMemo", + fields, + oneofs, + ) + } + } + + impl ::protobuf::Message for RefundMemo { + const NAME: &'static str = "RefundMemo"; + + fn is_initialized(&self) -> bool { + if self.address.is_none() { + return false; + } + if self.mac.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.address = ::std::option::Option::Some(is.read_string()?); + }, + 18 => { + self.mac = ::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.address.as_ref() { + my_size += ::protobuf::rt::string_size(1, &v); + } + if let Some(v) = self.mac.as_ref() { + my_size += ::protobuf::rt::bytes_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.address.as_ref() { + os.write_string(1, v)?; + } + if let Some(v) = self.mac.as_ref() { + os.write_bytes(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() -> RefundMemo { + RefundMemo::new() + } + + fn clear(&mut self) { + self.address = ::std::option::Option::None; + self.mac = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static RefundMemo { + static instance: RefundMemo = RefundMemo { + address: ::std::option::Option::None, + mac: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } + } + + impl ::protobuf::MessageFull for RefundMemo { + fn descriptor() -> ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| super::file_descriptor().message_by_package_relative_name("PaymentRequest.RefundMemo").unwrap()).clone() + } + } + + impl ::std::fmt::Display for RefundMemo { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } + } + + impl ::protobuf::reflect::ProtobufValue for RefundMemo { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; + } + + // @@protoc_insertion_point(message:hw.trezor.messages.common.PaymentRequest.CoinPurchaseMemo) + #[derive(PartialEq,Clone,Default,Debug)] + pub struct CoinPurchaseMemo { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.CoinPurchaseMemo.coin_type) + pub coin_type: ::std::option::Option, + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.CoinPurchaseMemo.amount) + pub amount: ::std::option::Option<::std::string::String>, + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.CoinPurchaseMemo.address) + pub address: ::std::option::Option<::std::string::String>, + // @@protoc_insertion_point(field:hw.trezor.messages.common.PaymentRequest.CoinPurchaseMemo.mac) + pub mac: ::std::option::Option<::std::vec::Vec>, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.common.PaymentRequest.CoinPurchaseMemo.special_fields) + pub special_fields: ::protobuf::SpecialFields, + } + + impl<'a> ::std::default::Default for &'a CoinPurchaseMemo { + fn default() -> &'a CoinPurchaseMemo { + ::default_instance() + } + } + + impl CoinPurchaseMemo { + pub fn new() -> CoinPurchaseMemo { + ::std::default::Default::default() + } + + // required uint32 coin_type = 1; + + pub fn coin_type(&self) -> u32 { + self.coin_type.unwrap_or(0) + } + + pub fn clear_coin_type(&mut self) { + self.coin_type = ::std::option::Option::None; + } + + pub fn has_coin_type(&self) -> bool { + self.coin_type.is_some() + } + + // Param is passed by value, moved + pub fn set_coin_type(&mut self, v: u32) { + self.coin_type = ::std::option::Option::Some(v); + } + + // required string amount = 2; + + pub fn amount(&self) -> &str { + match self.amount.as_ref() { + Some(v) => v, + None => "", + } + } + + pub fn clear_amount(&mut self) { + self.amount = ::std::option::Option::None; + } + + pub fn has_amount(&self) -> bool { + self.amount.is_some() + } + + // Param is passed by value, moved + pub fn set_amount(&mut self, v: ::std::string::String) { + self.amount = ::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_amount(&mut self) -> &mut ::std::string::String { + if self.amount.is_none() { + self.amount = ::std::option::Option::Some(::std::string::String::new()); + } + self.amount.as_mut().unwrap() + } + + // Take field + pub fn take_amount(&mut self) -> ::std::string::String { + self.amount.take().unwrap_or_else(|| ::std::string::String::new()) + } + + // required string address = 3; + + pub fn address(&self) -> &str { + match self.address.as_ref() { + Some(v) => v, + None => "", + } + } + + pub fn clear_address(&mut self) { + self.address = ::std::option::Option::None; + } + + pub fn has_address(&self) -> bool { + self.address.is_some() + } + + // Param is passed by value, moved + pub fn set_address(&mut self, v: ::std::string::String) { + self.address = ::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_address(&mut self) -> &mut ::std::string::String { + if self.address.is_none() { + self.address = ::std::option::Option::Some(::std::string::String::new()); + } + self.address.as_mut().unwrap() + } + + // Take field + pub fn take_address(&mut self) -> ::std::string::String { + self.address.take().unwrap_or_else(|| ::std::string::String::new()) + } + + // required bytes mac = 4; + + pub fn mac(&self) -> &[u8] { + match self.mac.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_mac(&mut self) { + self.mac = ::std::option::Option::None; + } + + pub fn has_mac(&self) -> bool { + self.mac.is_some() + } + + // Param is passed by value, moved + pub fn set_mac(&mut self, v: ::std::vec::Vec) { + self.mac = ::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_mac(&mut self) -> &mut ::std::vec::Vec { + if self.mac.is_none() { + self.mac = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.mac.as_mut().unwrap() + } + + // Take field + pub fn take_mac(&mut self) -> ::std::vec::Vec { + self.mac.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + pub(in super) fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(4); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "coin_type", + |m: &CoinPurchaseMemo| { &m.coin_type }, + |m: &mut CoinPurchaseMemo| { &mut m.coin_type }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "amount", + |m: &CoinPurchaseMemo| { &m.amount }, + |m: &mut CoinPurchaseMemo| { &mut m.amount }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "address", + |m: &CoinPurchaseMemo| { &m.address }, + |m: &mut CoinPurchaseMemo| { &mut m.address }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "mac", + |m: &CoinPurchaseMemo| { &m.mac }, + |m: &mut CoinPurchaseMemo| { &mut m.mac }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( + "PaymentRequest.CoinPurchaseMemo", + fields, + oneofs, + ) + } + } + + impl ::protobuf::Message for CoinPurchaseMemo { + const NAME: &'static str = "CoinPurchaseMemo"; + + fn is_initialized(&self) -> bool { + if self.coin_type.is_none() { + return false; + } + if self.amount.is_none() { + return false; + } + if self.address.is_none() { + return false; + } + if self.mac.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.coin_type = ::std::option::Option::Some(is.read_uint32()?); + }, + 18 => { + self.amount = ::std::option::Option::Some(is.read_string()?); + }, + 26 => { + self.address = ::std::option::Option::Some(is.read_string()?); + }, + 34 => { + self.mac = ::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.coin_type { + my_size += ::protobuf::rt::uint32_size(1, v); + } + if let Some(v) = self.amount.as_ref() { + my_size += ::protobuf::rt::string_size(2, &v); + } + if let Some(v) = self.address.as_ref() { + my_size += ::protobuf::rt::string_size(3, &v); + } + if let Some(v) = self.mac.as_ref() { + my_size += ::protobuf::rt::bytes_size(4, &v); + } + my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); + self.special_fields.cached_size().set(my_size as u32); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { + if let Some(v) = self.coin_type { + os.write_uint32(1, v)?; + } + if let Some(v) = self.amount.as_ref() { + os.write_string(2, v)?; + } + if let Some(v) = self.address.as_ref() { + os.write_string(3, v)?; + } + if let Some(v) = self.mac.as_ref() { + os.write_bytes(4, v)?; + } + os.write_unknown_fields(self.special_fields.unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn special_fields(&self) -> &::protobuf::SpecialFields { + &self.special_fields + } + + fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { + &mut self.special_fields + } + + fn new() -> CoinPurchaseMemo { + CoinPurchaseMemo::new() + } + + fn clear(&mut self) { + self.coin_type = ::std::option::Option::None; + self.amount = ::std::option::Option::None; + self.address = ::std::option::Option::None; + self.mac = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static CoinPurchaseMemo { + static instance: CoinPurchaseMemo = CoinPurchaseMemo { + coin_type: ::std::option::Option::None, + amount: ::std::option::Option::None, + address: ::std::option::Option::None, + mac: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } + } + + impl ::protobuf::MessageFull for CoinPurchaseMemo { + fn descriptor() -> ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| super::file_descriptor().message_by_package_relative_name("PaymentRequest.CoinPurchaseMemo").unwrap()).clone() + } + } + + impl ::std::fmt::Display for CoinPurchaseMemo { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } + } + + impl ::protobuf::reflect::ProtobufValue for CoinPurchaseMemo { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; + } +} + 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\ @@ -2528,8 +3734,25 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \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\ + \x18\x06\x20\x02(\x0cR\tpublicKey\"\xd5\x05\n\x0ePaymentRequest\x12\x14\ + \n\x05nonce\x18\x01\x20\x01(\x0cR\x05nonce\x12%\n\x0erecipient_name\x18\ + \x02\x20\x02(\tR\rrecipientName\x12R\n\x05memos\x18\x03\x20\x03(\x0b2<.h\ + w.trezor.messages.common.PaymentRequest.PaymentRequestMemoR\x05memos\x12\ + \x16\n\x06amount\x18\x04\x20\x01(\x04R\x06amount\x12\x1c\n\tsignature\ + \x18\x05\x20\x02(\x0cR\tsignature\x1a\xa6\x02\n\x12PaymentRequestMemo\ + \x12O\n\ttext_memo\x18\x01\x20\x01(\x0b22.hw.trezor.messages.common.Paym\ + entRequest.TextMemoR\x08textMemo\x12U\n\x0brefund_memo\x18\x02\x20\x01(\ + \x0b24.hw.trezor.messages.common.PaymentRequest.RefundMemoR\nrefundMemo\ + \x12h\n\x12coin_purchase_memo\x18\x03\x20\x01(\x0b2:.hw.trezor.messages.\ + common.PaymentRequest.CoinPurchaseMemoR\x10coinPurchaseMemo\x1a\x1e\n\ + \x08TextMemo\x12\x12\n\x04text\x18\x01\x20\x02(\tR\x04text\x1a8\n\nRefun\ + dMemo\x12\x18\n\x07address\x18\x01\x20\x02(\tR\x07address\x12\x10\n\x03m\ + ac\x18\x02\x20\x02(\x0cR\x03mac\x1as\n\x10CoinPurchaseMemo\x12\x1b\n\tco\ + in_type\x18\x01\x20\x02(\rR\x08coinType\x12\x16\n\x06amount\x18\x02\x20\ + \x02(\tR\x06amount\x12\x18\n\x07address\x18\x03\x20\x02(\tR\x07address\ + \x12\x10\n\x03mac\x18\x04\x20\x02(\x0cR\x03mac:\x04\x88\xb2\x19\x01B>\n#\ + com.satoshilabs.trezor.lib.protobufB\x13TrezorMessageCommon\x80\xa6\x1d\ + \x01\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -2548,7 +3771,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { let generated_file_descriptor = generated_file_descriptor_lazy.get(|| { let mut deps = ::std::vec::Vec::with_capacity(1); deps.push(super::options::file_descriptor().clone()); - let mut messages = ::std::vec::Vec::with_capacity(11); + let mut messages = ::std::vec::Vec::with_capacity(16); messages.push(Success::generated_message_descriptor_data()); messages.push(Failure::generated_message_descriptor_data()); messages.push(ButtonRequest::generated_message_descriptor_data()); @@ -2560,6 +3783,11 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(Deprecated_PassphraseStateRequest::generated_message_descriptor_data()); messages.push(Deprecated_PassphraseStateAck::generated_message_descriptor_data()); messages.push(HDNodeType::generated_message_descriptor_data()); + messages.push(PaymentRequest::generated_message_descriptor_data()); + messages.push(payment_request::PaymentRequestMemo::generated_message_descriptor_data()); + messages.push(payment_request::TextMemo::generated_message_descriptor_data()); + messages.push(payment_request::RefundMemo::generated_message_descriptor_data()); + messages.push(payment_request::CoinPurchaseMemo::generated_message_descriptor_data()); let mut enums = ::std::vec::Vec::with_capacity(3); enums.push(failure::FailureType::generated_enum_descriptor_data()); enums.push(button_request::ButtonRequestType::generated_enum_descriptor_data()); diff --git a/tests/device_tests/bitcoin/payment_req.py b/tests/device_tests/bitcoin/payment_req.py index 73d98859ba..746937ae56 100644 --- a/tests/device_tests/bitcoin/payment_req.py +++ b/tests/device_tests/bitcoin/payment_req.py @@ -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,