1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-07-10 08:38:07 +00:00

feat(tests): new tests for Ethereum definitions

This commit is contained in:
Martin Novak 2022-10-11 13:00:36 +02:00
parent 43438395f3
commit bcc4314462
18 changed files with 1144 additions and 66 deletions

2
.gitignore vendored
View File

@ -11,5 +11,5 @@ __pycache__/
proto.gv*
.DS_Store
crypto/tests/libtrezor-crypto.so.dSYM/
definitions-latest/
/definitions-latest
definitions-cache.json

View File

@ -36,11 +36,33 @@
"address": "0x1e6E3708a059aEa1241a81c7aAe84b6CDbC54d59"
}
},
{
"name": "builtin_Ethereum_do_not_send_network",
"parameters": {
"path": "m/44'/60'/0'/0/0",
"definitions": {
"slip44": -1
}
},
"result": {
"address": "0x73d0385F4d8E00C5e6504C6030F47BF6212736A8"
}
},
{
"name": "builtin_Ethereum_send_wrong_network",
"parameters": {
"path": "m/44'/60'/0'/0/0",
"definitions": {
"slip44": 6060
}
},
"result": {
"address": "0x73d0385F4d8E00C5e6504C6030F47BF6212736A8"
}
},
{
"name": "ETC",
"parameters": {
"builtin_network": false,
"slip44": 61,
"path": "m/44'/61'/0'/0/0"
},
"result": {
@ -50,8 +72,6 @@
{
"name": "GoChain",
"parameters": {
"builtin_network": false,
"slip44": 6060,
"path": "m/44'/6060'/0'/0/0"
},
"result": {
@ -61,8 +81,6 @@
{
"name": "Wanchain",
"parameters": {
"builtin_network": false,
"slip44": 5718350,
"path": "m/44'/5718350'/0'/0/0"
},
"result": {

View File

@ -16,8 +16,7 @@
"gas_price": "0x14",
"gas_limit": "0x14",
"tx_type": null,
"value": "0x0",
"builtin_token": false
"value": "0x0"
},
"result": {
"sig_v": 37,
@ -56,8 +55,7 @@
"gas_price": "0x14",
"gas_limit": "0x14",
"tx_type": 1,
"value": "0x64",
"builtin_network": false
"value": "0x64"
},
"result": {
"sig_v": 1811,

View File

@ -0,0 +1,336 @@
{
"setup": {
"mnemonic": "all all all all all all all all all all all all",
"passphrase": ""
},
"tests": [
{
"name": "builtin_Ethereum_builtin_Tether_send_network_token",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
},
"result": {
"sig_v": 38,
"sig_r": "a82c902c3c4d82e9a3d3894bf1298b14217c0d6149faaff26e254b7753063158",
"sig_s": "2200f34790df5a71f7349eb941f11c294e480dadcf15e323851ae43845ee9a80"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_send_network",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"to_address": ""
}
},
"result": {
"sig_v": 38,
"sig_r": "a82c902c3c4d82e9a3d3894bf1298b14217c0d6149faaff26e254b7753063158",
"sig_s": "2200f34790df5a71f7349eb941f11c294e480dadcf15e323851ae43845ee9a80"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_send_token",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"chain_id": -1
}
},
"result": {
"sig_v": 38,
"sig_r": "a82c902c3c4d82e9a3d3894bf1298b14217c0d6149faaff26e254b7753063158",
"sig_s": "2200f34790df5a71f7349eb941f11c294e480dadcf15e323851ae43845ee9a80"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_send_nothing",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"chain_id": -1,
"to_address": ""
}
},
"result": {
"sig_v": 38,
"sig_r": "a82c902c3c4d82e9a3d3894bf1298b14217c0d6149faaff26e254b7753063158",
"sig_s": "2200f34790df5a71f7349eb941f11c294e480dadcf15e323851ae43845ee9a80"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_wrong_network_token",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"chain_id": 8,
"token_chain_id": 8,
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6"
}
},
"result": {
"sig_v": 38,
"sig_r": "a82c902c3c4d82e9a3d3894bf1298b14217c0d6149faaff26e254b7753063158",
"sig_s": "2200f34790df5a71f7349eb941f11c294e480dadcf15e323851ae43845ee9a80"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_wrong_network",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"chain_id": 8
}
},
"result": {
"sig_v": 38,
"sig_r": "a82c902c3c4d82e9a3d3894bf1298b14217c0d6149faaff26e254b7753063158",
"sig_s": "2200f34790df5a71f7349eb941f11c294e480dadcf15e323851ae43845ee9a80"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_wrong_token",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"token_chain_id": 8,
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6"
}
},
"result": {
"sig_v": 38,
"sig_r": "a82c902c3c4d82e9a3d3894bf1298b14217c0d6149faaff26e254b7753063158",
"sig_s": "2200f34790df5a71f7349eb941f11c294e480dadcf15e323851ae43845ee9a80"
}
},
{
"name": "builtin_Ethereum_extern_adChain_send_network_token",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
},
"result": {
"sig_v": 38,
"sig_r": "78e9bab4abda13d3cdc2e6dee69e96a7215ff4254b2b9a2321f970941925250c",
"sig_s": "2c08ebde47552e7d407767710c4fd48d8c66e71f28004d87170a430ecf7d56a6"
}
},
{
"name": "builtin_Ethereum_extern_adChain_send_network",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"to_address": ""
}
},
"result": {
"sig_v": 38,
"sig_r": "78e9bab4abda13d3cdc2e6dee69e96a7215ff4254b2b9a2321f970941925250c",
"sig_s": "2c08ebde47552e7d407767710c4fd48d8c66e71f28004d87170a430ecf7d56a6"
}
},
{
"name": "builtin_Ethereum_extern_adChain_send_token",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"chain_id": -1
}
},
"result": {
"sig_v": 38,
"sig_r": "78e9bab4abda13d3cdc2e6dee69e96a7215ff4254b2b9a2321f970941925250c",
"sig_s": "2c08ebde47552e7d407767710c4fd48d8c66e71f28004d87170a430ecf7d56a6"
}
},
{
"name": "builtin_Ethereum_extern_adChain_send_nothing",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"chain_id": -1,
"to_address": ""
}
},
"result": {
"sig_v": 38,
"sig_r": "78e9bab4abda13d3cdc2e6dee69e96a7215ff4254b2b9a2321f970941925250c",
"sig_s": "2c08ebde47552e7d407767710c4fd48d8c66e71f28004d87170a430ecf7d56a6"
}
},
{
"name": "builtin_Ethereum_extern_adChain_wrong_token",
"parameters": {
"chain_id": 1,
"path": "m/44'/60'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"token_chain_id": 8,
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6"
}
},
"result": {
"sig_v": 38,
"sig_r": "78e9bab4abda13d3cdc2e6dee69e96a7215ff4254b2b9a2321f970941925250c",
"sig_s": "2c08ebde47552e7d407767710c4fd48d8c66e71f28004d87170a430ecf7d56a6"
}
},
{
"name": "extern_Ubiq_extern_Sphere_send_network_token",
"parameters": {
"chain_id": 8,
"path": "m/44'/108'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
},
"result": {
"sig_v": 52,
"sig_r": "1db04aa641665618467a2e40f840da081601c266050f951c8bb8688efd43a7d9",
"sig_s": "5f4bb9b86814cb8647b7aad6e23c73ffbfb284109068d5d1061583bff252ec82"
}
},
{
"name": "extern_Ubiq_extern_Sphere_send_network",
"parameters": {
"chain_id": 8,
"path": "m/44'/108'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"to_address": ""
}
},
"result": {
"sig_v": 52,
"sig_r": "1db04aa641665618467a2e40f840da081601c266050f951c8bb8688efd43a7d9",
"sig_s": "5f4bb9b86814cb8647b7aad6e23c73ffbfb284109068d5d1061583bff252ec82"
}
},
{
"name": "extern_Ubiq_extern_Sphere_wrong_token",
"parameters": {
"chain_id": 8,
"path": "m/44'/108'/0'/0/0",
"nonce": "0x0",
"gas_price": "0x14",
"gas_limit": "0x14",
"value": "0x0",
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6",
"tx_type": null,
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"definitions": {
"token_chain_id": 1,
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd"
}
},
"result": {
"sig_v": 52,
"sig_r": "1db04aa641665618467a2e40f840da081601c266050f951c8bb8688efd43a7d9",
"sig_s": "5f4bb9b86814cb8647b7aad6e23c73ffbfb284109068d5d1061583bff252ec82"
}
}
]
}

