From b3d09526984d9c5629f23ea186ffc17f85842aab Mon Sep 17 00:00:00 2001 From: keiff3r Date: Thu, 7 Nov 2024 17:30:02 +0100 Subject: [PATCH 1/6] fix: initialise DEBUG properly --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 21b3749b..47222c3a 100644 --- a/Makefile +++ b/Makefile @@ -163,7 +163,8 @@ DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300 # DEFINES += HAVE_PRINT_STACK_POINTER -DEBUG = 0 # 0 for production, 1 for debug +# 0 for production, 1 for debug +DEBUG = 1 ifeq ($(DEBUG),10) $(warning Using semihosted PRINTF. Only run with speculos!) DEFINES += HAVE_PRINTF HAVE_SEMIHOSTED_PRINTF PRINTF=semihosted_printf From a28051a37cac2a8330b03711dcdd45a2cb02663a Mon Sep 17 00:00:00 2001 From: keiff3r Date: Thu, 14 Nov 2024 12:21:56 +0100 Subject: [PATCH 2/6] fix(handler/withdraw): Correct `compute_tx_hash` 's implementation - Replace hardcoded `domain_separator_hash` with `abi_encoded_chain_id` for mainnet and testnet variants. - Add `domain_separator_typehash`. - Add function `compute_domain_separator_hash` - Update `compute_tx_hash` to include domain separator hash computation. --- src/handler/withdraw.c | 79 +++++++++++++++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 12 deletions(-) diff --git a/src/handler/withdraw.c b/src/handler/withdraw.c index 48fe73ed..80d9ba24 100644 --- a/src/handler/withdraw.c +++ b/src/handler/withdraw.c @@ -60,18 +60,22 @@ static unsigned char const BSM_SIGN_MAGIC[] = {'\x18', 'B', 'i', 't', 'c', 'o', #error "COIN_VARIANT is not defined" #elif COIN_VARIANT == COIN_VARIANT_ACRE // Mainnet hash -static const uint8_t domain_separator_hash[32] = { - 0xc4, 0x86, 0x40, 0x56, 0xe2, 0x10, 0x22, 0x91, 0x3a, 0x49, 0x88, 0x4b, 0xa9, 0xfb, 0x40, 0x35, - 0x36, 0x4d, 0x5c, 0x2a, 0xb8, 0xb4, 0x0f, 0x03, 0x05, 0x58, 0x3a, 0xe4, 0x19, 0xc7, 0x2f, 0x86}; +static const uint8_t abi_encoded_chain_id[32] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}; #elif COIN_VARIANT == COIN_VARIANT_ACRE_TESTNET // Testnet hash -static const uint8_t domain_separator_hash[32] = { - 0x19, 0x2e, 0xfd, 0x34, 0x00, 0xda, 0x07, 0xca, 0xf5, 0xbd, 0x41, 0x8f, 0xdd, 0xfc, 0x07, 0x7a, - 0x97, 0x88, 0x1b, 0x26, 0xb7, 0xca, 0x63, 0x8d, 0xda, 0x2d, 0x52, 0x3f, 0xde, 0xf4, 0xf8, 0x4c}; +static const uint8_t abi_encoded_chain_id[32] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x05, 0x77}; #else #error "Unsupported COIN_VARIANT value" #endif +static const uint8_t domain_separator_typehash[32] = { + 0x47, 0xe7, 0x95, 0x34, 0xa2, 0x45, 0x95, 0x2e, 0x8b, 0x16, 0x89, 0x3a, 0x33, 0x6b, 0x85, 0xa3, + 0xd9, 0xea, 0x9f, 0xa8, 0xc5, 0x73, 0xf3, 0xd8, 0x03, 0xaf, 0xb9, 0x2a, 0x79, 0x46, 0x92, 0x18}; + static const uint8_t safe_tx_typehash[32] = { 0xbb, 0x83, 0x10, 0xd4, 0x86, 0x36, 0x8d, 0xb6, 0xbd, 0x6f, 0x84, 0x94, 0x02, 0xfd, 0xd7, 0x3a, 0xd5, 0x3d, 0x31, 0x6b, 0x5a, 0x4b, 0x26, 0x44, 0xad, 0x6e, 0xfe, 0x0f, 0x94, 0x12, 0x86, 0xd8}; @@ -427,11 +431,11 @@ void fetch_and_hash_tx_data(dispatcher_context_t* dc, } // Finalize the hash and store the result in output_hash CX_THROW(cx_hash_no_throw((cx_hash_t*) hash_context, - CX_LAST, // final block mode - NULL, // no more input - 0, // no more input length - output_buffer, // output hash buffer - 32)); // output hash length (32 bytes) + CX_LAST, // final block mode + NULL, // no more input + 0, // no more input length + output_buffer, // output hash buffer + KECCAK_256_HASH_SIZE)); // output hash length (32 bytes) } /** @@ -514,6 +518,55 @@ bool fetch_and_abi_encode_tx_fields(dispatcher_context_t* dc, return true; } +/** + * @brief Computes the domain separator hash according to EIP-712 specification. + * + * This function computes the domain separator hash by combining and hashing: + * 1. The ABI-encoded EIP-712 domain separator typehash + * 2. The ABI-encoded chain ID + * 3. The ABI-encoded verifying contract address + * + * The function follows the EIP-712 specification for structured data hashing + * and signing. The computed hash is used as part of the transaction signing + * process. + * + * @param dc Pointer to the dispatcher context used for operations + * @param data_merkle_root Pointer to the Merkle root of the transaction data + * @param n_chunks Number of chunks in the Merkle tree + * @param output_buffer Buffer to store the computed domain separator hash (32 bytes) + */ +void compute_domain_separator_hash(dispatcher_context_t* dc, + uint8_t* data_merkle_root, + size_t n_chunks, + uint8_t* output_buffer) { + cx_sha3_t hash_context; + CX_THROW(cx_keccak_init_no_throw(&hash_context, 256)); + // Add the EIP712 domain separator typehash to the hash context (it is already abi-encoded) + CX_THROW(cx_hash_no_throw((cx_hash_t*) &hash_context, + 0, + domain_separator_typehash, + sizeof(domain_separator_typehash), + NULL, + 0)); + + // add the abi encoded chainId to the hash context + CX_THROW(cx_hash_no_throw((cx_hash_t*) &hash_context, + 0, + abi_encoded_chain_id, + sizeof(abi_encoded_chain_id), + NULL, + 0)); + // Add the verifying contract address to the hash context (it is already abi-encoded) + fetch_and_add_chunk_to_hash(dc, data_merkle_root, n_chunks, &hash_context, 7, 0, 32); + // Compute the final hash + CX_THROW(cx_hash_no_throw((cx_hash_t*) &hash_context, + CX_LAST, + NULL, + 0, + output_buffer, + KECCAK_256_HASH_SIZE)); +} + /** * @brief Computes the transaction hash using Keccak-256. * @@ -562,7 +615,9 @@ void compute_tx_hash(dispatcher_context_t* dc, sizeof(abi_encoded_tx_fields), keccak_of_abi_encoded_tx_fields, sizeof(keccak_of_abi_encoded_tx_fields))); - + // Compute domain_separator_hash + uint8_t domain_separator_hash[KECCAK_256_HASH_SIZE]; + compute_domain_separator_hash(dc, data_merkle_root, n_chunks, domain_separator_hash); // Abi.encodePacked // 2 bytes (0x1901) + 2 keccak256 hashes u_int8_t abi_encode_packed[2 + (KECCAK_256_HASH_SIZE * 2)] = {0x19, 0x01}; From 0ec4af66d0d0011d6d88767d25d5558a6012bf6c Mon Sep 17 00:00:00 2001 From: keiff3r Date: Thu, 14 Nov 2024 12:28:51 +0100 Subject: [PATCH 3/6] chore: bump version --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 47222c3a..ba3f8fa5 100644 --- a/Makefile +++ b/Makefile @@ -47,7 +47,7 @@ PATH_APP_LOAD_PARAMS = "" # Application version APPVERSION_M = 1 APPVERSION_N = 1 -APPVERSION_P = 3 +APPVERSION_P = 4 APPVERSION_SUFFIX = # if not empty, appended at the end. Do not add a dash. ifeq ($(APPVERSION_SUFFIX),) From 7677568dd8c61deeb32ef890d86942238304105a Mon Sep 17 00:00:00 2001 From: keiff3r Date: Thu, 14 Nov 2024 12:30:15 +0100 Subject: [PATCH 4/6] fix: disable DEBUG in Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ba3f8fa5..870e1ba2 100644 --- a/Makefile +++ b/Makefile @@ -164,7 +164,7 @@ DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300 # DEFINES += HAVE_PRINT_STACK_POINTER # 0 for production, 1 for debug -DEBUG = 1 +DEBUG = 0 ifeq ($(DEBUG),10) $(warning Using semihosted PRINTF. Only run with speculos!) DEFINES += HAVE_PRINTF HAVE_SEMIHOSTED_PRINTF PRINTF=semihosted_printf From 5e695518c5d85aec4b1a6a75c3f848ac45bb121c Mon Sep 17 00:00:00 2001 From: keiff3r Date: Thu, 14 Nov 2024 12:42:45 +0100 Subject: [PATCH 5/6] test: generate golden snapshots --- tests/snapshots/flex/test_dashboard/00001.png | Bin 10856 -> 10748 bytes .../snapshots/nanosp/test_dashboard/00001.png | Bin 345 -> 347 bytes .../snapshots/nanox/test_dashboard/00001.png | Bin 345 -> 347 bytes tests/snapshots/stax/test_dashboard/00001.png | Bin 9794 -> 9695 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/snapshots/flex/test_dashboard/00001.png b/tests/snapshots/flex/test_dashboard/00001.png index 9e956a2a0bc558d03abdf2dcf9b972d48dc93975..c3851fb52e052acfd8f85a41e04b299280a0aed1 100644 GIT binary patch delta 7266 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 P=woGZ{c_zUw@3d6qzA(e delta 7962 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 diff --git a/tests/snapshots/nanosp/test_dashboard/00001.png b/tests/snapshots/nanosp/test_dashboard/00001.png index 1840594b2c3bf1ff23e14b90bc3697c54b84aef5..6a2052be7177a6188042df26f1a7c12e1e013945 100644 GIT binary patch delta 320 zcmcb~bem~{O1+Y&i(^Q|oVPb(`I;33+yXC^sK2TA+&tZGf}aLgM7@>qw|VM|6Hb_S zBzZ9)z=LHjE-urKv*(K*ytIbyKDP`QxmLT7*{Q5 zZ@Rly{lc`xS5CHlU!}6s|2@~y6(P;{&-@bpR_;(AHK{6;?-AeCO}b&V`3tt+G5*cO z)1$2I_0;&juiW+pe*?dLoBwOc?N3u!4Jvz2zZ7BrbV+7ubam(VsI@sqcHi;-(zQ!* z^1n=}z{&qku4q&(Q}niJ*S-4jp3k$w6AwZ+U4QZ_|NO0>DQABdT?qN|@yz4t8_XgO zU5~iC?mz3<58rsr_iQ`pcSx*7Q{=#nD%KmDWuM9~wP8khl;KCT|5l5AReSiiodt<{ My85}Sb4q9e0EeWTN&o-= diff --git a/tests/snapshots/nanox/test_dashboard/00001.png b/tests/snapshots/nanox/test_dashboard/00001.png index 1840594b2c3bf1ff23e14b90bc3697c54b84aef5..6a2052be7177a6188042df26f1a7c12e1e013945 100644 GIT binary patch delta 320 zcmcb~bem~{O1+Y&i(^Q|oVPb(`I;33+yXC^sK2TA+&tZGf}aLgM7@>qw|VM|6Hb_S zBzZ9)z=LHjE-urKv*(K*ytIbyKDP`QxmLT7*{Q5 zZ@Rly{lc`xS5CHlU!}6s|2@~y6(P;{&-@bpR_;(AHK{6;?-AeCO}b&V`3tt+G5*cO z)1$2I_0;&juiW+pe*?dLoBwOc?N3u!4Jvz2zZ7BrbV+7ubam(VsI@sqcHi;-(zQ!* z^1n=}z{&qku4q&(Q}niJ*S-4jp3k$w6AwZ+U4QZ_|NO0>DQABdT?qN|@yz4t8_XgO zU5~iC?mz3<58rsr_iQ`pcSx*7Q{=#nD%KmDWuM9~wP8khl;KCT|5l5AReSiiodt<{ My85}Sb4q9e0EeWTN&o-= diff --git a/tests/snapshots/stax/test_dashboard/00001.png b/tests/snapshots/stax/test_dashboard/00001.png index f13843f4f4f9f9d3fb7dd40ed94b769417a9fa52..280404f9227c202e5181b04738c075802bcdf69b 100644 GIT binary patch delta 7289 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 delta 7350 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 From 3b072b142a6a4f96f39bf6729c6d37deda583bc4 Mon Sep 17 00:00:00 2001 From: keiff3r Date: Thu, 14 Nov 2024 13:38:13 +0100 Subject: [PATCH 6/6] fix: correct expected signature --- tests/test_sign_withdraw.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_sign_withdraw.py b/tests/test_sign_withdraw.py index 1779d144..abedd61a 100644 --- a/tests/test_sign_withdraw.py +++ b/tests/test_sign_withdraw.py @@ -9,7 +9,7 @@ from ledger_bitcoin.withdraw import AcreWithdrawalData from .instructions import withdrawal_instruction_approve, withdrawal_instruction_reject - +# def test_sign_withdraw(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): data = AcreWithdrawalData( to= "0xc14972DC5a4443E4f5e89E3655BE48Ee95A795aB", @@ -22,12 +22,12 @@ def test_sign_withdraw(navigator: Navigator, firmware: Firmware, client: RaggerC gasToken= "0x0000000000000000000000000000000000000000", refundReceiver= "0x0000000000000000000000000000000000000000", nonce= "0x8", - ) + ) # tx_hash: 0xed3a7a50496ccca6173ddd9a1ad786d61ea737b70541887ab2c2fadcbe36eeaf path = "m/44'/0'/0'/0/0" result = client.sign_withdraw(data, path, navigator, instructions=withdrawal_instruction_approve(firmware), testname=test_name) - assert result == "H7C63V1KXzqImWjq6Bwy64m1cmdue4lFHEcdo9D4iHOKcKa9ddY7aTeCdq0n/31djYwv486DzZaHaOgtDuNuwZc=" + assert result == "IEZDsLh2JweulEOzl2dgLrYvtIqWUW8gFeYdMLAYSk7PeH72uN0JQJGVCYZSpJ5HYRaKZrmSBiG3Ypl+oelXEAM=" def test_sign_withdraw_wrong_address(navigator: Navigator, firmware: Firmware, client: RaggerClient, test_name: str): data = AcreWithdrawalData(