From d26afc5295fdfc3cf5ff51134d4db83f3ce89bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Benso?= Date: Tue, 5 Nov 2024 15:54:01 -0300 Subject: [PATCH] Fix blind signing and multiple transaction sending for legacy (#12) * fix behavior when blind signing is disabled * bump version * reset process chunk if an error occurs --- app/Makefile.version | 2 +- app/src/apdu_handler_legacy.c | 3 + deps/ledger-zxlib | 2 +- tests_zemu/snapshots/fl-mainmenu/00004.png | Bin 8846 -> 9029 bytes tests_zemu/snapshots/s-mainmenu/00005.png | Bin 403 -> 411 bytes tests_zemu/snapshots/s-mainmenu/00009.png | Bin 403 -> 411 bytes tests_zemu/snapshots/sp-mainmenu/00005.png | Bin 355 -> 368 bytes tests_zemu/snapshots/sp-mainmenu/00009.png | Bin 355 -> 368 bytes tests_zemu/snapshots/st-mainmenu/00004.png | Bin 10654 -> 10856 bytes tests_zemu/snapshots/x-mainmenu/00005.png | Bin 355 -> 368 bytes tests_zemu/snapshots/x-mainmenu/00009.png | Bin 355 -> 368 bytes tests_zemu/try.mjs | 61 +++++++++++++-------- tests_zemu/try_legacy.mjs | 54 +++++++++++------- 13 files changed, 79 insertions(+), 43 deletions(-) diff --git a/app/Makefile.version b/app/Makefile.version index caa358f..23ebb5d 100644 --- a/app/Makefile.version +++ b/app/Makefile.version @@ -3,4 +3,4 @@ APPVERSION_M=1 # This is the minor version APPVERSION_N=0 # This is the patch version -APPVERSION_P=1 +APPVERSION_P=2 diff --git a/app/src/apdu_handler_legacy.c b/app/src/apdu_handler_legacy.c index 665917c..9110a20 100644 --- a/app/src/apdu_handler_legacy.c +++ b/app/src/apdu_handler_legacy.c @@ -262,6 +262,7 @@ bool legacy_process_transfer_chunk(uint32_t rx) { offset += payload_size + 1; if (offset > rx) { + tx_initialized = false; THROW(APDU_CODE_DATA_INVALID); } @@ -281,10 +282,12 @@ bool legacy_process_transfer_chunk(uint32_t rx) { legacy_append_data(&G_io_apdu_buffer[offset], payload_size + 1); if (++items > LEGACY_TRANSFER_NUM_ITEMS) { + tx_initialized = false; THROW(APDU_CODE_DATA_INVALID); } if (next_offset >= rx && next_offset != LEGACY_FULL_CHUNK_SIZE) { + tx_initialized = false; if (items != LEGACY_TRANSFER_NUM_ITEMS) { THROW(APDU_CODE_DATA_INVALID); } diff --git a/deps/ledger-zxlib b/deps/ledger-zxlib index 3d4ec19..194acad 160000 --- a/deps/ledger-zxlib +++ b/deps/ledger-zxlib @@ -1 +1 @@ -Subproject commit 3d4ec19264fd20e9608b0c0432b08474d247917c +Subproject commit 194acadb2b092e728ec8af8c2e803a4dda0c7e9e diff --git a/tests_zemu/snapshots/fl-mainmenu/00004.png b/tests_zemu/snapshots/fl-mainmenu/00004.png index c847f5c6eb43367e83122aaad9f1b4ab599bc614..53d9391c8eea73c34822fa0852cbc23bf52db322 100644 GIT binary patch literal 9029 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 E2V(7L(*OVf literal 8846 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 diff --git a/tests_zemu/snapshots/s-mainmenu/00005.png b/tests_zemu/snapshots/s-mainmenu/00005.png index ba4c532db0953a30f2cb266371c783d55a6401d1..b9e335b6a3f0efd0d99c0279d20a01726dbd0ef9 100644 GIT binary patch delta 384 zcmV-`0e}9J1DgYoB!6N_L_t(|ob8#x62c%1L{rE9{|EO_4>~a=Bn0VDsQbo)ZIKSU zBtRqr008i>ES=u7Z$w1P`u)zA!C&2!$7OH6wXAWTym70m;$E0_w-ndq0t)j|T9whzA7q!?2#}*eDE0o>j#GDDu`*DOSG= zl0_K(RJI9Xm3cgiC7pOxbzmCK0jG@L3NowmqZ>G#%s|^gEI9JySj3kt!m&4#Q*VH! zrh}ZPa^~Je#1^hAMV!L?f0@l}z|5(i>19B+fT1ZSG^=tqEwNfq|3SWY&CW*4|N9I8 e00000jLi!lx4XjUKga(70000qR2N6<)eaMph5F*9My1MUhzKv8}O%k7ysOM#70 z2r4}fp?;d=O-~uXOKoC6eLMQ@Cqneq0NiJ>0YQB;tfxvFg#o<2B0m6GPCb=k<+mVN zgwefnjFDK$({WPLd49RHArG)ul`WG5+tVeTB?4euB4(7pON;oiMZqQ1ry2vq)J!0E zu?!l#!7FHacP7S_A^;J=0K@5JfM5YblMQIksj?Zd)q?s*+w<0Z%S8(S00000%*O|u WP_x22ovqUV0000~a=Bn0VDsQbo)ZIKSU zBtRqr008i>ES=u7Z$w1P`u)zA!C&2!$7OH6wXAWTym70m;$E0_w-ndq0t)j|T9whzA7q!?2#}*eDE0o>j#GDDu`*DOSG= zl0_K(RJI9Xm3cgiC7pOxbzmCK0jG@L3NowmqZ>G#%s|^gEI9JySj3kt!m&4#Q*VH! zrh}ZPa^~Je#1^hAMV!L?f0@l}z|5(i>19B+fT1ZSG^=tqEwNfq|3SWY&CW*4|N9I8 e00000jLi!lx4XjUKga(70000qR2N6<)eaMph5F*9My1MUhzKv8}O%k7ysOM#70 z2r4}fp?;d=O-~uXOKoC6eLMQ@Cqneq0NiJ>0YQB;tfxvFg#o<2B0m6GPCb=k<+mVN zgwefnjFDK$({WPLd49RHArG)ul`WG5+tVeTB?4euB4(7pON;oiMZqQ1ry2vq)J!0E zu?!l#!7FHacP7S_A^;J=0K@5JfM5YblMQIksj?Zd)q?s*+w<0Z%S8(S00000%*O|u WP_x22ovqUV0000K{r`Q5=tj%n z6@6(82=G9t|E79Enpm>QW&x+FIrI4Tz1}x(v;Ts3?>6>TpS5e8`(}~f>Vw}@KOSGr zemRLtF~xh8>2nwq<(RLjBFc{`d3tGW`iZv-V)* jU-jj;l~@t}XYj6K<}|zNu)}q$CP>uN)z4*}Q$iB}=lz`5 delta 328 zcmeys^q6UaO1+k+i(^Q|oVPb)g_;a_+%CS@G5KA+=iP4pp1Bw7x%gCCtLKSm8^vcd zXfZJ$fZxYWb_{|OB^GzI2wZyorR+oW=c;IVhr4e!_Wh2KKj2jswEU*R>q#%(UhT~^ zY8BX|dG*$EQFr47IhqgMLkg~*n`}0%dGo}pwNmw;Oqo+;BP9d=-;w9M;{0OPVx|{m zioM#OpUM4V=6mxwr!Q&(k4tdx4QFk89sP#MpOs7(NhFtfTvd8`aQ4^N{gzjcy|?oG ze{YuJ^@kaU0hL#=Wnu|W`s@K?Z>TlZfFY^2M z{}bM9WT*;U5#xAnk7PeK{r`Q5=tj%n z6@6(82=G9t|E79Enpm>QW&x+FIrI4Tz1}x(v;Ts3?>6>TpS5e8`(}~f>Vw}@KOSGr zemRLtF~xh8>2nwq<(RLjBFc{`d3tGW`iZv-V)* jU-jj;l~@t}XYj6K<}|zNu)}q$CP>uN)z4*}Q$iB}=lz`5 delta 328 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 literal 10654 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.lc0572aa8G9JP}`F}Wz`_b)1Krp?Ps`r{%i2-&G1g==aC>A(=%k`21 z;_WdoL}O82CxygsKIim0Gc4Tu0F>mj*;XS_*$tdpPp`DmSp0o2-X;e)*tv61z!%Z1 zT)jtgLad}OsRrNFWt?Z5Zhq|F#`x;b1Dv2Ns3V~jYa$^MuSCULDgH&`XHBFD-V65* z_eFFhh+BH_agSDarF`iG9#(CW(-q-x<1nzW=kB@A;42#EJ@^V%g>{*=z6ju-Xv8>p zH=9<70IU5Brj)avI3|$zTUZ@F0|tHpk1M54U#{d8T diff --git a/tests_zemu/snapshots/x-mainmenu/00005.png b/tests_zemu/snapshots/x-mainmenu/00005.png index e44cb3afaecd60af7de2eac67bd858e78c20dd2e..7e722188f1e53b8c5b23bfee5779371f6c9a1add 100644 GIT binary patch delta 341 zcmaFN^nq!DO1-(Ki(^Q|oVPcl`3@-vv_8DJL-^Z%m2Z!nm1h=dE{U>K{r`Q5=tj%n z6@6(82=G9t|E79Enpm>QW&x+FIrI4Tz1}x(v;Ts3?>6>TpS5e8`(}~f>Vw}@KOSGr zemRLtF~xh8>2nwq<(RLjBFc{`d3tGW`iZv-V)* jU-jj;l~@t}XYj6K<}|zNu)}q$CP>uN)z4*}Q$iB}=lz`5 delta 328 zcmeys^q6UaO1+k+i(^Q|oVPb)g_;a_+%CS@G5KA+=iP4pp1Bw7x%gCCtLKSm8^vcd zXfZJ$fZxYWb_{|OB^GzI2wZyorR+oW=c;IVhr4e!_Wh2KKj2jswEU*R>q#%(UhT~^ zY8BX|dG*$EQFr47IhqgMLkg~*n`}0%dGo}pwNmw;Oqo+;BP9d=-;w9M;{0OPVx|{m zioM#OpUM4V=6mxwr!Q&(k4tdx4QFk89sP#MpOs7(NhFtfTvd8`aQ4^N{gzjcy|?oG ze{YuJ^@kaU0hL#=Wnu|W`s@K?Z>TlZfFY^2M z{}bM9WT*;U5#xAnk7PeK{r`Q5=tj%n z6@6(82=G9t|E79Enpm>QW&x+FIrI4Tz1}x(v;Ts3?>6>TpS5e8`(}~f>Vw}@KOSGr zemRLtF~xh8>2nwq<(RLjBFc{`d3tGW`iZv-V)* jU-jj;l~@t}XYj6K<}|zNu)}q$CP>uN)z4*}Q$iB}=lz`5 delta 328 zcmeys^q6UaO1+k+i(^Q|oVPb)g_;a_+%CS@G5KA+=iP4pp1Bw7x%gCCtLKSm8^vcd zXfZJ$fZxYWb_{|OB^GzI2wZyorR+oW=c;IVhr4e!_Wh2KKj2jswEU*R>q#%(UhT~^ zY8BX|dG*$EQFr47IhqgMLkg~*n`}0%dGo}pwNmw;Oqo+;BP9d=-;w9M;{0OPVx|{m zioM#OpUM4V=6mxwr!Q&(k4tdx4QFk89sP#MpOs7(NhFtfTvd8`aQ4^N{gzjcy|?oG ze{YuJ^@kaU0hL#=Wnu|W`s@K?Z>TlZfFY^2M z{}bM9WT*;U5#xAnk7Pe { diff --git a/tests_zemu/try_legacy.mjs b/tests_zemu/try_legacy.mjs index 31c4bf8..5b18e54 100644 --- a/tests_zemu/try_legacy.mjs +++ b/tests_zemu/try_legacy.mjs @@ -48,26 +48,38 @@ async function main() { '{"networkId":"mainnet01","payload":{"exec":{"data":{"ks":{"pred":"keys-all","keys":["368820f80c324bbc7c2b0610688a7da43e39f91d118732671cd9c7500ff43cca"]}},"code":"(coin.transfer-create \\"alice\\" \\"bob\\" (read-keyset \\"ks\\") 100.1)\\n(coin.transfer \\"bob\\" \\"alice\\" 0.1)"}},"signers":[{"pubKey":"6be2f485a7af75fedb4b7f153a903f7e6000ca4aa501179c91a2450b777bd2a7","clist":[{"args":["alice","bob",100.1],"name":"coin.TRANSFER"},{"args":[],"name":"coin.GAS"}]},{"pubKey":"368820f80c324bbc7c2b0610688a7da43e39f91d118732671cd9c7500ff43cca","clist":[{"args":["bob","alice",0.1],"name":"coin.TRANSFER"}]}],"meta":{"creationTime":1580316382,"ttl":7200,"gasLimit":1200,"chainId":"0","gasPrice":1.0e-5,"sender":"alice"},"nonce":"2020-01-29 16:46:22.916695 UTC"}' let messageToSign = Buffer.from(blob) console.log(messageToSign.toString()) - let signatureRequest = app.signTransaction(PATH, messageToSign) - let signatureResponse = await signatureRequest - console.log(signatureResponse.signature.toString('hex')) + let signatureRequest + let signatureResponse + try { + signatureRequest = app.signTransaction(PATH, messageToSign) - await verifySignature(signatureResponse.signature, messageToSign, publicKey) + signatureResponse = await signatureRequest + console.log(signatureResponse.signature.toString('hex')) + + await verifySignature(signatureResponse.signature, messageToSign, publicKey) + } catch (e) { + console.log(e) + } // Sign a hash console.log('Signing a hash') messageToSign = 'ffd8cd79deb956fa3c7d9be0f836f20ac84b140168a087a842be4760e40e2b1c' console.log(messageToSign.toString()) - signatureRequest = app.signHash(PATH, messageToSign) - signatureResponse = await signatureRequest - console.log(messageToSign.toString()) - console.log(signatureResponse.signature.toString('hex')) + try { + signatureRequest = app.signHash(PATH, messageToSign) - await verifySignature(signatureResponse.signature, messageToSign, publicKey, false) + signatureResponse = await signatureRequest + console.log(messageToSign.toString()) + console.log(signatureResponse.signature.toString('hex')) + + await verifySignature(signatureResponse.signature, messageToSign, publicKey, false) + } catch (e) { + console.log(e) + } - // Sign a hash + // Sign a transfer console.log('Signing a transfer') const txParams = { path: PATH, @@ -82,19 +94,23 @@ async function main() { nonce: '2022-10-13 07:56:50.893257 UTC', } - signatureRequest = app['signTransferTx'](txParams) - signatureResponse = await signatureRequest + try { + signatureRequest = app['signTransferTx'](txParams) + signatureResponse = await signatureRequest - // Convert hex string signature to Uint8Array - const signatureHex = signatureResponse.pact_command.sigs[0].sig - const signatureBytes = new Uint8Array(Buffer.from(signatureHex, 'hex')) + // Convert hex string signature to Uint8Array + const signatureHex = signatureResponse.pact_command.sigs[0].sig + const signatureBytes = new Uint8Array(Buffer.from(signatureHex, 'hex')) - const hashBytes = decodeHash(signatureResponse.pact_command.hash) + const hashBytes = decodeHash(signatureResponse.pact_command.hash) - console.log(signatureResponse.pact_command.sigs[0].sig.toString('hex')) - console.log(hashBytes.toString('hex')) + console.log(signatureResponse.pact_command.sigs[0].sig.toString('hex')) + console.log(hashBytes.toString('hex')) - await verifySignature(signatureBytes, hashBytes, publicKey, false) + await verifySignature(signatureBytes, hashBytes, publicKey, false) + } catch (e) { + console.log(e) + } } ;(async () => {