View File

@ -53,8 +53,7 @@
"value": "0x2540be400",
"to_address": "0x8eA7a3fccC211ED48b763b4164884DDbcF3b0A98",
"tx_type": null,
"data": "",
"builtin_network": false
"data": ""
},
"result": {
"sig_v": 43,
@ -73,8 +72,7 @@
"value": "0x2540be400",
"to_address": "0x8eA7a3fccC211ED48b763b4164884DDbcF3b0A98",
"tx_type": null,
"data": "",
"builtin_network": false
"data": ""
},
"result": {
"sig_v": 158,
@ -93,8 +91,7 @@
"value": "0x2540be400",
"to_address": "0x8eA7a3fccC211ED48b763b4164884DDbcF3b0A98",
"tx_type": null,
"data": "",
"builtin_network": false
"data": ""
},
"result": {
"sig_v": 57891008,
@ -113,8 +110,7 @@
"value": "0x2540be400",
"to_address": "0x8eA7a3fccC211ED48b763b4164884DDbcF3b0A98",
"tx_type": null,
"data": "",
"builtin_network": false
"data": ""
},
"result": {
"sig_v": 6251318340,
@ -171,8 +167,7 @@
"value": "0x2540be400",
"to_address": "0x8eA7a3fccC211ED48b763b4164884DDbcF3b0A98",
"tx_type": null,
"data": "",
"builtin_network": false
"data": ""
},
"result": {
"sig_v": 22594216254,

View File

@ -73,8 +73,7 @@
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"builtin_token": false
"value": "0x0"
},
"result": {
"sig_v": 1,
@ -114,8 +113,7 @@
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0xa",
"builtin_network": false
"value": "0xa"
},
"result": {
"sig_v": 0,

View File

@ -0,0 +1,336 @@
{
"setup": {
"mnemonic": "all all all all all all all all all all all all",
"passphrase": ""
},
"tests": [
{
"name": "builtin_Ethereum_builtin_Tether_send_network_token",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0"
},
"result": {
"sig_v": 1,
"sig_r": "8b5002dc26252120e89c5194a72fb96663930c3bb709487bec72132a0c32033f",
"sig_s": "47f36b4c02bad110bf7eb4fd71d6cd12bca7443bad3f31700a404302dbbb6e1c"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_send_network",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"to_address": ""
}
},
"result": {
"sig_v": 1,
"sig_r": "8b5002dc26252120e89c5194a72fb96663930c3bb709487bec72132a0c32033f",
"sig_s": "47f36b4c02bad110bf7eb4fd71d6cd12bca7443bad3f31700a404302dbbb6e1c"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_send_token",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"chain_id": -1
}
},
"result": {
"sig_v": 1,
"sig_r": "8b5002dc26252120e89c5194a72fb96663930c3bb709487bec72132a0c32033f",
"sig_s": "47f36b4c02bad110bf7eb4fd71d6cd12bca7443bad3f31700a404302dbbb6e1c"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_send_nothing",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"chain_id": -1,
"to_address": ""
}
},
"result": {
"sig_v": 1,
"sig_r": "8b5002dc26252120e89c5194a72fb96663930c3bb709487bec72132a0c32033f",
"sig_s": "47f36b4c02bad110bf7eb4fd71d6cd12bca7443bad3f31700a404302dbbb6e1c"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_wrong_network_token",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"chain_id": 8,
"token_chain_id": 8,
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6"
}
},
"result": {
"sig_v": 1,
"sig_r": "8b5002dc26252120e89c5194a72fb96663930c3bb709487bec72132a0c32033f",
"sig_s": "47f36b4c02bad110bf7eb4fd71d6cd12bca7443bad3f31700a404302dbbb6e1c"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_wrong_network",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"chain_id": 8
}
},
"result": {
"sig_v": 1,
"sig_r": "8b5002dc26252120e89c5194a72fb96663930c3bb709487bec72132a0c32033f",
"sig_s": "47f36b4c02bad110bf7eb4fd71d6cd12bca7443bad3f31700a404302dbbb6e1c"
}
},
{
"name": "builtin_Ethereum_builtin_Tether_wrong_token",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"token_chain_id": 8,
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6"
}
},
"result": {
"sig_v": 1,
"sig_r": "8b5002dc26252120e89c5194a72fb96663930c3bb709487bec72132a0c32033f",
"sig_s": "47f36b4c02bad110bf7eb4fd71d6cd12bca7443bad3f31700a404302dbbb6e1c"
}
},
{
"name": "builtin_Ethereum_extern_adChain_send_network_token",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0"
},
"result": {
"sig_v": 0,
"sig_r": "a29ac8d36f0b49b12fcde74878593a75b4990062e8c722da602d4a48733382a2",
"sig_s": "60758c000ee9d276972191c200ef92d395cecf0a9586d65449c73057ae561883"
}
},
{
"name": "builtin_Ethereum_extern_adChain_send_network",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"to_address": ""
}
},
"result": {
"sig_v": 0,
"sig_r": "a29ac8d36f0b49b12fcde74878593a75b4990062e8c722da602d4a48733382a2",
"sig_s": "60758c000ee9d276972191c200ef92d395cecf0a9586d65449c73057ae561883"
}
},
{
"name": "builtin_Ethereum_extern_adChain_send_token",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"chain_id": -1
}
},
"result": {
"sig_v": 0,
"sig_r": "a29ac8d36f0b49b12fcde74878593a75b4990062e8c722da602d4a48733382a2",
"sig_s": "60758c000ee9d276972191c200ef92d395cecf0a9586d65449c73057ae561883"
}
},
{
"name": "builtin_Ethereum_extern_adChain_send_nothing",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"chain_id": -1,
"to_address": ""
}
},
"result": {
"sig_v": 0,
"sig_r": "a29ac8d36f0b49b12fcde74878593a75b4990062e8c722da602d4a48733382a2",
"sig_s": "60758c000ee9d276972191c200ef92d395cecf0a9586d65449c73057ae561883"
}
},
{
"name": "builtin_Ethereum_extern_adChain_wrong_token",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/60'/0'/0/0",
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
"chain_id": 1,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"token_chain_id": 8,
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6"
}
},
"result": {
"sig_v": 0,
"sig_r": "a29ac8d36f0b49b12fcde74878593a75b4990062e8c722da602d4a48733382a2",
"sig_s": "60758c000ee9d276972191c200ef92d395cecf0a9586d65449c73057ae561883"
}
},
{
"name": "extern_Ubiq_extern_Sphere_send_network_token",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/108'/0'/0/0",
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6",
"chain_id": 8,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0"
},
"result": {
"sig_v": 1,
"sig_r": "1607bb4422b8cd139228f0d4f48521f6b249f2daeb7a254f9e9e998fd8dd6b68",
"sig_s": "4a17515b78d7d70fc8df8b17f602f0cd57a0afe2417cc893cd3cda706ab018fa"
}
},
{
"name": "extern_Ubiq_extern_Sphere_send_network",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/108'/0'/0/0",
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6",
"chain_id": 8,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"to_address": ""
}
},
"result": {
"sig_v": 1,
"sig_r": "1607bb4422b8cd139228f0d4f48521f6b249f2daeb7a254f9e9e998fd8dd6b68",
"sig_s": "4a17515b78d7d70fc8df8b17f602f0cd57a0afe2417cc893cd3cda706ab018fa"
}
},
{
"name": "extern_Ubiq_extern_Sphere_wrong_token",
"parameters": {
"data": "a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"path": "m/44'/108'/0'/0/0",
"to_address": "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6",
"chain_id": 8,
"nonce": "0x0",
"gas_limit": "0x14",
"max_gas_fee": "0x14",
"max_priority_fee": "0x1",
"value": "0x0",
"definitions": {
"token_chain_id": 1,
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd"
}
},
"result": {
"sig_v": 1,
"sig_r": "1607bb4422b8cd139228f0d4f48521f6b249f2daeb7a254f9e9e998fd8dd6b68",
"sig_s": "4a17515b78d7d70fc8df8b17f602f0cd57a0afe2417cc893cd3cda706ab018fa"
}
}
]
}

