From 2de8acc141e04eefbb75109d43214bb45b791f0a Mon Sep 17 00:00:00 2001 From: obrusvit Date: Sun, 25 Feb 2024 15:10:47 +0100 Subject: [PATCH] chore(core): remove CoSi functionality trezorctl CoSi feature is removed from all models --- common/protob/messages-crypto.proto | 41 - common/protob/messages.proto | 7 +- core/.changelog.d/3442.removed.1 | 1 + core/src/all_modules.py | 2 - core/src/apps/misc/cosi_commit.py | 113 --- core/src/apps/workflow_handlers.py | 2 - core/src/trezor/enums/MessageType.py | 4 - core/src/trezor/enums/__init__.py | 4 - core/src/trezor/messages.py | 64 -- .../firmware/protob/messages-crypto.options | 7 - python/.changelog.d/3442.removed.1 | 1 + python/src/trezorlib/cli/cosi.py | 82 -- python/src/trezorlib/cli/trezorctl.py | 2 - python/src/trezorlib/cosi.py | 48 +- python/src/trezorlib/messages.py | 75 -- rust/trezor-client/src/messages/generated.rs | 4 - .../src/protos/generated/messages.rs | 748 ++++++++------- .../src/protos/generated/messages_crypto.rs | 874 +----------------- tests/device_tests/misc/test_cosi.py | 164 ---- tests/ui_tests/fixtures.json | 371 -------- 20 files changed, 371 insertions(+), 2243 deletions(-) create mode 100644 core/.changelog.d/3442.removed.1 delete mode 100644 core/src/apps/misc/cosi_commit.py create mode 100644 python/.changelog.d/3442.removed.1 delete mode 100644 python/src/trezorlib/cli/cosi.py delete mode 100644 tests/device_tests/misc/test_cosi.py diff --git a/common/protob/messages-crypto.proto b/common/protob/messages-crypto.proto index f33f9609e..de39735d2 100644 --- a/common/protob/messages-crypto.proto +++ b/common/protob/messages-crypto.proto @@ -89,44 +89,3 @@ message ECDHSessionKey { required bytes session_key = 1; // ECDH session key optional bytes public_key = 2; // identity public key } - -/** - * Request: Ask device to commit to CoSi signing - * @start - * @next CosiCommitment - * @next Failure - */ -message CosiCommit { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes data = 2 [deprecated=true]; // Data to be signed. Deprecated in 1.10.2, the field is not needed, since CoSi commitments are no longer deterministic. -} - -/** - * Response: Contains a CoSi commitment - * @end - */ -message CosiCommitment { - required bytes commitment = 1; // Commitment - required bytes pubkey = 2; // Public key -} - -/** - * Request: Ask device to sign using CoSi - * @start - * @next CosiSignature - * @next Failure - */ -message CosiSign { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - required bytes data = 2; // Data to be signed - required bytes global_commitment = 3; // Aggregated commitment - required bytes global_pubkey = 4; // Aggregated public key -} - -/** - * Response: Contains a CoSi signature - * @end - */ -message CosiSignature { - required bytes signature = 1; // Signature -} diff --git a/common/protob/messages.proto b/common/protob/messages.proto index efed3f666..b62f6b8de 100644 --- a/common/protob/messages.proto +++ b/common/protob/messages.proto @@ -169,11 +169,8 @@ enum MessageType { MessageType_SignedIdentity = 54 [(bitcoin_only) = true, (wire_out) = true]; MessageType_GetECDHSessionKey = 61 [(bitcoin_only) = true, (wire_in) = true]; MessageType_ECDHSessionKey = 62 [(bitcoin_only) = true, (wire_out) = true]; - - MessageType_CosiCommit = 71 [(bitcoin_only) = true, (wire_in) = true]; - MessageType_CosiCommitment = 72 [(bitcoin_only) = true, (wire_out) = true]; - MessageType_CosiSign = 73 [(bitcoin_only) = true, (wire_in) = true]; - MessageType_CosiSignature = 74 [(bitcoin_only) = true, (wire_out) = true]; + // dropped: CosiCommit, CosiCommitment, CosiSign, CosiSignature + reserved 71 to 74; // Debug MessageType_DebugLinkDecision = 100 [(bitcoin_only) = true, (wire_debug_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; diff --git a/core/.changelog.d/3442.removed.1 b/core/.changelog.d/3442.removed.1 new file mode 100644 index 000000000..a72cca62d --- /dev/null +++ b/core/.changelog.d/3442.removed.1 @@ -0,0 +1 @@ +CoSi functionality diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 49ebfe40d..f76f8e798 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -373,8 +373,6 @@ apps.misc import apps.misc apps.misc.cipher_key_value import apps.misc.cipher_key_value -apps.misc.cosi_commit -import apps.misc.cosi_commit apps.misc.get_ecdh_session_key import apps.misc.get_ecdh_session_key apps.misc.get_entropy diff --git a/core/src/apps/misc/cosi_commit.py b/core/src/apps/misc/cosi_commit.py deleted file mode 100644 index b682ff7ab..000000000 --- a/core/src/apps/misc/cosi_commit.py +++ /dev/null @@ -1,113 +0,0 @@ -from typing import TYPE_CHECKING - -from trezor.enums import ButtonRequestType -from trezor.messages import CosiCommitment, CosiSign, CosiSignature -from trezor.wire import DataError - -from apps.common.paths import PathSchema, unharden - -if TYPE_CHECKING: - from trezor.messages import CosiCommit - -# This module implements the cosigner part of the CoSi collective signatures -# as described in https://dedis.cs.yale.edu/dissent/papers/witness.pdf - - -SCHEMA_SLIP18 = PathSchema.parse("m/10018'/address_index'/*'", slip44_id=()) -# SLIP-26: m/10026'/model'/type'/rotation_index' -# - `model`: typically ASCII string T1B1 etc. parsed as little-endian number, -# but can also be 0 or other values. Maximum allowed value is 0x7F7F7F7F, -# the maximum 4-byte ASCII string. -# - `type`: 0 = bootloader, 1 = vendorheader, 2 = firmware, 3 = definitions, 4 = reserved -# - `rotation_index`: a fixed 0' for now -SCHEMA_SLIP26 = PathSchema.parse("m/10026'/[0-2139062143]'/[0-4]'/0'", slip44_id=()) - - -def _decode_path(address_n: list[int]) -> str | None: - signing_types = { - 0: "bootloader", - 1: "vendor header", - 2: "firmware", - } - - if len(address_n) == 2 and SCHEMA_SLIP18.match(address_n): - signing_type = signing_types.get(unharden(address_n[1])) - if signing_type is None: - return None - return f"T2T1 {signing_type} (old-style)" - - if SCHEMA_SLIP26.match(address_n): - model = unharden(address_n[1]) - signing_type = unharden(address_n[2]) - if model == 0 and signing_type == 3: - return "External definitions" - - model_bytes = model.to_bytes(4, "little") - signing_type_str = signing_types.get(signing_type) - if ( - signing_type_str is not None - and len(model_bytes) == 4 - and all(0x20 <= b <= 0x7E for b in model_bytes) - ): - return f"{model_bytes.decode()} {signing_type_str}" - - return None - - -async def cosi_commit(msg: CosiCommit) -> CosiSignature: - import storage.cache as storage_cache - from trezor.crypto import cosi - from trezor.crypto.curve import ed25519 - from trezor.ui.layouts import confirm_blob, confirm_text - from trezor.wire.context import call - - from apps.common import paths - from apps.common.keychain import get_keychain - - keychain = await get_keychain("ed25519", [SCHEMA_SLIP18, SCHEMA_SLIP26]) - await paths.validate_path(keychain, msg.address_n) - - node = keychain.derive(msg.address_n) - seckey = node.private_key() - pubkey = ed25519.publickey(seckey) - - if not storage_cache.is_set(storage_cache.APP_MISC_COSI_COMMITMENT): - nonce, commitment = cosi.commit() - storage_cache.set(storage_cache.APP_MISC_COSI_NONCE, nonce) - storage_cache.set(storage_cache.APP_MISC_COSI_COMMITMENT, commitment) - commitment = storage_cache.get(storage_cache.APP_MISC_COSI_COMMITMENT) - if commitment is None: - raise RuntimeError - - sign_msg = await call( - CosiCommitment(commitment=commitment, pubkey=pubkey), CosiSign - ) - - if sign_msg.address_n != msg.address_n: - raise DataError("Mismatched address_n") - - path_description = _decode_path(sign_msg.address_n) - await confirm_text( - "cosi_confirm_key", - "COSI KEYS", - paths.address_n_to_str(sign_msg.address_n), - path_description, - ) - await confirm_blob( - "cosi_sign", - "COSI DATA", - sign_msg.data, - br_code=ButtonRequestType.ProtectCall, - ) - - # clear nonce from cache - nonce = storage_cache.get(storage_cache.APP_MISC_COSI_NONCE) - storage_cache.delete(storage_cache.APP_MISC_COSI_COMMITMENT) - storage_cache.delete(storage_cache.APP_MISC_COSI_NONCE) - if nonce is None: - raise RuntimeError - - signature = cosi.sign( - seckey, sign_msg.data, nonce, sign_msg.global_commitment, sign_msg.global_pubkey - ) - return CosiSignature(signature=signature) diff --git a/core/src/apps/workflow_handlers.py b/core/src/apps/workflow_handlers.py index 204e27a8c..d8a7f32d2 100644 --- a/core/src/apps/workflow_handlers.py +++ b/core/src/apps/workflow_handlers.py @@ -96,8 +96,6 @@ def _find_message_handler_module(msg_type: int) -> str: return "apps.misc.cipher_key_value" if msg_type == MessageType.GetFirmwareHash: return "apps.misc.get_firmware_hash" - if msg_type == MessageType.CosiCommit: - return "apps.misc.cosi_commit" if not utils.BITCOIN_ONLY: if msg_type == MessageType.SetU2FCounter: diff --git a/core/src/trezor/enums/MessageType.py b/core/src/trezor/enums/MessageType.py index a078d2394..ec6a8317f 100644 --- a/core/src/trezor/enums/MessageType.py +++ b/core/src/trezor/enums/MessageType.py @@ -79,10 +79,6 @@ SignIdentity = 53 SignedIdentity = 54 GetECDHSessionKey = 61 ECDHSessionKey = 62 -CosiCommit = 71 -CosiCommitment = 72 -CosiSign = 73 -CosiSignature = 74 DebugLinkDecision = 100 DebugLinkGetState = 101 DebugLinkState = 102 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index a3a13ef27..30e596843 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -102,10 +102,6 @@ if TYPE_CHECKING: SignedIdentity = 54 GetECDHSessionKey = 61 ECDHSessionKey = 62 - CosiCommit = 71 - CosiCommitment = 72 - CosiSign = 73 - CosiSignature = 74 DebugLinkDecision = 100 DebugLinkGetState = 101 DebugLinkState = 102 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index e90c7eb50..f80e56e1d 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -2031,70 +2031,6 @@ if TYPE_CHECKING: def is_type_of(cls, msg: Any) -> TypeGuard["ECDHSessionKey"]: return isinstance(msg, cls) - class CosiCommit(protobuf.MessageType): - address_n: "list[int]" - - def __init__( - self, - *, - address_n: "list[int] | None" = None, - ) -> None: - pass - - @classmethod - def is_type_of(cls, msg: Any) -> TypeGuard["CosiCommit"]: - return isinstance(msg, cls) - - class CosiCommitment(protobuf.MessageType): - commitment: "bytes" - pubkey: "bytes" - - def __init__( - self, - *, - commitment: "bytes", - pubkey: "bytes", - ) -> None: - pass - - @classmethod - def is_type_of(cls, msg: Any) -> TypeGuard["CosiCommitment"]: - return isinstance(msg, cls) - - class CosiSign(protobuf.MessageType): - address_n: "list[int]" - data: "bytes" - global_commitment: "bytes" - global_pubkey: "bytes" - - def __init__( - self, - *, - data: "bytes", - global_commitment: "bytes", - global_pubkey: "bytes", - address_n: "list[int] | None" = None, - ) -> None: - pass - - @classmethod - def is_type_of(cls, msg: Any) -> TypeGuard["CosiSign"]: - return isinstance(msg, cls) - - class CosiSignature(protobuf.MessageType): - signature: "bytes" - - def __init__( - self, - *, - signature: "bytes", - ) -> None: - pass - - @classmethod - def is_type_of(cls, msg: Any) -> TypeGuard["CosiSignature"]: - return isinstance(msg, cls) - class Initialize(protobuf.MessageType): session_id: "bytes | None" derive_cardano: "bool | None" diff --git a/legacy/firmware/protob/messages-crypto.options b/legacy/firmware/protob/messages-crypto.options index 5d6acaa53..eba27de9d 100644 --- a/legacy/firmware/protob/messages-crypto.options +++ b/legacy/firmware/protob/messages-crypto.options @@ -24,10 +24,3 @@ GetECDHSessionKey.ecdsa_curve_name max_size:32 ECDHSessionKey.session_key max_size:65 ECDHSessionKey.public_key max_size:33 - -# Unused messages. -# TODO might delete as-well? -CosiCommit skip_message:true -CosiCommitment skip_message:true -CosiSign skip_message:true -CosiSignature skip_message:true diff --git a/python/.changelog.d/3442.removed.1 b/python/.changelog.d/3442.removed.1 new file mode 100644 index 000000000..a72cca62d --- /dev/null +++ b/python/.changelog.d/3442.removed.1 @@ -0,0 +1 @@ +CoSi functionality diff --git a/python/src/trezorlib/cli/cosi.py b/python/src/trezorlib/cli/cosi.py deleted file mode 100644 index 95b1e816e..000000000 --- a/python/src/trezorlib/cli/cosi.py +++ /dev/null @@ -1,82 +0,0 @@ -# This file is part of the Trezor project. -# -# Copyright (C) 2012-2022 SatoshiLabs and contributors -# -# This library is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# as published by the Free Software Foundation. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the License along with this library. -# If not, see . - -from typing import TYPE_CHECKING, Optional - -import click - -from .. import cosi, tools -from . import with_client - -if TYPE_CHECKING: - from .. import messages - from ..client import TrezorClient - -PATH_HELP = "BIP-32 path, e.g. m/10018h/0h" - - -@click.group(name="cosi") -def cli() -> None: - """CoSi (Cothority / collective signing) commands.""" - - -def cosi_warn(client: "TrezorClient") -> None: - if client.features.model == "1" and client.version < (1, 11, 2): - click.echo("WARNING: CoSi signing on your Trezor is insecure.") - click.echo("Please update your Trezor to firmware version 1.11.2 or newer.") - click.echo("If you used CoSi in the past, consider rotating your keys.") - raise click.Abort() - - -@cli.command() -@click.option("-n", "--address", required=True, help=PATH_HELP) -@click.argument("data_deprecated", required=False) -@with_client -def commit( - client: "TrezorClient", address: str, data_deprecated: Optional[str] -) -> "messages.CosiCommitment": - """Ask device to commit to CoSi signing.""" - cosi_warn(client) - if data_deprecated is not None: - click.echo("Warning: data argument is deprecated", err=True) - - address_n = tools.parse_path(address) - return cosi.commit(client, address_n) - - -@cli.command() -@click.option("-n", "--address", required=True, help=PATH_HELP) -@click.argument("data") -@click.argument("global_commitment") -@click.argument("global_pubkey") -@with_client -def sign( - client: "TrezorClient", - address: str, - data: str, - global_commitment: str, - global_pubkey: str, -) -> "messages.CosiSignature": - """Ask device to sign using CoSi.""" - cosi_warn(client) - address_n = tools.parse_path(address) - return cosi.sign( - client, - address_n, - bytes.fromhex(data), - bytes.fromhex(global_commitment), - bytes.fromhex(global_pubkey), - ) diff --git a/python/src/trezorlib/cli/trezorctl.py b/python/src/trezorlib/cli/trezorctl.py index 2e030ed93..625baab5e 100755 --- a/python/src/trezorlib/cli/trezorctl.py +++ b/python/src/trezorlib/cli/trezorctl.py @@ -34,7 +34,6 @@ from . import ( binance, btc, cardano, - cosi, crypto, debug, device, @@ -402,7 +401,6 @@ def wait_for_emulator(obj: TrezorConnection, timeout: float) -> None: cli.add_command(binance.cli) cli.add_command(btc.cli) cli.add_command(cardano.cli) -cli.add_command(cosi.cli) cli.add_command(crypto.cli) cli.add_command(device.cli) cli.add_command(eos.cli) diff --git a/python/src/trezorlib/cosi.py b/python/src/trezorlib/cosi.py index c9ed57f0b..cabe37665 100644 --- a/python/src/trezorlib/cosi.py +++ b/python/src/trezorlib/cosi.py @@ -14,17 +14,10 @@ # You should have received a copy of the License along with this library. # If not, see . -import warnings from functools import reduce -from typing import TYPE_CHECKING, Iterable, Optional, Sequence, Tuple +from typing import Iterable, Sequence, Tuple -from . import _ed25519, messages -from .tools import expect - -if TYPE_CHECKING: - from .client import TrezorClient - from .protobuf import MessageType - from .tools import Address +from . import _ed25519 # XXX, these could be NewType's, but that would infect users of the cosi module with these types as well. # Unsure if we want that. @@ -111,7 +104,7 @@ def verify( if len(selected_keys) < sigs_required: raise _ed25519.SignatureMismatch("Insufficient number of signatures.") global_pk = combine_keys(selected_keys) - return verify_combined(signature, digest, global_pk) + verify_combined(signature, digest, global_pk) def pubkey_from_privkey(privkey: Ed25519PrivateKey) -> Ed25519PublicPoint: @@ -152,38 +145,3 @@ def sign_with_privkeys(digest: bytes, privkeys: Sequence[bytes]) -> bytes: ] return combine_sig(global_R, sigs) - - -# ====== Client functions ====== # - - -@expect(messages.CosiCommitment) -def commit( - client: "TrezorClient", n: "Address", data: Optional[bytes] = None -) -> "MessageType": - if data is not None: - warnings.warn( - "'data' argument is deprecated", - DeprecationWarning, - stacklevel=2, - ) - - return client.call(messages.CosiCommit(address_n=n)) - - -@expect(messages.CosiSignature) -def sign( - client: "TrezorClient", - n: "Address", - data: bytes, - global_commitment: bytes, - global_pubkey: bytes, -) -> "MessageType": - return client.call( - messages.CosiSign( - address_n=n, - data=data, - global_commitment=global_commitment, - global_pubkey=global_pubkey, - ) - ) diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 5cb4090c8..b9ad0ce0b 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -110,10 +110,6 @@ class MessageType(IntEnum): SignedIdentity = 54 GetECDHSessionKey = 61 ECDHSessionKey = 62 - CosiCommit = 71 - CosiCommitment = 72 - CosiSign = 73 - CosiSignature = 74 DebugLinkDecision = 100 DebugLinkGetState = 101 DebugLinkState = 102 @@ -3135,77 +3131,6 @@ class ECDHSessionKey(protobuf.MessageType): self.public_key = public_key -class CosiCommit(protobuf.MessageType): - MESSAGE_WIRE_TYPE = 71 - FIELDS = { - 1: protobuf.Field("address_n", "uint32", repeated=True, required=False, default=None), - 2: protobuf.Field("data", "bytes", repeated=False, required=False, default=None), - } - - def __init__( - self, - *, - address_n: Optional[Sequence["int"]] = None, - data: Optional["bytes"] = None, - ) -> None: - self.address_n: Sequence["int"] = address_n if address_n is not None else [] - self.data = data - - -class CosiCommitment(protobuf.MessageType): - MESSAGE_WIRE_TYPE = 72 - FIELDS = { - 1: protobuf.Field("commitment", "bytes", repeated=False, required=True), - 2: protobuf.Field("pubkey", "bytes", repeated=False, required=True), - } - - def __init__( - self, - *, - commitment: "bytes", - pubkey: "bytes", - ) -> None: - self.commitment = commitment - self.pubkey = pubkey - - -class CosiSign(protobuf.MessageType): - MESSAGE_WIRE_TYPE = 73 - FIELDS = { - 1: protobuf.Field("address_n", "uint32", repeated=True, required=False, default=None), - 2: protobuf.Field("data", "bytes", repeated=False, required=True), - 3: protobuf.Field("global_commitment", "bytes", repeated=False, required=True), - 4: protobuf.Field("global_pubkey", "bytes", repeated=False, required=True), - } - - def __init__( - self, - *, - data: "bytes", - global_commitment: "bytes", - global_pubkey: "bytes", - address_n: Optional[Sequence["int"]] = None, - ) -> None: - self.address_n: Sequence["int"] = address_n if address_n is not None else [] - self.data = data - self.global_commitment = global_commitment - self.global_pubkey = global_pubkey - - -class CosiSignature(protobuf.MessageType): - MESSAGE_WIRE_TYPE = 74 - FIELDS = { - 1: protobuf.Field("signature", "bytes", repeated=False, required=True), - } - - def __init__( - self, - *, - signature: "bytes", - ) -> None: - self.signature = signature - - class Initialize(protobuf.MessageType): MESSAGE_WIRE_TYPE = 0 FIELDS = { diff --git a/rust/trezor-client/src/messages/generated.rs b/rust/trezor-client/src/messages/generated.rs index 5cf5016ec..69614c6b6 100644 --- a/rust/trezor-client/src/messages/generated.rs +++ b/rust/trezor-client/src/messages/generated.rs @@ -64,10 +64,6 @@ trezor_message_impl! { SignedIdentity => MessageType_SignedIdentity, GetECDHSessionKey => MessageType_GetECDHSessionKey, ECDHSessionKey => MessageType_ECDHSessionKey, - CosiCommit => MessageType_CosiCommit, - CosiCommitment => MessageType_CosiCommitment, - CosiSign => MessageType_CosiSign, - CosiSignature => MessageType_CosiSignature, DebugLinkDecision => MessageType_DebugLinkDecision, DebugLinkGetState => MessageType_DebugLinkGetState, DebugLinkState => MessageType_DebugLinkState, diff --git a/rust/trezor-client/src/protos/generated/messages.rs b/rust/trezor-client/src/protos/generated/messages.rs index a559a5336..548d6995c 100644 --- a/rust/trezor-client/src/protos/generated/messages.rs +++ b/rust/trezor-client/src/protos/generated/messages.rs @@ -190,14 +190,6 @@ pub enum MessageType { MessageType_GetECDHSessionKey = 61, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_ECDHSessionKey) MessageType_ECDHSessionKey = 62, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_CosiCommit) - MessageType_CosiCommit = 71, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_CosiCommitment) - MessageType_CosiCommitment = 72, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_CosiSign) - MessageType_CosiSign = 73, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_CosiSignature) - MessageType_CosiSignature = 74, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_DebugLinkDecision) MessageType_DebugLinkDecision = 100, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_DebugLinkGetState) @@ -608,10 +600,6 @@ impl ::protobuf::Enum for MessageType { 54 => ::std::option::Option::Some(MessageType::MessageType_SignedIdentity), 61 => ::std::option::Option::Some(MessageType::MessageType_GetECDHSessionKey), 62 => ::std::option::Option::Some(MessageType::MessageType_ECDHSessionKey), - 71 => ::std::option::Option::Some(MessageType::MessageType_CosiCommit), - 72 => ::std::option::Option::Some(MessageType::MessageType_CosiCommitment), - 73 => ::std::option::Option::Some(MessageType::MessageType_CosiSign), - 74 => ::std::option::Option::Some(MessageType::MessageType_CosiSignature), 100 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkDecision), 101 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkGetState), 102 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkState), @@ -858,10 +846,6 @@ impl ::protobuf::Enum for MessageType { "MessageType_SignedIdentity" => ::std::option::Option::Some(MessageType::MessageType_SignedIdentity), "MessageType_GetECDHSessionKey" => ::std::option::Option::Some(MessageType::MessageType_GetECDHSessionKey), "MessageType_ECDHSessionKey" => ::std::option::Option::Some(MessageType::MessageType_ECDHSessionKey), - "MessageType_CosiCommit" => ::std::option::Option::Some(MessageType::MessageType_CosiCommit), - "MessageType_CosiCommitment" => ::std::option::Option::Some(MessageType::MessageType_CosiCommitment), - "MessageType_CosiSign" => ::std::option::Option::Some(MessageType::MessageType_CosiSign), - "MessageType_CosiSignature" => ::std::option::Option::Some(MessageType::MessageType_CosiSignature), "MessageType_DebugLinkDecision" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkDecision), "MessageType_DebugLinkGetState" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkGetState), "MessageType_DebugLinkState" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkState), @@ -1107,10 +1091,6 @@ impl ::protobuf::Enum for MessageType { MessageType::MessageType_SignedIdentity, MessageType::MessageType_GetECDHSessionKey, MessageType::MessageType_ECDHSessionKey, - MessageType::MessageType_CosiCommit, - MessageType::MessageType_CosiCommitment, - MessageType::MessageType_CosiSign, - MessageType::MessageType_CosiSignature, MessageType::MessageType_DebugLinkDecision, MessageType::MessageType_DebugLinkGetState, MessageType::MessageType_DebugLinkState, @@ -1362,169 +1342,165 @@ impl ::protobuf::EnumFull for MessageType { MessageType::MessageType_SignedIdentity => 78, MessageType::MessageType_GetECDHSessionKey => 79, MessageType::MessageType_ECDHSessionKey => 80, - MessageType::MessageType_CosiCommit => 81, - MessageType::MessageType_CosiCommitment => 82, - MessageType::MessageType_CosiSign => 83, - MessageType::MessageType_CosiSignature => 84, - MessageType::MessageType_DebugLinkDecision => 85, - MessageType::MessageType_DebugLinkGetState => 86, - MessageType::MessageType_DebugLinkState => 87, - MessageType::MessageType_DebugLinkStop => 88, - MessageType::MessageType_DebugLinkLog => 89, - MessageType::MessageType_DebugLinkMemoryRead => 90, - MessageType::MessageType_DebugLinkMemory => 91, - MessageType::MessageType_DebugLinkMemoryWrite => 92, - MessageType::MessageType_DebugLinkFlashErase => 93, - MessageType::MessageType_DebugLinkLayout => 94, - MessageType::MessageType_DebugLinkReseedRandom => 95, - MessageType::MessageType_DebugLinkRecordScreen => 96, - MessageType::MessageType_DebugLinkEraseSdCard => 97, - MessageType::MessageType_DebugLinkWatchLayout => 98, - MessageType::MessageType_DebugLinkResetDebugEvents => 99, - MessageType::MessageType_EthereumGetPublicKey => 100, - MessageType::MessageType_EthereumPublicKey => 101, - MessageType::MessageType_EthereumGetAddress => 102, - MessageType::MessageType_EthereumAddress => 103, - MessageType::MessageType_EthereumSignTx => 104, - MessageType::MessageType_EthereumSignTxEIP1559 => 105, - MessageType::MessageType_EthereumTxRequest => 106, - MessageType::MessageType_EthereumTxAck => 107, - MessageType::MessageType_EthereumSignMessage => 108, - MessageType::MessageType_EthereumVerifyMessage => 109, - MessageType::MessageType_EthereumMessageSignature => 110, - MessageType::MessageType_EthereumSignTypedData => 111, - MessageType::MessageType_EthereumTypedDataStructRequest => 112, - MessageType::MessageType_EthereumTypedDataStructAck => 113, - MessageType::MessageType_EthereumTypedDataValueRequest => 114, - MessageType::MessageType_EthereumTypedDataValueAck => 115, - MessageType::MessageType_EthereumTypedDataSignature => 116, - MessageType::MessageType_EthereumSignTypedHash => 117, - MessageType::MessageType_NEMGetAddress => 118, - MessageType::MessageType_NEMAddress => 119, - MessageType::MessageType_NEMSignTx => 120, - MessageType::MessageType_NEMSignedTx => 121, - MessageType::MessageType_NEMDecryptMessage => 122, - MessageType::MessageType_NEMDecryptedMessage => 123, - MessageType::MessageType_TezosGetAddress => 124, - MessageType::MessageType_TezosAddress => 125, - MessageType::MessageType_TezosSignTx => 126, - MessageType::MessageType_TezosSignedTx => 127, - MessageType::MessageType_TezosGetPublicKey => 128, - MessageType::MessageType_TezosPublicKey => 129, - MessageType::MessageType_StellarSignTx => 130, - MessageType::MessageType_StellarTxOpRequest => 131, - MessageType::MessageType_StellarGetAddress => 132, - MessageType::MessageType_StellarAddress => 133, - MessageType::MessageType_StellarCreateAccountOp => 134, - MessageType::MessageType_StellarPaymentOp => 135, - MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 136, - MessageType::MessageType_StellarManageSellOfferOp => 137, - MessageType::MessageType_StellarCreatePassiveSellOfferOp => 138, - MessageType::MessageType_StellarSetOptionsOp => 139, - MessageType::MessageType_StellarChangeTrustOp => 140, - MessageType::MessageType_StellarAllowTrustOp => 141, - MessageType::MessageType_StellarAccountMergeOp => 142, - MessageType::MessageType_StellarManageDataOp => 143, - MessageType::MessageType_StellarBumpSequenceOp => 144, - MessageType::MessageType_StellarManageBuyOfferOp => 145, - MessageType::MessageType_StellarPathPaymentStrictSendOp => 146, - MessageType::MessageType_StellarClaimClaimableBalanceOp => 147, - MessageType::MessageType_StellarSignedTx => 148, - MessageType::MessageType_CardanoGetPublicKey => 149, - MessageType::MessageType_CardanoPublicKey => 150, - MessageType::MessageType_CardanoGetAddress => 151, - MessageType::MessageType_CardanoAddress => 152, - MessageType::MessageType_CardanoTxItemAck => 153, - MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 154, - MessageType::MessageType_CardanoTxWitnessRequest => 155, - MessageType::MessageType_CardanoTxWitnessResponse => 156, - MessageType::MessageType_CardanoTxHostAck => 157, - MessageType::MessageType_CardanoTxBodyHash => 158, - MessageType::MessageType_CardanoSignTxFinished => 159, - MessageType::MessageType_CardanoSignTxInit => 160, - MessageType::MessageType_CardanoTxInput => 161, - MessageType::MessageType_CardanoTxOutput => 162, - MessageType::MessageType_CardanoAssetGroup => 163, - MessageType::MessageType_CardanoToken => 164, - MessageType::MessageType_CardanoTxCertificate => 165, - MessageType::MessageType_CardanoTxWithdrawal => 166, - MessageType::MessageType_CardanoTxAuxiliaryData => 167, - MessageType::MessageType_CardanoPoolOwner => 168, - MessageType::MessageType_CardanoPoolRelayParameters => 169, - MessageType::MessageType_CardanoGetNativeScriptHash => 170, - MessageType::MessageType_CardanoNativeScriptHash => 171, - MessageType::MessageType_CardanoTxMint => 172, - MessageType::MessageType_CardanoTxCollateralInput => 173, - MessageType::MessageType_CardanoTxRequiredSigner => 174, - MessageType::MessageType_CardanoTxInlineDatumChunk => 175, - MessageType::MessageType_CardanoTxReferenceScriptChunk => 176, - MessageType::MessageType_CardanoTxReferenceInput => 177, - MessageType::MessageType_RippleGetAddress => 178, - MessageType::MessageType_RippleAddress => 179, - MessageType::MessageType_RippleSignTx => 180, - MessageType::MessageType_RippleSignedTx => 181, - MessageType::MessageType_MoneroTransactionInitRequest => 182, - MessageType::MessageType_MoneroTransactionInitAck => 183, - MessageType::MessageType_MoneroTransactionSetInputRequest => 184, - MessageType::MessageType_MoneroTransactionSetInputAck => 185, - MessageType::MessageType_MoneroTransactionInputViniRequest => 186, - MessageType::MessageType_MoneroTransactionInputViniAck => 187, - MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 188, - MessageType::MessageType_MoneroTransactionAllInputsSetAck => 189, - MessageType::MessageType_MoneroTransactionSetOutputRequest => 190, - MessageType::MessageType_MoneroTransactionSetOutputAck => 191, - MessageType::MessageType_MoneroTransactionAllOutSetRequest => 192, - MessageType::MessageType_MoneroTransactionAllOutSetAck => 193, - MessageType::MessageType_MoneroTransactionSignInputRequest => 194, - MessageType::MessageType_MoneroTransactionSignInputAck => 195, - MessageType::MessageType_MoneroTransactionFinalRequest => 196, - MessageType::MessageType_MoneroTransactionFinalAck => 197, - MessageType::MessageType_MoneroKeyImageExportInitRequest => 198, - MessageType::MessageType_MoneroKeyImageExportInitAck => 199, - MessageType::MessageType_MoneroKeyImageSyncStepRequest => 200, - MessageType::MessageType_MoneroKeyImageSyncStepAck => 201, - MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 202, - MessageType::MessageType_MoneroKeyImageSyncFinalAck => 203, - MessageType::MessageType_MoneroGetAddress => 204, - MessageType::MessageType_MoneroAddress => 205, - MessageType::MessageType_MoneroGetWatchKey => 206, - MessageType::MessageType_MoneroWatchKey => 207, - MessageType::MessageType_DebugMoneroDiagRequest => 208, - MessageType::MessageType_DebugMoneroDiagAck => 209, - MessageType::MessageType_MoneroGetTxKeyRequest => 210, - MessageType::MessageType_MoneroGetTxKeyAck => 211, - MessageType::MessageType_MoneroLiveRefreshStartRequest => 212, - MessageType::MessageType_MoneroLiveRefreshStartAck => 213, - MessageType::MessageType_MoneroLiveRefreshStepRequest => 214, - MessageType::MessageType_MoneroLiveRefreshStepAck => 215, - MessageType::MessageType_MoneroLiveRefreshFinalRequest => 216, - MessageType::MessageType_MoneroLiveRefreshFinalAck => 217, - MessageType::MessageType_EosGetPublicKey => 218, - MessageType::MessageType_EosPublicKey => 219, - MessageType::MessageType_EosSignTx => 220, - MessageType::MessageType_EosTxActionRequest => 221, - MessageType::MessageType_EosTxActionAck => 222, - MessageType::MessageType_EosSignedTx => 223, - MessageType::MessageType_BinanceGetAddress => 224, - MessageType::MessageType_BinanceAddress => 225, - MessageType::MessageType_BinanceGetPublicKey => 226, - MessageType::MessageType_BinancePublicKey => 227, - MessageType::MessageType_BinanceSignTx => 228, - MessageType::MessageType_BinanceTxRequest => 229, - MessageType::MessageType_BinanceTransferMsg => 230, - MessageType::MessageType_BinanceOrderMsg => 231, - MessageType::MessageType_BinanceCancelMsg => 232, - MessageType::MessageType_BinanceSignedTx => 233, - MessageType::MessageType_WebAuthnListResidentCredentials => 234, - MessageType::MessageType_WebAuthnCredentials => 235, - MessageType::MessageType_WebAuthnAddResidentCredential => 236, - MessageType::MessageType_WebAuthnRemoveResidentCredential => 237, - MessageType::MessageType_SolanaGetPublicKey => 238, - MessageType::MessageType_SolanaPublicKey => 239, - MessageType::MessageType_SolanaGetAddress => 240, - MessageType::MessageType_SolanaAddress => 241, - MessageType::MessageType_SolanaSignTx => 242, - MessageType::MessageType_SolanaTxSignature => 243, + MessageType::MessageType_DebugLinkDecision => 81, + MessageType::MessageType_DebugLinkGetState => 82, + MessageType::MessageType_DebugLinkState => 83, + MessageType::MessageType_DebugLinkStop => 84, + MessageType::MessageType_DebugLinkLog => 85, + MessageType::MessageType_DebugLinkMemoryRead => 86, + MessageType::MessageType_DebugLinkMemory => 87, + MessageType::MessageType_DebugLinkMemoryWrite => 88, + MessageType::MessageType_DebugLinkFlashErase => 89, + MessageType::MessageType_DebugLinkLayout => 90, + MessageType::MessageType_DebugLinkReseedRandom => 91, + MessageType::MessageType_DebugLinkRecordScreen => 92, + MessageType::MessageType_DebugLinkEraseSdCard => 93, + MessageType::MessageType_DebugLinkWatchLayout => 94, + MessageType::MessageType_DebugLinkResetDebugEvents => 95, + MessageType::MessageType_EthereumGetPublicKey => 96, + MessageType::MessageType_EthereumPublicKey => 97, + MessageType::MessageType_EthereumGetAddress => 98, + MessageType::MessageType_EthereumAddress => 99, + MessageType::MessageType_EthereumSignTx => 100, + MessageType::MessageType_EthereumSignTxEIP1559 => 101, + MessageType::MessageType_EthereumTxRequest => 102, + MessageType::MessageType_EthereumTxAck => 103, + MessageType::MessageType_EthereumSignMessage => 104, + MessageType::MessageType_EthereumVerifyMessage => 105, + MessageType::MessageType_EthereumMessageSignature => 106, + MessageType::MessageType_EthereumSignTypedData => 107, + MessageType::MessageType_EthereumTypedDataStructRequest => 108, + MessageType::MessageType_EthereumTypedDataStructAck => 109, + MessageType::MessageType_EthereumTypedDataValueRequest => 110, + MessageType::MessageType_EthereumTypedDataValueAck => 111, + MessageType::MessageType_EthereumTypedDataSignature => 112, + MessageType::MessageType_EthereumSignTypedHash => 113, + MessageType::MessageType_NEMGetAddress => 114, + MessageType::MessageType_NEMAddress => 115, + MessageType::MessageType_NEMSignTx => 116, + MessageType::MessageType_NEMSignedTx => 117, + MessageType::MessageType_NEMDecryptMessage => 118, + MessageType::MessageType_NEMDecryptedMessage => 119, + MessageType::MessageType_TezosGetAddress => 120, + MessageType::MessageType_TezosAddress => 121, + MessageType::MessageType_TezosSignTx => 122, + MessageType::MessageType_TezosSignedTx => 123, + MessageType::MessageType_TezosGetPublicKey => 124, + MessageType::MessageType_TezosPublicKey => 125, + MessageType::MessageType_StellarSignTx => 126, + MessageType::MessageType_StellarTxOpRequest => 127, + MessageType::MessageType_StellarGetAddress => 128, + MessageType::MessageType_StellarAddress => 129, + MessageType::MessageType_StellarCreateAccountOp => 130, + MessageType::MessageType_StellarPaymentOp => 131, + MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 132, + MessageType::MessageType_StellarManageSellOfferOp => 133, + MessageType::MessageType_StellarCreatePassiveSellOfferOp => 134, + MessageType::MessageType_StellarSetOptionsOp => 135, + MessageType::MessageType_StellarChangeTrustOp => 136, + MessageType::MessageType_StellarAllowTrustOp => 137, + MessageType::MessageType_StellarAccountMergeOp => 138, + MessageType::MessageType_StellarManageDataOp => 139, + MessageType::MessageType_StellarBumpSequenceOp => 140, + MessageType::MessageType_StellarManageBuyOfferOp => 141, + MessageType::MessageType_StellarPathPaymentStrictSendOp => 142, + MessageType::MessageType_StellarClaimClaimableBalanceOp => 143, + MessageType::MessageType_StellarSignedTx => 144, + MessageType::MessageType_CardanoGetPublicKey => 145, + MessageType::MessageType_CardanoPublicKey => 146, + MessageType::MessageType_CardanoGetAddress => 147, + MessageType::MessageType_CardanoAddress => 148, + MessageType::MessageType_CardanoTxItemAck => 149, + MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 150, + MessageType::MessageType_CardanoTxWitnessRequest => 151, + MessageType::MessageType_CardanoTxWitnessResponse => 152, + MessageType::MessageType_CardanoTxHostAck => 153, + MessageType::MessageType_CardanoTxBodyHash => 154, + MessageType::MessageType_CardanoSignTxFinished => 155, + MessageType::MessageType_CardanoSignTxInit => 156, + MessageType::MessageType_CardanoTxInput => 157, + MessageType::MessageType_CardanoTxOutput => 158, + MessageType::MessageType_CardanoAssetGroup => 159, + MessageType::MessageType_CardanoToken => 160, + MessageType::MessageType_CardanoTxCertificate => 161, + MessageType::MessageType_CardanoTxWithdrawal => 162, + MessageType::MessageType_CardanoTxAuxiliaryData => 163, + MessageType::MessageType_CardanoPoolOwner => 164, + MessageType::MessageType_CardanoPoolRelayParameters => 165, + MessageType::MessageType_CardanoGetNativeScriptHash => 166, + MessageType::MessageType_CardanoNativeScriptHash => 167, + MessageType::MessageType_CardanoTxMint => 168, + MessageType::MessageType_CardanoTxCollateralInput => 169, + MessageType::MessageType_CardanoTxRequiredSigner => 170, + MessageType::MessageType_CardanoTxInlineDatumChunk => 171, + MessageType::MessageType_CardanoTxReferenceScriptChunk => 172, + MessageType::MessageType_CardanoTxReferenceInput => 173, + MessageType::MessageType_RippleGetAddress => 174, + MessageType::MessageType_RippleAddress => 175, + MessageType::MessageType_RippleSignTx => 176, + MessageType::MessageType_RippleSignedTx => 177, + MessageType::MessageType_MoneroTransactionInitRequest => 178, + MessageType::MessageType_MoneroTransactionInitAck => 179, + MessageType::MessageType_MoneroTransactionSetInputRequest => 180, + MessageType::MessageType_MoneroTransactionSetInputAck => 181, + MessageType::MessageType_MoneroTransactionInputViniRequest => 182, + MessageType::MessageType_MoneroTransactionInputViniAck => 183, + MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 184, + MessageType::MessageType_MoneroTransactionAllInputsSetAck => 185, + MessageType::MessageType_MoneroTransactionSetOutputRequest => 186, + MessageType::MessageType_MoneroTransactionSetOutputAck => 187, + MessageType::MessageType_MoneroTransactionAllOutSetRequest => 188, + MessageType::MessageType_MoneroTransactionAllOutSetAck => 189, + MessageType::MessageType_MoneroTransactionSignInputRequest => 190, + MessageType::MessageType_MoneroTransactionSignInputAck => 191, + MessageType::MessageType_MoneroTransactionFinalRequest => 192, + MessageType::MessageType_MoneroTransactionFinalAck => 193, + MessageType::MessageType_MoneroKeyImageExportInitRequest => 194, + MessageType::MessageType_MoneroKeyImageExportInitAck => 195, + MessageType::MessageType_MoneroKeyImageSyncStepRequest => 196, + MessageType::MessageType_MoneroKeyImageSyncStepAck => 197, + MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 198, + MessageType::MessageType_MoneroKeyImageSyncFinalAck => 199, + MessageType::MessageType_MoneroGetAddress => 200, + MessageType::MessageType_MoneroAddress => 201, + MessageType::MessageType_MoneroGetWatchKey => 202, + MessageType::MessageType_MoneroWatchKey => 203, + MessageType::MessageType_DebugMoneroDiagRequest => 204, + MessageType::MessageType_DebugMoneroDiagAck => 205, + MessageType::MessageType_MoneroGetTxKeyRequest => 206, + MessageType::MessageType_MoneroGetTxKeyAck => 207, + MessageType::MessageType_MoneroLiveRefreshStartRequest => 208, + MessageType::MessageType_MoneroLiveRefreshStartAck => 209, + MessageType::MessageType_MoneroLiveRefreshStepRequest => 210, + MessageType::MessageType_MoneroLiveRefreshStepAck => 211, + MessageType::MessageType_MoneroLiveRefreshFinalRequest => 212, + MessageType::MessageType_MoneroLiveRefreshFinalAck => 213, + MessageType::MessageType_EosGetPublicKey => 214, + MessageType::MessageType_EosPublicKey => 215, + MessageType::MessageType_EosSignTx => 216, + MessageType::MessageType_EosTxActionRequest => 217, + MessageType::MessageType_EosTxActionAck => 218, + MessageType::MessageType_EosSignedTx => 219, + MessageType::MessageType_BinanceGetAddress => 220, + MessageType::MessageType_BinanceAddress => 221, + MessageType::MessageType_BinanceGetPublicKey => 222, + MessageType::MessageType_BinancePublicKey => 223, + MessageType::MessageType_BinanceSignTx => 224, + MessageType::MessageType_BinanceTxRequest => 225, + MessageType::MessageType_BinanceTransferMsg => 226, + MessageType::MessageType_BinanceOrderMsg => 227, + MessageType::MessageType_BinanceCancelMsg => 228, + MessageType::MessageType_BinanceSignedTx => 229, + MessageType::MessageType_WebAuthnListResidentCredentials => 230, + MessageType::MessageType_WebAuthnCredentials => 231, + MessageType::MessageType_WebAuthnAddResidentCredential => 232, + MessageType::MessageType_WebAuthnRemoveResidentCredential => 233, + MessageType::MessageType_SolanaGetPublicKey => 234, + MessageType::MessageType_SolanaPublicKey => 235, + MessageType::MessageType_SolanaGetAddress => 236, + MessageType::MessageType_SolanaAddress => 237, + MessageType::MessageType_SolanaSignTx => 238, + MessageType::MessageType_SolanaTxSignature => 239, }; Self::enum_descriptor().value_by_index(index) } @@ -1574,7 +1550,7 @@ pub mod exts { static file_descriptor_proto_data: &'static [u8] = b"\ \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\x20google/protobuf/de\ - scriptor.proto*\xc4T\n\x0bMessageType\x12(\n\x16MessageType_Initialize\ + scriptor.proto*\xadS\n\x0bMessageType\x12(\n\x16MessageType_Initialize\ \x10\0\x1a\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\x90\xb5\x18\x01\x12\x1e\n\ \x10MessageType_Ping\x10\x01\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12\ %\n\x13MessageType_Success\x10\x02\x1a\x0c\x80\xa6\x1d\x01\xa8\xb5\x18\ @@ -1670,210 +1646,206 @@ static file_descriptor_proto_data: &'static [u8] = b"\ y\x106\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_Get\ ECDHSessionKey\x10=\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMe\ ssageType_ECDHSessionKey\x10>\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\ - \x12$\n\x16MessageType_CosiCommit\x10G\x1a\x08\x80\xa6\x1d\x01\x90\xb5\ - \x18\x01\x12(\n\x1aMessageType_CosiCommitment\x10H\x1a\x08\x80\xa6\x1d\ - \x01\x98\xb5\x18\x01\x12\"\n\x14MessageType_CosiSign\x10I\x1a\x08\x80\ - \xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19MessageType_CosiSignature\x10J\ - \x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x123\n\x1dMessageType_DebugLink\ - Decision\x10d\x1a\x10\xc0\xb5\x18\x01\xb0\xb5\x18\x01\x80\xa6\x1d\x01\ - \xa0\xb5\x18\x01\x12/\n\x1dMessageType_DebugLinkGetState\x10e\x1a\x0c\ - \x80\xa6\x1d\x01\xb0\xb5\x18\x01\xa0\xb5\x18\x01\x12(\n\x1aMessageType_D\ - ebugLinkState\x10f\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12'\n\x19Mes\ - sageType_DebugLinkStop\x10g\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12&\ - \n\x18MessageType_DebugLinkLog\x10h\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\ - \x01\x12-\n\x1fMessageType_DebugLinkMemoryRead\x10n\x1a\x08\x80\xa6\x1d\ - \x01\xa0\xb5\x18\x01\x12)\n\x1bMessageType_DebugLinkMemory\x10o\x1a\x08\ - \x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12.\n\x20MessageType_DebugLinkMemoryWr\ - ite\x10p\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12-\n\x1fMessageType_D\ - ebugLinkFlashErase\x10q\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12*\n\ - \x1bMessageType_DebugLinkLayout\x10\xa9F\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\ - \x18\x01\x120\n!MessageType_DebugLinkReseedRandom\x10\xaaF\x1a\x08\x80\ - \xa6\x1d\x01\xa0\xb5\x18\x01\x120\n!MessageType_DebugLinkRecordScreen\ - \x10\xabF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_\ - DebugLinkEraseSdCard\x10\xadF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\ - \x12/\n\x20MessageType_DebugLinkWatchLayout\x10\xaeF\x1a\x08\x80\xa6\x1d\ - \x01\xa0\xb5\x18\x01\x124\n%MessageType_DebugLinkResetDebugEvents\x10\ - \xafF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12+\n\x20MessageType_Ethe\ - reumGetPublicKey\x10\xc2\x03\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageTy\ - pe_EthereumPublicKey\x10\xc3\x03\x1a\x04\x98\xb5\x18\x01\x12(\n\x1eMessa\ - geType_EthereumGetAddress\x108\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessage\ - Type_EthereumAddress\x109\x1a\x04\x98\xb5\x18\x01\x12$\n\x1aMessageType_\ - EthereumSignTx\x10:\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_EthereumS\ - ignTxEIP1559\x10\xc4\x03\x1a\x04\x90\xb5\x18\x01\x12'\n\x1dMessageType_E\ - thereumTxRequest\x10;\x1a\x04\x98\xb5\x18\x01\x12#\n\x19MessageType_Ethe\ - reumTxAck\x10<\x1a\x04\x90\xb5\x18\x01\x12)\n\x1fMessageType_EthereumSig\ - nMessage\x10@\x1a\x04\x90\xb5\x18\x01\x12+\n!MessageType_EthereumVerifyM\ - essage\x10A\x1a\x04\x90\xb5\x18\x01\x12.\n$MessageType_EthereumMessageSi\ - gnature\x10B\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignType\ - dData\x10\xd0\x03\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTyp\ - edDataStructRequest\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageTy\ - pe_EthereumTypedDataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n\ - )MessageType_EthereumTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\ - \x18\x01\x120\n%MessageType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\ - \x04\x90\xb5\x18\x01\x121\n&MessageType_EthereumTypedDataSignature\x10\ - \xd5\x03\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedHas\ - h\x10\xd6\x03\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddres\ - s\x10C\x1a\x04\x90\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\ - \x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\ - \x90\xb5\x18\x01\x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\ - \x18\x01\x12'\n\x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\ - \x18\x01\x12)\n\x1fMessageType_NEMDecryptedMessage\x10L\x1a\x04\x98\xb5\ - \x18\x01\x12&\n\x1bMessageType_TezosGetAddress\x10\x96\x01\x1a\x04\x90\ - \xb5\x18\x01\x12#\n\x18MessageType_TezosAddress\x10\x97\x01\x1a\x04\x98\ - \xb5\x18\x01\x12\"\n\x17MessageType_TezosSignTx\x10\x98\x01\x1a\x04\x90\ - \xb5\x18\x01\x12$\n\x19MessageType_TezosSignedTx\x10\x99\x01\x1a\x04\x98\ - \xb5\x18\x01\x12(\n\x1dMessageType_TezosGetPublicKey\x10\x9a\x01\x1a\x04\ - \x90\xb5\x18\x01\x12%\n\x1aMessageType_TezosPublicKey\x10\x9b\x01\x1a\ - \x04\x98\xb5\x18\x01\x12$\n\x19MessageType_StellarSignTx\x10\xca\x01\x1a\ - \x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_StellarTxOpRequest\x10\xcb\ - \x01\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_StellarGetAddress\x10\ - \xcf\x01\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_StellarAddress\ - \x10\xd0\x01\x1a\x04\x98\xb5\x18\x01\x12-\n\"MessageType_StellarCreateAc\ - countOp\x10\xd2\x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_Stella\ - rPaymentOp\x10\xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_Stella\ - rPathPaymentStrictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$M\ - essageType_StellarManageSellOfferOp\x10\xd5\x01\x1a\x04\x90\xb5\x18\x01\ - \x126\n+MessageType_StellarCreatePassiveSellOfferOp\x10\xd6\x01\x1a\x04\ - \x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarSetOptionsOp\x10\xd7\x01\ - \x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_StellarChangeTrustOp\x10\ - \xd8\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarAllowTrust\ - Op\x10\xd9\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccount\ - MergeOp\x10\xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_Stella\ - rManageDataOp\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_Ste\ - llarBumpSequenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageTyp\ - e_StellarManageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*Mes\ - sageType_StellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\ - \x01\x125\n*MessageType_StellarClaimClaimableBalanceOp\x10\xe1\x01\x1a\ - \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_StellarSignedTx\x10\xe6\x01\ - \x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageType_CardanoGetPublicKey\x10\ - \xb1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_CardanoPublicKey\ - \x10\xb2\x02\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoGetAdd\ - ress\x10\xb3\x02\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoAd\ - dress\x10\xb4\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoT\ - xItemAck\x10\xb9\x02\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_CardanoT\ - xAuxiliaryDataSupplement\x10\xba\x02\x1a\x04\x98\xb5\x18\x01\x12.\n#Mess\ - ageType_CardanoTxWitnessRequest\x10\xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\ - \n$MessageType_CardanoTxWitnessResponse\x10\xbc\x02\x1a\x04\x98\xb5\x18\ - \x01\x12'\n\x1cMessageType_CardanoTxHostAck\x10\xbd\x02\x1a\x04\x90\xb5\ - \x18\x01\x12(\n\x1dMessageType_CardanoTxBodyHash\x10\xbe\x02\x1a\x04\x98\ - \xb5\x18\x01\x12,\n!MessageType_CardanoSignTxFinished\x10\xbf\x02\x1a\ - \x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoSignTxInit\x10\xc0\x02\ - \x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoTxInput\x10\xc1\ - \x02\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_CardanoTxOutput\x10\ - \xc2\x02\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_CardanoAssetGroup\ - \x10\xc3\x02\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_CardanoToken\ - \x10\xc4\x02\x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_CardanoTxCert\ - ificate\x10\xc5\x02\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_Cardan\ - oTxWithdrawal\x10\xc6\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_Ca\ - rdanoTxAuxiliaryData\x10\xc7\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessa\ - geType_CardanoPoolOwner\x10\xc8\x02\x1a\x04\x90\xb5\x18\x01\x121\n&Messa\ - geType_CardanoPoolRelayParameters\x10\xc9\x02\x1a\x04\x90\xb5\x18\x01\ - \x121\n&MessageType_CardanoGetNativeScriptHash\x10\xca\x02\x1a\x04\x90\ - \xb5\x18\x01\x12.\n#MessageType_CardanoNativeScriptHash\x10\xcb\x02\x1a\ - \x04\x98\xb5\x18\x01\x12$\n\x19MessageType_CardanoTxMint\x10\xcc\x02\x1a\ - \x04\x90\xb5\x18\x01\x12/\n$MessageType_CardanoTxCollateralInput\x10\xcd\ - \x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_CardanoTxRequiredSigner\ - \x10\xce\x02\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_CardanoTxInlineD\ - atumChunk\x10\xcf\x02\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_Cardano\ - TxReferenceScriptChunk\x10\xd0\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#Messag\ - eType_CardanoTxReferenceInput\x10\xd1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\ - \x1cMessageType_RippleGetAddress\x10\x90\x03\x1a\x04\x90\xb5\x18\x01\x12\ - $\n\x19MessageType_RippleAddress\x10\x91\x03\x1a\x04\x98\xb5\x18\x01\x12\ - #\n\x18MessageType_RippleSignTx\x10\x92\x03\x1a\x04\x90\xb5\x18\x01\x12%\ - \n\x1aMessageType_RippleSignedTx\x10\x93\x03\x1a\x04\x90\xb5\x18\x01\x12\ - 3\n(MessageType_MoneroTransactionInitRequest\x10\xf5\x03\x1a\x04\x98\xb5\ - \x18\x01\x12/\n$MessageType_MoneroTransactionInitAck\x10\xf6\x03\x1a\x04\ - \x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionSetInputRequest\x10\ - \xf7\x03\x1a\x04\x98\xb5\x18\x01\x123\n(MessageType_MoneroTransactionSet\ - InputAck\x10\xf8\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTr\ - ansactionInputViniRequest\x10\xfb\x03\x1a\x04\x98\xb5\x18\x01\x124\n)Mes\ - sageType_MoneroTransactionInputViniAck\x10\xfc\x03\x1a\x04\x98\xb5\x18\ - \x01\x12;\n0MessageType_MoneroTransactionAllInputsSetRequest\x10\xfd\x03\ - \x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionAllInputsSe\ - tAck\x10\xfe\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransa\ - ctionSetOutputRequest\x10\xff\x03\x1a\x04\x98\xb5\x18\x01\x124\n)Message\ - Type_MoneroTransactionSetOutputAck\x10\x80\x04\x1a\x04\x98\xb5\x18\x01\ - \x128\n-MessageType_MoneroTransactionAllOutSetRequest\x10\x81\x04\x1a\ - \x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroTransactionAllOutSetAck\ - \x10\x82\x04\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactio\ - nSignInputRequest\x10\x83\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ - _MoneroTransactionSignInputAck\x10\x84\x04\x1a\x04\x98\xb5\x18\x01\x124\ - \n)MessageType_MoneroTransactionFinalRequest\x10\x85\x04\x1a\x04\x98\xb5\ - \x18\x01\x120\n%MessageType_MoneroTransactionFinalAck\x10\x86\x04\x1a\ - \x04\x98\xb5\x18\x01\x126\n+MessageType_MoneroKeyImageExportInitRequest\ - \x10\x92\x04\x1a\x04\x98\xb5\x18\x01\x122\n'MessageType_MoneroKeyImageEx\ - portInitAck\x10\x93\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_Moner\ - oKeyImageSyncStepRequest\x10\x94\x04\x1a\x04\x98\xb5\x18\x01\x120\n%Mess\ - ageType_MoneroKeyImageSyncStepAck\x10\x95\x04\x1a\x04\x98\xb5\x18\x01\ - \x125\n*MessageType_MoneroKeyImageSyncFinalRequest\x10\x96\x04\x1a\x04\ - \x98\xb5\x18\x01\x121\n&MessageType_MoneroKeyImageSyncFinalAck\x10\x97\ - \x04\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_MoneroGetAddress\x10\ - \x9c\x04\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_MoneroAddress\x10\ - \x9d\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGetWatchKey\ - \x10\x9e\x04\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_MoneroWatchKe\ - y\x10\x9f\x04\x1a\x04\x98\xb5\x18\x01\x12-\n\"MessageType_DebugMoneroDia\ - gRequest\x10\xa2\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_Debug\ - MoneroDiagAck\x10\xa3\x04\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_Mon\ - eroGetTxKeyRequest\x10\xa6\x04\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessage\ - Type_MoneroGetTxKeyAck\x10\xa7\x04\x1a\x04\x98\xb5\x18\x01\x124\n)Messag\ - eType_MoneroLiveRefreshStartRequest\x10\xa8\x04\x1a\x04\x90\xb5\x18\x01\ - \x120\n%MessageType_MoneroLiveRefreshStartAck\x10\xa9\x04\x1a\x04\x98\ - \xb5\x18\x01\x123\n(MessageType_MoneroLiveRefreshStepRequest\x10\xaa\x04\ - \x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_MoneroLiveRefreshStepAck\x10\ - \xab\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroLiveRefreshFin\ - alRequest\x10\xac\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroL\ - iveRefreshFinalAck\x10\xad\x04\x1a\x04\x98\xb5\x18\x01\x12&\n\x1bMessage\ - Type_EosGetPublicKey\x10\xd8\x04\x1a\x04\x90\xb5\x18\x01\x12#\n\x18Messa\ - geType_EosPublicKey\x10\xd9\x04\x1a\x04\x98\xb5\x18\x01\x12\x20\n\x15Mes\ - sageType_EosSignTx\x10\xda\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessage\ - Type_EosTxActionRequest\x10\xdb\x04\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMe\ - ssageType_EosTxActionAck\x10\xdc\x04\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17\ - MessageType_EosSignedTx\x10\xdd\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMe\ - ssageType_BinanceGetAddress\x10\xbc\x05\x1a\x04\x90\xb5\x18\x01\x12%\n\ - \x1aMessageType_BinanceAddress\x10\xbd\x05\x1a\x04\x98\xb5\x18\x01\x12*\ - \n\x1fMessageType_BinanceGetPublicKey\x10\xbe\x05\x1a\x04\x90\xb5\x18\ - \x01\x12'\n\x1cMessageType_BinancePublicKey\x10\xbf\x05\x1a\x04\x98\xb5\ - \x18\x01\x12$\n\x19MessageType_BinanceSignTx\x10\xc0\x05\x1a\x04\x90\xb5\ - \x18\x01\x12'\n\x1cMessageType_BinanceTxRequest\x10\xc1\x05\x1a\x04\x98\ - \xb5\x18\x01\x12)\n\x1eMessageType_BinanceTransferMsg\x10\xc2\x05\x1a\ - \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_BinanceOrderMsg\x10\xc3\x05\ - \x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_BinanceCancelMsg\x10\xc4\ - \x05\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_BinanceSignedTx\x10\ - \xc5\x05\x1a\x04\x98\xb5\x18\x01\x126\n+MessageType_WebAuthnListResident\ - Credentials\x10\xa0\x06\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_We\ - bAuthnCredentials\x10\xa1\x06\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ - _WebAuthnAddResidentCredential\x10\xa2\x06\x1a\x04\x90\xb5\x18\x01\x127\ - \n,MessageType_WebAuthnRemoveResidentCredential\x10\xa3\x06\x1a\x04\x90\ - \xb5\x18\x01\x12)\n\x1eMessageType_SolanaGetPublicKey\x10\x84\x07\x1a\ - \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_SolanaPublicKey\x10\x85\x07\ - \x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_SolanaGetAddress\x10\x86\ - \x07\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_SolanaAddress\x10\x87\ - \x07\x1a\x04\x98\xb5\x18\x01\x12#\n\x18MessageType_SolanaSignTx\x10\x88\ - \x07\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_SolanaTxSignature\x10\ - \x89\x07\x1a\x04\x98\xb5\x18\x01\x1a\x04\xc8\xf3\x18\x01\"\x04\x08Z\x10\ - \\\"\x04\x08r\x10z\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\x08\xe0\x01\x10\ - \xe0\x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\x02\x10\xb8\x02:<\n\ - \x07wire_in\x18\xd2\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueO\ - ptionsR\x06wireIn:>\n\x08wire_out\x18\xd3\x86\x03\x20\x01(\x08\x12!.goog\ - le.protobuf.EnumValueOptionsR\x07wireOut:G\n\rwire_debug_in\x18\xd4\x86\ - \x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x0bwireDebugIn:\ - I\n\x0ewire_debug_out\x18\xd5\x86\x03\x20\x01(\x08\x12!.google.protobuf.\ - EnumValueOptionsR\x0cwireDebugOut:@\n\twire_tiny\x18\xd6\x86\x03\x20\x01\ - (\x08\x12!.google.protobuf.EnumValueOptionsR\x08wireTiny:L\n\x0fwire_boo\ - tloader\x18\xd7\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptio\ - nsR\x0ewireBootloader:C\n\x0bwire_no_fsm\x18\xd8\x86\x03\x20\x01(\x08\ - \x12!.google.protobuf.EnumValueOptionsR\twireNoFsm:F\n\x0cbitcoin_only\ - \x18\xe0\xd4\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x0b\ - bitcoinOnly:U\n\x17has_bitcoin_only_values\x18\xb9\x8e\x03\x20\x01(\x08\ - \x12\x1c.google.protobuf.EnumOptionsR\x14hasBitcoinOnlyValues:T\n\x14exp\ - erimental_message\x18\xa1\x96\x03\x20\x01(\x08\x12\x1f.google.protobuf.M\ - essageOptionsR\x13experimentalMessage:>\n\twire_type\x18\xa2\x96\x03\x20\ - \x01(\r\x12\x1f.google.protobuf.MessageOptionsR\x08wireType:N\n\x12exper\ - imental_field\x18\x89\x9e\x03\x20\x01(\x08\x12\x1d.google.protobuf.Field\ - OptionsR\x11experimentalField:U\n\x17include_in_bitcoin_only\x18\xe0\xd4\ - \x03\x20\x01(\x08\x12\x1c.google.protobuf.FileOptionsR\x14includeInBitco\ - inOnlyB8\n#com.satoshilabs.trezor.lib.protobufB\rTrezorMessage\x80\xa6\ - \x1d\x01\ + \x123\n\x1dMessageType_DebugLinkDecision\x10d\x1a\x10\xc0\xb5\x18\x01\ + \xb0\xb5\x18\x01\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x1dMessageType_D\ + ebugLinkGetState\x10e\x1a\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\xa0\xb5\ + \x18\x01\x12(\n\x1aMessageType_DebugLinkState\x10f\x1a\x08\x80\xa6\x1d\ + \x01\xa8\xb5\x18\x01\x12'\n\x19MessageType_DebugLinkStop\x10g\x1a\x08\ + \x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12&\n\x18MessageType_DebugLinkLog\x10h\ + \x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12-\n\x1fMessageType_DebugLink\ + MemoryRead\x10n\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12)\n\x1bMessag\ + eType_DebugLinkMemory\x10o\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12.\ + \n\x20MessageType_DebugLinkMemoryWrite\x10p\x1a\x08\x80\xa6\x1d\x01\xa0\ + \xb5\x18\x01\x12-\n\x1fMessageType_DebugLinkFlashErase\x10q\x1a\x08\x80\ + \xa6\x1d\x01\xa0\xb5\x18\x01\x12*\n\x1bMessageType_DebugLinkLayout\x10\ + \xa9F\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x120\n!MessageType_DebugLi\ + nkReseedRandom\x10\xaaF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x120\n!M\ + essageType_DebugLinkRecordScreen\x10\xabF\x1a\x08\x80\xa6\x1d\x01\xa0\ + \xb5\x18\x01\x12/\n\x20MessageType_DebugLinkEraseSdCard\x10\xadF\x1a\x08\ + \x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_DebugLinkWatchLay\ + out\x10\xaeF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x124\n%MessageType_\ + DebugLinkResetDebugEvents\x10\xafF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\ + \x01\x12+\n\x20MessageType_EthereumGetPublicKey\x10\xc2\x03\x1a\x04\x90\ + \xb5\x18\x01\x12(\n\x1dMessageType_EthereumPublicKey\x10\xc3\x03\x1a\x04\ + \x98\xb5\x18\x01\x12(\n\x1eMessageType_EthereumGetAddress\x108\x1a\x04\ + \x90\xb5\x18\x01\x12%\n\x1bMessageType_EthereumAddress\x109\x1a\x04\x98\ + \xb5\x18\x01\x12$\n\x1aMessageType_EthereumSignTx\x10:\x1a\x04\x90\xb5\ + \x18\x01\x12,\n!MessageType_EthereumSignTxEIP1559\x10\xc4\x03\x1a\x04\ + \x90\xb5\x18\x01\x12'\n\x1dMessageType_EthereumTxRequest\x10;\x1a\x04\ + \x98\xb5\x18\x01\x12#\n\x19MessageType_EthereumTxAck\x10<\x1a\x04\x90\ + \xb5\x18\x01\x12)\n\x1fMessageType_EthereumSignMessage\x10@\x1a\x04\x90\ + \xb5\x18\x01\x12+\n!MessageType_EthereumVerifyMessage\x10A\x1a\x04\x90\ + \xb5\x18\x01\x12.\n$MessageType_EthereumMessageSignature\x10B\x1a\x04\ + \x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedData\x10\xd0\x03\ + \x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTypedDataStructReque\ + st\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_EthereumTypedD\ + ataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_Ethe\ + reumTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\x18\x01\x120\n%Mes\ + sageType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\x04\x90\xb5\x18\x01\ + \x121\n&MessageType_EthereumTypedDataSignature\x10\xd5\x03\x1a\x04\x98\ + \xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedHash\x10\xd6\x03\x1a\ + \x04\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddress\x10C\x1a\x04\ + \x90\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\x1a\x04\x98\ + \xb5\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\x90\xb5\x18\ + \x01\x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\x18\x01\x12'\ + \n\x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\x18\x01\x12)\n\ + \x1fMessageType_NEMDecryptedMessage\x10L\x1a\x04\x98\xb5\x18\x01\x12&\n\ + \x1bMessageType_TezosGetAddress\x10\x96\x01\x1a\x04\x90\xb5\x18\x01\x12#\ + \n\x18MessageType_TezosAddress\x10\x97\x01\x1a\x04\x98\xb5\x18\x01\x12\"\ + \n\x17MessageType_TezosSignTx\x10\x98\x01\x1a\x04\x90\xb5\x18\x01\x12$\n\ + \x19MessageType_TezosSignedTx\x10\x99\x01\x1a\x04\x98\xb5\x18\x01\x12(\n\ + \x1dMessageType_TezosGetPublicKey\x10\x9a\x01\x1a\x04\x90\xb5\x18\x01\ + \x12%\n\x1aMessageType_TezosPublicKey\x10\x9b\x01\x1a\x04\x98\xb5\x18\ + \x01\x12$\n\x19MessageType_StellarSignTx\x10\xca\x01\x1a\x04\x90\xb5\x18\ + \x01\x12)\n\x1eMessageType_StellarTxOpRequest\x10\xcb\x01\x1a\x04\x98\ + \xb5\x18\x01\x12(\n\x1dMessageType_StellarGetAddress\x10\xcf\x01\x1a\x04\ + \x90\xb5\x18\x01\x12%\n\x1aMessageType_StellarAddress\x10\xd0\x01\x1a\ + \x04\x98\xb5\x18\x01\x12-\n\"MessageType_StellarCreateAccountOp\x10\xd2\ + \x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_StellarPaymentOp\x10\ + \xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_StellarPathPaymentSt\ + rictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_Ste\ + llarManageSellOfferOp\x10\xd5\x01\x1a\x04\x90\xb5\x18\x01\x126\n+Message\ + Type_StellarCreatePassiveSellOfferOp\x10\xd6\x01\x1a\x04\x90\xb5\x18\x01\ + \x12*\n\x1fMessageType_StellarSetOptionsOp\x10\xd7\x01\x1a\x04\x90\xb5\ + \x18\x01\x12+\n\x20MessageType_StellarChangeTrustOp\x10\xd8\x01\x1a\x04\ + \x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarAllowTrustOp\x10\xd9\x01\ + \x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccountMergeOp\x10\ + \xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarManageData\ + Op\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarBumpSeq\ + uenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_StellarMa\ + nageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_St\ + ellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\x01\x125\n*\ + MessageType_StellarClaimClaimableBalanceOp\x10\xe1\x01\x1a\x04\x90\xb5\ + \x18\x01\x12&\n\x1bMessageType_StellarSignedTx\x10\xe6\x01\x1a\x04\x98\ + \xb5\x18\x01\x12*\n\x1fMessageType_CardanoGetPublicKey\x10\xb1\x02\x1a\ + \x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_CardanoPublicKey\x10\xb2\x02\ + \x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoGetAddress\x10\xb3\ + \x02\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoAddress\x10\ + \xb4\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoTxItemAck\ + \x10\xb9\x02\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_CardanoTxAuxilia\ + ryDataSupplement\x10\xba\x02\x1a\x04\x98\xb5\x18\x01\x12.\n#MessageType_\ + CardanoTxWitnessRequest\x10\xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\n$Messa\ + geType_CardanoTxWitnessResponse\x10\xbc\x02\x1a\x04\x98\xb5\x18\x01\x12'\ + \n\x1cMessageType_CardanoTxHostAck\x10\xbd\x02\x1a\x04\x90\xb5\x18\x01\ + \x12(\n\x1dMessageType_CardanoTxBodyHash\x10\xbe\x02\x1a\x04\x98\xb5\x18\ + \x01\x12,\n!MessageType_CardanoSignTxFinished\x10\xbf\x02\x1a\x04\x98\ + \xb5\x18\x01\x12(\n\x1dMessageType_CardanoSignTxInit\x10\xc0\x02\x1a\x04\ + \x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoTxInput\x10\xc1\x02\x1a\ + \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_CardanoTxOutput\x10\xc2\x02\ + \x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_CardanoAssetGroup\x10\xc3\ + \x02\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_CardanoToken\x10\xc4\ + \x02\x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_CardanoTxCertificate\ + \x10\xc5\x02\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_CardanoTxWith\ + drawal\x10\xc6\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_CardanoTx\ + AuxiliaryData\x10\xc7\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_\ + CardanoPoolOwner\x10\xc8\x02\x1a\x04\x90\xb5\x18\x01\x121\n&MessageType_\ + CardanoPoolRelayParameters\x10\xc9\x02\x1a\x04\x90\xb5\x18\x01\x121\n&Me\ + ssageType_CardanoGetNativeScriptHash\x10\xca\x02\x1a\x04\x90\xb5\x18\x01\ + \x12.\n#MessageType_CardanoNativeScriptHash\x10\xcb\x02\x1a\x04\x98\xb5\ + \x18\x01\x12$\n\x19MessageType_CardanoTxMint\x10\xcc\x02\x1a\x04\x90\xb5\ + \x18\x01\x12/\n$MessageType_CardanoTxCollateralInput\x10\xcd\x02\x1a\x04\ + \x90\xb5\x18\x01\x12.\n#MessageType_CardanoTxRequiredSigner\x10\xce\x02\ + \x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_CardanoTxInlineDatumChunk\ + \x10\xcf\x02\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_CardanoTxReferen\ + ceScriptChunk\x10\xd0\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_Car\ + danoTxReferenceInput\x10\xd1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessa\ + geType_RippleGetAddress\x10\x90\x03\x1a\x04\x90\xb5\x18\x01\x12$\n\x19Me\ + ssageType_RippleAddress\x10\x91\x03\x1a\x04\x98\xb5\x18\x01\x12#\n\x18Me\ + ssageType_RippleSignTx\x10\x92\x03\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMes\ + sageType_RippleSignedTx\x10\x93\x03\x1a\x04\x90\xb5\x18\x01\x123\n(Messa\ + geType_MoneroTransactionInitRequest\x10\xf5\x03\x1a\x04\x98\xb5\x18\x01\ + \x12/\n$MessageType_MoneroTransactionInitAck\x10\xf6\x03\x1a\x04\x98\xb5\ + \x18\x01\x127\n,MessageType_MoneroTransactionSetInputRequest\x10\xf7\x03\ + \x1a\x04\x98\xb5\x18\x01\x123\n(MessageType_MoneroTransactionSetInputAck\ + \x10\xf8\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactio\ + nInputViniRequest\x10\xfb\x03\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ + _MoneroTransactionInputViniAck\x10\xfc\x03\x1a\x04\x98\xb5\x18\x01\x12;\ + \n0MessageType_MoneroTransactionAllInputsSetRequest\x10\xfd\x03\x1a\x04\ + \x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionAllInputsSetAck\x10\ + \xfe\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactionSet\ + OutputRequest\x10\xff\x03\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_Mon\ + eroTransactionSetOutputAck\x10\x80\x04\x1a\x04\x98\xb5\x18\x01\x128\n-Me\ + ssageType_MoneroTransactionAllOutSetRequest\x10\x81\x04\x1a\x04\x98\xb5\ + \x18\x01\x124\n)MessageType_MoneroTransactionAllOutSetAck\x10\x82\x04\ + \x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactionSignInputRe\ + quest\x10\x83\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroTrans\ + actionSignInputAck\x10\x84\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageTyp\ + e_MoneroTransactionFinalRequest\x10\x85\x04\x1a\x04\x98\xb5\x18\x01\x120\ + \n%MessageType_MoneroTransactionFinalAck\x10\x86\x04\x1a\x04\x98\xb5\x18\ + \x01\x126\n+MessageType_MoneroKeyImageExportInitRequest\x10\x92\x04\x1a\ + \x04\x98\xb5\x18\x01\x122\n'MessageType_MoneroKeyImageExportInitAck\x10\ + \x93\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroKeyImageSyncSt\ + epRequest\x10\x94\x04\x1a\x04\x98\xb5\x18\x01\x120\n%MessageType_MoneroK\ + eyImageSyncStepAck\x10\x95\x04\x1a\x04\x98\xb5\x18\x01\x125\n*MessageTyp\ + e_MoneroKeyImageSyncFinalRequest\x10\x96\x04\x1a\x04\x98\xb5\x18\x01\x12\ + 1\n&MessageType_MoneroKeyImageSyncFinalAck\x10\x97\x04\x1a\x04\x98\xb5\ + \x18\x01\x12'\n\x1cMessageType_MoneroGetAddress\x10\x9c\x04\x1a\x04\x90\ + \xb5\x18\x01\x12$\n\x19MessageType_MoneroAddress\x10\x9d\x04\x1a\x04\x98\ + \xb5\x18\x01\x12(\n\x1dMessageType_MoneroGetWatchKey\x10\x9e\x04\x1a\x04\ + \x90\xb5\x18\x01\x12%\n\x1aMessageType_MoneroWatchKey\x10\x9f\x04\x1a\ + \x04\x98\xb5\x18\x01\x12-\n\"MessageType_DebugMoneroDiagRequest\x10\xa2\ + \x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_DebugMoneroDiagAck\ + \x10\xa3\x04\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_MoneroGetTxKeyRe\ + quest\x10\xa6\x04\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGe\ + tTxKeyAck\x10\xa7\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroL\ + iveRefreshStartRequest\x10\xa8\x04\x1a\x04\x90\xb5\x18\x01\x120\n%Messag\ + eType_MoneroLiveRefreshStartAck\x10\xa9\x04\x1a\x04\x98\xb5\x18\x01\x123\ + \n(MessageType_MoneroLiveRefreshStepRequest\x10\xaa\x04\x1a\x04\x90\xb5\ + \x18\x01\x12/\n$MessageType_MoneroLiveRefreshStepAck\x10\xab\x04\x1a\x04\ + \x98\xb5\x18\x01\x124\n)MessageType_MoneroLiveRefreshFinalRequest\x10\ + \xac\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroLiveRefreshFin\ + alAck\x10\xad\x04\x1a\x04\x98\xb5\x18\x01\x12&\n\x1bMessageType_EosGetPu\ + blicKey\x10\xd8\x04\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_EosPub\ + licKey\x10\xd9\x04\x1a\x04\x98\xb5\x18\x01\x12\x20\n\x15MessageType_EosS\ + ignTx\x10\xda\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_EosTxAct\ + ionRequest\x10\xdb\x04\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMessageType_Eos\ + TxActionAck\x10\xdc\x04\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17MessageType_E\ + osSignedTx\x10\xdd\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_Bin\ + anceGetAddress\x10\xbc\x05\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType\ + _BinanceAddress\x10\xbd\x05\x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageTyp\ + e_BinanceGetPublicKey\x10\xbe\x05\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMess\ + ageType_BinancePublicKey\x10\xbf\x05\x1a\x04\x98\xb5\x18\x01\x12$\n\x19M\ + essageType_BinanceSignTx\x10\xc0\x05\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cM\ + essageType_BinanceTxRequest\x10\xc1\x05\x1a\x04\x98\xb5\x18\x01\x12)\n\ + \x1eMessageType_BinanceTransferMsg\x10\xc2\x05\x1a\x04\x90\xb5\x18\x01\ + \x12&\n\x1bMessageType_BinanceOrderMsg\x10\xc3\x05\x1a\x04\x90\xb5\x18\ + \x01\x12'\n\x1cMessageType_BinanceCancelMsg\x10\xc4\x05\x1a\x04\x90\xb5\ + \x18\x01\x12&\n\x1bMessageType_BinanceSignedTx\x10\xc5\x05\x1a\x04\x98\ + \xb5\x18\x01\x126\n+MessageType_WebAuthnListResidentCredentials\x10\xa0\ + \x06\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_WebAuthnCredentials\ + \x10\xa1\x06\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_WebAuthnAddResid\ + entCredential\x10\xa2\x06\x1a\x04\x90\xb5\x18\x01\x127\n,MessageType_Web\ + AuthnRemoveResidentCredential\x10\xa3\x06\x1a\x04\x90\xb5\x18\x01\x12)\n\ + \x1eMessageType_SolanaGetPublicKey\x10\x84\x07\x1a\x04\x90\xb5\x18\x01\ + \x12&\n\x1bMessageType_SolanaPublicKey\x10\x85\x07\x1a\x04\x98\xb5\x18\ + \x01\x12'\n\x1cMessageType_SolanaGetAddress\x10\x86\x07\x1a\x04\x90\xb5\ + \x18\x01\x12$\n\x19MessageType_SolanaAddress\x10\x87\x07\x1a\x04\x98\xb5\ + \x18\x01\x12#\n\x18MessageType_SolanaSignTx\x10\x88\x07\x1a\x04\x90\xb5\ + \x18\x01\x12(\n\x1dMessageType_SolanaTxSignature\x10\x89\x07\x1a\x04\x98\ + \xb5\x18\x01\x1a\x04\xc8\xf3\x18\x01\"\x04\x08Z\x10\\\"\x04\x08G\x10J\"\ + \x04\x08r\x10z\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\x08\xe0\x01\x10\xe0\ + \x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\x02\x10\xb8\x02:<\n\x07\ + wire_in\x18\xd2\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptio\ + nsR\x06wireIn:>\n\x08wire_out\x18\xd3\x86\x03\x20\x01(\x08\x12!.google.p\ + rotobuf.EnumValueOptionsR\x07wireOut:G\n\rwire_debug_in\x18\xd4\x86\x03\ + \x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x0bwireDebugIn:I\n\ + \x0ewire_debug_out\x18\xd5\x86\x03\x20\x01(\x08\x12!.google.protobuf.Enu\ + mValueOptionsR\x0cwireDebugOut:@\n\twire_tiny\x18\xd6\x86\x03\x20\x01(\ + \x08\x12!.google.protobuf.EnumValueOptionsR\x08wireTiny:L\n\x0fwire_boot\ + loader\x18\xd7\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOption\ + sR\x0ewireBootloader:C\n\x0bwire_no_fsm\x18\xd8\x86\x03\x20\x01(\x08\x12\ + !.google.protobuf.EnumValueOptionsR\twireNoFsm:F\n\x0cbitcoin_only\x18\ + \xe0\xd4\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x0bbitc\ + oinOnly:U\n\x17has_bitcoin_only_values\x18\xb9\x8e\x03\x20\x01(\x08\x12\ + \x1c.google.protobuf.EnumOptionsR\x14hasBitcoinOnlyValues:T\n\x14experim\ + ental_message\x18\xa1\x96\x03\x20\x01(\x08\x12\x1f.google.protobuf.Messa\ + geOptionsR\x13experimentalMessage:>\n\twire_type\x18\xa2\x96\x03\x20\x01\ + (\r\x12\x1f.google.protobuf.MessageOptionsR\x08wireType:N\n\x12experimen\ + tal_field\x18\x89\x9e\x03\x20\x01(\x08\x12\x1d.google.protobuf.FieldOpti\ + onsR\x11experimentalField:U\n\x17include_in_bitcoin_only\x18\xe0\xd4\x03\ + \x20\x01(\x08\x12\x1c.google.protobuf.FileOptionsR\x14includeInBitcoinOn\ + lyB8\n#com.satoshilabs.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_crypto.rs b/rust/trezor-client/src/protos/generated/messages_crypto.rs index 4f4b248a1..70ffec3a8 100644 --- a/rust/trezor-client/src/protos/generated/messages_crypto.rs +++ b/rust/trezor-client/src/protos/generated/messages_crypto.rs @@ -2023,860 +2023,6 @@ impl ::protobuf::reflect::ProtobufValue for ECDHSessionKey { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; } -// @@protoc_insertion_point(message:hw.trezor.messages.crypto.CosiCommit) -#[derive(PartialEq,Clone,Default,Debug)] -pub struct CosiCommit { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiCommit.address_n) - pub address_n: ::std::vec::Vec, - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiCommit.data) - pub data: ::std::option::Option<::std::vec::Vec>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.crypto.CosiCommit.special_fields) - pub special_fields: ::protobuf::SpecialFields, -} - -impl<'a> ::std::default::Default for &'a CosiCommit { - fn default() -> &'a CosiCommit { - ::default_instance() - } -} - -impl CosiCommit { - pub fn new() -> CosiCommit { - ::std::default::Default::default() - } - - // optional bytes data = 2; - - pub fn data(&self) -> &[u8] { - match self.data.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_data(&mut self) { - self.data = ::std::option::Option::None; - } - - pub fn has_data(&self) -> bool { - self.data.is_some() - } - - // Param is passed by value, moved - pub fn set_data(&mut self, v: ::std::vec::Vec) { - self.data = ::std::option::Option::Some(v); - } - - // Mutable pointer to the field. - // If field is not initialized, it is initialized with default value first. - pub fn mut_data(&mut self) -> &mut ::std::vec::Vec { - if self.data.is_none() { - self.data = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.data.as_mut().unwrap() - } - - // Take field - pub fn take_data(&mut self) -> ::std::vec::Vec { - self.data.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(2); - let mut oneofs = ::std::vec::Vec::with_capacity(0); - fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>( - "address_n", - |m: &CosiCommit| { &m.address_n }, - |m: &mut CosiCommit| { &mut m.address_n }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "data", - |m: &CosiCommit| { &m.data }, - |m: &mut CosiCommit| { &mut m.data }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( - "CosiCommit", - fields, - oneofs, - ) - } -} - -impl ::protobuf::Message for CosiCommit { - const NAME: &'static str = "CosiCommit"; - - fn is_initialized(&self) -> bool { - true - } - - fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { - while let Some(tag) = is.read_raw_tag_or_eof()? { - match tag { - 10 => { - is.read_repeated_packed_uint32_into(&mut self.address_n)?; - }, - 8 => { - self.address_n.push(is.read_uint32()?); - }, - 18 => { - self.data = ::std::option::Option::Some(is.read_bytes()?); - }, - tag => { - ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; - }, - }; - } - ::std::result::Result::Ok(()) - } - - // Compute sizes of nested messages - #[allow(unused_variables)] - fn compute_size(&self) -> u64 { - let mut my_size = 0; - for value in &self.address_n { - my_size += ::protobuf::rt::uint32_size(1, *value); - }; - if let Some(v) = self.data.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<()> { - for v in &self.address_n { - os.write_uint32(1, *v)?; - }; - if let Some(v) = self.data.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() -> CosiCommit { - CosiCommit::new() - } - - fn clear(&mut self) { - self.address_n.clear(); - self.data = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static CosiCommit { - static instance: CosiCommit = CosiCommit { - address_n: ::std::vec::Vec::new(), - data: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } -} - -impl ::protobuf::MessageFull for CosiCommit { - 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("CosiCommit").unwrap()).clone() - } -} - -impl ::std::fmt::Display for CosiCommit { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for CosiCommit { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; -} - -// @@protoc_insertion_point(message:hw.trezor.messages.crypto.CosiCommitment) -#[derive(PartialEq,Clone,Default,Debug)] -pub struct CosiCommitment { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiCommitment.commitment) - pub commitment: ::std::option::Option<::std::vec::Vec>, - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiCommitment.pubkey) - pub pubkey: ::std::option::Option<::std::vec::Vec>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.crypto.CosiCommitment.special_fields) - pub special_fields: ::protobuf::SpecialFields, -} - -impl<'a> ::std::default::Default for &'a CosiCommitment { - fn default() -> &'a CosiCommitment { - ::default_instance() - } -} - -impl CosiCommitment { - pub fn new() -> CosiCommitment { - ::std::default::Default::default() - } - - // required bytes commitment = 1; - - pub fn commitment(&self) -> &[u8] { - match self.commitment.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_commitment(&mut self) { - self.commitment = ::std::option::Option::None; - } - - pub fn has_commitment(&self) -> bool { - self.commitment.is_some() - } - - // Param is passed by value, moved - pub fn set_commitment(&mut self, v: ::std::vec::Vec) { - self.commitment = ::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_commitment(&mut self) -> &mut ::std::vec::Vec { - if self.commitment.is_none() { - self.commitment = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.commitment.as_mut().unwrap() - } - - // Take field - pub fn take_commitment(&mut self) -> ::std::vec::Vec { - self.commitment.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - // required bytes pubkey = 2; - - pub fn pubkey(&self) -> &[u8] { - match self.pubkey.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_pubkey(&mut self) { - self.pubkey = ::std::option::Option::None; - } - - pub fn has_pubkey(&self) -> bool { - self.pubkey.is_some() - } - - // Param is passed by value, moved - pub fn set_pubkey(&mut self, v: ::std::vec::Vec) { - self.pubkey = ::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_pubkey(&mut self) -> &mut ::std::vec::Vec { - if self.pubkey.is_none() { - self.pubkey = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.pubkey.as_mut().unwrap() - } - - // Take field - pub fn take_pubkey(&mut self) -> ::std::vec::Vec { - self.pubkey.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::<_, _>( - "commitment", - |m: &CosiCommitment| { &m.commitment }, - |m: &mut CosiCommitment| { &mut m.commitment }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "pubkey", - |m: &CosiCommitment| { &m.pubkey }, - |m: &mut CosiCommitment| { &mut m.pubkey }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( - "CosiCommitment", - fields, - oneofs, - ) - } -} - -impl ::protobuf::Message for CosiCommitment { - const NAME: &'static str = "CosiCommitment"; - - fn is_initialized(&self) -> bool { - if self.commitment.is_none() { - return false; - } - if self.pubkey.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.commitment = ::std::option::Option::Some(is.read_bytes()?); - }, - 18 => { - self.pubkey = ::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.commitment.as_ref() { - my_size += ::protobuf::rt::bytes_size(1, &v); - } - if let Some(v) = self.pubkey.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.commitment.as_ref() { - os.write_bytes(1, v)?; - } - if let Some(v) = self.pubkey.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() -> CosiCommitment { - CosiCommitment::new() - } - - fn clear(&mut self) { - self.commitment = ::std::option::Option::None; - self.pubkey = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static CosiCommitment { - static instance: CosiCommitment = CosiCommitment { - commitment: ::std::option::Option::None, - pubkey: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } -} - -impl ::protobuf::MessageFull for CosiCommitment { - 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("CosiCommitment").unwrap()).clone() - } -} - -impl ::std::fmt::Display for CosiCommitment { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for CosiCommitment { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; -} - -// @@protoc_insertion_point(message:hw.trezor.messages.crypto.CosiSign) -#[derive(PartialEq,Clone,Default,Debug)] -pub struct CosiSign { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiSign.address_n) - pub address_n: ::std::vec::Vec, - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiSign.data) - pub data: ::std::option::Option<::std::vec::Vec>, - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiSign.global_commitment) - pub global_commitment: ::std::option::Option<::std::vec::Vec>, - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiSign.global_pubkey) - pub global_pubkey: ::std::option::Option<::std::vec::Vec>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.crypto.CosiSign.special_fields) - pub special_fields: ::protobuf::SpecialFields, -} - -impl<'a> ::std::default::Default for &'a CosiSign { - fn default() -> &'a CosiSign { - ::default_instance() - } -} - -impl CosiSign { - pub fn new() -> CosiSign { - ::std::default::Default::default() - } - - // required bytes data = 2; - - pub fn data(&self) -> &[u8] { - match self.data.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_data(&mut self) { - self.data = ::std::option::Option::None; - } - - pub fn has_data(&self) -> bool { - self.data.is_some() - } - - // Param is passed by value, moved - pub fn set_data(&mut self, v: ::std::vec::Vec) { - self.data = ::std::option::Option::Some(v); - } - - // Mutable pointer to the field. - // If field is not initialized, it is initialized with default value first. - pub fn mut_data(&mut self) -> &mut ::std::vec::Vec { - if self.data.is_none() { - self.data = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.data.as_mut().unwrap() - } - - // Take field - pub fn take_data(&mut self) -> ::std::vec::Vec { - self.data.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - // required bytes global_commitment = 3; - - pub fn global_commitment(&self) -> &[u8] { - match self.global_commitment.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_global_commitment(&mut self) { - self.global_commitment = ::std::option::Option::None; - } - - pub fn has_global_commitment(&self) -> bool { - self.global_commitment.is_some() - } - - // Param is passed by value, moved - pub fn set_global_commitment(&mut self, v: ::std::vec::Vec) { - self.global_commitment = ::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_global_commitment(&mut self) -> &mut ::std::vec::Vec { - if self.global_commitment.is_none() { - self.global_commitment = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.global_commitment.as_mut().unwrap() - } - - // Take field - pub fn take_global_commitment(&mut self) -> ::std::vec::Vec { - self.global_commitment.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - // required bytes global_pubkey = 4; - - pub fn global_pubkey(&self) -> &[u8] { - match self.global_pubkey.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_global_pubkey(&mut self) { - self.global_pubkey = ::std::option::Option::None; - } - - pub fn has_global_pubkey(&self) -> bool { - self.global_pubkey.is_some() - } - - // Param is passed by value, moved - pub fn set_global_pubkey(&mut self, v: ::std::vec::Vec) { - self.global_pubkey = ::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_global_pubkey(&mut self) -> &mut ::std::vec::Vec { - if self.global_pubkey.is_none() { - self.global_pubkey = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.global_pubkey.as_mut().unwrap() - } - - // Take field - pub fn take_global_pubkey(&mut self) -> ::std::vec::Vec { - self.global_pubkey.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - 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: &CosiSign| { &m.address_n }, - |m: &mut CosiSign| { &mut m.address_n }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "data", - |m: &CosiSign| { &m.data }, - |m: &mut CosiSign| { &mut m.data }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "global_commitment", - |m: &CosiSign| { &m.global_commitment }, - |m: &mut CosiSign| { &mut m.global_commitment }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "global_pubkey", - |m: &CosiSign| { &m.global_pubkey }, - |m: &mut CosiSign| { &mut m.global_pubkey }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( - "CosiSign", - fields, - oneofs, - ) - } -} - -impl ::protobuf::Message for CosiSign { - const NAME: &'static str = "CosiSign"; - - fn is_initialized(&self) -> bool { - if self.data.is_none() { - return false; - } - if self.global_commitment.is_none() { - return false; - } - if self.global_pubkey.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 => { - is.read_repeated_packed_uint32_into(&mut self.address_n)?; - }, - 8 => { - self.address_n.push(is.read_uint32()?); - }, - 18 => { - self.data = ::std::option::Option::Some(is.read_bytes()?); - }, - 26 => { - self.global_commitment = ::std::option::Option::Some(is.read_bytes()?); - }, - 34 => { - self.global_pubkey = ::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; - for value in &self.address_n { - my_size += ::protobuf::rt::uint32_size(1, *value); - }; - if let Some(v) = self.data.as_ref() { - my_size += ::protobuf::rt::bytes_size(2, &v); - } - if let Some(v) = self.global_commitment.as_ref() { - my_size += ::protobuf::rt::bytes_size(3, &v); - } - if let Some(v) = self.global_pubkey.as_ref() { - my_size += ::protobuf::rt::bytes_size(4, &v); - } - my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); - self.special_fields.cached_size().set(my_size as u32); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { - for v in &self.address_n { - os.write_uint32(1, *v)?; - }; - if let Some(v) = self.data.as_ref() { - os.write_bytes(2, v)?; - } - if let Some(v) = self.global_commitment.as_ref() { - os.write_bytes(3, v)?; - } - if let Some(v) = self.global_pubkey.as_ref() { - os.write_bytes(4, v)?; - } - os.write_unknown_fields(self.special_fields.unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn special_fields(&self) -> &::protobuf::SpecialFields { - &self.special_fields - } - - fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { - &mut self.special_fields - } - - fn new() -> CosiSign { - CosiSign::new() - } - - fn clear(&mut self) { - self.address_n.clear(); - self.data = ::std::option::Option::None; - self.global_commitment = ::std::option::Option::None; - self.global_pubkey = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static CosiSign { - static instance: CosiSign = CosiSign { - address_n: ::std::vec::Vec::new(), - data: ::std::option::Option::None, - global_commitment: ::std::option::Option::None, - global_pubkey: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } -} - -impl ::protobuf::MessageFull for CosiSign { - 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("CosiSign").unwrap()).clone() - } -} - -impl ::std::fmt::Display for CosiSign { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for CosiSign { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; -} - -// @@protoc_insertion_point(message:hw.trezor.messages.crypto.CosiSignature) -#[derive(PartialEq,Clone,Default,Debug)] -pub struct CosiSignature { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiSignature.signature) - pub signature: ::std::option::Option<::std::vec::Vec>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.crypto.CosiSignature.special_fields) - pub special_fields: ::protobuf::SpecialFields, -} - -impl<'a> ::std::default::Default for &'a CosiSignature { - fn default() -> &'a CosiSignature { - ::default_instance() - } -} - -impl CosiSignature { - pub fn new() -> CosiSignature { - ::std::default::Default::default() - } - - // required bytes signature = 1; - - pub fn signature(&self) -> &[u8] { - match self.signature.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_signature(&mut self) { - self.signature = ::std::option::Option::None; - } - - pub fn has_signature(&self) -> bool { - self.signature.is_some() - } - - // Param is passed by value, moved - pub fn set_signature(&mut self, v: ::std::vec::Vec) { - self.signature = ::std::option::Option::Some(v); - } - - // Mutable pointer to the field. - // If field is not initialized, it is initialized with default value first. - pub fn mut_signature(&mut self) -> &mut ::std::vec::Vec { - if self.signature.is_none() { - self.signature = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.signature.as_mut().unwrap() - } - - // Take field - pub fn take_signature(&mut self) -> ::std::vec::Vec { - self.signature.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(1); - let mut oneofs = ::std::vec::Vec::with_capacity(0); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "signature", - |m: &CosiSignature| { &m.signature }, - |m: &mut CosiSignature| { &mut m.signature }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( - "CosiSignature", - fields, - oneofs, - ) - } -} - -impl ::protobuf::Message for CosiSignature { - const NAME: &'static str = "CosiSignature"; - - fn is_initialized(&self) -> bool { - 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.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.signature.as_ref() { - my_size += ::protobuf::rt::bytes_size(1, &v); - } - my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); - self.special_fields.cached_size().set(my_size as u32); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { - if let Some(v) = self.signature.as_ref() { - os.write_bytes(1, v)?; - } - os.write_unknown_fields(self.special_fields.unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn special_fields(&self) -> &::protobuf::SpecialFields { - &self.special_fields - } - - fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { - &mut self.special_fields - } - - fn new() -> CosiSignature { - CosiSignature::new() - } - - fn clear(&mut self) { - self.signature = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static CosiSignature { - static instance: CosiSignature = CosiSignature { - signature: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } -} - -impl ::protobuf::MessageFull for CosiSignature { - 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("CosiSignature").unwrap()).clone() - } -} - -impl ::std::fmt::Display for CosiSignature { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for CosiSignature { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; -} - static file_descriptor_proto_data: &'static [u8] = b"\ \n\x15messages-crypto.proto\x12\x19hw.trezor.messages.crypto\x1a\x0emess\ ages.proto\"\xcb\x01\n\x0eCipherKeyValue\x12\x1b\n\taddress_n\x18\x01\ @@ -2902,17 +2048,9 @@ static file_descriptor_proto_data: &'static [u8] = b"\ peR\x08identity\x12&\n\x0fpeer_public_key\x18\x02\x20\x02(\x0cR\rpeerPub\ licKey\x12(\n\x10ecdsa_curve_name\x18\x03\x20\x01(\tR\x0eecdsaCurveName\ \"P\n\x0eECDHSessionKey\x12\x1f\n\x0bsession_key\x18\x01\x20\x02(\x0cR\n\ - sessionKey\x12\x1d\n\npublic_key\x18\x02\x20\x01(\x0cR\tpublicKey\"A\n\n\ - CosiCommit\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x16\ - \n\x04data\x18\x02\x20\x01(\x0cR\x04dataB\x02\x18\x01\"H\n\x0eCosiCommit\ - ment\x12\x1e\n\ncommitment\x18\x01\x20\x02(\x0cR\ncommitment\x12\x16\n\ - \x06pubkey\x18\x02\x20\x02(\x0cR\x06pubkey\"\x8d\x01\n\x08CosiSign\x12\ - \x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x12\n\x04data\x18\ - \x02\x20\x02(\x0cR\x04data\x12+\n\x11global_commitment\x18\x03\x20\x02(\ - \x0cR\x10globalCommitment\x12#\n\rglobal_pubkey\x18\x04\x20\x02(\x0cR\ - \x0cglobalPubkey\"-\n\rCosiSignature\x12\x1c\n\tsignature\x18\x01\x20\ - \x02(\x0cR\tsignatureB>\n#com.satoshilabs.trezor.lib.protobufB\x13Trezor\ - MessageCrypto\x80\xa6\x1d\x01\ + sessionKey\x12\x1d\n\npublic_key\x18\x02\x20\x01(\x0cR\tpublicKeyB>\n#co\ + m.satoshilabs.trezor.lib.protobufB\x13TrezorMessageCrypto\x80\xa6\x1d\ + \x01\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -2931,7 +2069,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::file_descriptor().clone()); - let mut messages = ::std::vec::Vec::with_capacity(11); + let mut messages = ::std::vec::Vec::with_capacity(7); messages.push(CipherKeyValue::generated_message_descriptor_data()); messages.push(CipheredKeyValue::generated_message_descriptor_data()); messages.push(IdentityType::generated_message_descriptor_data()); @@ -2939,10 +2077,6 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(SignedIdentity::generated_message_descriptor_data()); messages.push(GetECDHSessionKey::generated_message_descriptor_data()); messages.push(ECDHSessionKey::generated_message_descriptor_data()); - messages.push(CosiCommit::generated_message_descriptor_data()); - messages.push(CosiCommitment::generated_message_descriptor_data()); - messages.push(CosiSign::generated_message_descriptor_data()); - messages.push(CosiSignature::generated_message_descriptor_data()); let mut enums = ::std::vec::Vec::with_capacity(0); ::protobuf::reflect::GeneratedFileDescriptor::new_generated( file_descriptor_proto(), diff --git a/tests/device_tests/misc/test_cosi.py b/tests/device_tests/misc/test_cosi.py deleted file mode 100644 index 2034518f8..000000000 --- a/tests/device_tests/misc/test_cosi.py +++ /dev/null @@ -1,164 +0,0 @@ -# This file is part of the Trezor project. -# -# Copyright (C) 2012-2019 SatoshiLabs and contributors -# -# This library is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# as published by the Free Software Foundation. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the License along with this library. -# If not, see . - -from hashlib import sha256 - -import pytest - -from trezorlib import cosi -from trezorlib.debuglink import TrezorClientDebugLink as Client -from trezorlib.exceptions import TrezorFailure -from trezorlib.tools import H_, Address, parse_path - -DIGEST = sha256(b"this is not a pipe").digest() - - -@pytest.mark.skip_t1 -def test_cosi_pubkey(client: Client): - c0 = cosi.commit(client, parse_path("m/10018h/0h")) - c1 = cosi.commit(client, parse_path("m/10018h/1h")) - c2 = cosi.commit(client, parse_path("m/10018h/2h")) - - assert c0.pubkey != c1.pubkey - assert c0.pubkey != c2.pubkey - assert c1.pubkey != c2.pubkey - - -@pytest.mark.skip_t1 -def test_cosi_nonce(client: Client): - # The nonce/commitment must change after each signing. - c0 = cosi.commit(client, parse_path("m/10018h/0h")) - cosi.sign(client, parse_path("m/10018h/0h"), DIGEST, c0.commitment, c0.pubkey) - c1 = cosi.commit(client, parse_path("m/10018h/0h")) - assert c0.commitment != c1.commitment - - -@pytest.mark.skip_t1 -def test_cosi_sign1(client: Client): - # Single party signature. - commit = cosi.commit(client, parse_path("m/10018h/0h")) - sig = cosi.sign( - client, parse_path("m/10018h/0h"), DIGEST, commit.commitment, commit.pubkey - ) - signature = cosi.combine_sig(commit.commitment, [sig.signature]) - cosi.verify_combined(signature, DIGEST, commit.pubkey) - - -@pytest.mark.skip_t1 -def test_cosi_sign2(client: Client): - # Two party signature. - remote_commit = cosi.commit(client, parse_path("m/10018h/1h")) - - local_privkey = sha256(b"private key").digest()[:32] - local_pubkey = cosi.pubkey_from_privkey(local_privkey) - local_nonce, local_commitment = cosi.get_nonce(local_privkey, DIGEST, 42) - - global_pk = cosi.combine_keys([remote_commit.pubkey, local_pubkey]) - global_R = cosi.combine_keys([remote_commit.commitment, local_commitment]) - - remote_sig = cosi.sign( - client, parse_path("m/10018h/1h"), DIGEST, global_R, global_pk - ) - local_sig = cosi.sign_with_privkey( - DIGEST, local_privkey, global_pk, local_nonce, global_R - ) - signature = cosi.combine_sig(global_R, [remote_sig.signature, local_sig]) - - cosi.verify_combined(signature, DIGEST, global_pk) - - -@pytest.mark.skip_t1 -def test_cosi_sign3(client: Client): - # Three party signature. - remote_commit = cosi.commit(client, parse_path("m/10018h/2h")) - - local_privkey1 = sha256(b"private key").digest()[:32] - local_pubkey1 = cosi.pubkey_from_privkey(local_privkey1) - local_nonce1, local_commitment1 = cosi.get_nonce(local_privkey1, DIGEST, 42) - - local_privkey2 = sha256(b"private key").digest()[:32] - local_pubkey2 = cosi.pubkey_from_privkey(local_privkey2) - local_nonce2, local_commitment2 = cosi.get_nonce(local_privkey2, DIGEST, 42) - - global_pk = cosi.combine_keys([remote_commit.pubkey, local_pubkey1, local_pubkey2]) - global_R = cosi.combine_keys( - [remote_commit.commitment, local_commitment1, local_commitment2] - ) - - remote_sig = cosi.sign( - client, parse_path("m/10018h/2h"), DIGEST, global_R, global_pk - ) - local_sig1 = cosi.sign_with_privkey( - DIGEST, local_privkey1, global_pk, local_nonce1, global_R - ) - local_sig2 = cosi.sign_with_privkey( - DIGEST, local_privkey2, global_pk, local_nonce2, global_R - ) - signature = cosi.combine_sig( - global_R, [remote_sig.signature, local_sig1, local_sig2] - ) - - cosi.verify_combined(signature, DIGEST, global_pk) - - -@pytest.mark.skip_t1b1 -def test_cosi_different_key(client: Client): - with pytest.raises(TrezorFailure): - commit = cosi.commit(client, parse_path("m/10018h/0h")) - cosi.sign( - client, parse_path("m/10018h/1h"), DIGEST, commit.commitment, commit.pubkey - ) - - -@pytest.mark.parametrize( - "model, image_type", - ( - (b"T1B1", 0), - (b"T2T1", 0), - (b"T2B1", 0), - (b"T3W1", 0), - (b"\xfe\xfe\xfe\xfe", 0), - (b"\x00", 0), - (b"\x00", 3), - (b"dog", 0), - (b"42", 0), - (b"T2B1", 1), - (b"T2B1", 2), - (b"T2B1", 3), - ), -) -@pytest.mark.skip_t1b1 -def test_slip26_paths(client: Client, model: bytes, image_type: int): - slip26_model = int.from_bytes(model, "little") - path = Address([H_(10026), H_(slip26_model), H_(image_type), H_(0)]) - commit = cosi.commit(client, path) - cosi.sign(client, path, DIGEST, commit.commitment, commit.pubkey) - - -@pytest.mark.parametrize( - "path", - ( - "m/44h/0h/0h/0/0", - "m/44h/60h/0h/0/0", - "m/44h/60h/1h", - "m/84h/60h/1h/0", - "m/1", - "m/10018/0", - ), -) -def test_invalid_path(client: Client, path: str) -> None: - with pytest.raises(TrezorFailure, match="DataError"): - cosi.commit(client, parse_path(path)) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 344cf7674..29bbdd3a6 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -508,17 +508,6 @@ "T1B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", "T1B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "f6c5f398d4e80fc8f93cf70e9b10de24b9a968db04dc6ea21b28d1a273f04ca1", "T1B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "f6c5f398d4e80fc8f93cf70e9b10de24b9a968db04dc6ea21b28d1a273f04ca1", -"T1B1_en_misc-test_cosi.py::test_cosi_nonce": "6990c238036b79368fea1dc1e3e8871d7788322bbee7425d14c53623bc8182e8", -"T1B1_en_misc-test_cosi.py::test_cosi_pubkey": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_cosi_sign1": "6990c238036b79368fea1dc1e3e8871d7788322bbee7425d14c53623bc8182e8", -"T1B1_en_misc-test_cosi.py::test_cosi_sign2": "0852e7433ec54a0ace301b683417107a9805095acd954010b665266503a79f36", -"T1B1_en_misc-test_cosi.py::test_cosi_sign3": "d04fca2d97f7117ffc79ae52d192086aba2f9c64e89db27e20a930e9048f1d81", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a849d9e11e222d1348ce3135680a2a61ed265692adeba4bd48af2fdc65207e61", "T1B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1B1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "e36d5b5db4b3733c9f484b149c0f966b3dd66e8b54e1b5bccf9da5cca7abed91", @@ -1938,30 +1927,6 @@ "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "69d92b51b7dcfb3f983d31daf33fa98630a3882bbf3229b5eb9a940dcfc16e40", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "10326a607b8fdfb1d8414c2e5136f32c3606cfbc9b70cd2a1b36beda11275e8c", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "10326a607b8fdfb1d8414c2e5136f32c3606cfbc9b70cd2a1b36beda11275e8c", -"T2B1_cs_misc-test_cosi.py::test_cosi_different_key": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_cosi_nonce": "06885e27e4ecc5f77258d3b2e3fd8d80f88681fb11dea87b24ec87682de6ff41", -"T2B1_cs_misc-test_cosi.py::test_cosi_pubkey": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_cosi_sign1": "06885e27e4ecc5f77258d3b2e3fd8d80f88681fb11dea87b24ec87682de6ff41", -"T2B1_cs_misc-test_cosi.py::test_cosi_sign2": "db15cbdab4d96085014be22892c03250947cb41017e40368089ae2112f283959", -"T2B1_cs_misc-test_cosi.py::test_cosi_sign3": "24628c67a2880160aa8ae450d68df8bfabe9ead9121e22dc1e22d44a395e23c3", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "ad0a6735f154c9f92d5491a1505a2fbfce1d7ad4a90ddd79e1d6bb68f605b6d2", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "a61a38a608f6316462bdd55f85202492a5638b28cb956109f009fb68f58053c1", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "9f3e793b80ae97f4d11eb31ba09c9144c7bd570ca078adf5f292952152e0d2ec", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "82bf78e346f76069ad913c3d1ab2fa64325a6c8cbecd5d6b0a6aa4ffea71703c", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "42250ce7aa5c00448132d126d43ca509aba5b86bb36877217eac659d0fd1606c", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "122f25ceef057954a02b394a9cd54ae81839f1c8782d61e8b52cf96ff9d3a2f6", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "19f0346a9f8e5295fc393cfd6b067015f0b12bcefd087958af33ffe66d6634e4", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "f4a961209fe49fe62387502d33ac93d4c21acee825235167b82eaf1975ee0494", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "cb4c5ca7b4a3bd512c9d414e5c49e4d02f1c66dabb10a9b4dc606abc3db01391", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "1d6a93ab795fb4e8ca89a5ce057e00ab3a43d23496b5779bcf9e537c416cde2a", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "86d570d412c0d4b13e2e7d7f56f9bfb2738d15ada7d0f786ec889a9454740735", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "a2459dceba39287e929432d9ba012366609d75bcc2fcc5aeb601897ee4a88103", "T2B1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "07025404857730711a32d685fe43f7917d462dcfbad445ff8e6835d81f4eb7db", "T2B1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "9efdfe86a04909c34a78c6a4596fe91af78b1ca98b2d35ff529df31aa31cbfe5", @@ -3329,30 +3294,6 @@ "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "8e7aecf04dc7c5df0ccf1851b67a10540505a0c7e211d36cab4516c003b258c0", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "5592f9d2ac6922b22011a7c31f606a491e5021657295decb6b0861d6c5bc9241", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "5592f9d2ac6922b22011a7c31f606a491e5021657295decb6b0861d6c5bc9241", -"T2B1_de_misc-test_cosi.py::test_cosi_different_key": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_cosi_nonce": "ebbc74669685e6a9f6285d16c4cddb0f8a4b46b0f4f58b82ac8e03cc638f9159", -"T2B1_de_misc-test_cosi.py::test_cosi_pubkey": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_cosi_sign1": "ebbc74669685e6a9f6285d16c4cddb0f8a4b46b0f4f58b82ac8e03cc638f9159", -"T2B1_de_misc-test_cosi.py::test_cosi_sign2": "33031c8593711c0cab13053ac27e1c92281fe68b3cd0eefcff261b169aa18fcc", -"T2B1_de_misc-test_cosi.py::test_cosi_sign3": "d7e275e9a8265cbccc8814fe722935b2c7a1befe0e6c4d4ac3d16ae927f4c603", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "2f2a9697b34e7566ea6921f636dd45dce2e6163424a30b48bb64bde57517fa81", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "acf1be38181d19644cb061c25d87f26d66a9a8bd760a92e3a354a653053205a3", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "894357b5f6396ecd5f213e1efb91e5dae62fbf76d5639936980f75033ab6342d", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "d973696f4f0937fca62dcf78fcce81ef32c03a513f699c521d125ce2481e3643", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "adaa2a8c3cb1fc351602616c6615cabebda1bf8eecbabc08df890f509d157ba1", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "05a461ddb797abf1830de08d61ccffe964bb6e00c995a505d5ea1ab656c1c862", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "1423c5b908b3d4db1bbf3e5c34f248c6709f3f35e09134967a41bcef8626c8cd", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "2c501a906cf0ce02addddecbd315bd83d42c770436065eb912f34e3d4ac03ce9", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "6309b6c5879be62085154785cd6c13191ad38d96fba67afdf117720803de9b89", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "57ada1366306af28be032f3d75411d8cfe429d08a631904723eda8f18029f419", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "e310a7a7d27425ce61d9474de9841b057a207337984614efcf74e7e9705e82a5", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "1397528eb1c9802748e303101c773e274b8184268fdf312ffa31b1c01c99613c", "T2B1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "80f26d847f817759a03dab25b427fc18d71f077e63bab70888f82e7ee287d801", "T2B1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "20041259f3b47fa3e429be139b92a0d2b11c8e075289715341744dd919d011ce", @@ -4720,30 +4661,6 @@ "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "af1dc7cc49b1e75d7c1b06767503e31a9f5fee4f4d0b426edf98818b4caf449a", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "3751e089e8d39d53263995b11465a60e1e16c2672af419df2f89f7b7015ee4cc", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "3751e089e8d39d53263995b11465a60e1e16c2672af419df2f89f7b7015ee4cc", -"T2B1_en_misc-test_cosi.py::test_cosi_different_key": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_cosi_nonce": "df3420ca2395ced6fb2e3e5b984ece9d1a1151d877061681582c8f9404416600", -"T2B1_en_misc-test_cosi.py::test_cosi_pubkey": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_cosi_sign1": "df3420ca2395ced6fb2e3e5b984ece9d1a1151d877061681582c8f9404416600", -"T2B1_en_misc-test_cosi.py::test_cosi_sign2": "381af0c5a649c6adb62c6d75c3a46f1a7b3c31e8559e6dc390a4738aad463997", -"T2B1_en_misc-test_cosi.py::test_cosi_sign3": "be6f8a2dfb626ca4fdedaa1a0e91bb373fcbeebd8fe7180884b4cc56ae32a7e9", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "ec0787ec28e6643c3f0d3d925960219086378eba88659709cccde3de2cd31fb0", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "c7a89aeb54454adc91cc0688f676faf9f1c24e8bcc2d350af3e3c8b70fdf5ced", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "d8d14a4d23b4c257d37d34a2932d1d2b940d919c943aa44a8facc4a7053ede83", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "cc987dc41cafaeff79e3053882c2a8c41b2a82da149cebe7ed3e3b84fb20d9a4", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "bdbf159199dd2849b96c820a699fb49b5177f9755fe820b00cd201f47d94b531", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "34cd0ab3d37e4d5cc6e37a24ae3f9746f3deb20ea4fd2bcdecc546ec364cf7ef", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "8e4b73c8f813f12f8b52fcf1ef30c0368b22b5f6f58af61298c5326b1ef26913", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "aba52e4a06fd36beea0ea5a1b627f8f627b022b0022a06f642138d1617bbd912", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "829778a8d2915c226eb3842e9d3535d53dffa17d7b13a1a21646c595588ff535", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "fad77d8c159e54dbddc2e488858205a7d7aed115d136177982f1648df49bb0c8", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d2d9c32d8cc435f129019f5fe2c376c099ccd3f14e2c81ce2d8fe8397531c574", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "1824390cfd045d43a5e38bf5ec881c3f97b8b0a1adff3dbf16416b413d3bca4b", "T2B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "cffd4985f48bb8c64baede4ce18ae1a69dbd02bca4664ab23a146d5031ffad87", "T2B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "468ff13a1c14b5a9fed5b58f0f1473448828acb96638045a29c6fed73e140d91", @@ -6111,30 +6028,6 @@ "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "d0b024c3cbda0c8ee003278de069360b1cfc3da3b2f572c30d68ce162fdfee6f", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "dc05c97de56c28a323a10642d62c22cadfbde9290ac31431978c350d425a2d8b", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "dc05c97de56c28a323a10642d62c22cadfbde9290ac31431978c350d425a2d8b", -"T2B1_es_misc-test_cosi.py::test_cosi_different_key": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_cosi_nonce": "2d6a3fefcf8178dbfc876a61b980bd9b9d84a207553c806bd0f79dfcdbca6bb7", -"T2B1_es_misc-test_cosi.py::test_cosi_pubkey": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_cosi_sign1": "2d6a3fefcf8178dbfc876a61b980bd9b9d84a207553c806bd0f79dfcdbca6bb7", -"T2B1_es_misc-test_cosi.py::test_cosi_sign2": "79482564a18e9f70c3ae39e1b2efc4073c9bbebe76fa6f1cdd9e43d6e3f497b3", -"T2B1_es_misc-test_cosi.py::test_cosi_sign3": "d98eae3f1076fc8b311aed7271ddb67e71bcadcf176cf35e8b6933aaa275456b", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "512aefa9155530f96152a0d20e7727e0f5cd02409f8b2400fc4c18af0d943c19", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "21bfe7447fd14090d1b581060656b931dffa0dc87ffdfe7012f331a2988a0b96", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "1f171f60556062a67740d319ce95b72dbd048677bb01d7ab7183ef30f0fbb645", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "4cdf2f0fbc5bb1c171d9f8e2bdfaf298c3c69c679bb4818f8441e89accee8fe9", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "91421480650a2a8d90a00f12cc1efbda1fecaaba1b8f8b40a050f0753ab979b5", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "22d733ded20d494f2b0c4e572b4a77dec7a2e0a28e0f1c944edd00689f2ddb9f", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "5c73649db4d3905186164e9455f0b31bb0bf4201ee1cb5dd69be0136982e0cab", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "b9589b43385afeb47aaf559bd4d211798d1f3ed9fc10238d29403df79ee8fb53", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "7e1cf1b5dc0d06006802cb7e059c978ea2789a30413b5d621fe4f8d0734bf81c", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2620c6dc933aaa6c90a569e8d2d84e34e2cfc474c4278ae473cb9afcad911c4b", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "962a923cce1a3d79a0c620820c299406a305bac6c9dc15e35e5b37ae33455fc0", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "5c630bbd3dddd7108de3b62d54d2cf9eb6835778a043eb22b8ba94f4746e3c7c", "T2B1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "990a89cefba1c6dbced84be89a5b46e682caaa3ad823c0e90e9fb965121763bf", "T2B1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "ed5d2107fee8450d75172f551c66c005fe885a1aa8b52b70257167c568488d14", @@ -7502,30 +7395,6 @@ "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "cee0f6a519db68f21773449f3e6856006dd40734e49b069fb879028322150cb6", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "e2b731229d1427e2b311d23f3e096545613313ec5a3da4e50e86afbad6adbfca", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "e2b731229d1427e2b311d23f3e096545613313ec5a3da4e50e86afbad6adbfca", -"T2B1_fr_misc-test_cosi.py::test_cosi_different_key": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_cosi_nonce": "92ecda1ae682b08366b59b84406ffd51d3bdd7973d8b2a6ffe96db6dff1c4036", -"T2B1_fr_misc-test_cosi.py::test_cosi_pubkey": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_cosi_sign1": "92ecda1ae682b08366b59b84406ffd51d3bdd7973d8b2a6ffe96db6dff1c4036", -"T2B1_fr_misc-test_cosi.py::test_cosi_sign2": "36076e3d735357dfb1c7a5e91d3a1ef4586582f3a594d4985c2e98df61b46d26", -"T2B1_fr_misc-test_cosi.py::test_cosi_sign3": "faf507c23b2c2cf3c777fc68053266c7167b2be427be1137482732bd7f3f21a9", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "6110d06d0533f58addbd2f999743fa34a0801c4d7b9bb2d99ffa1bedc83d66ed", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "b8c2c2c8509beb9f4b0ad922d376fef2d42be026ccd92fc92d6bed7625b5d3d7", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a9ec027e6db11ed9280efe2871c3d64dd07054fe4d56419a1a1b41f0926528a0", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "c16ae7ff2962f64986dd93271c8d343c416ef8f8113196dcbfe04679f8251245", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "bafa683009b9800952f9d5ae70ad0f68cd9e7b6b17a6df813f802c24c271bc79", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "7b0e56546d5103e57bb10d4a454dac3def5f54f47fccb65bdc891e9129cea84f", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "424e5811f3b17b6ba6f0889537efb58c2ed993f7b528d4d42aa2feba7188b983", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "bde0ab63b028f55ea878e34717b47c159365879edbe5803e51b7d896334eeed6", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "1d02cb27b7e43eb4ff044ac8c53aa886a7d1987002ec048f11d075d741c28a20", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "4554b246e452bb27972592676399cf8c949816da4a00cab368cea778d40f8ea3", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "527ccd1f2a4ef84a181c06d4df26fdc2c582035e745d25aea9f0b114d8a9d898", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "1070bd02fac2efc841080c0637bcb8caa9dc47e36295cae6d7c96bf0db7f541a", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b88a77fd08f3bb3bff5dc70f960878ed65bdd46dc34f11865bce617e7aaaed28", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "d7b2b7f911d0b1ebcd95275ccd1ecf1e7b8e53080d5fa70c01a8840dc23b1237", @@ -9205,30 +9074,6 @@ "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "1c4d2386a5322d5e0fc5e690d8fe9e3f629536c9405521485420f6dc2ed9de8e", "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d39375d8ee59020ba5c2b0895905334648cdf843aded4473c13aab956489bff6", "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d39375d8ee59020ba5c2b0895905334648cdf843aded4473c13aab956489bff6", -"T2T1_cs_misc-test_cosi.py::test_cosi_different_key": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_cosi_nonce": "98f05a25d51a66a9e55e31bcbc0b40c5e83321ca6203f34deb1a04a6a17ec17b", -"T2T1_cs_misc-test_cosi.py::test_cosi_pubkey": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_cosi_sign1": "98f05a25d51a66a9e55e31bcbc0b40c5e83321ca6203f34deb1a04a6a17ec17b", -"T2T1_cs_misc-test_cosi.py::test_cosi_sign2": "cd738c0f1477e72f40995a686927413ded747e08275694b149167de93b3b769e", -"T2T1_cs_misc-test_cosi.py::test_cosi_sign3": "74fb1d8000a1565e80d35d3c3f79161e8b3f586ab8dcfdc7eee2a020b499c078", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "fcef99ead33b058212580316b41570bf7c8fadf64b566c71b4d70b6b7d1c8e3b", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "a02157c1d1909c456b33907814c417ceb9d16c7f9de10d56cbe12d09971b2560", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "bc34dfb1e19b4c655cf44908f3ce05b21ba0e9cb8b4e97bdee35b8291aa0a232", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "b2666be6c016c3d58009873812225387b9f2154c7d498c620bd7a5742058d654", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "28a9508cf78d77055a4bb528da662ae0634cbfe5638f92e331b7dc6b2d91792d", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "e7a2d703602998ee5a39fb7fcff9ed804ad0e8a94bc5d4f7205bc51526ac93a4", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "9a2abcc7ec0a58d74521b06665dc3ae88b9a62042288369390d26b6763d827b9", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "3cc98b88a21d501a4c63a2b0ad19ec5f3d40222ffd1facc0feb970542581c4cd", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "f5beba2c29dea248bcc23dbd4a0bf3829a5d3560baf838e2eb5f69fbb4261768", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "df81c39e6fd20ca56aafd9e6c4175472190cb74a7b2551e196b3e6e1daee77ca", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d025205f6855b9cd70dd9dc31ab924d009e799e05c5b94135fc14dc01f76853a", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "380ac240bd5640370348cd3f11961fc8b33d432d6734663aa113fcefc4ce9eff", "T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "9735e3b03d62177215eaf671d9dff4e9b1bae1fa5c3bcefea290dd723320287e", "T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "cd4b56ccfc663dd499e4ac02fff1000e05f58347f1bfdfc45612832e5c7d780c", @@ -10676,30 +10521,6 @@ "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "44e752f9ed9f60ae9f0ca13e405e39bb455b43efc24be042ccd1a5a165af0c60", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "72fe2a5ae639309ed9f97c74a6c8181b9d4ef52ebbd296c2a6f919019bc01684", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "72fe2a5ae639309ed9f97c74a6c8181b9d4ef52ebbd296c2a6f919019bc01684", -"T2T1_de_misc-test_cosi.py::test_cosi_different_key": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_cosi_nonce": "e350f690f1c28f7e9dba9dd8c507893cfae0a56adac15d92be46b15aa01abf3b", -"T2T1_de_misc-test_cosi.py::test_cosi_pubkey": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_cosi_sign1": "e350f690f1c28f7e9dba9dd8c507893cfae0a56adac15d92be46b15aa01abf3b", -"T2T1_de_misc-test_cosi.py::test_cosi_sign2": "55aa2834b43cc6188c7e1200baf9bd30cd0c6ed28c8395708da810feef86a35e", -"T2T1_de_misc-test_cosi.py::test_cosi_sign3": "59947cced1a42e3b009bc8275c777aa2e831b853b2a213386b0f6a95f47a80e4", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "430b1a67ef6afd7d5e70cf65b61f16d30b0848aede534f942a874050aafff4b5", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "f6218139d2bc6d16addb206ae28916d4c6b64a1ab0c500a28d18244904fede95", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "d73d8efc8f293e97a0983c01a8db287f36348ba6cadd87e9b30153368c25f770", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "bc34420d2a360999c0bfa6b924c62e9c992d1c5f00f27c2d4720b30a80d7c668", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "22c4d2aaff98aa2fe3f7a69e154cce3a98e18340dab90de66d2d1fa8b7bc2c37", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "8eee264d700aad7dc05381ab2373d852e7db9f68486076baa45a5ca53112ddb4", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "6717ffff08c91aa4a0efe516ae6f2536653777cee132b5eb5fa68a12b66dcc8c", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "ac39d1ea3f808eb1b2c48cea535846275525cf05017583c780edd48fd9ba0472", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "a81bf07732741a59e4b6d815c7f803cc9944ec9f5c307e473780aaa5b8e0fee9", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3238efe69c8ad351b921a769b5f5daf91b252f89c9d7c08e1cc7075ae7a67806", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "f028a400dad0eb049c42de8c5e7ba57bddd6881bb61c2c20594a54aed14ee849", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "c82e4e18f402534f17a7bc7949a432f3394ff9d4156c12b77d55c6d9bd9db744", "T2T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "0aba69a0e1bfb96e1525ee56fb0ec6b08b8655cb5163da70199ddd0aece751d7", "T2T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "a91d34b541494aa36357fd0284b7d6a0de5044269f37271e3a3dd4692d3a69f9", @@ -12147,30 +11968,6 @@ "T2T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "f24ba4c504e12ec403aa99f19f9d9c78cc513edb2b7671063033902d089d894c", "T2T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "b24d5247a866e3aa69fe3fc17eabaa210890b285e3c4b84eb253570fcc0c8bed", "T2T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "b24d5247a866e3aa69fe3fc17eabaa210890b285e3c4b84eb253570fcc0c8bed", -"T2T1_en_misc-test_cosi.py::test_cosi_different_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_cosi_nonce": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", -"T2T1_en_misc-test_cosi.py::test_cosi_pubkey": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_cosi_sign1": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", -"T2T1_en_misc-test_cosi.py::test_cosi_sign2": "b3086dafdda715fea319d90ee3ccab84a1728678dfa67febce1f7cc943d9e585", -"T2T1_en_misc-test_cosi.py::test_cosi_sign3": "6ea5987edda7c73d7aac080833b8574626f016233c38d068185e8cbcba46cc11", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "25929f2293cfef2d7fdd8859bb16d0311c5532e02cc0624a893c50be3e16182c", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "098c3992a0cc170e8041c0b0708a658f2d438da6dd829f38c8082d75a8d43154", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "e6366ba60e181360741bd85df2fa8fca85f4dad889d510a5e3365abe63f4d6a2", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "a78b216be479757c536da26edab8960226c6b1434012d51927b5ea461a952de8", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e91bc6a2639778d60a1201e93fcb488714b7d38f037be31f0a41838165019a48", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "35ff50fcb49fc802e20fd0a44a161afe0a8b2b2f2781b409a4460632e884a83a", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "106c1900eb2e896139b514d9d0d3b4434858c6752c0b8eaca38cf7aadfbe508f", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "a2c7a9f111cf2a8fd72d06c5fcc738fab679545c891db34043eeb22d1311ac62", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0a745253b75f0ededdec44be05e3940166128226e96ee49183fb6c97a3fccf70", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2cbaa2088776f1c7c735aa1ef767d33f8ad8ebdb592b6d9814dd1bbabd6da9b5", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "58a16c31957f7d540da34a30f54631e607eca1af6efb27a0b3877e49f77a9d56", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "7cee26436a0025a56eb1f67e432e4e707857714c1bbf5f61df60cc20f54c84ab", "T2T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b34ae9ac7b3ea7467afe774bf615ca1e1eab26c64fe5d25178071bf15e8d6518", "T2T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "648e45403ce412314e9d91625ace8ffdee52ff37ac99b13f4e86d018a024515d", @@ -13636,30 +13433,6 @@ "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "55b5dfbdc27d592fd9a7e62ec04a3a3b5fb2a42d1017d3409956c6221948333d", "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "4beda1eaa2cf0a9a8daf90a86ae1fe16655068cb641c4080dec5e3175d24136f", "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "4beda1eaa2cf0a9a8daf90a86ae1fe16655068cb641c4080dec5e3175d24136f", -"T2T1_es_misc-test_cosi.py::test_cosi_different_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_cosi_nonce": "a0126af18a7140ee273dfe2df3852b93e4bc70e273bba2cafcf87149361aa884", -"T2T1_es_misc-test_cosi.py::test_cosi_pubkey": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_cosi_sign1": "a0126af18a7140ee273dfe2df3852b93e4bc70e273bba2cafcf87149361aa884", -"T2T1_es_misc-test_cosi.py::test_cosi_sign2": "9ac712c7e37de56dbb07eec92e31f2f811e030cf51e166960f24339495e2ea6d", -"T2T1_es_misc-test_cosi.py::test_cosi_sign3": "c58af1a8a5d4012d92a37cb4dc79362750a96f9af2aa2814d74d7519760255b6", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "e2323464410f4cbceb0e6cc46a609e57f33720a88f43f7d13db44a42a15cdc9e", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "81e22d1c7fb26dadcd166f53971a0b7aa88f3d51cd3a83069649163cd304fbd1", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a9cbdc03cd44eb0be944a43f4db00e3cabc975398f5575e567783ba219113572", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "0692cfbc3e0e617b6c8e2f0a3062784a5b985c4ec920d068ba5fd1cf3fe421da", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "858010ba830c766e742fe514220e95cdf5d79b69f78519b7fd8df31612b98a4c", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "3db35028673ebf7b7153e268d8ab6883657e1aafa126ec42959ca79eda8a2eab", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "c5c8924c33a7fc7a94d929e79edffe68f76ababa2949191d3536149039d8c987", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "2d23ee746632dd0e48199394c243d2e1de8a29ff079f9b03cc22457176bbb42d", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "27a49ffcc4e2cc1b7a378ef13093ddc3641da9162e5a5227c393958b8e808ae4", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "293ac03ed0c5788ece97234d07a243849f6779095fd6d6b48bfcd68e49d1c2f1", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "fd04b065eb272e74efb3015e4efaa98d707060cb596a9a7592ce2e85818d07f4", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "67bb7bf9827a3c3e402a8d5ad9cf4408652462e294867e00b1eeacbdea8cc7c3", "T2T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "5e60bcb1d58cd1c67104cde3baa542d1ae90bd29edaf5a084ee4a79f0c64f6ed", "T2T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "093f2d9fb3497e9929debe893c3062cc518cac516306653b06978eb8c1a88768", @@ -15107,30 +14880,6 @@ "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "36b6a6189091ad76e3637fa9d74070fc204fdaf3954e00c7b1e4b657dac47d39", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", -"T2T1_fr_misc-test_cosi.py::test_cosi_different_key": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_cosi_nonce": "95b30472f41bb6e0de7c9623b64b552df442f44cc86882c2b685cc2b2eab2815", -"T2T1_fr_misc-test_cosi.py::test_cosi_pubkey": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_cosi_sign1": "95b30472f41bb6e0de7c9623b64b552df442f44cc86882c2b685cc2b2eab2815", -"T2T1_fr_misc-test_cosi.py::test_cosi_sign2": "af2b25f8baabf60958feece7fe4b9fe9fcdae783605ed6871204a2134ef5602d", -"T2T1_fr_misc-test_cosi.py::test_cosi_sign3": "e404aa56bec9db40ae4294f2406627b1ebadab606ebd27be2aee127a966b1a5f", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "0584acca025a9ae0f32889fbbf7b4a2edb5544848e515b86b921044a5b37aa2c", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "8c70c852de2623374b4fda1e3b07d75db47fbf21c371bbdb0a3d971056b24838", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "7ce5843a41a23a1784826562eb7ab185b9ddf5bf7dbfcec518bf5136097c22b3", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "9d990d6295db1d93aaf311cb06e4954cbec0f1c42b830099513cf8926673a8d1", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e25d319f5771103597fd73f71590303ae4e538822a970e6d649c8749f234b9a0", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "d1ea3a074576fb1b1e93f10e758859c3f91de0b830251e8e47bcfdbe35e637f6", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "cd37a982a7ba142f8380eeb8773fb6e28a22b8264c55e2bf3810e8fd8458307c", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "d3b2636d945aa6b4bf7b03a8faa0412753b244e5c8309acc24a3064222c193a7", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "052ff6f160215c66b05686e39bacc0f932d68f560e0abb8f37a49a6710a4d870", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "376e4ed50e9585dc31d297f1d7578b662682bf95e07ad2750865856137411318", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "7bf2cab0d6d11d37cb7d723530bdf1a6fdf9627c6f03ddb3372b6429d3ccc90c", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "80ce58572ed6e634c4b46b1e335b96def1c83ba4d63d18f22b86040a4689a648", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e2fae2f630e8cc65fdd66d7edc4bb1452d1fd4ecb70c028ec9f5e6273769406e", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "62953fca62df18b03f69e3644b65ff9675169c680c83e42a0a0aa33dbd365eb2", @@ -16752,30 +16501,6 @@ "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "ded996ebdb16ac51a7d467d75ebaf88c83783148cc0e16bfa130fc11d10d6f27", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "a32aebc4c23eaa5b329c975b8eed770c826fccb315e57a9d22c90c768433ad3a", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "a32aebc4c23eaa5b329c975b8eed770c826fccb315e57a9d22c90c768433ad3a", -"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "ec3b7173ff6f19e7200c69a8166120edd16c0bb598b5e83275776fee3a64e9ff", -"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "ec3b7173ff6f19e7200c69a8166120edd16c0bb598b5e83275776fee3a64e9ff", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "c0d90dc4e64d8bc96716d16227eef9c943ca0a5b99abfcb9041fe04ef04383ad", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "1108bcdd49beb6be03ed3a59a1d0ed6cd4c5a174e4cf27c42965afd54fdc4fb1", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "019ba81aa54a3cba059232f19343d51c0a8b22cd78e2f17774e9a5fadec13904", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "d4954efa2dd143ed449ce985b980a3c68ef35ee999ee48ceb4560d1c9fea2880", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a52b2a0d57d232949f624f1ab3af111fa4caa7b39213cd5903d8588eedc68437", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "7117a75677a6dbde53683703bb8f60911d610a53546035b64181fc0857fa5a23", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "7b99b70c2b02481607d5e7b7306b64d54745b490e9fedc598f2217a16c5198cf", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "5bb20bf1eea67a8b182011f0aca47108655094dc30ccce3292f92a99bac8ff43", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "61c8b685592b080877810095bddcd06d3782f6a747b27c032b770189313568ea", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "0813f1554a574bc947bae65d6c935fee9a697e091a53289784395f2f6f3c9638", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "e27f887d7f20231fc7a438e5d31e80947070f51a52819091c3de2c187a725b77", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "0d04fcdb5df2aa6b09e2ef08ea99b44e29b347ea90281be6dc4cd51460308947", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "b614de056146f5162a7e3ceda5e48b39e052398fa43239c0f4a06ad0944983c6", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "089c0f0c136b75bf62650a502e5317fd898c9b80b229e25cdf817139ef8221bc", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "fc42856145638724b237005cedb803a0693ce8b0f593350b97b79583d08a100b", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "f714bf3001e4de3125ce491394f169edf71006a83dcf16018b0ce0dd0f055889", @@ -18120,30 +17845,6 @@ "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "11f323fdeb0b2dc3bcba00c238dc48a3f840122dca34d7ddf9b0cd1b25b36320", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d9ad606085999d2b60c289c9752394c4374140dd38f2dd10cc4d36cb7a08a4fc", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d9ad606085999d2b60c289c9752394c4374140dd38f2dd10cc4d36cb7a08a4fc", -"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "a57d8b54bf797717866b44189f046f15e43a5f245625c64399a9811338c815bd", -"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "a57d8b54bf797717866b44189f046f15e43a5f245625c64399a9811338c815bd", -"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "f2fa2177965b0320a3f4f39a733ebfe079b2896f691a3fe3fe437dad958e36e6", -"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "7bff6f2249d2b016df0b801815fb51df1b1cc4b98752261e38440d281485b158", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "3abd615eabed6032a66c9d3f9a45075c3c4a3d8026e835ce0d7aeb58f56055f6", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "5cf9a959941d64730eca3f4ae8b62c3cdda11864baeadcd9b4a3f894946c8868", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "963f824de6eff812253e8cbc5448a3b2458a2793f64c1b0611b1273f76632f4b", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "fc0ee9893a307550630ba8c0c99b1a96dc3a78523d2e918d8fc48adfe55d2c25", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "484c1a1081b63e028daf8f0d998ec04257799a7dc72f8024f82099680f51f945", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "17aa3bac3698b13446772ecc7344247e93c6f03d1906a2ee5634fb3b34ca96c6", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "98ea5a14e818f35e7959b4b8c6526fd00377c6159aaba4f18e6cb0e864872b38", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "d2a9871b8d61bfb36d8086d1c570d9f2a8a6dd1a04ad3c4e10a5cd023c128570", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0736b5c166acd867f8308d4a7429a0650aa512250d50c7021cff473b53ad8921", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "635fb46af6685f1bfafc38a067c8e2a420f1abc94fa5996d7b7c6b8e9979aa75", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "6c2aab04cccc714f40cacd5a405053ce2b05891007f7ddbce29f5beabab7b1e0", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "b57b18a150e85887d724e8ed9422d1433705786f77f287cfc8a9c84205de6639", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "ff7aaee28bfb9750f7e0b184353be8e27d36ab50752e53460ba40d4bf12fad4b", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "3ab2c61df687955c71dcf44a18f386c41d4a7b5f6cf27a45aac0e1b784a29a89", @@ -19488,30 +19189,6 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "68e0f086eb6f19ec9ac84c8ca58399ec58ba6a7fcceb92921807926b5c00226a", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "45d4268452baf0a3fda5bf7688b697fdf5782bce4010d2b46c2a7fcbd5596c25", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "45d4268452baf0a3fda5bf7688b697fdf5782bce4010d2b46c2a7fcbd5596c25", -"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "a204cd8e059614961bdf311ac500f5426d5b82b94a63697760f08f7f977e4716", -"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "a204cd8e059614961bdf311ac500f5426d5b82b94a63697760f08f7f977e4716", -"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "0d53097f581ba4f39eaf5cf1072b28e1c62a3da104bbe60a010a8d5cbfd6d10d", -"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "f8d8b198efa4e4e577875bca8bef14528aa171659c7503a544cb4f638bacb20b", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "0d6ed4635e3659f7137f1fb56363ab17208d6854fa4fb8342345a395ab08aec1", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "306d64b4e3e158edc05edd21df8ffa2ade1365e0fb5311dd46542348badff676", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "7defbe8b6ff9f9a9c5b1c76026611946bacdc65998bae62c1a66a593d2c80928", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "b6d68999a9415e3b18415cd9793b4792515bb09bc72369876869ff789b38f975", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "6a9a9671311c954907cd6d41ed17e79f187fbd8a7bbb67202ba48057ea214a20", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "feb4a2c1fb47cd448cb6fa75b563ca8c12ab8979b5e5396c89a066de439d62db", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "32cbac0323a81c3eecb0e3058553175b41e719671aa35fece3710c600674af4c", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "1c52c3bb27453f1df1ff1e40ca9db824832fd9528a09a25390f80c0e66ff433c", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0b8f3e50d15c522f4aec00b831610faf000c9c450e38c52659ab8d112c5809e6", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3a12fe5138327dbc6ccdbefbc0062023a085fd6e0d7092b3265cdf7c201bd72d", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "32f50cdf7202aaa7dcac0c4e40fb87cc2c751f7d8d10f94df44492b683c455a1", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "2c6edb94d37fc478a831f3843b5bdc10e50100112eca73c8781435f393ab4a57", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "3f6963d82a094c2efea50fe683868b47bd9e165ff15dc520d80245ed48768874", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "2e7bea46e6a2126dd9b0d3a7e0584dd3e089683fcb6987007d1642407fd841dd", @@ -20856,30 +20533,6 @@ "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "7ed435d0ea98ddd5318c024d9bbd9b19f492955dccf20009aa6e063d6f5a654f", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "58d53046225569771b1e611ca4a600472751f6ce18e335055e90c020cff5aefc", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "58d53046225569771b1e611ca4a600472751f6ce18e335055e90c020cff5aefc", -"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "5fc740e20eb86a03ca9268ffeab74b8fbbcb4582cda1d6e7817a7b513e2a047e", -"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "5fc740e20eb86a03ca9268ffeab74b8fbbcb4582cda1d6e7817a7b513e2a047e", -"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "bbb31d2b3478166c29a5035584d9c1d0e78586d820314e4368ffe10933570ace", -"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "e350909e7434d99e24e4ab2888626da075449e0fd9fa27aac87487886dd8069a", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "abc6c1471ec5f28d8991055e4215d23ef3b409e577a22ea2e7fa85fb279a4ab8", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "ccb0ae3557ea737aec2bbb118e4900a9973d01ee0bf0f5b223edcab5f5c35dd8", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "ddf528cbe46a9d05bf65cfe5e854240f56b334f4877f44091a34247289a51178", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "8cb0df27efd22a6a9632c87cfc589c6fec440cc62593fdcd30446855110b71a3", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "6110bbcb787295d23199d419c262d9f2879a9771890d169ed66c3c0be3981c22", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "4436153558f56adbd7ddb24f8154c3e1cd9cc6ee00d7691646eafb163b8b48e5", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "7fa192e91b99fb2d51f2d19d0710ff9e9a5c332a7a73e5d7058dcd3f97a62fd2", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "81eaaa5f962ed57130157aa9a54dfb188ab67f6cffa88ed5c150100e434211dd", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "d2cc9e9f3e074f18c6a07a47b1c093a4a0fb89e14a4813cda257b9ad336f1ed2", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "ffb381e0b7d631738201114fefea18fb4fce0df66da37cd91624af6309b66f55", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "1e1fffa60ff912aafd720ad67ee2cd90ade2d9e9d46e1cf0734cbb549146f7d9", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "0873efe54125414339f44427afdde8c7126b6f2814635899eb5fa0b1cc1bb6ae", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e08d043a6116cca9d74765dfce2ff2155767b35dbd688bd95de98ff06e589d38", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "89815a33a926b8ba6b4cc49fed381dbd22daa34e5babae43e9632e89b4fcb98b", @@ -22224,30 +21877,6 @@ "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "958b83692ce78ab79690d310cfb0e26b34de15182c82cca99a78b6d2cd879e34", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "f0400f343f28fb8d9762c75f44479a8e25757f0f18d7fe4b0f103fe91c5c436f", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "f0400f343f28fb8d9762c75f44479a8e25757f0f18d7fe4b0f103fe91c5c436f", -"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "1812247aae313423d16b5a1bd1f82c2b00f48fb5ef1e0973d351aa69ff9c2638", -"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "1812247aae313423d16b5a1bd1f82c2b00f48fb5ef1e0973d351aa69ff9c2638", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "9e08bd6ffc3e28f8a9177c429f7f01211533becd9b7c281ff4f94e52e64dc4fe", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "05a835f6ad16c0f4d321c0114a5499dddf5a5938b4e21efd6c5657651e38b6e1", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "9836b0ba86b9e7d58ccb11811aba96618ab9ade63f6e4e83e801e89eff4f184f", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "b0a85c1e65d3a48dc90c21512fd0379370469238855d93af213711ae99b9549f", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "2fba7ed19bc9c5eea811a66f74d6de0c861d0ae6575e6ba9741ebd472240ecdf", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "32645528417699d966ab02e4786a8612777fbc4caa20484ca92510d290755be3", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "3fb82b2d11bdf93dae574c95b68e36d4e569b97728f242489b2c8878cd3db9f2", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "10b9ab92d1e8ef2e831ab20a63e3f74d0574f8b8f144b498b6eef58a720b1b8e", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "fdc9bff64156a8aa036479fdbaa3ab23a2cd0fd71d00c92aefd9925063a0db1d", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "9e6deba6d192f60d68504c313533847247b42d0154ad5a194151a50f0c80f82e", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "98dd05d472320da4aaf57f00c9de193668651e4b3e44728ae237f739ee98f2d1", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "a31df5bdf943d0e44f9c5937e37dfb05ba24a9c46b9d18bba93e4d32512c2c8c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "b8d64aa72fad35082b6b2b3391ebd6470bc83af0115775e6bc660073188b534f", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "2b0a2e12c23e425c0c777a188424f3011478a85010613696eb544a2e4a194f75", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "400d50061c103adc8174221b2c9a3f8d7e0f6e2db9690a3da346a8043529c63d", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "9658e2a196c78b8df9d893aeed64f96fadb259e18d080a3e5d06d1be6adc2662",