From 29bb56b48e29c07e43f2f022b14c71a3b0341f28 Mon Sep 17 00:00:00 2001 From: coderofstuff <114628839+coderofstuff@users.noreply.github.com> Date: Fri, 15 Sep 2023 20:21:55 -0600 Subject: [PATCH 1/7] Revert DEBUG=1 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index df9129c..e9d02a2 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,7 @@ VARIANT_PARAM = COIN VARIANT_VALUES = KAS # Enabling DEBUG flag will enable PRINTF and disable optimizations -DEBUG = 1 +#DEBUG = 1 ######################################## # Application custom permissions # From 4aa23e3a918bc76ad3c714ee9b9cd8fea70ec4f4 Mon Sep 17 00:00:00 2001 From: coderofstuff <114628839+coderofstuff@users.noreply.github.com> Date: Fri, 15 Sep 2023 20:21:55 -0600 Subject: [PATCH 2/7] Add Reject Message STAX flow --- src/ui/nbgl_display_message.c | 15 ++++++-- .../nanos/test_sign_message_refused/00000.png | Bin 0 -> 371 bytes .../nanos/test_sign_message_refused/00001.png | Bin 0 -> 327 bytes .../nanos/test_sign_message_refused/00002.png | Bin 0 -> 387 bytes .../nanos/test_sign_message_refused/00003.png | Bin 0 -> 341 bytes .../nanos/test_sign_message_refused/00004.png | Bin 0 -> 340 bytes .../nanos/test_sign_message_refused/00005.png | Bin 0 -> 411 bytes .../test_sign_message_refused/00000.png | Bin 0 -> 399 bytes .../test_sign_message_refused/00001.png | Bin 0 -> 367 bytes .../test_sign_message_refused/00002.png | Bin 0 -> 461 bytes .../test_sign_message_refused/00003.png | Bin 0 -> 364 bytes .../test_sign_message_refused/00004.png | Bin 0 -> 365 bytes .../test_sign_message_refused/00005.png | Bin 0 -> 474 bytes .../nanox/test_sign_message_refused/00000.png | Bin 0 -> 399 bytes .../nanox/test_sign_message_refused/00001.png | Bin 0 -> 367 bytes .../nanox/test_sign_message_refused/00002.png | Bin 0 -> 461 bytes .../nanox/test_sign_message_refused/00003.png | Bin 0 -> 364 bytes .../nanox/test_sign_message_refused/00004.png | Bin 0 -> 366 bytes .../nanox/test_sign_message_refused/00005.png | Bin 0 -> 474 bytes .../stax/test_sign_message_kanji/00000.png | Bin 7884 -> 8565 bytes .../test_sign_message_refused/part0/00000.png | Bin 0 -> 8565 bytes .../test_sign_message_refused/part0/00001.png | Bin 0 -> 8412 bytes .../test_sign_message_refused/part0/00002.png | Bin 0 -> 6088 bytes .../test_sign_message_refused/part0/00003.png | Bin 0 -> 10839 bytes .../test_sign_message_refused/part1/00000.png | Bin 0 -> 8565 bytes .../test_sign_message_refused/part1/00001.png | Bin 0 -> 10771 bytes .../test_sign_message_refused/part1/00002.png | Bin 0 -> 8412 bytes .../test_sign_message_refused/part1/00003.png | Bin 0 -> 6088 bytes .../test_sign_message_refused/part1/00004.png | Bin 0 -> 10839 bytes .../test_sign_message_refused/part2/00000.png | Bin 0 -> 8565 bytes .../test_sign_message_refused/part2/00001.png | Bin 0 -> 10771 bytes .../test_sign_message_refused/part2/00002.png | Bin 0 -> 9406 bytes .../test_sign_message_refused/part2/00003.png | Bin 0 -> 8412 bytes .../test_sign_message_refused/part2/00004.png | Bin 0 -> 6088 bytes .../test_sign_message_refused/part2/00005.png | Bin 0 -> 10839 bytes .../stax/test_sign_message_simple/00000.png | Bin 7884 -> 8565 bytes tests/test_sign_personal_message_cmd.py | 35 +++++++++++++++++- 37 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 tests/snapshots/nanos/test_sign_message_refused/00000.png create mode 100644 tests/snapshots/nanos/test_sign_message_refused/00001.png create mode 100644 tests/snapshots/nanos/test_sign_message_refused/00002.png create mode 100644 tests/snapshots/nanos/test_sign_message_refused/00003.png create mode 100644 tests/snapshots/nanos/test_sign_message_refused/00004.png create mode 100644 tests/snapshots/nanos/test_sign_message_refused/00005.png create mode 100644 tests/snapshots/nanosp/test_sign_message_refused/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_message_refused/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_message_refused/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_message_refused/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_message_refused/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_message_refused/00005.png create mode 100644 tests/snapshots/nanox/test_sign_message_refused/00000.png create mode 100644 tests/snapshots/nanox/test_sign_message_refused/00001.png create mode 100644 tests/snapshots/nanox/test_sign_message_refused/00002.png create mode 100644 tests/snapshots/nanox/test_sign_message_refused/00003.png create mode 100644 tests/snapshots/nanox/test_sign_message_refused/00004.png create mode 100644 tests/snapshots/nanox/test_sign_message_refused/00005.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part0/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part0/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part0/00002.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part0/00003.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part1/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part1/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part1/00002.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part1/00003.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part1/00004.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part2/00000.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part2/00001.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part2/00002.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part2/00003.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part2/00004.png create mode 100644 tests/snapshots/stax/test_sign_message_refused/part2/00005.png diff --git a/src/ui/nbgl_display_message.c b/src/ui/nbgl_display_message.c index dee6e2e..92593c9 100644 --- a/src/ui/nbgl_display_message.c +++ b/src/ui/nbgl_display_message.c @@ -59,6 +59,15 @@ static void confirm_message_rejection(void) { nbgl_useCaseStatus("Message signing\ncancelled", false, ui_menu_main); } +static void ask_message_rejection_confirmation(void) { + // display a choice to confirm/cancel rejection + nbgl_useCaseConfirm("Reject message?", + NULL, + "Yes, Reject", + "Go back to message", + confirm_message_rejection); +} + static void confirm_message_approval(void) { // display a success status page and go back to main validate_message(true); @@ -69,7 +78,7 @@ static void review_message_choice(bool confirm) { if (confirm) { confirm_message_approval(); } else { - confirm_message_rejection(); + ask_message_rejection_confirmation(); } } @@ -117,9 +126,9 @@ int ui_display_message() { nbgl_useCaseReviewStart(&C_stax_app_kaspa_64px, "Sign Message", NULL, - "Cancel", + "Reject message", continue_message_review, - confirm_message_rejection); + ask_message_rejection_confirmation); return 0; } diff --git a/tests/snapshots/nanos/test_sign_message_refused/00000.png b/tests/snapshots/nanos/test_sign_message_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f81b25d230f8bdcdac05615cccd494571788979c GIT binary patch literal 371 zcmV-(0gV2MP)4&GVGQDr2@!~bAP9ngW$~WCRkrnWy}bP9VFl0u zx%4@hZa{Ouu6{1J+6ltLdjgkWLIdiK$+mvwpL!Dn%m@hFD1GLbpFg2S0Mi;%`UF}P zMBruUwz7EwIv|1jBPM(h+zxWioQ3d#C!xM4p}r@f{%DxXP-8im%#)#|KFh}`^$f|= zWNmy&rugt;^}yx;DySwm=w+a!9yJ1Tb7pvX>z^5(Y^psaD+fyZV)FX1^YG@1A$_~E z)I9TOb=an%8Zk!z3aZc8nxV#P)0pkd<$yg$$(*1bqV1x~DnMo)Ir1+uk9j*9y0ERR zG3w17a=k4A(u~2yKy;Qwd R6kGrR002ovPDHLkV1le)r|kd$ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_refused/00001.png b/tests/snapshots/nanos/test_sign_message_refused/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f6d2cca97c338f76ce6fe0b23f03bfa0525da1c5 GIT binary patch literal 327 zcmV-N0l5B&P)V6m>#}I(rA4#K>N`a002ovPDHLkV1kFUksJU3 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_refused/00002.png b/tests/snapshots/nanos/test_sign_message_refused/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..0964ed838b8e071e0db87776366f34dd99b4e945 GIT binary patch literal 387 zcmV-}0et?6P)Nklos`7y+eOmEYt$C1XY)pln+Z1VIqEah==z6^xU<%Kxu0 zN*Ft)ny^2k93X~sGF&++Q5$j7aG}Mfe9foryhe<2fVM;b|J%E-psi1Z<$djR0P#*i zO@f{KK+8Pk&sD>*1JiaxGs@ji`QS2Vb7(3%P5Slhu46-8bKo hf~F-L5ClQ6E_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_refused/00004.png b/tests/snapshots/nanos/test_sign_message_refused/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7e7049cb3e9bcfb1601ec510ee465d38229d4d GIT binary patch literal 340 zcmV-a0jvIrP)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!gPVv!e{1wVPd@+= z5p63?%kDA~#^XqG8AnQkpux7*a=%m`b>nhXOa>}oT51)*2kUw5D(;a!0ZQ+D)&Zmj zCFiNnEDg#$v+};Cb)1bt(4hY}-ni6)IunrBLCN&xlH2qyXB>Hlkl@KmC@;r_!*8I) zlh5hbx(yt*eFqUP$^=kEA6st)dkua9sB`}jH}Ebt(_ofEU^pz@nFZ-I@ScqKvp1Xl zB79bZ{w?6pvNKrI!s^9A?BOE;G%yW|p1lxDH2iZKfUf5^~(CIA4yGhfVf$DpW>Y_k9W002ovPDHLk FV1k#gxOo5o literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_refused/00000.png b/tests/snapshots/nanosp/test_sign_message_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a95fdd26f372c9b936555276daf0234a6d63a0dc GIT binary patch literal 399 zcmV;A0dW3_P)uO23*$P?WUkY3nc%rVW2M~wBM9*|mG%teu@a*(=7*QeH>W^Ccd+}6+@l^t6u>{ra&{6(@n*tJ7S)ea|w< zPT+e|a>9PG`ZaAw{>>5WM>fXCEL^u+4CpS0?pu%ad&T=dw?1Cb@$}^}v1jRXukYI` zcExU<)rs|z;+fVf-nQPE^!=WEl2Xu}&!-;$Ox-sz=63AdUEiAC+^k>qPxk%IXu*B8 z$(6r8n!Z|diy{BQJ;sf8tDGXc7q8gMvNHD3m-vZEGOkr@JhB_=L+hP5ew%FVmpE-b zXWPQZChr1#jc(3gHX&=1y=3i!POT@M?-Tu(hy#6&3?!a$zkF%^)nrMXD@fSW)z4*} HQ$iB}6dj-W literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_refused/00002.png b/tests/snapshots/nanosp/test_sign_message_refused/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..6df9c9df488d0cf8e3ff56ebe9be01413918d2a2 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^i$>EaktG3V{Az`Vl>JPnCq zZ`JPn_qel^e}$k?f`?Sjl|T1`-6aK__c(}wbS1nyzxwf%pnn3%Z>HKDJYCJ;|NXsf z!-SwNL%GxOHKjG@wjbRp6lk#~C-c6wLc7|r8$DAv!Xkz2okYKH>but}`QLiM%Z}Ef z^eM#w(|nEvzCYCSnPtk!FfSoydkEUAyNKu>ZJM-rQo?T z&xB?#Tks+B&8bCUUR9BBSUuQpVc;vbMDUV zN}uh$cy?CJT=`0_Q@fMi2gW?yBRKme3-9ZW7uvJ8o_rj1dZ)>(hI=z_efY74C$D(s z^;ToUwYNj~)=f783UmGam-V^OY5m_#0rA)4s+0d;z7Q=X`0;J3++OSH+nMY?x$pSy z_clj1@c(W{--+c7Pan5bNEYn$i`=}kOZ`9Nf`4moI~!&c&o@4_v_^mP?cdIevD4cuHn_ckM5kA4=SnQYFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YMjqtrV%Nn6esuj!jIMi}Btw`sohxwi1&U@}K{{10Q-!s%eVxF#kF6*2U FngGM>p?d%T literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_refused/00005.png b/tests/snapshots/nanosp/test_sign_message_refused/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..63b43ce77bafd9c8442f609497321a9da26e91a0 GIT binary patch literal 474 zcmV<00VV#4P)%U^7k#000000058qS{=Y2rIfm# z#~2@u0o)_TXq5DtSpmxQkH6}x<U=PLxu-Mr%5Ugaaf2e?C2Z43Hv^6K`e1sm5f z#!kYe=2}W=63=LT%r`Eb0d`hE7?ow6HlA(fTpmGpv zk6MRAjegFUf008iW9~!6^t%;Me Q&Hw-a07*qoM6N<$g7a(EssI20 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_refused/00000.png b/tests/snapshots/nanox/test_sign_message_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..a95fdd26f372c9b936555276daf0234a6d63a0dc GIT binary patch literal 399 zcmV;A0dW3_P)uO23*$P?WUkY3nc%rVW2M~wBM9*|mG%teu@a*(=7*QeH>W^Ccd+}6+@l^t6u>{ra&{6(@n*tJ7S)ea|w< zPT+e|a>9PG`ZaAw{>>5WM>fXCEL^u+4CpS0?pu%ad&T=dw?1Cb@$}^}v1jRXukYI` zcExU<)rs|z;+fVf-nQPE^!=WEl2Xu}&!-;$Ox-sz=63AdUEiAC+^k>qPxk%IXu*B8 z$(6r8n!Z|diy{BQJ;sf8tDGXc7q8gMvNHD3m-vZEGOkr@JhB_=L+hP5ew%FVmpE-b zXWPQZChr1#jc(3gHX&=1y=3i!POT@M?-Tu(hy#6&3?!a$zkF%^)nrMXD@fSW)z4*} HQ$iB}6dj-W literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_refused/00002.png b/tests/snapshots/nanox/test_sign_message_refused/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..6df9c9df488d0cf8e3ff56ebe9be01413918d2a2 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^i$>EaktG3V{Az`Vl>JPnCq zZ`JPn_qel^e}$k?f`?Sjl|T1`-6aK__c(}wbS1nyzxwf%pnn3%Z>HKDJYCJ;|NXsf z!-SwNL%GxOHKjG@wjbRp6lk#~C-c6wLc7|r8$DAv!Xkz2okYKH>but}`QLiM%Z}Ef z^eM#w(|nEvzCYCSnPtk!FfSoydkEUAyNKu>ZJM-rQo?T z&xB?#Tks+B&8bCUUR9BBSUuQpVc;vbMDUV zN}uh$cy?CJT=`0_Q@fMi2gW?yBRKme3-9ZW7uvJ8o_rj1dZ)>(hI=z_efY74C$D(s z^;ToUwYNj~)=f783UmGam-V^OY5m_#0rA)4s+0d;z7Q=X`0;J3++OSH+nMY?x$pSy z_clj1@c(W{--+c7Pan5bNEYn$i`=}kOZ`9Nf`4moI~!&c&o@4_v_^mP?cdIevD4cuHn_ckM5kA4=SnQYFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=Yj&LwL#RobX?V zbQiII^4uMl|Z~1l7yy12MZ$b&j z?TtJM^{@JVDT&uHZn5nzWh-TPv_J7m;jgq0f(|YbTZHdAM)myZxO-=(=&Jp4l55=A zUQcBF*M05wg}=Y7bG1(&{&siyl(&8#-KTdql}}rLm3hWhy}m5glJN5fpDsOd=_5x% z{HDvZre)46&g0e%{pDoXaPf-VTe-XJSGLU(Jj!tDNp8H)+;exzHoZ2kko_Ba_xXNR zr;WUGZIbufwyah@qN*6%Wc!qrE&9UV%v{IGH{4)eXE1ondwSC@^_ATTjUX{kS3j3^ HP6K000000Kjcts{{C_lv4Nm z7~{>6oa9%4QR-_(W%yYgz%^owMoF)k6`)N2_@};FJ|0;mBFqZVGM)H^YXRyxZe0V{ z0tBmlX2Q4t&tO~t>z$`?EkK=p>%GXe0EKn-!(&duc|p{tgj-`e;k`P5Yxu4MzZH-@ zrWpqSLVWLL7IxCBll?jpov1D`9FEjDOE6MVU8Nq>yL=`10Jn*%Z9#8NUfmwGVB zbyh%@*TMPUh-lMm(2T41qS4%MZ@G_oVc^6u(e^K7+))4kz-k|TfN^{}dKBdXs2s%F zqt@ooIBI+z?1P4;2_x0`T5q>wbEGLWx}@0`%2ZZB?a17mG@`x86`*V>^BS~QyUikf zas|jfv^$r+sm|^%SAZk`@2vaJqg$>~kNUf)RfT38?lOPT4*&oF008dr3v^`?fmkS) QN&o-=07*qoM6N<$g1|W1y8r+H literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_kanji/00000.png b/tests/snapshots/stax/test_sign_message_kanji/00000.png index ef8c0f1575e871ea832d4dd46cf0af81c2a00c36..e72560fd99928c146740d4e74adaee88d67821f0 100644 GIT binary patch literal 8565 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 E2mRR*RsaA1 literal 7884 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 QEA^VQPVT4bPlVj~578&LjQ{`u diff --git a/tests/snapshots/stax/test_sign_message_refused/part0/00000.png b/tests/snapshots/stax/test_sign_message_refused/part0/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e72560fd99928c146740d4e74adaee88d67821f0 GIT binary patch literal 8565 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 E2mRR*RsaA1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part0/00001.png b/tests/snapshots/stax/test_sign_message_refused/part0/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..56afa4b24a679fd8af89ff0aa7e3d02eece4fdce GIT binary patch literal 8412 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part0/00002.png b/tests/snapshots/stax/test_sign_message_refused/part0/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..df803b1aca92c60bc2a8e2f47fe34abc9b6ffa9f GIT binary patch literal 6088 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part0/00003.png b/tests/snapshots/stax/test_sign_message_refused/part0/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..ad6b72ec734c1fc821903cbac3e9d60aa965e606 GIT binary patch literal 10839 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part1/00000.png b/tests/snapshots/stax/test_sign_message_refused/part1/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e72560fd99928c146740d4e74adaee88d67821f0 GIT binary patch literal 8565 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 E2mRR*RsaA1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part1/00001.png b/tests/snapshots/stax/test_sign_message_refused/part1/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e13708c49428930a7897d8d2c31c457173e76883 GIT binary patch literal 10771 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part1/00002.png b/tests/snapshots/stax/test_sign_message_refused/part1/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..56afa4b24a679fd8af89ff0aa7e3d02eece4fdce GIT binary patch literal 8412 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part1/00003.png b/tests/snapshots/stax/test_sign_message_refused/part1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..df803b1aca92c60bc2a8e2f47fe34abc9b6ffa9f GIT binary patch literal 6088 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part1/00004.png b/tests/snapshots/stax/test_sign_message_refused/part1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..ad6b72ec734c1fc821903cbac3e9d60aa965e606 GIT binary patch literal 10839 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part2/00000.png b/tests/snapshots/stax/test_sign_message_refused/part2/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e72560fd99928c146740d4e74adaee88d67821f0 GIT binary patch literal 8565 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 E2mRR*RsaA1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part2/00001.png b/tests/snapshots/stax/test_sign_message_refused/part2/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e13708c49428930a7897d8d2c31c457173e76883 GIT binary patch literal 10771 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part2/00002.png b/tests/snapshots/stax/test_sign_message_refused/part2/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c428ef3e4d8837bb678787564b274d523cc35969 GIT binary patch literal 9406 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part2/00003.png b/tests/snapshots/stax/test_sign_message_refused/part2/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..56afa4b24a679fd8af89ff0aa7e3d02eece4fdce GIT binary patch literal 8412 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part2/00004.png b/tests/snapshots/stax/test_sign_message_refused/part2/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..df803b1aca92c60bc2a8e2f47fe34abc9b6ffa9f GIT binary patch literal 6088 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_refused/part2/00005.png b/tests/snapshots/stax/test_sign_message_refused/part2/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..ad6b72ec734c1fc821903cbac3e9d60aa965e606 GIT binary patch literal 10839 zcmeHtXH=8xwk}Pj35bZ&Ei^UsDpeHJNS79h6lv0X3j_oNmLQ-Yy@SA_M_TBxK#52R zQiTW+0|W>mKnN|A`?2;O``&TKIOB|Q&p!9hz5nv%d%w5LIp0~HXTCAedwh|Rn~{o& z>LU1w<})fP>UUIBG==muz&}d*9aU6Rclg1Y8pgr7ggHW1rDQw8XUgyAMemHB53ht? zGC*k3dp;Bj-Dj|f`fy$73B$7}RGgcBU|{eiwlpRbCN7}bhbp=^B89ED8@qK)>-`0) zhP_j@=TuZH2|YB0=OfSEzevOMikps;N{${x<;n)3nz#<9`cuP}+93M>c)&iYoQdj} ziC+15pQFEO`iCBx^b-9C0d>-(qnmIl@~m&A{-Gj1TL713MaNnAgG9dNe5FC-0QK_) zuqosE64zdcR89&3CDu$2x}SAbEA3&k3gQRwsoeZ!ljhbhoLD#&-}=U;LV4_Q(k*dK zy+61)C4*#IeVtt`1*%;Q`)Hgzgk2oNnk%(zsY!B(Ms|TA5Dio2?eXnw6AK2TN(E=m z$a6#AdBq1*cTR?G!e7l8zBm0noOL$5ShVJ|vJ9{hr^SYn-29!`-pi1lb2iL)&E0|J#k`XP$6rJ0btu_;w)%{ zucZY)7y75z!-j5Fnf=yE`{&1J(*GsH`IDcc?&TGBKncI3Y)+MFP_o=K%u{A zt&d+XW@R3wga21E@FvM@UP+hwk;l!s$(2A1iufWJ^FK|b2MKC1*)Im;8UD7I9ucwn z6mpw0&85GM=M}3ZL5gCjDZPE{4W)cuD^IoVOCRhyaBsQ~(5oy;P~Hg3~{ zY-1-Jr_hW#w$w7)Yuw+oJBv2yI3*?4xMPVf%#6TDKCLYB$loLLjUA?P#=qSHbS9l8 z*Y`uZ6zW&b11KZoO|-dV`t2c##3eRJPxY`^gIcC3zy2`wGRlP~+;yeTx#X!qAB{h} z%EGJGV}`gt^Zo@OH@S7~IAVpz%z$E?Mh#$%L!mF+JPm~a!z+clhZqSajQ_~hH)fz= zG8p2rQM&0l+t#C*yw-p z8vWNV;{WS2oRC&&?pM`=5{kc)Iz$;!q(z%JB1MDkwcSd{JhU^ZcxA5ibN!Jre=_f* zYYqtX6|L`?2COl5nS$VJu^MbT){-E8-3QEYG~wi!lHoYh(zvZsCmK%(q>xArXu`Mp z+~!~iV9A}idgYU@X^u0-JVW*CIGl5n#U;y?U*{5NS(Ql49&wG6egOPG@%JCZ!XBwFr8xkm2@G9_+n8oyNFw? zXLn^~-@?1HRpZjAKv{-`kbJZBrN)wn_`ctLk{?`n&JWbT)!3Az2L$6xl2WpzsxROzE+b(9sQe*W9XqWo6~* zwjswoqlspdChqo6k1|MCQqlMMXqaeU+x<}dT3AzQ;&mlyW4G9ZKDpx8ap(Wvj3CJ9+)(E+=T(!rH&ffo=`f zPr6QaACiugf4g0RU_4WjiYhBVR!)jEKVlU)M-S2w9;{a@Db2(%mYlurJ#TR>7M!AD z^)|;{lKb*Lti7V2@hf2zmR^mir`^%K$b?F%a5}WP=%9Gz(JkQosk*(`t>9Lx*|9Z1 zU5df+wNN(5wcE^nc=D{_r&&T^Vrop1Co4PTIxx6};}7h;I)#OwDdkgN} zTN}OkhdV3wGb{e5fe$ZmeJ$J1zng?T+(ll5;6iLR&$N0q)(+(a>@H)llz`Y? z$=lFP#QW^Q3U;rnWWU~wZDbs*cgJgHI2ERvlKGFn^FdVd*!TejevNq$!rd^=V3NM% z+BEBl(6g+w7UP}^)v{-c>WR9lWq1lEFE(qC?CrmNbDv_!{{HaMs%PAF_^%LJ9xE-w zC#W`Ns};-}wOZP{%zX^FKO-ap_yO1Y)*vFqN@?e$ zUq=v}f;$+!QR2gE)EPy<6jIi=F0L1?8EwHLR?fpP-E*Fo)2W&6r?S<$6!6}7^jYAR zmf>UDA`R^2w)y@&*qxJ?nzltV7i8|n-yCC1T=9Q=*X4ume8Hqxl0A3y%ZIi_2@XiX z>5G&?p+7uj8Mb;tXJdCPi&$xxl7+zAV?!wi+Tgn?nyGBb=QK8pPpacc88q^)kd?c- zM4e}*Zd_s zB7!w8`Y58)x&Va>;$R78(e3s6;Ftxjx=#P(?n@0@SYENH&J_@S)Zo(g%r@0AaQ8|@ z<0oAm!&Uf`{hw=GqQNH^n>5XN4krWl-fqU9$)hya{nfQe`YPMFEG*MBB>$?GosHky z;uX8Zb$_KiJ&}f|Y;=Yka-LSrymWs-J9ky;K!c#c#V=%Nr*&QQ_23pGEF(ir5)#YD zlu}l4;7gbm;?T@4V^tXA&o7o!RC9yf}( zBb#IsBOM>Vq0@|0OtL)f3dzTX*j<~NhC*!oqz755`y1Ic*kqliS{^)52BfhT>4?4)bxcsOrQR?AFsi>;r0 z?Q@Z{_;SnY_LERWc)AwG<^=nh3rkTw>(6V<1iNXshGZ_bjA}V0{nwX{;_aPN? z4Yu_?3U*7BI;hjS{js_b*tdPIb{Zev9i)^QU;M*eKG7{;N4DvBE$hJp1y=~uxcu1h zy!{{1uLG;tZI8M+9_u>6QfE`(;m3&4i9aPJ!F;< zh8K&j1&{Y@u$C|}5MHu}-)@(2L!h&oC!w95xo>2X>_d%>=azh>0(f(X6w2`lv@>wW zp=KI?NF#kQT9x&6=MiuN+9QxyAA@A!E=>~?Ekk3IB}zDQP9`95I%P<4wk5L__BggT zCtz6iBdm;v@A(taFB}6e<&|ilPQ!xu6eCQm@Qwei?k!hV>w9~(beb3N6#LA=k$=(4 zGEo2D$m5IF2Tx(mD-s!l_@LjR=QMtW%o74bTO3Y_8@K)*uk>LO z{#!Ar`0EjbLo3}8$Q#1HlRENSodm(pOwx!HyK8zz2B29q%e5q(xcVO7s8t}*81vqQ zsq2oHKaKU;Zl;aBHC_aQ=NqS&;zGtGeV$Bb?u1QFr*!)!-VHo+*@H;|j)S|sfO|N; z$Je;|P|FZVC+IY=)@XqzCMMhVdm@|O&OA(#wMTO?3i$^cZPNrr+clfS<1dqD#FJpW zm+WEHs(1=Z+aa76@LZ%0;B@=f-Z^&r*3^s)*+Wn6H$l z2YFA6je3iif?DQ0N7nGxyvrXg>ZZXdpM5~MN)o4Vv_nV(+&pNf*TWN$a~sTy^x@56{k$(wfUcY3t|XBQFe{66fsix`ygt%Gk>VKd7Q*iyD-j*QutXgBf z0I{Xc$>4qCetb`*0@vb@RNXXd0_osq%ToW;<2gcLl}%i_(V!YshXHSXO9YI4KkK~k zs2+kv3YptJD94thP7_G2IAA5UK;=wkm#BcSTgObNLqXGibIr76QZ#~c+_d-wB>EDB zb(+suP%K@2tn<^jahK$3i-%yk#BG01qo@O!RBy6GJVB=981s)ursy_c6pCmeVBzAgdp+)=NbmhRt!=A%ba||M6BQOzGEHdteb3+cm$4J%BTh^m{z$n1)!p5lLK6bG-3usEilEeU zD!zJkNbppuFp} z9+yp1e;U_k*D&K>mxep=MBE*ePQsE7KrlwYB(1y-t7Ub)#6IeKzq_Q2Havg^2a+X@ zT8N%IZO`7j{A^MS>h9`gPS{bQ!ArIN5w2EHH(f=fkXcybn7j1Hjal~MM2eUVs=LLT z7|M6mUfRXE@a+@Y5-b$_ojcPl#`-iqVj0zU+Ic!_SC3rLO?x?Z@ADtq$^n}gl*ZK= zvC+W}HJ1=%Kh)~j#z~t0`EwcuUiU9r{FwUDApY@S{F7%6u&w<^^7_b% z#(u!L8{uNi4_7TJiPJy~bCA<)vqghOlOf?I*h-!`QHea@A2oATnB z9EvpTM5>^qJ3~G)fWmoAu`7ZHejdA>K46y@nU_$B4;OjnJQd8PnIDEeKS1~dJDk4X zP`$b#nxhK&IbU~3^(pCwiW8f`XGzSG-nem6O7qrFRie;(t9RTXAsEQa=B;K( z)hlPWow*G|WF-pu%Par6xrgg&SHlPLTHr|L8?PApyt^@&)7XyiJ8&o`I01-ahD6c& zy=yRJH}m7QYi8!@ODL2+8=Wslpni|!%Z2#I{>9TMsrEZeO_=~1N9n#7)+kq|l3VHf&md(>KjRdNmoyz&7Lp3?s~*3IkVVnG*XF)wBF~M+d8Q;=TX*_&SkcUz>#LE^UEqo=O&ylD)6)d zAuH@kVrqm4_=P~1hu`bH5I4gJo2>fgQxOAVUWJ!mr?oQQU5VMPM|GmfHK*l^?yWwY zM~APs@BrqDOdXFqOJg76f5e=`ee0{cziV8^zjhB3aT-*RmUTW|MG0~uo`uU$M7^c& zGf>+S1z;ZONJsT2kMi%@^EdtOh;i3EVFW5PH_%Q68FdV98SaI5p8rGrJ{)#~zB0XxCrUfW=;f`i48xgD=6%j~s;#X?Ji2gT3 z$}UFWHjwMxnxE}hQ89irKdbh#O`RII=^9p_9`dUF_R*s9ywmn}V@PnWVz=~M1bIv; znJHC>lG`r~*V(+6;|hYHN*Yf;;XYTnM9K0Wz*r_)0eHegx8|@w^WOGa@;oVigidzbZVHU1%09<;S@~kAOHjwgm8I42x+Lt!F2{R`0^uWj-Pip_ z2ud@BS@R^jezJ-&H2j>CKHg`1Uu!39kL#JrSZ9rXBlbnau_3nX`D({Y2@um_h^M;O zjN4i};b3ap;8p({>tv+;u~Y=i-`!~KbR?C&Y;J4sgL7^_zoX1w2YqAT67*cq?g-17 zGL_`Ec4HVzT9J(g?2qa&xUZe-N;_(_x{h6~WZ&q7tMfKjVJ@zfdH22Zr68+_ko~Fc zZ;diWK~`5%qC-E6Nctmfp6B}IUrtSc1zGKCLFcLcCFANhrQ+iK99*B(t9hfAz}+M34|gU1Dhc&m!7?Aq>~Ft?fT zg4&-a1+O}^(ekCnW6jVnNz*(!=GOwJL;0eTy@^Spz{F^Y|4*~g=9b+tLs+C7vzm6ToZ|6E2C4`ahZ9mgy0v+_OB_27C6`hs&x!)eJ z(dlJ)pCUF^kaM1hs!3N(uLnr^VNIHch#5a5#x#F=Rn#LN=i8g?t-=q(WSrchkb$c? zT36V0Znc;(s^=&s_zNIwzl}cWXajB=FZWN{esis|ZX0j-rsIT69Lukkgb#F_T4F+z z`?z-)n7Q|47m^TJ9V#A=ct!LCraB#Y)47lnevpS~2(@!%EZ}lbb+)65)fyMpehw+Y zHzMMytzroLI58j}4coB0Hd|6vua-2S-}wD@^{i6Tvp0#yP% zsNvSguZ8@$rv-IA^W$oJ>?}$K&RWAIYo&Z@FGE@{!e(7m4|OagcWOdME=sOkUdiXP zdz~>dC0SI21fw72&&+6eO`IC6ikg_GtE;PPus!i5=hiG};l65D0DP23ZjS}L^tlin z-1Z-Yl`X^idsC+7A2|h)#I1{+W>MV#In`Ca#HBI(aVYG@m4t?^mH;?1xU?Bx_&r4mZ z(ZenTp2zp_Sw#h|WU-LXu70@xvDdxC#|=h$Xp%J(XlyNXbhV2Yz`8^R0`gtNqs4e~ z%=nVsg1$xrP_`;hIrM zeTFrbt=7b>9&HGV$+;ZQ)Tp?KJvEj)pDt)z&!_g3_FTTlRy`2?4Q z0|M0ZX=pXCk-nNZ z_PxQg*m8pjVaX=7g z-TK?~QHn{af>Jf|B438q#$-&?jdeV}a-BL_*RdA)GQJah^PGwz7JGi`I6Px`>ank! zCmr`Ch_<9Cd_#AS{b}HY833UR>*gwbKlbW)*~uu3)#4enmj`s*s}bqw87XUW=MDTg z9AnD9vR${eAr{6U6Z^}~4Ds`Dub4)Km+$axezagA4Hn)tTd3_@AlCEp<7A3=8r#3S zOX1&xSN{jZ`oF7{;{R{*Kau1a#mnrcl&AKb&epJ4^w9s(`OHw;_Xa)M_sV|^k=)86 zC)15&PGzYBa{Y#n6j6R2fsv(miPVH#qoLea+Xbz8uVffO%9YEzQq(rRxlmuV5wT{c zOAyT~k_x`Uz;89)v)|5s2{rmjef8~oPwv__ugmN-T-{JN>dQVzqo)ceYbO6yId#Dm z^6^UHv~!gOkp(oyIJyy?MV{)BmIIG58Vu)t@fxY#J2%BEE=83&N|C|qMrv75C+sW_ zK_A<`H|>e)lxeW$hv*=v!rmz4u6wz%KkKC7T=x*!ccV?{zrHCnKQ0+&cQ(>2e1Iezk^UL2%Udcc+yU#n}C=T*SC8` z7+@lhNti${fH5c*olURn{%*{K%_}1Ysq-iA-R4b3R>;Q`0lCq^0~F2=E4}Om=FnQ! zy6mu<(CZHOSZL-482Bl}iL<=0F@v>l^mfCHFE0{-9=5jr9lX;U-0hMYDZId**=_r* z)YYoL5v#Tjc?aZzXhLq}B`rfBHiHJa&1T%?cefqQYfY=boUxDSrr0wZ8pUdIZNS(q zup!3`pTjoxAk4Gf6v7cRkOY7|2s9ZgCv`}nSlS2;))$L@R3E9$208(t30|YU27t(E z{2qKW>5yMWq|&7mDFA%yZgeMz@6Bq6b&6n$n-4FgOMp%zyNuo2oC?b|S9Nvma3l-unQ4b?v_Gvp(k5lp7^;Xa#%S z29V4reAC3`3u4S^!n|^*xqAZBFbU`5lbp~&KKb1QvJiprBk0_lW=lVA%#$*F%4rVz z<+_4vHE*fQETl4y2|Fx|qH~2L+(gD*wgeJZ)fIoGNr^G=DPlEt?+jf(F=5B-Nn|AC zad;ftjPL-IW9&lT2`E&u)4a4MIGQu|=>$A|4chsQS!TOr;2bF)8`vIzLHs1_;ucae z2ET|yo_F2}YM&F&(8l&(5PPeTqjDMG>L7ZZb&?)5q{oXqmLLEUoYhsSjx@bN zMRa5hvE>C4=rUH&9rK=y&^ejLKkcXuutJeqLQMM>5-`o%fBT|4@IM`>ZB{1rUzG#B zXo*+PbEbiQRduvMmpa>GwVbGJeqVH1>Z}1jaiV70ZN7Z86iHtDd`|MRm*Nb@u&>yT z9`qxWJNmb-?gMEi$VZ^zWpBjpq5~&f(o63yaTp8Nak^yr%5@nO?k7TSzmSwYcdLP_ zbZCHbqU|bhZB@^S8VZxF>Co4GzutI}>yT;)12lhyZCgKRuhjBj$`qq8AG?!(_puhi zCHS79X_otI!9xo_bH5n*{UK)S3G{cp;EWVn`?NH?no83ZIet$DaoPJ(q)_fwsm$p< z6=Ak585dGJEDqO1k6t)jj?Bn**5i`72^R}{phEXc8mY!zq1KX(o0oQ3#Q~&?~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_sign_message_simple/00000.png b/tests/snapshots/stax/test_sign_message_simple/00000.png index ef8c0f1575e871ea832d4dd46cf0af81c2a00c36..e72560fd99928c146740d4e74adaee88d67821f0 100644 GIT binary patch literal 8565 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 E2mRR*RsaA1 literal 7884 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 QEA^VQPVT4bPlVj~578&LjQ{`u diff --git a/tests/test_sign_personal_message_cmd.py b/tests/test_sign_personal_message_cmd.py index 34b53fd..7812b57 100644 --- a/tests/test_sign_personal_message_cmd.py +++ b/tests/test_sign_personal_message_cmd.py @@ -108,4 +108,37 @@ def test_sign_message_too_long(firmware, backend, navigator, test_name): last_response = client.send_raw_apdu(InsType.SIGN_MESSAGE, p1=P1.P1_INPUTS, p2=P2.P2_LAST, data=message_data.serialize()) assert last_response.status == Errors.SW_MESSAGE_TOO_LONG - \ No newline at end of file + +def test_sign_message_refused(firmware, backend, navigator, test_name): + # Use the app interface instead of raw interface + client = KaspaCommandSender(backend) + + address_type = 1 + address_index = 6 + message = "Hello Kaspa!" + + message_data = PersonalMessage(address_type, address_index, message) + + if firmware.device.startswith("nano"): + with client.sign_message(message_data=message_data): + # Disable raising when trying to unpack an error APDU + backend.raise_policy = RaisePolicy.RAISE_NOTHING + navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, + [NavInsID.BOTH_CLICK], + "Reject", + ROOT_SCREENSHOT_PATH, + test_name) + + assert client.get_async_response().status == Errors.SW_DENY + else: + for i in range(3): + instructions = [NavInsID.USE_CASE_REVIEW_TAP] * i + instructions += [NavInsID.USE_CASE_REVIEW_REJECT, + NavInsID.USE_CASE_CHOICE_CONFIRM, + NavInsID.USE_CASE_STATUS_DISMISS] + with client.sign_message(message_data=message_data): + backend.raise_policy = RaisePolicy.RAISE_NOTHING + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + test_name + f"/part{i}", + instructions) + assert client.get_async_response().status == Errors.SW_DENY \ No newline at end of file From 028681198a2ae1d704d4de2e399195bc706fdc30 Mon Sep 17 00:00:00 2001 From: coderofstuff <114628839+coderofstuff@users.noreply.github.com> Date: Fri, 15 Sep 2023 20:21:55 -0600 Subject: [PATCH 3/7] Display non-printable chars as hex for nano --- src/ui/bagl_display.c | 40 +++++++++++++++--- .../nanos/test_sign_message_kanji/00002.png | Bin 334 -> 454 bytes .../nanos/test_sign_message_kanji/00003.png | Bin 341 -> 469 bytes .../nanos/test_sign_message_kanji/00004.png | Bin 411 -> 447 bytes .../nanos/test_sign_message_kanji/00005.png | Bin 0 -> 490 bytes .../nanos/test_sign_message_kanji/00006.png | Bin 0 -> 366 bytes .../nanos/test_sign_message_kanji/00007.png | Bin 0 -> 341 bytes .../nanos/test_sign_message_kanji/00008.png | Bin 0 -> 411 bytes .../nanosp/test_sign_message_kanji/00002.png | Bin 310 -> 799 bytes .../nanosp/test_sign_message_kanji/00003.png | Bin 364 -> 622 bytes .../nanosp/test_sign_message_kanji/00004.png | Bin 474 -> 364 bytes .../nanosp/test_sign_message_kanji/00005.png | Bin 0 -> 474 bytes .../nanox/test_sign_message_kanji/00002.png | Bin 310 -> 799 bytes .../nanox/test_sign_message_kanji/00003.png | Bin 364 -> 622 bytes .../nanox/test_sign_message_kanji/00004.png | Bin 474 -> 364 bytes .../nanox/test_sign_message_kanji/00005.png | Bin 0 -> 474 bytes 16 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 tests/snapshots/nanos/test_sign_message_kanji/00005.png create mode 100644 tests/snapshots/nanos/test_sign_message_kanji/00006.png create mode 100644 tests/snapshots/nanos/test_sign_message_kanji/00007.png create mode 100644 tests/snapshots/nanos/test_sign_message_kanji/00008.png create mode 100644 tests/snapshots/nanosp/test_sign_message_kanji/00005.png create mode 100644 tests/snapshots/nanox/test_sign_message_kanji/00005.png diff --git a/src/ui/bagl_display.c b/src/ui/bagl_display.c index 6e55f66..4d2df2d 100644 --- a/src/ui/bagl_display.c +++ b/src/ui/bagl_display.c @@ -28,6 +28,7 @@ #include // bool #include // memset +#include #include "os.h" #include "ux.h" @@ -252,6 +253,34 @@ UX_FLOW(ux_display_message_flow, &ux_display_approve_step, &ux_display_reject_step); +void process_message_to_sign(char* msg_dest, int msg_dest_len, char* msg_src, int msg_src_len) { + int c; + int dest_idx = 0; + + for (int i = 0; i < msg_src_len && dest_idx < msg_dest_len; i++) { + c = msg_src[i]; + if (isspace(c)) // to replace all white-space characters as spaces + { + c = ' '; + } + if (isprint(c)) { + sprintf(msg_dest + dest_idx, "%c", (char) c); + dest_idx++; + } else { + int remaining_buffer_length = msg_dest_len - dest_idx - 1; + if (remaining_buffer_length >= 4) // 4 being the fixed length of \x00 + { + snprintf(msg_dest + dest_idx, remaining_buffer_length, "\\x%02x", c); + dest_idx += 4; + } else { + // fill the rest of the UI buffer spaces, to consider the buffer full + memset(msg_dest + dest_idx, ' ', remaining_buffer_length); + dest_idx += remaining_buffer_length; + } + } + } +} + int ui_display_message() { if (G_context.req_type != CONFIRM_MESSAGE || G_context.state != STATE_NONE) { G_context.state = STATE_NONE; @@ -267,11 +296,12 @@ int ui_display_message() { } memset(g_message, 0, sizeof(g_message)); - snprintf(g_message, - sizeof(g_message), - "%.*s", - G_context.msg_info.message_len, - G_context.msg_info.message); + process_message_to_sign(g_message, (int) sizeof(g_message), (char *) G_context.msg_info.message, (int) G_context.msg_info.message_len); + // snprintf(g_message, + // sizeof(g_message), + // "%.*s", + // G_context.msg_info.message_len, + // G_context.msg_info.message); g_validate_callback = &ui_action_validate_message; diff --git a/tests/snapshots/nanos/test_sign_message_kanji/00002.png b/tests/snapshots/nanos/test_sign_message_kanji/00002.png index 82a806e97531d870a035ed64ff56a26dd0b48cfd..1b502cc5334b9a3a2130b2e59495a7382cd565d4 100644 GIT binary patch delta 428 zcmV;d0aO0Y0>%T7B!7)bL_t(|ob8xF62l+}MQx|K|ADhe7j_sc=#w!D>E`vVx! z5Q5`4j^lLU*u$|GMn)Qg&4?rMr*uM3gJ1om@5`}=$0ocPkL}Z@Mt^2607W7Ctn7*- zXaC|1jPGn{Q-iM95W9T5Me1w#~p7i)b z$F1?KOL_&$6I(yw@;@r1p83x!Z|4O->2#rYpAfH%_eZdHEeC!8UxS(aR2Eu}LXfj+ zfl1d|LBzGv3V((6DrUPESixXY`=t#loKUiBeh?`^u>V7G5}B@YQdy=TQ9y$p|<$qfUQ?l;B#=dhYjPs_@<#2H2s_TlDcsZ zFDwNG^%)S0jxG83PZTWC4}~27Du~5Grd|P?i>sK~6D6x{xYi3U0u&s_aU92S{*pJv WR=XzOG#xqs0000tsJCgt9fi@sJPqYC6_SI0A8$(xe^;K#%U+f-nhwg(rJj>%#A^52k zU?nzl?J($50@u@E^D&;JSL?uiI8=3c{{{_bxiN@@kSPH5^M4C0N}K9NZ5&vH&pVZs zP!#0(+2MBmqs$0a?138FoU{;}1M0$&dQ+&&b)-qopTo`Ai*S3|ng6||iy;ODv=buK z5o|#TX%+mmD*yyR8*0IJ!+ClEA%qYqLA5uLvlxqt%hEvXZgr#?Dw zz*Zg7D=_ZZ_6pr!G)TSU$J?yUXQH{&8_j(J9vSxsSbMJqJOCeql|0G|-HuErTgE_M z(;H)l6$*NswSUfrY>Ck-#f%P9+@juo;L{aSk)M|6O*U9mr4uc>JMe8#E|AT#S4;a$4l#R@IsowLnAtUTG zToFYGA%qY@{$}4~-_Vm7Rt#sf<#$}=)VJ~BlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%Y zMJ+y&Ch%TCM>9}$(GT~2qZ!TIc>6skNTK;?O1Y^i^a^-9EC6{n9}GT=eBR!K!~g&Q M07*qoM6N<$f-1HS{1B!7lUL_t(|ob8#-4#OY_fbFur{{#2X9c&B%r1*o@j_u)PbrIThde5-;A%F=;yNSSK&PPaw^y}djXPjMVpmXwk0>} zuSuI)sImpNO53YNv9S?8LLJPa&|`K0Y=NGOqC}lcO4=)^5Pw4P>)IHy0NZ{ULt_GJ zLDP|&9qOA<&Qg)*Gg|?Uv|wzNc3x`65mQ4DoLS8w95Nvb_MtN2yK-+qL65$4+#1jN zNUuP7V(U9}AE*%Z!H-wo&I=%g(}jFL!G1D6A4c1?40r*)1~Yk86k3j(N!H&sh0A^2 zLN-dMNMV{P}<8oC@ z1}b1$Y8Ai->v`=e?vXwLO7DEu0i*^c=c&&u4az*T^1h~ZoPUi%(4hY}-ni6)IunrB zLCN&xlH2qyXB>Hlkl@KmC@;r_!*8I)lh5hbx(yt*eFqUP$^=kEA6st)dkua9sB`}j zH}Ebt(_ofEU^pz@nFZ-I@ScqKvp1XlB79bZ{w?6pvNKrI!s^9A?Br}zw{*BS@Na0@W__b;(gO(FgajbiazNDsCOOIKGwXk z(wFv0Uj9w&~YS8YtMhk#2+$&BTF}zC%fblPLyV`s){iS0)NQR eevDE?11a-B>E;}NJW}4|d{vve1d>7&+ntd+ksuGq?(nQo$AdZP|g&l>rSp z!^AD_s+{P>VWST$^COjsB^vI^GoF;acyxbrj67a3F2rTTH4r%egqxw!8X_eDSp1Qy zMlOYjU!TlYwuApeE)9JyCBdQZDfv!GPFhJp&YyID>IHE)6VUw;Y>D gBoc{4BJpE*1K6z8^rZB!djJ3c07*qoM6N<$f_a|YtpET3 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_kanji/00006.png b/tests/snapshots/nanos/test_sign_message_kanji/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..2b23e62112a8f44287a567202f33847e43aa5feb GIT binary patch literal 366 zcmV-!0g?WRP)N&8gb+ghmC)Dxd5DOFy;d`f^LWi0 z*AOYz7IvdG4eY?9lik(P4$ZwhaDU7WK-zA_-mDkR8gJBJ6Md09ViwIWW>MFFXX-rO zAJb-~^=g)R0`eNI%UDYI!!C~AtNr*oiI9&H&)dA8XLu+T@5 z%4Q5Zmd6XGN>J|EmLx2WWaWLd&3rCz7JX1ICLI^!A;NbJjTyVW!{q}TOl@T|^5YCZ zO-_OKe!@I5u8*-=tRHX#7=xMIN`>I~;AFTMU?l*cr8eQ+{NS+UKVgqXcO#yQFfao! z>e`Zsi0^J#ErODuI|3DecvDip97SXH3z;9$ZyLPYP(lbHgb=b4Pg!r+=6jRPzyJUM M07*qoM6N<$f_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_message_kanji/00008.png b/tests/snapshots/nanos/test_sign_message_kanji/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab62488898414fa0b4d01c83ce19cd254158238 GIT binary patch literal 411 zcmV;M0c8G(P)gPVv!e{1wVPd@+= z5p63?%kDA~#^XqG8AnQkpux7*a=%m`b>nhXOa>}oT51)*2kUw5D(;a!0ZQ+D)&Zmj zCFiNnEDg#$v+};Cb)1bt(4hY}-ni6)IunrBLCN&xlH2qyXB>Hlkl@KmC@;r_!*8I) zlh5hbx(yt*eFqUP$^=kEA6st)dkua9sB`}jH}Ebt(_ofEU^pz@nFZ-I@ScqKvp1Xl zB79bZ{w?6pvNKrI!s^9A?BOE;G%yW|p1lxDH2iZKfUf5^~(CIA4yGhfVf$DpW>Y_k9W002ovPDHLk FV1k#gxOo5o literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_message_kanji/00002.png b/tests/snapshots/nanosp/test_sign_message_kanji/00002.png index 79c9c7d5ba9d67dd7ded0f0e7abd8362f40b16bf..aa776ce8980bebccb00775904403c6677b6ca797 100644 GIT binary patch delta 777 zcmV+k1NQv30-pwuBYy(sNkl#@rT4Ev!emzI-NXJ)as-_OjAO zzgr1ql#hRjT9td7u!gpc)Hi#}#RWp?tXra(x022WdjY&f(tpppOta#-f z_bjW9pkds*e^SmLo$jQXG?P&?HfFK!2)f>zUD?!1i?kU#HFk<_b~d2Wy>)Si;d9=q zkI^lOvO>zJ_l#002M;$AiASu`AFwilBnS23GK_4gZCL z19b)3?fyWkH;#$o{=2=HRWQAVvRd6zI}|$f*O)~yP4{9JXC_?pNxEU}C4?1O<&@@Q zz4&HI{mgD0<<=W2&_4R*3LEx&(c!NJ9Z!6eZ)O}KiGP%tuPv?5fUZjHv*|A=Ohx~q zcR)M-o=K|ERwJbEuZ;@2xrzdv(QQMn7gVGw43;PH;SMCkAS3$QU_y=PZw6~{5}ZOO z83Y+?u#}weO8KOF4u=9wU*k3mTZ~pk%rMO%smCWaD$s6avXZK34jZS`h6;mBcu`EH z3XI!^*?&rEX)sz9cZ4P9cR`k%w(Wep2Fccu+D40V+z}JfHqj4FIwV(t_R%kgHYigk zIzpMg10Gw0^w|*c;>vJj{0#UJHOSQpSt69_JD^Vgv>K$;P3ohZ8`~TK000000CUjv zPs%ENnhpgev$f2aVneHtn=bToupjLCx1t)J`vSV_3HSKjD^mG4cu3 zmADtCXTb4do{0001hGkgIpUN_h;ezMd60000NklS-pUeQi?I2+rPMVULVKewUJ`*^5L2G zJpo5FF~(+6MOgVrdpH zj?G&~*{eidx%%Z~TeP6d+>2X-{xeo|sy{CCBQ|Y8;j!5Vn|d(P>ng>&HK*YHijoW} zG~X62=+2h?5}vI0eG~uy09b0Df2sbZi+H6!K{sUSPt%B6`je@_O1jWWK8IHlF8}}l i000000001d%oQ)p9jyT^x~`G{0000|$ZRdS> z|7m`rgeYZ=h*r`@?wG$N^`h2v=4d}Thexq>2h;^6Mym0awtrk75{oBG@(~jeU+FY(W%2S*YBM25#~CcoJO!qE zk-Jh*H}1_(M*gvBGS#4&!YEPXzQZ8?8Y=Dp@#LI4gzZLgIJZz7uBAcoxqs(k{R}zh z=74qPll7DmB7ai(U+)1?%QkTNN2Z|7XekH)0KfzIUqrPI^nx*WtH~dn3ZmeUf_NWW zv0)N!huzs|bk2dN|Fr+xY_P7Oq9~nS+Gt!t{5qq?46$y;x(%GMT2Kvi88?YOP9{wFMqU{%+CNrWL?4O z&X5hFU{&bMT;SmjG}Is?`r8mfjp%O%bMPd{LQm2OGUnh`UKn2SEfj1*tAZTFNgw5% z;ns>XU{4jT*5)jGfdI5{pPP$LNUY@(*zv{;6brS>*F|6(VX!vd3da<<& z^B=9qU}Jy-2Oi7kb2e9rvD;h~wg_JHqWibVf@SlAE}eTaA%S&9>5K(0qjxZg#PU8` zmj93|KzZH5cE9^)M~7n-)t{3<=8ie>+8oon0PpNyWrkCjvT zMxtbB8QYe#xAuFdW!B#8PE+2e{B}aMYM!HMcWH4vf0_Ghy*;mO%U?L%mTW7!zT}Je gLwk2dxaSM<^Z(2}wxaN_tR+ay)78&qol`;+0P$d-f&c&j diff --git a/tests/snapshots/nanosp/test_sign_message_kanji/00004.png b/tests/snapshots/nanosp/test_sign_message_kanji/00004.png index 63b43ce77bafd9c8442f609497321a9da26e91a0..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 100644 GIT binary patch delta 337 zcmcb`{Dx_QO1-hCi(^Q|oVPav`I;33TrXx`p1a|{>c;7H69f)1tnK}1_-)>Lv9$~H zAFaq>V}Jt(9?R!*Hdl$U+gug42wwA|`?tt~W%GkBoqIANfptddj0G>FcQA>>@;+LY z|Bx#{dELTxzx!w8UUB|8RK5@-XT0FWqrTby92V4D?=0B<=bPcZg8%A^GEXe2pXqpI zNxfm#0vGY1M^mM%nfq(KJ+E!cUpU>CY%99Hy&nv4$gjoSvrW3z#EkHfTt!v;~fMB)HOc)nn55@(s-hX)t*8Mr%5Ugaaf2e?C2Z43Hv^6K`e1sm5f#!kYe=2}W=63=LT%r`Eb0d`hE7?ow6HlA(< zPh-}}dv+4ANPoE9Iet3v=U-MBS{uW$8>+Jcvb+x7|Bi?@y#~#=dM_Hy{q~l-%?kr3 zj)}H^A>)n$0036|=mU)7)6rIx3!rikYmZuoL*uCNd9e=~nkI}?<7>Usj?I;((CCt8 zUno;q0ktc0bJB?RB3FR2rOa#4UhOuE^ogE?Kh)sN|2bA__m^7%SAO4FmuGa#HR@6S qFKSg0-GZ>8`HOx400000@Pr>4s28n?ld{eL0000%U^7k#000000058qS{=Y2rIfm# z#~2@u0o)_TXq5DtSpmxQkH6}x<U=PLxu-Mr%5Ugaaf2e?C2Z43Hv^6K`e1sm5f z#!kYe=2}W=63=LT%r`Eb0d`hE7?ow6HlA(fTpmGpv zk6MRAjegFUf008iW9~!6^t%;Me Q&Hw-a07*qoM6N<$g7a(EssI20 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_message_kanji/00002.png b/tests/snapshots/nanox/test_sign_message_kanji/00002.png index 79c9c7d5ba9d67dd7ded0f0e7abd8362f40b16bf..aa776ce8980bebccb00775904403c6677b6ca797 100644 GIT binary patch delta 777 zcmV+k1NQv30-pwuBYy(sNkl#@rT4Ev!emzI-NXJ)as-_OjAO zzgr1ql#hRjT9td7u!gpc)Hi#}#RWp?tXra(x022WdjY&f(tpppOta#-f z_bjW9pkds*e^SmLo$jQXG?P&?HfFK!2)f>zUD?!1i?kU#HFk<_b~d2Wy>)Si;d9=q zkI^lOvO>zJ_l#002M;$AiASu`AFwilBnS23GK_4gZCL z19b)3?fyWkH;#$o{=2=HRWQAVvRd6zI}|$f*O)~yP4{9JXC_?pNxEU}C4?1O<&@@Q zz4&HI{mgD0<<=W2&_4R*3LEx&(c!NJ9Z!6eZ)O}KiGP%tuPv?5fUZjHv*|A=Ohx~q zcR)M-o=K|ERwJbEuZ;@2xrzdv(QQMn7gVGw43;PH;SMCkAS3$QU_y=PZw6~{5}ZOO z83Y+?u#}weO8KOF4u=9wU*k3mTZ~pk%rMO%smCWaD$s6avXZK34jZS`h6;mBcu`EH z3XI!^*?&rEX)sz9cZ4P9cR`k%w(Wep2Fccu+D40V+z}JfHqj4FIwV(t_R%kgHYigk zIzpMg10Gw0^w|*c;>vJj{0#UJHOSQpSt69_JD^Vgv>K$;P3ohZ8`~TK000000CUjv zPs%ENnhpgev$f2aVneHtn=bToupjLCx1t)J`vSV_3HSKjD^mG4cu3 zmADtCXTb4do{0001hGkgIpUN_h;ezMd60000NklS-pUeQi?I2+rPMVULVKewUJ`*^5L2G zJpo5FF~(+6MOgVrdpH zj?G&~*{eidx%%Z~TeP6d+>2X-{xeo|sy{CCBQ|Y8;j!5Vn|d(P>ng>&HK*YHijoW} zG~X62=+2h?5}vI0eG~uy09b0Df2sbZi+H6!K{sUSPt%B6`je@_O1jWWK8IHlF8}}l i000000001d%oQ)p9jyT^x~`G{0000|$ZRdS> z|7m`rgeYZ=h*r`@?wG$N^`h2v=4d}Thexq>2h;^6Mym0awtrk75{oBG@(~jeU+FY(W%2S*YBM25#~CcoJO!qE zk-Jh*H}1_(M*gvBGS#4&!YEPXzQZ8?8Y=Dp@#LI4gzZLgIJZz7uBAcoxqs(k{R}zh z=74qPll7DmB7ai(U+)1?%QkTNN2Z|7XekH)0KfzIUqrPI^nx*WtH~dn3ZmeUf_NWW zv0)N!huzs|bk2dN|Fr+xY_P7Oq9~nS+Gt!t{5qq?46$y;x(%GMT2Kvi88?YOP9{wFMqU{%+CNrWL?4O z&X5hFU{&bMT;SmjG}Is?`r8mfjp%O%bMPd{LQm2OGUnh`UKn2SEfj1*tAZTFNgw5% z;ns>XU{4jT*5)jGfdI5{pPP$LNUY@(*zv{;6brS>*F|6(VX!vd3da<<& z^B=9qU}Jy-2Oi7kb2e9rvD;h~wg_JHqWibVf@SlAE}eTaA%S&9>5K(0qjxZg#PU8` zmj93|KzZH5cE9^)M~7n-)t{3<=8ie>+8oon0PpNyWrkCjvT zMxtbB8QYe#xAuFdW!B#8PE+2e{B}aMYM!HMcWH4vf0_Ghy*;mO%U?L%mTW7!zT}Je gLwk2dxaSM<^Z(2}wxaN_tR+ay)78&qol`;+0P$d-f&c&j diff --git a/tests/snapshots/nanox/test_sign_message_kanji/00004.png b/tests/snapshots/nanox/test_sign_message_kanji/00004.png index 8ce05d91f266c743ba1a78f2c426231507274225..53ae65195fbea5b281a1bc1a80351dbf1cd79ff8 100644 GIT binary patch delta 337 zcmcb`{Dx_QO1-hCi(^Q|oVPav`I;33TrXx`p1a|{>c;7H69f)1tnK}1_-)>Lv9$~H zAFaq>V}Jt(9?R!*Hdl$U+gug42wwA|`?tt~W%GkBoqIANfptddj0G>FcQA>>@;+LY z|Bx#{dELTxzx!w8UUB|8RK5@-XT0FWqrTby92V4D?=0B<=bPcZg8%A^GEXe2pXqpI zNxfm#0vGY1M^mM%nfq(KJ+E!cUpU>CY%99HT5=2_*osmHDZiLNw1j|piKYx zr@mS~9$6(K%nHylo%n@o0qQw!T?5ww1gm{!!ngp>U|ay}oqwlrEkK=p>%GXe0EKn- z!(&duc|p{tgj-`e;k`P5Yxu4MzZH-@rWpqSLVWLL7IxCBll?jpov1D`9FEjDOE6MV zU8Nq>yL=`10Jn*%Z9#8NUfmwGVBa_me;}g--u|_YtW3V_oC6BmeKL`_H3Wu2GNr qyQo!#W*qJ^f6)&B00000?(hqAWfFl{D3?kA0000 diff --git a/tests/snapshots/nanox/test_sign_message_kanji/00005.png b/tests/snapshots/nanox/test_sign_message_kanji/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce05d91f266c743ba1a78f2c426231507274225 GIT binary patch literal 474 zcmV<00VV#4P)K000000Kjcts{{C_lv4Nm z7~{>6oa9%4QR-_(W%yYgz%^owMoF)k6`)N2_@};FJ|0;mBFqZVGM)H^YXRyxZe0V{ z0tBmlX2Q4t&tO~t>z$`?EkK=p>%GXe0EKn-!(&duc|p{tgj-`e;k`P5Yxu4MzZH-@ zrWpqSLVWLL7IxCBll?jpov1D`9FEjDOE6MVU8Nq>yL=`10Jn*%Z9#8NUfmwGVB zbyh%@*TMPUh-lMm(2T41qS4%MZ@G_oVc^6u(e^K7+))4kz-k|TfN^{}dKBdXs2s%F zqt@ooIBI+z?1P4;2_x0`T5q>wbEGLWx}@0`%2ZZB?a17mG@`x86`*V>^BS~QyUikf zas|jfv^$r+sm|^%SAZk`@2vaJqg$>~kNUf)RfT38?lOPT4*&oF008dr3v^`?fmkS) QN&o-=07*qoM6N<$g1|W1y8r+H literal 0 HcmV?d00001 From 50eb858501c55534a7a2fe417af662a042108f32 Mon Sep 17 00:00:00 2001 From: coderofstuff <114628839+coderofstuff@users.noreply.github.com> Date: Fri, 15 Sep 2023 20:21:56 -0600 Subject: [PATCH 4/7] Format fix and Stax display --- fuzzing/fuzz_tx_parser.cc | 2 +- fuzzing/fuzz_txin_parser.cc | 2 +- fuzzing/fuzz_txout_parser.cc | 2 +- src/common/format.c | 187 ------------------ src/common/format.h | 92 --------- src/common/format_local.c | 60 ++++++ src/common/{macros.h => format_local.h} | 18 +- src/common/write.c | 72 ------- src/common/write.h | 105 ---------- src/helper/send_response.h | 3 +- src/ui/bagl_display.c | 43 +--- src/ui/nbgl_display_address.c | 2 +- src/ui/nbgl_display_message.c | 12 +- src/ui/nbgl_display_transaction.c | 2 +- .../stax/test_sign_message_kanji/00001.png | Bin 9114 -> 17971 bytes unit-tests/CMakeLists.txt | 4 +- unit-tests/test_format.c | 102 +--------- 17 files changed, 104 insertions(+), 604 deletions(-) delete mode 100644 src/common/format.c delete mode 100644 src/common/format.h create mode 100644 src/common/format_local.c rename src/common/{macros.h => format_local.h} (68%) delete mode 100644 src/common/write.c delete mode 100644 src/common/write.h diff --git a/fuzzing/fuzz_tx_parser.cc b/fuzzing/fuzz_tx_parser.cc index 04fa0b1..4179b83 100644 --- a/fuzzing/fuzz_tx_parser.cc +++ b/fuzzing/fuzz_tx_parser.cc @@ -28,7 +28,7 @@ extern "C" { #include "buffer.h" -#include "common/format.h" +#include "common/format_local.h" #include "transaction/deserialize.h" #include "transaction/types.h" } diff --git a/fuzzing/fuzz_txin_parser.cc b/fuzzing/fuzz_txin_parser.cc index cfdb234..5bc030f 100644 --- a/fuzzing/fuzz_txin_parser.cc +++ b/fuzzing/fuzz_txin_parser.cc @@ -28,7 +28,7 @@ extern "C" { #include "buffer.h" -#include "common/format.h" +#include "common/format_local.h" #include "transaction/deserialize.h" #include "transaction/types.h" } diff --git a/fuzzing/fuzz_txout_parser.cc b/fuzzing/fuzz_txout_parser.cc index 9b70ea3..cee3e4a 100644 --- a/fuzzing/fuzz_txout_parser.cc +++ b/fuzzing/fuzz_txout_parser.cc @@ -28,7 +28,7 @@ extern "C" { #include "buffer.h" -#include "common/format.h" +#include "common/format_local.h" #include "transaction/deserialize.h" #include "transaction/types.h" } diff --git a/src/common/format.c b/src/common/format.c deleted file mode 100644 index d614b61..0000000 --- a/src/common/format.c +++ /dev/null @@ -1,187 +0,0 @@ -/***************************************************************************** - * MIT License - * - * Copyright (c) 2023 coderofstuff - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#include // size_t -#include // int*_t, uint*_t -#include // strncpy, memmove -#include // bool - -#include "format.h" - -bool format_i64(char *dst, size_t dst_len, const int64_t value) { - char temp[] = "-9223372036854775808"; - - char *ptr = temp; - int64_t num = value; - int sign = 1; - - if (value < 0) { - sign = -1; - } - - while (num != 0) { - *ptr++ = '0' + (num % 10) * sign; - num /= 10; - } - - if (value < 0) { - *ptr++ = '-'; - } else if (value == 0) { - *ptr++ = '0'; - } - - int distance = (ptr - temp) + 1; - - if ((int) dst_len < distance) { - return false; - } - - size_t index = 0; - - while (--ptr >= temp) { - dst[index++] = *ptr; - } - - dst[index] = '\0'; - - return true; -} - -bool format_u64(char *out, size_t outLen, uint64_t in) { - uint8_t i = 0; - - if (outLen == 0) { - return false; - } - outLen--; - - while (in > 9) { - out[i] = in % 10 + '0'; - in /= 10; - i++; - if (i + 1 > outLen) { - return false; - } - } - out[i] = in + '0'; - out[i + 1] = '\0'; - - uint8_t j = 0; - char tmp; - - // revert the string - while (j < i) { - // swap out[j] and out[i] - tmp = out[j]; - out[j] = out[i]; - out[i] = tmp; - - i--; - j++; - } - return true; -} - -bool format_fpu64_trimmed(char *dst, size_t dst_len, const uint64_t value, uint8_t decimals) { - char buffer[21] = {0}; - - if (!format_u64(buffer, sizeof(buffer), value)) { - return false; - } - - if (value == 0) { - if (dst_len <= 1) { - return false; - } - - dst[0] = '0'; - dst[1] = '\0'; - - return true; - } - - size_t digits = strlen(buffer); - size_t offset = 0; - - while (offset < decimals && digits > offset + 1 && buffer[digits - offset - 1] == '0') { - buffer[digits - offset - 1] = '\0'; - offset++; - } - - digits -= offset; - decimals -= offset; - - if (decimals == 0) { - strncpy(dst, buffer, dst_len); - } else if (digits <= decimals) { - if (dst_len <= 2 + decimals - digits) { - return false; - } - *dst++ = '0'; - *dst++ = '.'; - for (uint16_t i = 0; i < decimals - digits; i++, dst++) { - *dst = '0'; - } - dst_len -= 2 + decimals - digits; - strncpy(dst, buffer, dst_len); - } else { - if (dst_len <= digits + 1 + decimals) { - return false; - } - - const size_t shift = digits - decimals; - memmove(dst, buffer, shift); - dst[shift] = '.'; - strncpy(dst + shift + 1, buffer + shift, decimals); - } - - return true; -} - -int format_hex(const uint8_t *in, size_t in_len, char *out, size_t out_len) { - if (out_len < 2 * in_len + 1) { - return -1; - } - - const char hex[] = "0123456789ABCDEF"; - size_t i = 0; - int written = 0; - - while (i < in_len && (i * 2 + (2 + 1)) <= out_len) { - uint8_t high_nibble = (in[i] & 0xF0) >> 4; - *out = hex[high_nibble]; - out++; - - uint8_t low_nibble = in[i] & 0x0F; - *out = hex[low_nibble]; - out++; - - i++; - written += 2; - } - - *out = '\0'; - - return written + 1; -} diff --git a/src/common/format.h b/src/common/format.h deleted file mode 100644 index 1c8d486..0000000 --- a/src/common/format.h +++ /dev/null @@ -1,92 +0,0 @@ -/***************************************************************************** - * MIT License - * - * Copyright (c) 2023 coderofstuff - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ -#pragma once - -#include // size_t -#include // int*_t, uint*_t -#include // bool - -/** - * Format 64-bit signed integer as string. - * - * @param[out] dst - * Pointer to output string. - * @param[in] dst_len - * Length of output string. - * @param[in] value - * 64-bit signed integer to format. - * - * @return true if success, false otherwise. - * - */ -bool format_i64(char *dst, size_t dst_len, const int64_t value); - -/** - * Format 64-bit unsigned integer as string. - * - * @param[out] dst - * Pointer to output string. - * @param[in] dst_len - * Length of output string. - * @param[in] value - * 64-bit unsigned integer to format. - * - * @return true if success, false otherwise. - * - */ -bool format_u64(char *dst, size_t dst_len, uint64_t value); - -/** - * Format 64-bit unsigned integer as string with decimals. - * - * @param[out] dst - * Pointer to output string. - * @param[in] dst_len - * Length of output string. - * @param[in] value - * 64-bit unsigned integer to format. - * @param[in] decimals - * Number of digits after decimal separator. - * - * @return true if success, false otherwise. - * - */ -bool format_fpu64_trimmed(char *dst, size_t dst_len, const uint64_t value, uint8_t decimals); - -/** - * Format byte buffer to uppercase hexadecimal string. - * - * @param[in] in - * Pointer to input byte buffer. - * @param[in] in_len - * Length of input byte buffer. - * @param[out] out - * Pointer to output string. - * @param[in] out_len - * Length of output string. - * - * @return number of bytes written if success, -1 otherwise. - * - */ -int format_hex(const uint8_t *in, size_t in_len, char *out, size_t out_len); diff --git a/src/common/format_local.c b/src/common/format_local.c new file mode 100644 index 0000000..bea7994 --- /dev/null +++ b/src/common/format_local.c @@ -0,0 +1,60 @@ +/***************************************************************************** + * MIT License + * + * Copyright (c) 2023 coderofstuff + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +#include // size_t +#include // int*_t, uint*_t +#include // strncpy, memmove +#include // bool +#include // sprintf, snprintf +#include // isprint, isspace + +#include "./format_local.h" + +void format_message_to_sign(char* msg_dest, int msg_dest_len, char* msg_src, int msg_src_len) { + int c; + int dest_idx = 0; + + for (int i = 0; i < msg_src_len && dest_idx < msg_dest_len; i++) { + c = msg_src[i]; + if (isspace(c)) // to replace all white-space characters as spaces + { + c = ' '; + } + if (isprint(c)) { + sprintf(msg_dest + dest_idx, "%c", (char) c); + dest_idx++; + } else { + int remaining_buffer_length = msg_dest_len - dest_idx - 1; + if (remaining_buffer_length >= 4) // 4 being the fixed length of \x00 + { + snprintf(msg_dest + dest_idx, remaining_buffer_length, "\\x%02x", c); + dest_idx += 4; + } else { + // fill the rest of the UI buffer spaces, to consider the buffer full + memset(msg_dest + dest_idx, ' ', remaining_buffer_length); + dest_idx += remaining_buffer_length; + } + } + } +} diff --git a/src/common/macros.h b/src/common/format_local.h similarity index 68% rename from src/common/macros.h rename to src/common/format_local.h index cc8f3d3..5fb8fca 100644 --- a/src/common/macros.h +++ b/src/common/format_local.h @@ -23,7 +23,21 @@ *****************************************************************************/ #pragma once +#include // size_t +#include // int*_t, uint*_t +#include // bool + /** - * Macro for the size of a specific structure field. + * Calculate the fees by checking the difference between inputs and outputs + * @param[out] msg_dest + * Pointer to formatted message destination + * @param[out] msg_dest_len + * Length of message destination. + * @param[in] msg_src + * Pointer to message source to format. + * @param[in] msg_src_len + * Length of message source. + * + * @return number of bytes written if success, -1 otherwise. */ -#define MEMBER_SIZE(type, member) (sizeof(((type *) 0)->member)) +void format_message_to_sign(char* msg_dest, int msg_dest_len, char* msg_src, int msg_src_len); diff --git a/src/common/write.c b/src/common/write.c deleted file mode 100644 index 0c0eccc..0000000 --- a/src/common/write.c +++ /dev/null @@ -1,72 +0,0 @@ -/***************************************************************************** - * MIT License - * - * Copyright (c) 2023 coderofstuff - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#include // uint*_t -#include // size_t - -void write_u16_be(uint8_t *ptr, size_t offset, uint16_t value) { - ptr[offset + 0] = (uint8_t)(value >> 8); - ptr[offset + 1] = (uint8_t)(value >> 0); -} - -void write_u32_be(uint8_t *ptr, size_t offset, uint32_t value) { - ptr[offset + 0] = (uint8_t)(value >> 24); - ptr[offset + 1] = (uint8_t)(value >> 16); - ptr[offset + 2] = (uint8_t)(value >> 8); - ptr[offset + 3] = (uint8_t)(value >> 0); -} - -void write_u64_be(uint8_t *ptr, size_t offset, uint64_t value) { - ptr[offset + 0] = (uint8_t)(value >> 56); - ptr[offset + 1] = (uint8_t)(value >> 48); - ptr[offset + 2] = (uint8_t)(value >> 40); - ptr[offset + 3] = (uint8_t)(value >> 32); - ptr[offset + 4] = (uint8_t)(value >> 24); - ptr[offset + 5] = (uint8_t)(value >> 16); - ptr[offset + 6] = (uint8_t)(value >> 8); - ptr[offset + 7] = (uint8_t)(value >> 0); -} - -void write_u16_le(uint8_t *ptr, size_t offset, uint16_t value) { - ptr[offset + 0] = (uint8_t)(value >> 0); - ptr[offset + 1] = (uint8_t)(value >> 8); -} - -void write_u32_le(uint8_t *ptr, size_t offset, uint32_t value) { - ptr[offset + 0] = (uint8_t)(value >> 0); - ptr[offset + 1] = (uint8_t)(value >> 8); - ptr[offset + 2] = (uint8_t)(value >> 16); - ptr[offset + 3] = (uint8_t)(value >> 24); -} - -void write_u64_le(uint8_t *ptr, size_t offset, uint64_t value) { - ptr[offset + 0] = (uint8_t)(value >> 0); - ptr[offset + 1] = (uint8_t)(value >> 8); - ptr[offset + 2] = (uint8_t)(value >> 16); - ptr[offset + 3] = (uint8_t)(value >> 24); - ptr[offset + 4] = (uint8_t)(value >> 32); - ptr[offset + 5] = (uint8_t)(value >> 40); - ptr[offset + 6] = (uint8_t)(value >> 48); - ptr[offset + 7] = (uint8_t)(value >> 56); -} diff --git a/src/common/write.h b/src/common/write.h deleted file mode 100644 index ad73955..0000000 --- a/src/common/write.h +++ /dev/null @@ -1,105 +0,0 @@ -/***************************************************************************** - * MIT License - * - * Copyright (c) 2023 coderofstuff - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ -#pragma once - -#include // uint*_t -#include // size_t - -/** - * Write 16-bit unsigned integer value as Big Endian. - * - * @param[out] ptr - * Pointer to output byte buffer. - * @param[in] offset - * Offset in the output byte buffer. - * @param[in] value - * 16-bit unsigned integer to write in output byte buffer as Big Endian. - * - */ -void write_u16_be(const uint8_t *ptr, size_t offset, uint16_t value); - -/** - * Write 32-bit unsigned integer value as Big Endian. - * - * @param[out] ptr - * Pointer to output byte buffer. - * @param[in] offset - * Offset in the output byte buffer. - * @param[in] value - * 32-bit unsigned integer to write in output byte buffer as Big Endian. - * - */ -void write_u32_be(uint8_t *ptr, size_t offset, uint32_t value); - -/** - * Write 64-bit unsigned integer value as Big Endian. - * - * @param[out] ptr - * Pointer to output byte buffer. - * @param[in] offset - * Offset in the output byte buffer. - * @param[in] value - * 64-bit unsigned integer to write in output byte buffer as Big Endian. - * - */ -void write_u64_be(uint8_t *ptr, size_t offset, uint64_t value); - -/** - * Write 16-bit unsigned integer value as Little Endian. - * - * @param[out] ptr - * Pointer to output byte buffer. - * @param[in] offset - * Offset in the output byte buffer. - * @param[in] value - * 16-bit unsigned integer to write in output byte buffer as Little Endian. - * - */ -void write_u16_le(uint8_t *ptr, size_t offset, uint16_t value); - -/** - * Write 32-bit unsigned integer value as Little Endian. - * - * @param[out] ptr - * Pointer to output byte buffer. - * @param[in] offset - * Offset in the output byte buffer. - * @param[in] value - * 32-bit unsigned integer to write in output byte buffer as Little Endian. - * - */ -void write_u32_le(uint8_t *ptr, size_t offset, uint32_t value); - -/** - * Write 64-bit unsigned integer value as Little Endian. - * - * @param[out] ptr - * Pointer to output byte buffer. - * @param[in] offset - * Offset in the output byte buffer. - * @param[in] value - * 64-bit unsigned integer to write in output byte buffer as Little Endian. - * - */ -void write_u64_le(uint8_t *ptr, size_t offset, uint64_t value); diff --git a/src/helper/send_response.h b/src/helper/send_response.h index 49b9695..f15e6f3 100644 --- a/src/helper/send_response.h +++ b/src/helper/send_response.h @@ -24,8 +24,7 @@ #pragma once #include "os.h" - -#include "../common/macros.h" +#include "macros.h" /** * Length of public key. diff --git a/src/ui/bagl_display.c b/src/ui/bagl_display.c index 4d2df2d..08845d1 100644 --- a/src/ui/bagl_display.c +++ b/src/ui/bagl_display.c @@ -28,7 +28,6 @@ #include // bool #include // memset -#include #include "os.h" #include "ux.h" @@ -45,7 +44,8 @@ #include "../transaction/types.h" #include "../transaction/utils.h" #include "bip32.h" -#include "../common/format.h" +#include "../common/format_local.h" +#include "format.h" #include "../menu.h" static action_validate_cb g_validate_callback; @@ -253,34 +253,6 @@ UX_FLOW(ux_display_message_flow, &ux_display_approve_step, &ux_display_reject_step); -void process_message_to_sign(char* msg_dest, int msg_dest_len, char* msg_src, int msg_src_len) { - int c; - int dest_idx = 0; - - for (int i = 0; i < msg_src_len && dest_idx < msg_dest_len; i++) { - c = msg_src[i]; - if (isspace(c)) // to replace all white-space characters as spaces - { - c = ' '; - } - if (isprint(c)) { - sprintf(msg_dest + dest_idx, "%c", (char) c); - dest_idx++; - } else { - int remaining_buffer_length = msg_dest_len - dest_idx - 1; - if (remaining_buffer_length >= 4) // 4 being the fixed length of \x00 - { - snprintf(msg_dest + dest_idx, remaining_buffer_length, "\\x%02x", c); - dest_idx += 4; - } else { - // fill the rest of the UI buffer spaces, to consider the buffer full - memset(msg_dest + dest_idx, ' ', remaining_buffer_length); - dest_idx += remaining_buffer_length; - } - } - } -} - int ui_display_message() { if (G_context.req_type != CONFIRM_MESSAGE || G_context.state != STATE_NONE) { G_context.state = STATE_NONE; @@ -296,12 +268,11 @@ int ui_display_message() { } memset(g_message, 0, sizeof(g_message)); - process_message_to_sign(g_message, (int) sizeof(g_message), (char *) G_context.msg_info.message, (int) G_context.msg_info.message_len); - // snprintf(g_message, - // sizeof(g_message), - // "%.*s", - // G_context.msg_info.message_len, - // G_context.msg_info.message); + + format_message_to_sign(g_message, + (int) sizeof(g_message), + (char *) G_context.msg_info.message, + (int) G_context.msg_info.message_len); g_validate_callback = &ui_action_validate_message; diff --git a/src/ui/nbgl_display_address.c b/src/ui/nbgl_display_address.c index 112bb8f..351f8c8 100644 --- a/src/ui/nbgl_display_address.c +++ b/src/ui/nbgl_display_address.c @@ -43,7 +43,7 @@ #include "../types.h" #include "../transaction/types.h" #include "bip32.h" -#include "../common/format.h" +#include "format.h" #include "../menu.h" static char g_address[43]; diff --git a/src/ui/nbgl_display_message.c b/src/ui/nbgl_display_message.c index 92593c9..40e8093 100644 --- a/src/ui/nbgl_display_message.c +++ b/src/ui/nbgl_display_message.c @@ -43,7 +43,8 @@ #include "../types.h" #include "../transaction/types.h" #include "bip32.h" -#include "../common/format.h" +#include "../common/format_local.h" +#include "format.h" #include "../menu.h" static char g_message[MAX_MESSAGE_LEN]; @@ -117,11 +118,10 @@ int ui_display_message() { } memset(g_message, 0, sizeof(g_message)); - snprintf(g_message, - sizeof(g_message), - "%.*s", - G_context.msg_info.message_len, - G_context.msg_info.message); + format_message_to_sign(g_message, + sizeof(g_message), + (char *) G_context.msg_info.message, + G_context.msg_info.message_len); nbgl_useCaseReviewStart(&C_stax_app_kaspa_64px, "Sign Message", diff --git a/src/ui/nbgl_display_transaction.c b/src/ui/nbgl_display_transaction.c index 103626e..90c3297 100755 --- a/src/ui/nbgl_display_transaction.c +++ b/src/ui/nbgl_display_transaction.c @@ -44,7 +44,7 @@ #include "../transaction/types.h" #include "../transaction/utils.h" #include "bip32.h" -#include "../common/format.h" +#include "format.h" #include "../menu.h" // Buffer where the transaction amount string is written diff --git a/tests/snapshots/stax/test_sign_message_kanji/00001.png b/tests/snapshots/stax/test_sign_message_kanji/00001.png index ea783c27f478b70ba41fbc8002b66fed8f65ac68..104908ad835b09fd7c2ff4ccc48c4021098b946c 100644 GIT binary patch literal 17971 zcmdVC2T)UOxHTG;B283~UKFVkKp`L<6$4TN(g_`<_uh*lg3>_<7}^IhAU$;HV5Ej# zr3(Q^zkBbuJ?mM|T6})3rbtE3L=FOhsFYs4 z)C7U9#eqQA|G9Y`I3uZEUjPC@|0=zFuI-bykv@=wk{&8rDQ_f7xea;H|KKt3`{(vL z@Z)k*oakmtsM(8mw*v(2VCSOOL!0j^1Rc4LL=%6H`+J0zP~j)iL3Ps!oDyuYyJp5?sLv?gHzO&v_t67_3{Z{Pqh#DiqE|D# zxH2%V;+LnfefBscT5~l(Hg-nit?kUZEs{ItEjm&9ca@{@SjM;8@9w*R^+T85><7+5 zU_+4HAtk%#$ejJ3L#ch%XxrM&kic2?Tj9$ksq$k@(@wCVxHrmVHpnm*I%URo*CB|f zakXQC@#yE$LkP^h#%SG>=H2Bj6C(TH7!E$$$tqi>i_gXxLo35a4Vre#M2vzylIasw z4JIX1FFCFyl=!i;`_AqH%AZr7QHLC{OyP&oU1Tc;lKQqxi`_;8H92*8e2t( znCi)!nM6&f2FCCgr_!5G8!0ceW~BS_(BoAbhAjFZF>It+=_@6md#9b&q`@n)E)PEi zP~psf)D~N7_1@BLOnAEanY~OK6P8cg{^Vd$9@A`%hhk#dQ2`Q4`MeB|n3!8r(Zy?X z+w!hgFVL4ZDT9DyU4l#po9mel6MlP_{Nf(9KT*e=*A&=wdo@NmEzi zlk9}*H;g<#k&=-{sT1bNt2vaKyO!4)Y6+7w^}x zYuoRdPXbKlntm@tH((ZoJW#d8iaeaxK?>t)n3Q`P_f;riy?k68?bekB@E3MmsMTvA z{@>b|SNYPOltUFQHXIy@V{hX~ovWE)JcxnR3kJzIpP(SKJIt^i+et(&mwy6Dh7K?* zAv`f-&T+SH35+}=4Wur1z44kYjXYx>qgevKe*a}at9fTIT(-i*ktqdFw6OJ3BaySS zHixFio!gbua^bt{UmdH@A`+Eh$=KGryV7zjw_roB+p?Rk-A1KvrtM{BvXh&8GB{E^ z>-X8g{0;tmQ5>yD`?2b7q*z6h)3?kANpqjurQ1{H#VjKoe1;wrls`c}vGd%W7jc}- zv6Z}+R)vCPcm-y?6=Pfa!(Y<_cfYy{HFkgLc$RWmzxPzJo@3nk34Tv%x`+AN9 z;}lA2EO*9@;wl{?IF%4V-Yt<1och>}e7dBH#T7Bp3?a0!xm_kbiXQ8n_mqK)OI@cC_O=zLOtzznx61r!ui(62%Fim^Um|)h` zGmCbnl(NtR`Tx}8w>j7|eGc9R$YyG$Ky(JBOWN^stBsL`<&a-#I=+!v_9SO>#+c0` zDf*%_N(1uI>>+D=Y18M8DrE%+0kU$JjubX}$H%`4*dMkevwF(Z7UPMqVRIy{*0!JO zmlD}rLo}T4`26%|8C~(nmfMv!eZq1wzrqxDZJkqzEjE1A?dv?ACiSadRP|)^C7UCv z)wTO0FHMurtWA-p7QMry*a>d9gS*a5nuDyWxgfl?5+R$qi?zg?3&;c>()8rwfC0G& zeGtnaJHVcKTyywDwzcD*ENjI>D%)P%zfVC0)@Kl$x*N-;JA1Uw4m*-+$ja`3NuDYyJc6YQ_RXs_xXq4?HZTa;(TI|y;hzki6A0lKuZBFJ_D-!UWsw#) zuOkKE=L{#TVmEbZp-Ks_mFa%aZ`H-<2_B!H_XJCwF}#BZkd1D5;mMywW$y<59Tr`Q z?cq3;OUP^It#j*E3)i&M#*9vTi$)5*sw{P!ta21ereMz`k0H(2=F%?{t$uSC8<|VJ za++a6jZQo{rKV(HL(zf>L%M17vx5{DCwq!g351%0F0%EV!EjG;mhWQUY-``>ueJ^; z#*0j(8ErRp*0G`XP8)+-a%^=eJwoVRx6DOh?hPg@Tldlzg)(G`#{@j$8$;%v_#KG; z+vsk1`IdivCTxi1R`}Y%BYEQY&Qlb0-UxzkW42#|&tKZ9hheu0^)LZZz4BlFy`sz6 zT7x!s=(Atht12sN*6VuWPIukx)%Ys2X-%aA$yfQ&xa=Ww(WQ3Y*p83y6iVcS^$!&! zgc`?$d}K4n3AH9AkqXq!{6F?FzYSxuU-5B~YTbkv0}Za)XArb)O{Awm*O}5DpEBgm z--Ccr?CV=~v^@0EY_UerwOR!itk@4)FdVj4D;7>%CWf|EhBeWvKYjO(gr{3pAx7`< zz5?z|<#6N?2}JdQ+?Q>P7+$V4M@kxe_3?_Osx4ixE#(;8Zx-EcvVD4bx^{J_kbJT; zBcC&LSuy8BcjNsWCvPc&YK*t%SHjAdslSi#|CUzR_3G@bH4>D+L>JrB3FF?~BeYt( zKd;KRMOHZ~t}%p@OLjA-SeJ7pWL_5ED}R&M=9ybwF);B^>~~+rxezBem>rdd_(z~4 zPvEmPJft_WZz;s!tX8b1c1?0c+!Zl=`!2Q&4AEQ9<6@=CHomrAU5WtA+ZI^S5B!?&)c2`1SB~ zcsqW;BruIWbCJ07&KLO+tbR17Qdil_hKU5~BTWDFW+*y#C#WgeQi7!cmhdhA(J2|_ z7L|>7W?yXkTZqX6rG#u=VD%5%*;lP&C)m8!E1hm)K8?ig?D%Nw04a!$4!@s3I{j>9 zn6}P=k2FTBmwDXd;mF3x`RUVWav3)207|{R;`ZgU#_!Zwd!4WsU_N}Pw@h2L5Z?{2 z4j%8?qd@g(F8!>zdou?N>9h0)b2pB+xgUW3d^ujY`h$IEb`2DAErb|!ljJ5H=sv@J zeb76z|L-SRO2oTPE2B3>Ie>^;^|-UF+bvQO)Evyx9x?)f%^t;nG&3&IGcc1MAXv*E?Ok(Pag5DQ~&Yz~|?Ez#p6QqGg^ z3uo>$7Nm#K3_(~A)8X8x)UGpLbWA(`wa#Q!gOQ*xkn1TWq^aeK$3$l9Ti*hi(Fuhl z5l-e@Y$mI=PUk290G`dOsZ7QCwQ);5mnOY6Vzg>w#RCA2niu+E$7Vwi$U1MUjjb@6 z*7Ap=VQmTbGuV)kU@~unc(~&vkYH(ybh~5e-n)0^ zA!%zJPe|bWEWPH}FzOlDU;>x=9!L+>(4Yl>;^gu)F25@P19l8#PQWa7?%73rqS$I6 zbI;uN1AXKT5ayR&u9Rc1CG4FTA-LE} zRdW&_Ma=t1D_2HbNLmhh=C2{A(B`+oW4<*=fIun%WC+a&6P2RNPcJPX%8@32Gz3r| z0{EOFZRy8)D^=;B8Z7NvR1iLWgEdWIX&dKTpys=#u%FA$LP_g>O(rG7)3TDXuLhqP zPoU&Vz2cZOm1_-fU5&8kt5H^4+$o`a@gm`+F<#z%qKXyycu{aX^#&-VwZzOdK%O(3G3RbM zp{(O$7AA)`g4gKXzD-X>=H#+-D+ zE96s^qwgj}UPd?G#S8r9j(jw;SA-VQocC-wF7x01t1k(MQgN^ei~L|#N^oJXkyevA z5*}Ugs-v2;AD)T~rLq1R#r#ef4&-SeP^4##QHS}rL|S~~1TZzYOfBJ(>lRsNDvaMd zNm0CmKkM>rxvAAYhADo?*acwa-w!CXF3;NOg^T!04xjXd_$gj=h1wIb@XvU0T-n+| zKCGwoDJjSdOUEBGSSL9-t!CRxa8KZru1q;ysT`~0C6BS17X!wFKSAR@ulnyC3tOa} z>$hE`Z-&;a^hafz>kU7zrf7@|INU`#)HefzwLsugQ2kMva|;CY2@!~4TT1zu93fPN zwU}ae2GZ25y;k>J(@qemxjTs1KJzsxfC2^u7Vq8vM;YWp98yV%43WpjO6$e{{qu!$ z+#1jHF7_I5*1-NfUGw}8($zy`v=lL@{w9(Aldx+qLGSc1@sIxVo6x^|m`hbXn0qyn5|?$+t#M%!uXBXk*Q1Jn z5jZ<9`vHDYSbgjcpZtxx_0Y7w3kCX0eoupg``yT<%Ea94)~9N7rRpi0jdE6655Xe zb6+?I)b<_Y3#TetJ#>I0z0dlDi{%`w9=IbW_S~OpS6T=l2~;+YZA2#>YYMHZ=^8YL z7IK<^eX);F29C_`*LGlb9xKgOZxGvpjwWTDJ~Azu3;$UFHPTDe#O@+wC?-k_Hj=q1 zx90nZ#^;0`n55aLop{<@rKJO_7t4^-1{JkAog8ctd9=%pvTQNLkph_;HNPoOe&w?0 zskunARc4;SJ(^}u8c{MgwaC6fhbIzd`{q2)zTTg09*BuD*HsLj(E0btii&Off>}=n zBKx>qBJsxVHj|CK5v#Rq8{Ua{?!gg@f0N#Q?+k(#>Jb2a75Hr;i}H5pYwr^*>>!*< zcbOn_rBzhmgd?Vnhp!S|@~H> zmVQI;Cn|iAz!rtKYRZhfw?1CDYov|!l6^Abonkq@stcL*_#Jj+9e-8`TTG+r*fJUO zoUra+H$M?+$)R)IifZZRo6!`cw42yF0RTjRtXAfjL$TO$o15Gtb07DchY#@Lqu|6O z|KGosYkOIApGsbo@%Eu^mCHqTA0-`hPpLkpK=9Di7MFKsNC(=!B^WP;AgyBSx3X!* z=1edS$ociBcC4NOQ)kycXY=;$ou1ElPUCmtOn>H;ps)FkM++ou1aHh6kGVd?J)TkR zCI=cj&IxNKw#8?69k#hWhZ&k{$E9zo@7RP*M|3ZbJqwZv%kA)XTTbuw;#anLR?SOZ z^w8|lMb8&#==$}4G`6#O7b2fX7NVZ;>u0E@IO@o>MnVn*pGfi14@3MZC6~#LLRuXS z(1{NikLEOtlLh7mz>G|nL~?(})lDJy``qOX>WAm%)AL+qqgENu$2`wA1aJvBv*FUjX)dj?#8#``8BB8m=aXQ8bi-d$ zTi#ezLEN}RdB|cP(aN($-`?4?0p2roNM&HnKRIv?nVx$^_z|Bw;GmGDNEJE6C4&G@ z-r^CN1=HR_4&Jn4t7)!As`^uZj_ZPNkZfkBMrO2JMs05!cSnR&M4FXN;{jV2v1pHr zmI4LCjGIC(eM?!U^*@23xsA=`d*u*1(Ok>RpW5#ws+Ui;3Nmt5FvFGtPlL}Lh;ZR# z4jtP2R3pXjfCd~#`v${aSErqv?Q`m{>!qg7_qBxn;KL{DqR?7TEMZJNAKW7|vT250 zV5tywsg_;ykZ)idr_#K54hXk*qAC>TU?EU6HJMCdhdgOS8aT@JG>@&j9Ewo&x&GMi zODrg)n(8haR!kBa8K!S5f~wc0fQmi}Cv_`e0#eLAoYf1-c%K5pEiznDT`)3~X||L6 zYddP;A91;lh2wjb0Ds1fA~@sAnqxxC~Wh#XGk=ZfxD= zkr2eCM`}H&52f=L29UIY4fHgsyO?)7&F~2O1?tusnH6y$;FX_?J)IXvj19A`Zvz`O(AkFt+6B;31KDj}{j-#coF8*@$Xq{4`s!~h#1lX1 zv9Xgb0x=6h6RvxY5$=(YCP~~{WVxvXvz+|Hec+Zsa z)_5-FUv>Vpg?Wp@ltZR07iZ?)hw{H=2h>>$w?O1?etmnmj6tYI$x!Ydj)`Swxr2DD&)p8p&GP1 zG0wvnH-Fc*YO;M&nMo*N^J;hwKk8BAtZJe#$Ny_sC29(>tT9q}7Vr+rZuT>-Ph@ou z>=uHD@j`6USxc&ar%+>-Z>Tct`YHrwK-IP=6+WL0x#9vRYv%h5}b_%975R1I1O3nzJ5dPH|;@dvAD-32- z@lG~+2}hvRA1Nh_r?axhwrg7=4LZG{APW8bp}^ z#> z<&&#SRT2quFc~AY$3`zEGym;HH~PVW#{4`Y?7WCd^9=doy_Shofxcw^6gd{5_%u#3 zs-aO&nF&3fb|wXH7yC(s7{yhDaz9L6Xvv$IlI|-R^BxLZzJCpuHk@`aIijj)?Eh{p4EGVtckK>hF_?rur9K!hIAK= z8W%mWtCTaG(P@#s3fW8x>!0i%J`4yrW}M4?d($ZHt!m_Y0#_|sW1W44B* zB@CZ@QP48lib!wccBjY(W$#n&fz`P?j!gMe&9^y_!=(V*R>Vq|?boN}+QdKf}yw4ql-B@PzK!(+QneD8JBY!c(#ZoIl!dfkH4 z{cD5hUOZ>{v18Q|L9*cM_UT^NWH_cMHlL%N7eiM-&i7Vf5z_}A*89*aWBwXK_jXIVm0eeO?Srt51=I=uEKtfzdFiWb8rYD zxfeQ`ADu&NzbdKuJS_VVcxzG;Z?wQ#-G0 zMB9ac-^Hnh(vZh7N9U^3h3w?3cTGrLoe}L{vo^)z)nUaAxvmx)dyi76>u=HpD|J)t z63jMJEJ;n^2&IHyuBtoEguSmOlqbZ76ZE_kX8T421%V=U6`p4f&I4K=)y&1VUzTe6 ztzB(G9^86nSZN2TwrUZMS`IWJ-g{pnF@I(&tS@W?T818J2F)aA@V7dx;{}2ixwy=Y}u`QbDVFe{I2N*W5YkuX0VY#I2KqV z676Hi%`=E?)xd4!=&#t+hAHgaV@c7KzD&8Mp!2I(e{^)TOl-SKcV0xL5f~gC9C&rW z(wWD5!rkl>3tb>d-5G&b5TRPDZwlGWm!yd*KXef88~O{e;ES!21a4B(K3irU5ILvr z=7FeV$i41MCVvKL*&M;pn0ukaa}V4YouUVS+5v~X5o1DKytzk<$h zgmbHYgi}#P<;WD~Ie{BXV5xsS4Kq%^n>p?9>W7V!oUvFAbUm9fFSc-h81vS*r+96l zoH?UF^t7^UK<()fszy|~>Q2}_H7mnY&uY5Pt*&+6EMKpf1~Umri!|$qaG|-riGgC{ z+`$FVqja$$t)6=Jam;L`zPh2(@e$Fw8&~;7N!VuKF8#(2-+F9~2G&yBmLsxC4EISzR z=%TxHkvRxP!-}w6LmCAh{{ce30w$x+ddw3^LDOEk$f>N}y3*_mc$qm_}Jdq1#m z&3(c-SG@j3MgJkNjS23onva8#cUXV~o>YJT8u#N&i%9n~a>QabqxlX1D6SyK^*yC3 z@%9~VS|&(&%bGwH;eSB|t}(N+U=YaVQ%N2`bNylY4^o|JJzVRj8FaN{hfWlq{(;?; z+(Q8<=Xpx=+GW2cow}Ix+J+6oMn3S)%vGphEI+CUgQ0O_@sJ?(up7F{CptGqmY|2xhC30Gq^p+w0+twGN=DCH=>8k?Mv_6 z*l&zX?xAi+>}nf#;r-=qn!(VyHS?KR8qqG&b$Qsvd^uK{CI-v&BP#cB!URwhOlkQ` zvxQGr>_+k&kza*;ciBwEX`jz>G`hDvmdI>>+BnCbO;CGlD@OZK)b*6(xe~r`W&y;? zfel~Ro$LYQK0pc46;F`Rd&u_jbGD6#zKGIYG_A1__mU~DtYVz|S0-6PZSf+-7tYRM zv+-LZ>JJ0!QBe|mj+1U`IcUmKVAheAaiO=N&+IL&im5{)pJ!! z;+0gKB6TbH;jnnOp^dy23bp&B-nGR;ZGPR%GbbYNw`6s2;elNKxHI?KWJz4v$Oq+s zp*fmo(ZVUs-qnQ~gBI@dnp8B|Q8+lq2J|sP2~BWp3SWvte#w4y38_x2(OF z_pN`frwp(6Ham9*jCn4_ZY;mbq*_Wiu#P`z%+y1z6XUr1oLd^qN++Fp-yUjLn%|U_ zty6FC+9_T;ekgJZODQtRP>mB+zXAa|up*jYMjTsRXM3|5OVWK?NB#i$(A!)dV&Ayl zMt4qXKYSjP?4Qe{pZk_qh9%UnSM=2x3b z-xRr1cgh9Zw2gL`^*r{;msS`1LW|eB%2)!g{Rm2N{#)G5T>JIr$$;3@5#I!pY6gKs z<5{$u3Ce-UKJ&E3kIbr)Y-6i7CeT?UAO1crP5ES)m${{^d#~*(!S4qWeDCDT$I?uWeu^0cAg;0;kN;Ts zH@df-2j#ZKk9yWtcjI0koDvE5XyaqVFQDZU+q?fLd=+WdALUiKY6;=f84+mHB(`d? z-E1kO1SlCe61glc9!+Qqv2)+n(Xrja#x+<5d2#>KmhEIP{za6F>bnMs?l5rm#2gE& zP)Mu5r}5Deu?M(qORJ{of7AK8)kQ3ky#BkY!~PlJCO~}Auxs_rDthUfsNE`Z%`Opb zHcs#r36StFJPK=-9*J{FIj`+%x6%1Ic%x^D;hOV(OTxSOni`vIccUOu!Oys;Y> zXra|eX*V1i0q@mwH4;T;e##Q-cn%LLL!Ff7_4fs*2VfOv%KU)DR`+~>qV^s* z`0LZD{d>oMwLUC=*I+6c=JjtW>)b;e8w{nh9}O=kA)^$6lPx=)w&z?JdM6VYfpB-H8353aY z&KYj@rAF*?EhyjD@`egc$z`&+7G#SY ztSts&Z4K?=2(E}s_=|5wvZa!fTp(GxzkY9K)8Vb{mvoMfh%9DN2MlNMKuoH?mj`E2ilmTA2i&7NY&XqS6c$}pkb(mu zukIN6EQOkUjYuMUJ(Zs0XmeIsp_TAh-TrYR9i3?1G6>AkN<%tXTZq6NRjj5okkCtv z^IalaEnt!j-V10Z?Bx}$HFx*o#+$P*4X$1Zpv)p z3?kg!L^N*MiV!=VR=K=~`U5HagBi;K9ty-1LEb+naP|@qWNCa$WZEP;k_?=!c9im4 zLtjN#-I#%qr2s=nw~q0c1qukJ!h5|~CQswNO(_q_t*T}Rhj^|s3&(#3XMb z5!no)K%9=o*|3&JzO?6R<=L$FaOfUDyb4lT3CJ<)Y&Fl#;48Vih9|2R)Grrmb9wJr zLI+>!s#kySYkd2!uCv2{rY^;3hD!S&bTEI)P?;c-8k##~D@Ij4>{LBDL-!kqK4WW1 z7rM%ezG^j&$R)pqgaXsCgE^PDuI0&W>|AqAMD{1|WPrwq%~a#D`#`BKm#%iD=UDXW z+VFZ9IZ*|WWw8OiUiu1JFt<*dJ-a^iL*^QiHOSbp47xniIhkLfNd#rWf4M46E##-~ z7TaguOI7FpxBS)6ot}F@8FK1w{N(DBB}b~o49N+O`U~*x%Q4S1>!QWR$-z0g&Ou^m zwNSb`4fy0uhv;2JV%+Sl_>!9lh&)0=|3|upzArjb$BIfMCPoV%EsV1l@!9`a{jcL zWf0(quajX)32{dzV+YIn88nff8n*y~fa-97EnBP6d-mw;=zDHD=V#3bVQw1#%2#Y@ zOynJVX$I`olQ5IC@MaV*lb6t4V8^G3jF_p0CeYib*WapcQmBrdHeY#}t@Oj@`&b*t zk@!Bw>S+>2jw8LH?qQqk=!#Og?`t3Jr zdkg!O5>o7A*QM^Gtccfa2X2~L$7}Oq59i7l3~$h#5INBRfC${lP(GO~Ou zsA_zBI^krQ_yn5%h&rghj1!>J-NHN2be+lO;t?fq83W?Xq33fIN>kdpGH^%%#z4LQ zyIE)B3eock#nh)&Fs(WM*&UOHH z2Agp|h|A(6W+r=0(spGze4++gGFF>c&{O-i?h$J(J?=}5`&;FNsx%ay|CWj$=B)j@ z%!I#GgepojmrAA|5z<=Oa>lzZ;5PwC4h@PwBS)RO_RfI9(3jUi`#DB8*y&_01BX!^ zpB)11VVE2f2}b_9_fVlx$>?!jk&>$0Ys&2;aAw8D--8@HKK0=_Yg$DN^0{riS~pm* z)nl5NAGqf269bEQh+Te-V$|pj_}(Cdb;+pq2z9R`9GX_0x6GOU3f0Q_1$HlVeAdHh zAhJ@8qu?vdd29w~c~3mH0a^lt%Zj~w(WMKysl=50i&bY|ba4_bsvsFk#5Kr+qYctWarImsZmw4-6yJhE+Yu(ahY zd)#nevXNU35DP=U0y})SU(r$=SBRXHaK1htP!ZHvuH_@IkZxXVM^Z95lTB!1-{vEzEoI96 zK}=Vp2!55{PjSN|8S_$wqJ1alrTZ8$jE!f}kp8O49bj~sD++YxyVc zY>dnnB#|uhCYT>=9g1(O#_RPH&SC@xom1hzqRhiu$RjIc0o`-_{$8a}ePKX3Dm1Jl z+c0v0M-pH`VB`x=#%#x%P%_c&_y_(nqdf!TjiUloACK&Ck!WnwBXq?C@0R`OqT|xC zI2{=KR@A@9fK)_XVW5_pKH3R<7mOe)dQjENA))+=yPut~2QRnTw`6DwCiwQ+zv?2l zz~G9Y6Q3>a6n#P6o6-&nQ=ob{-NVjF0BX={Caxs`zju{aYzTt}5bP`O^1Cqj0$qEE zrB6<|igkDKtA>ga^LT&;Ni6LJ_Pass*yHY#6yxx*Lfu{gjxdq8T;&ZlRw%1!Yj(P# z0#BjZs~$&tbi1<2_u*zZs)2(0Nxg!cayi-eF|&Pm$)~@jocevG3deSl72<`(YZb9x zEbZm&07y`n-G;yfOz(!%JpmM^#|b=2Z{YC?Jg+9|sV~3=8fzvVC1>MTPm0sVygziF z?dKo_bbeKqdS4ZUV&JN|hjb1K3bI*LQ1AP;0`^9Nb0otO#l+Z$#B87G{EpQykgX6Nk8LW!l< zFgASw2?D=J=mM7-L)ZRU6rD+@NN&!S0SJ-X%=#7WSJVf?;$?#r0MyJV{(}hZUxUlK z>#qAAAZAL`1Q4uX6B+1O2qV;zzxLNfyn~gU3_ZN#lV;pQ2ihKA|E}aC&T?^fBBEWu z8!=IZHm&Zv2QrgehhhM+{gn4bfUF(>PDf4xmY@cmmwu*f*FerzLTl#d7w4(T@r|=v z6OV?0!XN;5F2o#O+yEUrc+CL{ORPW(en))xVNKM7A~$N#G4*`e(79Kg(ljHt%_L%x zyU(4Ddm=xS!Sg7AQ$u;6)$&brLv(Ok9VPo7>{Pl75iK<{w$70 z)v@!bXjn?lO7?m7HBepaPO-$47m76&$kwISvqDl1UOk#{X<9E{>vl@iBu5fAll}=x z6>?g(m5SZl88@yHRZ8%K)KXMY^23HIz_@n2hECFcjjR<97w7`_gT7EhUD?k>i${67 zbFUuQp?Dz!jA9In8)2Hf!L7HVK%p_oV<}R-c_qq+j$fViXj^UYF&yOz>QAIh)w4eM zW;8i5f&N4T$t>d|E_{83LN<`MKJ8}IR;H?}cKC)_t8F(;gWm-CkTxDt44!l zGyAf6zez7%Rj>1ucmoA{R1ySav8~rYneW>(SZ}>aSv7mJaNi7&WUa)@zz6#hj1Mvj z0gn@DZ2YFd&F|*d`>%AwiJCe(!1{~K{xdqi=;n%q0m|~@yMM2_tiCGXOf(zFl#ex2PcF&5!PDMxb}MUBUV!I!NOHD=+)BJcU_zKgX{c zxs;&Wyn@6kRqG0bmTvCv`F7e>gOGFs5?nyBCb@gYwPS|EvYa{vKF5zh&&dfOG1J}w7O-j`#7 z4gGR0Oq{qFyIo>n^9X-Q%J)b>t zoMf7?51e(crss;GtECom)KMP2vWOWAF_Z1DuPoKQwvP!~JclNuc-hgM!vW#SfJ2$295jza$D8{Cbg4q>z+$vNFzVOX!6(iZyB^y=Ia9UqxHQyAY%`P1&jK*` zz0~qDp1nxO$*YN$4+{5^%o{oIvy`(OF#b+vgg|?>)E4KVTt>fZSP9k93M;$om5kXN zj}3bLA@|XDmgm!T&W&te$XO=zz{D_|YNhLnga zhGN?vo=ANw=ikh>y?u@gR4;J#feYL5CIcFo)5hX8y)yE!XP6nX%7+TUOo72+PPElc z;M3voeihM)6pmbMfF*W?uvf!N{?~TJSfQQ$N7GasyNHvJ{o{yR**eQC5VBeIA;?1R zV^n9(grzc{-EbjA#$!sv!1KLS)uvtrM1xOq;0xcJu#;u=2TYaj_w~0d#9zJ=Y_{{Z z71f#^S!nG1hddg(wXj;Z{&j<5t%;Io&2iWh<`}UcByD54DYpB3vI-Tg<-VY?uV)`H zYuWeB_AlbI?j`KLzVnA+Ws2*|eRC3frp5%JpIp{Pn@3086X1qJR!{vTiJ!+aFr-5NG+8QQU|_xMU)^)v*uc zK4`4V-lzuph2)g`%A!fqG8lxuS=iwe)0-G8Um8OT;)^v@3tcc*-tdUw&ON$ptpkg$ zLYK>EO%)UsKB!o(7f1sm4%qK(z}1X5Z04i|C5vj0v6FyNwcNarfhOVod1D0A0XZCDTr$?U z1y~(OWxmJBpay5!@qQrF$_X=2GvB1;P`69s{Cw{A z1YlT9AFbqRNb~qUOQVShukgJL&(-4BAz5q+N=7R*T=xWb9T(;mD+oVQx@$}Oam>8t zCVN1V<>x0cM}t)YW4n1oZjzg|BTN+(Y6pxP=9OWd3{eJD2NrM>MAYAUuDjmE$j~k8 zA3rl0KU9p*y0)r|>05QT^Kamht}K%(k38&d^m7vZUq0-@$NIx!*ZycdXV(SwzkqD@ z5`(r#+5R_J8vc`xh<`6XHl>ADPi{<)13q%!3xF6wSZ?)_fI!_J029W4+H~>1;|c%Y zEFbqkj+0`rJz%@u4!Qu$@BudiXJ?(N=XS(nz5rmmsB!nePln}|2CXGr7qR#keEqiU zZSd0yN0l;R!Dd}e{~K_9_}+VOyeOaX8v=mPQd0~~XF5T`!b-w$*_nu9h5+!uJu zL}J5o)F}&)*ZO8qr+?ZzDQu_?&AEBV&2Yx_RUT)dsU!-y#uNxv&eLcqdrDe=od`!o z(z03`vjzyo3HZV{aK!Z15sT$Raci3K2rsMaeV@)%4wlv zo`Y`zMM60b@h29|jREK-IU?}$JH2;iHRj4!o<=>(lOb*S*b)FXXm{Ns*wxJAHDCUa z5na2}p{F4!R0x}T96-(&?`GzFodCcFTq0op_K|kms8j_Ce?X|=D^qQgAPAA$4-KQf zgjhP?^0{*p!Mu>`Pk!?K1b^uxU7=FiJkW$qZn-cz^b0e7wLsSiF1iiwv7Mh(l8C#t zM7}4Xr<`X#Z@$#inZrO%H<``%M@ziuOnal}nox+wPl4CUwlY#IbeDU3D6S=!qPz#t zQ+HchFcWjGh{xjZazEPcnNVOv1q&S~XPbig(Lk_I;KT`^xB%`Ch(MMt6B92>bSz#m zSJV^5n?UWACqdJ9N!447Ah`T?Z&c-Rp0B=d!JDj;#JwPivu?Os<72-m%MleJ-1>R@MZ_L2p$VJ>ohfl$nXbQ0RJ-lC(~!xA#x-Jtg?^ z*5rmlw9u`U3e~npR-X><9}kRp7A?B)>X#&P>k}>A{rizL6-ej{m%%jH&;GNsvw+kC zC~K@D4+(Bk+A2!L>~+kOZ=HXxc>D!arst>C`yLjj$QVOzyeZmXfbx+5bHL_`M?w?Z zt?(?f22G?HBLkNQplgbhtC{#MMt@Cl6Ywu!eR;>1<7yUb)a%5-8wwhq-LyzKG+b2_%%*B73D-bfwx z>Jz7uc%!X0E3mvKptUrb@K1o|OOFUQ2vn&l9iIkeAUYL3jM?@G3oP!P1W2=C?U#II znO2-kIsV-1=iHB3*NL~c(%{)~+28h&wxiisD6#bg3{3zVqifb+j7ra>`PK^m@E{4ad~&VF^pjcAS*qV zN>i0)jKPOcDL*m)o+&}B*_SA`kLTAZ69CVbJYc?xx&;RtPhb1}LF1>f+4u4K`Q-?A zQ7|c{%9|7nb4lr5(l9E~V=^Am{;XoL%F)jk44~`iC^wccqZ`2x7zb#(JJ`tVJ+@a&Oiaf1>XqwaVmqFRiHX12BMy9W-m$(+OibO+_R7T@h}UzR(N~3b z>>9uCW|88v2eJ=L9Y9=aJaBr~zKfT;4`}R?x_If?ft&*y!h34YzOdgw2W#BABDQm? zrL}+0bg_!3rnlYBpFAiQ8zY+M91(l?`!0F0qyHPHsGclthZ1hA@PCc<1%@2DqIAaJ z=+Ebq>*TWIkL3TG*{OaUKVD(cn zi%SH=1XNHQlv6CHa}A>bW{mF5BVlukr%8J0T+{R=bE<1Ck5pPZK!{ig&us|u;i&p~ zfs)6L>PR+FAMd2!y0wOMaS6)F^q;1>GgksfwUfPry}jPPoUS;XT!`gGlJg{a0ciOu&K+5jL%;qT)7O*ME zI5(|8!XuL<6?(V9>sLB1T4$C7r})^QbIuXAOG|T#tDBeA-vk|lR=IyMP0ua4*YJburGdD68@6bKQk!RjKDlA(m0RqL!X)wglBl61atY6g1 zy)YV^!XcxS*M?xN?~&dN`=LVZ@)8zd&g)oJBOTbp`|A1tp`tX{N17gLQS0!m#z&Y(I6`>bBb=yp)GTL@#=l ze5rMCc5yMzqQKZsouac`S36OpGPto-+0tN5#gr6NPwYgcA`ORUCVGbSuBRHUX_eNv zici{3MCbdn!sN5N602do{m*BN>#qblYiDPPCB$%Cnrsq1f0)ZsTS7lyYCeUNWpefQ zgb>+B=dzxW>RjD7l3;&fc|A&pcBCR9H_sVtT#P?OddxQ-D;7Bs0 z^5A6t@Q6v+tdopj46l!^+y6#1R`bOf?m6vTwo4n?Zw?Ys^(>G@1Cf56N2&x4hpmEg zI(g?=ah>w%nW^ypT47%$rfj_CE<$&$DxpxjpBKR}bgiE1+V!O8VwBrbU$DQkyTWUj z^wk(U>9WnrsV@AYU^8ys7DTb%T*5A!WuE1?-j2$s?qDy++@YoI@4&VOwv;ocRV^3< zSf)QS;4e7QD+?N~v}2OFh}inmcSJ9|q0ieccfawOr{V6~UVUnaN)vC*SeY2pA7p3` zaIhddu6XXSKqZJj+$S#mKc1;-n@`52_>%;zaQCiD^}N%14G;_2OFkRwhqq-LzphQM z=cbUw<#gsr{9&{xtx($*L!UV7Sq$@9EjwqzTVL9%AE8LbE}>)Yjk*1i$>BqiPKMc( zmfpAgoT*`(KRLXhuycEF8+VbXiL^9YTVJnR8xtJ0!`!)b0f_4U-w(G0#t(HJbYRZd z$oq_+_Suwwy;e`zo+H;a(I@Wf{=mA3Ij$5oo>$GFtZrf(_j;R;%gz5WAAWviJKUlm zsh|_eTmSS}%{;ZBpnx%#W8P)MTyH1p-+8P@$J#QMhvp&XQ&#atTXm)6q3On!%NC1p z7mAVhX5M7a%dOd_4CU6!N_|VCUPE2_4}|%KC0WJF$s>~vU&UTNh-+d@k5`sxCks*N z^La?>XCQNTfNx%`+*95&oF^+=zR(hi8si+ds=PL@J{5Ye7Nh2i5cq9vZ2WliA$u1?lPTudx&^MnO@GCEE7shQB2ow1lUGfjZQ9B z>O1!8*pd8!ruzk+n*+<#+Do49t9qy|qm^|@i*)i?(=#}3 zhRn(_eSO5Hc$7whG)PaOp;yk!9m1>=^wgZ`nbfripW_*(b9?-7PL>S|V7U%uba8J@ zi}3wmsVa*e`r2E>1Az;P>kDO9K9j#BE5rfgo;xO^>ezv1R-(gVcFszPl$ z#@}|NhcRK~C39R;MuzO_yaaV$7y~a}R{HB|ykch|QZUBs4-z3*U$@n!2mF?k?iVYm z*kV$5_t(#LMl$!#F@RsnCXhLu6cp^fdH%RZ{KV?_fWhX4k+I7VCTsdnjW5fqmZz>M zTU%DiQ(^v##QC8k+w*777DyxEWjw+mAd^6$Y4rVCtm)u-U{q#dpf!Z2JP&^se-0T+{>~;Ge`;zoKvAo$O zmSG2yVxhc$`^H6c_K*09-Sm{g?8QZ7*dlcBiQ-Q8j6LS5DUM*ztvPbkYn z*cjtq9kGPH4DuhHQIYOyUlCYcAYW=jeYm4H}-w2 z6(+d67CB$@c`qFouGT}sz8YLOX1_aAbf$ubM0&oV7lY{Kyw#C0x$N$$C%H*I9d6l* zX@cSY#(KnjLLzjl($>>mf62|9ktg4O60T}ZeR)q8KWNg?jO26p6gYN)%jGgFeW@tn z53MJHFzHb*5UUBu1sfzEHi4$|5bFy#N6wyQd9}DN`b zHMRoo5>Wxn_y{xGIQqa@LZMs<9>Y?{P`5YBvyWy3zb4kE7{>^%K3O2&6(u&ES~$Hy z)Ld5m%!<+Q88NH)>3ZPyCMX9j5=PZ{ zR=Ab{VTZ=8Eh6^So3Ca{$=G7nWExkHFwW(rd8%kbh5a6`a`{Pt$iSDsvt8v}#vaR5 zAkT5RG{|1%{Q)oikLFtdzKGZPn3#?JfHZYe2Q#>fpC@Ntq7c$4qXMhJ7{#v1rA36Y z4+YFv4nO~RxN%`fN`^frxL=pr>2{S7P8}}jy4yR`=W{M`1&Q?=R!VGy1gNzFiSc}1 zdK-5-Jm*Ys-5Ps!B>lBR34NkTf1sxjoj)lJ-r+Q~sILXHfUEp4qg6 z#vnE!M!GmVTJY=n==icdXHMm4VX|4pETU)jt|mB^go@)UFQQk$`Z`>J|kJ zo>+Y#CU$`D0p#pg-oxRqcQpQ0vddMu4Z;N9$uz1gPQvCC-&6T21!Eh7AK)qS?q5q) zdN=TxZ3_oCqp&EkYl!x)SWVkrL$HfW(Ie-`p#fQ%jN=HF2WTy|UACCRR%f8XAOGpta4x{l4{eE^SjLnZUqu$A%49bBU=bEOkZVKx;JHi;w;$_;&D@YCj z#*CoJHI$ZWCu1~@8s8yd*&)V+7xo_sFq2%cMYlPM@6CFA9}lvTsGm5$|KV?4Gl#6v)*rUsuF^(t(&mbolDfx2uEs1o>Y0IL zD&AG-(s6!wcF8{&d~9Cg)@Z~^q!$MbK+in>xz=%CIiPR7#uJC;5{N@%M)7iXM0Q2m z3$JLVV0wiro+6`vaNzWMpg*7V=acp7#y|2E-FphwWsH~MOwOtEzNhH8=_?OF;j{Ty zyrLO~xg7yy&X7wv77A5iLO*P-Iukpodr|aS;zMEVb3Q2@MhR`Rl zr&7Vt=zK3Mh{I=f5WfR?JXKiTWm=#8}=d(`=xe^63i z^(FopgT?}Co3@=3v3j!dpo06?2r=QU2uQ~6O#gm35x=|W<;Qb;{7)zNwsG%$x+tF; zGVS9Dh=HgD>P##8bag$r28XU?UB{Y+bKNAR__n0F@H-y_?e za!tFIfI5h5q!k+_mVjuHvzhazoEwDu6WFkvVt)TE6Nh0lKwMFBJH|HxJu*AA1LQ7p zWZ14CI&R4PIy%qF>D#w@@XINQXi&etK72#6H98-3U#<2E zo82fPyY;k=FbswHdC-xz<5m3IU7l5vH|wHhjb|es4E^#@@}PTEZtcT8BOlgIxcuu0 z>0eD`|6cd+cmD4f_;(EaZ;XNM=qL%)i_%gOmh1uQS~5-d{k?$d`cqJxNG=qjM10as z+g<$_KxD850o6Z|Bl=<-GN%~06>Krg(2Z#8s8TF+^Lt>y_fNSc>>qvUmPv`xm>W`}j1x~LkOe~GV2{ARk%0r${IQ{|lE#iW_%fJW;TbrWG^R!BJ)&z_rY zJ{^=Z6k_L2{ZbKJ<0+#6;7cNVeG-k)h|ZS`7zo4Z@hoZZCGwcYYu{6`BOTQOH1MW$JE+B-Spe^QzFBLC>_^t zKT$0S3;B|37SXXBJnwJjzf-jBz)D%_e=7B{Y6u`HCQTEvv`Qv)vzMP1>rwOuWY1Ks z#sd(}&#%CUHMq81Wkq1mfeeLjc{3Rxdhw=dKYvOW9u#4!>}@uIt#DUZLzoL(-I+Bq zhld6~IGMP`=(9igJXi@c{X1fA-YoNyG!KT+V9l@kdkFN7d8(#$PPXH|&R_6gs&5z| z&t`yIsv0mN67K_Rg7CCOR|1)mlNgT&tw=1!Vclu#qGn?g%J-)& zCb>XGFIWl}xcYoa`>-+=g!mGAtHgWhDE;R{YQS3xJW~Fi@*!W?Zr8(+8J#u8=^YUt zrJil`;!Q4*=r1TOoRIrwBDKMGirLC>uZj+RyqmRF*2V*0A(IVI-S&Xnx?X3xHDh!C zNgsJD194^S`urY)?i?p$$KFous3p(OEVw-&{yZzjOa(SR?YNKY!<3vWei{4$IFZsa z=lW@idS-dVmCyNLGaijHRVHD*Dw*(J0BlfnG~gwPp|^gL&xVO=WlJU9a$>dC-f!yx z21)~j4qV8XGn_F9ORj(Kl2bgIk-~x#`R{&s1sfMIJb%NUGFCe~zNMxIr`$ka-{yMN zMU|-f?M&I;Du-T9BRB`;Y?%2ocnI%igDn8zd2(J|QgVcCI-;X-vMreSvB{&o$kjapV4s z#MB}2fA*MyYRf{!w{E2RNmWVq)RW~KH+!1Ik3VYszdyMJ+R3G*$S5PR5dykUyM1Yk z(d2zi5F;1+oc2IZ;e;1Qk65iB~K9*?bwSNavQorL&XtMs*CqOPj0n z(NCQ--)llVGVPf>%SbY(?H>b9jG0M%$O`n+1=(U4(|3T&2WT?^{T|({zTk*DZ$88? zr`RA<9Hk)+jYcu`!3+=`02KgmWdo!xJ#rtLFh_#>_<~|Rpkry7Kr&w&etJZ(Hxo2-+EVR5EvQ?Qs%7RL$~jG5bU_7E_cW;rjZk$vRQw zx4P2$m>@>YKS$%SG1t@ma_;jMc6 z$h7Eu*)j$95bE&iSwk>`F>N@=Uyl`B23lnFiLuBEqVp*E5o=Gm|24@>vkO~A7kYYh z=)FgjWXc=;sk=+O=kM@gg_8j{k64`vxdOC0hN7X!rw1CO<>ro26XRR9H0Guyx~KeX zF?S5BnxZ5#j#p)#Ip_`mDLy{NqJYEGYx!YrS>=n0K61y z5lZxO>m3qyb#(!B`ueG^CBVLcu_>2dHWSM6dRh zvMuIY&yvzvel}2dhdLj&+7xatEippRwA`C5os@iLbTuYPZzJ^PW2!o0SA0z>G(G|_ z#fBwf)THNoIp!2I?K<5FZaS+ZwUb!O2)xxuK{ATl;{Tkdh>CU^YrD9nSL+EQdQtCq zWcquM97AtbFRgn6QG)aR+BX|(nz%n*(Jt{? z7=<{SpwIKXKs%uUm0x$sIp|KYe$IZaCW+elpp{Sd1gIy-ynHLX8k!hCA$Xtl(ATG^ zPo-~x^XXBo-P>%(8Xl;K#MT;69z%Vkm_CPO+gJB9YRHWq|ihB;>{&0mUjL7gk04 z!Pwi|LNi+o;8??sr9n&6_?A>oX18G)L|ZveZE`=PvP{Y9PxQ@sPM%KN&bNEYC+a|d z@dhkd{W3>&w?1#JmIhO*K`A`~+XN^ZU4A1Kt?o6?A`si6< z9a=~VP;8fzeC}mYkk;s#Ez>Rz2S$%=r*6JVhZiO7^^ z9O4H&nDKW6$1p8L394Dwv-s>5knnvneire|8Nh&gFmm6@NBizviu@Tk`JXp_5v&h| z7;hthVjhm0pg0|BD3>lT4nk_mCOs+}hj{rmr*epQs?lyP{(1T)?+vQ5?W>=%R9jU@ zBy5b4^6q~1`BVHRN805OAb}YX(A$nf*r_%6UlwJ5NTJk%^Cf ztb%cFM{v!CaFaOPyST{|Aa9;ob+fFP-CycsG>8M#kcfw*sQ%}+G?yl;YhP*ied{Pt zHeWZ)Aj+ZSxn*8ka+=RsS#N<(h^lMoWv9b0{m-2@i7T}8UG>)7H!Pu`4F98V;{Kv< zeOa~_m3(NX%k1g4nG@EejiSAm*+WneUOv2?K5}qZ|JhUG^n%5a0$DkO6TOBJOS#sJ z6Je~%s#pA0NBIX2iZ|8ckJL&7Crd8QB+7heN}7WY@owgd9V#vkqL(##KBZ7GZ(8-| zUg1&&ooX(N1+V-cHPgzH0HFl$R)X9e!3E{ycTM)hNX2CAOy$-x2eTC+DDM$H_liW| zlv2I*u!Q)Qf}d~Lg3D0Vr#knr}8DkmYx=kb{)z_ zcs}ZqS+1Wo^b(xeccNwX_XNv_p8#w#hiO4k)hKuF%`;REq?aWOH#KXqFWd`n#a)P3 zsPY+B-ZS`EBIU7iGJw?F++seA5B&+%IZ=|I)VR^V<&jSNg^9>74)PXJcq9;g%#=@p z<5{&OfoC3#u1p<5K>_BDLw`fG$LK5(S#y!hV)bvDZsNQZ#c)wSMx%Pi{oa|CkotON zRSjE7_=_|`law%g?A(fvK%*D9NknS8{{s^Ie^NMY%hriG6fcmj-v<73BW7#ma0Pqm H<{$q7Rc`{1 diff --git a/unit-tests/CMakeLists.txt b/unit-tests/CMakeLists.txt index 0842ec4..10fade0 100644 --- a/unit-tests/CMakeLists.txt +++ b/unit-tests/CMakeLists.txt @@ -61,7 +61,7 @@ add_library(read SHARED /opt/ledger-secure-sdk/lib_standard_app/read.c) add_library(sighash SHARED ../src/sighash.c) add_library(personal_message SHARED ../src/personal_message.c) add_library(write SHARED /opt/ledger-secure-sdk/lib_standard_app/write.c) -add_library(format SHARED ../src/common/format.c) +add_library(format_local SHARED ../src/common/format_local.c) add_library(apdu_parser SHARED ../src/apdu/parser.c) add_library(transaction_deserialize ../src/transaction/deserialize.c) add_library(transaction_serialize ../src/transaction/serialize.c) @@ -69,7 +69,7 @@ add_library(transaction_utils ../src/transaction/utils.c) add_library(varint SHARED /opt/ledger-secure-sdk/lib_standard_app/varint.c) target_link_libraries(test_address PUBLIC cmocka gcov address cashaddr) -target_link_libraries(test_format PUBLIC cmocka gcov format) +target_link_libraries(test_format PUBLIC cmocka gcov format_local) target_link_libraries(test_sighash PUBLIC cmocka gcov sighash blake2b write) target_link_libraries(test_personal_message PUBLIC cmocka gcov personal_message blake2b write) target_link_libraries(test_apdu_parser PUBLIC cmocka gcov apdu_parser) diff --git a/unit-tests/test_format.c b/unit-tests/test_format.c index 06a1396..e3c2e28 100644 --- a/unit-tests/test_format.c +++ b/unit-tests/test_format.c @@ -30,109 +30,21 @@ #include -#include "common/format.h" +#include "common/format_local.h" -static void test_format_i64(void **state) { +static void test_format_message_to_sign_simple(void **state) { (void) state; - char temp[22] = {0}; + char message[] = "Hello Kaspa!"; + char dest[12] = {0}; - int64_t value = 0; - assert_true(format_i64(temp, sizeof(temp), value)); - assert_string_equal(temp, "0"); + format_message_to_sign(dest, (int) sizeof(dest), message, (int) sizeof(message)); - value = (int64_t) 9223372036854775807ull; // MAX_INT64 - memset(temp, 0, sizeof(temp)); - assert_true(format_i64(temp, sizeof(temp), value)); - assert_string_equal(temp, "9223372036854775807"); - - // buffer too small - assert_false(format_i64(temp, sizeof(temp) - 5, value)); - - value = (int64_t) -9223372036854775808ull; // MIN_INT64 - memset(temp, 0, sizeof(temp)); - assert_true(format_i64(temp, sizeof(temp), value)); - assert_string_equal(temp, "-9223372036854775808"); -} - -static void test_format_u64(void **state) { - (void) state; - - char temp[21] = {0}; - - uint64_t value = 0; - assert_true(format_u64(temp, sizeof(temp), value)); - assert_string_equal(temp, "0"); - - value = (uint64_t) 18446744073709551615ull; // MAX_UNT64 - memset(temp, 0, sizeof(temp)); - assert_true(format_u64(temp, sizeof(temp), value)); - assert_string_equal(temp, "18446744073709551615"); - - // buffer too small - assert_false(format_u64(temp, sizeof(temp) - 5, value)); -} - -static void test_format_fpu64_trimmed(void **state) { - (void) state; - - char temp[22] = {0}; - - uint64_t amount = 0ull; // satoshi - memset(temp, 0, sizeof(temp)); - assert_true(format_fpu64_trimmed(temp, sizeof(temp), amount, 8)); - assert_string_equal(temp, "0"); // BTC - - amount = 100000000ull; // satoshi - memset(temp, 0, sizeof(temp)); - assert_true(format_fpu64_trimmed(temp, sizeof(temp), amount, 8)); - assert_string_equal(temp, "1"); // BTC - - amount = 24964823ull; // satoshi - memset(temp, 0, sizeof(temp)); - assert_true(format_fpu64_trimmed(temp, sizeof(temp), amount, 8)); - assert_string_equal(temp, "0.24964823"); // BTC - - amount = 100ull; // satoshi - memset(temp, 0, sizeof(temp)); - assert_true(format_fpu64_trimmed(temp, sizeof(temp), amount, 8)); - assert_string_equal(temp, "0.000001"); // BTC - // buffer too small - assert_false(format_fpu64_trimmed(temp, sizeof(temp) - 16, amount, 8)); - - char temp2[50] = {0}; - - amount = 1000000000000000000ull; // wei - assert_true(format_fpu64_trimmed(temp2, sizeof(temp2), amount, 18)); - assert_string_equal(temp2, "1"); // ETH - - amount = 100000000000000000ull; // wei - assert_true(format_fpu64_trimmed(temp2, sizeof(temp2), amount, 18)); - assert_string_equal(temp2, "0.1"); // ETH - - // buffer too small - amount = 1000000000000000001ull; // wei - assert_false(format_fpu64_trimmed(temp2, sizeof(temp2) - 20, amount, 18)); -} - -static void test_format_hex(void **state) { - (void) state; - - uint8_t address[] = {0xde, 0xb, 0x29, 0x56, 0x69, 0xa9, 0xfd, 0x93, 0xd5, 0xf2, - 0x8d, 0x9e, 0xc8, 0x5e, 0x40, 0xf4, 0xcb, 0x69, 0x7b, 0xae}; - char output[2 * sizeof(address) + 1] = {0}; - - assert_int_equal(2 * sizeof(address) + 1, - format_hex(address, sizeof(address), output, sizeof(output))); - assert_string_equal(output, "DE0B295669A9FD93D5F28D9EC85E40F4CB697BAE"); - assert_int_equal(-1, format_hex(address, sizeof(address), output, sizeof(address))); + assert_string_equal(dest, "Hello Kaspa!"); } int main() { - const struct CMUnitTest tests[] = {cmocka_unit_test(test_format_i64), - cmocka_unit_test(test_format_u64), - cmocka_unit_test(test_format_fpu64_trimmed), - cmocka_unit_test(test_format_hex)}; + const struct CMUnitTest tests[] = {cmocka_unit_test(test_format_message_to_sign_simple)}; return cmocka_run_group_tests(tests, NULL, NULL); } From d155d6c554e0975e334a8c113a2d74b0031cf7ba Mon Sep 17 00:00:00 2001 From: coderofstuff <114628839+coderofstuff@users.noreply.github.com> Date: Fri, 15 Sep 2023 21:06:18 -0600 Subject: [PATCH 5/7] Use "Review Message" for nano devices --- src/handler/sign_msg.c | 4 ++++ src/ui/bagl_display.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/handler/sign_msg.c b/src/handler/sign_msg.c index 5700235..880fdc9 100644 --- a/src/handler/sign_msg.c +++ b/src/handler/sign_msg.c @@ -62,6 +62,10 @@ int handler_sign_msg(buffer_t *cdata) { return io_send_sw(SW_WRONG_DATA_LENGTH); } + if (message_len == 0) { + return io_send_sw(SW_WRONG_DATA_LENGTH); + } + if (message_len > MAX_MESSAGE_LEN) { return io_send_sw(SW_MESSAGE_TOO_LONG); } diff --git a/src/ui/bagl_display.c b/src/ui/bagl_display.c index 08845d1..30b58e7 100644 --- a/src/ui/bagl_display.c +++ b/src/ui/bagl_display.c @@ -230,7 +230,7 @@ int ui_display_transaction() { } // Step with icon and text -UX_STEP_NOCB(ux_display_confirm_message_step, pn, {&C_icon_eye, "Confirm Message"}); +UX_STEP_NOCB(ux_display_confirm_message_step, pn, {&C_icon_eye, "Review Message"}); // Step with title/text for message UX_STEP_NOCB(ux_display_message_step, From 9d1ae89e641a95a476a116e3e5751683a2485a98 Mon Sep 17 00:00:00 2001 From: coderofstuff <114628839+coderofstuff@users.noreply.github.com> Date: Fri, 15 Sep 2023 21:06:25 -0600 Subject: [PATCH 6/7] Update golden images --- .../nanos/test_sign_message_kanji/00000.png | Bin 371 -> 379 bytes .../nanos/test_sign_message_refused/00000.png | Bin 371 -> 379 bytes .../nanos/test_sign_message_simple/00000.png | Bin 371 -> 379 bytes .../nanosp/test_sign_message_kanji/00000.png | Bin 399 -> 405 bytes .../nanosp/test_sign_message_refused/00000.png | Bin 399 -> 405 bytes .../nanosp/test_sign_message_simple/00000.png | Bin 399 -> 405 bytes .../nanox/test_sign_message_kanji/00000.png | Bin 399 -> 405 bytes .../nanox/test_sign_message_refused/00000.png | Bin 399 -> 405 bytes .../nanox/test_sign_message_simple/00000.png | Bin 399 -> 405 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/snapshots/nanos/test_sign_message_kanji/00000.png b/tests/snapshots/nanos/test_sign_message_kanji/00000.png index f81b25d230f8bdcdac05615cccd494571788979c..b102b44cc85eba674cce96ebd7eb79a3e418db11 100644 GIT binary patch delta 352 zcmV-m0iXW!0{a4xB!5ClL_t(|ob8!G5`!QNMX}S~|G+ME!3<4FK)_)9HgC}ZiV%K; zAcWvJj^q3*i?soxZ0k3@eC+Hv3!nq2^b|}tpgAC^PvsU1L3mjkFhnLapzfG#>(BaA z&w_wC0~|9-uQ}%HA5dpNrZuMY5wu-U0N;jgYi1{)10uK|Vt>pB&gCGlnNPueV2P`5 ziK}mktA96?wxPqD!jpTl*e^dB#o6b*)mlnp?$Q)TsY&QLK!l#uXO4+kT3D)FO7|Mj zo)t?kD;AQBxvUvhJAc6ZMCVzYo+zxWioQ3d#C!xM4 zp}r@f{%DxXP-8im%#)#|KFh}`^$f|=WNmy&rugt;^}yx;DySwm=w+a!9yJ1Tb7pvX z>z^5(Y^psaD+fyZV)FX1^YG@1A$_~E)I9TOb=an%8Zk!z3aZc8nxV#P)0pkd<$yg$ z$(*1bqV1x~Dp5dY9y#(aGLLyX8oIEptTF1%9df-b0@94xT4Y%&J0Yi3Z&G=gp@Cm> qT6&)UV4jFg1nhy#Ð@1a;m?cD+=+R}@?T0000(BaA z&w_wC0~|9-uQ}%HA5dpNrZuMY5wu-U0N;jgYi1{)10uK|Vt>pB&gCGlnNPueV2P`5 ziK}mktA96?wxPqD!jpTl*e^dB#o6b*)mlnp?$Q)TsY&QLK!l#uXO4+kT3D)FO7|Mj zo)t?kD;AQBxvUvhJAc6ZMCVzYo+zxWioQ3d#C!xM4 zp}r@f{%DxXP-8im%#)#|KFh}`^$f|=WNmy&rugt;^}yx;DySwm=w+a!9yJ1Tb7pvX z>z^5(Y^psaD+fyZV)FX1^YG@1A$_~E)I9TOb=an%8Zk!z3aZc8nxV#P)0pkd<$yg$ z$(*1bqV1x~Dp5dY9y#(aGLLyX8oIEptTF1%9df-b0@94xT4Y%&J0Yi3Z&G=gp@Cm> qT6&)UV4jFg1nhy#Ð@1a;m?cD+=+R}@?T0000(BaA z&w_wC0~|9-uQ}%HA5dpNrZuMY5wu-U0N;jgYi1{)10uK|Vt>pB&gCGlnNPueV2P`5 ziK}mktA96?wxPqD!jpTl*e^dB#o6b*)mlnp?$Q)TsY&QLK!l#uXO4+kT3D)FO7|Mj zo)t?kD;AQBxvUvhJAc6ZMCVzYo+zxWioQ3d#C!xM4 zp}r@f{%DxXP-8im%#)#|KFh}`^$f|=WNmy&rugt;^}yx;DySwm=w+a!9yJ1Tb7pvX z>z^5(Y^psaD+fyZV)FX1^YG@1A$_~E)I9TOb=an%8Zk!z3aZc8nxV#P)0pkd<$yg$ z$(*1bqV1x~Dp5dY9y#(aGLLyX8oIEptTF1%9df-b0@94xT4Y%&J0Yi3Z&G=gp@Cm> qT6&)UV4jFg1nhy#Ð@1a;m?cD+=+R}@?T00008}jMNztyop}FCVlO?gglH&8z(w%0?iobJ zaqOZ9pM($q00000000000AQJ)-2u#tF{b0=I5tLdg=7Qdsn01kgI)uq?C0q=PfGaR z9l)d_(QFAr@m)3H7mb zN6Y7+4fdlAb|U*bk^P;>{_Xhu4wzn&UtAZT&#nKL7Fuh+yl#~0Jd{(ROfBNp0H%DO zq-dD4n4fH2+&Uf&;Paw+ruC^?DE^dpJg8sm=b9hsADG3tDqQ5&1Nu9KLw9gwwprZ~ zhXU}8(|Has`*ZBj9p)b0ntRQi%art@7_3^t<807*qoM6N<$f{Qw}tN;K2 delta 372 zcmV-)0gL{X1CIlcB!5;(L_t(|obB0Lj)Wi(h2fe>@5KEtsrE7tB!=N)+tx5}$p1Yl z5gV)IVq*pX00000000000K=pJr^~$K2M?-8a=O$!!Sli2WzU-8TRL000000001(nb{A3X%2C9 SsqV%A00008}jMNztyop}FCVlO?gglH&8z(w%0?iobJ zaqOZ9pM($q00000000000AQJ)-2u#tF{b0=I5tLdg=7Qdsn01kgI)uq?C0q=PfGaR z9l)d_(QFAr@m)3H7mb zN6Y7+4fdlAb|U*bk^P;>{_Xhu4wzn&UtAZT&#nKL7Fuh+yl#~0Jd{(ROfBNp0H%DO zq-dD4n4fH2+&Uf&;Paw+ruC^?DE^dpJg8sm=b9hsADG3tDqQ5&1Nu9KLw9gwwprZ~ zhXU}8(|Has`*ZBj9p)b0ntRQi%art@7_3^t<807*qoM6N<$f{Qw}tN;K2 delta 372 zcmV-)0gL{X1CIlcB!5;(L_t(|obB0Lj)Wi(h2fe>@5KEtsrE7tB!=N)+tx5}$p1Yl z5gV)IVq*pX00000000000K=pJr^~$K2M?-8a=O$!!Sli2WzU-8TRL000000001(nb{A3X%2C9 SsqV%A00008}jMNztyop}FCVlO?gglH&8z(w%0?iobJ zaqOZ9pM($q00000000000AQJ)-2u#tF{b0=I5tLdg=7Qdsn01kgI)uq?C0q=PfGaR z9l)d_(QFAr@m)3H7mb zN6Y7+4fdlAb|U*bk^P;>{_Xhu4wzn&UtAZT&#nKL7Fuh+yl#~0Jd{(ROfBNp0H%DO zq-dD4n4fH2+&Uf&;Paw+ruC^?DE^dpJg8sm=b9hsADG3tDqQ5&1Nu9KLw9gwwprZ~ zhXU}8(|Has`*ZBj9p)b0ntRQi%art@7_3^t<807*qoM6N<$f{Qw}tN;K2 delta 372 zcmV-)0gL{X1CIlcB!5;(L_t(|obB0Lj)Wi(h2fe>@5KEtsrE7tB!=N)+tx5}$p1Yl z5gV)IVq*pX00000000000K=pJr^~$K2M?-8a=O$!!Sli2WzU-8TRL000000001(nb{A3X%2C9 SsqV%A00008}jMNztyop}FCVlO?gglH&8z(w%0?iobJ zaqOZ9pM($q00000000000AQJ)-2u#tF{b0=I5tLdg=7Qdsn01kgI)uq?C0q=PfGaR z9l)d_(QFAr@m)3H7mb zN6Y7+4fdlAb|U*bk^P;>{_Xhu4wzn&UtAZT&#nKL7Fuh+yl#~0Jd{(ROfBNp0H%DO zq-dD4n4fH2+&Uf&;Paw+ruC^?DE^dpJg8sm=b9hsADG3tDqQ5&1Nu9KLw9gwwprZ~ zhXU}8(|Has`*ZBj9p)b0ntRQi%art@7_3^t<807*qoM6N<$f{Qw}tN;K2 delta 372 zcmV-)0gL{X1CIlcB!5;(L_t(|obB0Lj)Wi(h2fe>@5KEtsrE7tB!=N)+tx5}$p1Yl z5gV)IVq*pX00000000000K=pJr^~$K2M?-8a=O$!!Sli2WzU-8TRL000000001(nb{A3X%2C9 SsqV%A00008}jMNztyop}FCVlO?gglH&8z(w%0?iobJ zaqOZ9pM($q00000000000AQJ)-2u#tF{b0=I5tLdg=7Qdsn01kgI)uq?C0q=PfGaR z9l)d_(QFAr@m)3H7mb zN6Y7+4fdlAb|U*bk^P;>{_Xhu4wzn&UtAZT&#nKL7Fuh+yl#~0Jd{(ROfBNp0H%DO zq-dD4n4fH2+&Uf&;Paw+ruC^?DE^dpJg8sm=b9hsADG3tDqQ5&1Nu9KLw9gwwprZ~ zhXU}8(|Has`*ZBj9p)b0ntRQi%art@7_3^t<807*qoM6N<$f{Qw}tN;K2 delta 372 zcmV-)0gL{X1CIlcB!5;(L_t(|obB0Lj)Wi(h2fe>@5KEtsrE7tB!=N)+tx5}$p1Yl z5gV)IVq*pX00000000000K=pJr^~$K2M?-8a=O$!!Sli2WzU-8TRL000000001(nb{A3X%2C9 SsqV%A00008}jMNztyop}FCVlO?gglH&8z(w%0?iobJ zaqOZ9pM($q00000000000AQJ)-2u#tF{b0=I5tLdg=7Qdsn01kgI)uq?C0q=PfGaR z9l)d_(QFAr@m)3H7mb zN6Y7+4fdlAb|U*bk^P;>{_Xhu4wzn&UtAZT&#nKL7Fuh+yl#~0Jd{(ROfBNp0H%DO zq-dD4n4fH2+&Uf&;Paw+ruC^?DE^dpJg8sm=b9hsADG3tDqQ5&1Nu9KLw9gwwprZ~ zhXU}8(|Has`*ZBj9p)b0ntRQi%art@7_3^t<807*qoM6N<$f{Qw}tN;K2 delta 372 zcmV-)0gL{X1CIlcB!5;(L_t(|obB0Lj)Wi(h2fe>@5KEtsrE7tB!=N)+tx5}$p1Yl z5gV)IVq*pX00000000000K=pJr^~$K2M?-8a=O$!!Sli2WzU-8TRL000000001(nb{A3X%2C9 SsqV%A0000 Date: Fri, 15 Sep 2023 22:05:49 -0600 Subject: [PATCH 7/7] Add more error types for message --- doc/COMMANDS.md | 8 +++- src/handler/sign_msg.c | 16 ++++--- src/sw.h | 16 ++++--- .../kaspa_command_sender.py | 44 +++++++++++-------- 4 files changed, 53 insertions(+), 31 deletions(-) diff --git a/doc/COMMANDS.md b/doc/COMMANDS.md index f15e093..0aa991c 100644 --- a/doc/COMMANDS.md +++ b/doc/COMMANDS.md @@ -173,5 +173,11 @@ Transactions signed with ECDSA are currently not supported. | 0xB00A | `SW_WRONG_BIP32_COIN_TYPE` | `Coin Type` must be `111111'` | | 0xB00B | `SW_WRONG_BIP32_TYPE` | `Type` passed is not valid. Must be either `0` for `Receive` or `1` for `Change`| | 0xB00C | `SW_WRONG_BIP32_PATH_LEN` | Path length must be `5` | -| 0xB00D | `SW_MESSAGE_TOO_LONG` | Message len greater than max | +| 0xB010 | `SW_MESSAGE_PARSING_FAIL` | Unable to parse message data | +| 0xB011 | `SW_MESSAGE_TOO_LONG` | Message len greater than max | +| 0xB012 | `SW_MESSAGE_TOO_SHORT` | Message len is 0 | +| 0xB013 | `SW_MESSAGE_ADDRESS_TYPE_FAIL` | Address type could not be parsed or is not `0`/`1` | +| 0xB014 | `SW_MESSAGE_ADDRESS_INDEX_FAIL` | Address index could not be parsed | +| 0xB015 | `SW_MESSAGE_LEN_PARSING_FAIL` | Message length could not be parsed | +| 0xB016 | `SW_MESSAGE_UNEXPECTED` | Unexpected error while parsing message | | 0x9000 | `OK` | Success | diff --git a/src/handler/sign_msg.c b/src/handler/sign_msg.c index 880fdc9..5005842 100644 --- a/src/handler/sign_msg.c +++ b/src/handler/sign_msg.c @@ -50,20 +50,24 @@ int handler_sign_msg(buffer_t *cdata) { G_context.state = STATE_NONE; if (!buffer_read_u8(cdata, &G_context.msg_info.address_type)) { - return io_send_sw(SW_WRONG_DATA_LENGTH); + return io_send_sw(SW_MESSAGE_ADDRESS_TYPE_FAIL); + } + + if (G_context.msg_info.address_type != 0 && G_context.msg_info.address_type != 1) { + return io_send_sw(SW_MESSAGE_ADDRESS_TYPE_FAIL); } if (!buffer_read_u32(cdata, &G_context.msg_info.address_index, BE)) { - return io_send_sw(SW_WRONG_DATA_LENGTH); + return io_send_sw(SW_MESSAGE_ADDRESS_TYPE_FAIL); } uint8_t message_len = 0; if (!buffer_read_u8(cdata, &message_len)) { - return io_send_sw(SW_WRONG_DATA_LENGTH); + return io_send_sw(SW_MESSAGE_LEN_PARSING_FAIL); } if (message_len == 0) { - return io_send_sw(SW_WRONG_DATA_LENGTH); + return io_send_sw(SW_MESSAGE_TOO_SHORT); } if (message_len > MAX_MESSAGE_LEN) { @@ -73,13 +77,13 @@ int handler_sign_msg(buffer_t *cdata) { G_context.msg_info.message_len = (size_t) message_len; if (!buffer_can_read(cdata, G_context.msg_info.message_len)) { - return io_send_sw(SW_WRONG_DATA_LENGTH); + return io_send_sw(SW_MESSAGE_PARSING_FAIL); } memcpy(G_context.msg_info.message, cdata->ptr + cdata->offset, G_context.msg_info.message_len); if (!buffer_seek_cur(cdata, G_context.msg_info.message_len)) { - return io_send_sw(SW_WRONG_DATA_LENGTH); + return io_send_sw(SW_MESSAGE_UNEXPECTED); } G_context.bip32_path[0] = 0x8000002C; diff --git a/src/sw.h b/src/sw.h index 2f81e8a..a60be47 100644 --- a/src/sw.h +++ b/src/sw.h @@ -84,8 +84,14 @@ */ #define SW_SIGNATURE_FAIL 0xB008 -#define SW_WRONG_BIP32_PURPOSE 0xB009 -#define SW_WRONG_BIP32_COIN_TYPE 0xB00A -#define SW_WRONG_BIP32_TYPE 0xB00B -#define SW_WRONG_BIP32_PATH_LEN 0xB00C -#define SW_MESSAGE_TOO_LONG 0xB00D +#define SW_WRONG_BIP32_PURPOSE 0xB009 +#define SW_WRONG_BIP32_COIN_TYPE 0xB00A +#define SW_WRONG_BIP32_TYPE 0xB00B +#define SW_WRONG_BIP32_PATH_LEN 0xB00C +#define SW_MESSAGE_PARSING_FAIL 0xB010 +#define SW_MESSAGE_TOO_LONG 0xB011 +#define SW_MESSAGE_TOO_SHORT 0xB012 +#define SW_MESSAGE_ADDRESS_TYPE_FAIL 0xB013 +#define SW_MESSAGE_ADDRESS_INDEX_FAIL 0xB014 +#define SW_MESSAGE_LEN_PARSING_FAIL 0xB015 +#define SW_MESSAGE_UNEXPECTED 0xB016 diff --git a/tests/application_client/kaspa_command_sender.py b/tests/application_client/kaspa_command_sender.py index 74b4530..e5af126 100644 --- a/tests/application_client/kaspa_command_sender.py +++ b/tests/application_client/kaspa_command_sender.py @@ -38,25 +38,31 @@ class InsType(IntEnum): SIGN_MESSAGE = 0x07 class Errors(IntEnum): - SW_DENY = 0x6985 - SW_WRONG_P1P2 = 0x6A86 - SW_WRONG_DATA_LENGTH = 0x6A87 - SW_INS_NOT_SUPPORTED = 0x6D00 - SW_CLA_NOT_SUPPORTED = 0x6E00 - SW_WRONG_RESPONSE_LENGTH = 0xB000 - SW_DISPLAY_BIP32_PATH_FAIL = 0xB001 - SW_DISPLAY_ADDRESS_FAIL = 0xB002 - SW_DISPLAY_AMOUNT_FAIL = 0xB003 - SW_WRONG_TX_LENGTH = 0xB004 - SW_TX_PARSING_FAIL = 0xB005 - SW_TX_HASH_FAIL = 0xB006 - SW_BAD_STATE = 0xB007 - SW_SIGNATURE_FAIL = 0xB008 - SW_WRONG_BIP32_PURPOSE = 0xB009 - SW_WRONG_BIP32_COIN_TYPE = 0xB00A - SW_WRONG_BIP32_TYPE = 0xB00B - SW_WRONG_BIP32_PATH_LEN = 0xB00C - SW_MESSAGE_TOO_LONG = 0xB00D + SW_DENY = 0x6985 + SW_WRONG_P1P2 = 0x6A86 + SW_WRONG_DATA_LENGTH = 0x6A87 + SW_INS_NOT_SUPPORTED = 0x6D00 + SW_CLA_NOT_SUPPORTED = 0x6E00 + SW_WRONG_RESPONSE_LENGTH = 0xB000 + SW_DISPLAY_BIP32_PATH_FAIL = 0xB001 + SW_DISPLAY_ADDRESS_FAIL = 0xB002 + SW_DISPLAY_AMOUNT_FAIL = 0xB003 + SW_WRONG_TX_LENGTH = 0xB004 + SW_TX_PARSING_FAIL = 0xB005 + SW_TX_HASH_FAIL = 0xB006 + SW_BAD_STATE = 0xB007 + SW_SIGNATURE_FAIL = 0xB008 + SW_WRONG_BIP32_PURPOSE = 0xB009 + SW_WRONG_BIP32_COIN_TYPE = 0xB00A + SW_WRONG_BIP32_TYPE = 0xB00B + SW_WRONG_BIP32_PATH_LEN = 0xB00C + SW_MESSAGE_PARSING_FAIL = 0xB010 + SW_MESSAGE_TOO_LONG = 0xB011 + SW_MESSAGE_TOO_SHORT = 0xB012 + SW_MESSAGE_ADDRESS_TYPE_FAIL = 0xB013 + SW_MESSAGE_ADDRESS_INDEX_FAIL = 0xB014 + SW_MESSAGE_LEN_PARSING_FAIL = 0xB015 + SW_MESSAGE_UNEXPECTED = 0xB016 def split_message(message: bytes, max_size: int) -> List[bytes]: return [message[x:x + max_size] for x in range(0, len(message), max_size)]