View File

@ -26,6 +26,78 @@
"sig": "0x18aaea9abed7cd88d3763a9a420e2e7b71a9f991685fbc62d74da86326cffa680644862d459d1973e422777a3933bc74190b1cae9a5418ddaea645a7d7630dd91c"
}
},
{
"name": "builtin_Ethereum_do_not_send_network",
"comment": "Bare minimum EIP-712 message (domain only)",
"parameters": {
"path": "m/44'/60'/0'/0/0",
"metamask_v4_compat": true,
"data": {
"types": {
"EIP712Domain": []
},
"primaryType": "EIP712Domain",
"message": {},
"domain": {}
},
"message_hash": null,
"domain_separator_hash": "0x6192106f129ce05c9075d319c1fa6ea9b3ae37cbd0c1ef92e2be7137bb07baa1",
"definitions": {
"slip44": -1
}
},
"result": {
"address": "0x73d0385F4d8E00C5e6504C6030F47BF6212736A8",
"sig": "0x18aaea9abed7cd88d3763a9a420e2e7b71a9f991685fbc62d74da86326cffa680644862d459d1973e422777a3933bc74190b1cae9a5418ddaea645a7d7630dd91c"
}
},
{
"name": "builtin_Ethereum_send_wrong_network",
"comment": "Bare minimum EIP-712 message (domain only)",
"parameters": {
"path": "m/44'/60'/0'/0/0",
"metamask_v4_compat": true,
"data": {
"types": {
"EIP712Domain": []
},
"primaryType": "EIP712Domain",
"message": {},
"domain": {}
},
"message_hash": null,
"domain_separator_hash": "0x6192106f129ce05c9075d319c1fa6ea9b3ae37cbd0c1ef92e2be7137bb07baa1",
"definitions": {
"slip44": 6060
}
},
"result": {
"address": "0x73d0385F4d8E00C5e6504C6030F47BF6212736A8",
"sig": "0x18aaea9abed7cd88d3763a9a420e2e7b71a9f991685fbc62d74da86326cffa680644862d459d1973e422777a3933bc74190b1cae9a5418ddaea645a7d7630dd91c"
}
},
{
"name": "extern_GoChain_send_network",
"comment": "Bare minimum EIP-712 message (domain only)",
"parameters": {
"path": "m/44'/6060'/0'/0/0",
"metamask_v4_compat": true,
"data": {
"types": {
"EIP712Domain": []
},
"primaryType": "EIP712Domain",
"message": {},
"domain": {}
},
"message_hash": null,
"domain_separator_hash": "0x6192106f129ce05c9075d319c1fa6ea9b3ae37cbd0c1ef92e2be7137bb07baa1"
},
"result": {
"address": "0xA26a450ef46a5f11a510eBA2119A3236fa0Aca92",
"sig": "0x0d7be57dfc60b5ec97383761a3404846fcbb71f8c4b317d178ffbc09a0e71b8639ffcedcb3774cf362b50e1c95938d245778c5e3d9679ed4ae63bedafb935b601b"
}
},
{
"name": "full_domain_empty_message",
"comment": "Domain only EIP-712 message",

View File

@ -14,6 +14,45 @@
"sig": "af4eac50f21acc6daeb0ab036f616f5d19fccade46e47100642b3dfc798c9b740d5873887bdc2f02502c90777a082d10dca113bd1ec29d08108396401421c8cc1b"
}
},
{
"name": "builtin_Ethereum_do_not_send_network",
"parameters": {
"msg": "This is an example of a signed message.",
"path": "m/44'/60'/0'/0/0",
"definitions": {
"slip44": -1
}
},
"result": {
"address": "0x73d0385F4d8E00C5e6504C6030F47BF6212736A8",
"sig": "af4eac50f21acc6daeb0ab036f616f5d19fccade46e47100642b3dfc798c9b740d5873887bdc2f02502c90777a082d10dca113bd1ec29d08108396401421c8cc1b"
}
},
{
"name": "builtin_Ethereum_send_wrong_network",
"parameters": {
"msg": "This is an example of a signed message.",
"path": "m/44'/60'/0'/0/0",
"definitions": {
"slip44": 6060
}
},
"result": {
"address": "0x73d0385F4d8E00C5e6504C6030F47BF6212736A8",
"sig": "af4eac50f21acc6daeb0ab036f616f5d19fccade46e47100642b3dfc798c9b740d5873887bdc2f02502c90777a082d10dca113bd1ec29d08108396401421c8cc1b"
}
},
{
"name": "extern_GoChain_send_network",
"parameters": {
"msg": "This is an example of a signed message.",
"path": "m/44'/6060'/0'/0/0"
},
"result": {
"address": "0xA26a450ef46a5f11a510eBA2119A3236fa0Aca92",
"sig": "e642dd21fd87ead65b380f5cc6a9159b8a83e024c3fac13e261ad07dc344b6ef2e8e5ef476a908aeb37aece2afe2e248f029634979fd68b57635fb9e083c91a91c"
}
},
{
"parameters": {
"msg": "VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!VeryLongMessage!",

View File

@ -18,7 +18,8 @@ import pytest
from trezorlib import ethereum
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.tools import parse_path
from trezorlib.exceptions import TrezorFailure
from trezorlib.tools import UH_, parse_path
from ...common import COMMON_FIXTURES_DIR, parametrize_using_common_fixtures
@ -27,14 +28,26 @@ pytestmark = [pytest.mark.altcoin, pytest.mark.ethereum]
@parametrize_using_common_fixtures("ethereum/getaddress.json")
def test_getaddress(client: Client, parameters, result):
encoded_network = None
if not parameters.get("builtin_network", True):
encoded_network = ethereum.network_definition_from_dir(
path=COMMON_FIXTURES_DIR / "ethereum" / "definitions-latest",
slip44=parameters["slip44"],
)
address_n = parse_path(parameters["path"])
encoded_network_slip44 = UH_(address_n[1])
if "definitions" in parameters:
encoded_network_slip44 = parameters["definitions"].get(
"slip44", encoded_network_slip44
)
encoded_network = ethereum.network_definition_from_dir(
path=COMMON_FIXTURES_DIR / "ethereum" / "definitions-latest",
slip44=encoded_network_slip44,
)
assert (
ethereum.get_address(client, address_n, encoded_network=encoded_network)
== result["address"]
)
def test_getaddress_missing_extern_definitions(client: Client):
path = "m/44'/6060'/0'/0/0" # GoChain
address_n = parse_path(path)
with pytest.raises(TrezorFailure, match=r"DataError:.*Forbidden key path"):
ethereum.get_address(client, address_n, encoded_network=None)

View File

@ -18,9 +18,10 @@ import pytest
from trezorlib import ethereum, exceptions
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.tools import parse_path
from trezorlib.exceptions import TrezorFailure
from trezorlib.tools import UH_, parse_path
from ...common import parametrize_using_common_fixtures
from ...common import COMMON_FIXTURES_DIR, parametrize_using_common_fixtures
SHOW_MORE = (143, 167)
@ -32,21 +33,61 @@ pytestmark = [pytest.mark.altcoin, pytest.mark.ethereum]
def test_ethereum_sign_typed_data(client: Client, parameters, result):
with client:
address_n = parse_path(parameters["path"])
encoded_network_slip44 = UH_(address_n[1])
if "definitions" in parameters:
encoded_network_slip44 = parameters["definitions"].get(
"slip44", encoded_network_slip44
)
encoded_network = ethereum.network_definition_from_dir(
path=COMMON_FIXTURES_DIR / "ethereum" / "definitions-latest",
slip44=encoded_network_slip44,
)
ret = ethereum.sign_typed_data(
client,
address_n,
parameters["data"],
metamask_v4_compat=parameters["metamask_v4_compat"],
encoded_network=encoded_network,
)
assert ret.address == result["address"]
assert f"0x{ret.signature.hex()}" == result["sig"]
@pytest.mark.skip_t1
def test_ethereum_sign_typed_data_missing_extern_definitions(client: Client):
path = "m/44'/6060'/0'/0/0" # GoChain
with pytest.raises(TrezorFailure, match=r"DataError: Forbidden key path"):
ethereum.sign_typed_data(
client,
parse_path(path),
{
"types": {"EIP712Domain": []},
"primaryType": "EIP712Domain",
"message": {},
"domain": {},
},
metamask_v4_compat=True,
encoded_network=None,
)
@pytest.mark.skip_t2
@parametrize_using_common_fixtures("ethereum/sign_typed_data.json")
def test_ethereum_sign_typed_data_blind(client: Client, parameters, result):
with client:
address_n = parse_path(parameters["path"])
encoded_network_slip44 = UH_(address_n[1])
if "definitions" in parameters:
encoded_network_slip44 = parameters["definitions"].get(
"slip44", encoded_network_slip44
)
encoded_network = ethereum.network_definition_from_dir(
path=COMMON_FIXTURES_DIR / "ethereum" / "definitions-latest",
slip44=encoded_network_slip44,
)
ret = ethereum.sign_typed_data_hash(
client,
address_n,
@ -55,11 +96,28 @@ def test_ethereum_sign_typed_data_blind(client: Client, parameters, result):
ethereum.decode_hex(parameters["message_hash"])
if parameters["message_hash"]
else None,
encoded_network=encoded_network,
)
assert ret.address == result["address"]
assert f"0x{ret.signature.hex()}" == result["sig"]
@pytest.mark.skip_t2
def test_ethereum_sign_typed_data_blind_missing_extern_definitions(client: Client):
path = "m/44'/6060'/0'/0/0" # GoChain
with pytest.raises(TrezorFailure, match=r"DataError:.*Forbidden key path"):
ethereum.sign_typed_data_hash(
client,
parse_path(path),
ethereum.decode_hex(
"0x6192106f129ce05c9075d319c1fa6ea9b3ae37cbd0c1ef92e2be7137bb07baa1"
),
None,
encoded_network=None,
)
# Being the same as the first object in ethereum/sign_typed_data.json
DATA = {
"types": {

View File

@ -18,22 +18,41 @@ import pytest
from trezorlib import ethereum
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.tools import parse_path
from trezorlib.exceptions import TrezorFailure
from trezorlib.tools import UH_, parse_path
from ...common import parametrize_using_common_fixtures
from ...common import COMMON_FIXTURES_DIR, parametrize_using_common_fixtures
pytestmark = [pytest.mark.altcoin, pytest.mark.ethereum]
@parametrize_using_common_fixtures("ethereum/signmessage.json")
def test_signmessage(client: Client, parameters, result):
res = ethereum.sign_message(
client, parse_path(parameters["path"]), parameters["msg"]
address_n = parse_path(parameters["path"])
encoded_network_slip44 = UH_(address_n[1])
if "definitions" in parameters:
encoded_network_slip44 = parameters["definitions"].get(
"slip44", encoded_network_slip44
)
encoded_network = ethereum.network_definition_from_dir(
path=COMMON_FIXTURES_DIR / "ethereum" / "definitions-latest",
slip44=encoded_network_slip44,
)
res = ethereum.sign_message(client, address_n, parameters["msg"], encoded_network)
assert res.address == result["address"]
assert res.signature.hex() == result["sig"]
def test_signmessage_missing_extern_definitions(client: Client):
path = "m/44'/6060'/0'/0/0" # GoChain
address_n = parse_path(path)
msg = "This is an example of a signed message."
with pytest.raises(TrezorFailure, match=r"DataError:.*Forbidden key path"):
ethereum.sign_message(client, address_n, msg, encoded_network=None)
@parametrize_using_common_fixtures("ethereum/verifymessage.json")
def test_verify(client: Client, parameters, result):
res = ethereum.verify_message(

View File

@ -14,7 +14,7 @@
# You should have received a copy of the License along with this library.
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
from typing import Optional
from functools import partial
import pytest
@ -34,32 +34,35 @@ pytestmark = [pytest.mark.altcoin, pytest.mark.ethereum]
def get_EthereumEncodedDefinitions(
parameters: dict,
) -> Optional[messages.EthereumEncodedDefinitions]:
encoded_network = None
encoded_token = None
if not parameters.get("builtin_network", True):
encoded_network = ethereum.network_definition_from_dir(
path=COMMON_FIXTURES_DIR / "ethereum" / "definitions-latest",
chain_id=parameters["chain_id"],
)
if not parameters.get("builtin_token", True):
encoded_token = ethereum.token_definition_from_dir(
path=COMMON_FIXTURES_DIR / "ethereum" / "definitions-latest",
chain_id=parameters["chain_id"],
token_address=parameters["to_address"],
)
) -> messages.EthereumEncodedDefinitions:
chain_id = parameters["chain_id"]
token_chain_id = parameters["chain_id"]
token_address = parameters["to_address"]
if encoded_network is not None or encoded_token is not None:
return messages.EthereumEncodedDefinitions(
encoded_network=encoded_network, encoded_token=encoded_token
)
if "definitions" in parameters:
chain_id = parameters["definitions"].get("chain_id", chain_id)
token_chain_id = parameters["definitions"].get("token_chain_id", token_chain_id)
token_address = parameters["definitions"].get("to_address", token_address)
return None
encoded_network = ethereum.network_definition_from_dir(
path=COMMON_FIXTURES_DIR / "ethereum" / "definitions-latest",
chain_id=chain_id,
)
encoded_token = ethereum.token_definition_from_dir(
path=COMMON_FIXTURES_DIR / "ethereum" / "definitions-latest",
chain_id=token_chain_id,
token_address=token_address,
)
return messages.EthereumEncodedDefinitions(
encoded_network=encoded_network, encoded_token=encoded_token
)
@parametrize_using_common_fixtures(
"ethereum/sign_tx.json",
"ethereum/sign_tx_eip155.json",
"ethereum/sign_tx_definitions.json",
)
def test_signtx(client: Client, parameters, result):
with client:
@ -84,7 +87,93 @@ def test_signtx(client: Client, parameters, result):
assert sig_v == result["sig_v"]
@parametrize_using_common_fixtures("ethereum/sign_tx_eip1559.json")
def test_signtx_missing_extern_definitions(client: Client):
chain_id = 8 # Ubiq
to_address = "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6" # Sphere
sign_tx_call = partial(
ethereum.sign_tx,
client,
n=parse_path("m/44'/108'/0'/0/0"),
nonce=0,
gas_price=20,
gas_limit=20,
to=to_address,
chain_id=chain_id,
value=0,
data=b"a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
)
definitions_vector = [
get_EthereumEncodedDefinitions(
{
"chain_id": chain_id,
"to_address": to_address,
"definitions": {
"chain_id": -1,
},
}
), # missing network
get_EthereumEncodedDefinitions(
{
"chain_id": -1,
"to_address": "",
}
), # missing network and token
]
for definitions in definitions_vector:
with pytest.raises(TrezorFailure, match=r"DataError:.*Forbidden key path"):
sign_tx_call(definitions=definitions)
def test_signtx_wrong_extern_definitions(client: Client):
chain_id = 8 # Ubiq
to_address = "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6" # Sphere
sign_tx_call = partial(
ethereum.sign_tx,
client,
n=parse_path("m/44'/108'/0'/0/0"),
nonce=0,
gas_price=20,
gas_limit=20,
to=to_address,
chain_id=chain_id,
value=0,
data=b"a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
)
definitions_vector = [
get_EthereumEncodedDefinitions(
{
"chain_id": chain_id,
"to_address": to_address,
"definitions": {
"chain_id": 1,
},
}
), # wrong network
get_EthereumEncodedDefinitions(
{
"chain_id": 1,
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
}
), # wrong network and token
]
for definitions in definitions_vector:
with pytest.raises(
TrezorFailure,
match=r"DataError:.*Invalid network definition - chain IDs not equal.",
):
sign_tx_call(definitions=definitions)
@parametrize_using_common_fixtures(
"ethereum/sign_tx_eip1559.json",
"ethereum/sign_tx_eip1559_definitions.json",
)
def test_signtx_eip1559(client: Client, parameters, result):
with client:
sig_v, sig_r, sig_s = ethereum.sign_tx_eip1559(
@ -106,6 +195,91 @@ def test_signtx_eip1559(client: Client, parameters, result):
assert sig_v == result["sig_v"]
def test_signtx_eip1559_missing_extern_definitions(client: Client):
chain_id = 8 # Ubiq
to_address = "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6" # Sphere
sign_tx_eip1559_call = partial(
ethereum.sign_tx_eip1559,
client,
n=parse_path("m/44'/108'/0'/0/0"),
nonce=0,
gas_limit=20,
max_gas_fee=20,
max_priority_fee=1,
to=to_address,
chain_id=chain_id,
value=0,
data=b"a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
)
definitions_vector = [
get_EthereumEncodedDefinitions(
{
"chain_id": chain_id,
"to_address": to_address,
"definitions": {
"chain_id": -1,
},
}
), # missing network
get_EthereumEncodedDefinitions(
{
"chain_id": -1,
"to_address": "",
}
), # missing network and token
]
for definitions in definitions_vector:
with pytest.raises(TrezorFailure, match=r"DataError:.*Forbidden key path"):
sign_tx_eip1559_call(definitions=definitions)
def test_signtx_eip1559_wrong_extern_definitions(client: Client):
chain_id = 8 # Ubiq
to_address = "0x20e3dd746ddf519b23ffbbb6da7a5d33ea6349d6" # Sphere
sign_tx_eip1559_call = partial(
ethereum.sign_tx_eip1559,
client,
n=parse_path("m/44'/108'/0'/0/0"),
nonce=0,
gas_limit=20,
max_gas_fee=20,
max_priority_fee=1,
to=to_address,
chain_id=chain_id,
value=0,
data=b"a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
)
definitions_vector = [
get_EthereumEncodedDefinitions(
{
"chain_id": chain_id,
"to_address": to_address,
"definitions": {
"chain_id": 1,
},
}
), # wrong network
get_EthereumEncodedDefinitions(
{
"chain_id": 1,
"to_address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd",
}
), # wrong network and token
]
for definitions in definitions_vector:
with pytest.raises(
TrezorFailure,
match=r"DataError:.*Invalid network definition - chain IDs not equal.",
):
sign_tx_eip1559_call(definitions=definitions)
def test_sanity_checks(client: Client):
"""Is not vectorized because these are internal-only tests that do not
need to be exposed to the public.

View File

@ -337,6 +337,8 @@
"T1_ethereum-test_getaddress.py::test_getaddress[GoChain]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2",
"T1_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2",
"T1_ethereum-test_getaddress.py::test_getaddress[Wanchain]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2",
"T1_ethereum-test_getaddress.py::test_getaddress[builtin_Ethereum_do_not_send_network]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2",
"T1_ethereum-test_getaddress.py::test_getaddress[builtin_Ethereum_send_wrong_network]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2",
"T1_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2",
"T1_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2",
"T1_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "37e446e17465ce9823c34c9162d94e4ad3c84faa86bae7966c753be5c5fd77a2",
@ -348,20 +350,28 @@
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[array_of_structs]": "04b94ca842aa77fdc6b75b07bbe178c4ea99c35e6dae630588fa5d9cb67b9090",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[bare_minimum]": "730a5d3bf1389ac14aec7ee9f65e2cbf516957e5077acc0e07a7541f667e2f0b",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[basic_data]": "fd99dc685a4a125db0f3f8d2a16ffa242bd57e4ff714d66cc9c4161c486f53be",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[builtin_Ethereum_do_n-06060e3d": "730a5d3bf1389ac14aec7ee9f65e2cbf516957e5077acc0e07a7541f667e2f0b",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[builtin_Ethereum_send-a187d8ad": "730a5d3bf1389ac14aec7ee9f65e2cbf516957e5077acc0e07a7541f667e2f0b",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[complex_data]": "24957177a20a1aacba25207e210ee3d97a9ca0b62b19e2fa9598d77bd27f3cde",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[extern_GoChain_send_network]": "a9d7f956d786b8d01d3b325caaf69c02816689622a29050ffd686fda8ed2aecd",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[full_domain_empty_message]": "68d748b8407f9d9005d293b5c6c122051f7376761c3628ea4968255ecbc1df39",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[injective_testcase]": "586a48367b619266abb0ddd39ae825156fcc1945ae01170e5f4ee7ba66c83360",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[struct_list_non_v4]": "eb17b48c8495ae235345920089c1662f5aa36fbb6e90f0c0c4b270c7bb2f2ea8",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[struct_list_v4]": "b0ce2ac7326df63ae12badf47a58db955fe2b17a327fcdc6eee1fd06375a25f7",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind[structs_arrays_v4]": "a38f3ef2571424b460cd7351cd7263c8fc19684041d57f32f5599588c89046bf",
"T1_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_blind_missing_extern_definitions": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[builtin_Ethereum_do_not_send_network]": "0f1e81d57996381781e8e3c5865875e6d48c29128d2de78f33556d96f29c2785",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[builtin_Ethereum_send_wrong_network]": "0f1e81d57996381781e8e3c5865875e6d48c29128d2de78f33556d96f29c2785",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[extern_GoChain_send_network]": "a72aad838b023cce57d15c42f0e55da11e30ca965e42cab2e5019d6636dde47d",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "0f1e81d57996381781e8e3c5865875e6d48c29128d2de78f33556d96f29c2785",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b56508b17391e12992ce21c04f0ae096ee9b2cd4e1dd2912e75b55a634158976",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "a8ec598be6255799e7f01e84343cc7e5e02d84cee5c3cb909457304390d6fc9b",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "c6e541efccc6d50fe6e2d590bd48c5d89fdd3defda6088d11c771827b48e2656",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "06a642eaad886c01421973efa714c59eb6da8e60d06fc44cc42a5f959ec3dd27",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "a6b54a1244c1c457de732c2d27371475c02e451a4820f283912a5e3c62fe2842",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "858c5f14ecf61cbc85acb7d11f85b65a88c3d14f2591f185e1925092a977a7d6",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "72795258943a821df0fca67a6e1d915883c414e5066cff8f93d4a5735c0ba45b",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters10-result10]": "72795258943a821df0fca67a6e1d915883c414e5066cff8f93d4a5735c0ba45b",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "b56508b17391e12992ce21c04f0ae096ee9b2cd4e1dd2912e75b55a634158976",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "a8ec598be6255799e7f01e84343cc7e5e02d84cee5c3cb909457304390d6fc9b",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "c6e541efccc6d50fe6e2d590bd48c5d89fdd3defda6088d11c771827b48e2656",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "06a642eaad886c01421973efa714c59eb6da8e60d06fc44cc42a5f959ec3dd27",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "a6b54a1244c1c457de732c2d27371475c02e451a4820f283912a5e3c62fe2842",
"T1_ethereum-test_sign_verify_message.py::test_signmessage[parameters9-result9]": "858c5f14ecf61cbc85acb7d11f85b65a88c3d14f2591f185e1925092a977a7d6",
"T1_ethereum-test_sign_verify_message.py::test_signmessage_missing_extern_definitions": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"T1_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "cdec0f79f2abbd90f4346494037f7bb4dd4dccc7c6739b497873d0c5603f2a26",
"T1_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "9e51345ff0d3736f81a5c169768f9a80c555187eef2db3046f5ad12262990466",
"T1_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "e2aff8a36dffd76b0e48256a5012ff191d0ce877a42cf31e1f25f7c3cd786d64",
@ -385,6 +395,18 @@
"T1_ethereum-test_signtx.py::test_signtx[Ropsten]": "05db6420b63ecf8b96c61ea206bbc10edeaab5408e72e16e984db2c799ccd778",
"T1_ethereum-test_signtx.py::test_signtx[Unknown_chain_id_eth_path]": "a6e6d63cba839c897e80dc0b7cf5c2263be8ff64a5281a43fca992380cca872b",
"T1_ethereum-test_signtx.py::test_signtx[Unknown_chain_id_testnet_path]": "a6e6d63cba839c897e80dc0b7cf5c2263be8ff64a5281a43fca992380cca872b",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_builtin_Tether_send_network]": "2ad8d58e1c04bfde465902c6edd2308a392a4afeffbeaf5e32e0ef22380acf75",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_builtin_Tether_send_network_token]": "2ad8d58e1c04bfde465902c6edd2308a392a4afeffbeaf5e32e0ef22380acf75",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_builtin_Tether_send_nothing]": "2ad8d58e1c04bfde465902c6edd2308a392a4afeffbeaf5e32e0ef22380acf75",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_builtin_Tether_send_token]": "2ad8d58e1c04bfde465902c6edd2308a392a4afeffbeaf5e32e0ef22380acf75",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_builtin_Tether_wrong_network]": "2ad8d58e1c04bfde465902c6edd2308a392a4afeffbeaf5e32e0ef22380acf75",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_builtin_Tether_wrong_network_token]": "2ad8d58e1c04bfde465902c6edd2308a392a4afeffbeaf5e32e0ef22380acf75",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_builtin_Tether_wrong_token]": "2ad8d58e1c04bfde465902c6edd2308a392a4afeffbeaf5e32e0ef22380acf75",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_extern_adChain_send_network]": "0143f7c4273964eb5eb8113c7e63674c033bebeca7ae619270b7ca77bb6aed66",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_extern_adChain_send_network_token]": "08e9da493a8ac1f4e7f05bbb8f7c2b2fd97481421899a170ac0ead26b0764a21",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_extern_adChain_send_nothing]": "0143f7c4273964eb5eb8113c7e63674c033bebeca7ae619270b7ca77bb6aed66",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_extern_adChain_send_token]": "08e9da493a8ac1f4e7f05bbb8f7c2b2fd97481421899a170ac0ead26b0764a21",
"T1_ethereum-test_signtx.py::test_signtx[builtin_Ethereum_extern_adChain_wrong_token]": "0143f7c4273964eb5eb8113c7e63674c033bebeca7ae619270b7ca77bb6aed66",
"T1_ethereum-test_signtx.py::test_signtx[data_1]": "8b432aba21bc4344814cceaf693e114b9d3e3d6ceb83c3a6af7c3ed0f9b37449",
"T1_ethereum-test_signtx.py::test_signtx[data_2_bigdata]": "445286b7501ca67dd16dafd7ea09c57cc4a37a642ae50f0c812d74353c37c017",
"T1_ethereum-test_signtx.py::test_signtx[known_erc20_token]": "7ef8d3bbf6e299b41522769a893f72b04571fc7176bc93e5c1701a2b5721fb20",