From 7298f0b315d9b27c0dfb46460b73fd5fa0ff6a7a Mon Sep 17 00:00:00 2001 From: abenso Date: Mon, 2 Sep 2024 17:43:43 -0300 Subject: [PATCH] wip --- app/src/apdu_handler_legacy.c | 9 +- tests_zemu/snapshots/sp-sign_hash_1/00000.png | Bin 0 -> 439 bytes tests_zemu/snapshots/sp-sign_hash_1/00001.png | Bin 0 -> 765 bytes tests_zemu/snapshots/sp-sign_hash_1/00002.png | Bin 0 -> 777 bytes tests_zemu/snapshots/sp-sign_hash_1/00003.png | Bin 0 -> 439 bytes tests_zemu/snapshots/sp-sign_hash_1/00004.png | Bin 0 -> 891 bytes tests_zemu/snapshots/sp-sign_hash_1/00005.png | Bin 0 -> 1007 bytes tests_zemu/snapshots/sp-sign_hash_1/00006.png | Bin 0 -> 587 bytes tests_zemu/snapshots/sp-sign_hash_1/00007.png | Bin 0 -> 355 bytes .../00017.png => sp-sign_hash_1/00008.png} | Bin tests_zemu/snapshots/sp-sign_hash_2/00000.png | Bin 0 -> 439 bytes tests_zemu/snapshots/sp-sign_hash_2/00001.png | Bin 0 -> 765 bytes tests_zemu/snapshots/sp-sign_hash_2/00002.png | Bin 0 -> 777 bytes tests_zemu/snapshots/sp-sign_hash_2/00003.png | Bin 0 -> 439 bytes tests_zemu/snapshots/sp-sign_hash_2/00004.png | Bin 0 -> 891 bytes tests_zemu/snapshots/sp-sign_hash_2/00005.png | Bin 0 -> 1007 bytes tests_zemu/snapshots/sp-sign_hash_2/00006.png | Bin 0 -> 587 bytes tests_zemu/snapshots/sp-sign_hash_2/00007.png | Bin 0 -> 355 bytes .../00017.png => sp-sign_hash_2/00008.png} | Bin .../sp-sign_simple_transfer/00000.png | Bin 0 -> 439 bytes .../sp-sign_simple_transfer/00001.png | Bin 0 -> 406 bytes .../sp-sign_simple_transfer/00002.png | Bin 0 -> 413 bytes .../sp-sign_simple_transfer/00003.png | Bin 0 -> 442 bytes .../sp-sign_simple_transfer/00004.png | Bin 0 -> 909 bytes .../sp-sign_simple_transfer/00005.png | Bin 0 -> 459 bytes .../sp-sign_simple_transfer/00006.png | Bin 0 -> 333 bytes .../sp-sign_simple_transfer/00007.png | Bin 0 -> 808 bytes .../sp-sign_simple_transfer/00008.png | Bin 0 -> 874 bytes .../sp-sign_simple_transfer/00009.png | Bin 0 -> 884 bytes .../sp-sign_simple_transfer/00010.png | Bin 0 -> 284 bytes .../sp-sign_simple_transfer/00011.png | Bin 0 -> 550 bytes .../sp-sign_simple_transfer/00012.png | Bin 0 -> 896 bytes .../sp-sign_simple_transfer/00013.png | Bin 0 -> 1007 bytes .../sp-sign_simple_transfer/00014.png | Bin 0 -> 587 bytes .../sp-sign_simple_transfer/00015.png | Bin 0 -> 355 bytes .../sp-sign_simple_transfer/00016.png | Bin 0 -> 467 bytes .../sp-sign_simple_transfer_legacy/00000.png | Bin 0 -> 439 bytes .../sp-sign_simple_transfer_legacy/00001.png | Bin 0 -> 406 bytes .../sp-sign_simple_transfer_legacy/00002.png | Bin 0 -> 413 bytes .../sp-sign_simple_transfer_legacy/00003.png | Bin 0 -> 442 bytes .../sp-sign_simple_transfer_legacy/00004.png | Bin 0 -> 909 bytes .../sp-sign_simple_transfer_legacy/00005.png | Bin 0 -> 459 bytes .../sp-sign_simple_transfer_legacy/00006.png | Bin 0 -> 333 bytes .../sp-sign_simple_transfer_legacy/00007.png | Bin 0 -> 808 bytes .../sp-sign_simple_transfer_legacy/00008.png | Bin 0 -> 874 bytes .../sp-sign_simple_transfer_legacy/00009.png | Bin 0 -> 884 bytes .../sp-sign_simple_transfer_legacy/00010.png | Bin 0 -> 284 bytes .../sp-sign_simple_transfer_legacy/00011.png | Bin 0 -> 550 bytes .../sp-sign_simple_transfer_legacy/00012.png | Bin 0 -> 847 bytes .../sp-sign_simple_transfer_legacy/00013.png | Bin 0 -> 1007 bytes .../sp-sign_simple_transfer_legacy/00014.png | Bin 0 -> 587 bytes .../sp-sign_simple_transfer_legacy/00015.png | Bin 0 -> 355 bytes .../sp-sign_simple_transfer_legacy/00016.png | Bin 0 -> 467 bytes .../snapshots/sp-sign_transfer_1/00000.png | Bin 0 -> 439 bytes .../snapshots/sp-sign_transfer_1/00001.png | Bin 0 -> 406 bytes .../snapshots/sp-sign_transfer_1/00002.png | Bin 0 -> 434 bytes .../snapshots/sp-sign_transfer_1/00003.png | Bin 0 -> 442 bytes .../snapshots/sp-sign_transfer_1/00004.png | Bin 0 -> 923 bytes .../snapshots/sp-sign_transfer_1/00005.png | Bin 0 -> 504 bytes .../snapshots/sp-sign_transfer_1/00006.png | Bin 0 -> 333 bytes .../snapshots/sp-sign_transfer_1/00007.png | Bin 0 -> 860 bytes .../snapshots/sp-sign_transfer_1/00008.png | Bin 0 -> 918 bytes .../snapshots/sp-sign_transfer_1/00009.png | Bin 0 -> 870 bytes .../snapshots/sp-sign_transfer_1/00010.png | Bin 0 -> 284 bytes .../snapshots/sp-sign_transfer_1/00011.png | Bin 0 -> 564 bytes .../snapshots/sp-sign_transfer_1/00012.png | Bin 0 -> 871 bytes .../snapshots/sp-sign_transfer_1/00013.png | Bin 0 -> 1007 bytes .../snapshots/sp-sign_transfer_1/00014.png | Bin 0 -> 587 bytes .../snapshots/sp-sign_transfer_1/00015.png | Bin 0 -> 355 bytes .../snapshots/sp-sign_transfer_1/00016.png | Bin 0 -> 467 bytes tests_zemu/snapshots/x-sign_hash_1/00000.png | Bin 0 -> 439 bytes tests_zemu/snapshots/x-sign_hash_1/00001.png | Bin 0 -> 765 bytes tests_zemu/snapshots/x-sign_hash_1/00002.png | Bin 0 -> 777 bytes tests_zemu/snapshots/x-sign_hash_1/00003.png | Bin 0 -> 439 bytes tests_zemu/snapshots/x-sign_hash_1/00004.png | Bin 0 -> 891 bytes tests_zemu/snapshots/x-sign_hash_1/00005.png | Bin 0 -> 1007 bytes tests_zemu/snapshots/x-sign_hash_1/00006.png | Bin 0 -> 587 bytes tests_zemu/snapshots/x-sign_hash_1/00007.png | Bin 0 -> 355 bytes tests_zemu/snapshots/x-sign_hash_1/00008.png | Bin 0 -> 467 bytes .../x-sign_transfer_1_legacy/00000.png | Bin 0 -> 439 bytes .../x-sign_transfer_1_legacy/00001.png | Bin 0 -> 406 bytes .../x-sign_transfer_1_legacy/00002.png | Bin 0 -> 434 bytes .../x-sign_transfer_1_legacy/00003.png | Bin 0 -> 442 bytes .../x-sign_transfer_1_legacy/00004.png | Bin 0 -> 923 bytes .../x-sign_transfer_1_legacy/00005.png | Bin 0 -> 504 bytes .../x-sign_transfer_1_legacy/00006.png | Bin 0 -> 333 bytes .../x-sign_transfer_1_legacy/00007.png | Bin 0 -> 860 bytes .../x-sign_transfer_1_legacy/00008.png | Bin 0 -> 918 bytes .../x-sign_transfer_1_legacy/00009.png | Bin 0 -> 870 bytes .../x-sign_transfer_1_legacy/00010.png | Bin 0 -> 284 bytes .../x-sign_transfer_1_legacy/00011.png | Bin 0 -> 564 bytes .../x-sign_transfer_1_legacy/00012.png | Bin 0 -> 871 bytes .../x-sign_transfer_1_legacy/00013.png | Bin 0 -> 1007 bytes .../x-sign_transfer_1_legacy/00014.png | Bin 0 -> 587 bytes .../x-sign_transfer_1_legacy/00015.png | Bin 0 -> 355 bytes .../x-sign_transfer_1_legacy/00016.png | Bin 0 -> 467 bytes tests_zemu/tests/legacy.test.ts | 38 ++++----- tests_zemu/tests/testscases/transactions.ts | 79 ++++++++++++++++++ 98 files changed, 97 insertions(+), 29 deletions(-) create mode 100644 tests_zemu/snapshots/sp-sign_hash_1/00000.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_1/00001.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_1/00002.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_1/00003.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_1/00004.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_1/00005.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_1/00006.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_1/00007.png rename tests_zemu/snapshots/{sp-sign_transfer_1/00017.png => sp-sign_hash_1/00008.png} (100%) create mode 100644 tests_zemu/snapshots/sp-sign_hash_2/00000.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_2/00001.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_2/00002.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_2/00003.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_2/00004.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_2/00005.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_2/00006.png create mode 100644 tests_zemu/snapshots/sp-sign_hash_2/00007.png rename tests_zemu/snapshots/{sp-sign_transfer_create_1/00017.png => sp-sign_hash_2/00008.png} (100%) create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00000.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00001.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00002.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00003.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00004.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00005.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00006.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00007.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00008.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00009.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00010.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00011.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00012.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00013.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00014.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00015.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer/00016.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00000.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00001.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00002.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00003.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00004.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00005.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00006.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00007.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00008.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00009.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00010.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00011.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00012.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00013.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00014.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00015.png create mode 100644 tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00016.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00000.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00001.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00002.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00003.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00004.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00005.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00006.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00007.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00008.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00009.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00010.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00011.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00012.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00013.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00014.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00015.png create mode 100644 tests_zemu/snapshots/sp-sign_transfer_1/00016.png create mode 100644 tests_zemu/snapshots/x-sign_hash_1/00000.png create mode 100644 tests_zemu/snapshots/x-sign_hash_1/00001.png create mode 100644 tests_zemu/snapshots/x-sign_hash_1/00002.png create mode 100644 tests_zemu/snapshots/x-sign_hash_1/00003.png create mode 100644 tests_zemu/snapshots/x-sign_hash_1/00004.png create mode 100644 tests_zemu/snapshots/x-sign_hash_1/00005.png create mode 100644 tests_zemu/snapshots/x-sign_hash_1/00006.png create mode 100644 tests_zemu/snapshots/x-sign_hash_1/00007.png create mode 100644 tests_zemu/snapshots/x-sign_hash_1/00008.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00000.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00001.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00002.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00003.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00004.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00005.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00006.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00007.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00008.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00009.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00010.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00011.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00012.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00013.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00014.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00015.png create mode 100644 tests_zemu/snapshots/x-sign_transfer_1_legacy/00016.png diff --git a/app/src/apdu_handler_legacy.c b/app/src/apdu_handler_legacy.c index efaee41..19c5509 100644 --- a/app/src/apdu_handler_legacy.c +++ b/app/src/apdu_handler_legacy.c @@ -380,14 +380,11 @@ void legacy_handleSignTransferTx(volatile uint32_t *flags, volatile uint32_t *tx tx_type = tx_type_transaction; CHECK_APP_CANARY() if (error_msg != NULL) { - const int error_msg_length = strnlen(error_msg, sizeof(G_io_apdu_buffer)); - memcpy(G_io_apdu_buffer, error_msg, error_msg_length); - *tx += (error_msg_length); - THROW(APDU_CODE_DATA_INVALID); + tx_reset(); + *tx = 0; + THROW(APDU_CODE_LEGACY_PARSER_ERROR); } - THROW(APDU_CODE_OK); - view_review_init(tx_getItem, tx_getNumItems, legacy_app_sign); view_review_show(REVIEW_TXN); *flags |= IO_ASYNCH_REPLY; diff --git a/tests_zemu/snapshots/sp-sign_hash_1/00000.png b/tests_zemu/snapshots/sp-sign_hash_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..33a7bd8942d58f005037cf3642c3e3aea8dac4bf GIT binary patch literal 439 zcmV;o0Z9IdP)#DbD*d zxf9Tz{k%EIodC(7gY*fIjLC&tQ0#YLZ&PV_N+{Jj13v>)MlRLa{zJOY*{yO0{ z;VZ@ZP$@+}YRP_((Not;M7L};x@b9Qa|pKr7J4}{)ycGUy?r*;i>^Z9R=_MYz1?(J zgt7;HHr9pN1HvWXV{yoHy9IrNmPP%W2ftnd)&KmCgF~uW{QjdJvW(LY`-jF)TcH?{Etqy5Yf=qf_TZoItIft!VIJ!SeJ1oUR%X|Ju1|Ns1_>$#<_G>rDf8SY h000000002D@CMJ4?X8rIYaRdq002ovPDHLkV1hI*$-4jm literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_hash_1/00001.png b/tests_zemu/snapshots/sp-sign_hash_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..974d2e79377105016cf182db7dbedd4d2b06ac02 GIT binary patch literal 765 zcmVcQX55l6&dHv>YZkLkKXA|M#RALbw`&mI43(0002Ma=r%hAIDKjc|0EV zn%q9G`E4t&rE@*K#fkc>054Qb5$z<|!+a0sCv8#DnuAMf8b+w4S408rme|%RX(dx^ z9_@gsIBPiA5MuV+0b!8b0phH54!0Q`|8N7Usp1q7^^ja8qb}=afL2ew_*VJisG%(u zTc){5;u4fXLI-GzBdI(eiCXqsF?|NKzKZ6eXgJ4jiZ`-Ar$|l*XbT9x6)ToL397=t zoD)4d{tnPqPT)f8o0S^w&J5=j0002k%JE7~Bo`h%hVou*G5Jd(#tQ>A*CMPR#?RvN zY8d_WFd(e0ID+`vQ=&w)>fJYAeEliXR5+a|+K!Z@#Ps{0avQWqF{aFb^kbt|?Uoq8 zywz{@5;P83UMeXaVkXr#=E_3JzBfRsfeJWRCFP1M@wZX@;^N>axDN%LOR z&(q$_BTD8$3i@szyt{+-5s+E__g&D{TR+85U+L@%4Svz}=ZdIJjXqewNh6~VrV?yk zF~GT)k#fUsk}bKqDb_cAR*923Acgo&xZSgG|G^G7`a_a6Hqg2ae7h8LU<|X3vfAug zt`VzT=JH#T*mWwP3HT$Xo-nGhigp>`ua}Xxk`oK+n$*4D$E6?!_q8z;7_DM1PX*IH zP4s+Y{FEURbMFR_7{D#`D-m;@R&c}r0f8DWCT3x5B&CI;Jr>(9&+=Mx?f8YuB$^%5 zJUfO8000000Pe_CSMsfY)V>4j{*olOBrc{!%ADajp4XP_)pl)og^dd>(J9uYFe}(O z!nQBtc8#yoVCQ1PwspXkAZU#**`=@id4EL*)bN@A&-X6*m_2Xu9n_u~FcQ)1I{eX6 v>_ef?dHsgDPZMAt0ABeh2OIzZ05JFkev32#!B%x$00000NkvXXu0mjfYAWknPnrHs;aewVSXmdGg}arIb=>t!VFY9p=OY(TI$tu zWZ4;J9k7&O^CqpJdT3s3kYoo$TC%5MRM&}Apm+2jIaDyE@9ygX{);9b1)Jw*i(9!l zW2r;XJP8i4Mn*ZIsj9DNRWBFTzPtz23k++CViA0Q=a(X?oGh_EIS#M}5Sdh4mEH+R zV5HC07w5IQsFQQR*jxfiv3;{&$a_g~K#C>+003UfY&3KODM80(a1{JU`T}EhJZf0r zZ&tiN@|qnw|llVvDIn2@$1>Yj*2JtLnk%lysYsNV`}hovS}3*>$~t>`V2Ss~0|7sXJ}r*X9-(wYi5 zbO+;(je)8rI|rO*U1Q30JAi#JemOfoD$V-02sI;f0E-=Vm7=Jx>cvQ&VTEt?-VjU9 z0|q|097dfF7R551r#qYcNOsN^U3}X<0Njq{YjXeq0AP$iU&nwEwRxfy00000NkvXX Hu0mjf)V5ey literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_hash_1/00003.png b/tests_zemu/snapshots/sp-sign_hash_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..15de6b1f593f2e6039a6114e6724516d484a91bd GIT binary patch literal 439 zcmV;o0Z9IdP)|`9009}G+*Z+H3Eyh49I8q7#003~gugUB8eJ`bK+a|xO z!{fI;Jh%7G>p1_tof%&mRB?1OiD|Zx2s6GXuh)Gzc*CJvdJ$&G-G$je5|B1tdS09P zv}X&j)L{2wi?=##CAa|QBU$z2nvTi64myEq($go+Q0F!w&+c_kfH@TuYdEBR8R%ZS z+29yXo`CY|(Me&UP|Gt*nEnzD$1@I;ieQ5S7 z{2`ElBhTD{C#bwBK!>Qh1BCpEP)vxD7)*^@3TuR{P=jP&sENJ+hrHsK^mk|arzL9%Fve|8g=a8*eXXgST( zh4jLKGLKN8u>67w^$?^qw8(D)*(&LIiwZko?*o)tb`coOl_oDNX*1C~`=qJOKC_4b z2aLs#uSldAN1sM5J4^Ne3XPR})U8N`Qpqz~umi>xvc-<;^Nk>C#d?VLmepm6KU5wnL_0jqcj{|0bThP z`@KeXm%^r8ki^*i18pa8kwJlDCv-*E3N!~S%4apYsbIY!gdL_3%U9nhH3v+7*H=iW zWd)9<@~M!fWk$|^93e}Xm5M_nySzA_!rAIsXx|tZoDIGt> zjwg7y@0L4Pk|arT0`C8mcR^2(Y^F#`A1P+pl|G89I_iw@{C`Pq zMtW_ar}NhNYl{!%eNYz!{cMtb!LWk0A!z1>oRVT3tD?eRaS~n4QSs!Zqz{rLNs=V-^AGI4$W)ya R=ac{d002ovPDHLkV1jZKp-lh) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_hash_1/00005.png b/tests_zemu/snapshots/sp-sign_hash_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7234d99ebcfab9ad149c8a2b56363821fb085dd7 GIT binary patch literal 1007 zcmVaPTY)CdsJ&deB%Mx)VaG#ZV@?fA#OpXWJ0 zAII_hdK^dD!8BMl;&4zOt#c0fP~*}aEs@=4%^xcDC+6oBu8T%y2k6XrBNz>f6^%X{ z3HJF1@h448H_!1@r#XuqodT>fH3ANm+H+YbEwd#Kmee>PeR;?tf38iV)|yglvgrGh z!YZ^z)G1WGOg=1FtgS3zE@~^AxqirJBN~G;)EP>>TLY;sEZ?%UK*vvIBF8%$hr*u3 zS3o!hS8s8u$GsEcAQ<-kxdkC}B?b9d*->RfB*U@{=BK-qcls#IKOnO7_$eqnHJ-mH zkQ=WVFcmdgSv?e3Ck3?*?E?L(RsdZ%36{AVg+;~)ZBGlIg7uCw3+WW}<=C=4P$T>% z>_A=ejYgx<_*^9RfMFlQ=hFdbK58pgGc+#kTiilcs&UZ!-5a5E0((C4b%KJ5U>WyS z4aBw2%CG5kHj6+FWscQCd7(#4`SmX~E}I~$gu+>BgSW==+=rMRFIt#rML6Cb4E`<#59yOHS6=xwk`T0Vo)oK72*Bbxq3H7vp5?aup zDp2(h%0?{-6`pcQ78ZZd`xfO#0+k}p*WZAa{jETqXy8Ov`Qv_%*B{o6*A;-Xl|bca z^+k%Mw1nxRd_!jTW$IItp_4g>Hk@+gXshG*C&_*XK`p2*#;w3gopLiMh@JQ}m%Gc# zexq&@A>sj`D-I!dvj!)9v63wRT3dCYATHto@Ymzt#|nS2?Mhgd-UlG7OiGEe#1TaO z{nk+~M>GcuLMd(yr_pFM8jVJy@tw&1eL#3?AL3M(QV^vDL_(-Zu$Ech4yc&!KZ9Cw zprvslB4}9C7cUnjSO+x)7q3Q<5aS$Mp+E>Kh*raFtDB9lsKSsI6!HrNLPSASZ@*zW z!g;cATY_a)S8!Be1Q)8I2ph&86eB^)tVETm3w98Ocs1ysbrhsTWKz^LEY&hI1x`u- zB?sus0$42=fa|2tPZU|1q2kMDFpxk007|QJY-?pw)R|WeHCl1 zhov`xhlK<-m`(FG5AA8fy|&Ucodcg7RH3Yow55sLXiumAz!O#FI59UQ=>-WrihtiS)mvin4*xt7{n{$n$x_PZZah_`@`$todN$maN z-{K7&rzEQz8`+u^cm@{-VCemYs9@aWFs}o!*0RjMMzzPPf1K6&<=NkhOiteA0s}>n zd;iYXe`8!H^PbX0`eJS}y70`%8T>n^%dV>bk>TM}C(cF@9*Jbj^5WTF;gKGIO)y zjlJ*9*PE9W@jdm~5r5wEu#TD8y6+Pnh8_O<-8#^Bx$bnOy3REWn^jXeAFev)TXe-F zTky7j?62N_lL@yzwx7O!=&4O1W7^|)7fcr%%i5*3D%0_G;tl)cpW3Io3*7!cdXW1o sV&B=e%knGs=l(tai5cc!1_ryAe9w9}zGZ%X&;TUp>FVdQ&MBb@086r+N&o-= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_transfer_1/00017.png b/tests_zemu/snapshots/sp-sign_hash_1/00008.png similarity index 100% rename from tests_zemu/snapshots/sp-sign_transfer_1/00017.png rename to tests_zemu/snapshots/sp-sign_hash_1/00008.png diff --git a/tests_zemu/snapshots/sp-sign_hash_2/00000.png b/tests_zemu/snapshots/sp-sign_hash_2/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..33a7bd8942d58f005037cf3642c3e3aea8dac4bf GIT binary patch literal 439 zcmV;o0Z9IdP)#DbD*d zxf9Tz{k%EIodC(7gY*fIjLC&tQ0#YLZ&PV_N+{Jj13v>)MlRLa{zJOY*{yO0{ z;VZ@ZP$@+}YRP_((Not;M7L};x@b9Qa|pKr7J4}{)ycGUy?r*;i>^Z9R=_MYz1?(J zgt7;HHr9pN1HvWXV{yoHy9IrNmPP%W2ftnd)&KmCgF~uW{QjdJvW(LY`-jF)TcH?{Etqy5Yf=qf_TZoItIft!VIJ!SeJ1oUR%X|Ju1|Ns1_>$#<_G>rDf8SY h000000002D@CMJ4?X8rIYaRdq002ovPDHLkV1hI*$-4jm literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_hash_2/00001.png b/tests_zemu/snapshots/sp-sign_hash_2/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..974d2e79377105016cf182db7dbedd4d2b06ac02 GIT binary patch literal 765 zcmVcQX55l6&dHv>YZkLkKXA|M#RALbw`&mI43(0002Ma=r%hAIDKjc|0EV zn%q9G`E4t&rE@*K#fkc>054Qb5$z<|!+a0sCv8#DnuAMf8b+w4S408rme|%RX(dx^ z9_@gsIBPiA5MuV+0b!8b0phH54!0Q`|8N7Usp1q7^^ja8qb}=afL2ew_*VJisG%(u zTc){5;u4fXLI-GzBdI(eiCXqsF?|NKzKZ6eXgJ4jiZ`-Ar$|l*XbT9x6)ToL397=t zoD)4d{tnPqPT)f8o0S^w&J5=j0002k%JE7~Bo`h%hVou*G5Jd(#tQ>A*CMPR#?RvN zY8d_WFd(e0ID+`vQ=&w)>fJYAeEliXR5+a|+K!Z@#Ps{0avQWqF{aFb^kbt|?Uoq8 zywz{@5;P83UMeXaVkXr#=E_3JzBfRsfeJWRCFP1M@wZX@;^N>axDN%LOR z&(q$_BTD8$3i@szyt{+-5s+E__g&D{TR+85U+L@%4Svz}=ZdIJjXqewNh6~VrV?yk zF~GT)k#fUsk}bKqDb_cAR*923Acgo&xZSgG|G^G7`a_a6Hqg2ae7h8LU<|X3vfAug zt`VzT=JH#T*mWwP3HT$Xo-nGhigp>`ua}Xxk`oK+n$*4D$E6?!_q8z;7_DM1PX*IH zP4s+Y{FEURbMFR_7{D#`D-m;@R&c}r0f8DWCT3x5B&CI;Jr>(9&+=Mx?f8YuB$^%5 zJUfO8000000Pe_CSMsfY)V>4j{*olOBrc{!%ADajp4XP_)pl)og^dd>(J9uYFe}(O z!nQBtc8#yoVCQ1PwspXkAZU#**`=@id4EL*)bN@A&-X6*m_2Xu9n_u~FcQ)1I{eX6 v>_ef?dHsgDPZMAt0ABeh2OIzZ05JFkev32#!B%x$00000NkvXXu0mjfYAWknPnrHs;aewVSXmdGg}arIb=>t!VFY9p=OY(TI$tu zWZ4;J9k7&O^CqpJdT3s3kYoo$TC%5MRM&}Apm+2jIaDyE@9ygX{);9b1)Jw*i(9!l zW2r;XJP8i4Mn*ZIsj9DNRWBFTzPtz23k++CViA0Q=a(X?oGh_EIS#M}5Sdh4mEH+R zV5HC07w5IQsFQQR*jxfiv3;{&$a_g~K#C>+003UfY&3KODM80(a1{JU`T}EhJZf0r zZ&tiN@|qnw|llVvDIn2@$1>Yj*2JtLnk%lysYsNV`}hovS}3*>$~t>`V2Ss~0|7sXJ}r*X9-(wYi5 zbO+;(je)8rI|rO*U1Q30JAi#JemOfoD$V-02sI;f0E-=Vm7=Jx>cvQ&VTEt?-VjU9 z0|q|097dfF7R551r#qYcNOsN^U3}X<0Njq{YjXeq0AP$iU&nwEwRxfy00000NkvXX Hu0mjf)V5ey literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_hash_2/00003.png b/tests_zemu/snapshots/sp-sign_hash_2/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..15de6b1f593f2e6039a6114e6724516d484a91bd GIT binary patch literal 439 zcmV;o0Z9IdP)|`9009}G+*Z+H3Eyh49I8q7#003~gugUB8eJ`bK+a|xO z!{fI;Jh%7G>p1_tof%&mRB?1OiD|Zx2s6GXuh)Gzc*CJvdJ$&G-G$je5|B1tdS09P zv}X&j)L{2wi?=##CAa|QBU$z2nvTi64myEq($go+Q0F!w&+c_kfH@TuYdEBR8R%ZS z+29yXo`CY|(Me&UP|Gt*nEnzD$1@I;ieQ5S7 z{2`ElBhTD{C#bwBK!>Qh1BCpEP)vxD7)*^@3TuR{P=jP&sENJ+hrHsK^mk|arzL9%Fve|8g=a8*eXXgST( zh4jLKGLKN8u>67w^$?^qw8(D)*(&LIiwZko?*o)tb`coOl_oDNX*1C~`=qJOKC_4b z2aLs#uSldAN1sM5J4^Ne3XPR})U8N`Qpqz~umi>xvc-<;^Nk>C#d?VLmepm6KU5wnL_0jqcj{|0bThP z`@KeXm%^r8ki^*i18pa8kwJlDCv-*E3N!~S%4apYsbIY!gdL_3%U9nhH3v+7*H=iW zWd)9<@~M!fWk$|^93e}Xm5M_nySzA_!rAIsXx|tZoDIGt> zjwg7y@0L4Pk|arT0`C8mcR^2(Y^F#`A1P+pl|G89I_iw@{C`Pq zMtW_ar}NhNYl{!%eNYz!{cMtb!LWk0A!z1>oRVT3tD?eRaS~n4QSs!Zqz{rLNs=V-^AGI4$W)ya R=ac{d002ovPDHLkV1jZKp-lh) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_hash_2/00005.png b/tests_zemu/snapshots/sp-sign_hash_2/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7234d99ebcfab9ad149c8a2b56363821fb085dd7 GIT binary patch literal 1007 zcmVaPTY)CdsJ&deB%Mx)VaG#ZV@?fA#OpXWJ0 zAII_hdK^dD!8BMl;&4zOt#c0fP~*}aEs@=4%^xcDC+6oBu8T%y2k6XrBNz>f6^%X{ z3HJF1@h448H_!1@r#XuqodT>fH3ANm+H+YbEwd#Kmee>PeR;?tf38iV)|yglvgrGh z!YZ^z)G1WGOg=1FtgS3zE@~^AxqirJBN~G;)EP>>TLY;sEZ?%UK*vvIBF8%$hr*u3 zS3o!hS8s8u$GsEcAQ<-kxdkC}B?b9d*->RfB*U@{=BK-qcls#IKOnO7_$eqnHJ-mH zkQ=WVFcmdgSv?e3Ck3?*?E?L(RsdZ%36{AVg+;~)ZBGlIg7uCw3+WW}<=C=4P$T>% z>_A=ejYgx<_*^9RfMFlQ=hFdbK58pgGc+#kTiilcs&UZ!-5a5E0((C4b%KJ5U>WyS z4aBw2%CG5kHj6+FWscQCd7(#4`SmX~E}I~$gu+>BgSW==+=rMRFIt#rML6Cb4E`<#59yOHS6=xwk`T0Vo)oK72*Bbxq3H7vp5?aup zDp2(h%0?{-6`pcQ78ZZd`xfO#0+k}p*WZAa{jETqXy8Ov`Qv_%*B{o6*A;-Xl|bca z^+k%Mw1nxRd_!jTW$IItp_4g>Hk@+gXshG*C&_*XK`p2*#;w3gopLiMh@JQ}m%Gc# zexq&@A>sj`D-I!dvj!)9v63wRT3dCYATHto@Ymzt#|nS2?Mhgd-UlG7OiGEe#1TaO z{nk+~M>GcuLMd(yr_pFM8jVJy@tw&1eL#3?AL3M(QV^vDL_(-Zu$Ech4yc&!KZ9Cw zprvslB4}9C7cUnjSO+x)7q3Q<5aS$Mp+E>Kh*raFtDB9lsKSsI6!HrNLPSASZ@*zW z!g;cATY_a)S8!Be1Q)8I2ph&86eB^)tVETm3w98Ocs1ysbrhsTWKz^LEY&hI1x`u- zB?sus0$42=fa|2tPZU|1q2kMDFpxk007|QJY-?pw)R|WeHCl1 zhov`xhlK<-m`(FG5AA8fy|&Ucodcg7RH3Yow55sLXiumAz!O#FI59UQ=>-WrihtiS)mvin4*xt7{n{$n$x_PZZah_`@`$todN$maN z-{K7&rzEQz8`+u^cm@{-VCemYs9@aWFs}o!*0RjMMzzPPf1K6&<=NkhOiteA0s}>n zd;iYXe`8!H^PbX0`eJS}y70`%8T>n^%dV>bk>TM}C(cF@9*Jbj^5WTF;gKGIO)y zjlJ*9*PE9W@jdm~5r5wEu#TD8y6+Pnh8_O<-8#^Bx$bnOy3REWn^jXeAFev)TXe-F zTky7j?62N_lL@yzwx7O!=&4O1W7^|)7fcr%%i5*3D%0_G;tl)cpW3Io3*7!cdXW1o sV&B=e%knGs=l(tai5cc!1_ryAe9w9}zGZ%X&;TUp>FVdQ&MBb@086r+N&o-= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_transfer_create_1/00017.png b/tests_zemu/snapshots/sp-sign_hash_2/00008.png similarity index 100% rename from tests_zemu/snapshots/sp-sign_transfer_create_1/00017.png rename to tests_zemu/snapshots/sp-sign_hash_2/00008.png diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer/00000.png b/tests_zemu/snapshots/sp-sign_simple_transfer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..33a7bd8942d58f005037cf3642c3e3aea8dac4bf GIT binary patch literal 439 zcmV;o0Z9IdP)#DbD*d zxf9Tz{k%EIodC(7gY*fIjLC&tQ0#YLZ&PV_N+{Jj13v>)MlRLa{zJOY*{yO0{ z;VZ@ZP$@+}YRP_((Not;M7L};x@b9Qa|pKr7J4}{)ycGUy?r*;i>^Z9R=_MYz1?(J zgt7;HHr9pN1HvWXV{yoHy9IrNmPP%W2ftnd)&KmCgF~uW{QjdJvW(LY`-jF)TcH?{Etqy5Yf=qf_TZoItIft!VIJ!SeJ1oUR%X|Ju1|Ns1_>$#<_G>rDf8SY h000000002D@CMJ4?X8rIYaRdq002ovPDHLkV1hI*$-4jm literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer/00001.png b/tests_zemu/snapshots/sp-sign_simple_transfer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba22ea500c05e2486be36ec2643b41506505e233 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{(ba4!+nDh2#^rk}!JPnB@ z=lpK`pLC;}e@@~AZwGJBsQ>R*T6LIePG3+A)O4VX|E=^7aVL-K_kRDlRQ=yoeSRI6 zUdsga2h0Ct-gk)pr*nO0r?U$0ltrn#-kECbvU(qWrs7pyt)Co=X3$HewupBdZZ3G| zHL;WBiQ(0~lmGgt9PoXT@Q^7xYpvNXwku-CPJ6si7UtCWwxDSC2VuKpFZzM?FB ztu>;Kua>^~RfgdV#0 z`{9lL+^(08b{V&=WjUi=R1o`AWXbNp*_|u*RP6eG=SqF(w_9%vIo{jO(|o+kQSH}l y6DQv<=F04|X0)2{Hu>=RxmGX&0|*H;T;9XbuK%@ggKdZnNZ8ZW&t;ucLK6VmwX^O3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer/00002.png b/tests_zemu/snapshots/sp-sign_simple_transfer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..cb84a2b3f9c0d78012344b12433a93b9cdf89732 GIT binary patch literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w~ba4!+nDh2#;G|{+o`%G- z^!!7A`;WwaJE%EXsAG%Jgm3@n>2Td(Sb0x9%~QHll_Lrrf11smzTGG&1bmw zc>MKipRZf6n94C*7iHbNeScM7u$SSnq-ERnF1P-SFbkT}{=9Qdf9n2Ebt(P#ybqSM z-dJ_;?MhL()vGd&L}V>jUbs5MyDi$1VR?_l*C%sco!YQ?&T;?yZIe?qUo4twe_~zU zUZy6llJq;>OH{byXFXWQ&&PhB@kG2rde3X)@a>Tz-?m?hHTmsTf?k4jglX9eEPx#huFsB6jcPf3r^}aHO}Y{$8I*-^D0Ax^ z1DReDofoS;GoV?QOT6m9y}3Yr%A&t#1}JmCaBkABdv%B8QIFjh6Cd-Kz1+E;LQa{$mhg33@W`H{ms=cgXJB1_0n;Oc7oH00000 k0000000000006+u4>KfDrxs3imjD0&07*qoM6N<$f=xro5dZ)H literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer/00004.png b/tests_zemu/snapshots/sp-sign_simple_transfer/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..82de24c2ca8e9df402f99d7a62dfbafa8f4229e6 GIT binary patch literal 909 zcmV;819JR{P)w!3FQy^KA%qY@2qDDdeC-Z!o@amh zdcEvVy|LLZV^n4;0UI>3*l@$;<^0*_`snI*adb88e@gw_X?<`y_;-5(Tvfu~eXaqv z8$dC4(p>hT0OJi9w~q9Py)z)9RTaztuvWA|+K*Pew%}N4s{1Cvdpdw;m@C&oRdcvA z22Z1M-m?TTv=zqMnPO{fUG7~zdIs2gW5n{XbuW4HX0W#dS_`&yW36t({)AkG@bYc# z?ke~2iu5f3{c-<>QFzO7`RFC+J|!bp!ymDGgbE?V4~9}hUCHHu&;3}%#1dmFD%jH~ z3Ylc&+!aUhC28%Zv0?!D36$wA;I^6iWP;*iQ`x2^$$TQ7mLjgv5w)ouIFZoi7Q?qtYot4x^^Wyue7!0Ez^g`}vtme^E=Od2Is?g^iS?bs<{R^4=s z_Is1%4BdQ~=dY^v2|K`@#rz{5aGS0wuEux%|0QUYq3aD~=;p&{nN^Y$H3NpIEv+bt zWleah7_($mWtav6Mhp_;>`Z5vts6g-tlQ-|QL?D6MIR{sFzfSW&QHq_&46giyrv7s^lnekY-wUQQs$K>hKmKp3pAUK?Hr!S4hBC6)tJX9^uw|Tj88_>}m1c2M jEN3W$5JCtc#6$c8mS0d%o5`Hw00000NkvXXu0mjfNeZ%` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer/00005.png b/tests_zemu/snapshots/sp-sign_simple_transfer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..d6099040ba72b169715f6e850b8a9427270b4af2 GIT binary patch literal 459 zcmV;+0W|)JP)XilpP2UG;p5kJys%41E-!tn*-uaQ%kJEznE{kW2pS9WqBh1yHj|tXF)R8O7<;<@%}lb-(Cgqw&9nCtqYLt?Ad+z z?({F-pO@RZ0NHV6^UdU$yZ|$=Q~s=&KHncc4B4|BfVW0^w_2NTRZTM4pQey%vOgI$ zSczR|rACsefh*Dr0000000000000000002E`2vZEUDRE^Hthfa002ovPDHLkV1kBm B)rpSZ(YJWSh(=WD;>#Cy>C00tbv|>CzH8A?xKG*I zTQjur#{Cao`>%gC_sd|?N;SInB4pw(Yu)wF=bUz##_L^u=&x17wWEdm+{!OZtkXTe zFuvdVblKU1&v;iiUvFD|jbYWsxpQs^F7$UWJz0GFqUcq*8qB$vs~k8YCfM8Dy@D5JCtcgpkMiGdcdgZ_)C4 zy(VRPD$w|@3v8Qt1ay`YX>nr$Is;WVu3fqdFCbSC1SRF-HPhg>8;=AV=x;4 zlVTRKe8lP&J?l>q1}#u%Y%Ku|1{;_2cavP92O6HqVqF z%t(*&^x|xJ0t)7WMF`SP*WF_#j@VG$y(INlHU^;3&ZHX&k#>T4?s(rEVOI)D6K8`b z{r-%u?N2~i)QOj&H-8~8=cXzoPIR$h`}Tfc0lqBuN%(f=1F*^xLI@$`D0)*7Y%{n6 zSxoV!s1#k!PUDkYzx^NvqK`A)0jCX&sBoA+FLjKX|G@CE#79uCQ9n20?{4Ek-mVt( zZ7=|bVE_&z1Mnu9F-`J9|W0{E3xZ9Am z-JW>GX`mXq?_6{Le^0bFdU|z1)D!DT7_tq~l_pt^4sOE6R+^)_7spNQU3aAKFt?F2 zb(u45yP5tmNd}-Q6Iw-!egJi!Rjk@RAXi$uvoQT*a`+%{@C$V3obp8a3AqzEB|5JC|8)lhJIj?@T|im7f1 z_H(%!!;FP^k#!lPXG^3Ih!-Ql>SoTcAqx>R66bK}AO=>z=NT}!i(+U8hVV4-ObQe?$zQ~7GBr!@}J721vK>UKj?)+!6T ziURV*IQ^s}jLr>TN?L6CnOKrkLH|5@H}w7MozGjCdoEfVEM)X;cyZ?l4N)s6*1V`8zU?rz7Q>I)fM#8*47e!^^H7W4zCS zX|Cg}p8*|lz(z1y$8GLhh^Aj2#%S)fOaHD8=*-n{dx9)GMkV*X>d&)f2`Zy48sq71 z?qT}jZZwh$Y>A{bl7pdIcvV!_r>qu=pAcR~0d z)J8_@A46zrwEkhx2k!){&^vJ&8GW!7-n_T&hH~qM7@3k(MVq36q-`0EJX)!b|GaL` zo|Hl|GT8dhETzTWY5J9BVJnNTrDRV%M#1*`{;0^RF{@47d1jQWb`C=w%!-96Aup&? zW~ZPlb}nJ>#jH+QN?gU0cNQl)APZU9$$QxCMUtm{P52B?>;SS|dG4CKg6%Kinxwil zq`1yHvTcnJ00000;0p<+sqw1SnZ=xxfD@Eo40TgWxgUvv zYuS!)e&o6f9mF;rJ$P{3(Y{lUIB#6y5k}P9YvD;aJJ+-?EoJZh$GEraE;vE&wF7Xx zH7XsDn#DUH#>LyHT!JN~v)iW>f5HcpVr=|w%Nj|1T^}~2s0tJ9p@rH;?cK>BU@0K(WdeI zdpVd3qny11+M)(`A?G+aa+sT=$I0jzY94-cY~f>r4B2vmJa_*76>LesmPiO8g#1!6 zYUtGQt1qei> zf#D=`_OD?~HD~`a%)vY1F7!@K>rmQgKj+TaLL7IC%31_^bp681k>+gPmPFB^ot*)k={BK78?O;4G~J#G)=f(NYFmL{8cakD>U<7`HibJRyV-LI@!f ztjJZuUMOpbLtF?lhww*SA@&F7$JFS#jcW^^q6L9dpoP^#({xQcI+%bdF|v$RYoGKqIpN(@?hYp4 z!^Oz$AF$?l!xl7p=;_mlcyj7DP^RKI^$<3pib)6|gb+f0IR5}(MHZ?4bR9SV0000< KMNUMnLSTYg8L2z~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer/00010.png b/tests_zemu/snapshots/sp-sign_simple_transfer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..131116ba86e6b3afbb9bef1c7be68952aff07f09 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qja}d978JRyuBXF*JQxMkYI8z z<-2{*`$xlqsjC{N0>8 zvUgs%n3f%goF(Bkwd_FQ;T0?Y?Ae>k7&XzX>DT4_k8|#b{LszXXUD)W=di2s0@?kEP)#O}ws` z9Eo)psmjjZ-3=%j?62|st>GmB>D8LwA2G&l+m146fmBO(=YdKG*YJ{nUFGCO4$`l* z3}r`wwA1%GTcX?Xl>m!zL!>QFp=tC}zbk`Pq^Di!qg+?79fd{t%hAUtxjLTu*F_>4S2C5t!iT+-qAJ<>Gvv_$1yw>WO@I+rR(FFiZ6F?-eO)Ec$g%J28ei{2=U^-aXYgk^u5F9xW^f;R0^kCdt%bgl7f^GYXDnibAhztGev zlKPcWJ*8^J5OnPh7-@VvzC(VsThCvSPDfz_}2jdo9Rl(JI||nOn0O#kBq| zzLp}?EthALcfjd2sQwh`%6$7{SzX{v%d{N1(D=q@sW=h!yjsH5+V?`%olvZw-rwEx ztfu!5Yr29Q+=)@>PA8pA4ov0U>v~7*^ao|vzfpE%W7#6&1>R@%61V oyLJKq0000000000003|P0rnTp&1qo)vH$=807*qoM6N<$f`fJofdBvi literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer/00012.png b/tests_zemu/snapshots/sp-sign_simple_transfer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..5824ac080cc3599a01717ece33b87b13d7eb79d0 GIT binary patch literal 896 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 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer/00016.png b/tests_zemu/snapshots/sp-sign_simple_transfer/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..58ec4be3d27307c755798bbdf1be16718aad388d GIT binary patch literal 467 zcmV;^0WAKBP)|E<4q%6z^RDqJ zrGJX#MBlRmcsdF&83mZ^XLbMwmG!;s3d>r*cau;Mz5_yM-=Y^FdiE`P0gAZUw|f*I z#Pj}|*acYTe%u!BUr`JMsPCoOAu(*6(oqJ+D-vD&H>D0ZsPH=fbMQ`C;`% zKe!p$z30X1sI)r3{s!k0v_1C+caF~j{8Te1gbL6sj`d6*%-Y)}<-k49u?AebelKwYLJ@sl9zgpJE5B?E$IM^u)*wH7ORL zF`mBdk%H@w$rhk#0)N=K>#P*>$sR$Ab^vZgcKQPV0002+IKL!v4l@0>R(t>e002ov JPDHLkV1k$i;A;Q? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00000.png b/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..33a7bd8942d58f005037cf3642c3e3aea8dac4bf GIT binary patch literal 439 zcmV;o0Z9IdP)#DbD*d zxf9Tz{k%EIodC(7gY*fIjLC&tQ0#YLZ&PV_N+{Jj13v>)MlRLa{zJOY*{yO0{ z;VZ@ZP$@+}YRP_((Not;M7L};x@b9Qa|pKr7J4}{)ycGUy?r*;i>^Z9R=_MYz1?(J zgt7;HHr9pN1HvWXV{yoHy9IrNmPP%W2ftnd)&KmCgF~uW{QjdJvW(LY`-jF)TcH?{Etqy5Yf=qf_TZoItIft!VIJ!SeJ1oUR%X|Ju1|Ns1_>$#<_G>rDf8SY h000000002D@CMJ4?X8rIYaRdq002ovPDHLkV1hI*$-4jm literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00001.png b/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba22ea500c05e2486be36ec2643b41506505e233 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{(ba4!+nDh2#^rk}!JPnB@ z=lpK`pLC;}e@@~AZwGJBsQ>R*T6LIePG3+A)O4VX|E=^7aVL-K_kRDlRQ=yoeSRI6 zUdsga2h0Ct-gk)pr*nO0r?U$0ltrn#-kECbvU(qWrs7pyt)Co=X3$HewupBdZZ3G| zHL;WBiQ(0~lmGgt9PoXT@Q^7xYpvNXwku-CPJ6si7UtCWwxDSC2VuKpFZzM?FB ztu>;Kua>^~RfgdV#0 z`{9lL+^(08b{V&=WjUi=R1o`AWXbNp*_|u*RP6eG=SqF(w_9%vIo{jO(|o+kQSH}l y6DQv<=F04|X0)2{Hu>=RxmGX&0|*H;T;9XbuK%@ggKdZnNZ8ZW&t;ucLK6VmwX^O3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00002.png b/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..cb84a2b3f9c0d78012344b12433a93b9cdf89732 GIT binary patch literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>w~ba4!+nDh2#;G|{+o`%G- z^!!7A`;WwaJE%EXsAG%Jgm3@n>2Td(Sb0x9%~QHll_Lrrf11smzTGG&1bmw zc>MKipRZf6n94C*7iHbNeScM7u$SSnq-ERnF1P-SFbkT}{=9Qdf9n2Ebt(P#ybqSM z-dJ_;?MhL()vGd&L}V>jUbs5MyDi$1VR?_l*C%sco!YQ?&T;?yZIe?qUo4twe_~zU zUZy6llJq;>OH{byXFXWQ&&PhB@kG2rde3X)@a>Tz-?m?hHTmsTf?k4jglX9eEPx#huFsB6jcPf3r^}aHO}Y{$8I*-^D0Ax^ z1DReDofoS;GoV?QOT6m9y}3Yr%A&t#1}JmCaBkABdv%B8QIFjh6Cd-Kz1+E;LQa{$mhg33@W`H{ms=cgXJB1_0n;Oc7oH00000 k0000000000006+u4>KfDrxs3imjD0&07*qoM6N<$f=xro5dZ)H literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00004.png b/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..82de24c2ca8e9df402f99d7a62dfbafa8f4229e6 GIT binary patch literal 909 zcmV;819JR{P)w!3FQy^KA%qY@2qDDdeC-Z!o@amh zdcEvVy|LLZV^n4;0UI>3*l@$;<^0*_`snI*adb88e@gw_X?<`y_;-5(Tvfu~eXaqv z8$dC4(p>hT0OJi9w~q9Py)z)9RTaztuvWA|+K*Pew%}N4s{1Cvdpdw;m@C&oRdcvA z22Z1M-m?TTv=zqMnPO{fUG7~zdIs2gW5n{XbuW4HX0W#dS_`&yW36t({)AkG@bYc# z?ke~2iu5f3{c-<>QFzO7`RFC+J|!bp!ymDGgbE?V4~9}hUCHHu&;3}%#1dmFD%jH~ z3Ylc&+!aUhC28%Zv0?!D36$wA;I^6iWP;*iQ`x2^$$TQ7mLjgv5w)ouIFZoi7Q?qtYot4x^^Wyue7!0Ez^g`}vtme^E=Od2Is?g^iS?bs<{R^4=s z_Is1%4BdQ~=dY^v2|K`@#rz{5aGS0wuEux%|0QUYq3aD~=;p&{nN^Y$H3NpIEv+bt zWleah7_($mWtav6Mhp_;>`Z5vts6g-tlQ-|QL?D6MIR{sFzfSW&QHq_&46giyrv7s^lnekY-wUQQs$K>hKmKp3pAUK?Hr!S4hBC6)tJX9^uw|Tj88_>}m1c2M jEN3W$5JCtc#6$c8mS0d%o5`Hw00000NkvXXu0mjfNeZ%` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00005.png b/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..d6099040ba72b169715f6e850b8a9427270b4af2 GIT binary patch literal 459 zcmV;+0W|)JP)XilpP2UG;p5kJys%41E-!tn*-uaQ%kJEznE{kW2pS9WqBh1yHj|tXF)R8O7<;<@%}lb-(Cgqw&9nCtqYLt?Ad+z z?({F-pO@RZ0NHV6^UdU$yZ|$=Q~s=&KHncc4B4|BfVW0^w_2NTRZTM4pQey%vOgI$ zSczR|rACsefh*Dr0000000000000000002E`2vZEUDRE^Hthfa002ovPDHLkV1kBm B)rpSZ(YJWSh(=WD;>#Cy>C00tbv|>CzH8A?xKG*I zTQjur#{Cao`>%gC_sd|?N;SInB4pw(Yu)wF=bUz##_L^u=&x17wWEdm+{!OZtkXTe zFuvdVblKU1&v;iiUvFD|jbYWsxpQs^F7$UWJz0GFqUcq*8qB$vs~k8YCfM8Dy@D5JCtcgpkMiGdcdgZ_)C4 zy(VRPD$w|@3v8Qt1ay`YX>nr$Is;WVu3fqdFCbSC1SRF-HPhg>8;=AV=x;4 zlVTRKe8lP&J?l>q1}#u%Y%Ku|1{;_2cavP92O6HqVqF z%t(*&^x|xJ0t)7WMF`SP*WF_#j@VG$y(INlHU^;3&ZHX&k#>T4?s(rEVOI)D6K8`b z{r-%u?N2~i)QOj&H-8~8=cXzoPIR$h`}Tfc0lqBuN%(f=1F*^xLI@$`D0)*7Y%{n6 zSxoV!s1#k!PUDkYzx^NvqK`A)0jCX&sBoA+FLjKX|G@CE#79uCQ9n20?{4Ek-mVt( zZ7=|bVE_&z1Mnu9F-`J9|W0{E3xZ9Am z-JW>GX`mXq?_6{Le^0bFdU|z1)D!DT7_tq~l_pt^4sOE6R+^)_7spNQU3aAKFt?F2 zb(u45yP5tmNd}-Q6Iw-!egJi!Rjk@RAXi$uvoQT*a`+%{@C$V3obp8a3AqzEB|5JC|8)lhJIj?@T|im7f1 z_H(%!!;FP^k#!lPXG^3Ih!-Ql>SoTcAqx>R66bK}AO=>z=NT}!i(+U8hVV4-ObQe?$zQ~7GBr!@}J721vK>UKj?)+!6T ziURV*IQ^s}jLr>TN?L6CnOKrkLH|5@H}w7MozGjCdoEfVEM)X;cyZ?l4N)s6*1V`8zU?rz7Q>I)fM#8*47e!^^H7W4zCS zX|Cg}p8*|lz(z1y$8GLhh^Aj2#%S)fOaHD8=*-n{dx9)GMkV*X>d&)f2`Zy48sq71 z?qT}jZZwh$Y>A{bl7pdIcvV!_r>qu=pAcR~0d z)J8_@A46zrwEkhx2k!){&^vJ&8GW!7-n_T&hH~qM7@3k(MVq36q-`0EJX)!b|GaL` zo|Hl|GT8dhETzTWY5J9BVJnNTrDRV%M#1*`{;0^RF{@47d1jQWb`C=w%!-96Aup&? zW~ZPlb}nJ>#jH+QN?gU0cNQl)APZU9$$QxCMUtm{P52B?>;SS|dG4CKg6%Kinxwil zq`1yHvTcnJ00000;0p<+sqw1SnZ=xxfD@Eo40TgWxgUvv zYuS!)e&o6f9mF;rJ$P{3(Y{lUIB#6y5k}P9YvD;aJJ+-?EoJZh$GEraE;vE&wF7Xx zH7XsDn#DUH#>LyHT!JN~v)iW>f5HcpVr=|w%Nj|1T^}~2s0tJ9p@rH;?cK>BU@0K(WdeI zdpVd3qny11+M)(`A?G+aa+sT=$I0jzY94-cY~f>r4B2vmJa_*76>LesmPiO8g#1!6 zYUtGQt1qei> zf#D=`_OD?~HD~`a%)vY1F7!@K>rmQgKj+TaLL7IC%31_^bp681k>+gPmPFB^ot*)k={BK78?O;4G~J#G)=f(NYFmL{8cakD>U<7`HibJRyV-LI@!f ztjJZuUMOpbLtF?lhww*SA@&F7$JFS#jcW^^q6L9dpoP^#({xQcI+%bdF|v$RYoGKqIpN(@?hYp4 z!^Oz$AF$?l!xl7p=;_mlcyj7DP^RKI^$<3pib)6|gb+f0IR5}(MHZ?4bR9SV0000< KMNUMnLSTYg8L2z~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00010.png b/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..131116ba86e6b3afbb9bef1c7be68952aff07f09 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qja}d978JRyuBXF*JQxMkYI8z z<-2{*`$xlqsjC{N0>8 zvUgs%n3f%goF(Bkwd_FQ;T0?Y?Ae>k7&XzX>DT4_k8|#b{LszXXUD)W=di2s0@?kEP)#O}ws` z9Eo)psmjjZ-3=%j?62|st>GmB>D8LwA2G&l+m146fmBO(=YdKG*YJ{nUFGCO4$`l* z3}r`wwA1%GTcX?Xl>m!zL!>QFp=tC}zbk`Pq^Di!qg+?79fd{t%hAUtxjLTu*F_>4S2C5t!iT+-qAJ<>Gvv_$1yw>WO@I+rR(FFiZ6F?-eO)Ec$g%J28ei{2=U^-aXYgk^u5F9xW^f;R0^kCdt%bgl7f^GYXDnibAhztGev zlKPcWJ*8^J5OnPh7-@VvzC(VsThCvSPDfz_}2jdo9Rl(JI||nOn0O#kBq| zzLp}?EthALcfjd2sQwh`%6$7{SzX{v%d{N1(D=q@sW=h!yjsH5+V?`%olvZw-rwEx ztfu!5Yr29Q+=)@>PA8pA4ov0U>v~7*^ao|vzfpE%W7#6&1>R@%61V oyLJKq0000000000003|P0rnTp&1qo)vH$=807*qoM6N<$f`fJofdBvi literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00012.png b/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..c02868b123a0e056a7eb824987d5180a1cc1fb21 GIT binary patch literal 847 zcmV-V1F-ywP)Qe22~hHXs>cBU00000z~g*H8(i1LO3w2v z3MS7TRXUQH=98{}q780OlV0ax0qigca)diT921xEqg3*1fVB(4eDrSeeb@P}`+wkqlSGDD@o>Wti?zXY`fJ`?7X?R4zd` z_g?259pWY|o^)yXodP;zw94sBX>Xxz!TDs_K48>U#r86*rtr9&Is+1?(}H57A-UCr3i*+QPw6|TE*-q zM9xAkhES{J9pKrnHO)Qo{$dmRo576bo@md#UJY%qGm=8&jpaBaVee(E znIYGS3=BHJUgOxWb_AZ(c=}r_p$)}^()!L!g%p>ZdYDl|bDli ZfM2c+R1b)k2{Zrz002ovPDHLkV1hw-kqrO< literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00013.png b/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..7234d99ebcfab9ad149c8a2b56363821fb085dd7 GIT binary patch literal 1007 zcmVaPTY)CdsJ&deB%Mx)VaG#ZV@?fA#OpXWJ0 zAII_hdK^dD!8BMl;&4zOt#c0fP~*}aEs@=4%^xcDC+6oBu8T%y2k6XrBNz>f6^%X{ z3HJF1@h448H_!1@r#XuqodT>fH3ANm+H+YbEwd#Kmee>PeR;?tf38iV)|yglvgrGh z!YZ^z)G1WGOg=1FtgS3zE@~^AxqirJBN~G;)EP>>TLY;sEZ?%UK*vvIBF8%$hr*u3 zS3o!hS8s8u$GsEcAQ<-kxdkC}B?b9d*->RfB*U@{=BK-qcls#IKOnO7_$eqnHJ-mH zkQ=WVFcmdgSv?e3Ck3?*?E?L(RsdZ%36{AVg+;~)ZBGlIg7uCw3+WW}<=C=4P$T>% z>_A=ejYgx<_*^9RfMFlQ=hFdbK58pgGc+#kTiilcs&UZ!-5a5E0((C4b%KJ5U>WyS z4aBw2%CG5kHj6+FWscQCd7(#4`SmX~E}I~$gu+>BgSW==+=rMRFIt#rML6Cb4E`<#59yOHS6=xwk`T0Vo)oK72*Bbxq3H7vp5?aup zDp2(h%0?{-6`pcQ78ZZd`xfO#0+k}p*WZAa{jETqXy8Ov`Qv_%*B{o6*A;-Xl|bca z^+k%Mw1nxRd_!jTW$IItp_4g>Hk@+gXshG*C&_*XK`p2*#;w3gopLiMh@JQ}m%Gc# zexq&@A>sj`D-I!dvj!)9v63wRT3dCYATHto@Ymzt#|nS2?Mhgd-UlG7OiGEe#1TaO z{nk+~M>GcuLMd(yr_pFM8jVJy@tw&1eL#3?AL3M(QV^vDL_(-Zu$Ech4yc&!KZ9Cw zprvslB4}9C7cUnjSO+x)7q3Q<5aS$Mp+E>Kh*raFtDB9lsKSsI6!HrNLPSASZ@*zW z!g;cATY_a)S8!Be1Q)8I2ph&86eB^)tVETm3w98Ocs1ysbrhsTWKz^LEY&hI1x`u- zB?sus0$42=fa|2tPZU|1q2kMDFpxk007|QJY-?pw)R|WeHCl1 zhov`xhlK<-m`(FG5AA8fy|&Ucodcg7RH3Yow55sLXiumAz!O#FI59UQ=>-WrihtiS)mvin4*xt7{n{$n$x_PZZah_`@`$todN$maN z-{K7&rzEQz8`+u^cm@{-VCemYs9@aWFs}o!*0RjMMzzPPf1K6&<=NkhOiteA0s}>n zd;iYXe`8!H^PbX0`eJS}y70`%8T>n^%dV>bk>TM}C(cF@9*Jbj^5WTF;gKGIO)y zjlJ*9*PE9W@jdm~5r5wEu#TD8y6+Pnh8_O<-8#^Bx$bnOy3REWn^jXeAFev)TXe-F zTky7j?62N_lL@yzwx7O!=&4O1W7^|)7fcr%%i5*3D%0_G;tl)cpW3Io3*7!cdXW1o sV&B=e%knGs=l(tai5cc!1_ryAe9w9}zGZ%X&;TUp>FVdQ&MBb@086r+N&o-= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00016.png b/tests_zemu/snapshots/sp-sign_simple_transfer_legacy/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..58ec4be3d27307c755798bbdf1be16718aad388d GIT binary patch literal 467 zcmV;^0WAKBP)|E<4q%6z^RDqJ zrGJX#MBlRmcsdF&83mZ^XLbMwmG!;s3d>r*cau;Mz5_yM-=Y^FdiE`P0gAZUw|f*I z#Pj}|*acYTe%u!BUr`JMsPCoOAu(*6(oqJ+D-vD&H>D0ZsPH=fbMQ`C;`% zKe!p$z30X1sI)r3{s!k0v_1C+caF~j{8Te1gbL6sj`d6*%-Y)}<-k49u?AebelKwYLJ@sl9zgpJE5B?E$IM^u)*wH7ORL zF`mBdk%H@w$rhk#0)N=K>#P*>$sR$Ab^vZgcKQPV0002+IKL!v4l@0>R(t>e002ov JPDHLkV1k$i;A;Q? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_transfer_1/00000.png b/tests_zemu/snapshots/sp-sign_transfer_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..33a7bd8942d58f005037cf3642c3e3aea8dac4bf GIT binary patch literal 439 zcmV;o0Z9IdP)#DbD*d zxf9Tz{k%EIodC(7gY*fIjLC&tQ0#YLZ&PV_N+{Jj13v>)MlRLa{zJOY*{yO0{ z;VZ@ZP$@+}YRP_((Not;M7L};x@b9Qa|pKr7J4}{)ycGUy?r*;i>^Z9R=_MYz1?(J zgt7;HHr9pN1HvWXV{yoHy9IrNmPP%W2ftnd)&KmCgF~uW{QjdJvW(LY`-jF)TcH?{Etqy5Yf=qf_TZoItIft!VIJ!SeJ1oUR%X|Ju1|Ns1_>$#<_G>rDf8SY h000000002D@CMJ4?X8rIYaRdq002ovPDHLkV1hI*$-4jm literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_transfer_1/00001.png b/tests_zemu/snapshots/sp-sign_transfer_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba22ea500c05e2486be36ec2643b41506505e233 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{(ba4!+nDh2#^rk}!JPnB@ z=lpK`pLC;}e@@~AZwGJBsQ>R*T6LIePG3+A)O4VX|E=^7aVL-K_kRDlRQ=yoeSRI6 zUdsga2h0Ct-gk)pr*nO0r?U$0ltrn#-kECbvU(qWrs7pyt)Co=X3$HewupBdZZ3G| zHL;WBiQ(0~lmGgt9PoXT@Q^7xYpvNXwku-CPJ6si7UtCWwxDSC2VuKpFZzM?FB ztu>;Kua>^~RfgdV#0 z`{9lL+^(08b{V&=WjUi=R1o`AWXbNp*_|u*RP6eG=SqF(w_9%vIo{jO(|o+kQSH}l y6DQv<=F04|X0)2{Hu>=RxmGX&0|*H;T;9XbuK%@ggKdZnNZ8ZW&t;ucLK6VmwX^O3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_transfer_1/00002.png b/tests_zemu/snapshots/sp-sign_transfer_1/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8b66af115cff583b6753d7e74fba3a7207051420 GIT binary patch literal 434 zcmV;j0ZsmiP)=ltK3G6I?aI+zjw006Mvmv;xH6nUC+UaD2E zucwoBFR`u1Z`an3$EZ@1j|)3;YT4UQRL7;1oU^t`;R(xHQ0BKO8FG1RM`=tQhZ)+_p_sIN!qj{XFy&3jhEB!8%{4ANq;8 z^w=-N=xhU{y(~5XFE^iZh6W!%_^PSPz`>N{s=YqGM6e2XFz9K>~xpS zICF7W+P8SxI3K2o*)Bpeg07*qoM6N<$g4^G|GXMYp literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_transfer_1/00003.png b/tests_zemu/snapshots/sp-sign_transfer_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ade64425be32189add5604bcd7cde7107cdcad GIT binary patch literal 442 zcmV;r0Y(0aP)Px#huFsB6jcPf3r^}aHO}Y{$8I*-^D0Ax^ z1DReDofoS;GoV?QOT6m9y}3Yr%A&t#1}JmCaBkABdv%B8QIFjh6Cd-Kz1+E;LQa{$mhg33@W`H{ms=cgXJB1_0n;Oc7oH00000 k0000000000006+u4>KfDrxs3imjD0&07*qoM6N<$f=xro5dZ)H literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_transfer_1/00004.png b/tests_zemu/snapshots/sp-sign_transfer_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..024f1c66f109f6dc86e92745db8b936b0e475e05 GIT binary patch literal 923 zcmV;M17!S(P)^H2 zy9}V3yJ^nyp#ozK6mE_5h`l=?;uPdnW4lsC)F6B3k}M| ztXHmaviGOYXK>v0f=tvZmBV=B;1*AIjlIG(!C+^hqzF8=GYZI9AocyN#%&X3m-K+G z){HuGcbB+v7ljWWhQnj0efY%2L95iy;pQ6k0-AsxK^>R67)NeEd~7r??nvXLP;4vU zGs8AHI^BDAFQ(KNfN_QQxL|zB&Q!i$`23vqyHScL&;GAs+yQphT*19BOmA;3yPFOr zjB)!uvfN!dG`Fv`RdgJppp>Zc0O2HS_8-HUYR&$`Xbs+pvd}w8CRuB+6+69a)X?Mq zZ=_DZ2W#NQ7Tp(@JXQ2YW^brR{EcZrgR0=_A-y+lNviOaOJ<4uCwpI_{8(5i;#_}5 zdfSH^Xk;L}{`39zZ4XaCCB3z#7;iU?dfvoym1eSlzajD9mhELum)%QazD1^{jarkHwx25z5sYX zem-~nC)?hcmRs)wm|bS2L|Xy`QGDJ4<+5clSP)8iYrGpm2qAo2t!F}v1GZ9ukW>(( zhO@06HhxDHrnI2czf>S(6h!ywH%&*ppTl%Vg5|8P090XyjcO?4&EP#LMv|6?5?7`! z*kL^6t0fCimJ*qusA*WP<-rsglK3SD*;fQvEm?qlQs{RSR@>^?Z{-x^=Ig* xQVx(IBT8MVtNB0l(lNY*24};Uq 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 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-sign_transfer_1/00016.png b/tests_zemu/snapshots/sp-sign_transfer_1/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..58ec4be3d27307c755798bbdf1be16718aad388d GIT binary patch literal 467 zcmV;^0WAKBP)|E<4q%6z^RDqJ zrGJX#MBlRmcsdF&83mZ^XLbMwmG!;s3d>r*cau;Mz5_yM-=Y^FdiE`P0gAZUw|f*I z#Pj}|*acYTe%u!BUr`JMsPCoOAu(*6(oqJ+D-vD&H>D0ZsPH=fbMQ`C;`% zKe!p$z30X1sI)r3{s!k0v_1C+caF~j{8Te1gbL6sj`d6*%-Y)}<-k49u?AebelKwYLJ@sl9zgpJE5B?E$IM^u)*wH7ORL zF`mBdk%H@w$rhk#0)N=K>#P*>$sR$Ab^vZgcKQPV0002+IKL!v4l@0>R(t>e002ov JPDHLkV1k$i;A;Q? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-sign_hash_1/00000.png b/tests_zemu/snapshots/x-sign_hash_1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..33a7bd8942d58f005037cf3642c3e3aea8dac4bf GIT binary patch literal 439 zcmV;o0Z9IdP)#DbD*d zxf9Tz{k%EIodC(7gY*fIjLC&tQ0#YLZ&PV_N+{Jj13v>)MlRLa{zJOY*{yO0{ z;VZ@ZP$@+}YRP_((Not;M7L};x@b9Qa|pKr7J4}{)ycGUy?r*;i>^Z9R=_MYz1?(J zgt7;HHr9pN1HvWXV{yoHy9IrNmPP%W2ftnd)&KmCgF~uW{QjdJvW(LY`-jF)TcH?{Etqy5Yf=qf_TZoItIft!VIJ!SeJ1oUR%X|Ju1|Ns1_>$#<_G>rDf8SY h000000002D@CMJ4?X8rIYaRdq002ovPDHLkV1hI*$-4jm literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-sign_hash_1/00001.png b/tests_zemu/snapshots/x-sign_hash_1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..974d2e79377105016cf182db7dbedd4d2b06ac02 GIT binary patch literal 765 zcmVcQX55l6&dHv>YZkLkKXA|M#RALbw`&mI43(0002Ma=r%hAIDKjc|0EV zn%q9G`E4t&rE@*K#fkc>054Qb5$z<|!+a0sCv8#DnuAMf8b+w4S408rme|%RX(dx^ z9_@gsIBPiA5MuV+0b!8b0phH54!0Q`|8N7Usp1q7^^ja8qb}=afL2ew_*VJisG%(u zTc){5;u4fXLI-GzBdI(eiCXqsF?|NKzKZ6eXgJ4jiZ`-Ar$|l*XbT9x6)ToL397=t zoD)4d{tnPqPT)f8o0S^w&J5=j0002k%JE7~Bo`h%hVou*G5Jd(#tQ>A*CMPR#?RvN zY8d_WFd(e0ID+`vQ=&w)>fJYAeEliXR5+a|+K!Z@#Ps{0avQWqF{aFb^kbt|?Uoq8 zywz{@5;P83UMeXaVkXr#=E_3JzBfRsfeJWRCFP1M@wZX@;^N>axDN%LOR z&(q$_BTD8$3i@szyt{+-5s+E__g&D{TR+85U+L@%4Svz}=ZdIJjXqewNh6~VrV?yk zF~GT)k#fUsk}bKqDb_cAR*923Acgo&xZSgG|G^G7`a_a6Hqg2ae7h8LU<|X3vfAug zt`VzT=JH#T*mWwP3HT$Xo-nGhigp>`ua}Xxk`oK+n$*4D$E6?!_q8z;7_DM1PX*IH zP4s+Y{FEURbMFR_7{D#`D-m;@R&c}r0f8DWCT3x5B&CI;Jr>(9&+=Mx?f8YuB$^%5 zJUfO8000000Pe_CSMsfY)V>4j{*olOBrc{!%ADajp4XP_)pl)og^dd>(J9uYFe}(O z!nQBtc8#yoVCQ1PwspXkAZU#**`=@id4EL*)bN@A&-X6*m_2Xu9n_u~FcQ)1I{eX6 v>_ef?dHsgDPZMAt0ABeh2OIzZ05JFkev32#!B%x$00000NkvXXu0mjfYAWknPnrHs;aewVSXmdGg}arIb=>t!VFY9p=OY(TI$tu zWZ4;J9k7&O^CqpJdT3s3kYoo$TC%5MRM&}Apm+2jIaDyE@9ygX{);9b1)Jw*i(9!l zW2r;XJP8i4Mn*ZIsj9DNRWBFTzPtz23k++CViA0Q=a(X?oGh_EIS#M}5Sdh4mEH+R zV5HC07w5IQsFQQR*jxfiv3;{&$a_g~K#C>+003UfY&3KODM80(a1{JU`T}EhJZf0r zZ&tiN@|qnw|llVvDIn2@$1>Yj*2JtLnk%lysYsNV`}hovS}3*>$~t>`V2Ss~0|7sXJ}r*X9-(wYi5 zbO+;(je)8rI|rO*U1Q30JAi#JemOfoD$V-02sI;f0E-=Vm7=Jx>cvQ&VTEt?-VjU9 z0|q|097dfF7R551r#qYcNOsN^U3}X<0Njq{YjXeq0AP$iU&nwEwRxfy00000NkvXX Hu0mjf)V5ey literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-sign_hash_1/00003.png b/tests_zemu/snapshots/x-sign_hash_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..15de6b1f593f2e6039a6114e6724516d484a91bd GIT binary patch literal 439 zcmV;o0Z9IdP)|`9009}G+*Z+H3Eyh49I8q7#003~gugUB8eJ`bK+a|xO z!{fI;Jh%7G>p1_tof%&mRB?1OiD|Zx2s6GXuh)Gzc*CJvdJ$&G-G$je5|B1tdS09P zv}X&j)L{2wi?=##CAa|QBU$z2nvTi64myEq($go+Q0F!w&+c_kfH@TuYdEBR8R%ZS z+29yXo`CY|(Me&UP|Gt*nEnzD$1@I;ieQ5S7 z{2`ElBhTD{C#bwBK!>Qh1BCpEP)vxD7)*^@3TuR{P=jP&sENJ+hrHsK^mk|arzL9%Fve|8g=a8*eXXgST( zh4jLKGLKN8u>67w^$?^qw8(D)*(&LIiwZko?*o)tb`coOl_oDNX*1C~`=qJOKC_4b z2aLs#uSldAN1sM5J4^Ne3XPR})U8N`Qpqz~umi>xvc-<;^Nk>C#d?VLmepm6KU5wnL_0jqcj{|0bThP z`@KeXm%^r8ki^*i18pa8kwJlDCv-*E3N!~S%4apYsbIY!gdL_3%U9nhH3v+7*H=iW zWd)9<@~M!fWk$|^93e}Xm5M_nySzA_!rAIsXx|tZoDIGt> zjwg7y@0L4Pk|arT0`C8mcR^2(Y^F#`A1P+pl|G89I_iw@{C`Pq zMtW_ar}NhNYl{!%eNYz!{cMtb!LWk0A!z1>oRVT3tD?eRaS~n4QSs!Zqz{rLNs=V-^AGI4$W)ya R=ac{d002ovPDHLkV1jZKp-lh) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-sign_hash_1/00005.png b/tests_zemu/snapshots/x-sign_hash_1/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7234d99ebcfab9ad149c8a2b56363821fb085dd7 GIT binary patch literal 1007 zcmVaPTY)CdsJ&deB%Mx)VaG#ZV@?fA#OpXWJ0 zAII_hdK^dD!8BMl;&4zOt#c0fP~*}aEs@=4%^xcDC+6oBu8T%y2k6XrBNz>f6^%X{ z3HJF1@h448H_!1@r#XuqodT>fH3ANm+H+YbEwd#Kmee>PeR;?tf38iV)|yglvgrGh z!YZ^z)G1WGOg=1FtgS3zE@~^AxqirJBN~G;)EP>>TLY;sEZ?%UK*vvIBF8%$hr*u3 zS3o!hS8s8u$GsEcAQ<-kxdkC}B?b9d*->RfB*U@{=BK-qcls#IKOnO7_$eqnHJ-mH zkQ=WVFcmdgSv?e3Ck3?*?E?L(RsdZ%36{AVg+;~)ZBGlIg7uCw3+WW}<=C=4P$T>% z>_A=ejYgx<_*^9RfMFlQ=hFdbK58pgGc+#kTiilcs&UZ!-5a5E0((C4b%KJ5U>WyS z4aBw2%CG5kHj6+FWscQCd7(#4`SmX~E}I~$gu+>BgSW==+=rMRFIt#rML6Cb4E`<#59yOHS6=xwk`T0Vo)oK72*Bbxq3H7vp5?aup zDp2(h%0?{-6`pcQ78ZZd`xfO#0+k}p*WZAa{jETqXy8Ov`Qv_%*B{o6*A;-Xl|bca z^+k%Mw1nxRd_!jTW$IItp_4g>Hk@+gXshG*C&_*XK`p2*#;w3gopLiMh@JQ}m%Gc# zexq&@A>sj`D-I!dvj!)9v63wRT3dCYATHto@Ymzt#|nS2?Mhgd-UlG7OiGEe#1TaO z{nk+~M>GcuLMd(yr_pFM8jVJy@tw&1eL#3?AL3M(QV^vDL_(-Zu$Ech4yc&!KZ9Cw zprvslB4}9C7cUnjSO+x)7q3Q<5aS$Mp+E>Kh*raFtDB9lsKSsI6!HrNLPSASZ@*zW z!g;cATY_a)S8!Be1Q)8I2ph&86eB^)tVETm3w98Ocs1ysbrhsTWKz^LEY&hI1x`u- zB?sus0$42=fa|2tPZU|1q2kMDFpxk007|QJY-?pw)R|WeHCl1 zhov`xhlK<-m`(FG5AA8fy|&Ucodcg7RH3Yow55sLXiumAz!O#FI59UQ=>-WrihtiS)mvin4*xt7{n{$n$x_PZZah_`@`$todN$maN z-{K7&rzEQz8`+u^cm@{-VCemYs9@aWFs}o!*0RjMMzzPPf1K6&<=NkhOiteA0s}>n zd;iYXe`8!H^PbX0`eJS}y70`%8T>n^%dV>bk>TM}C(cF@9*Jbj^5WTF;gKGIO)y zjlJ*9*PE9W@jdm~5r5wEu#TD8y6+Pnh8_O<-8#^Bx$bnOy3REWn^jXeAFev)TXe-F zTky7j?62N_lL@yzwx7O!=&4O1W7^|)7fcr%%i5*3D%0_G;tl)cpW3Io3*7!cdXW1o sV&B=e%knGs=l(tai5cc!1_ryAe9w9}zGZ%X&;TUp>FVdQ&MBb@086r+N&o-= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-sign_hash_1/00008.png b/tests_zemu/snapshots/x-sign_hash_1/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..58ec4be3d27307c755798bbdf1be16718aad388d GIT binary patch literal 467 zcmV;^0WAKBP)|E<4q%6z^RDqJ zrGJX#MBlRmcsdF&83mZ^XLbMwmG!;s3d>r*cau;Mz5_yM-=Y^FdiE`P0gAZUw|f*I z#Pj}|*acYTe%u!BUr`JMsPCoOAu(*6(oqJ+D-vD&H>D0ZsPH=fbMQ`C;`% zKe!p$z30X1sI)r3{s!k0v_1C+caF~j{8Te1gbL6sj`d6*%-Y)}<-k49u?AebelKwYLJ@sl9zgpJE5B?E$IM^u)*wH7ORL zF`mBdk%H@w$rhk#0)N=K>#P*>$sR$Ab^vZgcKQPV0002+IKL!v4l@0>R(t>e002ov JPDHLkV1k$i;A;Q? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-sign_transfer_1_legacy/00000.png b/tests_zemu/snapshots/x-sign_transfer_1_legacy/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..33a7bd8942d58f005037cf3642c3e3aea8dac4bf GIT binary patch literal 439 zcmV;o0Z9IdP)#DbD*d zxf9Tz{k%EIodC(7gY*fIjLC&tQ0#YLZ&PV_N+{Jj13v>)MlRLa{zJOY*{yO0{ z;VZ@ZP$@+}YRP_((Not;M7L};x@b9Qa|pKr7J4}{)ycGUy?r*;i>^Z9R=_MYz1?(J zgt7;HHr9pN1HvWXV{yoHy9IrNmPP%W2ftnd)&KmCgF~uW{QjdJvW(LY`-jF)TcH?{Etqy5Yf=qf_TZoItIft!VIJ!SeJ1oUR%X|Ju1|Ns1_>$#<_G>rDf8SY h000000002D@CMJ4?X8rIYaRdq002ovPDHLkV1hI*$-4jm literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-sign_transfer_1_legacy/00001.png b/tests_zemu/snapshots/x-sign_transfer_1_legacy/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ba22ea500c05e2486be36ec2643b41506505e233 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{(ba4!+nDh2#^rk}!JPnB@ z=lpK`pLC;}e@@~AZwGJBsQ>R*T6LIePG3+A)O4VX|E=^7aVL-K_kRDlRQ=yoeSRI6 zUdsga2h0Ct-gk)pr*nO0r?U$0ltrn#-kECbvU(qWrs7pyt)Co=X3$HewupBdZZ3G| zHL;WBiQ(0~lmGgt9PoXT@Q^7xYpvNXwku-CPJ6si7UtCWwxDSC2VuKpFZzM?FB ztu>;Kua>^~RfgdV#0 z`{9lL+^(08b{V&=WjUi=R1o`AWXbNp*_|u*RP6eG=SqF(w_9%vIo{jO(|o+kQSH}l y6DQv<=F04|X0)2{Hu>=RxmGX&0|*H;T;9XbuK%@ggKdZnNZ8ZW&t;ucLK6VmwX^O3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-sign_transfer_1_legacy/00002.png b/tests_zemu/snapshots/x-sign_transfer_1_legacy/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8b66af115cff583b6753d7e74fba3a7207051420 GIT binary patch literal 434 zcmV;j0ZsmiP)=ltK3G6I?aI+zjw006Mvmv;xH6nUC+UaD2E zucwoBFR`u1Z`an3$EZ@1j|)3;YT4UQRL7;1oU^t`;R(xHQ0BKO8FG1RM`=tQhZ)+_p_sIN!qj{XFy&3jhEB!8%{4ANq;8 z^w=-N=xhU{y(~5XFE^iZh6W!%_^PSPz`>N{s=YqGM6e2XFz9K>~xpS zICF7W+P8SxI3K2o*)Bpeg07*qoM6N<$g4^G|GXMYp literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-sign_transfer_1_legacy/00003.png b/tests_zemu/snapshots/x-sign_transfer_1_legacy/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ade64425be32189add5604bcd7cde7107cdcad GIT binary patch literal 442 zcmV;r0Y(0aP)Px#huFsB6jcPf3r^}aHO}Y{$8I*-^D0Ax^ z1DReDofoS;GoV?QOT6m9y}3Yr%A&t#1}JmCaBkABdv%B8QIFjh6Cd-Kz1+E;LQa{$mhg33@W`H{ms=cgXJB1_0n;Oc7oH00000 k0000000000006+u4>KfDrxs3imjD0&07*qoM6N<$f=xro5dZ)H literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-sign_transfer_1_legacy/00004.png b/tests_zemu/snapshots/x-sign_transfer_1_legacy/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..024f1c66f109f6dc86e92745db8b936b0e475e05 GIT binary patch literal 923 zcmV;M17!S(P)^H2 zy9}V3yJ^nyp#ozK6mE_5h`l=?;uPdnW4lsC)F6B3k}M| ztXHmaviGOYXK>v0f=tvZmBV=B;1*AIjlIG(!C+^hqzF8=GYZI9AocyN#%&X3m-K+G z){HuGcbB+v7ljWWhQnj0efY%2L95iy;pQ6k0-AsxK^>R67)NeEd~7r??nvXLP;4vU zGs8AHI^BDAFQ(KNfN_QQxL|zB&Q!i$`23vqyHScL&;GAs+yQphT*19BOmA;3yPFOr zjB)!uvfN!dG`Fv`RdgJppp>Zc0O2HS_8-HUYR&$`Xbs+pvd}w8CRuB+6+69a)X?Mq zZ=_DZ2W#NQ7Tp(@JXQ2YW^brR{EcZrgR0=_A-y+lNviOaOJ<4uCwpI_{8(5i;#_}5 zdfSH^Xk;L}{`39zZ4XaCCB3z#7;iU?dfvoym1eSlzajD9mhELum)%QazD1^{jarkHwx25z5sYX zem-~nC)?hcmRs)wm|bS2L|Xy`QGDJ4<+5clSP)8iYrGpm2qAo2t!F}v1GZ9ukW>(( zhO@06HhxDHrnI2czf>S(6h!ywH%&*ppTl%Vg5|8P090XyjcO?4&EP#LMv|6?5?7`! z*kL^6t0fCimJ*qusA*WP<-rsglK3SD*;fQvEm?qlQs{RSR@>^?Z{-x^=Ig* xQVx(IBT8MVtNB0l(lNY*24};Uq zTr^j^=-@~5&*JwU}yZpqKr2F|||G=^t{nd5d7d0E`oB<@#eL7bA-%YUBnj zC_y7?h0*OJ-Ap4rQ_H<+-xZ)Aj6IL$tRBMKKB*E1pk}bvjn8gOyqpYHA@jYfG(}7Y zF$>+x73uGB#$)n<5g5d=ZwZN^2C;!L8E|)Ey4|h-U9Wl{G!OMYej9BtV7S~B za5kI9{*)hC5az%0)=u{IyP<1EqvB?I59Dvv> z(?1+);u+gMA+O)RM2DiL>Z4x;{A-8`=$yz)@Bex9Z>*bSvi}+*)nxx=jKNA&p_Oiu u%owC1y#N3J000000000000000K$>57spSZ(YJWSh(=WD;>#Cy>C00tbv|>CzH8A?xKG*I zTQjur#{Cao`>%gC_sd|?N;SInB4pw(Yu)wF=bUz##_L^u=&x17wWEdm+{!OZtkXTe zFuvdVblKU1&v;iiUvFD|jbYWsxpQs^F7$UWJz0GFqUcq*8k=jB zc_wZ4x|p_HEa>Lfb+v`MS}kdZSu2R?G-!jO$JP_jVX$yHe>d3`F)E1i-t?)J>#w!sXp$ien(=BIYWGb0 z&WLoYUcWe7u7H9$VG*2VCk*$Piz7bNa4%Wy;F}P>zkj$ z!kc-W7E}>BLD7gleZkSZGy!WR-#7Ed1bk2Q54{OLIC$}_wS4I9r3f$FV}tPiz7_U` zbc4+3--Z!tM*n7*gD2rC^dv!$nS-t9@WyJWP+E}tIlo%(H8=l#KjeA6Hm>da58{3O zHI!X@y{B%1TM;JnreFJ$uj)*{D5#Bt>Z#K;K6YIbQG8=Hv^QV$g!0EG-Zu0B4^Uf; z>n6xm(z5>ahs@ujKNrl(PAgGZ!HqkuLO+H6+Uq5hY_nH@HaC=5eAV*Jn%5a(9DFNM zR|vN~osyxQvM`*0BCy~chjak{~cr>N!IY0SpoG(^G-A@ zL5!d7zcz-t3x{U*MF=5;5JF7Wyc_CBjQSwz{KZErm%Ua8a8jM~fAp4AIM5DiLUfwJ z6hK;U%#u*jnJyWn=RepxB8@msdIzyKf#zg9e)5lKZTm1M8aR_YdXE7w1 zzQm}Fgi54VE|C)7CgQ606DbMD8i=BZ(CoYzr&rQxQ;(4GA8d=5?Iu90ec&Yw?rB;()FpZ?0@Y1Nsyw0{ m65PE(GHnSVgb+dq*~Ncg9n!$!o1WaF$C?JJxheb-cbAYOT5_K18{`ag_US9TQBr!}n%-O&b@;*b(DS z#2o7>(h5P5<5&`;z_U?&X;caR-4GRR)DYpb`P(D+r#++$ogoCx#u^jq;;pV8eY}qa zn`Mo2eg-tm0gK?YPT1UQMRfDk#pum_cIm&>0gbU5VNZx<$EoDKSN-!`S%T8c7LES& zcJ5DR*SI?a+Mou1B*x%8as)z%;qWV8F9RKgAUNg#WB#Kb&u~WggU0ljDHV7B8-}5Wf2`G-;*<7 zA4E!&UNp_7vIsH9Rze3U;f%Ng%&&ByZE5QG3s<5Vrm~O%hot}I63lCfWiw8{333^0 zE^ZiZvRQ1|0lLG%_ma6@3*}Hp#PL5gf*ZkE94(Gi*4ZoTVw=gmW~96H0MkZh>pzCk z)NK8SVITY?T!ns;ppn@JSJBOzcS8~LQiL40aZK|dJWSz&zvEnza2!v~GsKbP((iXd*gqmQeBg0mz`seE>4 zK*GEXpE`f;^J%+`tqw@|P+=1N6ueq0lpWU=6nut!2i$1=gWPj%&$2rM+7HLP1e28a z&0NRq?BSb(cSo>S5ci1*A%qY@hz4>)g#i-oGX2lxNSrY;p5075yvqgZh;sVAkZ;hg zF*-cXmU+p^**7vnP0*c1++5rlUG-3*|B`Iyj+ySIGrc)l>l-tEiTcb}SSlNm7eewR ztgV&eUgJS77KY}5zZ|`Q%cccbj{HKF;TUY*8PtJ(E}0H+R#N?*&>?!%Aa9o(r)DSe zDI!;kOb38tZI-tE2p4zL$UL6cRgjV=m!O?KK*am+Pc|}-aNv_U- s(>mR`$7vQDsR)u6A%qY@2q7QJeQ1wkxl0F@!^NvigQPJh4=xOa*N8 zpccqK0Tpw@MgSAxPWN1hs%@R(ep-8<+9ril3sC8Y;jV;8J7AEH_~=XGND5kJlr-AA z7YB1eFK16c-PFM>1j@mY!?ihTPDW*@S^VhO+>Z@1B&C8pSATy5DGQJi2_b}#4<)3A zYBeTOd+A~k6nt940ax(d@>E?I5t?v>qaM?WR4o9ksSCIv=w+l(n%<^jn;M!MPdvz; z#T&86?oOe)jVNVqkSP(G@$B3f`U_wxy*eG4D*+_pV63%wY}^}YH3{z((;JA;jA!R7 z8h-)$k<9Kv(Qq^cYl(Z-ERwRaB8-!%1+D4hvtx@3-P-N)nK&o-+^mKk9a{>gBa|n= zOmM+eK05OF!%AE79Ny)Rii6uko5XSP^2O)GYhVcw9gFPxFd7#xMpd#%Ib9FxmU_S z*FirE0mOT3ASq&5K8)YFG@FIKv@nUEr^CTCKSBL99$^BJjgMb6+z`e7)qnOE-R)++ zcKw)9X&X0q;II)r0TEv#8&fNexYa7`n%-x+jr%E<9vo4KBRFd4ntT|EDgIR2Utw)A zp7m_#2jZN7QE~*bpOztULAldc1aN$(zLlHxU~0645JCtcq_Xu(d5kXIfG{~FulAN$ zj~tbcz-H9y;ZJW!fHah1{~D+<+C#*~eQ~a$Kl>v+!R#FnXjp##*4`v*&tCdm&{52E zlqsjC{N0>8 zvUgs%n3f%goF(Bkwd_FQ;T0?Y?Ae>k7&XzX>DT4_k8|#b{LszXXUD)W=di2s?^W!|v<2ZbsutJE&+^L{a;To(s;6hM7@_IC48MD~uwvvaYrig*U3I%iiPO?J_z<+Ryqic4?Ab*Mgfj2m@86MlPH8tj(c^9BdFTAbPS)tiQwI3Rm|WpKQwyu<+!k1+iM zD1CewU5fbsli48t%C!!W#@pXh>p-_gjn zZB54HIjl-sQdwS9{TE$uXew&0gABMs666R6fMwtJZQGVp;9as@1Lr)R1F4U!<*Z() z5$f`2XQkU~`aQee}> zgXFS=GR#I&uz=ZWPDXceXzi&;mY7vBN`C;NnC=b*gHCRbWp93TmY{>< zS?A0S_94ukbm92n0(i$rlhdA(b|F24hhZ3oVHk!^=ur%gpcj4V7tf#4B`9qX73kRu zt0E*{Qkq!xwB8c{JrdF!X`iMvGuW(H(>y&VTHbpp4KHHpW{V`szg5}?efZv$Ub72YS@IO&m|4lzYPO(bU z)a<94t=S^sUeNvw9QR~BGF{mTRY3=(6zOu%YDJg{A;qb5G}nW#xKhs)R#a3P8l*p2 z$;CTB63A+ICWO%oLZw-mRw;|H%hp(4_iU?9vLr1~!3cooLDXeUqO*Mxue2o74K22x z%)VIEnEm+!hF5-CP}iOb0If?>rE<0y*$MtZ2^wjd+R7!QbbTQ;s@*x?h4Tz!-oG~~ zHFx0pucv=GrT>y-&k52cIN_5%)E$OlcwfTLfI9Rkf{xF$trTi!>LX4qpN!IwL4TSJ zDCcBpGN89k#o4F1YN}qi_8T9 x@b?IF?M!9Fsbz3+w_@^*Obmu$7=~fU@(*R?49P%Qj@aPTY)CdsJ&deB%Mx)VaG#ZV@?fA#OpXWJ0 zAII_hdK^dD!8BMl;&4zOt#c0fP~*}aEs@=4%^xcDC+6oBu8T%y2k6XrBNz>f6^%X{ z3HJF1@h448H_!1@r#XuqodT>fH3ANm+H+YbEwd#Kmee>PeR;?tf38iV)|yglvgrGh z!YZ^z)G1WGOg=1FtgS3zE@~^AxqirJBN~G;)EP>>TLY;sEZ?%UK*vvIBF8%$hr*u3 zS3o!hS8s8u$GsEcAQ<-kxdkC}B?b9d*->RfB*U@{=BK-qcls#IKOnO7_$eqnHJ-mH zkQ=WVFcmdgSv?e3Ck3?*?E?L(RsdZ%36{AVg+;~)ZBGlIg7uCw3+WW}<=C=4P$T>% z>_A=ejYgx<_*^9RfMFlQ=hFdbK58pgGc+#kTiilcs&UZ!-5a5E0((C4b%KJ5U>WyS z4aBw2%CG5kHj6+FWscQCd7(#4`SmX~E}I~$gu+>BgSW==+=rMRFIt#rML6Cb4E`<#59yOHS6=xwk`T0Vo)oK72*Bbxq3H7vp5?aup zDp2(h%0?{-6`pcQ78ZZd`xfO#0+k}p*WZAa{jETqXy8Ov`Qv_%*B{o6*A;-Xl|bca z^+k%Mw1nxRd_!jTW$IItp_4g>Hk@+gXshG*C&_*XK`p2*#;w3gopLiMh@JQ}m%Gc# zexq&@A>sj`D-I!dvj!)9v63wRT3dCYATHto@Ymzt#|nS2?Mhgd-UlG7OiGEe#1TaO z{nk+~M>GcuLMd(yr_pFM8jVJy@tw&1eL#3?AL3M(QV^vDL_(-Zu$Ech4yc&!KZ9Cw zprvslB4}9C7cUnjSO+x)7q3Q<5aS$Mp+E>Kh*raFtDB9lsKSsI6!HrNLPSASZ@*zW z!g;cATY_a)S8!Be1Q)8I2ph&86eB^)tVETm3w98Ocs1ysbrhsTWKz^LEY&hI1x`u- zB?sus0$42=fa|2tPZU|1q2kMDFpxk007|QJY-?pw)R|WeHCl1 zhov`xhlK<-m`(FG5AA8fy|&Ucodcg7RH3Yow55sLXiumAz!O#FI59UQ=>-WrihtiS)mvin4*xt7{n{$n$x_PZZah_`@`$todN$maN z-{K7&rzEQz8`+u^cm@{-VCemYs9@aWFs}o!*0RjMMzzPPf1K6&<=NkhOiteA0s}>n zd;iYXe`8!H^PbX0`eJS}y70`%8T>n^%dV>bk>TM}C(cF@9*Jbj^5WTF;gKGIO)y zjlJ*9*PE9W@jdm~5r5wEu#TD8y6+Pnh8_O<-8#^Bx$bnOy3REWn^jXeAFev)TXe-F zTky7j?62N_lL@yzwx7O!=&4O1W7^|)7fcr%%i5*3D%0_G;tl)cpW3Io3*7!cdXW1o sV&B=e%knGs=l(tai5cc!1_ryAe9w9}zGZ%X&;TUp>FVdQ&MBb@086r+N&o-= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-sign_transfer_1_legacy/00016.png b/tests_zemu/snapshots/x-sign_transfer_1_legacy/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..58ec4be3d27307c755798bbdf1be16718aad388d GIT binary patch literal 467 zcmV;^0WAKBP)|E<4q%6z^RDqJ zrGJX#MBlRmcsdF&83mZ^XLbMwmG!;s3d>r*cau;Mz5_yM-=Y^FdiE`P0gAZUw|f*I z#Pj}|*acYTe%u!BUr`JMsPCoOAu(*6(oqJ+D-vD&H>D0ZsPH=fbMQ`C;`% zKe!p$z30X1sI)r3{s!k0v_1C+caF~j{8Te1gbL6sj`d6*%-Y)}<-k49u?AebelKwYLJ@sl9zgpJE5B?E$IM^u)*wH7ORL zF`mBdk%H@w$rhk#0)N=K>#P*>$sR$Ab^vZgcKQPV0002+IKL!v4l@0>R(t>e002ov JPDHLkV1k$i;A;Q? literal 0 HcmV?d00001 diff --git a/tests_zemu/tests/legacy.test.ts b/tests_zemu/tests/legacy.test.ts index efd5362..d4b25e2 100644 --- a/tests_zemu/tests/legacy.test.ts +++ b/tests_zemu/tests/legacy.test.ts @@ -21,7 +21,7 @@ import { blake2bFinal, blake2bInit, blake2bUpdate } from 'blakejs' import { JSON_TEST_CASES } from './testscases/json' import { HASH_TEST_CASES } from './testscases/hash' -import { TRANSACTIONS_TEST_CASES } from './testscases/transactions' +import { TRANSACTIONS_LEGACY_TEST_CASES } from './testscases/transactions' import { APDU_TEST_CASES } from './testscases/legacy_apdu' // @ts-expect-error import ed25519 from 'ed25519-supercop' @@ -181,37 +181,29 @@ describe.each(HASH_TEST_CASES)('Hash transactions', function (data) { }) }) -describe.each(TRANSACTIONS_TEST_CASES)('Tx transactions', function (data) { +describe.each(TRANSACTIONS_LEGACY_TEST_CASES)('Tx transactions', function (data) { test.only.each(models)('sign', async function (m) { const sim = new Zemu(m.path) try { await sim.start({ ...defaultOptions, model: m.name }) const app = new Kda(sim.getTransport()); - const responseAddr = await app.getPublicKey(data.txParams.path) - const pubKey = responseAddr.publicKey - console.log(pubKey) + const { publicKey } = await app.getPublicKey(data.txParams.path); - // do not wait here... we need to navigate - let signatureRequest = await app["signTransferTx"](data.txParams); + let signatureRequest = app["signTransferTx"](data.txParams); - // // Wait until we are not in the main menu - // await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()) - // await sim.compareSnapshotsAndApprove('.', `${m.prefix.toLowerCase()}-sign_${data.name}`) - - // const signatureResponse = await signatureRequest - // console.log(signatureResponse) - - // const rawHash = - // typeof data.hash == 'string' - // ? data.hash.length == 64 - // ? Buffer.from(data.hash, 'hex') - // : Buffer.from(data.hash, 'base64') - // : Buffer.from(data.hash) - // // Now verify the signature - // const valid = ed25519.verify(signatureResponse.signature, rawHash, pubKey) - // expect(valid).toEqual(true) + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()) + await sim.compareSnapshotsAndApprove('.', `${m.prefix.toLowerCase()}-sign_${data.name}_legacy`) + + // Wait until we are not in the main menu + const signatureResponse = await signatureRequest + console.log("Pubkey: ", publicKey.toString('hex')) + console.log("Signature: ", signatureResponse.signature) + + // Now verify the signature + const valid = ed25519.verify(signatureResponse.signature, signatureResponse.hash, publicKey) + expect(valid).toEqual(true) } finally { await sim.close() } diff --git a/tests_zemu/tests/testscases/transactions.ts b/tests_zemu/tests/testscases/transactions.ts index 21e2954..5802a3d 100644 --- a/tests_zemu/tests/testscases/transactions.ts +++ b/tests_zemu/tests/testscases/transactions.ts @@ -108,3 +108,82 @@ export const TRANSACTIONS_TEST_CASES = [ recipient_chainId: 2, }, ] + +export const TRANSACTIONS_LEGACY_TEST_CASES = [ + { + name: 'transfer_1', + type: TransferTxType.TRANSFER, + txParams: { + path: PATH, + recipient: '83934c0f9b005f378ba3520f9dea952fb0a90e5aa36f1b5ff837d9b30c471790', + amount: "1.23", + network: "testnet04", + chainId: 0, + gasPrice: "1.0e-6", + gasLimit: "2300", + creationTime: 1665647810, + ttl: "600", + nonce: "2022-10-13 07:56:50.893257 UTC", + }, + }, + + // { + // name: 'transfer_test_handler_legacy_len_287', + // type: TransferTxType.TRANSFER, + // txParams: { + // path: PATH, + // recipient: '83934c0f9b005f378ba3520f9dea952fb0a90e5aa36f1b5ff837d9b30c471790', + // amount: "1.233333333333333333333333333333", + // network: "testnet040000000", + // chainId: 0, + // gasPrice: "1.011111111111111e-6", + // gasLimit: "0123456789", + // creationTime: 9876543210, + // ttl: "600000000000000000001", + // nonce: "2022-10-13 07:56:50.893257 UTC", + // namespace: "testnamespace012", + // module: "testmoduletestmoduletestmodule01" + // }, + // blob : '{"networkId":"testnet04","payload":{"exec":{"data":{},"code":"(coin.transfer \\"k:de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad\\" \\"k:83934c0f9b005f378ba3520f9dea952fb0a90e5aa36f1b5ff837d9b30c471790\\" 1.23)"}},"signers":[{"pubKey":"de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad","clist":[{"args":["k:de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad","k:83934c0f9b005f378ba3520f9dea952fb0a90e5aa36f1b5ff837d9b30c471790",1.23],"name":"coin.TRANSFER"},{"args":[],"name":"coin.GAS"}]}],"meta":{"creationTime":1665647810,"ttl":600,"gasLimit":2300,"chainId":"0","gasPrice":1.0e-6,"sender":"k:de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad"},"nonce":"2022-10-13 07:56:50.893257 UTC"}', + // }, + + // { + // name: 'transfer_test_handler_legacy_len_285', + // type: TransferTxType.TRANSFER, + // txParams: { + // path: PATH, + // recipient: '83934c0f9b005f378ba3520f9dea952fb0a90e5aa36f1b5ff837d9b30c471790', + // amount: "1.233333333333333333333333333333", + // network: "testnet040000000", + // chainId: 0, + // gasPrice: "1.011111111111111e-6", + // gasLimit: "01234567", + // creationTime: 9876543210, + // ttl: "600000000000000000001", + // nonce: "2022-10-13 07:56:50.893257 UTC", + // namespace: "testnamespace012", + // module: "testmoduletestmoduletestmodule01" + // }, + // blob : '{"networkId":"testnet04","payload":{"exec":{"data":{},"code":"(coin.transfer \\"k:de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad\\" \\"k:83934c0f9b005f378ba3520f9dea952fb0a90e5aa36f1b5ff837d9b30c471790\\" 1.23)"}},"signers":[{"pubKey":"de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad","clist":[{"args":["k:de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad","k:83934c0f9b005f378ba3520f9dea952fb0a90e5aa36f1b5ff837d9b30c471790",1.23],"name":"coin.TRANSFER"},{"args":[],"name":"coin.GAS"}]}],"meta":{"creationTime":1665647810,"ttl":600,"gasLimit":2300,"chainId":"0","gasPrice":1.0e-6,"sender":"k:de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad"},"nonce":"2022-10-13 07:56:50.893257 UTC"}', + // }, + + // { + // name: 'transfer_test_handler_legacy_len_284', + // type: TransferTxType.TRANSFER, + // txParams: { + // path: PATH, + // recipient: '83934c0f9b005f378ba3520f9dea952fb0a90e5aa36f1b5ff837d9b30c471790', + // amount: "1.233333333333333333333333333333", + // network: "testnet040000000", + // chainId: 0, + // gasPrice: "1.011111111111111e-6", + // gasLimit: "0123456", + // creationTime: 9876543210, + // ttl: "600000000000000000001", + // nonce: "2022-10-13 07:56:50.893257 UTC", + // namespace: "testnamespace012", + // module: "testmoduletestmoduletestmodule01" + // }, + // blob : '{"networkId":"testnet04","payload":{"exec":{"data":{},"code":"(coin.transfer \\"k:de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad\\" \\"k:83934c0f9b005f378ba3520f9dea952fb0a90e5aa36f1b5ff837d9b30c471790\\" 1.23)"}},"signers":[{"pubKey":"de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad","clist":[{"args":["k:de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad","k:83934c0f9b005f378ba3520f9dea952fb0a90e5aa36f1b5ff837d9b30c471790",1.23],"name":"coin.TRANSFER"},{"args":[],"name":"coin.GAS"}]}],"meta":{"creationTime":1665647810,"ttl":600,"gasLimit":2300,"chainId":"0","gasPrice":1.0e-6,"sender":"k:de12b5e16b93fe81ca4d70656bee4334f2e40f9f28b9796e792d28f2cead74ad"},"nonce":"2022-10-13 07:56:50.893257 UTC"}', + // }, +]