feat(common/protobuf): integrate EIP-7702 delegation into `EthereumSignTxEIP1559`
What changed, and why it matters
This commit only changes the data format definitions (protobuf messages) used to talk to a Trezor hardware wallet. It adds new optional fields for an upcoming Ethereum feature called EIP-7702, which lets an account temporarily act like a smart contract. The commit does not contain any actual signing logic, user confirmation screens, or security checks. Because it is just a protocol definition update, it does not by itself create a vulnerability, but it is a building block for future code that will handle these authorizations.
No immediate action is required for this commit alone. Treat it as a protocol-schema feature addition. When reviewing follow-up commits that implement EIP-7702 signing, pay close attention to: user confirmation of the delegate address, chain_id and nonce validation, replay protection, correct RLP/SSZ encoding, and whether the all-zero delegate case truly revokes delegation.
Security signals we found
New experimental protocol fields for EIP-7702 delegation added to Ethereum transaction messages
Legacy firmware explicitly ignores the new fields (FT_IGNORE), limiting exposure
No signing, validation, or user-confirmation logic is present in the diff
EIP-7702 delegation can authorize an EOA to execute code from another address, which is security-sensitive in general
The commit is tagged [no changelog] and marked as a feature, not a security fix
Evidence from the diff
The diff updates the Ethereum message protocol definitions across the Trezor firmware, Python client, Rust client, and legacy firmware options. It adds an optional auth7702 sub-message to EthereumSignTxEIP1559 and an optional auth7702_list of EthereumAuth7702Tuple items to EthereumTxRequest. Both new fields are marked experimental in the proto file. The legacy firmware options explicitly ignore the new fields (type:FT_IGNORE), so this change is not implemented on legacy devices. No signing, parsing, validation, or UI code is included in this commit.
Changed components
common/protob/messages-ethereum.protocore/src/trezor/messages.pylegacy/firmware/protob/messages-ethereum.optionspython/src/trezorlib/messages.pyrust/trezor-client/src/protos/generated/messages_ethereum.rsInspect captured patch +504 / −77
### common/protob/messages-ethereum.proto
@@ -2,6 +2,7 @@ syntax = "proto2";
package hw.trezor.messages.ethereum;
import "messages-common.proto";
+import "options.proto";
// Sugar for easier handling in Java
option java_outer_classname = "TrezorMessageEthereum";
@@ -100,10 +101,20 @@ message EthereumSignTxEIP1559 {
optional common.PaymentRequest payment_req = 14; // SLIP-24 payment request
optional bool supports_definition_request = 15; // whether the client supports EthereumDefinitionRequest
+ optional EthereumAuth7702 auth7702 = 16
+ [(experimental_field) = true]; // EIP-7702 delegate to authorize/revoke (only on Core)
+
message EthereumAccessList {
required string address = 1;
repeated bytes storage_keys = 2;
}
+
+ message EthereumAuth7702 {
+ option (experimental_message) = true;
+
+ required string delegate = 1; // address of the code that will be delegated to the EOA
+ // if all zeroes, delegation is revoked
+ }
}
/**
@@ -118,9 +129,18 @@ message EthereumTxRequest {
optional uint32 data_length = 1; // Number of bytes being requested (<= 1024)
// Done. Return signature.
- optional uint32 signature_v = 2; // Computed signature (recovery parameter, limited to 27 or 28)
- optional bytes signature_r = 3; // Computed signature R component (256 bit)
- optional bytes signature_s = 4; // Computed signature S component (256 bit)
+ optional uint32 signature_v = 2; // Computed signature (recovery parameter, limited to 27 or 28)
+ optional bytes signature_r = 3; // Computed signature R component (256 bit)
+ optional bytes signature_s = 4; // Computed signature S component (256 bit)
+ repeated EthereumAuth7702Tuple auth7702_list = 5
+ [(experimental_field) = true]; // EIP-7702 authorization list of tuples (if requested above).
+
+ message EthereumAuth7702Tuple {
+ option (experimental_message) = true;
+
+ repeated bytes items = 1; // EIP-7702 authorization tuple: [chain_id, delegate, nonce, y_parity, r, s]
+ // integers are encoded using minimal big-endian serialization
+ }
}
/**
### core/src/trezor/messages.py
@@ -4123,6 +4123,7 @@ class EthereumSignTxEIP1559(protobuf.MessageType):
chunkify: "bool | None"
payment_req: "PaymentRequest | None"
supports_definition_request: "bool | None"
+ auth7702: "EthereumAuth7702 | None"
def __init__(
self,
@@ -4142,6 +4143,7 @@ def __init__(
chunkify: "bool | None" = None,
payment_req: "PaymentRequest | None" = None,
supports_definition_request: "bool | None" = None,
+ auth7702: "EthereumAuth7702 | None" = None,
) -> None:
pass
@@ -4154,10 +4156,12 @@ class EthereumTxRequest(protobuf.MessageType):
signature_v: "int | None"
signature_r: "AnyBytes | None"
signature_s: "AnyBytes | None"
+ auth7702_list: "list[EthereumAuth7702Tuple]"
def __init__(
self,
*,
+ auth7702_list: "list[EthereumAuth7702Tuple] | None" = None,
data_length: "int | None" = None,
signature_v: "int | None" = None,
signature_r: "AnyBytes | None" = None,
@@ -4341,6 +4345,34 @@ def __init__(
def is_type_of(cls, msg: Any) -> TypeGuard["EthereumAccessList"]:
return isinstance(msg, cls)
+ class EthereumAuth7702(protobuf.MessageType):
+ delegate: "str"
+
+ def __init__(
+ self,
+ *,
+ delegate: "str",
+ ) -> None:
+ pass
+
+ @classmethod
+ def is_type_of(cls, msg: Any) -> TypeGuard["EthereumAuth7702"]:
+ return isinstance(msg, cls)
+
+ class EthereumAuth7702Tuple(protobuf.MessageType):
+ items: "list[AnyBytes]"
+
+ def __init__(
+ self,
+ *,
+ items: "list[AnyBytes] | None" = None,
+ ) -> None:
+ pass
+
+ @classmethod
+ def is_type_of(cls, msg: Any) -> TypeGuard["EthereumAuth7702Tuple"]:
+ return isinstance(msg, cls)
+
class EthereumSignTypedData(protobuf.MessageType):
address_n: "list[int]"
primary_type: "str"
### legacy/firmware/protob/messages-ethereum.options
@@ -17,12 +17,14 @@ EthereumSignTxEIP1559.value max_size:32
EthereumSignTxEIP1559.data_initial_chunk max_size:1024
EthereumSignTxEIP1559.access_list max_count:12
EthereumSignTxEIP1559.payment_req type:FT_IGNORE
+EthereumSignTxEIP1559.auth7702 type:FT_IGNORE
EthereumAccessList.address max_size:43
EthereumAccessList.storage_keys max_count:12 max_size:32
EthereumTxRequest.signature_r max_size:32
EthereumTxRequest.signature_s max_size:32
+EthereumTxRequest.auth7702_list type:FT_IGNORE
EthereumTxAck.data_chunk max_size:1024
### python/src/trezorlib/messages.py
@@ -5693,6 +5693,7 @@ class EthereumSignTxEIP1559(protobuf.MessageType):
13: protobuf.Field("chunkify", "bool", repeated=False, required=False, default=None),
14: protobuf.Field("payment_req", "PaymentRequest", repeated=False, required=False, default=None),
15: protobuf.Field("supports_definition_request", "bool", repeated=False, required=False, default=None),
+ 16: protobuf.Field("auth7702", "EthereumAuth7702", repeated=False, required=False, default=None),
}
def __init__(
@@ -5713,6 +5714,7 @@ def __init__(
chunkify: Optional["bool"] = None,
payment_req: Optional["PaymentRequest"] = None,
supports_definition_request: Optional["bool"] = None,
+ auth7702: Optional["EthereumAuth7702"] = None,
) -> None:
self.address_n: Sequence["int"] = address_n if address_n is not None else []
self.access_list: Sequence["EthereumAccessList"] = access_list if access_list is not None else []
@@ -5729,6 +5731,7 @@ def __init__(
self.chunkify = chunkify
self.payment_req = payment_req
self.supports_definition_request = supports_definition_request
+ self.auth7702 = auth7702
class EthereumTxRequest(protobuf.MessageType):
@@ -5738,16 +5741,19 @@ class EthereumTxRequest(protobuf.MessageType):
2: protobuf.Field("signature_v", "uint32", repeated=False, required=False, default=None),
3: protobuf.Field("signature_r", "bytes", repeated=False, required=False, default=None),
4: protobuf.Field("signature_s", "bytes", repeated=False, required=False, default=None),
+ 5: protobuf.Field("auth7702_list", "EthereumAuth7702Tuple", repeated=True, required=False, default=None),
}
def __init__(
self,
*,
+ auth7702_list: Optional[Sequence["EthereumAuth7702Tuple"]] = None,
data_length: Optional["int"] = None,
signature_v: Optional["int"] = None,
signature_r: Optional["bytes"] = None,
signature_s: Optional["bytes"] = None,
) -> None:
+ self.auth7702_list: Sequence["EthereumAuth7702Tuple"] = auth7702_list if auth7702_list is not None else []
self.data_length = data_length
self.signature_v = signature_v
self.signature_r = signature_r
@@ -5942,6 +5948,34 @@ def __init__(
self.address = address
+class EthereumAuth7702(protobuf.MessageType):
+ MESSAGE_WIRE_TYPE = None
+ FIELDS = {
+ 1: protobuf.Field("delegate", "string", repeated=False, required=True),
+ }
+
+ def __init__(
+ self,
+ *,
+ delegate: "str",
+ ) -> None:
+ self.delegate = delegate
+
+
+class EthereumAuth7702Tuple(protobuf.MessageType):
+ MESSAGE_WIRE_TYPE = None
+ FIELDS = {
+ 1: protobuf.Field("items", "bytes", repeated=True, required=False, default=None),
+ }
+
+ def __init__(
+ self,
+ *,
+ items: Optional[Sequence["bytes"]] = None,
+ ) -> None:
+ self.items: Sequence["bytes"] = items if items is not None else []
+
+
class EthereumSignTypedData(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 464
FIELDS = {
### rust/trezor-client/src/protos/generated/messages_ethereum.rs
@@ -1618,6 +1618,8 @@ pub struct EthereumSignTxEIP1559 {
pub payment_req: ::protobuf::MessageField<super::messages_common::PaymentRequest>,
// @@protoc_insertion_point(field:hw.trezor.messages.ethereum.EthereumSignTxEIP1559.supports_definition_request)
pub supports_definition_request: ::std::option::Option<bool>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.ethereum.EthereumSignTxEIP1559.auth7702)
+ pub auth7702: ::protobuf::MessageField<ethereum_sign_tx_eip1559::EthereumAuth7702>,
// special fields
// @@protoc_insertion_point(special_field:hw.trezor.messages.ethereum.EthereumSignTxEIP1559.special_fields)
pub special_fields: ::protobuf::SpecialFields,
@@ -1963,7 +1965,7 @@ impl EthereumSignTxEIP1559 {
}
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
- let mut fields = ::std::vec::Vec::with_capacity(15);
+ let mut fields = ::std::vec::Vec::with_capacity(16);
let mut oneofs = ::std::vec::Vec::with_capacity(0);
fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
"address_n",
@@ -2040,6 +2042,11 @@ impl EthereumSignTxEIP1559 {
|m: &EthereumSignTxEIP1559| { &m.supports_definition_request },
|m: &mut EthereumSignTxEIP1559| { &mut m.supports_definition_request },
));
+ fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, ethereum_sign_tx_eip1559::EthereumAuth7702>(
+ "auth7702",
+ |m: &EthereumSignTxEIP1559| { &m.auth7702 },
+ |m: &mut EthereumSignTxEIP1559| { &mut m.auth7702 },
+ ));
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<EthereumSignTxEIP1559>(
"EthereumSignTxEIP1559",
fields,
@@ -2088,6 +2095,11 @@ impl ::protobuf::Message for EthereumSignTxEIP1559 {
return false;
}
};
+ for v in &self.auth7702 {
+ if !v.is_initialized() {
+ return false;
+ }
+ };
true
}
@@ -2142,6 +2154,9 @@ impl ::protobuf::Message for EthereumSignTxEIP1559 {
120 => {
self.supports_definition_request = ::std::option::Option::Some(is.read_bool()?);
},
+ 130 => {
+ ::protobuf::rt::read_singular_message_into_field(is, &mut self.auth7702)?;
+ },
tag => {
::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
},
@@ -2202,6 +2217,10 @@ impl ::protobuf::Message for EthereumSignTxEIP1559 {
if let Some(v) = self.supports_definition_request {
my_size += 1 + 1;
}
+ if let Some(v) = self.auth7702.as_ref() {
+ let len = v.compute_size();
+ my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
+ }
my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
self.special_fields.cached_size().set(my_size as u32);
my_size
@@ -2253,6 +2272,9 @@ impl ::protobuf::Message for EthereumSignTxEIP1559 {
if let Some(v) = self.supports_definition_request {
os.write_bool(15, v)?;
}
+ if let Some(v) = self.auth7702.as_ref() {
+ ::protobuf::rt::write_message_field_with_cached_size(16, v, os)?;
+ }
os.write_unknown_fields(self.special_fields.unknown_fields())?;
::std::result::Result::Ok(())
}
@@ -2285,6 +2307,7 @@ impl ::protobuf::Message for EthereumSignTxEIP1559 {
self.chunkify = ::std::option::Option::None;
self.payment_req.clear();
self.supports_definition_request = ::std::option::Option::None;
+ self.auth7702.clear();
self.special_fields.clear();
}
@@ -2305,6 +2328,7 @@ impl ::protobuf::Message for EthereumSignTxEIP1559 {
chunkify: ::std::option::Option::None,
payment_req: ::protobuf::MessageField::none(),
supports_definition_request: ::std::option::Option::None,
+ auth7702: ::protobuf::MessageField::none(),
special_fields: ::protobuf::SpecialFields::new(),
};
&instance
@@ -2508,6 +2532,167 @@ pub mod ethereum_sign_tx_eip1559 {
impl ::protobuf::reflect::ProtobufValue for EthereumAccessList {
type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}
+
+ // @@protoc_insertion_point(message:hw.trezor.messages.ethereum.EthereumSignTxEIP1559.EthereumAuth7702)
+ #[derive(PartialEq,Clone,Default,Debug)]
+ pub struct EthereumAuth7702 {
+ // message fields
+ // @@protoc_insertion_point(field:hw.trezor.messages.ethereum.EthereumSignTxEIP1559.EthereumAuth7702.delegate)
+ pub delegate: ::std::option::Option<::std::string::String>,
+ // special fields
+ // @@protoc_insertion_point(special_field:hw.trezor.messages.ethereum.EthereumSignTxEIP1559.EthereumAuth7702.special_fields)
+ pub special_fields: ::protobuf::SpecialFields,
+ }
+
+ impl<'a> ::std::default::Default for &'a EthereumAuth7702 {
+ fn default() -> &'a EthereumAuth7702 {
+ <EthereumAuth7702 as ::protobuf::Message>::default_instance()
+ }
+ }
+
+ impl EthereumAuth7702 {
+ pub fn new() -> EthereumAuth7702 {
+ ::std::default::Default::default()
+ }
+
+ // required string delegate = 1;
+
+ pub fn delegate(&self) -> &str {
+ match self.delegate.as_ref() {
+ Some(v) => v,
+ None => "",
+ }
+ }
+
+ pub fn clear_delegate(&mut self) {
+ self.delegate = ::std::option::Option::None;
+ }
+
+ pub fn has_delegate(&self) -> bool {
+ self.delegate.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_delegate(&mut self, v: ::std::string::String) {
+ self.delegate = ::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_delegate(&mut self) -> &mut ::std::string::String {
+ if self.delegate.is_none() {
+ self.delegate = ::std::option::Option::Some(::std::string::String::new());
+ }
+ self.delegate.as_mut().unwrap()
+ }
+
+ // Take field
+ pub fn take_delegate(&mut self) -> ::std::string::String {
+ self.delegate.take().unwrap_or_else(|| ::std::string::String::new())
+ }
+
+ pub(in super) fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
+ let mut fields = ::std::vec::Vec::with_capacity(1);
+ let mut oneofs = ::std::vec::Vec::with_capacity(0);
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "delegate",
+ |m: &EthereumAuth7702| { &m.delegate },
+ |m: &mut EthereumAuth7702| { &mut m.delegate },
+ ));
+ ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<EthereumAuth7702>(
+ "EthereumSignTxEIP1559.EthereumAuth7702",
+ fields,
+ oneofs,
+ )
+ }
+ }
+
+ impl ::protobuf::Message for EthereumAuth7702 {
+ const NAME: &'static str = "EthereumAuth7702";
+
+ fn is_initialized(&self) -> bool {
+ if self.delegate.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.delegate = ::std::option::Option::Some(is.read_string()?);
+ },
+ tag => {
+ ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
+ },
+ };
+ }
+ ::std::result::Result::Ok(())
+ }
+
+ // Compute sizes of nested messages
+ #[allow(unused_variables)]
+ fn compute_size(&self) -> u64 {
+ let mut my_size = 0;
+ if let Some(v) = self.delegate.as_ref() {
+ my_size += ::protobuf::rt::string_size(1, &v);
+ }
+ my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
+ self.special_fields.cached_size().set(my_size as u32);
+ my_size
+ }
+
+ fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
+ if let Some(v) = self.delegate.as_ref() {
+ os.write_string(1, v)?;
+ }
+ os.write_unknown_fields(self.special_fields.unknown_fields())?;
+ ::std::result::Result::Ok(())
+ }
+
+ fn special_fields(&self) -> &::protobuf::SpecialFields {
+ &self.special_fields
+ }
+
+ fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
+ &mut self.special_fields
+ }
+
+ fn new() -> EthereumAuth7702 {
+ EthereumAuth7702::new()
+ }
+
+ fn clear(&mut self) {
+ self.delegate = ::std::option::Option::None;
+ self.special_fields.clear();
+ }
+
+ fn default_instance() -> &'static EthereumAuth7702 {
+ static instance: EthereumAuth7702 = EthereumAuth7702 {
+ delegate: ::std::option::Option::None,
+ special_fields: ::protobuf::SpecialFields::new(),
+ };
+ &instance
+ }
+ }
+
+ impl ::protobuf::MessageFull for EthereumAuth7702 {
+ fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
+ static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
+ descriptor.get(|| super::file_descriptor().message_by_package_relative_name("EthereumSignTxEIP1559.EthereumAuth7702").unwrap()).clone()
+ }
+ }
+
+ impl ::std::fmt::Display for EthereumAuth7702 {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ ::protobuf::text_format::fmt(self, f)
+ }
+ }
+
+ impl ::protobuf::reflect::ProtobufValue for EthereumAuth7702 {
+ type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
+ }
}
// @@protoc_insertion_point(message:hw.trezor.messages.ethereum.EthereumTxRequest)
@@ -2522,6 +2707,8 @@ pub struct EthereumTxRequest {
pub signature_r: ::std::option::Option<::std::vec::Vec<u8>>,
// @@protoc_insertion_point(field:hw.trezor.messages.ethereum.EthereumTxRequest.signature_s)
pub signature_s: ::std::option::Option<::std::vec::Vec<u8>>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.ethereum.EthereumTxRequest.auth7702_list)
+ pub auth7702_list: ::std::vec::Vec<ethereum_tx_request::EthereumAuth7702Tuple>,
// special fields
// @@protoc_insertion_point(special_field:hw.trezor.messages.ethereum.EthereumTxRequest.special_fields)
pub special_fields: ::protobuf::SpecialFields,
@@ -2649,7 +2836,7 @@ impl EthereumTxRequest {
}
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
- let mut fields = ::std::vec::Vec::with_capacity(4);
+ let mut fields = ::std::vec::Vec::with_capacity(5);
let mut oneofs = ::std::vec::Vec::with_capacity(0);
fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
"data_length",
@@ -2671,6 +2858,11 @@ impl EthereumTxRequest {
|m: &EthereumTxRequest| { &m.signature_s },
|m: &mut EthereumTxRequest| { &mut m.signature_s },
));
+ fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
+ "auth7702_list",
+ |m: &EthereumTxRequest| { &m.auth7702_list },
+ |m: &mut EthereumTxRequest| { &mut m.auth7702_list },
+ ));
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<EthereumTxRequest>(
"EthereumTxRequest",
fields,
@@ -2701,6 +2893,9 @@ impl ::protobuf::Message for EthereumTxRequest {
34 => {
self.signature_s = ::std::option::Option::Some(is.read_bytes()?);
},
+ 42 => {
+ self.auth7702_list.push(is.read_message()?);
+ },
tag => {
::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
},
@@ -2725,6 +2920,10 @@ impl ::protobuf::Message for EthereumTxRequest {
if let Some(v) = self.signature_s.as_ref() {
my_size += ::protobuf::rt::bytes_size(4, &v);
}
+ for value in &self.auth7702_list {
+ let len = value.compute_size();
+ my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
+ };
my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
self.special_fields.cached_size().set(my_size as u32);
my_size
@@ -2743,6 +2942,9 @@ impl ::protobuf::Message for EthereumTxRequest {
if let Some(v) = self.signature_s.as_ref() {
os.write_bytes(4, v)?;
}
+ for v in &self.auth7702_list {
+ ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
+ };
os.write_unknown_fields(self.special_fields.unknown_fields())?;
::std::result::Result::Ok(())
}
@@ -2764,6 +2966,7 @@ impl ::protobuf::Message for EthereumTxRequest {
self.signature_v = ::std::option::Option::None;
self.signature_r = ::std::option::Option::None;
self.signature_s = ::std::option::Option::None;
+ self.auth7702_list.clear();
self.special_fields.clear();
}
@@ -2773,6 +2976,7 @@ impl ::protobuf::Message for EthereumTxRequest {
signature_v: ::std::option::Option::None,
signature_r: ::std::option::Option::None,
signature_s: ::std::option::Option::None,
+ auth7702_list: ::std::vec::Vec::new(),
special_fields: ::protobuf::SpecialFields::new(),
};
&instance
@@ -2796,6 +3000,131 @@ impl ::protobuf::reflect::ProtobufValue for EthereumTxRequest {
type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}
+/// Nested message and enums of message `EthereumTxRequest`
+pub mod ethereum_tx_request {
+ // @@protoc_insertion_point(message:hw.trezor.messages.ethereum.EthereumTxRequest.EthereumAuth7702Tuple)
+ #[derive(PartialEq,Clone,Default,Debug)]
+ pub struct EthereumAuth7702Tuple {
+ // message fields
+ // @@protoc_insertion_point(field:hw.trezor.messages.ethereum.EthereumTxRequest.EthereumAuth7702Tuple.items)
+ pub items: ::std::vec::Vec<::std::vec::Vec<u8>>,
+ // special fields
+ // @@protoc_insertion_point(special_field:hw.trezor.messages.ethereum.EthereumTxRequest.EthereumAuth7702Tuple.special_fields)
+ pub special_fields: ::protobuf::SpecialFields,
+ }
+
+ impl<'a> ::std::default::Default for &'a EthereumAuth7702Tuple {
+ fn default() -> &'a EthereumAuth7702Tuple {
+ <EthereumAuth7702Tuple as ::protobuf::Message>::default_instance()
+ }
+ }
+
+ impl EthereumAuth7702Tuple {
+ pub fn new() -> EthereumAuth7702Tuple {
+ ::std::default::Default::default()
+ }
+
+ pub(in super) fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
+ let mut fields = ::std::vec::Vec::with_capacity(1);
+ let mut oneofs = ::std::vec::Vec::with_capacity(0);
+ fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
+ "items",
+ |m: &EthereumAuth7702Tuple| { &m.items },
+ |m: &mut EthereumAuth7702Tuple| { &mut m.items },
+ ));
+ ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<EthereumAuth7702Tuple>(
+ "EthereumTxRequest.EthereumAuth7702Tuple",
+ fields,
+ oneofs,
+ )
+ }
+ }
+
+ impl ::protobuf::Message for EthereumAuth7702Tuple {
+ const NAME: &'static str = "EthereumAuth7702Tuple";
+
+ 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 => {
+ self.items.push(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.items {
+ my_size += ::protobuf::rt::bytes_size(1, &value);
+ };
+ 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.items {
+ 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() -> EthereumAuth7702Tuple {
+ EthereumAuth7702Tuple::new()
+ }
+
+ fn clear(&mut self) {
+ self.items.clear();
+ self.special_fields.clear();
+ }
+
+ fn default_instance() -> &'static EthereumAuth7702Tuple {
+ static instance: EthereumAuth7702Tuple = EthereumAuth7702Tuple {
+ items: ::std::vec::Vec::new(),
+ special_fields: ::protobuf::SpecialFields::new(),
+ };
+ &instance
+ }
+ }
+
+ impl ::protobuf::MessageFull for EthereumAuth7702Tuple {
+ fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
+ static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
+ descriptor.get(|| super::file_descriptor().message_by_package_relative_name("EthereumTxRequest.EthereumAuth7702Tuple").unwrap()).clone()
+ }
+ }
+
+ impl ::std::fmt::Display for EthereumAuth7702Tuple {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ ::protobuf::text_format::fmt(self, f)
+ }
+ }
+
+ impl ::protobuf::reflect::ProtobufValue for EthereumAuth7702Tuple {
+ type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
+ }
+}
+
// @@protoc_insertion_point(message:hw.trezor.messages.ethereum.EthereumTxAck)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct EthereumTxAck {
@@ -4914,77 +5243,84 @@ impl ::protobuf::reflect::ProtobufValue for EthereumDefinitions {
static file_descriptor_proto_data: &'static [u8] = b"\
\n\x17messages-ethereum.proto\x12\x1bhw.trezor.messages.ethereum\x1a\x15\
- messages-common.proto\"V\n\x14EthereumGetPublicKey\x12\x1b\n\taddress_n\
- \x18\x01\x20\x03(\rR\x08addressN\x12!\n\x0cshow_display\x18\x02\x20\x01(\
- \x08R\x0bshowDisplay\"b\n\x11EthereumPublicKey\x129\n\x04node\x18\x01\
- \x20\x02(\x0b2%.hw.trezor.messages.common.HDNodeTypeR\x04node\x12\x12\n\
- \x04xpub\x18\x02\x20\x02(\tR\x04xpub\"\x99\x01\n\x12EthereumGetAddress\
+ messages-common.proto\x1a\roptions.proto\"V\n\x14EthereumGetPublicKey\
\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12!\n\x0cshow_dis\
- play\x18\x02\x20\x01(\x08R\x0bshowDisplay\x12'\n\x0fencoded_network\x18\
- \x03\x20\x01(\x0cR\x0eencodedNetwork\x12\x1a\n\x08chunkify\x18\x04\x20\
- \x01(\x08R\x08chunkify\"c\n\x0fEthereumAddress\x12$\n\x0c_old_address\
- \x18\x01\x20\x01(\x0cR\nOldAddressB\x02\x18\x01\x12\x18\n\x07address\x18\
- \x02\x20\x01(\tR\x07address\x12\x10\n\x03mac\x18\x03\x20\x01(\x0cR\x03ma\
- c\"\xad\x04\n\x0eEthereumSignTx\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\
- \x08addressN\x12\x16\n\x05nonce\x18\x02\x20\x01(\x0c:\0R\x05nonce\x12\
- \x1b\n\tgas_price\x18\x03\x20\x02(\x0cR\x08gasPrice\x12\x1b\n\tgas_limit\
- \x18\x04\x20\x02(\x0cR\x08gasLimit\x12\x10\n\x02to\x18\x0b\x20\x01(\t:\0\
- R\x02to\x12\x16\n\x05value\x18\x06\x20\x01(\x0c:\0R\x05value\x12.\n\x12d\
- ata_initial_chunk\x18\x07\x20\x01(\x0c:\0R\x10dataInitialChunk\x12\"\n\
- \x0bdata_length\x18\x08\x20\x01(\r:\x010R\ndataLength\x12\x19\n\x08chain\
- _id\x18\t\x20\x02(\x04R\x07chainId\x12\x17\n\x07tx_type\x18\n\x20\x01(\r\
- R\x06txType\x12R\n\x0bdefinitions\x18\x0c\x20\x01(\x0b20.hw.trezor.messa\
- ges.ethereum.EthereumDefinitionsR\x0bdefinitions\x12\x1a\n\x08chunkify\
- \x18\r\x20\x01(\x08R\x08chunkify\x12J\n\x0bpayment_req\x18\x0e\x20\x01(\
- \x0b2).hw.trezor.messages.common.PaymentRequestR\npaymentReq\x12>\n\x1bs\
- upports_definition_request\x18\x0f\x20\x01(\x08R\x19supportsDefinitionRe\
- quest\"\xfc\x05\n\x15EthereumSignTxEIP1559\x12\x1b\n\taddress_n\x18\x01\
- \x20\x03(\rR\x08addressN\x12\x14\n\x05nonce\x18\x02\x20\x02(\x0cR\x05non\
- ce\x12\x1e\n\x0bmax_gas_fee\x18\x03\x20\x02(\x0cR\tmaxGasFee\x12(\n\x10m\
- ax_priority_fee\x18\x04\x20\x02(\x0cR\x0emaxPriorityFee\x12\x1b\n\tgas_l\
- imit\x18\x05\x20\x02(\x0cR\x08gasLimit\x12\x10\n\x02to\x18\x06\x20\x01(\
- \t:\0R\x02to\x12\x14\n\x05value\x18\x07\x20\x02(\x0cR\x05value\x12.\n\
- \x12data_initial_chunk\x18\x08\x20\x01(\x0c:\0R\x10dataInitialChunk\x12\
- \x1f\n\x0bdata_length\x18\t\x20\x02(\rR\ndataLength\x12\x19\n\x08chain_i\
- d\x18\n\x20\x02(\x04R\x07chainId\x12f\n\x0baccess_list\x18\x0b\x20\x03(\
- \x0b2E.hw.trezor.messages.ethereum.EthereumSignTxEIP1559.EthereumAccessL\
- istR\naccessList\x12R\n\x0bdefinitions\x18\x0c\x20\x01(\x0b20.hw.trezor.\
- messages.ethereum.EthereumDefinitionsR\x0bdefinitions\x12\x1a\n\x08chunk\
- ify\x18\r\x20\x01(\x08R\x08chunkify\x12J\n\x0bpayment_req\x18\x0e\x20\
- \x01(\x0b2).hw.trezor.messages.common.PaymentRequestR\npaymentReq\x12>\n\
- \x1bsupports_definition_request\x18\x0f\x20\x01(\x08R\x19supportsDefinit\
- ionRequest\x1aQ\n\x12EthereumAccessList\x12\x18\n\x07address\x18\x01\x20\
- \x02(\tR\x07address\x12!\n\x0cstorage_keys\x18\x02\x20\x03(\x0cR\x0bstor\
- ageKeys\"\x97\x01\n\x11EthereumTxRequest\x12\x1f\n\x0bdata_length\x18\
- \x01\x20\x01(\rR\ndataLength\x12\x1f\n\x0bsignature_v\x18\x02\x20\x01(\r\
- R\nsignatureV\x12\x1f\n\x0bsignature_r\x18\x03\x20\x01(\x0cR\nsignatureR\
- \x12\x1f\n\x0bsignature_s\x18\x04\x20\x01(\x0cR\nsignatureS\".\n\rEthere\
- umTxAck\x12\x1d\n\ndata_chunk\x18\x01\x20\x02(\x0cR\tdataChunk\"v\n\x19E\
- thereumDefinitionRequest\x12\x19\n\x08chain_id\x18\x01\x20\x02(\x04R\x07\
- chainId\x12#\n\rtoken_address\x18\x02\x20\x02(\x0cR\x0ctokenAddress\x12\
- \x19\n\x08func_sig\x18\x03\x20\x01(\x0cR\x07funcSig\"k\n\x15EthereumDefi\
- nitionAck\x12R\n\x0bdefinitions\x18\x01\x20\x01(\x0b20.hw.trezor.message\
- s.ethereum.EthereumDefinitionsR\x0bdefinitions\"\x91\x01\n\x13EthereumSi\
- gnMessage\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x18\n\
- \x07message\x18\x02\x20\x02(\x0cR\x07message\x12'\n\x0fencoded_network\
- \x18\x03\x20\x01(\x0cR\x0eencodedNetwork\x12\x1a\n\x08chunkify\x18\x04\
- \x20\x01(\x08R\x08chunkify\"R\n\x18EthereumMessageSignature\x12\x1c\n\ts\
- ignature\x18\x02\x20\x02(\x0cR\tsignature\x12\x18\n\x07address\x18\x03\
- \x20\x02(\tR\x07address\"\x85\x01\n\x15EthereumVerifyMessage\x12\x1c\n\t\
- signature\x18\x02\x20\x02(\x0cR\tsignature\x12\x18\n\x07message\x18\x03\
- \x20\x02(\x0cR\x07message\x12\x18\n\x07address\x18\x04\x20\x02(\tR\x07ad\
- dress\x12\x1a\n\x08chunkify\x18\x05\x20\x01(\x08R\x08chunkify\"\xb4\x01\
- \n\x15EthereumSignTypedHash\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08\
- addressN\x122\n\x15domain_separator_hash\x18\x02\x20\x02(\x0cR\x13domain\
- SeparatorHash\x12!\n\x0cmessage_hash\x18\x03\x20\x01(\x0cR\x0bmessageHas\
- h\x12'\n\x0fencoded_network\x18\x04\x20\x01(\x0cR\x0eencodedNetwork\"T\n\
- \x1aEthereumTypedDataSignature\x12\x1c\n\tsignature\x18\x01\x20\x02(\x0c\
- R\tsignature\x12\x18\n\x07address\x18\x02\x20\x02(\tR\x07address\"\x99\
- \x01\n\x13EthereumDefinitions\x12'\n\x0fencoded_network\x18\x01\x20\x01(\
- \x0cR\x0eencodedNetwork\x12#\n\rencoded_token\x18\x02\x20\x01(\x0cR\x0ce\
- ncodedToken\x124\n\x16encoded_display_format\x18\x03\x20\x01(\x0cR\x14en\
- codedDisplayFormatB<\n#com.satoshilabs.trezor.lib.protobufB\x15TrezorMes\
- sageEthereum\
+ play\x18\x02\x20\x01(\x08R\x0bshowDisplay\"b\n\x11EthereumPublicKey\x129\
+ \n\x04node\x18\x01\x20\x02(\x0b2%.hw.trezor.messages.common.HDNodeTypeR\
+ \x04node\x12\x12\n\x04xpub\x18\x02\x20\x02(\tR\x04xpub\"\x99\x01\n\x12Et\
+ hereumGetAddress\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\
+ \x12!\n\x0cshow_display\x18\x02\x20\x01(\x08R\x0bshowDisplay\x12'\n\x0fe\
+ ncoded_network\x18\x03\x20\x01(\x0cR\x0eencodedNetwork\x12\x1a\n\x08chun\
+ kify\x18\x04\x20\x01(\x08R\x08chunkify\"c\n\x0fEthereumAddress\x12$\n\
+ \x0c_old_address\x18\x01\x20\x01(\x0cR\nOldAddressB\x02\x18\x01\x12\x18\
+ \n\x07address\x18\x02\x20\x01(\tR\x07address\x12\x10\n\x03mac\x18\x03\
+ \x20\x01(\x0cR\x03mac\"\xad\x04\n\x0eEthereumSignTx\x12\x1b\n\taddress_n\
+ \x18\x01\x20\x03(\rR\x08addressN\x12\x16\n\x05nonce\x18\x02\x20\x01(\x0c\
+ :\0R\x05nonce\x12\x1b\n\tgas_price\x18\x03\x20\x02(\x0cR\x08gasPrice\x12\
+ \x1b\n\tgas_limit\x18\x04\x20\x02(\x0cR\x08gasLimit\x12\x10\n\x02to\x18\
+ \x0b\x20\x01(\t:\0R\x02to\x12\x16\n\x05value\x18\x06\x20\x01(\x0c:\0R\
+ \x05value\x12.\n\x12data_initial_chunk\x18\x07\x20\x01(\x0c:\0R\x10dataI\
+ nitialChunk\x12\"\n\x0bdata_length\x18\x08\x20\x01(\r:\x010R\ndataLength\
+ \x12\x19\n\x08chain_id\x18\t\x20\x02(\x04R\x07chainId\x12\x17\n\x07tx_ty\
+ pe\x18\n\x20\x01(\rR\x06txType\x12R\n\x0bdefinitions\x18\x0c\x20\x01(\
+ \x0b20.hw.trezor.messages.ethereum.EthereumDefinitionsR\x0bdefinitions\
+ \x12\x1a\n\x08chunkify\x18\r\x20\x01(\x08R\x08chunkify\x12J\n\x0bpayment\
+ _req\x18\x0e\x20\x01(\x0b2).hw.trezor.messages.common.PaymentRequestR\np\
+ aymentReq\x12>\n\x1bsupports_definition_request\x18\x0f\x20\x01(\x08R\
+ \x19supportsDefinitionRequest\"\x99\x07\n\x15EthereumSignTxEIP1559\x12\
+ \x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x14\n\x05nonce\x18\
+ \x02\x20\x02(\x0cR\x05nonce\x12\x1e\n\x0bmax_gas_fee\x18\x03\x20\x02(\
+ \x0cR\tmaxGasFee\x12(\n\x10max_priority_fee\x18\x04\x20\x02(\x0cR\x0emax\
+ PriorityFee\x12\x1b\n\tgas_limit\x18\x05\x20\x02(\x0cR\x08gasLimit\x12\
+ \x10\n\x02to\x18\x06\x20\x01(\t:\0R\x02to\x12\x14\n\x05value\x18\x07\x20\
+ \x02(\x0cR\x05value\x12.\n\x12data_initial_chunk\x18\x08\x20\x01(\x0c:\0\
+ R\x10dataInitialChunk\x12\x1f\n\x0bdata_length\x18\t\x20\x02(\rR\ndataLe\
+ ngth\x12\x19\n\x08chain_id\x18\n\x20\x02(\x04R\x07chainId\x12f\n\x0bacce\
+ ss_list\x18\x0b\x20\x03(\x0b2E.hw.trezor.messages.ethereum.EthereumSignT\
+ xEIP1559.EthereumAccessListR\naccessList\x12R\n\x0bdefinitions\x18\x0c\
+ \x20\x01(\x0b20.hw.trezor.messages.ethereum.EthereumDefinitionsR\x0bdefi\
+ nitions\x12\x1a\n\x08chunkify\x18\r\x20\x01(\x08R\x08chunkify\x12J\n\x0b\
+ payment_req\x18\x0e\x20\x01(\x0b2).hw.trezor.messages.common.PaymentRequ\
+ estR\npaymentReq\x12>\n\x1bsupports_definition_request\x18\x0f\x20\x01(\
+ \x08R\x19supportsDefinitionRequest\x12e\n\x08auth7702\x18\x10\x20\x01(\
+ \x0b2C.hw.trezor.messages.ethereum.EthereumSignTxEIP1559.EthereumAuth770\
+ 2R\x08auth7702B\x04\xc8\xf0\x19\x01\x1aQ\n\x12EthereumAccessList\x12\x18\
+ \n\x07address\x18\x01\x20\x02(\tR\x07address\x12!\n\x0cstorage_keys\x18\
+ \x02\x20\x03(\x0cR\x0bstorageKeys\x1a4\n\x10EthereumAuth7702\x12\x1a\n\
+ \x08delegate\x18\x01\x20\x02(\tR\x08delegate:\x04\x88\xb2\x19\x01\"\xbd\
+ \x02\n\x11EthereumTxRequest\x12\x1f\n\x0bdata_length\x18\x01\x20\x01(\rR\
+ \ndataLength\x12\x1f\n\x0bsignature_v\x18\x02\x20\x01(\rR\nsignatureV\
+ \x12\x1f\n\x0bsignature_r\x18\x03\x20\x01(\x0cR\nsignatureR\x12\x1f\n\
+ \x0bsignature_s\x18\x04\x20\x01(\x0cR\nsignatureS\x12o\n\rauth7702_list\
+ \x18\x05\x20\x03(\x0b2D.hw.trezor.messages.ethereum.EthereumTxRequest.Et\
+ hereumAuth7702TupleR\x0cauth7702ListB\x04\xc8\xf0\x19\x01\x1a3\n\x15Ethe\
+ reumAuth7702Tuple\x12\x14\n\x05items\x18\x01\x20\x03(\x0cR\x05items:\x04\
+ \x88\xb2\x19\x01\".\n\rEthereumTxAck\x12\x1d\n\ndata_chunk\x18\x01\x20\
+ \x02(\x0cR\tdataChunk\"v\n\x19EthereumDefinitionRequest\x12\x19\n\x08cha\
+ in_id\x18\x01\x20\x02(\x04R\x07chainId\x12#\n\rtoken_address\x18\x02\x20\
+ \x02(\x0cR\x0ctokenAddress\x12\x19\n\x08func_sig\x18\x03\x20\x01(\x0cR\
+ \x07funcSig\"k\n\x15EthereumDefinitionAck\x12R\n\x0bdefinitions\x18\x01\
+ \x20\x01(\x0b20.hw.trezor.messages.ethereum.EthereumDefinitionsR\x0bdefi\
+ nitions\"\x91\x01\n\x13EthereumSignMessage\x12\x1b\n\taddress_n\x18\x01\
+ \x20\x03(\rR\x08addressN\x12\x18\n\x07message\x18\x02\x20\x02(\x0cR\x07m\
+ essage\x12'\n\x0fencoded_network\x18\x03\x20\x01(\x0cR\x0eencodedNetwork\
+ \x12\x1a\n\x08chunkify\x18\x04\x20\x01(\x08R\x08chunkify\"R\n\x18Ethereu\
+ mMessageSignature\x12\x1c\n\tsignature\x18\x02\x20\x02(\x0cR\tsignature\
+ \x12\x18\n\x07address\x18\x03\x20\x02(\tR\x07address\"\x85\x01\n\x15Ethe\
+ reumVerifyMessage\x12\x1c\n\tsignature\x18\x02\x20\x02(\x0cR\tsignature\
+ \x12\x18\n\x07message\x18\x03\x20\x02(\x0cR\x07message\x12\x18\n\x07addr\
+ ess\x18\x04\x20\x02(\tR\x07address\x12\x1a\n\x08chunkify\x18\x05\x20\x01\
+ (\x08R\x08chunkify\"\xb4\x01\n\x15EthereumSignTypedHash\x12\x1b\n\taddre\
+ ss_n\x18\x01\x20\x03(\rR\x08addressN\x122\n\x15domain_separator_hash\x18\
+ \x02\x20\x02(\x0cR\x13domainSeparatorHash\x12!\n\x0cmessage_hash\x18\x03\
+ \x20\x01(\x0cR\x0bmessageHash\x12'\n\x0fencoded_network\x18\x04\x20\x01(\
+ \x0cR\x0eencodedNetwork\"T\n\x1aEthereumTypedDataSignature\x12\x1c\n\tsi\
+ gnature\x18\x01\x20\x02(\x0cR\tsignature\x12\x18\n\x07address\x18\x02\
+ \x20\x02(\tR\x07address\"\x99\x01\n\x13EthereumDefinitions\x12'\n\x0fenc\
+ oded_network\x18\x01\x20\x01(\x0cR\x0eencodedNetwork\x12#\n\rencoded_tok\
+ en\x18\x02\x20\x01(\x0cR\x0cencodedToken\x124\n\x16encoded_display_forma\
+ t\x18\x03\x20\x01(\x0cR\x14encodedDisplayFormatB<\n#com.satoshilabs.trez\
+ or.lib.protobufB\x15TrezorMessageEthereum\
";
/// `FileDescriptorProto` object which was a source for this generated file
@@ -5001,9 +5337,10 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
file_descriptor.get(|| {
let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
- let mut deps = ::std::vec::Vec::with_capacity(1);
+ let mut deps = ::std::vec::Vec::with_capacity(2);
deps.push(super::messages_common::file_descriptor().clone());
- let mut messages = ::std::vec::Vec::with_capacity(17);
+ deps.push(super::options::file_descriptor().clone());
+ let mut messages = ::std::vec::Vec::with_capacity(19);
messages.push(EthereumGetPublicKey::generated_message_descriptor_data());
messages.push(EthereumPublicKey::generated_message_descriptor_data());
messages.push(EthereumGetAddress::generated_message_descriptor_data());
@@ -5021,6 +5358,8 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
messages.push(EthereumTypedDataSignature::generated_message_descriptor_data());
messages.push(EthereumDefinitions::generated_message_descriptor_data());
messages.push(ethereum_sign_tx_eip1559::EthereumAccessList::generated_message_descriptor_data());
+ messages.push(ethereum_sign_tx_eip1559::EthereumAuth7702::generated_message_descriptor_data());
+ messages.push(ethereum_tx_request::EthereumAuth7702Tuple::generated_message_descriptor_data());
let mut enums = ::std::vec::Vec::with_capacity(0);
::protobuf::reflect::GeneratedFileDescriptor::new_generated(
file_descriptor_proto(),Why this scored 14/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.