feat(common,core,python,tests): support signing Stellar Soroban authorization entries.
What changed, and why it matters
This commit adds a new Trezor feature that lets users sign Stellar Soroban smart-contract authorization entries. The device now supports a new message type where it derives the user's Stellar address, shows confirmation screens, and produces an Ed25519 signature over a protocol-defined authorization payload. The change is a feature addition rather than a bug fix, and the signing flow includes user confirmation steps.
Review the new signing handler and confirmation screens for correctness against Stellar Protocol 27 / CAP-71 XDR serialization, ensure the preimage serialization exactly matches the network specification, and run targeted tests for edge cases such as deeply nested invocations, malformed addresses, and mismatched signing/on-behalf-of addresses.
Security signals we found
New signing surface added for Stellar Soroban authorization entries
User confirmation flow implemented before signing
Authorization payload binds signature to network, nonce, expiration ledger, address, and invocation tree
Only ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS is accepted; other envelope types are rejected
On-behalf-of signing path requires explicit user confirmation when authorizing address differs from device account
Legacy firmware explicitly excludes the new message types
Evidence from the diff
The patch introduces StellarSignSorobanAuthorization / StellarSorobanAuthorizationSignature protobuf messages and a new core handler apps/stellar/sign_soroban_authorization.py. The handler validates the BIP-32 path, derives the Ed25519 key, serializes the Protocol-27 ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS preimage (network ID, nonce, signature_expiration_ledger, authorizing address, invocation tree), hashes it with SHA-256, and signs with Ed25519. It also adds UI confirmation screens for the signing address, on-behalf-of address when different, the authorized invocation tree, and the expiration ledger. The Python and Rust clients are updated accordingly, and legacy firmware skips these new messages.
Changed components
core/src/apps/stellar/sign_soroban_authorization.pycore/src/apps/stellar/layout.pycore/src/apps/stellar/operations/layout.pycore/src/apps/stellar/operations/serialize.pycore/src/apps/workflow_handlers.pycommon/protob/messages-stellar.protocommon/protob/messages.protopython/src/trezorlib/stellar.pypython/src/trezorlib/cli/stellar.pyrust/trezor-client generated protobuf bindingsInspect captured patch +1641 / −303
diff --git a/common/protob/messages-stellar.proto b/common/protob/messages-stellar.proto
index 8d68748c..cfa782cc 100644
--- a/common/protob/messages-stellar.proto
+++ b/common/protob/messages-stellar.proto
@@ -478,6 +478,53 @@ message StellarInvokeHostFunctionOp {
repeated StellarSorobanAuthorizationEntry auth = 3;
}
+/**
+ * Request: ask device to sign a Soroban authorization payload
+ * The device signs the HashIDPreimage variant selected by envelope_type.
+ * Currently only ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS is supported
+ * (Protocol 27, CAP-71): the payload signed for SOROBAN_CREDENTIALS_ADDRESS_V2
+ * credentials, which binds the signature to the authorizing address.
+ * @start
+ * @next StellarSorobanAuthorizationSignature
+ * @next Failure
+ */
+message StellarSignSorobanAuthorization {
+ repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index'
+ // passphrase of the network the authorization is valid on; the preimage's
+ // networkID is derived from it
+ required string network_passphrase = 2;
+ required StellarSorobanAuthorizationEnvelopeType envelope_type = 3; // the HashIDPreimage variant to sign
+ optional StellarSorobanAuthorizationWithAddress soroban_authorization_with_address =
+ 4; // union arm for ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS
+
+ // https://github.com/stellar/stellar-xdr/blob/v27.0/Stellar-transaction.x#L753
+ message StellarSorobanAuthorizationWithAddress {
+ required sint64 nonce = 1; // replay-protection nonce of the credentials
+ required uint32 signature_expiration_ledger = 2; // ledger sequence until which the authorization remains valid
+ // The address whose credentials are being provided: either the device
+ // account itself, or e.g. a contract account of which the device is a
+ // signer, or, for a CAP-71 delegate signature, the entry's top-level
+ // address.
+ required string address = 3;
+ required StellarSorobanAuthorizedInvocation invocation = 4; // the authorized invocation tree
+ }
+
+ // Soroban authorization cases of the EnvelopeType XDR enum, see
+ // https://github.com/stellar/stellar-xdr/blob/v27.0/Stellar-ledger-entries.x#L656
+ enum StellarSorobanAuthorizationEnvelopeType {
+ ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS = 10;
+ }
+}
+
+/**
+ * Response: signature for a Soroban authorization entry
+ * @end
+ */
+message StellarSorobanAuthorizationSignature {
+ required bytes public_key = 1; // public key for the private key used to sign the authorization
+ required bytes signature = 2; // ed25519 signature of the authorization payload
+}
+
/**
* Response: device is ready for client to send StellarTxExt
* @next StellarTxExt
diff --git a/common/protob/messages.proto b/common/protob/messages.proto
index fa813748..50028dc0 100644
--- a/common/protob/messages.proto
+++ b/common/protob/messages.proto
@@ -245,6 +245,8 @@ enum MessageType {
reserved 237; // omitted: StellarRestoreFootprint
MessageType_StellarTxExtRequest = 238 [(wire_out) = true];
MessageType_StellarTxExt = 239 [(wire_in) = true];
+ MessageType_StellarSignSorobanAuthorization = 240 [(wire_in) = true];
+ MessageType_StellarSorobanAuthorizationSignature = 241 [(wire_out) = true];
// Cardano
// dropped Sign/VerifyMessage ids 300-302
diff --git a/core/.changelog.d/7312.added b/core/.changelog.d/7312.added
new file mode 100644
index 00000000..f5b7e272
--- /dev/null
+++ b/core/.changelog.d/7312.added
@@ -0,0 +1 @@
+Stellar: Support signing Soroban authorization entries.
diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h
index 600d07dd..6c8e3d71 100644
--- a/core/embed/rust/librust_qstr.h
+++ b/core/embed/rust/librust_qstr.h
@@ -1529,6 +1529,7 @@ static void _librust_qstrs(void) {
MP_QSTR_stellar__new_passive_offer;
MP_QSTR_stellar__no_memo_set;
MP_QSTR_stellar__no_restriction;
+ MP_QSTR_stellar__on_behalf_of;
MP_QSTR_stellar__path_pay;
MP_QSTR_stellar__path_pay_at_least;
MP_QSTR_stellar__pay;
@@ -1541,6 +1542,7 @@ static void _librust_qstrs(void) {
MP_QSTR_stellar__set_data;
MP_QSTR_stellar__set_flags;
MP_QSTR_stellar__set_sequence_to_template;
+ MP_QSTR_stellar__sign_authorization;
MP_QSTR_stellar__sign_tx_count_template;
MP_QSTR_stellar__sign_tx_fee_template;
MP_QSTR_stellar__sign_with;
@@ -1553,6 +1555,7 @@ static void _librust_qstrs(void) {
MP_QSTR_stellar__update;
MP_QSTR_stellar__valid_from;
MP_QSTR_stellar__valid_to;
+ MP_QSTR_stellar__valid_until_ledger;
MP_QSTR_stellar__value_sha256;
MP_QSTR_stellar__wanna_clean_value_key_template;
MP_QSTR_tezos__baker_address;
diff --git a/core/embed/upymod/qstrdefsport.h b/core/embed/upymod/qstrdefsport.h
index dc6d83ea..2d23ea05 100644
--- a/core/embed/upymod/qstrdefsport.h
+++ b/core/embed/upymod/qstrdefsport.h
@@ -494,6 +494,7 @@ Q(StellarHostFunctionType)
Q(StellarMemoType)
Q(StellarSCValType)
Q(StellarSignerType)
+Q(StellarSorobanAuthorizationEnvelopeType)
Q(StellarSorobanAuthorizedFunctionType)
Q(StellarSorobanCredentialsType)
Q(TezosBallotType)
@@ -662,6 +663,7 @@ Q(apps.stellar.layout)
Q(apps.stellar.operations)
Q(apps.stellar.operations.layout)
Q(apps.stellar.operations.serialize)
+Q(apps.stellar.sign_soroban_authorization)
Q(apps.stellar.sign_tx)
Q(apps.stellar.writers)
Q(apps.tezos)
@@ -772,6 +774,7 @@ Q(serialize)
Q(serialize_messages)
Q(sign_auth_eip7702)
Q(sign_message)
+Q(sign_soroban_authorization)
Q(sign_tx)
Q(sign_tx_eip1559)
Q(sign_typed_data)
@@ -820,6 +823,7 @@ Q(trezor.enums.StellarHostFunctionType)
Q(trezor.enums.StellarMemoType)
Q(trezor.enums.StellarSCValType)
Q(trezor.enums.StellarSignerType)
+Q(trezor.enums.StellarSorobanAuthorizationEnvelopeType)
Q(trezor.enums.StellarSorobanAuthorizedFunctionType)
Q(trezor.enums.StellarSorobanCredentialsType)
Q(trezor.enums.TezosBallotType)
diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi
index 0786c1b2..3f220b6d 100644
--- a/core/mocks/trezortranslate_keys.pyi
+++ b/core/mocks/trezortranslate_keys.pyi
@@ -960,6 +960,7 @@ class TR:
stellar__new_passive_offer: str = "New Passive Offer"
stellar__no_memo_set: str = "No memo set!"
stellar__no_restriction: str = "[no restriction]"
+ stellar__on_behalf_of: str = "On behalf of"
stellar__path_pay: str = "Path Pay"
stellar__path_pay_at_least: str = "Path Pay at least"
stellar__pay: str = "Pay"
@@ -972,6 +973,7 @@ class TR:
stellar__set_data: str = "Set data"
stellar__set_flags: str = "Set flags"
stellar__set_sequence_to_template: str = "Set sequence to {0}?"
+ stellar__sign_authorization: str = "Sign authorization"
stellar__sign_tx_count_template: str = "Sign this transaction made up of {0}"
stellar__sign_tx_fee_template: str = "and pay {0}\nfor fee?"
stellar__sign_with: str = "Sign with"
@@ -984,6 +986,7 @@ class TR:
stellar__update: str = "Update"
stellar__valid_from: str = "Valid from (UTC)"
stellar__valid_to: str = "Valid to (UTC)"
+ stellar__valid_until_ledger: str = "Valid until ledger"
stellar__value_sha256: str = "Value (SHA-256)"
stellar__wanna_clean_value_key_template: str = "Do you want to clear value key {0}?"
storage_msg__processing: str = "Processing"
diff --git a/core/src/apps/stellar/layout.py b/core/src/apps/stellar/layout.py
index 9d6fa0bb..3144f085 100644
--- a/core/src/apps/stellar/layout.py
+++ b/core/src/apps/stellar/layout.py
@@ -168,6 +168,71 @@ async def require_confirm_final(
)
+async def require_confirm_auth_signing_address(
+ address: str, address_n: Bip32Path
+) -> None:
+ """Confirm the device account whose key signs the Soroban authorization.
+
+ Always the first screen of the flow, like the signing address screen of
+ Ethereum's message signing flows.
+ """
+ from apps.common import paths
+
+ from . import PATTERN, SLIP44_ID
+
+ account_name = paths.get_account_name("Stellar", address_n, PATTERN, SLIP44_ID)
+ account_path = paths.address_n_to_str(address_n)
+
+ if account_name is None:
+ raise wire.DataError("Stellar: Invalid account name")
+
+ info_items: list[StrPropertyType] = [
+ (TR.words__account, account_name, None),
+ (TR.address_details__derivation_path, account_path, None),
+ ]
+
+ await layouts.confirm_address(
+ title=TR.sign_message__confirm_address,
+ address=address,
+ br_name="confirm_auth_signing_address",
+ br_code=ButtonRequestType.ConfirmOutput,
+ verb=TR.buttons__continue,
+ info_items=info_items,
+ info_title=TR.address_details__account_info,
+ )
+
+
+async def require_confirm_auth_on_behalf_of(address: str) -> None:
+ """Confirm the address whose Soroban authorization credentials are signed.
+
+ Only shown when it differs from the signing address, i.e. when the device
+ account signs on behalf of another party. e.g. a contract account of
+ which the device account is a signer.
+ """
+ await layouts.confirm_address(
+ title=TR.words__authorization,
+ address=address,
+ description=TR.stellar__on_behalf_of,
+ br_name="confirm_auth_on_behalf_of",
+ br_code=ButtonRequestType.ConfirmOutput,
+ verb=TR.buttons__continue,
+ )
+
+
+async def require_confirm_signature_expiration_ledger(
+ signature_expiration_ledger: int,
+) -> None:
+ await layouts.confirm_value(
+ title=TR.stellar__sign_authorization,
+ value=str(signature_expiration_ledger),
+ description=TR.stellar__valid_until_ledger,
+ br_name="confirm_soroban_auth",
+ br_code=ButtonRequestType.SignTx,
+ hold=True,
+ is_data=False,
+ )
+
+
def format_asset(asset: StellarAsset | None) -> str:
from trezor.enums import StellarAssetType
from trezor.wire import DataError
diff --git a/core/src/apps/stellar/operations/layout.py b/core/src/apps/stellar/operations/layout.py
index fe92533a..86ad74a6 100644
--- a/core/src/apps/stellar/operations/layout.py
+++ b/core/src/apps/stellar/operations/layout.py
@@ -518,10 +518,11 @@ async def confirm_invoke_host_function_op(op: StellarInvokeHostFunctionOp) -> No
# produces over the transaction envelope. Approving that signature approves
# these entries, so we must always show them for confirmation.
#
- # - ADDRESS_V2 credentials are authorized by a separate signature over the
- # ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS preimage, which this device does not
- # produce. They are hidden behind an opt-in and only shown for information;
- # the user does not need to review them to sign safely.
+ # - ADDRESS* credentials are authorized by a separate signature over the
+ # ENVELOPE_TYPE_SOROBAN_AUTHORIZATION* preimage, which must already
+ # be present in the entry at the time of signing the transaction.
+ # Entries of this type are therefore hidden behind an opt-in and only
+ # shown for information; the user does not need to review them to sign safely.
shown = 0
non_src_entries = []
@@ -574,6 +575,18 @@ async def _confirm_auth_entry(
await _confirm_invocation(auth.root_invocation, f"#{position}", is_root=is_root)
+async def confirm_authorized_invocation(
+ invocation: StellarSorobanAuthorizedInvocation,
+) -> None:
+ """Confirm a standalone authorized invocation tree (auth entry signing).
+
+ Unlike in a transaction, there is always exactly one entry being signed, so
+ its root label is empty; sub-invocations are numbered relative to it
+ (".1", ".1.2", ...), the same paths they would have inside a transaction.
+ """
+ await _confirm_invocation(invocation, "")
+
+
async def _confirm_invocation(
invocation: StellarSorobanAuthorizedInvocation, position: str, is_root: bool = False
) -> None:
@@ -581,8 +594,10 @@ async def _confirm_invocation(
The whole authorization tree is shown by default (it is security-critical and
can differ from the host function being invoked). `position` is the root
- label plus the dot-delimited path in the auth tree (e.g. "#2", "#2.1",
- "#2.1.1"), so every label is composed as root label + path from the root.
+ label plus the dot-delimited path in the auth tree (e.g. "#2", "#2.1" in a
+ transaction), or empty for the unlabeled root of a standalone authorization
+ entry (whose children are then ".1", ".1.2", ...), so a given entry's
+ children carry the same paths in both flows.
"""
from trezor.enums import StellarSorobanAuthorizedFunctionType
@@ -595,7 +610,10 @@ async def _confirm_invocation(
if func.contract_fn is None:
raise DataError("Stellar: missing contract_fn")
- title = f"{TR.words__authorization} {position}"
+ if position:
+ title = f"{TR.words__authorization} {position}"
+ else:
+ title = TR.words__authorization
if not is_root:
await _confirm_invoke_contract_args(
diff --git a/core/src/apps/stellar/operations/serialize.py b/core/src/apps/stellar/operations/serialize.py
index 9b3ec81a..4dc91272 100644
--- a/core/src/apps/stellar/operations/serialize.py
+++ b/core/src/apps/stellar/operations/serialize.py
@@ -281,12 +281,12 @@ def _write_host_function(w: Writer, msg: StellarHostFunction) -> None:
def write_invoke_contract_args(w: Writer, msg: StellarInvokeContractArgs) -> None:
- _write_sc_address(w, msg.contract_address)
+ write_sc_address(w, msg.contract_address)
_write_sc_symbol(w, msg.function_name)
_write_vec(w, msg.args, _write_sc_val)
-def _write_sc_address(w: Writer, addr: str) -> None:
+def write_sc_address(w: Writer, addr: str) -> None:
from .. import helpers
version, data = helpers.decode_strkey(addr)
@@ -406,7 +406,7 @@ def _write_sc_val(w: Writer, msg: StellarSCVal) -> None:
elif msg.type == StellarSCValType.SCV_ADDRESS:
if msg.address is None:
raise DataError("Stellar: missing address value")
- _write_sc_address(w, msg.address)
+ write_sc_address(w, msg.address)
else:
raise ProcessError("Stellar: unsupported SCVal type")
@@ -444,7 +444,7 @@ def _write_soroban_authorization_entry(
w: Writer, msg: StellarSorobanAuthorizationEntry
) -> None:
_write_soroban_credentials(w, msg.credentials)
- _write_soroban_authorized_invocation(w, msg.root_invocation)
+ write_soroban_authorized_invocation(w, msg.root_invocation)
def _write_soroban_credentials(w: Writer, msg: StellarSorobanCredentials) -> None:
@@ -464,17 +464,17 @@ def _write_soroban_credentials(w: Writer, msg: StellarSorobanCredentials) -> Non
def _write_soroban_address_credentials(
w: Writer, msg: StellarSorobanAddressCredentials
) -> None:
- _write_sc_address(w, msg.address)
+ write_sc_address(w, msg.address)
write_int64(w, msg.nonce)
write_uint32(w, msg.signature_expiration_ledger)
_write_sc_val(w, msg.signature)
-def _write_soroban_authorized_invocation(
+def write_soroban_authorized_invocation(
w: Writer, msg: StellarSorobanAuthorizedInvocation
) -> None:
_write_soroban_authorized_function(w, msg.function)
- _write_vec(w, msg.sub_invocations, _write_soroban_authorized_invocation)
+ _write_vec(w, msg.sub_invocations, write_soroban_authorized_invocation)
def _write_soroban_authorized_function(
diff --git a/core/src/apps/stellar/sign_soroban_authorization.py b/core/src/apps/stellar/sign_soroban_authorization.py
new file mode 100644
index 00000000..22bbeefd
--- /dev/null
+++ b/core/src/apps/stellar/sign_soroban_authorization.py
@@ -0,0 +1,79 @@
+from typing import TYPE_CHECKING
+
+from apps.common.keychain import with_slip44_keychain
+
+from . import CURVE, PATTERN, SLIP44_ID
+
+if TYPE_CHECKING:
+ from trezor.messages import (
+ StellarSignSorobanAuthorization,
+ StellarSorobanAuthorizationSignature,
+ )
+
+ from apps.common.keychain import Keychain as Slip21Keychain
+
+
+@with_slip44_keychain(*[PATTERN], slip44_id=SLIP44_ID, curve=CURVE)
+async def sign_soroban_authorization(
+ msg: StellarSignSorobanAuthorization, keychain: Slip21Keychain
+) -> StellarSorobanAuthorizationSignature:
+ from trezor.crypto.curve import ed25519
+ from trezor.crypto.hashlib import sha256
+ from trezor.enums import StellarSorobanAuthorizationEnvelopeType
+ from trezor.messages import StellarSorobanAuthorizationSignature
+ from trezor.wire import DataError, ProcessError
+
+ from apps.common import paths, seed
+
+ from . import helpers, layout, writers
+ from .operations.layout import confirm_authorized_invocation
+ from .operations.serialize import (
+ write_sc_address,
+ write_soroban_authorized_invocation,
+ )
+
+ # Only the address-bound preimage variant introduced in Protocol 27 is supported
+ if (
+ msg.envelope_type
+ != StellarSorobanAuthorizationEnvelopeType.ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS
+ ):
+ raise ProcessError("Stellar: unsupported authorization envelope type")
+ auth = msg.soroban_authorization_with_address
+ if auth is None:
+ raise DataError("Stellar: missing soroban_authorization_with_address")
+
+ await paths.validate_path(keychain, msg.address_n)
+
+ node = keychain.derive(msg.address_n)
+ pubkey = seed.remove_ed25519_prefix(node.public_key())
+ signing_address = helpers.address_from_public_key(pubkey)
+
+ # Serialize the ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS preimage
+ # (Protocol 27, CAP-46-11/CAP-71). It binds the signature to the
+ # authorizing address.
+ w = bytearray()
+ writers.write_uint32(w, msg.envelope_type)
+ writers.write_bytes_fixed(
+ w, sha256(msg.network_passphrase.encode()).digest(), 32 # network id
+ )
+ writers.write_int64(w, auth.nonce)
+ writers.write_uint32(w, auth.signature_expiration_ledger)
+ write_sc_address(w, auth.address)
+ write_soroban_authorized_invocation(w, auth.invocation)
+
+ await layout.require_confirm_auth_signing_address(signing_address, msg.address_n)
+
+ if auth.address != signing_address:
+ # The credentials belong to another party, e.g. a contract account of
+ # which the device account is a signer.
+ await layout.require_confirm_auth_on_behalf_of(auth.address)
+
+ await confirm_authorized_invocation(auth.invocation)
+ await layout.require_confirm_signature_expiration_ledger(
+ auth.signature_expiration_ledger
+ )
+
+ payload = sha256(w).digest()
+ signature = ed25519.sign(node.private_key(), payload)
+
+ return StellarSorobanAuthorizationSignature(public_key=pubkey, signature=signature)
diff --git a/core/src/apps/workflow_handlers.py b/core/src/apps/workflow_handlers.py
index 9d5ca859..e72e403d 100644
--- a/core/src/apps/workflow_handlers.py
+++ b/core/src/apps/workflow_handlers.py
@@ -197,6 +197,8 @@ def _find_message_handler_module(msg_type: int) -> str:
return "apps.stellar.get_address"
if msg_type == MessageType.StellarSignTx:
return "apps.stellar.sign_tx"
+ if msg_type == MessageType.StellarSignSorobanAuthorization:
+ return "apps.stellar.sign_soroban_authorization"
# ripple
if msg_type == MessageType.RippleGetAddress:
diff --git a/core/src/trezor/enums/MessageType.py b/core/src/trezor/enums/MessageType.py
index aad2a8f9..26a0a3f7 100644
--- a/core/src/trezor/enums/MessageType.py
+++ b/core/src/trezor/enums/MessageType.py
@@ -194,6 +194,8 @@ if not utils.BITCOIN_ONLY:
StellarInvokeHostFunctionOp = 235
StellarTxExtRequest = 238
StellarTxExt = 239
+ StellarSignSorobanAuthorization = 240
+ StellarSorobanAuthorizationSignature = 241
CardanoGetPublicKey = 305
CardanoPublicKey = 306
CardanoGetAddress = 307
diff --git a/core/src/trezor/enums/StellarSorobanAuthorizationEnvelopeType.py b/core/src/trezor/enums/StellarSorobanAuthorizationEnvelopeType.py
new file mode 100644
index 00000000..f0c543ff
--- /dev/null
+++ b/core/src/trezor/enums/StellarSorobanAuthorizationEnvelopeType.py
@@ -0,0 +1,5 @@
+# Automatically generated by pb2py
+# fmt: off
+# isort:skip_file
+
+ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS = 10
diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py
index 689d50b1..9fed2c1d 100644
--- a/core/src/trezor/enums/__init__.py
+++ b/core/src/trezor/enums/__init__.py
@@ -416,6 +416,9 @@ if TYPE_CHECKING:
SOROBAN_CREDENTIALS_SOURCE_ACCOUNT = 0
SOROBAN_CREDENTIALS_ADDRESS_V2 = 2
+ class StellarSorobanAuthorizationEnvelopeType(IntEnum):
+ ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS = 10
+
class TezosContractType(IntEnum):
Implicit = 0
Originated = 1
@@ -637,6 +640,8 @@ if TYPE_CHECKING:
StellarInvokeHostFunctionOp = 235
StellarTxExtRequest = 238
StellarTxExt = 239
+ StellarSignSorobanAuthorization = 240
+ StellarSorobanAuthorizationSignature = 241
CardanoGetPublicKey = 305
CardanoPublicKey = 306
CardanoGetAddress = 307
diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py
index 543ded65..6a6dd8ba 100644
--- a/core/src/trezor/messages.py
+++ b/core/src/trezor/messages.py
@@ -72,6 +72,7 @@ if TYPE_CHECKING:
from trezor.enums import StellarMemoType # noqa: F401
from trezor.enums import StellarSCValType # noqa: F401
from trezor.enums import StellarSignerType # noqa: F401
+ from trezor.enums import StellarSorobanAuthorizationEnvelopeType # noqa: F401
from trezor.enums import StellarSorobanAuthorizedFunctionType # noqa: F401
from trezor.enums import StellarSorobanCredentialsType # noqa: F401
from trezor.enums import TezosBallotType # noqa: F401
@@ -6786,6 +6787,42 @@ if TYPE_CHECKING:
def is_type_of(cls, msg: Any) -> TypeGuard["StellarInvokeHostFunctionOp"]:
return isinstance(msg, cls)
+ class StellarSignSorobanAuthorization(protobuf.MessageType):
+ address_n: "list[int]"
+ network_passphrase: "str"
+ envelope_type: "StellarSorobanAuthorizationEnvelopeType"
+ soroban_authorization_with_address: "StellarSorobanAuthorizationWithAddress | None"
+
+ def __init__(
+ self,
+ *,
+ network_passphrase: "str",
+ envelope_type: "StellarSorobanAuthorizationEnvelopeType",
+ address_n: "list[int] | None" = None,
+ soroban_authorization_with_address: "StellarSorobanAuthorizationWithAddress | None" = None,
+ ) -> None:
+ pass
+
+ @classmethod
+ def is_type_of(cls, msg: Any) -> TypeGuard["StellarSignSorobanAuthorization"]:
+ return isinstance(msg, cls)
+
+ class StellarSorobanAuthorizationSignature(protobuf.MessageType):
+ public_key: "AnyBytes"
+ signature: "AnyBytes"
+
+ def __init__(
+ self,
+ *,
+ public_key: "AnyBytes",
+ signature: "AnyBytes",
+ ) -> None:
+ pass
+
+ @classmethod
+ def is_type_of(cls, msg: Any) -> TypeGuard["StellarSorobanAuthorizationSignature"]:
+ return isinstance(msg, cls)
+
class StellarTxExtRequest(protobuf.MessageType):
@classmethod
@@ -6896,6 +6933,26 @@ if TYPE_CHECKING:
def is_type_of(cls, msg: Any) -> TypeGuard["StellarSCValMapEntry"]:
return isinstance(msg, cls)
+ class StellarSorobanAuthorizationWithAddress(protobuf.MessageType):
+ nonce: "int"
+ signature_expiration_ledger: "int"
+ address: "str"
+ invocation: "StellarSorobanAuthorizedInvocation"
+
+ def __init__(
+ self,
+ *,
+ nonce: "int",
+ signature_expiration_ledger: "int",
+ address: "str",
+ invocation: "StellarSorobanAuthorizedInvocation",
+ ) -> None:
+ pass
+
+ @classmethod
+ def is_type_of(cls, msg: Any) -> TypeGuard["StellarSorobanAuthorizationWithAddress"]:
+ return isinstance(msg, cls)
+
class TelemetryGet(protobuf.MessageType):
@classmethod
diff --git a/core/translations/en.json b/core/translations/en.json
index dba79890..603ff949 100644
--- a/core/translations/en.json
+++ b/core/translations/en.json
@@ -2847,6 +2847,7 @@
"stellar__new_passive_offer": "New Passive Offer",
"stellar__no_memo_set": "No memo set!",
"stellar__no_restriction": "[no restriction]",
+ "stellar__on_behalf_of": "On behalf of",
"stellar__path_pay": "Path Pay",
"stellar__path_pay_at_least": "Path Pay at least",
"stellar__pay": "Pay",
@@ -2859,6 +2860,7 @@
"stellar__set_data": "Set data",
"stellar__set_flags": "Set flags",
"stellar__set_sequence_to_template": "Set sequence to {0}?",
+ "stellar__sign_authorization": "Sign authorization",
"stellar__sign_tx_count_template": "Sign this transaction made up of {0}",
"stellar__sign_tx_fee_template": "and pay {0}\nfor fee?",
"stellar__sign_with": "Sign with",
@@ -2871,6 +2873,7 @@
"stellar__update": "Update",
"stellar__valid_from": "Valid from (UTC)",
"stellar__valid_to": "Valid to (UTC)",
+ "stellar__valid_until_ledger": "Valid until ledger",
"stellar__value_sha256": "Value (SHA-256)",
"stellar__wanna_clean_value_key_template": "Do you want to clear value key {0}?",
"storage_msg__processing": {
diff --git a/core/translations/order.json b/core/translations/order.json
index 42de3c6a..2f2d5c6b 100644
--- a/core/translations/order.json
+++ b/core/translations/order.json
@@ -1262,5 +1262,8 @@
"1260": "words__comm_continue",
"1261": "words__function",
"1262": "ethereum__skip_to_hash",
- "1263": "ethereum__view_data_and_hash"
+ "1263": "ethereum__view_data_and_hash",
+ "1264": "stellar__on_behalf_of",
+ "1265": "stellar__sign_authorization",
+ "1266": "stellar__valid_until_ledger"
}
diff --git a/legacy/firmware/protob/Makefile b/legacy/firmware/protob/Makefile
index 8eb7f8cc..ac792e68 100644
--- a/legacy/firmware/protob/Makefile
+++ b/legacy/firmware/protob/Makefile
@@ -17,7 +17,8 @@ SKIPPED_MESSAGES := Cardano DebugMonero Eos Monero Ontology Ripple SdProtect Tez
EthereumSignTypedData EthereumTypedDataStructRequest EthereumTypedDataStructAck \
EthereumTypedDataValueRequest EthereumTypedDataValueAck ShowDeviceTutorial \
UnlockBootloader AuthenticateDevice AuthenticityProof GetAuthenticityProofChunk \
- Solana StellarClaimClaimableBalanceOp StellarInvokeHostFunctionOp StellarTxExt SetBrightness \
+ Solana StellarClaimClaimableBalanceOp StellarInvokeHostFunctionOp StellarTxExt \
+ StellarSignSorobanAuthorization StellarSorobanAuthorizationSignature SetBrightness \
ChangeLanguage DataChunkRequest DataChunkAck Thp \
BenchmarkListNames BenchmarkRun BenchmarkNames BenchmarkResult \
NostrGetPubkey NostrPubkey NostrSignEvent NostrEventSignature \
diff --git a/python/.changelog.d/7312.added b/python/.changelog.d/7312.added
new file mode 100644
index 00000000..7f5e44fa
--- /dev/null
+++ b/python/.changelog.d/7312.added
@@ -0,0 +1 @@
+Stellar: Support signing Soroban authorization entries (`stellar.sign_soroban_authorization`, `stellar.from_authorization_entry` and `trezorctl stellar sign-soroban-authorization`).
diff --git a/python/src/trezorlib/cli/stellar.py b/python/src/trezorlib/cli/stellar.py
index 87ccffd5..4b54ba5b 100644
--- a/python/src/trezorlib/cli/stellar.py
+++ b/python/src/trezorlib/cli/stellar.py
@@ -14,6 +14,8 @@
# You should have received a copy of the License along with this library.
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
+from __future__ import annotations
+
import base64
import sys
from typing import TYPE_CHECKING
@@ -31,6 +33,7 @@ try:
FeeBumpTransactionEnvelope,
parse_transaction_envelope_from_xdr,
)
+ from stellar_sdk import xdr as stellar_xdr
except ImportError:
pass
@@ -114,3 +117,87 @@ def sign_transaction(
)
return base64.b64encode(resp.signature)
+
+
+@cli.command()
+@click.option(
+ "-n",
+ "--address",
+ required=False,
+ help=PATH_HELP,
+ default=stellar.DEFAULT_BIP32_PATH,
+)
+@click.option(
+ "-p",
+ "--network-passphrase",
+ default=stellar.DEFAULT_NETWORK_PASSPHRASE,
+ required=False,
+ help="Network passphrase (blank for public network).",
+)
+@click.option(
+ "-l",
+ "--valid-until-ledger",
+ type=int,
+ default=None,
+ help="Override the entry's signature_expiration_ledger "
+ "(the last ledger sequence at which the authorization is valid).",
+)
+@click.argument("b64entry")
+@with_session
+def sign_soroban_authorization(
+ session: "Session",
+ b64entry: str,
+ address: str,
+ network_passphrase: str,
+ valid_until_ledger: int | None,
+) -> bytes:
+ """Sign a base64-encoded Soroban authorization entry.
+
+ Takes an unsigned SorobanAuthorizationEntry XDR with
+ SOROBAN_CREDENTIALS_ADDRESS_V2 credentials (Protocol 27) and returns the
+ base64-encoded signature of its authorization payload. The signed payload
+ commits to the entry's signature_expiration_ledger; it must already be
+ set to the intended value, or overridden with --valid-until-ledger.
+ """
+ if not stellar.HAVE_STELLAR_SDK:
+ click.echo("Stellar requirements not installed.")
+ click.echo("Please run:")
+ click.echo()
+ click.echo(" pip install stellar-sdk")
+ sys.exit(1)
+ if not stellar.HAVE_STELLAR_SDK_PROTOCOL_27:
+ click.echo("Signing authorization entries requires Protocol 27 support.")
+ click.echo("Please run:")
+ click.echo()
+ click.echo(" pip install 'stellar-sdk>=15'")
+ sys.exit(1)
+ try:
+ entry_xdr = stellar_xdr.SorobanAuthorizationEntry.from_xdr(b64entry)
+ except Exception as e:
+ click.echo(
+ f"Failed to parse XDR: {e}\n"
+ "Make sure to pass a valid SorobanAuthorizationEntry object.\n"
+ )
+ sys.exit(1)
+
+ if (
+ entry_xdr.credentials.type
+ != stellar_xdr.SorobanCredentialsType.SOROBAN_CREDENTIALS_ADDRESS_V2
+ ):
+ click.echo(
+ f"Unsupported SorobanCredentials type: {entry_xdr.credentials.type}."
+ )
+ click.echo("Only SOROBAN_CREDENTIALS_ADDRESS_V2 entries can be signed.")
+ sys.exit(1)
+
+ address_n = tools.parse_path(address)
+ authorization = stellar.from_authorization_entry(entry_xdr)
+ if valid_until_ledger is not None:
+ authorization.signature_expiration_ledger = valid_until_ledger
+ resp = stellar.sign_soroban_authorization(
+ session,
+ address_n,
+ network_passphrase,
+ authorization,
+ )
+ return base64.b64encode(resp.signature)
diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py
index 4e6c743d..84ea040d 100644
--- a/python/src/trezorlib/messages.py
+++ b/python/src/trezorlib/messages.py
@@ -474,6 +474,10 @@ class StellarSorobanCredentialsType(IntEnum):
SOROBAN_CREDENTIALS_ADDRESS_V2 = 2
+class StellarSorobanAuthorizationEnvelopeType(IntEnum):
+ ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS = 10
+
+
class TezosContractType(IntEnum):
Implicit = 0
Originated = 1
@@ -701,6 +705,8 @@ class MessageType(IntEnum):
StellarInvokeHostFunctionOp = 235
StellarTxExtRequest = 238
StellarTxExt = 239
+ StellarSignSorobanAuthorization = 240
+ StellarSorobanAuthorizationSignature = 241
CardanoGetPublicKey = 305
CardanoPublicKey = 306
CardanoGetAddress = 307
@@ -8699,6 +8705,46 @@ class StellarInvokeHostFunctionOp(protobuf.MessageType):
self.source_account = source_account
+class StellarSignSorobanAuthorization(protobuf.MessageType):
+ MESSAGE_WIRE_TYPE = 240
+ FIELDS = {
+ 1: protobuf.Field("address_n", "uint32", repeated=True, required=False, default=None),
+ 2: protobuf.Field("network_passphrase", "string", repeated=False, required=True),
+ 3: protobuf.Field("envelope_type", "StellarSorobanAuthorizationEnvelopeType", repeated=False, required=True),
+ 4: protobuf.Field("soroban_authorization_with_address", "StellarSorobanAuthorizationWithAddress", repeated=False, required=False, default=None),
+ }
+
+ def __init__(
+ self,
+ *,
+ network_passphrase: "str",
+ envelope_type: "StellarSorobanAuthorizationEnvelopeType",
+ address_n: Optional[Sequence["int"]] = None,
+ soroban_authorization_with_address: Optional["StellarSorobanAuthorizationWithAddress"] = None,
+ ) -> None:
+ self.address_n: Sequence["int"] = address_n if address_n is not None else []
+ self.network_passphrase = network_passphrase
+ self.envelope_type = envelope_type
+ self.soroban_authorization_with_address = soroban_authorization_with_address
+
+
+class StellarSorobanAuthorizationSignature(protobuf.MessageType):
+ MESSAGE_WIRE_TYPE = 241
+ FIELDS = {
+ 1: protobuf.Field("public_key", "bytes", repeated=False, required=True),
+ 2: protobuf.Field("signature", "bytes", repeated=False, required=True),
+ }
+
+ def __init__(
+ self,
+ *,
+ public_key: "bytes",
+ signature: "bytes",
+ ) -> None:
+ self.public_key = public_key
+ self.signature = signature
+
+
class StellarTxExtRequest(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 238
@@ -8817,6 +8863,29 @@ class StellarSCValMapEntry(protobuf.MessageType):
self.value = value
+class StellarSorobanAuthorizationWithAddress(protobuf.MessageType):
+ MESSAGE_WIRE_TYPE = None
+ FIELDS = {
+ 1: protobuf.Field("nonce", "sint64", repeated=False, required=True),
+ 2: protobuf.Field("signature_expiration_ledger", "uint32", repeated=False, required=True),
+ 3: protobuf.Field("address", "string", repeated=False, required=True),
+ 4: protobuf.Field("invocation", "StellarSorobanAuthorizedInvocation", repeated=False, required=True),
+ }
+
+ def __init__(
+ self,
+ *,
+ nonce: "int",
+ signature_expiration_ledger: "int",
+ address: "str",
+ invocation: "StellarSorobanAuthorizedInvocation",
+ ) -> None:
+ self.nonce = nonce
+ self.signature_expiration_ledger = signature_expiration_ledger
+ self.address = address
+ self.invocation = invocation
+
+
class TelemetryGet(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 1100
diff --git a/python/src/trezorlib/stellar.py b/python/src/trezorlib/stellar.py
index 1701cf56..0c980f55 100644
--- a/python/src/trezorlib/stellar.py
+++ b/python/src/trezorlib/stellar.py
@@ -160,6 +160,34 @@ def from_envelope(
return tx, operations, tx_ext
+def from_authorization_entry(
+ entry: "xdr.SorobanAuthorizationEntry",
+) -> messages.StellarSorobanAuthorizationWithAddress:
+ """Translate a Soroban authorization entry into its signing request payload.
+
+ The resulting message carries exactly the fields committed into the
+ entry's authorization payload (the WITH_ADDRESS preimage of Protocol 27).
+ Only SOROBAN_CREDENTIALS_ADDRESS_V2 entries are supported.
+ """
+ if not HAVE_STELLAR_SDK:
+ raise RuntimeError("Stellar SDK not available")
+ if not HAVE_STELLAR_SDK_PROTOCOL_27 or (
+ entry.credentials.type
+ != xdr.SorobanCredentialsType.SOROBAN_CREDENTIALS_ADDRESS_V2
+ ):
+ raise ValueError(
+ f"Unsupported SorobanCredentials type: {entry.credentials.type}"
+ )
+ credentials = entry.credentials.address_v2
+ assert credentials is not None
+ return messages.StellarSorobanAuthorizationWithAddress(
+ nonce=credentials.nonce.int64,
+ signature_expiration_ledger=credentials.signature_expiration_ledger.uint32,
+ address=_read_sc_address(credentials.address),
+ invocation=_read_authorized_invocation(entry.root_invocation),
+ )
+
+
def _read_operation(op: "Operation") -> "StellarMessageType":
# TODO: Let's add muxed account support later.
if op.source:
@@ -414,6 +442,25 @@ def sign_tx(
return resp
+@workflow(capability=messages.Capability.Stellar)
+def sign_soroban_authorization(
+ session: "Session",
+ address_n: "Address",
+ network_passphrase: str,
+ authorization: messages.StellarSorobanAuthorizationWithAddress,
+) -> messages.StellarSorobanAuthorizationSignature:
+ """Sign a Soroban authorization on the device."""
+ return session.call(
+ messages.StellarSignSorobanAuthorization(
+ address_n=address_n,
+ network_passphrase=network_passphrase,
+ envelope_type=messages.StellarSorobanAuthorizationEnvelopeType.ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS,
+ soroban_authorization_with_address=authorization,
+ ),
+ expect=messages.StellarSorobanAuthorizationSignature,
+ )
+
+
def _read_sc_address(address: "xdr.SCAddress") -> str:
"""Read an SCAddress from XDR."""
addr = StellarAddress.from_xdr_sc_address(address)
diff --git a/rust/trezor-client/src/messages/generated.rs b/rust/trezor-client/src/messages/generated.rs
index 170237ab..d7c98a7d 100644
--- a/rust/trezor-client/src/messages/generated.rs
+++ b/rust/trezor-client/src/messages/generated.rs
@@ -316,6 +316,8 @@ trezor_message_impl! {
StellarInvokeHostFunctionOp => MessageType_StellarInvokeHostFunctionOp,
StellarTxExtRequest => MessageType_StellarTxExtRequest,
StellarTxExt => MessageType_StellarTxExt,
+ StellarSignSorobanAuthorization => MessageType_StellarSignSorobanAuthorization,
+ StellarSorobanAuthorizationSignature => MessageType_StellarSorobanAuthorizationSignature,
}
#[cfg(feature = "tezos")]
diff --git a/rust/trezor-client/src/protos/generated/messages.rs b/rust/trezor-client/src/protos/generated/messages.rs
index fc5f04ce..42a3059f 100644
--- a/rust/trezor-client/src/protos/generated/messages.rs
+++ b/rust/trezor-client/src/protos/generated/messages.rs
@@ -367,6 +367,10 @@ pub enum MessageType {
MessageType_StellarTxExtRequest = 238,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_StellarTxExt)
MessageType_StellarTxExt = 239,
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_StellarSignSorobanAuthorization)
+ MessageType_StellarSignSorobanAuthorization = 240,
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_StellarSorobanAuthorizationSignature)
+ MessageType_StellarSorobanAuthorizationSignature = 241,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_CardanoGetPublicKey)
MessageType_CardanoGetPublicKey = 305,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_CardanoPublicKey)
@@ -800,6 +804,8 @@ impl ::protobuf::Enum for MessageType {
235 => ::std::option::Option::Some(MessageType::MessageType_StellarInvokeHostFunctionOp),
238 => ::std::option::Option::Some(MessageType::MessageType_StellarTxExtRequest),
239 => ::std::option::Option::Some(MessageType::MessageType_StellarTxExt),
+ 240 => ::std::option::Option::Some(MessageType::MessageType_StellarSignSorobanAuthorization),
+ 241 => ::std::option::Option::Some(MessageType::MessageType_StellarSorobanAuthorizationSignature),
305 => ::std::option::Option::Some(MessageType::MessageType_CardanoGetPublicKey),
306 => ::std::option::Option::Some(MessageType::MessageType_CardanoPublicKey),
307 => ::std::option::Option::Some(MessageType::MessageType_CardanoGetAddress),
@@ -1102,6 +1108,8 @@ impl ::protobuf::Enum for MessageType {
"MessageType_StellarInvokeHostFunctionOp" => ::std::option::Option::Some(MessageType::MessageType_StellarInvokeHostFunctionOp),
"MessageType_StellarTxExtRequest" => ::std::option::Option::Some(MessageType::MessageType_StellarTxExtRequest),
"MessageType_StellarTxExt" => ::std::option::Option::Some(MessageType::MessageType_StellarTxExt),
+ "MessageType_StellarSignSorobanAuthorization" => ::std::option::Option::Some(MessageType::MessageType_StellarSignSorobanAuthorization),
+ "MessageType_StellarSorobanAuthorizationSignature" => ::std::option::Option::Some(MessageType::MessageType_StellarSorobanAuthorizationSignature),
"MessageType_CardanoGetPublicKey" => ::std::option::Option::Some(MessageType::MessageType_CardanoGetPublicKey),
"MessageType_CardanoPublicKey" => ::std::option::Option::Some(MessageType::MessageType_CardanoPublicKey),
"MessageType_CardanoGetAddress" => ::std::option::Option::Some(MessageType::MessageType_CardanoGetAddress),
@@ -1403,6 +1411,8 @@ impl ::protobuf::Enum for MessageType {
MessageType::MessageType_StellarInvokeHostFunctionOp,
MessageType::MessageType_StellarTxExtRequest,
MessageType::MessageType_StellarTxExt,
+ MessageType::MessageType_StellarSignSorobanAuthorization,
+ MessageType::MessageType_StellarSorobanAuthorizationSignature,
MessageType::MessageType_CardanoGetPublicKey,
MessageType::MessageType_CardanoPublicKey,
MessageType::MessageType_CardanoGetAddress,
@@ -1710,132 +1720,134 @@ impl ::protobuf::EnumFull for MessageType {
MessageType::MessageType_StellarInvokeHostFunctionOp => 167,
MessageType::MessageType_StellarTxExtRequest => 168,
MessageType::MessageType_StellarTxExt => 169,
- MessageType::MessageType_CardanoGetPublicKey => 170,
- MessageType::MessageType_CardanoPublicKey => 171,
- MessageType::MessageType_CardanoGetAddress => 172,
- MessageType::MessageType_CardanoAddress => 173,
- MessageType::MessageType_CardanoTxItemAck => 174,
- MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 175,
- MessageType::MessageType_CardanoTxWitnessRequest => 176,
- MessageType::MessageType_CardanoTxWitnessResponse => 177,
- MessageType::MessageType_CardanoTxHostAck => 178,
- MessageType::MessageType_CardanoTxBodyHash => 179,
- MessageType::MessageType_CardanoSignTxFinished => 180,
- MessageType::MessageType_CardanoSignTxInit => 181,
- MessageType::MessageType_CardanoTxInput => 182,
- MessageType::MessageType_CardanoTxOutput => 183,
- MessageType::MessageType_CardanoAssetGroup => 184,
- MessageType::MessageType_CardanoToken => 185,
- MessageType::MessageType_CardanoTxCertificate => 186,
- MessageType::MessageType_CardanoTxWithdrawal => 187,
- MessageType::MessageType_CardanoTxAuxiliaryData => 188,
- MessageType::MessageType_CardanoPoolOwner => 189,
- MessageType::MessageType_CardanoPoolRelayParameters => 190,
- MessageType::MessageType_CardanoGetNativeScriptHash => 191,
- MessageType::MessageType_CardanoNativeScriptHash => 192,
- MessageType::MessageType_CardanoTxMint => 193,
- MessageType::MessageType_CardanoTxCollateralInput => 194,
- MessageType::MessageType_CardanoTxRequiredSigner => 195,
- MessageType::MessageType_CardanoTxInlineDatumChunk => 196,
- MessageType::MessageType_CardanoTxReferenceScriptChunk => 197,
- MessageType::MessageType_CardanoTxReferenceInput => 198,
- MessageType::MessageType_CardanoSignMessageInit => 199,
- MessageType::MessageType_CardanoMessageDataRequest => 200,
- MessageType::MessageType_CardanoMessageDataResponse => 201,
- MessageType::MessageType_CardanoMessageSignature => 202,
- MessageType::MessageType_RippleGetAddress => 203,
- MessageType::MessageType_RippleAddress => 204,
- MessageType::MessageType_RippleSignTx => 205,
- MessageType::MessageType_RippleSignedTx => 206,
- MessageType::MessageType_MoneroTransactionInitRequest => 207,
- MessageType::MessageType_MoneroTransactionInitAck => 208,
- MessageType::MessageType_MoneroTransactionSetInputRequest => 209,
- MessageType::MessageType_MoneroTransactionSetInputAck => 210,
- MessageType::MessageType_MoneroTransactionInputViniRequest => 211,
- MessageType::MessageType_MoneroTransactionInputViniAck => 212,
- MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 213,
- MessageType::MessageType_MoneroTransactionAllInputsSetAck => 214,
- MessageType::MessageType_MoneroTransactionSetOutputRequest => 215,
- MessageType::MessageType_MoneroTransactionSetOutputAck => 216,
- MessageType::MessageType_MoneroTransactionAllOutSetRequest => 217,
- MessageType::MessageType_MoneroTransactionAllOutSetAck => 218,
- MessageType::MessageType_MoneroTransactionSignInputRequest => 219,
- MessageType::MessageType_MoneroTransactionSignInputAck => 220,
- MessageType::MessageType_MoneroTransactionFinalRequest => 221,
- MessageType::MessageType_MoneroTransactionFinalAck => 222,
- MessageType::MessageType_MoneroKeyImageExportInitRequest => 223,
- MessageType::MessageType_MoneroKeyImageExportInitAck => 224,
- MessageType::MessageType_MoneroKeyImageSyncStepRequest => 225,
- MessageType::MessageType_MoneroKeyImageSyncStepAck => 226,
- MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 227,
- MessageType::MessageType_MoneroKeyImageSyncFinalAck => 228,
- MessageType::MessageType_MoneroGetAddress => 229,
- MessageType::MessageType_MoneroAddress => 230,
- MessageType::MessageType_MoneroGetWatchKey => 231,
- MessageType::MessageType_MoneroWatchKey => 232,
- MessageType::MessageType_DebugMoneroDiagRequest => 233,
- MessageType::MessageType_DebugMoneroDiagAck => 234,
- MessageType::MessageType_MoneroGetTxKeyRequest => 235,
- MessageType::MessageType_MoneroGetTxKeyAck => 236,
- MessageType::MessageType_MoneroLiveRefreshStartRequest => 237,
- MessageType::MessageType_MoneroLiveRefreshStartAck => 238,
- MessageType::MessageType_MoneroLiveRefreshStepRequest => 239,
- MessageType::MessageType_MoneroLiveRefreshStepAck => 240,
- MessageType::MessageType_MoneroLiveRefreshFinalRequest => 241,
- MessageType::MessageType_MoneroLiveRefreshFinalAck => 242,
- MessageType::MessageType_EosGetPublicKey => 243,
- MessageType::MessageType_EosPublicKey => 244,
- MessageType::MessageType_EosSignTx => 245,
- MessageType::MessageType_EosTxActionRequest => 246,
- MessageType::MessageType_EosTxActionAck => 247,
- MessageType::MessageType_EosSignedTx => 248,
- MessageType::MessageType_WebAuthnListResidentCredentials => 249,
- MessageType::MessageType_WebAuthnCredentials => 250,
- MessageType::MessageType_WebAuthnAddResidentCredential => 251,
- MessageType::MessageType_WebAuthnRemoveResidentCredential => 252,
- MessageType::MessageType_WebAuthnCredentialsAck => 253,
- MessageType::MessageType_SolanaGetPublicKey => 254,
- MessageType::MessageType_SolanaPublicKey => 255,
- MessageType::MessageType_SolanaGetAddress => 256,
- MessageType::MessageType_SolanaAddress => 257,
- MessageType::MessageType_SolanaSignTx => 258,
- MessageType::MessageType_SolanaTxSignature => 259,
- MessageType::MessageType_SolanaSignMessage => 260,
- MessageType::MessageType_SolanaMessageSignature => 261,
- MessageType::MessageType_SolanaVerifyMessage => 262,
- MessageType::MessageType_ThpCreateNewSession => 263,
- MessageType::MessageType_ThpCredentialRequest => 264,
- MessageType::MessageType_ThpCredentialResponse => 265,
- MessageType::MessageType_NostrGetPubkey => 266,
- MessageType::MessageType_NostrPubkey => 267,
- MessageType::MessageType_NostrSignEvent => 268,
- MessageType::MessageType_NostrEventSignature => 269,
- MessageType::MessageType_EvoluGetNode => 270,
- MessageType::MessageType_EvoluNode => 271,
- MessageType::MessageType_EvoluSignRegistrationRequest => 272,
- MessageType::MessageType_EvoluRegistrationRequest => 273,
- MessageType::MessageType_EvoluGetDelegatedIdentityKey => 274,
- MessageType::MessageType_EvoluDelegatedIdentityKey => 275,
- MessageType::MessageType_EvoluIndexManagement => 276,
- MessageType::MessageType_EvoluIndexManagementResponse => 277,
- MessageType::MessageType_TronGetAddress => 278,
- MessageType::MessageType_TronAddress => 279,
- MessageType::MessageType_TronSignTx => 280,
- MessageType::MessageType_TronSignature => 281,
- MessageType::MessageType_TronContractRequest => 282,
- MessageType::MessageType_TronTransferContract => 283,
- MessageType::MessageType_TronTriggerSmartContract => 284,
- MessageType::MessageType_TronFreezeBalanceV2Contract => 285,
- MessageType::MessageType_TronUnfreezeBalanceV2Contract => 286,
- MessageType::MessageType_TronWithdrawUnfreeze => 287,
- MessageType::MessageType_TronVoteWitnessContract => 288,
- MessageType::MessageType_TronWithdrawBalance => 289,
- MessageType::MessageType_BenchmarkListNames => 290,
- MessageType::MessageType_BenchmarkNames => 291,
- MessageType::MessageType_BenchmarkRun => 292,
- MessageType::MessageType_BenchmarkResult => 293,
- MessageType::MessageType_TelemetryGet => 294,
- MessageType::MessageType_Telemetry => 295,
+ MessageType::MessageType_StellarSignSorobanAuthorization => 170,
+ MessageType::MessageType_StellarSorobanAuthorizationSignature => 171,
+ MessageType::MessageType_CardanoGetPublicKey => 172,
+ MessageType::MessageType_CardanoPublicKey => 173,
+ MessageType::MessageType_CardanoGetAddress => 174,
+ MessageType::MessageType_CardanoAddress => 175,
+ MessageType::MessageType_CardanoTxItemAck => 176,
+ MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 177,
+ MessageType::MessageType_CardanoTxWitnessRequest => 178,
+ MessageType::MessageType_CardanoTxWitnessResponse => 179,
+ MessageType::MessageType_CardanoTxHostAck => 180,
+ MessageType::MessageType_CardanoTxBodyHash => 181,
+ MessageType::MessageType_CardanoSignTxFinished => 182,
+ MessageType::MessageType_CardanoSignTxInit => 183,
+ MessageType::MessageType_CardanoTxInput => 184,
+ MessageType::MessageType_CardanoTxOutput => 185,
+ MessageType::MessageType_CardanoAssetGroup => 186,
+ MessageType::MessageType_CardanoToken => 187,
+ MessageType::MessageType_CardanoTxCertificate => 188,
+ MessageType::MessageType_CardanoTxWithdrawal => 189,
+ MessageType::MessageType_CardanoTxAuxiliaryData => 190,
+ MessageType::MessageType_CardanoPoolOwner => 191,
+ MessageType::MessageType_CardanoPoolRelayParameters => 192,
+ MessageType::MessageType_CardanoGetNativeScriptHash => 193,
+ MessageType::MessageType_CardanoNativeScriptHash => 194,
+ MessageType::MessageType_CardanoTxMint => 195,
+ MessageType::MessageType_CardanoTxCollateralInput => 196,
+ MessageType::MessageType_CardanoTxRequiredSigner => 197,
+ MessageType::MessageType_CardanoTxInlineDatumChunk => 198,
+ MessageType::MessageType_CardanoTxReferenceScriptChunk => 199,
+ MessageType::MessageType_CardanoTxReferenceInput => 200,
+ MessageType::MessageType_CardanoSignMessageInit => 201,
+ MessageType::MessageType_CardanoMessageDataRequest => 202,
+ MessageType::MessageType_CardanoMessageDataResponse => 203,
+ MessageType::MessageType_CardanoMessageSignature => 204,
+ MessageType::MessageType_RippleGetAddress => 205,
+ MessageType::MessageType_RippleAddress => 206,
+ MessageType::MessageType_RippleSignTx => 207,
+ MessageType::MessageType_RippleSignedTx => 208,
+ MessageType::MessageType_MoneroTransactionInitRequest => 209,
+ MessageType::MessageType_MoneroTransactionInitAck => 210,
+ MessageType::MessageType_MoneroTransactionSetInputRequest => 211,
+ MessageType::MessageType_MoneroTransactionSetInputAck => 212,
+ MessageType::MessageType_MoneroTransactionInputViniRequest => 213,
+ MessageType::MessageType_MoneroTransactionInputViniAck => 214,
+ MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 215,
+ MessageType::MessageType_MoneroTransactionAllInputsSetAck => 216,
+ MessageType::MessageType_MoneroTransactionSetOutputRequest => 217,
+ MessageType::MessageType_MoneroTransactionSetOutputAck => 218,
+ MessageType::MessageType_MoneroTransactionAllOutSetRequest => 219,
+ MessageType::MessageType_MoneroTransactionAllOutSetAck => 220,
+ MessageType::MessageType_MoneroTransactionSignInputRequest => 221,
+ MessageType::MessageType_MoneroTransactionSignInputAck => 222,
+ MessageType::MessageType_MoneroTransactionFinalRequest => 223,
+ MessageType::MessageType_MoneroTransactionFinalAck => 224,
+ MessageType::MessageType_MoneroKeyImageExportInitRequest => 225,
+ MessageType::MessageType_MoneroKeyImageExportInitAck => 226,
+ MessageType::MessageType_MoneroKeyImageSyncStepRequest => 227,
+ MessageType::MessageType_MoneroKeyImageSyncStepAck => 228,
+ MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 229,
+ MessageType::MessageType_MoneroKeyImageSyncFinalAck => 230,
+ MessageType::MessageType_MoneroGetAddress => 231,
+ MessageType::MessageType_MoneroAddress => 232,
+ MessageType::MessageType_MoneroGetWatchKey => 233,
+ MessageType::MessageType_MoneroWatchKey => 234,
+ MessageType::MessageType_DebugMoneroDiagRequest => 235,
+ MessageType::MessageType_DebugMoneroDiagAck => 236,
+ MessageType::MessageType_MoneroGetTxKeyRequest => 237,
+ MessageType::MessageType_MoneroGetTxKeyAck => 238,
+ MessageType::MessageType_MoneroLiveRefreshStartRequest => 239,
+ MessageType::MessageType_MoneroLiveRefreshStartAck => 240,
+ MessageType::MessageType_MoneroLiveRefreshStepRequest => 241,
+ MessageType::MessageType_MoneroLiveRefreshStepAck => 242,
+ MessageType::MessageType_MoneroLiveRefreshFinalRequest => 243,
+ MessageType::MessageType_MoneroLiveRefreshFinalAck => 244,
+ MessageType::MessageType_EosGetPublicKey => 245,
+ MessageType::MessageType_EosPublicKey => 246,
+ MessageType::MessageType_EosSignTx => 247,
+ MessageType::MessageType_EosTxActionRequest => 248,
+ MessageType::MessageType_EosTxActionAck => 249,
+ MessageType::MessageType_EosSignedTx => 250,
+ MessageType::MessageType_WebAuthnListResidentCredentials => 251,
+ MessageType::MessageType_WebAuthnCredentials => 252,
+ MessageType::MessageType_WebAuthnAddResidentCredential => 253,
+ MessageType::MessageType_WebAuthnRemoveResidentCredential => 254,
+ MessageType::MessageType_WebAuthnCredentialsAck => 255,
+ MessageType::MessageType_SolanaGetPublicKey => 256,
+ MessageType::MessageType_SolanaPublicKey => 257,
+ MessageType::MessageType_SolanaGetAddress => 258,
+ MessageType::MessageType_SolanaAddress => 259,
+ MessageType::MessageType_SolanaSignTx => 260,
+ MessageType::MessageType_SolanaTxSignature => 261,
+ MessageType::MessageType_SolanaSignMessage => 262,
+ MessageType::MessageType_SolanaMessageSignature => 263,
+ MessageType::MessageType_SolanaVerifyMessage => 264,
+ MessageType::MessageType_ThpCreateNewSession => 265,
+ MessageType::MessageType_ThpCredentialRequest => 266,
+ MessageType::MessageType_ThpCredentialResponse => 267,
+ MessageType::MessageType_NostrGetPubkey => 268,
+ MessageType::MessageType_NostrPubkey => 269,
+ MessageType::MessageType_NostrSignEvent => 270,
+ MessageType::MessageType_NostrEventSignature => 271,
+ MessageType::MessageType_EvoluGetNode => 272,
+ MessageType::MessageType_EvoluNode => 273,
+ MessageType::MessageType_EvoluSignRegistrationRequest => 274,
+ MessageType::MessageType_EvoluRegistrationRequest => 275,
+ MessageType::MessageType_EvoluGetDelegatedIdentityKey => 276,
+ MessageType::MessageType_EvoluDelegatedIdentityKey => 277,
+ MessageType::MessageType_EvoluIndexManagement => 278,
+ MessageType::MessageType_EvoluIndexManagementResponse => 279,
+ MessageType::MessageType_TronGetAddress => 280,
+ MessageType::MessageType_TronAddress => 281,
+ MessageType::MessageType_TronSignTx => 282,
+ MessageType::MessageType_TronSignature => 283,
+ MessageType::MessageType_TronContractRequest => 284,
+ MessageType::MessageType_TronTransferContract => 285,
+ MessageType::MessageType_TronTriggerSmartContract => 286,
+ MessageType::MessageType_TronFreezeBalanceV2Contract => 287,
+ MessageType::MessageType_TronUnfreezeBalanceV2Contract => 288,
+ MessageType::MessageType_TronWithdrawUnfreeze => 289,
+ MessageType::MessageType_TronVoteWitnessContract => 290,
+ MessageType::MessageType_TronWithdrawBalance => 291,
+ MessageType::MessageType_BenchmarkListNames => 292,
+ MessageType::MessageType_BenchmarkNames => 293,
+ MessageType::MessageType_BenchmarkRun => 294,
+ MessageType::MessageType_BenchmarkResult => 295,
+ MessageType::MessageType_TelemetryGet => 296,
+ MessageType::MessageType_Telemetry => 297,
};
Self::enum_descriptor().value_by_index(index)
}
@@ -1854,7 +1866,7 @@ impl MessageType {
}
static file_descriptor_proto_data: &'static [u8] = b"\
- \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xdah\
+ \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xcfi\
\n\x0bMessageType\x12(\n\x16MessageType_Initialize\x10\0\x1a\x0c\xb0\xb5\
\x18\x01\x80\xa6\x1d\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\
@@ -2052,159 +2064,161 @@ static file_descriptor_proto_data: &'static [u8] = b"\
Tx\x10\xe6\x01\x1a\x04\x98\xb5\x18\x01\x122\n'MessageType_StellarInvokeH\
ostFunctionOp\x10\xeb\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_\
StellarTxExtRequest\x10\xee\x01\x1a\x04\x98\xb5\x18\x01\x12#\n\x18Messag\
- eType_StellarTxExt\x10\xef\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessage\
- Type_CardanoGetPublicKey\x10\xb1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cM\
- essageType_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_CardanoTxAuxiliaryDataSupplement\x10\xba\x02\
- \x1a\x04\x98\xb5\x18\x01\x12.\n#MessageType_CardanoTxWitnessRequest\x10\
- \xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_CardanoTxWitnessResp\
- onse\x10\xbc\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoTx\
- HostAck\x10\xbd\x02\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_Cardan\
- oTxBodyHash\x10\xbe\x02\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_Carda\
- noSignTxFinished\x10\xbf\x02\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageTy\
- pe_CardanoSignTxInit\x10\xc0\x02\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessa\
- geType_CardanoTxInput\x10\xc1\x02\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMess\
- ageType_CardanoTxOutput\x10\xc2\x02\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMe\
- ssageType_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_CardanoTxWithdrawal\x10\xc6\x02\x1a\x04\x90\xb5\
- \x18\x01\x12-\n\"MessageType_CardanoTxAuxiliaryData\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&MessageType_CardanoGetNativeScri\
- ptHash\x10\xca\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_CardanoNat\
- iveScriptHash\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_Car\
- danoTxCollateralInput\x10\xcd\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#Message\
- Type_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_CardanoTxReferenceScriptChunk\x10\xd0\x02\x1a\
- \x04\x90\xb5\x18\x01\x12.\n#MessageType_CardanoTxReferenceInput\x10\xd1\
- \x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_CardanoSignMessageInit\
- \x10\xd2\x02\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_CardanoMessageDa\
- taRequest\x10\xd3\x02\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_Cardano\
- MessageDataResponse\x10\xd4\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageTy\
- pe_CardanoMessageSignature\x10\xd5\x02\x1a\x04\x98\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\x98\xb5\x18\x01\x12\
- 3\n(MessageType_MoneroTransactionInitRequest\x10\xf5\x03\x1a\x04\x90\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\x90\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\x90\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\x90\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\x90\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\x90\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\x90\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\x90\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\x90\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\x90\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\
- \x90\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\x126\n+Messa\
- geType_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_WebAuthnAddResidentCredential\x10\xa2\
- \x06\x1a\x04\x90\xb5\x18\x01\x127\n,MessageType_WebAuthnRemoveResidentCr\
- edential\x10\xa3\x06\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_WebAuth\
- nCredentialsAck\x10\xa4\x06\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageTyp\
- e_SolanaGetPublicKey\x10\x84\x07\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessa\
- geType_SolanaPublicKey\x10\x85\x07\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMes\
- sageType_SolanaGetAddress\x10\x86\x07\x1a\x04\x90\xb5\x18\x01\x12$\n\x19\
- MessageType_SolanaAddress\x10\x87\x07\x1a\x04\x98\xb5\x18\x01\x12#\n\x18\
- MessageType_SolanaSignTx\x10\x88\x07\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dM\
- essageType_SolanaTxSignature\x10\x89\x07\x1a\x04\x98\xb5\x18\x01\x12(\n\
- \x1dMessageType_SolanaSignMessage\x10\x8a\x07\x1a\x04\x90\xb5\x18\x01\
- \x12-\n\"MessageType_SolanaMessageSignature\x10\x8b\x07\x1a\x04\x98\xb5\
- \x18\x01\x12*\n\x1fMessageType_SolanaVerifyMessage\x10\x8c\x07\x1a\x04\
- \x90\xb5\x18\x01\x12.\n\x1fMessageType_ThpCreateNewSession\x10\xe8\x07\
- \x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12/\n\x20MessageType_ThpCreden\
- tialRequest\x10\xf8\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x120\n!M\
- essageType_ThpCredentialResponse\x10\xf9\x07\x1a\x08\x80\xa6\x1d\x01\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\x18MessageType_EvoluGetNode\x10\xb4\
- \x10\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12$\n\x15MessageType_Evolu\
- Node\x10\xb5\x10\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x127\n(MessageT\
- ype_EvoluSignRegistrationRequest\x10\xb6\x10\x1a\x08\x80\xa6\x1d\x01\x90\
- \xb5\x18\x01\x123\n$MessageType_EvoluRegistrationRequest\x10\xb7\x10\x1a\
- \x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x127\n(MessageType_EvoluGetDelegate\
- dIdentityKey\x10\xb8\x10\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x124\n%\
- MessageType_EvoluDelegatedIdentityKey\x10\xb9\x10\x1a\x08\x80\xa6\x1d\
- \x01\x98\xb5\x18\x01\x12/\n\x20MessageType_EvoluIndexManagement\x10\xba\
- \x10\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x127\n(MessageType_EvoluInd\
- exManagementResponse\x10\xbb\x10\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\
- \x12%\n\x1aMessageType_TronGetAddress\x10\x98\x11\x1a\x04\x90\xb5\x18\
- \x01\x12\"\n\x17MessageType_TronAddress\x10\x99\x11\x1a\x04\x98\xb5\x18\
- \x01\x12!\n\x16MessageType_TronSignTx\x10\x9a\x11\x1a\x04\x90\xb5\x18\
- \x01\x12$\n\x19MessageType_TronSignature\x10\x9b\x11\x1a\x04\x98\xb5\x18\
- \x01\x12*\n\x1fMessageType_TronContractRequest\x10\x9c\x11\x1a\x04\x98\
- \xb5\x18\x01\x12+\n\x20MessageType_TronTransferContract\x10\x9d\x11\x1a\
- \x04\x90\xb5\x18\x01\x12/\n$MessageType_TronTriggerSmartContract\x10\x9e\
- \x11\x1a\x04\x90\xb5\x18\x01\x122\n'MessageType_TronFreezeBalanceV2Contr\
- act\x10\x9f\x11\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_TronUnfreezeB\
- alanceV2Contract\x10\xa0\x11\x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageTy\
- pe_TronWithdrawUnfreeze\x10\xa1\x11\x1a\x04\x90\xb5\x18\x01\x12.\n#Messa\
- geType_TronVoteWitnessContract\x10\xa2\x11\x1a\x04\x90\xb5\x18\x01\x12*\
- \n\x1fMessageType_TronWithdrawBalance\x10\xa5\x11\x1a\x04\x90\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\x12'\n\x18MessageType_TelemetryGet\x10\xcc\x08\x1a\x08\x80\xa6\x1d\
- \x01\x90\xb5\x18\x01\x12$\n\x15MessageType_Telemetry\x10\xcd\x08\x1a\x08\
- \x80\xa6\x1d\x01\x98\xb5\x18\x01\x1a\x08\xc8\xf3\x18\x01\xd0\xf3\x18\x01\
- \"\x04\x08Z\x10\\\"\x04\x08M\x10N\"\x04\x08G\x10J\"\x04\x08r\x10z\"\x05\
- \x08{\x10\x95\x01\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\x08\xe0\x01\x10\
- \xe0\x01\"\x06\x08\xe2\x01\x10\xe2\x01\"\x06\x08\xe3\x01\x10\xe3\x01\"\
- \x06\x08\xe4\x01\x10\xe4\x01\"\x06\x08\xe5\x01\x10\xe5\x01\"\x06\x08\xe7\
- \x01\x10\xe7\x01\"\x06\x08\xe8\x01\x10\xe8\x01\"\x06\x08\xe9\x01\x10\xe9\
- \x01\"\x06\x08\xea\x01\x10\xea\x01\"\x06\x08\xec\x01\x10\xec\x01\"\x06\
- \x08\xed\x01\x10\xed\x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\x02\
- \x10\xb8\x02\"\x06\x08\xbc\x05\x10\xc5\x05\"\x06\x08\xe9\x07\x10\xf7\x07\
- \"\x06\x08\xfa\x07\x10\xcb\x08B8\n#com.satoshilabs.trezor.lib.protobufB\
- \rTrezorMessage\x80\xa6\x1d\x01\
+ eType_StellarTxExt\x10\xef\x01\x1a\x04\x90\xb5\x18\x01\x126\n+MessageTyp\
+ e_StellarSignSorobanAuthorization\x10\xf0\x01\x1a\x04\x90\xb5\x18\x01\
+ \x12;\n0MessageType_StellarSorobanAuthorizationSignature\x10\xf1\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_CardanoAddres\
+ s\x10\xb4\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoTxIte\
+ mAck\x10\xb9\x02\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_CardanoTxAux\
+ iliaryDataSupplement\x10\xba\x02\x1a\x04\x98\xb5\x18\x01\x12.\n#MessageT\
+ ype_CardanoTxWitnessRequest\x10\xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\n$M\
+ essageType_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_CardanoTxCertific\
+ ate\x10\xc5\x02\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_CardanoTxW\
+ ithdrawal\x10\xc6\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_Cardan\
+ oTxAuxiliaryData\x10\xc7\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageTy\
+ pe_CardanoPoolOwner\x10\xc8\x02\x1a\x04\x90\xb5\x18\x01\x121\n&MessageTy\
+ pe_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_CardanoTxInlineDatumChun\
+ k\x10\xcf\x02\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_CardanoTxRefere\
+ nceScriptChunk\x10\xd0\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_Ca\
+ rdanoTxReferenceInput\x10\xd1\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"Messag\
+ eType_CardanoSignMessageInit\x10\xd2\x02\x1a\x04\x90\xb5\x18\x01\x120\n%\
+ MessageType_CardanoMessageDataRequest\x10\xd3\x02\x1a\x04\x98\xb5\x18\
+ \x01\x121\n&MessageType_CardanoMessageDataResponse\x10\xd4\x02\x1a\x04\
+ \x90\xb5\x18\x01\x12.\n#MessageType_CardanoMessageSignature\x10\xd5\x02\
+ \x1a\x04\x98\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\x98\xb5\x18\x01\x123\n(MessageType_MoneroTransactionIni\
+ tRequest\x10\xf5\x03\x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_MoneroTr\
+ ansactionInitAck\x10\xf6\x03\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_\
+ MoneroTransactionSetInputRequest\x10\xf7\x03\x1a\x04\x90\xb5\x18\x01\x12\
+ 3\n(MessageType_MoneroTransactionSetInputAck\x10\xf8\x03\x1a\x04\x98\xb5\
+ \x18\x01\x128\n-MessageType_MoneroTransactionInputViniRequest\x10\xfb\
+ \x03\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_MoneroTransactionInputVi\
+ niAck\x10\xfc\x03\x1a\x04\x98\xb5\x18\x01\x12;\n0MessageType_MoneroTrans\
+ actionAllInputsSetRequest\x10\xfd\x03\x1a\x04\x90\xb5\x18\x01\x127\n,Mes\
+ sageType_MoneroTransactionAllInputsSetAck\x10\xfe\x03\x1a\x04\x98\xb5\
+ \x18\x01\x128\n-MessageType_MoneroTransactionSetOutputRequest\x10\xff\
+ \x03\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_MoneroTransactionSetOutp\
+ utAck\x10\x80\x04\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTrans\
+ actionAllOutSetRequest\x10\x81\x04\x1a\x04\x90\xb5\x18\x01\x124\n)Messag\
+ eType_MoneroTransactionAllOutSetAck\x10\x82\x04\x1a\x04\x98\xb5\x18\x01\
+ \x128\n-MessageType_MoneroTransactionSignInputRequest\x10\x83\x04\x1a\
+ \x04\x90\xb5\x18\x01\x124\n)MessageType_MoneroTransactionSignInputAck\
+ \x10\x84\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroTransactio\
+ nFinalRequest\x10\x85\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_Mon\
+ eroTransactionFinalAck\x10\x86\x04\x1a\x04\x98\xb5\x18\x01\x126\n+Messag\
+ eType_MoneroKeyImageExportInitRequest\x10\x92\x04\x1a\x04\x90\xb5\x18\
+ \x01\x122\n'MessageType_MoneroKeyImageExportInitAck\x10\x93\x04\x1a\x04\
+ \x98\xb5\x18\x01\x124\n)MessageType_MoneroKeyImageSyncStepRequest\x10\
+ \x94\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroKeyImageSyncSt\
+ epAck\x10\x95\x04\x1a\x04\x98\xb5\x18\x01\x125\n*MessageType_MoneroKeyIm\
+ ageSyncFinalRequest\x10\x96\x04\x1a\x04\x90\xb5\x18\x01\x121\n&MessageTy\
+ pe_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_MoneroGetTxKeyRequest\x10\xa6\
+ \x04\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGetTxKeyAck\x10\
+ \xa7\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroLiveRefreshSta\
+ rtRequest\x10\xa8\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroL\
+ iveRefreshStartAck\x10\xa9\x04\x1a\x04\x98\xb5\x18\x01\x123\n(MessageTyp\
+ e_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_MoneroLiveRefreshFinalAck\x10\
+ \xad\x04\x1a\x04\x98\xb5\x18\x01\x12&\n\x1bMessageType_EosGetPublicKey\
+ \x10\xd8\x04\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_EosPublicKey\
+ \x10\xd9\x04\x1a\x04\x98\xb5\x18\x01\x12\x20\n\x15MessageType_EosSignTx\
+ \x10\xda\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_EosTxActionRe\
+ quest\x10\xdb\x04\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMessageType_EosTxAct\
+ ionAck\x10\xdc\x04\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17MessageType_EosSig\
+ nedTx\x10\xdd\x04\x1a\x04\x98\xb5\x18\x01\x126\n+MessageType_WebAuthnLis\
+ tResidentCredentials\x10\xa0\x06\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessa\
+ geType_WebAuthnCredentials\x10\xa1\x06\x1a\x04\x98\xb5\x18\x01\x124\n)Me\
+ ssageType_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\"MessageType_WebAuthnCredentialsAck\x10\xa4\
+ \x06\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_SolanaGetPublicKey\
+ \x10\x84\x07\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_SolanaPublicK\
+ ey\x10\x85\x07\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_SolanaGetAd\
+ dress\x10\x86\x07\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_SolanaAd\
+ dress\x10\x87\x07\x1a\x04\x98\xb5\x18\x01\x12#\n\x18MessageType_SolanaSi\
+ gnTx\x10\x88\x07\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_SolanaTxS\
+ ignature\x10\x89\x07\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_Solan\
+ aSignMessage\x10\x8a\x07\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_Sol\
+ anaMessageSignature\x10\x8b\x07\x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessag\
+ eType_SolanaVerifyMessage\x10\x8c\x07\x1a\x04\x90\xb5\x18\x01\x12.\n\x1f\
+ MessageType_ThpCreateNewSession\x10\xe8\x07\x1a\x08\x80\xa6\x1d\x01\x90\
+ \xb5\x18\x01\x12/\n\x20MessageType_ThpCredentialRequest\x10\xf8\x07\x1a\
+ \x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x120\n!MessageType_ThpCredentialRes\
+ ponse\x10\xf9\x07\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12%\n\x1aMess\
+ ageType_NostrGetPubkey\x10\xd1\x0f\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17Me\
+ ssageType_NostrPubkey\x10\xd2\x0f\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMess\
+ ageType_NostrSignEvent\x10\xd3\x0f\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMes\
+ sageType_NostrEventSignature\x10\xd4\x0f\x1a\x04\x98\xb5\x18\x01\x12'\n\
+ \x18MessageType_EvoluGetNode\x10\xb4\x10\x1a\x08\x80\xa6\x1d\x01\x90\xb5\
+ \x18\x01\x12$\n\x15MessageType_EvoluNode\x10\xb5\x10\x1a\x08\x80\xa6\x1d\
+ \x01\x98\xb5\x18\x01\x127\n(MessageType_EvoluSignRegistrationRequest\x10\
+ \xb6\x10\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x123\n$MessageType_Evol\
+ uRegistrationRequest\x10\xb7\x10\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\
+ \x127\n(MessageType_EvoluGetDelegatedIdentityKey\x10\xb8\x10\x1a\x08\x80\
+ \xa6\x1d\x01\x90\xb5\x18\x01\x124\n%MessageType_EvoluDelegatedIdentityKe\
+ y\x10\xb9\x10\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12/\n\x20MessageT\
+ ype_EvoluIndexManagement\x10\xba\x10\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\
+ \x01\x127\n(MessageType_EvoluIndexManagementResponse\x10\xbb\x10\x1a\x08\
+ \x80\xa6\x1d\x01\x98\xb5\x18\x01\x12%\n\x1aMessageType_TronGetAddress\
+ \x10\x98\x11\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17MessageType_TronAddress\
+ \x10\x99\x11\x1a\x04\x98\xb5\x18\x01\x12!\n\x16MessageType_TronSignTx\
+ \x10\x9a\x11\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_TronSignature\
+ \x10\x9b\x11\x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageType_TronContractR\
+ equest\x10\x9c\x11\x1a\x04\x98\xb5\x18\x01\x12+\n\x20MessageType_TronTra\
+ nsferContract\x10\x9d\x11\x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_Tro\
+ nTriggerSmartContract\x10\x9e\x11\x1a\x04\x90\xb5\x18\x01\x122\n'Message\
+ Type_TronFreezeBalanceV2Contract\x10\x9f\x11\x1a\x04\x90\xb5\x18\x01\x12\
+ 4\n)MessageType_TronUnfreezeBalanceV2Contract\x10\xa0\x11\x1a\x04\x90\
+ \xb5\x18\x01\x12+\n\x20MessageType_TronWithdrawUnfreeze\x10\xa1\x11\x1a\
+ \x04\x90\xb5\x18\x01\x12.\n#MessageType_TronVoteWitnessContract\x10\xa2\
+ \x11\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_TronWithdrawBalance\
+ \x10\xa5\x11\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_BenchmarkList\
+ Names\x10\x8cG\x1a\x04\x80\xa6\x1d\x01\x12%\n\x1aMessageType_BenchmarkNa\
+ mes\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\x12'\n\x18MessageType_TelemetryGet\x10\
+ \xcc\x08\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12$\n\x15MessageType_T\
+ elemetry\x10\xcd\x08\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x1a\x08\xc8\
+ \xf3\x18\x01\xd0\xf3\x18\x01\"\x04\x08Z\x10\\\"\x04\x08M\x10N\"\x04\x08G\
+ \x10J\"\x04\x08r\x10z\"\x05\x08{\x10\x95\x01\"\x06\x08\xdb\x01\x10\xdb\
+ \x01\"\x06\x08\xe0\x01\x10\xe0\x01\"\x06\x08\xe2\x01\x10\xe2\x01\"\x06\
+ \x08\xe3\x01\x10\xe3\x01\"\x06\x08\xe4\x01\x10\xe4\x01\"\x06\x08\xe5\x01\
+ \x10\xe5\x01\"\x06\x08\xe7\x01\x10\xe7\x01\"\x06\x08\xe8\x01\x10\xe8\x01\
+ \"\x06\x08\xe9\x01\x10\xe9\x01\"\x06\x08\xea\x01\x10\xea\x01\"\x06\x08\
+ \xec\x01\x10\xec\x01\"\x06\x08\xed\x01\x10\xed\x01\"\x06\x08\xac\x02\x10\
+ \xb0\x02\"\x06\x08\xb5\x02\x10\xb8\x02\"\x06\x08\xbc\x05\x10\xc5\x05\"\
+ \x06\x08\xe9\x07\x10\xf7\x07\"\x06\x08\xfa\x07\x10\xcb\x08B8\n#com.satos\
+ hilabs.trezor.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_stellar.rs b/rust/trezor-client/src/protos/generated/messages_stellar.rs
index 3a1fe05d..90948936 100644
--- a/rust/trezor-client/src/protos/generated/messages_stellar.rs
+++ b/rust/trezor-client/src/protos/generated/messages_stellar.rs
@@ -9984,6 +9984,804 @@ impl ::protobuf::reflect::ProtobufValue for StellarInvokeHostFunctionOp {
type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}
+// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarSignSorobanAuthorization)
+#[derive(PartialEq,Clone,Default,Debug)]
+pub struct StellarSignSorobanAuthorization {
+ // message fields
+ // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.address_n)
+ pub address_n: ::std::vec::Vec<u32>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.network_passphrase)
+ pub network_passphrase: ::std::option::Option<::std::string::String>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.envelope_type)
+ pub envelope_type: ::std::option::Option<::protobuf::EnumOrUnknown<stellar_sign_soroban_authorization::StellarSorobanAuthorizationEnvelopeType>>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.soroban_authorization_with_address)
+ pub soroban_authorization_with_address: ::protobuf::MessageField<stellar_sign_soroban_authorization::StellarSorobanAuthorizationWithAddress>,
+ // special fields
+ // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.special_fields)
+ pub special_fields: ::protobuf::SpecialFields,
+}
+
+impl<'a> ::std::default::Default for &'a StellarSignSorobanAuthorization {
+ fn default() -> &'a StellarSignSorobanAuthorization {
+ <StellarSignSorobanAuthorization as ::protobuf::Message>::default_instance()
+ }
+}
+
+impl StellarSignSorobanAuthorization {
+ pub fn new() -> StellarSignSorobanAuthorization {
+ ::std::default::Default::default()
+ }
+
+ // required string network_passphrase = 2;
+
+ pub fn network_passphrase(&self) -> &str {
+ match self.network_passphrase.as_ref() {
+ Some(v) => v,
+ None => "",
+ }
+ }
+
+ pub fn clear_network_passphrase(&mut self) {
+ self.network_passphrase = ::std::option::Option::None;
+ }
+
+ pub fn has_network_passphrase(&self) -> bool {
+ self.network_passphrase.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_network_passphrase(&mut self, v: ::std::string::String) {
+ self.network_passphrase = ::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_network_passphrase(&mut self) -> &mut ::std::string::String {
+ if self.network_passphrase.is_none() {
+ self.network_passphrase = ::std::option::Option::Some(::std::string::String::new());
+ }
+ self.network_passphrase.as_mut().unwrap()
+ }
+
+ // Take field
+ pub fn take_network_passphrase(&mut self) -> ::std::string::String {
+ self.network_passphrase.take().unwrap_or_else(|| ::std::string::String::new())
+ }
+
+ // required .hw.trezor.messages.stellar.StellarSignSorobanAuthorization.StellarSorobanAuthorizationEnvelopeType envelope_type = 3;
+
+ pub fn envelope_type(&self) -> stellar_sign_soroban_authorization::StellarSorobanAuthorizationEnvelopeType {
+ match self.envelope_type {
+ Some(e) => e.enum_value_or(stellar_sign_soroban_authorization::StellarSorobanAuthorizationEnvelopeType::ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS),
+ None => stellar_sign_soroban_authorization::StellarSorobanAuthorizationEnvelopeType::ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS,
+ }
+ }
+
+ pub fn clear_envelope_type(&mut self) {
+ self.envelope_type = ::std::option::Option::None;
+ }
+
+ pub fn has_envelope_type(&self) -> bool {
+ self.envelope_type.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_envelope_type(&mut self, v: stellar_sign_soroban_authorization::StellarSorobanAuthorizationEnvelopeType) {
+ self.envelope_type = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
+ }
+
+ 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_vec_simpler_accessor::<_, _>(
+ "address_n",
+ |m: &StellarSignSorobanAuthorization| { &m.address_n },
+ |m: &mut StellarSignSorobanAuthorization| { &mut m.address_n },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "network_passphrase",
+ |m: &StellarSignSorobanAuthorization| { &m.network_passphrase },
+ |m: &mut StellarSignSorobanAuthorization| { &mut m.network_passphrase },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "envelope_type",
+ |m: &StellarSignSorobanAuthorization| { &m.envelope_type },
+ |m: &mut StellarSignSorobanAuthorization| { &mut m.envelope_type },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, stellar_sign_soroban_authorization::StellarSorobanAuthorizationWithAddress>(
+ "soroban_authorization_with_address",
+ |m: &StellarSignSorobanAuthorization| { &m.soroban_authorization_with_address },
+ |m: &mut StellarSignSorobanAuthorization| { &mut m.soroban_authorization_with_address },
+ ));
+ ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarSignSorobanAuthorization>(
+ "StellarSignSorobanAuthorization",
+ fields,
+ oneofs,
+ )
+ }
+}
+
+impl ::protobuf::Message for StellarSignSorobanAuthorization {
+ const NAME: &'static str = "StellarSignSorobanAuthorization";
+
+ fn is_initialized(&self) -> bool {
+ if self.network_passphrase.is_none() {
+ return false;
+ }
+ if self.envelope_type.is_none() {
+ return false;
+ }
+ for v in &self.soroban_authorization_with_address {
+ 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 => {
+ is.read_repeated_packed_uint32_into(&mut self.address_n)?;
+ },
+ 8 => {
+ self.address_n.push(is.read_uint32()?);
+ },
+ 18 => {
+ self.network_passphrase = ::std::option::Option::Some(is.read_string()?);
+ },
+ 24 => {
+ self.envelope_type = ::std::option::Option::Some(is.read_enum_or_unknown()?);
+ },
+ 34 => {
+ ::protobuf::rt::read_singular_message_into_field(is, &mut self.soroban_authorization_with_address)?;
+ },
+ 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;
+ for value in &self.address_n {
+ my_size += ::protobuf::rt::uint32_size(1, *value);
+ };
+ if let Some(v) = self.network_passphrase.as_ref() {
+ my_size += ::protobuf::rt::string_size(2, &v);
+ }
+ if let Some(v) = self.envelope_type {
+ my_size += ::protobuf::rt::int32_size(3, v.value());
+ }
+ if let Some(v) = self.soroban_authorization_with_address.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<()> {
+ for v in &self.address_n {
+ os.write_uint32(1, *v)?;
+ };
+ if let Some(v) = self.network_passphrase.as_ref() {
+ os.write_string(2, v)?;
+ }
+ if let Some(v) = self.envelope_type {
+ os.write_enum(3, ::protobuf::EnumOrUnknown::value(&v))?;
+ }
+ if let Some(v) = self.soroban_authorization_with_address.as_ref() {
+ ::protobuf::rt::write_message_field_with_cached_size(4, 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() -> StellarSignSorobanAuthorization {
+ StellarSignSorobanAuthorization::new()
+ }
+
+ fn clear(&mut self) {
+ self.address_n.clear();
+ self.network_passphrase = ::std::option::Option::None;
+ self.envelope_type = ::std::option::Option::None;
+ self.soroban_authorization_with_address.clear();
+ self.special_fields.clear();
+ }
+
+ fn default_instance() -> &'static StellarSignSorobanAuthorization {
+ static instance: StellarSignSorobanAuthorization = StellarSignSorobanAuthorization {
+ address_n: ::std::vec::Vec::new(),
+ network_passphrase: ::std::option::Option::None,
+ envelope_type: ::std::option::Option::None,
+ soroban_authorization_with_address: ::protobuf::MessageField::none(),
+ special_fields: ::protobuf::SpecialFields::new(),
+ };
+ &instance
+ }
+}
+
+impl ::protobuf::MessageFull for StellarSignSorobanAuthorization {
+ 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("StellarSignSorobanAuthorization").unwrap()).clone()
+ }
+}
+
+impl ::std::fmt::Display for StellarSignSorobanAuthorization {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ ::protobuf::text_format::fmt(self, f)
+ }
+}
+
+impl ::protobuf::reflect::ProtobufValue for StellarSignSorobanAuthorization {
+ type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
+}
+
+/// Nested message and enums of message `StellarSignSorobanAuthorization`
+pub mod stellar_sign_soroban_authorization {
+ // @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.StellarSorobanAuthorizationWithAddress)
+ #[derive(PartialEq,Clone,Default,Debug)]
+ pub struct StellarSorobanAuthorizationWithAddress {
+ // message fields
+ // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.StellarSorobanAuthorizationWithAddress.nonce)
+ pub nonce: ::std::option::Option<i64>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.StellarSorobanAuthorizationWithAddress.signature_expiration_ledger)
+ pub signature_expiration_ledger: ::std::option::Option<u32>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.StellarSorobanAuthorizationWithAddress.address)
+ pub address: ::std::option::Option<::std::string::String>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.StellarSorobanAuthorizationWithAddress.invocation)
+ pub invocation: ::protobuf::MessageField<super::StellarSorobanAuthorizedInvocation>,
+ // special fields
+ // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.StellarSorobanAuthorizationWithAddress.special_fields)
+ pub special_fields: ::protobuf::SpecialFields,
+ }
+
+ impl<'a> ::std::default::Default for &'a StellarSorobanAuthorizationWithAddress {
+ fn default() -> &'a StellarSorobanAuthorizationWithAddress {
+ <StellarSorobanAuthorizationWithAddress as ::protobuf::Message>::default_instance()
+ }
+ }
+
+ impl StellarSorobanAuthorizationWithAddress {
+ pub fn new() -> StellarSorobanAuthorizationWithAddress {
+ ::std::default::Default::default()
+ }
+
+ // required sint64 nonce = 1;
+
+ pub fn nonce(&self) -> i64 {
+ self.nonce.unwrap_or(0)
+ }
+
+ 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: i64) {
+ self.nonce = ::std::option::Option::Some(v);
+ }
+
+ // required uint32 signature_expiration_ledger = 2;
+
+ pub fn signature_expiration_ledger(&self) -> u32 {
+ self.signature_expiration_ledger.unwrap_or(0)
+ }
+
+ pub fn clear_signature_expiration_ledger(&mut self) {
+ self.signature_expiration_ledger = ::std::option::Option::None;
+ }
+
+ pub fn has_signature_expiration_ledger(&self) -> bool {
+ self.signature_expiration_ledger.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_signature_expiration_ledger(&mut self, v: u32) {
+ self.signature_expiration_ledger = ::std::option::Option::Some(v);
+ }
+
+ // 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())
+ }
+
+ 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::<_, _>(
+ "nonce",
+ |m: &StellarSorobanAuthorizationWithAddress| { &m.nonce },
+ |m: &mut StellarSorobanAuthorizationWithAddress| { &mut m.nonce },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "signature_expiration_ledger",
+ |m: &StellarSorobanAuthorizationWithAddress| { &m.signature_expiration_ledger },
+ |m: &mut StellarSorobanAuthorizationWithAddress| { &mut m.signature_expiration_ledger },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "address",
+ |m: &StellarSorobanAuthorizationWithAddress| { &m.address },
+ |m: &mut StellarSorobanAuthorizationWithAddress| { &mut m.address },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, super::StellarSorobanAuthorizedInvocation>(
+ "invocation",
+ |m: &StellarSorobanAuthorizationWithAddress| { &m.invocation },
+ |m: &mut StellarSorobanAuthorizationWithAddress| { &mut m.invocation },
+ ));
+ ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarSorobanAuthorizationWithAddress>(
+ "StellarSignSorobanAuthorization.StellarSorobanAuthorizationWithAddress",
+ fields,
+ oneofs,
+ )
+ }
+ }
+
+ impl ::protobuf::Message for StellarSorobanAuthorizationWithAddress {
+ const NAME: &'static str = "StellarSorobanAuthorizationWithAddress";
+
+ fn is_initialized(&self) -> bool {
+ if self.nonce.is_none() {
+ return false;
+ }
+ if self.signature_expiration_ledger.is_none() {
+ return false;
+ }
+ if self.address.is_none() {
+ return false;
+ }
+ if self.invocation.is_none() {
+ return false;
+ }
+ for v in &self.invocation {
+ 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 {
+ 8 => {
+ self.nonce = ::std::option::Option::Some(is.read_sint64()?);
+ },
+ 16 => {
+ self.signature_expiration_ledger = ::std::option::Option::Some(is.read_uint32()?);
+ },
+ 26 => {
+ self.address = ::std::option::Option::Some(is.read_string()?);
+ },
+ 34 => {
+ ::protobuf::rt::read_singular_message_into_field(is, &mut self.invocation)?;
+ },
+ 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 {
+ my_size += ::protobuf::rt::sint64_size(1, v);
+ }
+ if let Some(v) = self.signature_expiration_ledger {
+ my_size += ::protobuf::rt::uint32_size(2, v);
+ }
+ if let Some(v) = self.address.as_ref() {
+ my_size += ::protobuf::rt::string_size(3, &v);
+ }
+ if let Some(v) = self.invocation.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.nonce {
+ os.write_sint64(1, v)?;
+ }
+ if let Some(v) = self.signature_expiration_ledger {
+ os.write_uint32(2, v)?;
+ }
+ if let Some(v) = self.address.as_ref() {
+ os.write_string(3, v)?;
+ }
+ if let Some(v) = self.invocation.as_ref() {
+ ::protobuf::rt::write_message_field_with_cached_size(4, 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() -> StellarSorobanAuthorizationWithAddress {
+ StellarSorobanAuthorizationWithAddress::new()
+ }
+
+ fn clear(&mut self) {
+ self.nonce = ::std::option::Option::None;
+ self.signature_expiration_ledger = ::std::option::Option::None;
+ self.address = ::std::option::Option::None;
+ self.invocation.clear();
+ self.special_fields.clear();
+ }
+
+ fn default_instance() -> &'static StellarSorobanAuthorizationWithAddress {
+ static instance: StellarSorobanAuthorizationWithAddress = StellarSorobanAuthorizationWithAddress {
+ nonce: ::std::option::Option::None,
+ signature_expiration_ledger: ::std::option::Option::None,
+ address: ::std::option::Option::None,
+ invocation: ::protobuf::MessageField::none(),
+ special_fields: ::protobuf::SpecialFields::new(),
+ };
+ &instance
+ }
+ }
+
+ impl ::protobuf::MessageFull for StellarSorobanAuthorizationWithAddress {
+ 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("StellarSignSorobanAuthorization.StellarSorobanAuthorizationWithAddress").unwrap()).clone()
+ }
+ }
+
+ impl ::std::fmt::Display for StellarSorobanAuthorizationWithAddress {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ ::protobuf::text_format::fmt(self, f)
+ }
+ }
+
+ impl ::protobuf::reflect::ProtobufValue for StellarSorobanAuthorizationWithAddress {
+ type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
+ }
+
+ #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
+ // @@protoc_insertion_point(enum:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.StellarSorobanAuthorizationEnvelopeType)
+ pub enum StellarSorobanAuthorizationEnvelopeType {
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.stellar.StellarSignSorobanAuthorization.StellarSorobanAuthorizationEnvelopeType.ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS)
+ ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS = 10,
+ }
+
+ impl ::protobuf::Enum for StellarSorobanAuthorizationEnvelopeType {
+ const NAME: &'static str = "StellarSorobanAuthorizationEnvelopeType";
+
+ fn value(&self) -> i32 {
+ *self as i32
+ }
+
+ fn from_i32(value: i32) -> ::std::option::Option<StellarSorobanAuthorizationEnvelopeType> {
+ match value {
+ 10 => ::std::option::Option::Some(StellarSorobanAuthorizationEnvelopeType::ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS),
+ _ => ::std::option::Option::None
+ }
+ }
+
+ fn from_str(str: &str) -> ::std::option::Option<StellarSorobanAuthorizationEnvelopeType> {
+ match str {
+ "ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS" => ::std::option::Option::Some(StellarSorobanAuthorizationEnvelopeType::ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS),
+ _ => ::std::option::Option::None
+ }
+ }
+
+ const VALUES: &'static [StellarSorobanAuthorizationEnvelopeType] = &[
+ StellarSorobanAuthorizationEnvelopeType::ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS,
+ ];
+ }
+
+ impl ::protobuf::EnumFull for StellarSorobanAuthorizationEnvelopeType {
+ fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
+ static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
+ descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("StellarSignSorobanAuthorization.StellarSorobanAuthorizationEnvelopeType").unwrap()).clone()
+ }
+
+ fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
+ let index = match self {
+ StellarSorobanAuthorizationEnvelopeType::ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS => 0,
+ };
+ Self::enum_descriptor().value_by_index(index)
+ }
+ }
+
+ // Note, `Default` is implemented although default value is not 0
+ impl ::std::default::Default for StellarSorobanAuthorizationEnvelopeType {
+ fn default() -> Self {
+ StellarSorobanAuthorizationEnvelopeType::ENVELOPE_TYPE_SOROBAN_AUTHORIZATION_WITH_ADDRESS
+ }
+ }
+
+ impl StellarSorobanAuthorizationEnvelopeType {
+ pub(in super) fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
+ ::protobuf::reflect::GeneratedEnumDescriptorData::new::<StellarSorobanAuthorizationEnvelopeType>("StellarSignSorobanAuthorization.StellarSorobanAuthorizationEnvelopeType")
+ }
+ }
+}
+
+// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarSorobanAuthorizationSignature)
+#[derive(PartialEq,Clone,Default,Debug)]
+pub struct StellarSorobanAuthorizationSignature {
+ // message fields
+ // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSorobanAuthorizationSignature.public_key)
+ pub public_key: ::std::option::Option<::std::vec::Vec<u8>>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.stellar.StellarSorobanAuthorizationSignature.signature)
+ pub signature: ::std::option::Option<::std::vec::Vec<u8>>,
+ // special fields
+ // @@protoc_insertion_point(special_field:hw.trezor.messages.stellar.StellarSorobanAuthorizationSignature.special_fields)
+ pub special_fields: ::protobuf::SpecialFields,
+}
+
+impl<'a> ::std::default::Default for &'a StellarSorobanAuthorizationSignature {
+ fn default() -> &'a StellarSorobanAuthorizationSignature {
+ <StellarSorobanAuthorizationSignature as ::protobuf::Message>::default_instance()
+ }
+}
+
+impl StellarSorobanAuthorizationSignature {
+ pub fn new() -> StellarSorobanAuthorizationSignature {
+ ::std::default::Default::default()
+ }
+
+ // required bytes public_key = 1;
+
+ pub fn public_key(&self) -> &[u8] {
+ match self.public_key.as_ref() {
+ Some(v) => v,
+ None => &[],
+ }
+ }
+
+ pub fn clear_public_key(&mut self) {
+ self.public_key = ::std::option::Option::None;
+ }
+
+ pub fn has_public_key(&self) -> bool {
+ self.public_key.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_public_key(&mut self, v: ::std::vec::Vec<u8>) {
+ self.public_key = ::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_public_key(&mut self) -> &mut ::std::vec::Vec<u8> {
+ if self.public_key.is_none() {
+ self.public_key = ::std::option::Option::Some(::std::vec::Vec::new());
+ }
+ self.public_key.as_mut().unwrap()
+ }
+
+ // Take field
+ pub fn take_public_key(&mut self) -> ::std::vec::Vec<u8> {
+ self.public_key.take().unwrap_or_else(|| ::std::vec::Vec::new())
+ }
+
+ // required bytes signature = 2;
+
+ 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<u8>) {
+ 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<u8> {
+ 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<u8> {
+ 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(2);
+ let mut oneofs = ::std::vec::Vec::with_capacity(0);
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "public_key",
+ |m: &StellarSorobanAuthorizationSignature| { &m.public_key },
+ |m: &mut StellarSorobanAuthorizationSignature| { &mut m.public_key },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "signature",
+ |m: &StellarSorobanAuthorizationSignature| { &m.signature },
+ |m: &mut StellarSorobanAuthorizationSignature| { &mut m.signature },
+ ));
+ ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<StellarSorobanAuthorizationSignature>(
+ "StellarSorobanAuthorizationSignature",
+ fields,
+ oneofs,
+ )
+ }
+}
+
+impl ::protobuf::Message for StellarSorobanAuthorizationSignature {
+ const NAME: &'static str = "StellarSorobanAuthorizationSignature";
+
+ fn is_initialized(&self) -> bool {
+ if self.public_key.is_none() {
+ return false;
+ }
+ if self.signature.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.public_key = ::std::option::Option::Some(is.read_bytes()?);
+ },
+ 18 => {
+ 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.public_key.as_ref() {
+ my_size += ::protobuf::rt::bytes_size(1, &v);
+ }
+ if let Some(v) = self.signature.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.public_key.as_ref() {
+ os.write_bytes(1, v)?;
+ }
+ if let Some(v) = self.signature.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() -> StellarSorobanAuthorizationSignature {
+ StellarSorobanAuthorizationSignature::new()
+ }
+
+ fn clear(&mut self) {
+ self.public_key = ::std::option::Option::None;
+ self.signature = ::std::option::Option::None;
+ self.special_fields.clear();
+ }
+
+ fn default_instance() -> &'static StellarSorobanAuthorizationSignature {
+ static instance: StellarSorobanAuthorizationSignature = StellarSorobanAuthorizationSignature {
+ public_key: ::std::option::Option::None,
+ signature: ::std::option::Option::None,
+ special_fields: ::protobuf::SpecialFields::new(),
+ };
+ &instance
+ }
+}
+
+impl ::protobuf::MessageFull for StellarSorobanAuthorizationSignature {
+ 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("StellarSorobanAuthorizationSignature").unwrap()).clone()
+ }
+}
+
+impl ::std::fmt::Display for StellarSorobanAuthorizationSignature {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ ::protobuf::text_format::fmt(self, f)
+ }
+}
+
+impl ::protobuf::reflect::ProtobufValue for StellarSorobanAuthorizationSignature {
+ type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
+}
+
// @@protoc_insertion_point(message:hw.trezor.messages.stellar.StellarTxExtRequest)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct StellarTxExtRequest {
@@ -10533,11 +11331,27 @@ static file_descriptor_proto_data: &'static [u8] = b"\
ourceAccount\x12K\n\x08function\x18\x02\x20\x02(\x0b2/.hw.trezor.message\
s.stellar.StellarHostFunctionR\x08function\x12P\n\x04auth\x18\x03\x20\
\x03(\x0b2<.hw.trezor.messages.stellar.StellarSorobanAuthorizationEntryR\
- \x04auth\"\x15\n\x13StellarTxExtRequest\"?\n\x0cStellarTxExt\x12\x0c\n\
- \x01v\x18\x01\x20\x02(\x11R\x01v\x12!\n\x0csoroban_data\x18\x02\x20\x01(\
- \x0cR\x0bsorobanData*=\n\x10StellarAssetType\x12\n\n\x06NATIVE\x10\0\x12\
- \r\n\tALPHANUM4\x10\x01\x12\x0e\n\nALPHANUM12\x10\x02B;\n#com.satoshilab\
- s.trezor.lib.protobufB\x14TrezorMessageStellar\
+ \x04auth\"\x86\x06\n\x1fStellarSignSorobanAuthorization\x12\x1b\n\taddre\
+ ss_n\x18\x01\x20\x03(\rR\x08addressN\x12-\n\x12network_passphrase\x18\
+ \x02\x20\x02(\tR\x11networkPassphrase\x12\x88\x01\n\renvelope_type\x18\
+ \x03\x20\x02(\x0e2c.hw.trezor.messages.stellar.StellarSignSorobanAuthori\
+ zation.StellarSorobanAuthorizationEnvelopeTypeR\x0cenvelopeType\x12\xaf\
+ \x01\n\"soroban_authorization_with_address\x18\x04\x20\x01(\x0b2b.hw.tre\
+ zor.messages.stellar.StellarSignSorobanAuthorization.StellarSorobanAutho\
+ rizationWithAddressR\x1fsorobanAuthorizationWithAddress\x1a\xf8\x01\n&St\
+ ellarSorobanAuthorizationWithAddress\x12\x14\n\x05nonce\x18\x01\x20\x02(\
+ \x12R\x05nonce\x12>\n\x1bsignature_expiration_ledger\x18\x02\x20\x02(\rR\
+ \x19signatureExpirationLedger\x12\x18\n\x07address\x18\x03\x20\x02(\tR\
+ \x07address\x12^\n\ninvocation\x18\x04\x20\x02(\x0b2>.hw.trezor.messages\
+ .stellar.StellarSorobanAuthorizedInvocationR\ninvocation\"_\n'StellarSor\
+ obanAuthorizationEnvelopeType\x124\n0ENVELOPE_TYPE_SOROBAN_AUTHORIZATION\
+ _WITH_ADDRESS\x10\n\"c\n$StellarSorobanAuthorizationSignature\x12\x1d\n\
+ \npublic_key\x18\x01\x20\x02(\x0cR\tpublicKey\x12\x1c\n\tsignature\x18\
+ \x02\x20\x02(\x0cR\tsignature\"\x15\n\x13StellarTxExtRequest\"?\n\x0cSte\
+ llarTxExt\x12\x0c\n\x01v\x18\x01\x20\x02(\x11R\x01v\x12!\n\x0csoroban_da\
+ ta\x18\x02\x20\x01(\x0cR\x0bsorobanData*=\n\x10StellarAssetType\x12\n\n\
+ \x06NATIVE\x10\0\x12\r\n\tALPHANUM4\x10\x01\x12\x0e\n\nALPHANUM12\x10\
+ \x02B;\n#com.satoshilabs.trezor.lib.protobufB\x14TrezorMessageStellar\
";
/// `FileDescriptorProto` object which was a source for this generated file
@@ -10556,7 +11370,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::messages_common::file_descriptor().clone());
- let mut messages = ::std::vec::Vec::with_capacity(36);
+ let mut messages = ::std::vec::Vec::with_capacity(39);
messages.push(StellarAsset::generated_message_descriptor_data());
messages.push(StellarGetAddress::generated_message_descriptor_data());
messages.push(StellarAddress::generated_message_descriptor_data());
@@ -10586,6 +11400,8 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
messages.push(StellarSorobanCredentials::generated_message_descriptor_data());
messages.push(StellarSorobanAuthorizationEntry::generated_message_descriptor_data());
messages.push(StellarInvokeHostFunctionOp::generated_message_descriptor_data());
+ messages.push(StellarSignSorobanAuthorization::generated_message_descriptor_data());
+ messages.push(StellarSorobanAuthorizationSignature::generated_message_descriptor_data());
messages.push(StellarTxExtRequest::generated_message_descriptor_data());
messages.push(StellarTxExt::generated_message_descriptor_data());
messages.push(stellar_scval::StellarUInt128Parts::generated_message_descriptor_data());
@@ -10593,7 +11409,8 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
messages.push(stellar_scval::StellarUInt256Parts::generated_message_descriptor_data());
messages.push(stellar_scval::StellarInt256Parts::generated_message_descriptor_data());
messages.push(stellar_scval::StellarSCValMapEntry::generated_message_descriptor_data());
- let mut enums = ::std::vec::Vec::with_capacity(7);
+ messages.push(stellar_sign_soroban_authorization::StellarSorobanAuthorizationWithAddress::generated_message_descriptor_data());
+ let mut enums = ::std::vec::Vec::with_capacity(8);
enums.push(StellarAssetType::generated_enum_descriptor_data());
enums.push(stellar_sign_tx::StellarMemoType::generated_enum_descriptor_data());
enums.push(stellar_set_options_op::StellarSignerType::generated_enum_descriptor_data());
@@ -10601,6 +11418,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
enums.push(stellar_soroban_authorized_function::StellarSorobanAuthorizedFunctionType::generated_enum_descriptor_data());
enums.push(stellar_host_function::StellarHostFunctionType::generated_enum_descriptor_data());
enums.push(stellar_soroban_credentials::StellarSorobanCredentialsType::generated_enum_descriptor_data());
+ enums.push(stellar_sign_soroban_authorization::StellarSorobanAuthorizationEnvelopeType::generated_enum_descriptor_data());
::protobuf::reflect::GeneratedFileDescriptor::new_generated(
file_descriptor_proto(),
deps,
Why this scored 36/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.