test(core/ethereum): check invalid calldata responses
What changed, and why it matters
This commit only adds new automated tests for the Trezor hardware wallet's Ethereum transaction signing. It checks that the device correctly rejects malformed transaction data sent during signing. There are no changes to the actual firmware code that users run, so this commit does not fix or introduce a security issue by itself.
No action required. This is a test-only commit. If reviewing a related security fix, examine the separate firmware commit that introduced the validation being tested.
Security signals we found
New negative tests for malformed Ethereum transaction calldata handling
Device is expected to reject oversized initial data chunk and oversized follow-up chunk
No firmware code changes; tests only
Evidence from the diff
The diff adds two test cases in tests/device_tests/ethereum/test_signtx.py: test_signtx_data_bad_init and test_signtx_data_bad_ack. They use the trezorlib debuglink message filter to tamper with EthereumSignTx.data_initial_chunk and EthereumTxAck.data_chunk, respectively, and assert the device returns TrezorFailure with specific messages (‘Invalid size of initial chunk’ and ‘Too much data’). The fixtures.json file is updated with expected UI hashes for these tests across device models and languages. No firmware source code is modified.
Changed components
tests/device_tests/ethereum/test_signtx.pytests/ui_tests/fixtures.jsonInspect captured patch +105 / −0
diff --git a/tests/device_tests/ethereum/test_signtx.py b/tests/device_tests/ethereum/test_signtx.py
index 96498621..b4cf9f86 100644
--- a/tests/device_tests/ethereum/test_signtx.py
+++ b/tests/device_tests/ethereum/test_signtx.py
@@ -25,6 +25,7 @@ from trezorlib import ethereum, exceptions, messages, models
from trezorlib.debuglink import DebugSession as Session
from trezorlib.debuglink import message_filters
from trezorlib.exceptions import TrezorFailure
+from trezorlib.protobuf import MessageType
from trezorlib.tools import parse_path, unharden
from ...common import parametrize_using_common_fixtures
@@ -535,6 +536,60 @@ def test_signtx_data_pagination(session: Session, scroll: bool, size: int):
_sign_tx_call()
+def test_signtx_data_bad_init(session: Session):
+ DATA = b"A" * 256
+
+ with session.test_ctx as client:
+
+ def _filter(msg: MessageType) -> MessageType:
+ req = messages.EthereumSignTx.ensure_isinstance(msg)
+ assert req.data_initial_chunk is not None
+ req.data_initial_chunk += b"EXTRA"
+ return req
+
+ client.set_filter(message_type=messages.EthereumSignTx, callback=_filter)
+ with pytest.raises(TrezorFailure, match="Invalid size of initial chunk"):
+ ethereum.sign_tx(
+ session,
+ n=parse_path("m/44h/60h/0h/0/0"),
+ nonce=0x0,
+ gas_price=0x14,
+ gas_limit=0x14,
+ to="0x1d1c328764a41bda0492b66baa30c4a339ff85ef",
+ chain_id=1,
+ value=0xA,
+ tx_type=None,
+ data=DATA,
+ )
+
+
+def test_signtx_data_bad_ack(session: Session):
+ DATA = b"A" * 2000
+
+ with session.test_ctx as client:
+
+ def _filter(msg: MessageType) -> MessageType:
+ req = messages.EthereumTxAck.ensure_isinstance(msg)
+ assert req.data_chunk is not None
+ req.data_chunk = req.data_chunk + b"EXTRA"
+ return req
+
+ client.set_filter(message_type=messages.EthereumTxAck, callback=_filter)
+ with pytest.raises(TrezorFailure, match="Too much data"):
+ ethereum.sign_tx(
+ session,
+ n=parse_path("m/44h/60h/0h/0/0"),
+ nonce=0x0,
+ gas_price=0x14,
+ gas_limit=0x14,
+ to="0x1d1c328764a41bda0492b66baa30c4a339ff85ef",
+ chain_id=1,
+ value=0xA,
+ tx_type=None,
+ data=DATA,
+ )
+
+
@parametrize_using_common_fixtures("ethereum/sign_tx_staking.json")
@pytest.mark.parametrize("chunkify", (True, False))
def test_signtx_staking(
diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json
index 6f0646da..3c9bec88 100644
--- a/tests/ui_tests/fixtures.json
+++ b/tests/ui_tests/fixtures.json
@@ -634,6 +634,8 @@
"T1B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "341d14a0a993a11e51a4295c0570b3e5975a6d0cbd8553d92a80b62c02cd5dc4",
"T1B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "bb09aa6c65b3991393062e0061f450c2d19bfc158512f1e9c5c366d18828dbd4",
"T1B1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "932413226fc9c7cd2e42a14753c985d858f6cc1123e2cbe45e2523a9330f2626",
+"T1B1_en_ethereum-test_signtx.py::test_signtx_data_bad_ack": "35eb494d3da73902e96387a54aef895addf321b64d4f39b9d00ed0db2dad61b7",
+"T1B1_en_ethereum-test_signtx.py::test_signtx_data_bad_init": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"T1B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Base]": "d37c9bb1645fff4c2790e870d61a7736eb2216b6aa43ca9116cb73da97492ad4",
"T1B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "de54dbfe5e5bc666b896f13d4fbfbb0253f5638c084831f57ec49148136427f1",
"T1B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "f9c0bc8378f03e6ea13db961f278ae91ed07bb037e95ee9681b0f7f8f436e2bb",
@@ -2427,6 +2429,8 @@
"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "54e7082ec37a5ee1e5791946b75e3c08962f7c4a1d360434f514c7a4bc3630fc",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "14e46fe070755aaa2b46c36fcc7d44e9b026c2908e98d75c4f79263bdbe597c1",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "14e46fe070755aaa2b46c36fcc7d44e9b026c2908e98d75c4f79263bdbe597c1",
+"T2T1_cs_ethereum-test_signtx.py::test_signtx_data_bad_ack": "f2b80196c81ce473b7f24f16f6192ac76d9d2ca23fb0b40053c00d02b53d5111",
+"T2T1_cs_ethereum-test_signtx.py::test_signtx_data_bad_init": "f2b80196c81ce473b7f24f16f6192ac76d9d2ca23fb0b40053c00d02b53d5111",
"T2T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "00ef02b8be29f0c7509c16ab2647ff424b2991458e2a5b7dafcf01ad2d53a847",
"T2T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "afdd505e7bd770aba749bbe24c99ccc5d1c1215a6a67399ec79f4b9d326bc6e9",
"T2T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "1fb8f6db0246c1c6d716ac84761e9c243d696f09676116ca8b0a6ca76c913196",
@@ -4265,6 +4269,8 @@
"T2T1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "a6071f5f667526a45282b04838f69354828782c5dc4da14ed39a744d44780591",
"T2T1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "2573b618ae5cc46a0ed8ab1bed1f81488e5b59e2c8ee1f47eb81381d8d2bf0b9",
"T2T1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "2573b618ae5cc46a0ed8ab1bed1f81488e5b59e2c8ee1f47eb81381d8d2bf0b9",
+"T2T1_de_ethereum-test_signtx.py::test_signtx_data_bad_ack": "efeaf51fe18b983e9b1a6947a939ad305a92e57798fe07110bb61c0f65755881",
+"T2T1_de_ethereum-test_signtx.py::test_signtx_data_bad_init": "efeaf51fe18b983e9b1a6947a939ad305a92e57798fe07110bb61c0f65755881",
"T2T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "e12bb8b753a013059ed8cd31deeeacf3011bb1640fe84eafaeb31b3621751a7a",
"T2T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "ecd3c06b06b91e47c06d2d6b43a7a62636726dc15a43185ad4238a7922cf61e8",
"T2T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "2febe378441e24d882d55887ff8caf5588e1ca31e2946990e4a1bd35194e2ecc",
@@ -6103,6 +6109,8 @@
"T2T1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "7ed552e807cd9a1cafdd526e7900bf6ca9106689f2a4be08880247629d42d78b",
"T2T1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "8b91e604f755bfd73df87c9c074825c4ef4da8d9b42cf164e13f159ef28cb935",
"T2T1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "8b91e604f755bfd73df87c9c074825c4ef4da8d9b42cf164e13f159ef28cb935",
+"T2T1_en_ethereum-test_signtx.py::test_signtx_data_bad_ack": "8aa7c68cd09e700e8c6903dcfc39c4a66214481c12c34dc56762829478399b79",
+"T2T1_en_ethereum-test_signtx.py::test_signtx_data_bad_init": "8aa7c68cd09e700e8c6903dcfc39c4a66214481c12c34dc56762829478399b79",
"T2T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "a0055c7439055a08de583148450475fbdb6d78305de15acbb84f7e5f30b10a90",
"T2T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "3801f90f6c9307ee2228a97db3f1b770aa4086e7118015e41cd1ee7055718766",
"T2T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "7f551b9a2160785bf350141aab0ca266f39a99ee8165dc475d67dce5b725a947",
@@ -7959,6 +7967,8 @@
"T2T1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "30a2559e5dd0b6666a969445f2c38474fb71220828dbdfb8e870e0638a07041d",
"T2T1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "e947d2bb573cad202b575eab15ea609021225ad56c6e269c6196dff21226c3f3",
"T2T1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "e947d2bb573cad202b575eab15ea609021225ad56c6e269c6196dff21226c3f3",
+"T2T1_es_ethereum-test_signtx.py::test_signtx_data_bad_ack": "17d836396f272c01cafa175aa87b0c076aedf7698c935d1921c7d3d7e8911903",
+"T2T1_es_ethereum-test_signtx.py::test_signtx_data_bad_init": "17d836396f272c01cafa175aa87b0c076aedf7698c935d1921c7d3d7e8911903",
"T2T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "be72b3d0075131e922c2568064dd92d9099776e88079efb169b07185ae4529a4",
"T2T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "da0b80265fd937dab89b18aab8927676bd73da7297b2e2c45fae61bf4cfaa588",
"T2T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "3eb563d79d459a75d36eeb9057032ad4ea1ed41a54e4d66079265bbc1368948a",
@@ -9797,6 +9807,8 @@
"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "6f5e4ea5fa2300aa29fe09bd0f7cd8e73871cef08bc62d07e6bcbbade5e8b759",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "7b6769c62a65c787b42f78cfff2647f89a1f48e2592954ed10f152a82bba7c00",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "7b6769c62a65c787b42f78cfff2647f89a1f48e2592954ed10f152a82bba7c00",
+"T2T1_fr_ethereum-test_signtx.py::test_signtx_data_bad_ack": "7e5a99a4b6aad4cdf7a9f9aecf483faa381108ee2108efaba88f261e29ac1f8a",
+"T2T1_fr_ethereum-test_signtx.py::test_signtx_data_bad_init": "7e5a99a4b6aad4cdf7a9f9aecf483faa381108ee2108efaba88f261e29ac1f8a",
"T2T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "69c5e840716e45678273e6636970b64008dfd8c0c0df516bf1533e5cde223963",
"T2T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "ab1dcc6dedc730c37f84033b45e190b7e38d17303a02abd425245bc237a100ba",
"T2T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "044bb097f6c4017d48de212eecb79a5ba39d6d7a0d175eeaff7fff5a1d441614",
@@ -11635,6 +11647,8 @@
"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "2703baddb4fca9967258841d4fea731c6adf33492728994a4d7d9203b055c995",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "f6cb0fcc3e90085788427f10970d31bc80e118776e9423d35776d2623e72e180",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "f6cb0fcc3e90085788427f10970d31bc80e118776e9423d35776d2623e72e180",
+"T2T1_pt_ethereum-test_signtx.py::test_signtx_data_bad_ack": "020b255e04b59e53d2aa87ae960038f4538d350de28df15a1ac41b376e9d04f2",
+"T2T1_pt_ethereum-test_signtx.py::test_signtx_data_bad_init": "020b255e04b59e53d2aa87ae960038f4538d350de28df15a1ac41b376e9d04f2",
"T2T1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "2ba69e841825f87217ebd597d9af98f2ec99353d337079ec72f30c3231a87505",
"T2T1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "74c0be08f2583db805791a34d453bc1343c65756133b788f94c9532698fbf904",
"T2T1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "6908c6bc999ce0f3cdccd29d276149296d9e404bc78dbe499a70f7640d487d0a",
@@ -13724,6 +13738,8 @@
"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "9969aedbebe99c861aba8c680e701b525113694b2eb69d78e9314d9efaf9433e",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "a75ef654f27b580c23d05786830393cee409a6497529c10fc921baf0bdc8236f",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "a75ef654f27b580c23d05786830393cee409a6497529c10fc921baf0bdc8236f",
+"T3B1_cs_ethereum-test_signtx.py::test_signtx_data_bad_ack": "aec89f6952811bcfa54db3842b2e2e24d7ae162a65bf19424b4e6b6620fe70bb",
+"T3B1_cs_ethereum-test_signtx.py::test_signtx_data_bad_init": "aec89f6952811bcfa54db3842b2e2e24d7ae162a65bf19424b4e6b6620fe70bb",
"T3B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "930ec3e8c397fbbb58f5b80f1fa34a96c980ea301dd22953492e4cf92c238134",
"T3B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "d44e673bb4a3a05c9276d2e4f3fbdff20928e4d7f777b8a8a871a7512cc10870",
"T3B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "5e5c6216e494e250be2fa493f0a11478a18301a306d3a9fc33bfb4e84346ac63",
@@ -15501,6 +15517,8 @@
"T3B1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "352595e70ef1ace521fe03c3dcb590a6492b68abc1884685efc15bb82f2f158a",
"T3B1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "aeea8e459c192b885ce0138b5c9e7d1db9a5d7a0d9f94b4167da2f5c7e90c91c",
"T3B1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "aeea8e459c192b885ce0138b5c9e7d1db9a5d7a0d9f94b4167da2f5c7e90c91c",
+"T3B1_de_ethereum-test_signtx.py::test_signtx_data_bad_ack": "14dfefb39e3707b5294815085c5d94626e4e632f7fd9ca60df4b28e57d015dde",
+"T3B1_de_ethereum-test_signtx.py::test_signtx_data_bad_init": "14dfefb39e3707b5294815085c5d94626e4e632f7fd9ca60df4b28e57d015dde",
"T3B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "55e16b7405ddf16995dce707d4bdaabb4d5c87575c280cc52caeeae51a9e9dbd",
"T3B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "547f1ef6db9f2743b654e1547f20f8c877a2eed1f43b9b9d42c781a6a62ccd46",
"T3B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "8e2ee63ab892826ff8c57b777bc65804268f3f8d855f541166f3180660288c29",
@@ -17278,6 +17296,8 @@
"T3B1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "2c71e89b68d5ef31c0d7027dc9f0e8f4da481869d6a1b428997609e24f883798",
"T3B1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "099412b21b21ecb6acee416b0636ab2454104bf734e014c711f587599c39036d",
"T3B1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "099412b21b21ecb6acee416b0636ab2454104bf734e014c711f587599c39036d",
+"T3B1_en_ethereum-test_signtx.py::test_signtx_data_bad_ack": "7945fdf0623a34efada654fe62a57fa06c6ab0cf4383bc14c6b7acd594b10596",
+"T3B1_en_ethereum-test_signtx.py::test_signtx_data_bad_init": "7945fdf0623a34efada654fe62a57fa06c6ab0cf4383bc14c6b7acd594b10596",
"T3B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "aac6ffdc9286878a0bfdd65acc6ab6a688efddd9e0f5bfc7910b235ff9c59f06",
"T3B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "f85df926af6e18c19816729b791451b400e1060c01d50fbbbae7681b1106179e",
"T3B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "2ad7333eefad07d39028a096a7d1564fc739136ce8b8884b674b3766c5e500aa",
@@ -19055,6 +19075,8 @@
"T3B1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "800526b898edcd52efd460003b63cba9974002fad1c906bd0a888198d7f81dcd",
"T3B1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "854622b0afcede6b38156a488c32291525fb0fc833b2334b949572a6dcd42510",
"T3B1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "854622b0afcede6b38156a488c32291525fb0fc833b2334b949572a6dcd42510",
+"T3B1_es_ethereum-test_signtx.py::test_signtx_data_bad_ack": "1c43a01a3864c17b781e3a68121bb7c4378f858ab5c4db5b3d012f138eba5fb8",
+"T3B1_es_ethereum-test_signtx.py::test_signtx_data_bad_init": "1c43a01a3864c17b781e3a68121bb7c4378f858ab5c4db5b3d012f138eba5fb8",
"T3B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "b6d5b9107a065906d92fb271c7b23b70744849883e6d6ef4026cffd9fcad0787",
"T3B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "1a7c4285ad563d70a8785c6549fd7aa9f241ec1a9478c123612d931dfe923881",
"T3B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "be3729e4c59867f4856b01be7eada82d41fc1410bd1cebb92d2705b1f318c74a",
@@ -20832,6 +20854,8 @@
"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "30cba5763c17a8d615df219e698cff7b7a3c79e7b56ec88740a182202f94308b",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "224d6ec0899024375014a5b8b0b4dba6ca53f895a1e32d99396d7888d212b8ab",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "224d6ec0899024375014a5b8b0b4dba6ca53f895a1e32d99396d7888d212b8ab",
+"T3B1_fr_ethereum-test_signtx.py::test_signtx_data_bad_ack": "979886e5de665a0a5bd752457a29ad2bd0aad9d94702754cb351dc7d31979b42",
+"T3B1_fr_ethereum-test_signtx.py::test_signtx_data_bad_init": "979886e5de665a0a5bd752457a29ad2bd0aad9d94702754cb351dc7d31979b42",
"T3B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "2e2b7421f7d5dafdbef7958e89baebc47c464a2bb1653b2dfc6dcc8711a479ab",
"T3B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "57adbfa1ae193944a99337b17af2651403f6b798dc191abfaf5a5a16ff0da3d0",
"T3B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "6ef86fadeef9b168565c64831c2494f7019233c3b34bf48e99ca00b034274c78",
@@ -22609,6 +22633,8 @@
"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "24244b2a9178e4fc48d94205285877db5901d610c99cb7c8eed3396eef47f6d2",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "06518eee9299632768bab652be0063c280a6d73f99228ac3a12ab2290ca4a159",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "06518eee9299632768bab652be0063c280a6d73f99228ac3a12ab2290ca4a159",
+"T3B1_pt_ethereum-test_signtx.py::test_signtx_data_bad_ack": "bbd866375fe164eb4caaddceb8a49d710b09ad01ca2cf67a0006d3a0d3ecb121",
+"T3B1_pt_ethereum-test_signtx.py::test_signtx_data_bad_init": "bbd866375fe164eb4caaddceb8a49d710b09ad01ca2cf67a0006d3a0d3ecb121",
"T3B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "ab25458773f931adbe1de1464bd712d7f12a293f49bdf84b9d1f25d3e46bb172",
"T3B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "4303cb40439ce0eac920c1d60db070e118f31d998f63caab8b0854153f18aa9d",
"T3B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "b9e7abc28279d80a188e5c0ab026d4038888c69fb357944ce975416ef03a87e8",
@@ -24780,6 +24806,8 @@
"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "b80b0ad18a877a47de863f5bcf23cc4b69bc4d7d3aeb3dc26ff8ed2e78e56192",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "6919f91cb68eda372aab81e0fe7cdf461823eabd0b851dd2bbea03d88b0caba5",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "6919f91cb68eda372aab81e0fe7cdf461823eabd0b851dd2bbea03d88b0caba5",
+"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_bad_ack": "9c20243bc5dacf2442af5a8778b66a0ab7cb978e11c02fec371f109fbc9d55f6",
+"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_bad_init": "9c20243bc5dacf2442af5a8778b66a0ab7cb978e11c02fec371f109fbc9d55f6",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "261e0311d5c5c0a7095d3169b9d77e97d729564fcaa07a90e8c2ab446ea8926d",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "7b71352e4ec49d0eec1e903b95bfdd6f3c70a9078658a39bc3431b2cb47a716c",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "a31ba9c3068074f0b636971cca15f03b1f24aa850a0e2a9b7bf8d4d749f60eda",
@@ -26592,6 +26620,8 @@
"T3T1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "d41cc8ed9642ed0e7b646898ed2e869e5cdd89b36376860833d0d5fec18bda1b",
"T3T1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "39d7768ce247f2a75d76324ba6138213b0fa66dc5d50a3d8f59ee319064e717b",
"T3T1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "39d7768ce247f2a75d76324ba6138213b0fa66dc5d50a3d8f59ee319064e717b",
+"T3T1_de_ethereum-test_signtx.py::test_signtx_data_bad_ack": "68c146f13417be0845fee20b1d8de4a05e0844608c2efb3cfae9f573be39f0c4",
+"T3T1_de_ethereum-test_signtx.py::test_signtx_data_bad_init": "68c146f13417be0845fee20b1d8de4a05e0844608c2efb3cfae9f573be39f0c4",
"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "81cf7bfd1de144b36728df6f895c33f7c117ea39ca590f0e122a79e89b245c8d",
"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "d250bcd0d6fa2eedd77c9766138975b09e56d510d3e90f7048b8beaef8479aac",
"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "538365c9f6a438a636586317a45f2a70e104ba5ee64ec757205bb53d77d3774d",
@@ -28404,6 +28434,8 @@
"T3T1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "0a760e038b2dc459273ef36f42ead1acc86ef077026ec153c29b7305f23447db",
"T3T1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "d2eaa00b097555c46608edf3f828e8f9c9fa09f6e419fa48f9dafa2194682e68",
"T3T1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "d2eaa00b097555c46608edf3f828e8f9c9fa09f6e419fa48f9dafa2194682e68",
+"T3T1_en_ethereum-test_signtx.py::test_signtx_data_bad_ack": "0064e8a52b9bff0c2a31432fa781b800afb21e8910d60f303671bdfc8d8425fc",
+"T3T1_en_ethereum-test_signtx.py::test_signtx_data_bad_init": "0064e8a52b9bff0c2a31432fa781b800afb21e8910d60f303671bdfc8d8425fc",
"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "f30e822517105f9f740f204b88e2394f580be00e7008f05fe844c0b0c3233bbe",
"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "536a9b8b72b1511fccad288ac0ba5d2c5c766affe9fd235fa8529d1ca48e825a",
"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "d0e0413ee706a3befdd3e97ad87460e99574fb14b37aa2e2fc58a2234d473e05",
@@ -30216,6 +30248,8 @@
"T3T1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "d93034676daec068e70d43d2599f4714e7b00fc5dd7f45a8254018cd23dd7c0c",
"T3T1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "d3e7bd668b60fe527ce863d5352b4fddb9c8371c3a2f9b207e2c4874377f273e",
"T3T1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "d3e7bd668b60fe527ce863d5352b4fddb9c8371c3a2f9b207e2c4874377f273e",
+"T3T1_es_ethereum-test_signtx.py::test_signtx_data_bad_ack": "41b9c9e85d64891dcfd03d675df77c533f035a2d191b161144d00afab69a589d",
+"T3T1_es_ethereum-test_signtx.py::test_signtx_data_bad_init": "41b9c9e85d64891dcfd03d675df77c533f035a2d191b161144d00afab69a589d",
"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "83629acf49d8bfe51d718da26ef2ad9a4946687a707e338e75e0e3aee5ab397c",
"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "92a9cb3cb973e33cec21ecb4b7540ea6169b7ba84312755ad166bbd28a019883",
"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "f4de1727439a3a80081960a40dae52ac53c30bf5dc8fce8393647fdff65bd52c",
@@ -32028,6 +32062,8 @@
"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "9c990e33d7bc41581e0ddc54444a3fdbfd76d7a28dbe110d4dfceae455866609",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "bd79c0d767d80a0a27370f2f417d753ce2f20f84e7868a2b19db4d5c6adf2849",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "bd79c0d767d80a0a27370f2f417d753ce2f20f84e7868a2b19db4d5c6adf2849",
+"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_bad_ack": "116c64aa168d12181b7a5317677ddf135d739fdac22d38ff08571dc3301c2f47",
+"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_bad_init": "116c64aa168d12181b7a5317677ddf135d739fdac22d38ff08571dc3301c2f47",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "94846a295613f5d566a84fc3083469463c8e03714e25caa62a18b2299e8fef0d",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "1ab6a7658ab642232cd4585a5e9751ffb3597e4becbef9b2e48c82ba0be8248e",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "9e997ba16022b5378d8be912a0ede19a67a8d205cc19839cc8ad544e7bef1b81",
@@ -33840,6 +33876,8 @@
"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "6efa7791debfd73ec148af66c35a509be3af31f9d0f52d1807a993460e6e1e25",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "6ae253bdf87e25a7704e11838f6ab23cadfd414da94c2c5537c81f357b362666",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "6ae253bdf87e25a7704e11838f6ab23cadfd414da94c2c5537c81f357b362666",
+"T3T1_pt_ethereum-test_signtx.py::test_signtx_data_bad_ack": "14256cd1b801d1b67a37de1198d61a80d342f39e5c5d6fa991ec7fb526d683be",
+"T3T1_pt_ethereum-test_signtx.py::test_signtx_data_bad_init": "14256cd1b801d1b67a37de1198d61a80d342f39e5c5d6fa991ec7fb526d683be",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "1d7cf31f580674519e514e87f68fa6973b3eeaa2c821e336400f43f66733e10f",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "351bd2c86d32b9e1b7722c798f70a14e303a8c8d8330a301c55c24af881701b9",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "1823abe46d120364911c5b7e516adcdc3000d68c2ed0fa8c38f6788f2c85dc55",
@@ -36304,6 +36342,8 @@
"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "16dd0d672d3b5c2086fb19cf72f8f9f9360018d0ae13a4dd4a0077af1a9f3489",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "984455968143ce5056918d11bac093219147f9bc630b46d4ec718407c81affef",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "f9f0e8dc40c435857ff4884d20850e4406e270288b469efb15be5c43e822b310",
+"T3W1_cs_ethereum-test_signtx.py::test_signtx_data_bad_ack": "2b06a6c36a96faaad9d1237b47e37374c5452331ad8fa3738accbd2e09ec1500",
+"T3W1_cs_ethereum-test_signtx.py::test_signtx_data_bad_init": "2b06a6c36a96faaad9d1237b47e37374c5452331ad8fa3738accbd2e09ec1500",
"T3W1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "0872ffcf38ac1682ab9de08e287ee1efda01e0977af5986a872d338aa3c63aa6",
"T3W1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "53a725792a72e46274e02dabd51d6c97163a11996642231a80873149ce1e0807",
"T3W1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "06d4c439875bacb1f10e7789e21e4bc7bf9c8a90fa9b6840495d1e100b127a7f",
@@ -38145,6 +38185,8 @@
"T3W1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "5d91512bfb4ea8313446c8392b62b7ae3dba5f56880c20c717ed6dde35b1861d",
"T3W1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "bed8412103fde29fe8dfaad98a2e2b33c26699b9e1392de4c5f8ef5b6c1339fa",
"T3W1_de_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "e105e3796014ac03e1e8cf0c5500ea1950b22761bd7b72a98ecd842d00f0150e",
+"T3W1_de_ethereum-test_signtx.py::test_signtx_data_bad_ack": "32c06c9f4ef6d91d183e5480b273a0aec9bd56572528ddbfb70b7cd609cbef50",
+"T3W1_de_ethereum-test_signtx.py::test_signtx_data_bad_init": "32c06c9f4ef6d91d183e5480b273a0aec9bd56572528ddbfb70b7cd609cbef50",
"T3W1_de_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "354fb3818aade0d9faf3ce6da922a1ee2e6069cf16fbc2f526ce7b32a8d0f300",
"T3W1_de_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "1c5d6c9b95f8362c41d3b6cd3dff7ee1c09cd2d863bd27fe3fe2610e6462d4ee",
"T3W1_de_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "2220ef0d22df88e3e160dfd00c0430ec8eba5a21f1052ac099d8bef4ef856c0f",
@@ -39986,6 +40028,8 @@
"T3W1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "dc40446ef876fcff26fce4f288a3ac87cafc4036d1e48cd0828602027177ef02",
"T3W1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "d937ef223571e01dbfc1cde852154e6b1500b73d6e6788d07196e8f8fcd3e6e8",
"T3W1_en_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "4a63b5fb9ecd492669f86bb5e3d9a61ce3bcf00748f0fb427a8541626bca2385",
+"T3W1_en_ethereum-test_signtx.py::test_signtx_data_bad_ack": "90812f196e8c35dc7f35cb5a9a0e553c8fc6a610812d85b9f166e90b3f1c8b59",
+"T3W1_en_ethereum-test_signtx.py::test_signtx_data_bad_init": "90812f196e8c35dc7f35cb5a9a0e553c8fc6a610812d85b9f166e90b3f1c8b59",
"T3W1_en_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "1715973bdbfdce9c65520147f64acf421a65999252dad98811dac5d68a406c23",
"T3W1_en_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "0c582a842bd86241ee254afcdd43dafa6d5d8b7bb0ba1b479874d14ed682f267",
"T3W1_en_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "10dde888f45b1e208752d079ec1ea694189bd7c99c97b7b0eb906b2344babfcb",
@@ -41827,6 +41871,8 @@
"T3W1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "5576f2700fb341b4739aa7be6f448774a52aad2e456367bc8779f7c858d7b321",
"T3W1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "235539733d18a27a0ed18ce3d109ce6c54602f6b5fd90bafda5c9208c43bfcd6",
"T3W1_es_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "5d1b6d4e83111e2230d1e5c058f48faa65b77b640aeb76bee5e42801fa34f563",
+"T3W1_es_ethereum-test_signtx.py::test_signtx_data_bad_ack": "ddbd1412a9f69aea1c41c375a2ec0647411a0e487ec5c1ee55e24505dfc34e29",
+"T3W1_es_ethereum-test_signtx.py::test_signtx_data_bad_init": "ddbd1412a9f69aea1c41c375a2ec0647411a0e487ec5c1ee55e24505dfc34e29",
"T3W1_es_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "d8b9b8018446bc90bf811a69d4deeef353f61db9413f891dd1f7dc0b94290a2e",
"T3W1_es_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "0b7b5a62d4324df61e0fbcef1fb4cb16d53d3ebd6d32cd5b1c041257e011fe04",
"T3W1_es_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "710d03b52d2eb817379724a6f0c6520f9dff258a7f429cde04deecbf484c70dd",
@@ -43668,6 +43714,8 @@
"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "ce14cce52c3fd97490997a3157516d3af41025b6d236cb13b6e9e9e95b76b083",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "7a691d39cdebb75e85c503e221bee3a8445b799f9d3bdf80e3960ae704fc8b0d",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "39a8833a99078e936b1f8a785a38f8153a38452df3a6e1e18e7217e9c0529534",
+"T3W1_fr_ethereum-test_signtx.py::test_signtx_data_bad_ack": "a392ca1dea666647fb2d6edfcd90e4e3cad6ab0e294ca85cda7db478214a6a81",
+"T3W1_fr_ethereum-test_signtx.py::test_signtx_data_bad_init": "a392ca1dea666647fb2d6edfcd90e4e3cad6ab0e294ca85cda7db478214a6a81",
"T3W1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "4884c9c3f8f1d6a442617d3845243cb34639e2e5b79b567aad2ec81020bf4d20",
"T3W1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "3f1835bfe34bc5fb2a0c2bb84d953a5c01dc96db09b25e73502328db9bf1371e",
"T3W1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "4852cf4f977c8cbb56b2f548ca50bfe109241544a0304ee5acdc076eef2396af",
@@ -45514,6 +45562,8 @@
"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault]": "3266e04bdd863315380bf85945f60fada3b7630aaeab368cf8125d282dac50df",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_owner_mismatch]": "44a1f5cc0b23274ae14344eabebebccf8f74e17a42ec54e24bd5bee5cbc47605",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-withdraw_unknown_vault_receiver_mismatch]": "19d602badbaefbdad622a9dc675225f2b5bcad7f6d1bdd1909d9a3cda39df030",
+"T3W1_pt_ethereum-test_signtx.py::test_signtx_data_bad_ack": "6fb22dca4b252028ed3f91db1fb746e30d12aece0a74e1bcc4abef605a3a9026",
+"T3W1_pt_ethereum-test_signtx.py::test_signtx_data_bad_init": "6fb22dca4b252028ed3f91db1fb746e30d12aece0a74e1bcc4abef605a3a9026",
"T3W1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[False-10000]": "ddf05317935521fd83a45bb37e9141f1dc83cc105f47f361a03689dd50d3f60f",
"T3W1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[False-176]": "e9e7ef28db92d8ecfd78dcc637bd5b17157138b5031cef1243c93bb7031bb861",
"T3W1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[True-10000]": "5a19ec83fdbccde27cf11b65a9791d7414dec46d713ec4d77be172e499d49ef8",
Why this scored 12/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.