From e782e701a6160917c8c42087b22a993968ff2e67 Mon Sep 17 00:00:00 2001 From: Toporin Date: Thu, 30 May 2019 16:49:14 +0200 Subject: [PATCH] v0.7-0.1: improved 2FA support - add CryptTransaction2FA() to encrypt/decrypt tx messages sent to 2FA device for privacy - get_status() returns 2FA flags - if 2FA is enabled, importing a new seed requires 2FA approval --- .gitignore | 1 + SatoChip-2.2.2.cap | Bin 22082 -> 22727 bytes SatoChip-3.0.3.cap | Bin 80650 -> 82779 bytes SatoChip-3.0.4.cap | Bin 80649 -> 82780 bytes bin/.gitignore | 1 - src/org/satochip/applet/CardEdge.java | 147 +++++++++++++++++++++++--- 6 files changed, 131 insertions(+), 18 deletions(-) create mode 100644 .gitignore delete mode 100644 bin/.gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6dd29b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +bin/ \ No newline at end of file diff --git a/SatoChip-2.2.2.cap b/SatoChip-2.2.2.cap index f00d1f6eb676eedc79134abd636c6b0c35128926..c66b6369eb531adb39205eb75040f83330d0b080 100644 GIT binary patch literal 22727 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 delta 28622 zcmb__2Vhl2_V<~&?X{4XkoQPWC;<{eOCXd0CUlXafItK!p-CqQCXP9lNfs-F01iU%RNQt}Wm1%zf|W1=;<+|Mz{tJ9EyNnKLtI&YU?jckc7e%ZyDw z>Ir9`rRgc;@px$0j2m_)bg&;;aATL02U?#@?6)A%e6#0{>KnW5yl>9^=QRJ<;q&SX zmyM`TuH3qD*TYk;DVhE9O>G|RQ?cx-pJrbF>G_v`mzKVDZ&~-l1=9xh{h;^u`L}+Y z{B1(Ft9Kne_^OqAXYJj=5v_~+gxQED>9H^2e!0KpQ?F-~zVKped-mfmZl5x2 zy0P!>(MxZ>ui?<7rxY z9=(6zfQf^DT%9@moH-L}A3bvH*oW^8`T6x>Gv;64=HeqKFF1K!-E|+o{EzPT?3W(= zd+wvb8C^eJ6x_e0&o!+F|MS53!u!wua@GB_&pmkJ#rA#9eQnq$`=%~=;Q8Ve5C3Dx z%kwi{Sy=JLh_~L{vC{X%$7y?v_WmO6i<9$Sw|+nW>Yqnk^2lE2yLVStKD_mN zqI=DJ|YkCfI32s_aGkm?|IL@<5bH2t#6^lJzh36;~paGW$H$L{qKf2rO*>{w8n+g zwPguh_?uTY`frs)w>o>Z673emf7fz)HJ8*X1y2}{#3S%{@DQG4JQ^MykAcU;W8n$m z@j8Wi>k%!qRX$;oxx*x%W|H4)Qs4_bfD;y()a*Qy5+CSolX&FM9;{z~5fSmz)=8AP z&YNaeEtQg;MC;sUO0n`6r@z*N=(Qfsi?Vf_5i^#|S~$Jaw5n>W$IH^QvexI>L`9y< z5$~fS5lr1e{g2#hwUz#Xr8QbvYF74E8sU8Itq^6-K;J{6zoYpJ#XzTvKPzXXR+Mu{ z&M&T~oO+=hGPhFis+_cJpofgD)W@0U?-b}=m8EcPD-CpR@plgNuFR>YtV4z(yzlQU zdOJyh4AIx=7)ZCzNYyr2cszK#smp1whG*BrEp%p;C+XUTtu!(<=-Elb*ZU%|zuvEH zr{R6gNWQasfY2sZa5Ifg-ArR^jIP`1+`j0{78>8FM)mSMeVH5AXswWEVx=c(hlfx@ z+Gfgeo=0Owrt5h{2d%1voM6EmRIelPpjFA}T%Z=voTVa%S~S#(7F0l0R77*AJ1wR@ zbco7m9rdS6X&`N*!L*x(QXN&&KAIyenky1%9^FIp=>=Lq@6tm0hN`K77ST_1A$RBBrK7Ro(94=JGK0XnLHRtM+~1++duH!7gb0otR0yaTjT0c{V^28`!< z2WXYT+f^@9ar^3O73WvaQgK0brHVULPf&4T_1TE+E!44ks3LT#E>m&m>Ygg@Qr$(x zU8~zC&1aca=SJexNF0pB9yhKrdui!b-c~9u%7J{lL7W$GIZwWx9@Z;#k(X~&Xbn7e z?afq>!p4?-chD1&Eo5${?yLa;g{bt+RKgSqigU7AigT!0b{nN7Tp*$qVJjHiLat6k z3XMkQ+_;QBr9NR#B%@Dj6PNK%Ty@s9My`5%=G^ke>V0m;7}v&(+_mz2Jtu4oC_+tJ zsYkxILYFS+e3_VU_v{HYB0EyO4lc(Y8#uSCW!#1RloI#)q(bY#&-DE zCn6?A4MwO0YB1Hr^eSJUlp1UaV8Ht1)L=6JgVs0SN<->{TWP48WY&h1)LU^r*5TlP9dh%rzxVpG3S`|>GkP~SdIo}q*~xO zZhhufn!wGeNDU4LISc)?vvZ7j{aFVfn~m9!O@;Qyq3onu8iQwUdnD9n1$zclU|~ut z^ppziOPACo=y6G&3hn1qeS=kFl+`C>wYi`f!t5OGL67QOrfd^bDstvBUBNP&r#CW; z1jYFzsl7dkRSWiPWV)FL!*Fd9gGOFa&QvQW7@P+R8a*9egmecD+INpPR1dcu06FzOS+dYkq}$e8I587yIqWyoT3QJHUs&84(~1O>?J z(ggH_MbGUB8QjhKL=3|eE@?BdKFK9-rpo%Htv{Cu6l-2uGlIf-}PZXY*Z-Nd(1YJR%8ofBCsGg{zav$33A^n0# zKUk~B0A{t0^(m}+741`Mx+iQz7hYw9A>&3HtgB?U!3n83Tj+v_A)Xz|o(|*t=h{xK z?Eh7OUxYG-{RaVtPH8C1>C}dX^hVi3XwKQ;TrtvF6b{+YLzWV|8j2Cmezpv8h9D|2 z@Qt7LEHSf*#0*7=Td0`htQwib=3MKN1@#Ko`?K22^m4eFW@qW87 z)0J_US6UweuuY@0^!jjpVlY>M%V|C`&bOmEgJoL@S<{fA3|ZLz)wcjrsd8g^@PLWC zunjD&PpZdAR@P@|TF*v1Q=ft1nwoFItY9gCp~=wG4F>zb=G3Pl(X}}y+Z@xiIkv@F zFr%YJ$7G|!X)|lAqEiO-poa||7Bbj5w*gIUTv57~<65}J+Hz1?j$4j$s&+4B4>-XW4lSl!uk(3A!NP8}_n1{49?Q=8_m}S)UPX z>GIL?ed%FeePA7CLGok2Tv7!G*dVMl6RJ6b{9*XgPG|W152yZ>oYe~w6Sn5^Z|p? zH8j@wFf%U%)o1oD(>%1Y3e(KV%F483DZ$)eG=YUtg=ITf$zymCk8U#_T~OT)Zl#MW zn>Wd{thBnQ3E`ruq$c<>#gzG7!q!dkYhK@?0xDHguXqK^xWHywj-0M+B2vCI--{eA zAg0siT&23EbT+PmeVnB1TpQjKHiF2Ij^4Xjv?Sq!E-LHMbb!)>t=MpQ(u28SPuLnC znZuFs0f$zYD=LwvEQZPJBA82Xdf20BobSw{JZyWB)6Eq2mIqB$$`>P80I=OKCf{K1iI+qe0SLtE$?i8>0v5~vsr7(O zfkUfIMx-iV6PtqWC}uv`6c__L&tg9@%*vAv{7?Fv?txGZwzVbI30~;J`4}v87smLV7qMX1o$$yclzhR{|R^%)^;AraHZdcg1V@5$^+1gk@y*Oq#s4O-%mDtH!D8q}0Sz*cg%!oMc>Usa0Jj%9|@_7$8 zHEPDHTh=GQi}Z%Pyp@o4Fc94*z}@#omtNR8SSHLL2+*qp_@}*0M1X&iAKQ+2v7NGq zYbv(o_GtuVc;FhaJAl0#yc3oera&!rSQRG5*JPX}0zHOnUe4PBj*K`-8W27&1E=Y^ zC*)B*cROCJHbcoFPrQj&UH72t7!b_!UZ>1+=gn3b_Nw3|ym(hNV+RUtU7c@LCxvx= zZXiNfgJdgs$z0gcRY`MdF_H(w`LJ~(w0zHUT8lyTs6JG9bf7^LYl3H=f`@=d_Te5h ztY^_C=Mxum?70JXgQ2K14MEuJ3WSQ!s3Gu*(u(ThS_~El;QLP3d7BqRtiekUyj_>n4fIT z;XlKfa69gEJMN2iya|quH^I?yU!>zcv}0AoAF1)2#*2w^21#vpARNRhj z<}vKi>1{xm81b3z!EOHR=gAGN&6Y&M#)q84et(Vi*UGw`Q4C~6D4EpD$xw)e}P|`lJm9|wkkE6WDR%Hv0 zNUI-qbEoIH9!QOO4hXRhs^%}J?P0yGn-2LbryZE<+(Dd=LmV5}Nm7t1$Hn0$!y^8s$8MOWr=2BJ{X%V5&n>`yX=6z zFH-+S5s~hTR&cQ^(nxwlz)0mX%qxz!;umEQt3JX2I2Uo-tl+&^(yJ2P@=V@Y-3f-C z+Zd}mA97=YN)DTq&0Mr!UaTgT4CRvLsnk!G(=O}-5F!=R9^RG8#a?o5G??PPh3U`Tv+430V^ucf-K0b4-)Z}Ed93b| zNZrfnaxR@cAXvhVIl2Q12(E7mSWB`QLr<8zm9B{EN+Y{yR~p$(Vs@%Lo#3W($zWNu z>3R^as;V#@Fw?FihS_d1qA8@zMRZ1N-V1S($ru`;T-hs)RDGMID`AK5W+fY2$t%63 zT3U956)fx=UBk;8mEw!0fN#?jep|EcN zdWueB%Y`nv9S+v^M3Np!(Hj#$ML$@VuEBr1i~&JU_Mo6=?x-Yc7&EbFgsdyFOVW57 z0~ujWxH{}-x%eR$zo`BqPA-v5H`DhTjw<{(sxeh)asL1B(mIWlM|92!bIXFBNKdd} zsp+@JS>3sH!d2nsIIIdc9|Ui$hjX}d_pGb1PUXW!AlA#<<_8sI0KyU2RgT`}{+z4A zM%#RJ7%}GvD2Q_;D9CxSXa%@H1r!%E#s$Z5E|(+Ay7m&tk`iH)5@VARW#c?wWDoeS zIl?I>*um~2SJ;AbBF2fm$Ax&u&XBXCxIpZ4?l10)@QdOigxTFXiG4>#bQ@;cYVs7g z6J)LF&Yk`01(;3iYV=$}SUnaD{+K(wk%8rwcgvWnj2^FV{DfQ!|!O!T%n_Ch148dSjShgPu`@v-rZT%;9thpaseV-hlfy$!`J z&z#$`u{A6^mV9F;Q`jSB;aPKMt3(vNq!QB;G`v_i@W%>O+K!W&$L#{>8b$}TF~8 z{tl5f4iq3Oestnf?50U99II!r`7)zFi{TWVg)!T27wQ}|-V^iM8Di8AvXY#cW9FVC3E za*r6^sP4ooc*Eo<^}lJ9{eLvqpi&Jy__6A^SO0lX|2(FuY+M%=&T<*W)~``ir)Ft_ z$CR_lEya=lx}#l&iJNHr6!JB*-E;bhM6U;z3H@(0OBUl6H?+=X^D|TugR44{2>Ac$zg&b}EOo(~^eh&gDZ+O1+b_ zV`vA@EU)^roX3ZrrH6BxXE~W?)_N_U$8VXQP~gZNXL`kvCx^9>s;XwoN>{yR;i4O! z4yujWXNYFD-+I}L6HoOQq*at8_VHakBH^V}wD??xrI!}UMC!$`=B3*}pTw~46&}$0 zF>H9nP|*7@Y*A7;AOE8Yd1ZI;FnKw_@0De; zh;XM5*8{!s9Pu%=VK~7nFP6EK%WyNVyjq5FnGAo4UiqR-cD^0a+A|h+Hhr2H>tu{f zw|CJ1P8LGjC${6B8UCcuK9MCnv=yIZ{}^sQ15B!+$n z{YvTKd#TI^*F`ClGFDSVI&d+TBk4xE8`-89%U4NBOy!%ULY&8!OrsB&1sNS9}bB}{LS<_@t|%S2}Zdk>0N)VSD;d@R1D z1UHlS2eBmzV~o}c-KG1zVlDmb!U53flL-6;;I%HCun6#{F5K)qz?&lQCumTv3nzL& zpB91Vi?uec4C1drCccZxGF&+L8#2vs;iPGRe{tdDDPpazdfXtxC@kt+dTJQ3Qt1Yn zHWvARa_Q+KK!3o6GyQ;vGOP*0O;U?Y)&|?->VeOV0y3Ye&4A%{bJ&eiWhP_kVgaqn zIyWj@;mw*Pj?-vnDZN>DN*(tlnY}l=3KKxhNZp%#T(%LHFx~Lx79&p!hIK*ZC`DR> z4aS+GmicEx6IbO9Z{(jl2K?2yNN?^`@g4n5@eyJPm>~HuFw{oo>xkOQd;?K?G1f%XrB=5P71iprs@3a_Eo=1-;I?ihxH$a2){0?U z^R_LJoqS5QJc4FJfT$CLTp-2@M1^jRokT6I>e{xEUDu9)F;vhUU)M8XE^;IAT-l3G zFf6@AoM$q_nzv|+Op|votb4onmIH*JVZ-*843TMKBO`PxsvIlE#r{nY{O>&cJ0Ip@ zoJyT3=7=QSL zn-Sh74v8aRxlbHNw)-0JCmt4$B79stC7wmR56|=BS(Rg-YUViciuk*D8>QYCAB%q? z{7QU_^nI$~-+}%!;P=IL@w*gKmmcZIzbd~>RGGJnu`*daEW=_S1eJ#DwE~5p`VHvs zSP4y&7;n%YR=q_v4GppbMhE{uh139bQh1Rpk-cOhIDd@0+=Iq;aV{AjgxV1cm6Wq$e43y3k5tpZh%yP zQSoCl1^jWrmEL5&8Q!AhS8rc;J`q3NY4`i(BHwvoQ49MyOT1u-7cKFUkG2b}o>IKR z!K)m+#=+lw2wwL=Xm42JA53|ZgSUL-7jJX$4rh3mgZDUipMwv4;zRKfLmzYS2?w8Y z@J|jt@PU{l7p`}_?m-nIQW)>lN@}A8X;RT z(%MHGnQ0p^wSng`u`L=e+xe-JY|lYHIwT9wKiL7@m4$v9EIV>SC$6BgPg=5z7f@GA z7BN!H#k*OuJNKi6gC1PCCl~I;yn1s`3gO5;TwP!8Q$Ii1{pA^qmvQ-WKMj-px$ppZ zQF0&$gZ$KA4(7I_@CZ4CISl3COb&+mg1mO!gu;pMxnZtx8K)S#qlL*pgAgbebCSt#sfs+@`MI{_$f#8>Xh+(w`%3H{VTe>` z$@-=3CX0Ci(OjeiL|+buBcNNTE+96Djh37ikkjQ1K^acV)y-(1<6?;==Lh5hxiBEB<)VPRP%aM0C1PVhE|nK?<1P+} z43X))w;|o{7lD9CroEA#?A~GsZ$K`SmjpzR>frpT{*`S^N>8FXOV$MBa(QV$ghZI3 z6#>x#;+nfLGi$kA84zhA-I8`d){1$ST!mP!4v2oV%eiS|OKpu@>pZ5QD{#0Q`=+-3tpu>k+7TeLxHo zXIXMXK#branM8X7a--Z7kej)~Te!np1?0R9C`>JyvR&>7$em2vB^_?rtU0eQDPYRO{( zd5=6E=q2w(DDUIoe)&K^KFDPr;tC#?Cj#P3h8~fRLdCdKkIBaa@(D3d;A<7JIc4{Y z?S(%xAfJ>^1?1BlJj40_BF+lPXXSoDX&BO!Bcr#ZYDb>fK3q5lzsqxuY){_3!xXvB z+?{4a zVB6sp?Vu&_BzDp+zz$}cq|1R{5r7z>Pwv7D+H%ZG}wc&HfbhKjK&Ax>x8 zs$v*b73Zji*lPNTTx4k3*bvbQcV~0vQY={ zRvraLH4>EQ&W^*+LHg)8d<^iharn8w$Hn2}flr9*X$A1}8q-yM6JvM_9BQG*SnSa< z9Kx_)1&4l$(`nB|b|q*tKBEHH=20ua#mX zO&6m?70MN$1knuaPp2VfXgYe2DFtW-YQu34pqXfh2EOp?xK_|6;FN$%2JRl2@f6{C77w3RzKRFuNg@ex8JOQNu#L*YFXs-wRuAY4a}E1*Rk-LHVuIy$U?v^u&~0qJ$L zPXQTqw7cM*8I)W{I}{mR8vnmr$fNed`JR8z9J5QkQasin9WYQ2m)iyA5x z%c)FUN`oP` z3TG&z#pO5!xk5}7yP*$PK@0ZSP{(VaN7so(ydl9Rrbg@+E5wapdlOjR0ycGEaVv`5 zh9Y+$S3PnZ0`*Q%4kJ8*e@Df=;+S{TrzOJ2Ut8Ny*wHvl)?S__BfT>C#e5X z8qi2k_&~;Si4GYQKB&O`99Q9kkJ1ou9C94m)s%cD$Y(0D`XpE79(I(@0{JXOF6ZVB zFR;LP z{!aHejU6A-gDEWDtY8YVMicSHZY0s;CVH5Uew2*6NZN7|Hac^t8@8{tat(EJ&7ZhU znTfB+BfiFY>^C@RK1pffdul6wpbp|ksKw88hWIxP62H<2@f)VaAF%ojG*b#%ASErq zN%AUb&^Bq(HPWJeIF-Ev2SJBrfF6?x^b+3Rydi^RzbljIOPNe3WeWW+Lqd}+M2bum ztz^0=kQt(j%o2TNwiqUJ#CVx2CdpP}mTWB+$UI@owqmPnFRs7=-!-y89FQGEz3eFN zm7Q=<*hRc3yNY*Yk@!Rwi!bqJ=m%LMew96>CVNVsIsh!SWtQxNQ^LML`{7?1&O`dk z@p1s-Dd)&DdL2{`!R9>Wwk{4^^ zWsNpTF4wB$rP^G%Lc36|)Gn5_+B&&PyIii;u9a)F8{}H;F1b#-S6-$)EH`P7%gt(i zSxX6W9+uFh;v$?lt&2iDOQZ7}kUPJbrslUz9_>Mxy1kg-Y1$nyczdxFwbl0Goxm=v zz{T1wSf%Bd?yIzcFoC=9USgZp1BP%HbmIr{63pRV@=6VshFy3p%X}mdSsAa1tl7I01q^W13+nktG zP;obP(KD9G)y_%>=IE3KUDi`j9#nOO-2$cE?p=OFgKQnq{^?^#};Lir*U$(Ql{$SX8Z zzKWB~H|T8n4;m-mqDk^?nkL_&+45bgmhaKU@_kw%KcKbpL)t7qB1e8qd*mmyUw%rr z%74;b@(X%genZd6Z($-%(!26In?9D`(--mw`d0+Q}DoM|TyuPQi#5PFPgWmy}f;Dv@za$oeqS6NxnHYfF zg|C%pt#oIo2DjFyrihN$)t`wSU}Mk3x>}~));hOyNH6Mbq!~|ALYi?eO%yn$!I%Yk`2;@BnRHvWjmd$fPt6CfO2F`e zZ80XtB$b`1AoNHxkaCPBGkloN#}XDSFT?^|Sz;AxA?r9*jYm?iG($fIuL%%Su_70S zEUVHvM$=0?06_?0$*3CNK{G;DrD0cwuyP!u8Fkz=uB&lQTtrzgFe&)Kq7Wr(EhrVg zij%FS!GfeyCoO}z;e~E5EsF+e*>skcOJlW`G)-$ov$Z_BP-{yYw0yckE5NMW=0vRz90KjQ_Z z0|>sZ$chbYR%~FiA_Lo&eu@~pUi6U~Vx7j)Gw{!@z_?yWw@1cR@_8|jW(W-5fCXg6 z0#b|2y1*S>t#&1ba(o8f@r0Tu3kYwBwJ{LKScqdBg|+dNp;bT>=Rp*csIN8|zqWHe z4c97Zv{pqEw5c>%n+9=Ar-j-KTCUB6p}hcC(`V5hZ8q-S&!NNGTsp4Jqi3}F^t!fy zKGmw}q_zkzOD|MX80|J}T&&9?)@2dta+tmld_1V3d7lVA7}VkRJ}$0?xD332yh+&^ zlQz>uf{zJVm2qOuop;`;ALK!Pxu zS<9T-rWSNGVgIYG!Y@Isre@k2O3~I*rnZh+YL`(vZ9R3=HbAR4QXl+W%ph$CG-fA_ z*LFcf4$aUm$5-lC(6UL|mH19%^Drw`>d?QqZxnSbhVnqJ8CN*z!){Sgz_FEMd-{val=M30pY z^07W+`F3iLhM+!>jhZJL?`mU1SCGPLk_Iz$L8C1>k8kv7Z$UI~Lp1L|H19$*?@=4= zeahE9pw8Ndm_#2@Z|xK6uYF2GwSVHni_c(FK8J>UOEa~TG*A1EmTBM9O6>8PNSXbNq9-Z91|tK@^sEfMa%Z2qhN=%6dz{W{tNlWT_8Y9q?=TmC zP!8aBT7zn_>tVEyG}ywXbU#EbP(9vVxz*!MlBSe@Nt|UmGSybr8#cSKvcZ&uy9Egp z(3|0;BZ*S=WXjf?QyV>n3iJ?l(!*4&x1e5n8uigLXt171XX{xs5%3H>hvw@oX|dia zZoVyvNpeX{l1p4kcB4)(%>2ec!!+wDZo)Lv=?v;FZjMYiym*WBz=sq*>DlD8yt{*K zjxEf}!aVAyMS&P4+Qa;43J3vqf#L}X`YD8fOX#3wH4#TYzMG|YBUA4Vk(59rJs^^v zHl^#msI}gkI_jlVqW7UQ^nQ@T8C0d0(S>?BtRZKleOsdq#gR_*=ww24=s|OroVKDU>S%}@ zaVzG6j?+;e_SRT(@C%A#l;dLJ#5q$rF1+gECA6y|cwu3|MWn75GRj9XY&5b$dZkK;GaWelwJ}+)gT$|g z#P?I0egoy`H^Xk+0$Wi>1N2*Ilztmc({HB*`dw6`A67!@=5`?}Bw8L75+GMdm|sc^ z8ZOx~{nJg<58W~N1)=-6(@6FXJfe{b0CfEC9*Y6|Hk z7EYm{RnZJ3o=B2=KvIk&D%auV0~GdjOZZTwShHBQhbtJL2S@am&vJ@2F2XtQrG;wJ z^aAxP_}Q*c?J;a-2~V0mg=(C7dDU?F-QgPUaxMt!0Rze4BhuhLZgHJYRU4aV(tx0gQt`d6Yz|626Y?QhiRSF4fh9UXnqJ39J+ z+|h4`OCavyLr)>q#L%gXeo-1>(0KY#)MK)kG?o4?4g#{^pFb@Q0rJrMIETFxFH~@O z7%v~##`56B3YSB7|+ET#cXM?WekTU z#cJe1#$x`tnUFrq;W3jXrdDFjoN6Wk2*%Y5RZyv4SB3t%1Q^zkI_5iDC7EZa*5BWZ5*=yAHlh4w4OXO$k}8tS1q zP6Zo$xL6p3z^0cZ096w~{pQVSCqZL@Py)|^W=wD%c(5SpjJU3Z{Ku%q`RTzdd%^fR zYK1(f$j`!WF-)K36v821Iv!`9B^D0EnH6dd`FVo61H!o~m7tU8QLG+nt>G3&@&@x5 z2v+f`SBH~eMlhtY@^&MGVEL)#`KNXoi@Ok3JpRP=I4xIGyO}$+QG-fWbNbS&sl_Ro zSD^CJQ)pn2!pC4J8)LeHH3bB&V5M@TBNg-keGm){9~(2wdCJ`Q7}cs${98QSv6!N* zD)B~g55jn!zN8%~x{7&0Y*7iu_s5kfi!J1ZdG)}ZE%DU-R*xc0RWW4kQQBIp6~?hr zKjd?qVlG4zO`XgK6~R`lrk=uJF6NW98dJbFK_|xm?J{IXj?%E-B=z3}TUpx2iahn~EE_27X-_zqpKxi)n_B za*PCOXEdYEMj~~`SKz&kWEyNVr{P8ljWt4ao{>sZj5L~Sq|;)fC9O7E(JrGk*?WvO zbcc~ghm7`g*vO{`j6!vF6}r()_>3MR)95MM8>OOy(MNPO`ikDh z8DfahUraCth-t<^vD_FUHXCP(YmH&zW@EUx%NQXZH%5uS8E1jNz zT$yX&-m5XemLW3^UgtkV`6muX9l&Dttsi?-X?uI)2+ zX@`ufwEK;#wU>-*v=5DIwSO7cX}=rxK3x3I*Zs!LdZtmQw={0mI~jNArN$wBuyLn; zo^h9cfpNFK*f^?hHIC`m8u#i4jQjLwjr;YtjT8Dw<59JwoWMKh$LT_G80J1f`~>HL zmw;yYVx$A!gr(rbw1aR2Ul8((<+%37M?(RTDIHrJ1<^-eY9Yag++I4WjZ@nx_~H6@ z(KQNCt_3_66Jz;W<1>9AfV?geDQ8@)V9d6B~1Lf5^)F@}ZHVO#}=lAmUc8ueHjj%;T?R#3|RNTb8T^ON7L z#d$UV+2L`Xe=Hpy5e|f-`FWPRZVzUG;^d3CJ;SwPOC2hcU+IjRxT52`EQIGU8YlbsK#Q3>eHQKeWd}z6DU;f6P%^h z8tnC&J=kc60(iAohkZDVACh^AO$a5(eSF+tBa`y3Lin+$Pyox0R+3N{;*~7sa3!#K z8i}sMn&F8eV~E_!~^a>o5)ffN6LWrr|A^hIgo^@h+7a@6k}> z1G2{&A5x|9G0ikSq4~x?X^HU}Y{TcY$@l{H;Y+&O_=>JGzNVXvZ>Zk*mhLuA(sAQE zI$?ZIPa8kb3&xN1zVQ=%X8c0m8^6-Ojo*aV_+5mIKSUR!L3B4sl$uhUV`^fusf)#? zA(ok@Sc#9QE;oI)xW)8~LuNB^znLf=F@xeMGfBK^rij5WbkK#^$zDC)|65Od{Tinww^#UpAW7_?xQxH#g=U5DG0 zt}j-VKgI?=%pw7`C_M*d!27zNOy{#${D&=LzZIfhSxr%JU9iEcs$r6@X0qP^3nG? zC<2xsEE6S6i+4&iR`Sc7Jx^tYd6U71tU=~pqvzSWFZd7h|r(tFZjWK&rh1r{Cn58t=>_;2S{N+Xbdx!R zj+sO0LGw&{+#E(Pn`hDM=5YFlc{aUoo8!&NB=g*3&WfsJmw^kXigTe z1;S1>t3<9jRkSmwi4t=b%-$<^DCWvj8#m{@|>@q zNrb9J-@dV`*-)#~Dw^TJ$q1i?bb!L)-3k~L^NY9jP$Hasur6`BOXgD$*k1E>vp` z1!Dd2pjjKKtGS7Kn4780#1AZ+TWOSS?x2b0PO365r^V(KRAXL6E6l5D z9gZ!oG_RrS%xmcm^E$fQyq+E~_tRtM4N$L}=`HgX`ocUw-UOA9y=ZA3 z6z$DJN<-Y2dG5&b30i(^X!B!3J2gLIlfu|ux?@|07k50OI@Qo2!Aixi@a|9=V&eZH zaFf6ZI+Uj+-fFuqktARCkF3%+VwJ{q7s*>ScjR|H*Vf(;yoApd;Oz2g97c5$wkOm) zr0e?#%ZMUvMh^V&+djfu*bVsQH>^T+;vjp-Q?wG#VcKF9Vvnc>+QZ|^q+sAQwCq38 z>@C3%h>_bJh`D%l;81DvePXa%N08e+ntu(BD{^5K;uqnL)1^#lyi~$lrqRJJZZ1w= zel-O`{9|#eRr9uTiU#$z5k)q&aT+-q9yPymTneuo_6aJ@em2hayzU`O)p!P3(|I|D zQm_%^C+4lA7$1co3tKrqzz|MO)PYFIU+HkkI!Z1K**+Y7#?DDxQTkj_`dE~{h$#O= zgDC$*gCz08a%vn9b7_nhgxU0%S#U- zL;C`CGhd`$=1Vl#e3^!uuh2O2HJWVxjVjI8X}0+WEim7tMdsU>74Ohm^Ih6$zDHM? z@6*lZ2bdWj(tYMf^r-m@J!Ae#e=&cjmn_`*vjlx?N&3msgkkBzPO}Wr%JPYBR)Q$C znu!rsqL^R>#dIr4%(qhTsY*!HT4CW>EyT4}s;INl#BEl(IBaEzd#zmYgw;|!XSKrD zWv#_~RvYn^l_!3{|C2;o?WE5tlL=P2OtA*4X@|=tvO;4{d_2c-B6C$j1%?}X!k_a|Z_v?pSZ?|Pv<-Zn*SvGc(T9qdz76Ioqjskz5F zYJ<8)t+gT7Lu{N0S0nSOGhs3ASe5Xt33bJyFqp@-94|*PJ>nN^oGxIajNPuXZW1&# z^S1JOq$Qt$-4*6nWMv(Zj+qyR{x4A8iz4tW9EywOP!twupt+HnGau zE;d*@l``@h@4wIl@hoI+h%pgA0Egwce;GZF-{@)^?xlk0dZ=MsV02f5ZsJ^bH4v*J z_TE7JT=bQmSci22f1=7+@aiSnoM3{p|J8v`r`J4UzSHBiE4#1dcM(EVB1~3U7gASz zQBXs_;T}OAQvQk*DV}fg^A1PO{oA}0^*;;Rvhu8)HqhKQrW35_=q&ikxBF1JFpmVj z=wzyoNBf?<+fcv{KQ8t&aL*hmE^MWsciV{D!(RTfRQ>O+b~~k_Zw{l=zg|~~s|v&q z1~KmMU%S646(zZxiT?*!t&qe|L0lI6Pa&ielsV2unUHw)Swi}F_F{oWq20B8L7BiCjX12 zxO_w_cJJ>iy1T89{a=<&t+R)vS{K3v5tXyaPiZt^cg`6qCw^HYL*;Dp+Zj!A?jNWm z^2XrA!c!zNvdOPtG%0lRFvT7}ijmI4wY&5T$nLSxyC<9>S}VdzCUhR_JU_0*p9K8~ zr!5_)J`&!&w}bE%b(%J>YVqPzt6%i&$!YkSl=wNLN%ae6xP|AHi8iWxO+P=5&ucA= zevI7gPyJiAr2on=?rQK;8efQh`m0;2^Bc`}4=WeRs!vnO(e9Zaa7vfmca)2es`~dw z3;sG4vyva|mgD~3{U>J~q{`;^N7*aCR$O=e;@!Qhe}w5)P6+&>5_Z4RU!Ay6R%zwXeOb$nP`fzW4Hi?0&z$-ygpu_nw(Kea@VjIp>~xbJY*} z+Z&Czu_H7+gCU4nKE3^m{p)KhnR3zt6Eci^T|A8A+r`cqz; zPS@OW-Jwozp0a08J^nq7cz)b7SG-ks`;k`T?w`7U&s}oY`se2F8u`hfl%MuJw*065 z?_P4-uu-oz-BNQhbXTkN2R@m*u&VpiqmL!6`uOotU;j`Ue`w}sFZDW4%g{fzzdJPI zr8OD5ii%o&UbT7rdou5)W5?1q^?(22$wOy;n|t4lTL;vC)%T0SR!`pf^N0~&Ru8;v z$jX#|S3g%e?5U%@zfR5me)IQTQdYma%-rUJbCzs?JM5; z!>>~(Uy}S|$%lK+x#)pEzSFPl-`BrT`|Z|T2~avN16MMx6qCFQOo|(6l5ZBmS4@h(-=u{3xLz>HUuja}UrkEtZ&Gp}lUfZm zDfMfU(z}|}`eTzaI+~Q#Ewopk?8!Z7Qai6no=H25EZOdfP>zw_zvxGk+Ge7xbG3Dv zW^RZlZJkG$WZr~?vkWi-@rBwtw+^}=v;>oK{o010KwMI&$_SQth9KI+WoR3`IxeA+ zM?4nI!&>Fbh`>uC{35OJYMJnd@8$z}w@>#nlm40j?rk#kf+; zR@C7;06|<`Op@g$^+?9mGqlJ|SCTQL`r!*h+syN|3<`ukGbhFKh`W{_owuhq(VpI+ zmt?!#QL|UfTRN-D%<3Ae_ipK`uk*MXsE2DG!Y1k={Ha@L;L+=>_R>4JtX3;e&CJ?L zqeD-+D@8>p$McXF7&_@G6oW%PZ)Wxwttk7jT->9HvYUi<*xX8G)!AuTKo1*Rsb6TQ zw~Mc=I#c1=RvH{y@9pX2#;ov>DGi$v3^T#45ZYDlZ63q!a2((N(n zdS20;R&`vqzhD8X*AaQARmJE+pcc^Vi$x)&o~{$QR6w(-h?Y=Kx|I6TJycFt(K%E{ zgJ=g0p&Mx^-9c4!3oQ^Sv{1CBMf3nIroSM^hqRQwqZ;9(i|AKcMxWDidYo3+^fp~g z&(S49PfbhTLeme@Qwpd$NDnEX?Lj)GfOZGzkOFcK(g6kJ9i&|fXn&BlgRxT&(q@Hs zI7sUh(6MHv3iE4fR9H|mPlcUos#I8L*PN$-&NX9I*rjHu3cJ>ntFT*5sS3N-bW>qb zO~=H=%)pwQaF`kn{o&B%gte~TTDq0Dm5Ph9!R(&k?Oe|1%Gc9_dZjM%@{LOEbP11S zM>7?)pb?gU1SAWX^;E**;8Tc-uBTp1k)VVgiBAcwjnB$eBEuQNA`-Ox{w?GPNI263 zB+iLR=uxs1bcGXowA`44zbjQ|!D}v6k4>CY(OkX9Nf<4)IU)C~B45uA8Uu?^(^e|Y zcUS7t0YmpEOF^))wls$(QQ)Z>PSS;!?G%;!_ia4-;>|ri2<_M=xX7csC^= zBt`XysRXJ&)x-omXH#OTzYTyvo03xf@c@QwO5RFCoBUg8n3{3cl_{zI1eAcd5!Vup z+!RQ)TM~ktfa;55o^24R#Ua+Hvx~_N;ArsHqM^{qTlpe zO$o>eVjBS4G#aU=>Q`E|MtM_QX71d0+_SQoExl@Tn6gb!Uy;3#=?a!vtU!=pOz6VI zPWDU|R_M?%>1H0(&hA78jl81l8CJI6zX%ktVN7_E~_-$)M{ zsuc8bOr;?z_0vqrH={7il~rlTO8vJ=!>rUpuB29D$E0Ql%^)OeHpY5vM|V&+BE=#* zXK`U7lpSBvHVP0Svg2Ht5=>)7a3`q@X>f)>6~9p3c_Av(9?-n|nCJ z71W!%-V_(qb2}OVV~#gqFf%pg7&FB|Wxg3SFQzL=kdNFBO(Y7Nn9XPyl5wxppv~c| zOlwMXsP#0rDRDK;gCzSa(v5nWpKqmWLFn@ZWlc!|L$9ZWO-W2KD$;|NRZ&li@?C(8 z3g*RvvNX*IS`~~TYH>}t_*%2)XjWOVeaDz$h%v)wz-oYXP2TL>IpLl}hS%W14H^+G z7&M~88+ti8Wzm?_bU!*9qW~3Nk(X};4LxX9=oM%T_nRfcNvvowIZ&U&N%V#up83vig<~RgJ?MF)qGN`_4vIIb4z&g#k2$l zyeK;=w4wWh9c(o*Fd=I7A`IMF@@Pfr*_E2mN>$*uoG^^)4(3!|5=LNwAv2K}JqGbO zh?cKMtbt7n4IM57R}s`p)3j`Ei>v3E-Dy_2|D!%CUmA5yj5}Rb^CMN!!t=7Bu2L!> zCdzebYF$tEMNO?)8|u(H^|Y+4DZ!uP&%po=R;I+C0=mB()N(c?DrE&@Y`V&rTV8Ou z$yZOy%U070IKC@(M2g!=7nd~!B9^Bq$VDq7w3;qK!b?;_8x?ceNSda~&0)2i)YJ+{ zRm5buP>5r}(W=BI2+`c83{5L-R)|d*kd*oPCiEXH6f|Ono^CMM56ZDA4Uvv=G+8;C zj&ig(g$+TEXh)N^BgZYSwTjLdfID5RkkM%2DYgG&J!c(f$J=B(XTYlndt#2C0n^D8C|K67$}3g&&~eS064+~FOVF>3 z4I&bNsTS(b0HFJG6syufbJA5{7$zoxcWi2ycP<0@VNO_QT$=9=x|ttp@H0>hMypLz zhQEzdj+XC94|S3r&ylvR4*8#1Q44=ha!dX$v+Yx3GHOiweH&)WM~tLuT3tLdGM z4iAoKKDJwED1>DKu7xf~GFkSN|6?eD^tWNb0?e|Gi45^dr1!ZPFdAmu6^Sw=}%nAs)lH$ZBtkGiZHW#`d zf*NX-ku_*FWBb6nq^49yK+#HnPP)G{o9?(K3p7rn;Wi zBc;QeFw-~WyOE+5*mTyE>r~g22*)&#`vqNA8g#?)a=}vMyAGb3++u`+SSZ`boDR-7 z*|kLBan#?LgO~1a%R0uD?#~Ijg4UGqbPtamN@$B|r6SerUX<^45KKEba_prws|GFt zWF$=Y+hN#mLe3Up>NH0NJ&wkRP=cNcl?n=~?EhMERO&flO~Et7S&J<61r0mVK0P7d zV2_XuH}nM<0yD=p0m^{c^1oFyP(N_Vm39eNdBnht*GpmS?dCXa`xa(t-a@ z*3(^Js=;d6gzj+%U95Y&L2p#|L=~3j%xMzN8r4{_xg1^Ssn7@J=@Seag5gW|w`uZi z5E_g@S+zSg=({qdrfn0GdB(>D<78y_q{$bI^A8Hbp!@u*>a(;Sy=}4<@6R-6&l6S zD7t7hU9MpW5$s@obC~aP!7%W0pecckz!eqwu1ZT+`od;qr!j9gVtMGs*2|qrxnrS? z-3<$Q*p8T$mSk5!8Gwy7i~ff+O7E2Mh8QA5T5is`x2@y-EPtom17ccJST z5X|%5XUy}^+if!JEB&k3&R55?uZ6Z=m2cG~26cU*FHG2sXv@E9A$07Oi3{p5k_W|w zPZ5kt5- zGPbs?+5b!fv0EhBnkrAw1vNB|^PGrd-cn2>lEwURB+D+-*lAHVtBj{m00SIl z^8u=B$>$j;yChO}x<603kIDpaUL}OElmEr*_jiCHjdA&HROgJZvXnJ`9#ed7e@dkK_5&sV=Q|U)$AL=j8=ZWg~^E6nFO=(B@T}T&VdFRX4xnsO~ z&o&lzY0BnZk$T$Nl+)D4aNuod?MNsyX9o_o0)oIS&ej)R%*n8)i`iXI+iK%>Rm*ttuJkgip7X2Xu4h(|c1jn$#TPU@vt z%LXxTuHUh^AMQb2`QLu;!Zas&q!7-!l^SZ2V+ilEX1xwu=QR&IiPN(kFRa!a2ST)e zs`abshM?ZwiHF8U4|hW0aR>1f1?b`p`tLL`TmqWId7MTocn=(#>IA0%Chw~05-Ba5Gaqc@Hmlg6SrzY~ z{qy{FlN@RI&t=$=>i_3L>H=^f9bRDHncE#1jP&eOXbom_MEIp&N4KZgbR#Cg?pkwQ zmcM+7ku?)@gx3nZtb1e$?Cs2?@a%@=3A(Zt2UpYXkgsEFdpE39Nol1^)O@9)g2v)j zi1U|YvSuj1G*89;V>R7~g%a+F#r6hVOqGnSPfVFXS8675=J}^hQQ1DpQoGCLi@{i~ zYMN73v@i?{N}Cu^nqyg+KgD@eH<0^h(@nL;x-2lfMUT)y?$Gc0b5peLl5pLt=_byd zHPBzen=|MRC?GfvI$$l)W(+-H@>aSzrYp_GMY_^l+%zsu<)=ru>73JF9%;Jn#{)t>#K{Xw&Rz8fh+ z?-jP{$W%FH!X$sf7#%CMO7nE3b()L$|CjigPOWY3F0V-Ym7%ji&p>cNQ7X_~hZ+95 zQbg(D7`-_HRP>SM>=yj(Fb4WvS%dwqF^P0~!qn0*RaaDpr13Hj?1R17AM|oxz5T&6 zuc-MfhG*eax6-#7wtc+V_A=Go`v1$E|En>Y-Z?vn-n5VQ9tKd&<^!Q?JGYD57fi-p zVK8|x+}+a9Tct)7E* z0yN9*TKi0_RRQSz+h-0$vA1ggDthC<1QXlqi&>$lgn2AYMcIjTYH?CpmX$qqE8UR_ zFX+%gx{j#}`zlOjGi=V6mZg=ZW$6`sH!7S`^ol%SW*EyWgVH@zquZ>KG~xwWidKq%cOynK%8N4wtO&su0sIjlz)KR9I4eSG z8zp6Oaa&;WYKxFf=%6+(@ot6!QFLt?&J&%Lt0}HOfE{N{mE`(s-G-deGv6Pd1@#%>wK z%&|)S$t#U>mq5*l5!wta@PL8W9@;{ zEy|AYHkF&eS9_gxlf%-}qoOR$hvSA81@)z7P>+Zkc4Vu0{-?4#7m+vPEb?~nw0_np ze5oq*OxD7Hs?M@Ag;G)Nf1_Yo?IemR2E9SYS_m`G!Dg1Ce|g42=6jUO5l%D<_~{Fx z-4D;Tvq_ZwznW_hsnb08(dxKY|9MbO;qubEY6CTW33g|o#O*wJm@ z+tZ8BKk`)=8fWE%>IWoR$vFI)M!wL20Yl^C=Fgg5G^AqT>{T2b{bazSdLkc#%zxv7 zu|FXfUrx@q1|@3Wi+!Q5233d!q3(m*#mBo6k^^qP^ts|J=?PU1?hxnAK37jOEX!*e z@rj`ggTM9$hqEvGIRzH?IblZ>-ajkNaeQuxb_28#f=%*od{v40X zYniS&|tHM32kgKF;U!CdQfmV3OP8I=Xpiu2e03ct?WB#F<~dI;lRM z9G+mi(%smEQ9piKM~UJ%A2KBpZc3GTG>Kv9rlm5UaM+VbbJOjhPh(hj3m54988+Nv zDCm6|Hr-;QoJLs;TW;|Oal(OJZt*122bu16i@%H4=v-BS$1QsTadU*%Ez9M2N?_RM zmgA&BxeUj-<)yNmau|+x%bl_tPCw!&!7X2sg`s;!v~$hDd18+y=7dg;NVgBtK#mqd z+beFx!ASf_p?xeTV^Hy<2|Y{9bK0v5eHzlJ_8LOJOtx~WH-)}cW{}0{Eumj8+wz%d zE(b@M(UR8d>2x}9F^2=`1iBO0rW3lv96s$#Vg(<57Ge>fgO*|uAALqs`Sde#@G)mY zT+ipAO|g=XLR;c8J`L>>b$npjEowXnJYu64fmdwwA@GTfaR}nX=6D40Vsiq51hLJJ zz;BB=i3k(L4n9hqBSR%uf*?g~-0MP^m=`-c#o!X$H}dq0_rwe->N1T@CO=6c;0~P@G zB#3XFK?6KQ`YFyy;s)XcHp>?fG-cjuK@ms1IOPF zc(ViB3Fo3kIS!IA9}zRd@C$&ia$tWYD!a^q6aNbOYzI#25BL`cPVOUi>8i)4Wvih` z-{{a&zXq(t{j^N)iu6A^^o)+6KR`CH)3Wu)K!!RIS>2H63x+j8y&zF!veF%6PvfOs2uI|oR zF9(TL9AUWIoI;{j4C{g_kc~7hI7{r{AP1tlu5GZn{I;1WUyYG;w=EQ3(CexgK_ejZ zPS&=Zr=8xMr=1shph3`o>28;VOt*6;Q*e8Dw>J$3=2fPLVlq7;-l1WfPP%jb;wQSA zVN1|-eoH~;JSlRRKoFF}pp7V34uc}1_HvkxpragSASe)XOaw)By5&aw#dSKZ%iY&p zOYT9y?ZdUa1ZB{cVa?s)J2~2;#LOjVJ}9UY170ZR;FL6Vacb-)cF?+_e>Im@^dn#l z6^7Z&0RcM_K=4d*4@2yIa7EUHr%C&vWK{eVLE~; z=ZJaH-vxqy7vZ-C`eUAoT`4XTb>ecdQT=Wfo5eQJcc^^VBW5Ec4!^b&oc(_KwAh2< zE*Ja7t$+`TJ8(aY-=pHVI3e!G{Sonmcm{@!6r}<8w{Vyl&b( z6`_XlJ^3w{qc4u1FBDKVaiCPdy2(GpE1-7v^=|b(#L4HsOnKFoPgZVauZ|8cD zeyEoQ%3)sWDu?rJ1b2HRb72%SWwe*hm18(!EH`5u_inr!&;(0PWMmRoGTD+-xVQFs ze8*nlukw7(J(UZa#X|F%FI}Rt z>&xfY&PGNKmR`I^)lS2>KF54$EM7mF;@olNR$|pCA8lSA^QkDV| zM*zt!;xbEa^~r7WYM;0QP9L;3ZU^|*#J7WdyOVEs@$DYIo#5O3e0zv*5A*GDzP-S= zm-+UZ=#Be34E~jGC&flfUgMM7t+Te!<7@7l#{1+!d7Dp6 z5aUBzHn#On6q9^nGB+98~@=2D9 zr}*|XM?52+^~pcW=Ro6%I&oW`M_WW8Loc98@tAzkCtuq@!EwM+(cDwRFh*CDoym^V)^%ZLO0MXD(e_bMcDVLl;-i zoG`DtXZNB|m#zInSIzAhx_RsSq21fAPxQ^5y=3;X>J_scwUXVD^@0L%^G2GTaILa171`LX)6z>2xH9eiZmUG59gy$7Aq&fuD%M?fXFZ zV+`Sb;19&$4+4KE27eg%BQf}+!2cA3KL-5q82ky~PsZR+0e`v~x9J%Wo^2-3pMgIY zgFg@ag&6!r;4j7CF9Uxi27eX!Ut;jrfWIDt{}uQfQQVgFCJ29v5+uC^{OuV09pHbD z!A}BzHwJ$X`1>*V2f#m!8Oo1MPCv&a_yzdCWAI;rpNheM1Ae+07yKHs zh`}XrEe6+t8!6nsMO=o*08C z0Z)#>Q-B8)Zma1hI6<(vLOO&-!I-JW!5XU&rdfrsVk(6BQX%Y}3Ss9}2uq+sSTq&F zo~aO4OogzR2-8_D^MW{?wXz~~j%i^R(7QG_NOS|n{ifHqGvO% z@|VQm%z<9O?XbcTr6BZSdyR0tXs`W}*~0h}hP=DD=Q}m)OfdE8^V>a8#$S z$SpD`9&(l}Mo~ND%ok&+NQ|R0@M$#so+|KV7TnY2$X9?IM6myu)aPj8h z5X2+E%libqMpT8+jc@_ND-bS3xDDYVgl!QnM%a%P%Mt)%Kv;^f8et8>%MgN#5HBKd zO`L}i%z`c=T7eLi;e~&KD#6MO;qrn`h4)gRkzQ9ou#uiuK&wW2Tmh+#biV@98tI4v z(i`bE0QS9<(MWrl#f`L6#k6juYZQ>#NShRp)ktd=iSyF*X;gu?6B*8yj?g5X-S3TP1G82HhQE zy*Pv=+np%>Fp9n##T`LW_aOT*WWARkiXi155qm#k9t8Ffphv``_O(;6mz+n)sk10j;Naol`4 zpa+cO)ahua8?P1q!V-5tH>yGxdxFM|aN0J$z+c626S$2NGmU-p zXo15dpkbzE8nZ&&m5GUUv=-N1x(P`@n7|(yI6;#_)i($134VND0LYYp?sqY-@jfl* z1LLL~qw@;zodLy{$}_rnex#ryG!>s3P#79LZAuKCzcv807$qn==PB0iqYE@D(2tP; zd9md*Iae;Ap7LT@CpSQyDLpLyr1Z?c$t8Zp^NLdx6sIXo3T(LhjQAx#<}EgFms z`%%(E6Qqx-WE{QOT=}um$*@uii5JZXp&{(KG|11Ec=U>5eQEz^27=omKi?)9Yw;BqextOCRFHcu#suHPizLHQ+w^SsE2YfsE78A*dn&# z3E?{J78tJGc;dB9YYnCbl(_uG6ojd_fWTtqNgYc zqS-B@btX^Y360c2p+)!6h1f#b8;%7!T~O;itgn#Hs5y(Z^wk2%AOa;B^FfPL*4a^m2!P( zZ3t@b439%TMt=FYsw?PZh}M-TcB;B0?-z!PosKl@W`%y(7ns404?aqT#y^b_dIsb5 zY)qpQq6H<0-C-XtLEMCva=Q}5%_v+03$T6Y6fRexXb-IAU~ni-D>_b9p#gUVLhJXZ zx9wPhFE6m}XD-fV3med_{mjt>z=)_0J+!|>6o$UvKUAOb2%Q_MIFJl<(t*z2VQKEd zfDv%rM>9iP542Hc`8ah(vriJXlqgBQ559juS@J_X1^R%qPei`ey!4CaqtjZPFtvCQrzMCK%`eimWRa}}L?`p*4!HC!jSzdmOBbDlbnU~+16~oQcsEo182> zLp3H@&r)l&F9&_IY30y-@D}gd8L`RfBSr{B_>xKu%!c5^RGGhlP!-|;X>bruW z!dv5Vx&`#2K1Q1HB*mo}_ra~lb{0m-&vqL4^ibukSvF<|Y^<6PZWVz6L$R#zXRG8) z1)(&}K+JKP!|)NB3tQ>0D1@b-Ut$$%0qX=UV7t*L&Crj-aRbCunEt|mWmSca)8Y~r zKoA13RSTwc(u{yrW!O~#n5^Tpq>-D(bu~|lOR$xa5vb3&HA>F8p z)*WpuqTX5$8mtx52(5%BYQ1QtR!Z}=GFqnfr7N`obe&dCH);dv4s8$w;9Po88%i%} z!{`ldB)zYVBKs$8G(Mv?K_qJvMNpd}T5FYRV5fn@FToAG1tVf%UnC0$KzNA3_2|H6 zMh7-CJh1KQN8xC^-t?gwV!Uoo&%m2&#JDb_JHq2Cd260WGk^l$gbL(>1-KTTYwpJG zR>u-Uc~}*VPpEmagfhU6`C!KauwxMgwZ)X7Ed?uTz=~zmPg_nyv=uZ`yM)GTm(qFK zN|@UI}Mv0?Q+ChL~Fxc4$^1hHl;r@=wop^Af5WrhbNcLx^Qj z#={BjeCVx%gWc$6!0BlIZP|8=E2$T{0>*Z@lDjCrAoE^YijT6eEGi|MxiVDOQiYDE z6tJfOpV7O4;MEqBU9*ZP4zb?b_Xn2mRFH{?So@Rb#my5+w)p>*lz~R-*q@mFJyX^j;UiErv$|Ssb{YIofTP2*TXe7XHa)DpLr-Xbr&qL-5Se%B9qoPkLi>tKZQkR8to5@%w}34c&nR51`n_l4_h4?ZWZuKd$$(y zKOTVifH!KMY&?`}Lsk&OVv+_mRMV_W&L^BI)4l;~z6EQ(18cqqYkr_y?MKSjexk10 z&zMBNP#^7AI!8MN&HNjU)=twzSlA16lji6aEz(`IQg_o@JUg$~y|f+2ey-Q!RIi7k zkyvUsM7!M(?RG=7+o5Q;SBHC@OUtqL+o~o?A0;m)`ih5p+*cIH2cy_TcT~$Ht#5|k zwV#yQ&nSA5e5^1sV4N??(5trhZ9HB5L35AOS!{Jb8F~`M>B$tt7h1CcchCc>#g2>7 zG2CDatKg$xwLtZFOz2dPT?S1F|B4vRbmt6PX>aK4=E{apA}VW#Pl4uQFQx;f>K!Rd z&!=3y0PBQK)I~3(9(rf$t#_rqdUqP47tvU~2TcV$TklDW^Ma`Ah~C+K1|)4h%h(&e~KmrOZAmuk2kf@2Y_;RLPZLIk1ei;qc*U$*vrqTL(nxtQj9&W^B z+l0xsnQC>sJgsk`UHVo!s&AvG^{eRxJw&hT4fqW34fLzNQ+V~8MXtU_^u!_0LArfF z4AcK0ChNC}YW;RGPrpN~)enh{dXot0hs7TKE^$o1TRf`YD_+u1G@An)D~LG5FGu7O zG{<_j$8K2IXA(CEe&VQOD|&-?kS8-V;RNM_nV9gc^OO_D<^X3G!YcA-XkMP-tHIW= z_q6p$njJGl(XmnPYX3qlGvcha9EnUGh|KUfVE(eNicKrlb`bQc@EAmgKy9n*Phkk2 z#t{4&Yux9cU|)p3dx`qm`pYy>f0f4Qe*w>5qb2%V;J32_=SUS=l{E7`y5wkiPh+6|fe2bjE3zF2*UQ}!nKcQA_IQ&;^5>Z$)krTWiQ zuG_!Rx%$5`e!tQb{S;lO|3)+P)3gAhw#*Q;%Fw9Z&?#h?w9ByYT8M`pF}(Dg;iLDA zIQrO#r_T*PeQPA*3(d*GWu%Cp5fGV1P;@d{i6SFa^fuDe6sd8>G9nM656c5T4#NP4 z1)_sU4$qNNA=S*#shoaMLSoPq`anE_*<#WRdP6)4$iiCVY3#u9ise0QVm~HwuxaDM zqaHQ@ypw_>KaMb26Ojgw6ZCJuRA&P5Fl6tJk*2cMAF&|eqyd*T&#?#1Pp)qT7UT-x-%T-1b;d~>m6vHniDMTLmfpw zREd7E=FchgcjmQl9OBd*QJ(@k>-^xNoD6|Do*(f{2z_{OL1KAKR|4MSv>}vzBGXGdpMzz6S%tIQ@Z#Ngi-UdY8XrUWf2tnWqHYqP6TtPq3hd>8iiI8DVl?Atn0W;ur0#D*#0;?Wwr&}Shu*~wU@XWe{DjRmZBK2b}4Bs)(T^a z()b%@F)m08Nws-D#^093)K%!u!F;mTV~RPuGF(Bk%i(X!N?9dxtlHudw}Y|C!zN5L zQ;eU&MOFpeoWV&8*bh&IrP%|D9gPlnxP(qxf3}Q1>6&YR0XLO?^qX(rK z#guLIq7FtWbv1fZPos?b7=1BP{a`Wr(?nwcoo}2&(~W`nvgROKZj7My#z@*>jDr3h zO@|D73>`Mc(-C6=Jzz|x$BZfTj&UB8@cHzOF;(csg~DT0i`K>r(b1RC-aTl&&oj2l>BcsBsd0_G%)kj*<2rejalO37Xpj#XH^@hg zUGf>@M)`rUTmEY7(-MsRTEM_}1&o7QKjRKw1~-rar{@ zn|{9WmOj_`yT05wsc$vj)pr{o=m(7t^*F*ey>R%h5D>L*64h1|;%fu6~5OLy1 zxFBpb;-!~5;W=Xtwuw98!RJ%(&%AgFKTz2ooaB@t!Kb)9HhqqLQr_fu(=lzbT1{d# zp??#xYk(pT2)>D!HT}=RasB$hU3^Ble$(}k;8S1*9o7emKchU8j_Bp$IY1T`KR2j~ zUGQ0FE6>Oc*Q|X1lQe5b)vAY9qEMpezghZP+Bo1>)ph-i1LL<);PkS-pS{R!S?0D-5vVi@I)c z%!+2BZ-hO$kaI+zA^#XrmFX}YM?bW^$M zp`oUaCYo_nWhT%Z(@%@dBwAr6(|R+7Hk$!_TqsC8@sBNTGE?bRGmV-|9F{aQ=!Dst z9x*fNX)}vnG;`=ZvkiS>=F+!j9{p^#7jDz;AOdDb(ap>kJmN?l*gjN6kLsDYH!c#q2NsY7P(|ndRbhvqJo0o+E`h zP`b=PY7*XnX?8!Qsd*B7gqjsxIfpD_+T zBMygSIl>!L@>9%8em=Ar!x>(6ef?NoDC^O*m<`?XNBh`YG^8lT;(N|%r_C0hEV+kZ8zElF5HFO1GH|W{#*`l|IC;bJ zyRDHfXRqLYmE3WUc$dw}g!m?*nyC90ewLV7)W@CXRu2&UzUTuJPMGG7v8_2=6bvc^ z*p2xRBf)>fz7?61@Sj*FLx9htpjk}9?ZZR*SEK<#Skz;NV9n7tw#M}lU-Y&|`9b$}mt(an7CuW-0 zi}_{)1bU}fZ|)LTnKvup+y;Gm3zaBIvvBIUw|GU#(l>av|0*C8hgY+lSRAx#%}+gS zEIV>&z7vgeCYGbKaiH>|a50dfh>QaYTL?gohzAkJPs%jvhI2K1npdacqFk`m;H~x7 zBI;h|qk4WQmX8r>R`;RrAL|B*3_r09l|PzcLjun#lZFd>HoQwy2-(ELDU?&pI{s?N z74~FUyg1$=v(!OlL+qH$$vG9`T1qZcoDHz3RM{XYU#wZITxob9is#a2ij^xOR;m=N z9h79bAX%6ZF@m+8av)eu5Ue{PSa(6N?uK9;fnXh_?&dwz%Y>H38he;|FO9LyKhjk5 zeyTPfqUGkpRBQf;)|ijc73Sk~z4-)G;*)g9dqr)N z|0;~54nLYV3NfrZu=1hgfUfT)m>fld!U*7VntKUPuCKxOG@()&#hvVYPuEIZN9bCp z7nd{AE*@Ye`F&@hW&Mt3U+WKm7(SSTkh4cd4wWYF6+@gl{M_&fSRtvc6$e&#d}s3n zUBSzW=AC6;jp4kHlZxXn-$}jze{XZWYTk7mqd~rH1mX2^j7Uy^Q_j0!%i-`tKS8G1 zRmYa28;(CpTQG$|7In3ew3B+HJXVA;3xNRdwIB&=IWNEfHf+>3Ou$a21RvMR)G>m1Q&4HUOq zgTxVQu(;0}E}pPPi07=4;!SImc-I;&zOcrK@2s(SRdby5SPNvFwNR#5OVqr>`5d|k z+dS+7xI~CjaN-c4m;M4(`Gz8nqNnhn8TMW*rbd+z=353L6BJNb^#Y2_PrS>kRBr}O z5IU+i3+D-)GYTE?7Vldq5C54A@A&dt61**ocgDh7lu6s60pO*Hs~|m5520;Bctt*=Ij?iX5nrsiyLr!%I5j76N%5956j`WmqedQ6#Da6rDLxVlO)z` zWBURtaV)3R%3YnPQ#H4EAmQ)8w6i>nn82UGRg3XPwf%$%teT=G?W8GDbr0eh+8!q| zT55Y+`N=USC%7PH->&R!VrzGog3R+iCp0$xWSyxiAbrtoq zHq$_S0aiU78Z+FA!io^^-lW!)wET6c>P)=@FRx<^d6j)~dUak11o zA=X*88dh?DYG|Yt0mF!%lnVPAu7GXeM3nOsO&y`q)S=nEl*T0>6?83pWyrt{ zCGJKFo=LsR(dDdd(FE4%kQQ~ECJ~)zenzWK2UxE`Y+i@hyaBO!lQOKoQLb&hMIEen zAU}Vnq1L-J-g=MDvp#@I{E+5ZAJIzdW7=f>1D~Azgc__*=??2Fys!B$y4U)e9=5)L z8vK@Cw7!Sv`~cDUk-oHk7Q*_sa9h8MWb2d&TBk*8mxy`@57QL!F2uq`uh1ZTE@VEh zLjL=?nxL=*zgeYG2KK){P;Ou@{j3DUz;yUQX(f|7(KmwMxUwKJA4Q&`Lj&R|K5Dot zwDh@E;?mG3&y5zVLZ#1NZ*TF(J%E47<)1&XQuoiASZVmDPpmZkMH4G6|B#85E`PXBJ>yj;389p`L(XdPPSi6vLS7~M zBlcsYk>Vfxfg!wW&wdhrLO^?AQHuHu&z7|#vU8z0`RWyFv$P;Iz20;5p7)DQ^*w>l z{&|m~(k=gNWm;Q21mdeirNb+tM?d(o$g9$&{<5qs1NUxiE$#@q`BOydUwk%H^bq|x zqG4SRks-eqA-~Ko96Lhb1a7o7>VJKg!lz2=QjC)B zlPD>>VL`D7W^--F+W+}|{*n$~&{r`(@eO;5MM(}PivC+rNqh=0=I1J{VQf#4(-7z> zGE{l|PbTpq0`b*8CLz(jhA}-wPgP#?Kb<_Y(y5ke-eWyQP^E0~MW+_U4XEIh_`p-b z@7U7fV@@qH?HQsny*23fnOb~TsYRyuMuL}}8~#=j=Hn+N;N!WILVq9Msv)yim{`~g z#G{iNhV>Hd6t|Z$;pg)jzV0PDg-%ww8XoQ?l2o5A`t#Q_@sR`KYe0*dzM0F(N2yfJ zAEIzxJ!wu@e^F@N`}v{E*18(5E)AEta>Y4ogE(2mS6OpXK*L^dc(hauQ*DatjW(V5 z6xn;p!0%IV_3Sd%|NjTe Ctwgy1 delta 28631 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 diff --git a/bin/.gitignore b/bin/.gitignore deleted file mode 100644 index cf1db2e..0000000 --- a/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/org/ diff --git a/src/org/satochip/applet/CardEdge.java b/src/org/satochip/applet/CardEdge.java index 14f719e..89902c6 100644 --- a/src/org/satochip/applet/CardEdge.java +++ b/src/org/satochip/applet/CardEdge.java @@ -64,6 +64,7 @@ import javacard.security.KeyBuilder; import javacard.security.Signature; import javacard.security.MessageDigest; +import javacard.security.RandomData; import javacardx.apdu.ExtendedLength; //debugXL //TODO: remove import javacardx.crypto.Cipher; @@ -80,19 +81,20 @@ public class CardEdge extends javacard.framework.Applet implements ExtendedLengt * APPLET VERSION: changes with no impact on compatibility of the client */ // 0.1-0.1: initial version - // 0.2-0.1: support for hmac-sha1 authorization + improved sha256 + bip32 full suport + // 0.2-0.1: support for hmac-sha1 authorisation + improved sha256 + bip32 full support // 0.3-0.1: change parseTransaction response for coherence: add separate short flags for second factor authentication // 0.3-0.2: fast Sha512 computation // 0.4-0.1: getBIP32ExtendedKey also returns chaincode // 0.5-0.1: Support for Segwit transaction - // 0.5-0.2: bip32 cached memory optimization: fixed array instead of list - // 0.6-0.1: bip32 optimization: speed up computation during derivation of non-hardened child + // 0.5-0.2: bip32 cached memory optimisation: fixed array instead of list + // 0.6-0.1: bip32 optimisation: speed up computation during derivation of non-hardened child // 0.6-0.2: get_status returns number of pin/puk tries remaining - // 0.6-0.3: Patch in function SignTransaction(): add optionnal 2FA flag in data + // 0.6-0.3: Patch in function SignTransaction(): add optional 2FA flag in data + // 0.7-0.1: add CryptTransaction2FA() to encrypt/decrypt tx messages sent to 2FA device for privacy private final static byte PROTOCOL_MAJOR_VERSION = (byte) 0; - private final static byte PROTOCOL_MINOR_VERSION = (byte) 6; + private final static byte PROTOCOL_MINOR_VERSION = (byte) 7; private final static byte APPLET_MAJOR_VERSION = (byte) 0; - private final static byte APPLET_MINOR_VERSION = (byte) 3; + private final static byte APPLET_MINOR_VERSION = (byte) 1; // Maximum number of keys handled by the Cardlet private final static byte MAX_NUM_KEYS = (byte) 16; @@ -146,6 +148,8 @@ public class CardEdge extends javacard.framework.Applet implements ExtendedLengt private final static byte INS_SIGN_SHORT_MESSAGE= (byte) 0x72; private final static byte INS_SIGN_TRANSACTION= (byte) 0x6F; private final static byte INS_PARSE_TRANSACTION = (byte) 0x71; + private final static byte INS_CRYPT_TRANSACTION_2FA = (byte) 0x76; + // debug private final static byte INS_TEST_SHA1 = (byte) 0x80; private final static byte INS_COMPUTE_SHA512 = (byte) 0x6A; @@ -235,10 +239,11 @@ public class CardEdge extends javacard.framework.Applet implements ExtendedLengt private boolean setupDone = false; // shared cryptographic objects + private RandomData randomData; private KeyAgreement keyAgreement; private Signature sigECDSA; private Cipher aes128; - + /********************************************* * BIP32 Hierarchical Deterministic Wallet * *********************************************/ @@ -250,7 +255,7 @@ public class CardEdge extends javacard.framework.Applet implements ExtendedLengt // seed derivation private static final byte[] BITCOIN_SEED = {'B','i','t','c','o','i','n',' ','s','e','e','d'}; private static final byte[] BITCOIN_SEED2 = {'B','i','t','c','o','i','n',' ','s','e','e','d','2'}; - private static final byte MAX_BIP32_DEPTH = 10; // max depth in extended key from master (m/i is depth 1) + private static final byte MAX_BIP32_DEPTH = 10; // max depth in extended key from master (m/i is depth 1) // BIP32_object= [ hash(address) (4b) | extended_key (32b) | chain_code (32b) | compression_byte(1b)] // recvBuffer=[ parent_chain_code (32b) | 0x00 | parent_key (32b) | hash(address) (32b) | current_extended_key(32b) | current_chain_code(32b) ] @@ -301,13 +306,19 @@ public class CardEdge extends javacard.framework.Applet implements ExtendedLengt private static final byte OFFSET_TRANSACTION_TOTAL=OFFSET_TRANSACTION_AMOUNT+8; private static final byte OFFSET_TRANSACTION_LIMIT=OFFSET_TRANSACTION_TOTAL+8; private static final byte OFFSET_TRANSACTION_HMACKEY=OFFSET_TRANSACTION_LIMIT+8; - private static final byte OFFSET_TRANSACTION_SIZE=OFFSET_TRANSACTION_HMACKEY+20; - private static final short HMAC_CHALRESP_2FA=(short)0x8000; + private static final byte OFFSET_TRANSACTION_ID_2FA=OFFSET_TRANSACTION_HMACKEY+20; + private static final byte OFFSET_TRANSACTION_SIZE=OFFSET_TRANSACTION_ID_2FA+20; + private static final short HMAC_CHALRESP_2FA=(short)0x8000; // tx parsing private static final byte PARSE_STD=0x00; private static final byte PARSE_SEGWIT=0x01; + // 2FA msg encryption + private static final byte[] CST_2FA = {'i','d','_','2','F','A','k','e','y','_','2','F','A'}; + private Cipher aes128_cbc; + private AESKey key_2FA; + // additional options private short option_flags; @@ -439,6 +450,9 @@ public void process(APDU apdu) { case INS_PARSE_TRANSACTION: ParseTransaction(apdu, buffer); break; + case INS_CRYPT_TRANSACTION_2FA: + CryptTransaction2FA(apdu, buffer); + break; // only for debugging purpose case INS_BIP32_SET_EXTENDED_KEY: ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); // only for debug purpose @@ -644,6 +658,14 @@ private void setup(APDU apdu, byte[] buffer) { Util.arrayCopyNonAtomic(buffer, base, transactionData, OFFSET_TRANSACTION_LIMIT, (short)8); base+=(short)8; bytesLeft-=(short)8; + // set 2FA variables + randomData = RandomData.getInstance(RandomData.ALG_SECURE_RANDOM); + aes128_cbc= Cipher.getInstance(Cipher.ALG_AES_BLOCK_128_CBC_NOPAD, false); + key_2FA= (AESKey) KeyBuilder.buildKey(KeyBuilder.TYPE_AES, KeyBuilder.LENGTH_AES_128, false); + // hmac derivation for id_2FA & key_2FA + HmacSha160.computeHmacSha160(transactionData, OFFSET_TRANSACTION_HMACKEY, (short)20, CST_2FA, (short)0, (short)6, transactionData, OFFSET_TRANSACTION_ID_2FA); + HmacSha160.computeHmacSha160(transactionData, OFFSET_TRANSACTION_HMACKEY, (short)20, CST_2FA, (short)6, (short)7, recvBuffer, (short)0); + key_2FA.setKey(recvBuffer,(short)0); // AES-128: 16-bytes key!! } } @@ -1066,7 +1088,7 @@ private void ListPINs(APDU apdu, byte[] buffer) { * p1: 0x00 * p2: 0x00 * data: none - * return: [versions(4b) | PIN0-PUK0-PIN1-PUK1 tries (4b) ] + * return: [versions(4b) | PIN0-PUK0-PIN1-PUK1 tries (4b) | need2FA (1b)] */ private void GetStatus(APDU apdu, byte[] buffer) { // check that PIN[0] has been entered previously @@ -1086,7 +1108,12 @@ private void GetStatus(APDU apdu, byte[] buffer) { buffer[pos++] = pins[0].getTriesRemaining(); buffer[pos++] = ublk_pins[0].getTriesRemaining(); buffer[pos++] = pins[1].getTriesRemaining(); - buffer[pos++] = ublk_pins[1].getTriesRemaining(); + buffer[pos++] = ublk_pins[1].getTriesRemaining(); + // 2FA support: + byte need2FA=0x00; + if ((option_flags & HMAC_CHALRESP_2FA)==HMAC_CHALRESP_2FA){ + need2FA=0x01;} + buffer[pos++] = need2FA; apdu.setOutgoingAndSend((short) 0, pos); } @@ -1102,7 +1129,7 @@ private void GetStatus(APDU apdu, byte[] buffer) { * ins: 0x6C * p1: seed_size(1b) * p2: 0x00 - * data: [seed_data] + * data: [seed_data (seed_size) | optional-hmac(20b)] * return: [coordx_size(2b) | coordx | sig_size(2b) | sig] */ private void importBIP32Seed(APDU apdu, byte[] buffer){ @@ -1121,13 +1148,28 @@ private void importBIP32Seed(APDU apdu, byte[] buffer){ if (bip32_seedsize <0 || bip32_seedsize>64) ISOException.throwIt(ISO7816.SW_WRONG_LENGTH); - // buffer data = [seed data] short offset= (short)ISO7816.OFFSET_CDATA; - // if seed was already defined, we must clear all related objects!! - // TODO: require 2FA to reset the seed... + // if seed was already defined, 2FA is required if (bip32_seeded){ - bip32_om.reset();} + // check 2FA + if ((option_flags & HMAC_CHALRESP_2FA)==HMAC_CHALRESP_2FA){ + + if (bytesLeft < (short)(bip32_seedsize+20)) + ISOException.throwIt(ISO7816.SW_WRONG_LENGTH); + + // hmac of 64-bytes msg: (sha256(seed) | 32bytes zero-padding) + sha256.reset(); + sha256.doFinal(buffer, offset, (short)(bip32_seedsize), recvBuffer, (short)0); + Util.arrayFillNonAtomic(recvBuffer, (short)32, (short)32, (byte)0x00); + HmacSha160.computeHmacSha160(transactionData, OFFSET_TRANSACTION_HMACKEY, (short)20, recvBuffer, (short)0, (short)64, recvBuffer, (short)64); + if (Util.arrayCompare(buffer, (short)(offset+bip32_seedsize), recvBuffer, (short)64, (short)20)!=0) + ISOException.throwIt(SW_SIGNATURE_INVALID); + + } + // clear all related objects!! + bip32_om.reset(); + } // derive master key! HmacSha512.computeHmacSha512(BITCOIN_SEED, (short)0, (short)BITCOIN_SEED.length, buffer, offset, (short)bip32_seedsize, recvBuffer, (short)0); @@ -1936,6 +1978,77 @@ private void SignTransaction(APDU apdu, byte[] buffer){ } + + /** + * This function encrypts/decrypt a given message with a 16bytes secret key derived from the 2FA key. + * It also returns an id derived from the 2FA key. + * This is used to privately exchange tx data between the hw wallet and the 2FA device. + * + * Algorithms: + * id_2FA is hmac-sha1(secret_2FA, "id_2FA"), + * key_2FA is hmac-sha1(secret_2FA, "key_2FA"), + * message encrypted using AES + * + * ins: 0x76 + * p1: 0x00 for encryption, 0x01 for decryption + * p2: Init-Update-Finalize + * data(init): IF_ENCRYPT: none ELSE: [IV(16b)] + * data(update/finalize): [chunk_size(2b) | chunk_data] + * + * return(init): IF_ENCRYPT:[IV(16b) | id_2FA(20b)] ELSE: none + * return(update/finalize): [chunk_size(2b) | chunk_data] + * + * + */ + private void CryptTransaction2FA(APDU apdu, byte[] buffer){ + // check that PIN[0] has been entered previously + if (!pins[0].isValidated()) + ISOException.throwIt(SW_UNAUTHORIZED); + + byte ciph_dir = buffer[ISO7816.OFFSET_P1]; + byte ciph_op = buffer[ISO7816.OFFSET_P2]; + short bytesLeft = Util.makeShort((byte) 0x00, buffer[ISO7816.OFFSET_LC]); + short dataOffset = ISO7816.OFFSET_CDATA; + + short IVlength=(short)16; + switch(ciph_op){ + case OP_INIT: + if (ciph_dir!=Cipher.MODE_ENCRYPT && ciph_dir!=Cipher.MODE_DECRYPT ) + ISOException.throwIt(SW_INVALID_PARAMETER); + + if (ciph_dir==Cipher.MODE_ENCRYPT){ + randomData.generateData(buffer,(short)0, IVlength); + aes128_cbc.init(key_2FA, Cipher.MODE_ENCRYPT, buffer, (short)0, IVlength); + Util.arrayCopyNonAtomic(transactionData, OFFSET_TRANSACTION_ID_2FA, buffer, (short)IVlength, (short)20); + apdu.setOutgoingAndSend((short) 0, (short)(IVlength + 20)); + } + if (ciph_dir==Cipher.MODE_DECRYPT){ + aes128_cbc.init(key_2FA, Cipher.MODE_DECRYPT, buffer, dataOffset, IVlength); + } + break; + case OP_PROCESS: + case OP_FINALIZE: + if (bytesLeft < 2) + ISOException.throwIt(SW_INVALID_PARAMETER); + short size = Util.getShort(buffer, dataOffset); + if (bytesLeft < (short) (2 + size)) + ISOException.throwIt(SW_INVALID_PARAMETER); + + short sizeout=0; + if (ciph_op == OP_PROCESS) + sizeout=aes128_cbc.update(buffer, (short) (dataOffset + 2), size, buffer, (short) 2); + else // ciph_op == OP_FINALIZE + sizeout=aes128_cbc.doFinal(buffer, (short) (dataOffset + 2), size, buffer, (short) 2); + // Also copies the Short size information + Util.setShort(buffer,(short)0, sizeout); + apdu.setOutgoingAndSend((short) 0, (short) (sizeout + 2)); + break; + default: + ISOException.throwIt(SW_INCORRECT_P2); + } + } + + // For debug purpose only // private void setBIP32ExtendedKey(APDU apdu, byte[] buffer){