From 50848da805ea5dce4dfca0cbfc36f8c2efcb0409 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Tue, 24 Mar 2020 08:41:11 +0100 Subject: [PATCH] Bug fixed in AtsPki --- ccsrc/Externals/LibItsSecurity_externals.cc | 2 +- ccsrc/Protocols/Security/security_ecc.cc | 6 +- data/v3/asn1c_cert.tar.bz2 | Bin 0 -> 26700 bytes etc/AtsPki/AtsPki_Idnomic.cfg_ | 13 +- etc/AtsRSUsSimulator/AtsRSUSimulator.cfg | 2 +- ttcn/AtsPki/ItsPki_TestCases.ttcn | 114 +++++++++++++++++- .../ItsRSUsSimulator_Functions.ttcn | 1 - ttcn/LibIts | 2 +- 8 files changed, 128 insertions(+), 12 deletions(-) create mode 100644 data/v3/asn1c_cert.tar.bz2 diff --git a/ccsrc/Externals/LibItsSecurity_externals.cc b/ccsrc/Externals/LibItsSecurity_externals.cc index f628cd13f..a3810b395 100644 --- a/ccsrc/Externals/LibItsSecurity_externals.cc +++ b/ccsrc/Externals/LibItsSecurity_externals.cc @@ -1046,7 +1046,7 @@ namespace LibItsSecurity__Functions p__publicKeyY = k.public_key_y(); p__publicKeyCompressed = k.public_key_compressed(); p__compressedMode = INTEGER((int)k.public_key_compressed_mode()); - + return TRUE; } diff --git a/ccsrc/Protocols/Security/security_ecc.cc b/ccsrc/Protocols/Security/security_ecc.cc index ed1518753..333e91763 100644 --- a/ccsrc/Protocols/Security/security_ecc.cc +++ b/ccsrc/Protocols/Security/security_ecc.cc @@ -680,7 +680,11 @@ int security_ecc::encrypt(const encryption_algotithm p_enc_algorithm, const OCTE } int security_ecc::decrypt(const encryption_algotithm p_enc_algorithm, const OCTETSTRING& p_key, const OCTETSTRING& p_nonce, const OCTETSTRING& p_tag, const OCTETSTRING& p_enc_message, OCTETSTRING& p_message) { - loggers::get_instance().log(">>> security_ecc::decrypt: %d", p_enc_algorithm); + loggers::get_instance().log(">>> security_ecc::decrypt: p_enc_algorithm=%d", p_enc_algorithm); + loggers::get_instance().log_msg(">>> security_ecc::decrypt: p_key=", p_key); + loggers::get_instance().log_msg(">>> security_ecc::decrypt: p_nonce", p_nonce); + loggers::get_instance().log_msg(">>> security_ecc::decrypt: p_tag", p_tag); + loggers::get_instance().log_msg(">>> security_ecc::decrypt: p_enc_message", p_enc_message); _encryption_algotithm = p_enc_algorithm; _sym_key = p_key; diff --git a/data/v3/asn1c_cert.tar.bz2 b/data/v3/asn1c_cert.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..cddef462d9f54d43adafd95af19acb7dd5450790 GIT binary patch literal 26700 zcmagFQ*eaovx^AkT zsxDzIb1o(!O>z~@rW9N=5DE#upZ^=}EAc}NU4wuq`%5cRdmd%JY~^}f?eMtstY2Mh z?w)P)9&B}JRc&=#-2~;kzTkk&!~d%14YMW`{4H|nL$fox=hfp~lc!@l`J}_Kz3W-x zdbwkDvU|RD)3f6^!?O>13A?qEJ9_nE>wfjp2B}3;Hou#Br|i}XKBxcsVd#_R^E^z@ z%7(DH1jqe-J4B{ggiQfi4ibt-Y>_xBr8r%R(3t-G(#zGZGB`QKCmt!{8 zXJef~mBW(5g7!C;1pxtp2-Hu9jvpq72wzAd5hssfj24jtd`ZKrW@f3#$}wS;l>#Or zJs8R1K~P!Kmw-#aU%U&rQvUNqr9ns&rLy8N*o8}ZB~%g>HWu-+2tK(|e+896ii-ELGX>H+R&v(#K~G^Dk|&|F{6%wUXh1ks5;SY3 zMe`D>EEoj&A~Qs&Y{iv$Qa|Zurud>~S%#d#czRg|L?+c4I~zr!2a9l~2czP`Ytllg z>X&$+m$a80Ytm*}@#FaNv$Aig$nrvS`U;>p0Tm?EqDVZG6o8NEe^G2LlaJYiw$q?oo!L+nJ z<%9gYGy_)po;Ievy~My?e-SUCGKGv|7_;h|X33Lv{wFdb?odZ3FRCg|XHT>LRhqMt zh`}D&zD=h|gR56=S}oRWGRQdhn+_$&)~e%;ufc4!${T*wW_QC38-9%?AD3wV^M(^` zoka@61JOQP#zR7G7s60AENyLyZ1S%)e_Q<-HFl}_N-Ie@XMKvm63_DZdDF{MXOo}T zZ^@g=Y<57Je(|6z=%~RQ-2+`@&t~hY(+cy>c)@);uPGx|=`!7cq=5F|A9?=1^wi2T zo&F^`zsto8p8G!4G}-J^u?e<6*0FOabD1Z)aw1a7V0bV|iC1OGXskp4{lAEML{c$a z>uYNdJx77VPD!zDF|VMXuvRn&0a6*q0c&81Fw(qp5B(;RvK}B{sgHF&IOxPl z7q>%QFiz*m2NGxIN#K*ty)wnLQb~>9hKHMu!Rz2QRBej>D&h7VztwigYVB*_~OG?n_6uR<0@aTUQUS z8COe9_DYjndX>4?Xc~|S5_YIx5AJJ5Qdmf;02*Rb61jB%NYIH_Q$hPIK6q(Eh9kMP z)l(hF(`oT*Q_~zn6GvPNomJDnNSJXrFw0zc+6rspcT3c6s)H-I<$Sg9b5(>Ux4x!i zU}znXorI1IC!&Epi$F4%DZhRNo{}}3ofXc|1DKy-jYf^iI09-q%mhu&617r=ndUr^ zvzjlVys`)gXejdCj+Y`y)DOU)?|=KG0Haq3FQ%h@e-=wX5`}iPuBZ?K2*z0K9chGv z^ZpxFM4o#a_#?@q1o~w|l@J%@yR%5+0JE{i-$a{Pt$aksnwY&X<}DmLQ<^^+rzOm~ zR9Le2!(Sj7K(Ox7u@#jhO;EY}@S)cR{MEG1WG!A|WLgYB?hG;Ji%j!&7@$m)H z$m3}#0@>EQ#olN69up&a2ba1G=JP@bh}qsOPWettZs?TkqiMmYNw%9HBGd)yG1n3S zmmaYawwUm$zUQvL{K{+}vd%emlFY6DM|NL9*%nLL9GseVa_|R|TF%~5!9>4EGm#i| zn~U4O=gzNN=x(w~WMUH*HDCrpOf&@pc`84+bU5QkUqE_O$wP+p@C$2Mf&K?mzIyqa z3!LYf{Nf;{u+-qhVBmsKWDbMpB|nW&CB(o%#;_25_yRme_H`nid{HXWAQi12h8dH< ziwYAWGrvddSo6o$E%)gJa8Q+6`Bk`6CWBJxGb0NjB<3A@JSk&eDUZifcFjnG`V#3OYzy*`L zbR-*-$T_Z4nESeBHS4|3GsQv6aOSmT*Tlwlr)k(s3(*lj9+a5@z*A7@_i7oGMADm` z-k0|5mzo#&geLnxBO_VYJ1WOU$_Vn8#LIVN>5 z-tSE_)35$#!d9ykZ^hSMQ^@#xmcO|W3?T>dD|R@3wtvnMy!xUm>EN;Z?dhW5jE0$-!mwy%c>l)GGvN-1N_WBS}|QYPc%Mj6~ zrA466s(94(8{La`YI~&L8V+oBAWo12l=wOnE+3eoVTB3g_Au_L(1m}i01ouLLhaU| zRd&7K832Ky+hFrjLSVZk7Pz-oXL*YnlH0&d^p`rg!5?n zSyc%_xxz1p5;|2aJF*_Sq6MRco5@CubuNfDYEB{RWI-VOmu8VD?ZZ>X4>*1h`?4kj zpKNTdkF``XkEdEreE8C6Uh7z7!EyjXJICjo1Bm~*AP_-YZi~!lz9u(rDm9Hesfb>i zC2=t{P_ne9gOF}afJ-dL@_y|S))x~x8A*7m1WS@+z$N|**DFp$j8z)}BXaNjnoxP8 z^)F^r(1RU!yT1WGZ{f-6d-LKrTf9$=+O}_9Y|( zOuuwXRt=s9=)$R8zI@#!Rt2qmI@6O}Wy08G89cm{_XEH{SfgCAhG}3CX=4Dhtl!$i zZQF<$RlD7%j=cu2+m$+3!+?&rT;1BGGIRPrT|cAL5`X7g5?4CY>ts3V6OfNyg}TyV z4xv2!wK#F#*s}_ath`U;srNO4ma7(~PfW7o@0eqQc@^g(AmiI`Xqu#1&@^$a+TP<} zfu=VELONNB`P*6!$R_eY2udS7l;Q=u1L_g4f$kTe^KYU4*4vu_0Dh#dIvZ3w9&;hL zmsoKF>T<(h{9!pWxBl5FfjPt~a@W6lz7$Yg!HR0Ra^)6Rx7oyBzwb+J0+`Ze`jnQT z454J1<(H0yV`n4Ji;NR?X>achAa%hfVMQgmw*x-PTg?>OWl!Q=%#5#}u{@FJ`Qd4m7No1*WA=i)a3}Av~p6H2>k+ z0^~$>OKZ)55tKl)+7crP_FB`~eO3KtAncfX@te}G=uOkCuYxDMBhRr^@~DC=CLWkn zU>Y6@4vcfMXB`>7HXxNwJ#x}BC#!ilHow(D9rVoe?U|q~k8tmR9zdegs`#uvN7oCH zWGFqBsd4@c6c2I*`={3LDbW#|=`O9Bvjl~ekw&ZF;KDKiA=^--(u5-7NrFt$tu`yI z6L~#63QUZ+B5mBGPqt>sjUINYGOwPqGGH-`G$Q0GO&Wc^+Og&Do z3)WrGLyb9O*kFY!865+o15=hh%ci9YlQ%ZSuyJQFn2q`ky73$E=9cN1NLrjO48{B&;2T-_VUr;ETC5YQ^}c6udT zs2v7D^Rp5vh6QWmk4%SR?oBc3GJz4iQjO1ai{j*TuX)V-C&iDv2eVF}?{zjRlygA_ zykf=#RGEohLtQNo5XIwa8q;qoK#WGoRmNDg@R0qMLOnnkG@h2yz<~VW?gP!1OX;SD zd7m~WSrxl)MM=R@McGb=RptL}fv$BFPN&TPN{3Vfu+4V^bu?|a+rh-;*OJ^jvDXSm zT1{*wQvu&Y_(Q6yc0fHWW={>JxZ+I%s?W`nQ%hID6i`E0J7L|;IvjtY7{rxy1gY=; zl|{0=y$CZ-jAP+QEow~4RBTn3<@`ulU#g;luT6?N6Y3ib(RMy^`D$+r(OS8A?N(DC z0`19S*yZHq(M@{ZhZRb@4jrgO`~GqiI{9s!X3Gd^D=g?a&>KJ?BVJ z`wJ*&azu8$aeSt)wc{cl>yrym5kTkjC6P|-kdvt?jwLjo63gqDYB^|GOQ>T#j;`CX z7yd}6%Q?pDrH#a^Bx@hWikOcpqjmO(1I(?TY{PwfwE1qG;hzoIW;NQS#p21W+ajx=NoC$NBkiM&8YgkF8}3YFW@sQJU}?8*Uh6e+U$;9}YOzhTL|Ut~CZm1MIJbVp=Bn|W{B-NM%{}!A zqTL#W%N&!jD|??#c8^ON_-u5m=Bp*=#ulLtNKbXl#KQYy!Z&g&(5(5BM{HnX9Z z%2fzDDcEIVHB9OxPAVMKu~Sc_lXMnhs?27p9@F3IohzG;AF9*a%cBfuoo8YKDi4>f z4Z$D>PbncNOaz@n!(8ClBl%g}4fNesW)%()MUskj5$zR-)`?uu!3f}la7))C()#Ns zbH6~`|G95Jiphw73hn@mwzLsXQ|CfP_%W5Ps6-;!jaFT|H<#5Cr;3CYDmeT7c&2GJ zTlqTXn3@c~V38Wiff^Rr2Yq%v<+el56aKK+#i@R6eDrf?vYt;k>U2iy+UeiltD4 zsjtNN^mogFY$pzR-l60EH#kH~f)ZCaTP3d_Jpby>+&52Y^hZ-SRx7t!Z`XN)(X-J! zo9@zL&g%zKU!6xb7ir%Z?2n=IhzG;GT^|`ad7hGpkeQaX;9l}^YeDeqY zPELwN3g?!ZICtiSkbw1z2^ybfRYW;GZSm#6a2(%?oYCi4SiWu~QP^BOZQZNYQFE^o zs0asr{fxSmkPvhO|K;+X<->5PAqpsZJcbteMKxGrU`eX0$8@XLj(Ewv(i7wu`;-RO zezF$rh+MB3bIyj5-F^1w8h7PQB@DO>Q8JUrUfljb!Rsjg_|+0ny7E$Dx3->>zzlK^ z8pvU$bKoHbvF&fc@c=jo9xWqT%9+EDJZ!Ot;$)!R!5?bM;(1bsoF& zw*?)0F?ChgHl6rtFKfvBsv2*xQE?vM|J)FB*U7i3qK%kmHsO=k9WmH-cXDP*?fugs8}gK5#~WUq)L#t8 zR|N&GGCobaq=dFv1)2gu{4q^zf`-#ZKuoY-ue3`d{(s*MnOh{H+gZqReot1a)16k>p$?Rj0V zf;s7et&i5ebgb#s0|?0T$L(8DQI+Ec>k*<)@Irx(@=ib=_Ah#j@85_?{+L2Tb}Uxm z{!kXBLaTsV1ltCtY7E&QRG?sVbw|U=dObxwQooy1EI#uHbAUFIS{S(_{BBSTA$ETu zk-oJKpf@@V=o82F&3>&B?&)CfQ9YrUrKv&UI>guv+F}Z@8vGq)3kl}2-eT-+(yBHV zkG30*=3d-iqNLk$2u@(%qjIP*KW z5G=`vXckPHB_C6Mtb)|*OaaIp0RqnOmt1lAu-WO!hL3s99D=@fgWNO%bi*ba z@%Ia>u6Fk20|^M0L@qnH9jn|!%37Z$3CrmJ4m^ld_fY8;Yr&VR;$oK;gP1$t7Ip7M z(rIn`doU@L__@3^wVq9@a`TMmeb%*_=c_T(jSfk(rXaqyS|AcmMuX{W7~(t~13O?b zwo`3lwRBc=ry@Pi=^Mw-o97}Z-ZT-Y-F)jX-RnkU+q4GTrhp(aB%AUz=j2Y10s4IS z5Vsyk=DCq)>tv!ZI;MgzwEoN)gZ*Inn|Ac~scQ`OE=8xq0Z!1itobJUwHlk>`F&4t zRlGBE0<1{p^jY20$q>=#1-10~ugDfYcya0RpA#PD7jZkTREyZJdye2#Ic<9Qp&;~g zYKS^P)Py|JH&M6^@sNppE7&b+!FVTj`@)Df8%tLkxSOubY6Z6@^`1G-Nxy`Tb3PXZ z2Q=RszkGJ~PFc-YaXC_(xUAfkHQkdIzaZNYf`OdX`(5~rtTp_+sFtYpxCZ0BzdSN( z6y1McT7PQ3-F#CIeE-0hr9SWURKsUgobOn=p3rJ7^o&aFdu-SnnZb;I?WS{h=iJVM zA5F$G7r)RqcrR86A7wOr=6l z3K-z|8zY{kD9MEJSOfV3BS-9`H#9y$npCQdmu(}-0mVL4n9$7l8y-12giB5yJYNnaPbif0g#FM?PWlWRqTkF!OxArawR zlp<|MV=D+pU>An7VUYmL5cfKfCMu$_B_ZMA2IJ~ax09RFam}@je-qNY^VJ!hb=1z) z9CNB{y6cwl=@t!olZq&A0vM~O$-x4L-lceWKuQcF(cAc5Yu|<&K%JmSg*`aBe?N`X zQ&hIPRPdnZ3nAgW(eI7UPV)*fYat0CkvsEbiA>l8wYk8G*?Uxtk1D}~G(x2B**Cm> zx(e|V2lbB`&q0CJ1F;X;#B*oR$j)n6oYbz2+^}rFPteB$QQ+6|cb|5RD(d$loAacR zQ;YC-wDxaU=)7gM3WSm3)yk_DqJ(G}!KNi+*iA*(vGi-1)Gbr~i&*xY^oG4;{T4=n z&tutoXwYQX1bcYPp-CgL39&Cvspa^s4GKU8P3(sT3)E5+vL|9^K}&D3um_HEqrL#Oi+ z+8I(zArd7Hz{Y6lv%wW==P2BT-G+4uGSjTn?b|&H21D7kb1OuOXYuzo80NABg$+TW z9`6oHq7=k3|798sKne~BZ*OpYhy$fh929PqY__5UH{8*x4`7%|o$c|wPh4|d!j;QM zLeeu_U(kbdVq~>^8L6=xW$>1eLmQtkpEJk_(*h#F8_Ae!Hu7|6EK0!AwyfOwLY>YH z40$zW+!IutI)9hdeC$>Ap3i-}4K3Z~goCP^v$U)QkF?&_8Vn6~pdVY05Ex6c8*}9J0!8nzovzW6~H(!(n|6Z)9ZX z>MsRASh=SS4xG&tLY4Glqz+F^U?zn>{FPE2pM``R0S&a)JGnn?DyD-$9^~TfA-;ZkbUXLXDpi7?ngsO>)$FATo^vbJYV^bDu z2km? zk>2acIw<7g8u@=yn+G9FZKza#!uXZ?E$9ugs46@&RRS%^{8v~GyxP@ej%A?y|N|KnohUvbyRi@GOB*%0>+2Duci4)q$8ntlzP zZeY1Q-Z(s^gOnVT5mpNs|0J;N(I~rOF-zHaWy|{9^Du|(N$W5W>@Sj%hP-x8kIH%oZahMwjMYp(@mNO_ zOf5pwxnlju)!Z&mEuhJkT?=cOVkx@Bo-o%0q2M%zK!N!ENO(Ky9W0d%H4B~oR^YD?DEGwM*C1AA`wUvY7FUU5Ym@|vw%c7Fy)ImFa{fkjfH!BFN) zfq%SPc3Fz%I`iw=H&WB4(|`7 z4i{tX#`a8QwXTUixM7Twh}NS&&X^W{I{z~a;!lZLqEg?1@NC3<;w}=FQu#cIpG2uy z6PJB1brm$I)R~_;Mis)Z&7YmNN z3x=b7?xLsUgxmwq5SgcOIVV>ok+#pTUK18=P!=JiEwaIIDm~yseUi_hIl60FEm2Zx zpl^{9ps21>#bu)0B-MdIh;!KKF&cX#S%?2$l7s{o>M~P*&f>a<&|Y?4G5^N488u26 z;I+|CAJHC{!tFN~RRdvt`3cn;)Xy z@u$cN!O7hxLGrfUmi9}Y==NRYlRp zvzo!}5&Ly+crEs_{xYmpw~b0`rLBkUNBTuPL$+ZDopVW54o7e=7A|AHOBN#c3$9D7 z`mpe7*(9@S!SNk13fwTys$^WLp^Xm?!mwQgxR^Sn4p>{TYUvA5uH;8)m8Os;mgCC> zhJRu9{cWGEKk!5-TF(i~6h?ShcJ}3b`NG6p^|<*5ooBUo;-RLla~o&&$JsmtApbHi zenHu?x4`x42!6kwDblP%5HXLxFV)rZydO|@?8|-qPiJ@z74{TybKYdEJ77o*=Ko{a z=FQs-uTS<1FYx079)}sc=dQwG1q;?^C1h56x4MgO9U>+-+vXx-SQseY0(tJ$8T*-i zp0&arR;K!4U$|c{{2s3w9o~9<#}dwe;3)R&mJ+~SUp-gph@`q_Iz}*ydC~FHuH^sx zJ@$af1jC)@EJi}I8^rqdAk78dXIP9Qj%yYGjqkGeJn#HPa`TUO?ope1X|_RWMObgb z<#+MwCy?Ru5!%4{RQ=`|j9Q!I#wOm-ehR-y@%^buWdt54CvA9bnQ7PI1MFCaU+12* zBlI?A+TisIWg4$JTxUMnH;W(JpYbs2i!EY|#o_Dze_{ylP z5%x#h?^bsOB^w+TT*)#oOX!zF?xMF5z>iTaZ2EZY$NZpOSPq~fFvpvG7wY<*UpDrg zX%qPIS0Wi0WaX?xx%-=cDed=WqnQTm`^GO(D9x#Z05~AQy-$}C`JH5c*dg1BFgYGZ zIn9S1IulSCl846|vBDy%k^RaanSw#3RgIMwIIgQ2#4l#F;Kw>^m0caHN!<AHe|+OQe-l|;p^Q#pv#)r{TmsE1CnD2&bRmc zU?o`;v0HpBf?_;qmkg2hNyMXzcy-|dg#Uz(0G@8I#aOr)?$zeTc|4wNc|jjLu=1?lZLHjQoX3V8q~B#(X^6o6 z$wQ+T@d(tk;7Hhp6NMA=_!^%Pd`iXlV7|=IoRy#HIJ_9xWQl?2{9rH~?-oaAELRTJ z6rMtsJiuC(4Z=-iU(X*OflwePlDz0^-Le@J-?HiT{BLM*g`5cFRDhmG3lCIYfCUnT zLzr4dFghygAz=F>BbOsDg#X2JwHJk~!$DEU0B%}a+t3v!2~z=az(BS^W+UB`vfT0X zY)_y6ZWH`UCA0#)n*(x?peIWUc)*Expo#%%c68YY7zP3@QnDE?(`DCW7;^aMc2Ttx z4z}X&bw!1Yc_&3=i$#0V9uPW^k@_hCvrBQKWz0vVXjK&;-oH|X!{>d;fwL=l^#UX5 zyz5FQMu+QK&gNo_p?22pIxX;4lW*c$!k~uB?!*Cq^lvap@Ul%r-oX$a{9ArRyP`w7 zO-24Z2mV1?s(?>bcH=+ZfXj!e2mP#og966;HX}-t6Np}aXz|QQN`9Cj+D(jQLk!E0 z7tbGxiiOZNQW4wnFb4AJuU8ieEm7N-v7(wup*=icF3?5o6`i-|L0v4EnEC=b2>_}`J01#9f6y+K5Qe$hdxz1Fm0tU7RLqZUS zS|Bou9_&3~FM8jq;USy?F`;_l8X!oHcti_DMfjCZ90HZ5)<|*!6w2j>m3v=#DR`5J z7+RwJtjFMf!-k!PGA?aE2Gf0|e1d6;YzLeW$=A>#y_&+Sd#;1om8+U(!|7*kuCPl4 zd#X**7CJoZmLEWe#1F29aI3gwnvRmXBj0WxLQ`8=G`p#*ud|26XaasUXMS6oqDE`9(U<0ICq&nO3#1<+*;H+XfEy9@|sA?5qNiQI5Ban>t{WGJ0bs&|7 zu@{1Dr7I97xo#Bm0SaBx|9;4nMO>AURQoJ>`;ec;coX^9sh>le29a2uZQoBD9!`{- zIP$6}in)n7?^MD>7-dG;KXylyR*KrY!3er`;JFp$q8pDtQCtOBkeJ`LsqswWz0sHw z;UQG3j8;WyRcs5D6Ytkwjp_t-Xi;I{rx+Nc8De(!oVI8S8`R#|A_gJ>I#UlxQg!M3 zQulu4D!-41Ntv}GGZmKEuoDcTSo-JI0{Y-7}X{DAw zMaI(z?On|)?&f-0?Dw56-QZgTL+oym>JT#|ULIc1+jr9aafEE3VgSSkCIEKiXQY16IUCiUkz)PZRLG4YM$2$zVD>nF)y4;dsAPUvKt(%X}Td ztQ>>mqN$D-)oc{1q#qPcpHdc>pkg_MjcP8_n9buXm6J=Tq?Jhk47r*QPGZ-4ZTIra zG1zo41=N|>NRZnvoFsX1)GrnXh=x%?mJVmg<33#I`5=oC@ z@CghR2rIh2BcQ^{`?UvVI;giGj+IKdmlMDy?NVF$U_Sb6@CcEcLwH{das7<6GN+vZ z@e6)QmE@0RTAO%*7~Cqm$C=2f1hJ>c%k0r_OanARnlxI#A3eK=VN#`!t@om7B^};B z;4YS>FL^Kk2FRBEKRcFdQM3mJ=}hop*)2C)x%t$bJ8X6S zkT-SsZ_5i?vAD;NfoKirGS5rmJC22)(OND*et^rsARO5jegHKbSjh8|m&!5^ZK-Ec zQs_yRPu1MQdGyjBx%|BH*J_RZjXo3#fza>xny5ULDje!16008 zBfrGCIl>OsT|^9rA>l1Ct2v~^By^~1Z){m>;KLSh7Q-c)NKn`O_{?w2Rs*Y~FWgqlucS0%xRQ8Ifbj=1@3cuNn`QEi2fQtu{cXVj5q7s6{K zq`$wY5s`G?BLypxD1yX}eIhrhs8^?ZCxIri_X8uHNI4gHA6>{+_r6_ z$d3DQM!jhLX&dde7%t^pFqKC1Q}Fckf39*sbO_s}o{^Np#o7!_T2k`YCG~p2ZHX}o z^kYZdYnA=(sR5FdP<^78Jw-sJ!LhT!PX^OP)U`l6KWkpJ6OmgsvuA&u3Jg zIf%+(hnVF_e>*P_D@VAFYzJ3W$>ek||ooy|qKH-5@e(e;@_qYm=IOFnPB2(qmLf>YW4Uo+<Sl8F7 zsKUG!GBSXv`1p6b_*}`TR_qH^i!)mjDoxZ=7$tQeRL+Xh6#eX5P|MogMIanDTL_p~ z1N&{B2%S3*QCIlLjkD5GJtV(B(RFwa}0>c?-{a?So+ZXMG4N;^Qt4Z#!q3 z(uP4UJ#r8X3SaazubMO)K5DT(<~{50%1lhT^NMsWtPs^$1OojItlhe@+TfD=Er%zb zpi;V5faEL#vTE$P|doJ5x|x6YM+BvhC$1;wYz2m5!L94_CZ{(!GiC z7*@1!oxRjYVB25y(aHiIZmOdGt%#rCtB>ovqi|E|| z>cEzN`|(xe{{2V11^i1lHFLJM{AY}vK#$U=3^PR4os{G2d7O)-d1Jq<<_I8lh+`j7 zzV>T$b=T#FmV@*#X)+&{F*|&xb97rP1S&+68@r&`X${B@F6<(iv6wXellg9YmpF2+ZR`|5nil?$7ef)Wr_`%@c zAmy15%yJAR7Se<=JS}_~Me%LK{=+|-VMygpaPLESJPdHiFOq1@TlJ-+FJTkPEAdTV zIQDH@R3W}P3RF?gT26ayTerq}-Ul*fqbQjp=4()QhY6`Ot1hBj-IulNP=G8H23RlFC}c+lGmPpGVF?*KRoi|b2N6o zy%m(}31Gez-=n6<*H}xJ%}?o(X-Y=4iIsxLUhHqWpBj%=b}wT+elQ{zTzhNS$W{Zl z!7T)d&wIIQg=-9+!+u*PvR($kbn91~Ej8%9^XtmaTk4cbjOv-a`NjSbq!M6L@@QC2N`G0L=L z8Rqz6(+5LHbBl>cjtS#%1ys>ct~u)Ns(fUeVS~A_m)c>%ftCXFjU|*FQO^VC`-6(- zSn7dKPmY55!8+^AiIHWmSMY54|BFKr2Wi720h_?^2ug;l2MUhhG^tImUD;S2pg;mhqXlf30M-b#!lV%ye4zbgq)5psP((TWYN2 zJVtA@?z}E)#4G-{(oJ>?ik7q-O+;YsOXB+b zD^Xay7x8kwH+7JsOZmTZQXCvxBvh+ADt_5M80`Ni@kOe`k%FD{DSn1^2%{kO?3nEk z5eWiTpmFF^`Wi5m?*$rKktoazXz|=foUXHmh2ty#dZa3+c9%U0c=*=~fiRS#6)Pt~ z&8%L-=o#Oe^YD+}sZ&*Usq*6;`StBJ78v^PHlU>36*k1=Q#y$!j&TM;1!Nj~U#04X zT6d(5U0FAq`R+&cQ}t(kDBRIqhn9VQ@n1b%K^Wx&1A#88LOBiqWbn!VF6$i2 z4+OGjs5Webzrbb`_7~Ww?4L~9Jz>~_&sMG5RJIw<&Qu3rl|IWsNCtMwU7KZf^pPS1 z?0EBJ=B&udr_t}`R}~bk&K|xx1VAnM|5~>jbUC4?r~}Kr;S6!-c{g-&UI6v$JI(HK zn%t9QVwLufVkZ3A zAn0#r2CuB|u1&7rc^1V=Pq;Lwm-KyMhFdZxw**b}`#0?c@5Eiw_ z=+)es&YNBL;#aH1|1rl1+VPKpG$3j})6JAQmsKWCtBGjmoWrk>to^2zz_x`}?2d~o zXc63!aoF~z*r25_$UYj!QYMbecsrR+{?qhr_=bn`}9DxJf(b1jh z)cfYO2nB2JitpDbkp3)1L|}ZlC@chC1uuDw%4>-teDLXRFAjsmYs+)UrG4*GAV|qg zLiy5Af7=p0?Dn@_m9rpr;qGAmYdtH_U>l7?MA$$;f#M-<*ozdsa{V19Z=f3xS}Nlq z&GaM^&5aP#5$Q^WT(EAGS$>e7g|Zd7YFx}YVUtV@1-eOBNWLSEW*mAJ!CvXqP#keN z*o>kR=iR&h!jQ+pNiZMyEH--DzCG6l5=Ot!97b@iN7|{F<)Hh~abGj{{qHETCma|K z-PfS`~y~Q z@dh~tO$WE*LYcMV=_7*ZZzz?3^8*F?^&8`H97-j0ke}*6S!<`*K>Ij7K`J8ARPw#eZ&GjgarLwx7spnuVaF9%i81O z6QP!>h3RJcrMnjh%n3$TGSlOAHm;S3361Iu9 zXw9@JXoZh~FJ7FygE2;w2o2q`M==vw{LG2xT>+cl?*q(`%O4qlVv?g@1S zM>%dIc&$Blr>*u8K8RDw<_GXwHE&8eglVPlS0-LpafQTVyBF8Lk!%&w2LZ$!cw2)mMU?!il8VvcaAk?wZPPd0wZ#gRX)2Do+_Sr11^ z6o&;Lv{Oh^9 zmM!|Sb`}+azODK=jdH}?yw_QqQOR#Kl_=r^UvY6Xnvm1W1rhlqRTmY$so&HnLag6j zIP&a3%MR?;8vmHp+nib7Y;^2C9x{!ykmJ>|V8E-{7`j7tMzrS(WH#zWeO?Xee_{O>I>-Oc0LjMYXExXY=Tf zpQ}b7?h-}N{alz^n7g;uau|Ev;siw+tRo|dFikOgHvH$oS@Fb-YSzcI zp8~@%!eLfdtz^yM5FUEIL?jeVK3|5&J&5wwEZvJW=Wn5a;dovYw$&f;BDS(zWEG&u zVC+{d*wS-GXI~KlUGuT1Ep>|8C}>Q1!jjubFhAmTuJCBnaaTR$^J2LdM&Gs8BNC4H zhBN7u07LgXJlWupwh%Js?NjgUkg|m<4o1=grxpjX2>>z}KCY1DZ2(9hh-hu)mCA#m zz%<-(n(%>xnh_DWBpM#+=dgZ`Pjc+Uv&U1qm+TILTR;DQ!l82WJW{RPTu4K;FL!pu z9z@O!wX*@3p@<>KoetI~Ot4ip;xzwDe0xFO^2R~2z*5NO6C?zgh2VuYxf;3ImS)lb zdln8@59y}a1|}FMV{oVz5>JA8)<90c$u~nB2cnFby!SNUugd9rcLetjtZM0r$-{(t zE0|vE(CludF*px5qC>2zjAWgDSa!_giiD6P1Ft0iv%0iV7~VP?=fiW^`iy)bDVrUh zbecq&2KTpK5pMFA;E&D_Ba>TVlz-znFT3;1m?7`@-RvRug!RU_!da%=2ooo2UK+m4 z>t4M~)bGE({Z1~_UkQ_K; zOvr$yI`v5~^pNikUZ9_{kYCKdhBvTm37?M8n3%N5Ip~7SNS27YeV}2)UA?X$`Hw2T z{z#*2&t3C)^x$viFP^f&9%+EBb=0`|k3(l)VR(SElAJ~UekRl5b|%6r2$E3ZB`mZy ziF3HWGmFOP7T-jmuFD?4g zb8xz=S|Op-L`bR=e%!H+ZWagaP6Fw6&OTH#5Z+=0h&iy{Vf2@-V=9y$&4}Csj~R*l zu!SXei@$B!_Rk(9`6ObL`O)9m>0QlW9cPASaL7%JO<5A&;p$Ad85V_|_@gF*D(twM(WUq4B1BEUfEQBF_G zA85h0q2f~*35(kw^6Lr0QN8$1^2;0DzKEOJIIMNQ!Vl{CT37y@xHrvIM;jZC-_O+? z6@J*orZT?CR)ATJnwPJ*HBRvV{%RW@SxV?3+VZURTpB0(_Re>0cr&f)<0+wk&vX`TIiOE)!MTxMcM$M}^4zgDLxygmh zG%KH$9WaOewUa(Ae}2P9SHhiDVa(pe#^wV3Fk{_p3eqc#M(zlZuGLT~-z(^gF4*0vl5BoBQ%xOJWQQA3e zG|;TErApbyPkzs0Y{Cy4ERe!SgvH)hd4db;k1o+Y-kpHff3z6oY09AY9{vwBSQQonrxetLwI+Jr981XS2FWi<{?UT*riDZw60Wg=Ts8+cP4> z`LpNK5j^n z239|nlX*Y!u6Y6BSAj-3y^NsqGtV!h&a0ZT{Xt4TF3f=-=C}Zxca!}`ntz9QQJ&(3 zmJMwn1v%`dbU@ATNS)5Pl&d6V-d_BV}(xrfsdQ(l|?M6{<6&t6ry#RCKEhsOjZooU%Z_Y znYWfC#VAfG{XUg(?Q0yPo`3iv1#X^5ADF(ppVw~Re&#OUuVJ6Pl1A@pSjQee2->Dz zzq7b-u|^sC4{?obnErEXM&Vo6N3(32m+W>#1+BlRaO7H-Y+|BqO8Z8ja1aS5%|d;Y zJ_*6nvd)3d3>9BD=rWi5M0aH+xe3<@o`8=(JtVJje<>W+k_tQ#eU{(e5z+0rol0Ba zjyz$|U6EuC(cIgFU;41QX7QkcJ<}7vl%~D?pt9~j@xR9-Rakd?BMrdZW6i`3K67zE=0grMaIz6qoWy?=ffn#v=k`UxkZp+UK!} z%JWvzPI*TGZn&a3T7AA8g4HfI**=1U%A^dLTT@4s-I*b=v0h( zeC=YlLSnyitK-G+yz@mdDq`*7+o_;QL88DLi#BnF2AJ@qkyzb}fd&VnB=>0u!FVVD ztlO*2$NvCKZslTOQ3{MQtlLEujau;^3USSr9&fPH{CAnKC%BE4NKnCvmA_Fr%Xu@; zS;*BRj8`LM2amLbCRk+94oZ}TdS4nf3J1S2$2!GkEEy|#ggYwXnS(cIK#JEW-w}Od z0v|n!G%4ww5>C5Y?B|jXe1v6YlS&}c84)%hCu$3K5wi~S>>lls>bIZz8tR_qJ{NKX z3B2DSWnXo%>te#M&b8}{$nAg zHHa76rt4z$)Go5j2wC;C|4#tVCotGl&xjxoSeC)uF_Lv4!i3ni%jOk4?Ty}sr04<`Ks9Y*2>yb^@oJSeUd7jM!y#4M#;& zZT$M2ZzSkQ1Oe~MdSk}~k+N(zx&eBn3F)n5_NT-7OkoZ}q&bS9plI`!I7(-$HL1_$ zuJvn_BT2nc3gh#(7lwXm*$qO&L$#o!>HHHuT~f^Qg7X{q+GdE32(keHcX)$+yk0Fs zt;MCy6AVYgISun#@z3FTpAb!R3Ll(jxQ4~fFF-(hzHtJNR^4}pIWjeEk}zfhSB;?* zAqEhZk~uv5OR;*wq%s&H+cru5Nj$@~;NN#?HOhm$pn%U+b7vm@Bz4;`RR7MdaHi1C z7~7TFqqiCI{ML;H(S5MnZoD{1y2i=(RPQ``{4#& z>G*CC=qUsU%?=v$Ra&Ae+&^9Clcue64XS+oXu{Lb3k?|f+*-C^-T_ch;L5bn>XU2!{}J+$i`i>0ZYAYMP%pHL<;|NF6l}-=ZKM4TF4) zWKiu)QnQS{u^4B#Sd3*L1j1C9*&}g*D%rq+Rc@0%2F<>Yl}_qYC@YJ6C)kggGUd6v zHHk%l(~*Ck)ER|aL>Z^#{Q3hLPGUO5GUgQTi=56kJ2|ejP0t81Pe09j)qXfM2sUpK zs?p+6R26^-eM$Fvp{^hyz1HcwIH z)EPMr_P1&gK|$pZdV+``<5<1lyX}wdQa#C$IvvCf5Oi@l$}-PUKwv) zDO-o>()FD3Qex5Zb@PtW3gCvNb(HCtXdR zgiY%&JVaiqy>SO=y@_t|!C(MkK0moKO`JBG7mO=56B|f8cw9_-q}) zkj3rgOh_H8>WIEszCZ`Y`JPhehxEn;LTlWIFV$_({wTHFFZ;s3Z7pSnZEYc~q!jUW z`EYylQFj=%>P6dKTlvHwDtf%StGOJ2WkCYr&&V!&!5181uTmeIW9O=@)5K@KmJ#ww zqbIOUz!)sEu3V2@i{p^*#_g2C-b50!qrl(SRnnih@2bke3utQt%t#9T{QHYIw(Ysx zhT(=Ib0UW6A0^0Be8&wT_d_FmWeh*y?VkmlF&+$+L=c*rCBJu^$=pc;`LJU}{w=Rm zsUC`Hwwpc%ki8#t_$`L`n$ZG2Z6AxyhU#i&bu0^(Os{FFY%ayX|2>fy=f$kEaj)xiew`mx^rcnkI zjUkV!e@ofy6^(u1;|w~s1V?`eK!5J$n~-&{dh(xqgPZJaJk?_-NEi`Z#Vd=)x-{@a zHat|RkyiMtBmQM7Jn6Ezd~vIB|1^oXTyc~<>EqNAV~0pF5VN?i+roDW2UVJQk-!Uh zpN(zxe_}8|mxZxlU{6N;-Tp;JT9wyCZeQ%`Py!~vD>h&urV9Htg^CHa2iHna8y8xq zp8ch9UCHpGc(K7QV0Jvpgq1K!fS$uqh8{`$o=I?24X}0Ks!CEKDS$ncnY6;g$a@ z17F+nM5eLcU@o(+9$%r|$iZi|&acrryxt;&L#p``f%6-)bKpSdMID=pK>+=oPETSRYy>oV|VITBk{z5L~QU-A_Y*uIxljxHABU@dhLlQj@RR?GnKsBWvw zx)&i>-?Y(pWkfS{t-`o$<3bR>#itKj&kW@}7_IS$>giYL=2Dn)8eolx^F3g5UO(ZF zwJXDAAi?hng#KS=HoF~DpuU7S3ptMzB8X>o4;)%=+Fhe|24v8)hphw=C(M178n{0; zZif;UCuR0vhpYD|Xn!b)p6K!##lQR%*qUap!fn2EXPm}5OQfNAGo#BF{UN1DNX%4? zo@crj=bgJ)K4=aE7x)JOebZKRXZg5IXJEOZ{US!?-I=uixv*OQu6XCNql| zK1|}9f{dxIFBbqAAMbS97PxWI80&nJgX}IMhm8;c0&uTfPxKR&_h*ZdGS_nVV#nu- zYn)-5OlzYQVN%V*{<2AfoHa0nemDe@&wajv*I=xk#D5l*Lfcuj_v6O1cvvP>!cBLG zQHm>`cC{|>9tcRY^o~1HTNwtrQLVd?j-QLSZ1KSsR-P(0F{n%rB+u{OD(!-0cK09J zH~{0U8vS2O(62$4Qdh`>GRPL^ zp2OiMs?q~B3}r(qw$=*QwhFMOmbSnqPU{$R;td&!zoTz9P+PK{$pkl z`1o%Li>{D=E&S9(Z&F+~ORbpb-FQU#-v9koI2|DyfnHs;V?yczl%k)sG*8tdI2#Q{ zxwm@>Utn-wryOtmLQP7oY%Psjn(NUL$2iQ$P-)9D-TPq9w`D@R0AAtKP_7(SiGwvO zSRwxn8oS{`SIZ0*Xv4*`6j6&INHn`B%S8=a9mrPm0?7L?k(P~R+3=E456!j9RhmjKg{xm@hS8Zm75Qx!n zYrmczB*PbYCpS2Q9z61;8vP8ZKzxjAKA<8;-$Q%JVG)DrF|6%x1e}cYDZxZ~ZS|%o ze2+N-ySx}e7*;n%A;|=KPacMbQ1A+Y`I+$IcLTt*GHd=wD=wWQfd09+-QC{R^$# zaik%KEHaL{k#>P}kJD?(w#jpFZ$=7RE{vP48WQl&{6hVl=Iy_^$;UD zT(y0?EBLO$S*Q;QIj#>uhD}>mB~bZXU4}{PMcnARrpEkXhpwaNM( zGlgUg&Gmf>B;y-gDuj$i>TocSbQR75K_E#>3JNOf8vmAfbMgQVw%{y8D2?htmU%W-9q z;*7zY!Skw_E*|ifmYZ%{#W1$$e`51~Ip2may98^NNcPV$uJK({p>l$_WECc22jO8m z+id)+2axG~J#PtMC_Xar8vMDri#j1j8omOtltLq<*;WPzi2?UZEfI3<+g*H@u{uEL zHA|eK@ngq`F~dd=))uR#VJR_TN%)&3H!Q8&qR#GbUdjzIdcBh+I_%vE;3x-5lDf&X zkj}c@Z4oD$m9M9YC9GA<2p;gM-w5bvaMPY`+)7FF=I&!U%>lGYi1sVJd07s3(ObY8 z?{y-$ZE&OgtK(-4no;J!7~i+(y~^aW&?v~52Lk?n4CAh zGhNyzC*25x@*y07&6?Pq1af>40SPuyMXyLO@i|3>GdkUj8=zB}p+U|EgJx=X&>ax@ z^d{NkV9vl6xG3Rs!yp7C|NK>H_d4&HE+fd z_*bgaB2CK=gup~8J%m0*Cyz!amvZt91B+=v`fj82F+Sd}-T9ARIYyOu5*y4_Ljdad zEy4@@?r#Lq^fw_*+f%|-DIp4s)&G#Hn{`blB}SS)8*T;&W-t8OeD*8{p0GF3Lxa-2 zD{qui4wPV_YuG{fYl9k2Q8D3YNYJ4nRo=vA>!iVzOWu$$81nqCLWkK=;mE5#_N~-Sgq*jgyevfF+Wi)Ly*o?o`kP z$utcvBh;J1c^$Mq9vXx6Bi-Tj$v&LLth^LglRks8xZI>5P-n2$S&=0Bm>G_ zD9Bpv4)3J!{{k>FqBNNh9Eqf`muHG&);Uvgia*BOIskxJTdbpbNQ(Tj|xO_ zOKzmsF`RMNI{GNlO_KRqt&4QI5Z{cZ?)vc8kF%+r?@?`5Qk znJz!^6?~~UOsuuc^r_hQH){Jn@#yYA9oTUY5<=aH$b5fMm6IWTvuk2#`(@j6uW77| z#-huUF%k6$#Tm8&6bb5A@s^^O!>sW<>8vzQ5F6(!FqX%zk6PoBs+9emXT3mw4=?jF zg0Q(CSw&TbTAj=o;A6e1vN?>%^FqdWN|lSt;alhtHjXN`I)WXd3UOsL(^e! zi-#A}$k;d#`0Hb!m$0>89B3OwOsP>aIT4#n{n{QZA)t+whZ!p8Qh&o|ajs(lsA-^- z_+BLuTZQ)2D6;!Vr2i+~%PWtXEsBYnlmiu67%QqZqdbsgxdS|)KS7SrAbsCBfs?J9 zph-zk;P|78smSJ`+kl;1Our!SY=QEn-C&dFTADu`ERY9v9y_Z?`X+2r{X% z1Koe`xb`fPat5oFhV3UFDBFNZfW$+aYZN<&;r2YFZLAE-4(}oJ6B!T z*b1!+yBH8o!gJDV(=0&wC8|N7u;&b}C*L#HNY)WFxAzDLg1<3jeHqskux;>o*O)>% zddNS$evu=C=AsC`icmKhxwXPHF;s!Hnx!sDm4~X#WvkJ5%U$Pi(wy6qRCu!<%AcUH zq$A95Rxc%0GSAwf1zD0l^e{HGIVYl2QXkwKj0awx_=g?r;BD*cupa8uBX4L!P&5|u z7oCZxaVT)Wvt^vjidlhk_eR-dMhX7ki<|Q^c~kV zOPWIHkwqJ2_*pP$3P%4ipq7we=}+HBhSVpknh_i~41rX9zgRg{n-QxA4|FBFfo)rw zyLM$WtA0=*N`qcLIQvyyW9{!gp84@z&uWY33fF^J<%{#Plsn6go@x6W&3XaYnu!h` zG2tGr#U+(sg-HA~OoXW7O%FKhwRb7-LI9?haOzr}>brgNsCZk9ZK}MlyW3?v1l&0Z z~1o# zg1h)~eTuFad{$vGciS>e`zQ^4{eSypQ;qITMA)ZMmltI<0WntdNcqZo9-}y2)reXZ zk3zK$XM7Z^8DANwEUKieX0*nN*-Rs$%t{5)r%H2z)VRm*jRgm@`MSpoUMzMT|;#p-! z=Y7$3|MYj84X+5wP2ZSITB_2633(Z*e^+AyDja_&(|H%kiaZ%7|&S z8auXy@u?5Dk{W|I-YCwIL%q6_6~-a~{VYgkZW_o9hj$?GT?FBmcfjZ@iqAMR(DLU8 z>5zCZ=CK$QXLmoOjz0H`MDpdgvuIF6;Y}(;XCg2^f`tKm;>UG!Ql$0pb$0;O%cl5^{Y5i`Y3-F8MdsAgKwY34JAlwH5tSnMI-A#+?Wgc{{ki zVpm3NoAnb5m*1nSWM~pN*YA0Vj){Z_px7w;sV~_1 z{(}G5oAj#e$d~U-uRD6!D+3rmI!ySa73gyKTFxQ zW83>336}v383q>;V}7)zvnX|dBabq7AIJa^F@+Oh;7KpO9FzqOu~&_x;O&vDZ{=o5 zD}#YirT!Vq;kICF`Fi5`Fnh5mxu-SWb3od5B#fy-14h#&f0v{oO31QiH;dtwNt1Iq z9F6?;d4F7a4*1I)krBBKp?G50iD8mlNJ#tIV~#{1WD3K(Yp2KxtQ_>5Q43i;rl&j=`gWQo1axaS zsj8%Yn$@iu%5dI96b};joN>o~;Wu*gM)Wf4FsCxak&^{<-G?UKtGEn~qE5cCVc4lh zW*E)Qb=+V>LbTm*VnK<+?9IZE>^+wA4%Ssk;6j(D4e=^~Y&%S8z zss?z^#h=?{Sqo;HL8e9-=C+nemI1*&N7tFL+a%rfIB zN*BTiJnUzMduIuqLN|nl%WzxiDapyyQ|u^|TOAG1nBADSjcSQ&5lz-X1ZqLG6}_Iw zm>a^d#zPf0GDpC7>y-68F$Jv)vCkPVT@euzD1;KBy1cI>)`4q#a3Y`{PkL8}fm(wi z(3oBx&|iP6McNrSJmMQ{0iR*_W6ap%i2>$(G_g4N)6Qy5OZ0~^ZI6x1jL_zXfZPzM z48-y1kqNoMAk+FW{*j8S%dPxD?X#mB&p0CsI`cJ87-UaWY20Q@<;H9bCOV!O>g0^m*E^Sk1eomyG-6k9 z-6O}r1EpmeDV%pz!`llK5e3o<5k@+D#uV;B<&eEx;Q!}kj}AR}x>xzdJM!u7!;>YT zmRB3|_0q?89!oWk@?c2A^lS|g)jiAzA_*NMwkYw}LLWDR^3++UeE-$k66E^=QIf{3 zuA;epHpfhV`R@zKD#<1|n(CIqh68@b6gB}cUZr;t2A1sL8u?I~-D*I_8mu_tlklkt zj|jC7q+5M@Z5muX<$@qY2#I5Q*(jszvCXk=Fg{05v<#}J21W&!r4eIRdcnPuTSanR zI%tlTR`zADcO&a7nilaKD#?f(Z0+s46V7QIK6or7v)!}>EV37~4jD;ttUQ8&B!8Zj z1F*K#XcsA7hkgypBS_MO$G7}@U_(!3>k0w4R`5{$-nB!PlGuLUtbzua1P2fE(Ylq4 z&_I6I4J`e>SBu+`CTMyF4EfZy=8Q8@&mBGC9peIFaZB%g>GbK-0o#)qc|M@XfUxi; z5zfoj+RguAv>r$OY%#=Gh){r)3S5bdly^bO<*qkjj^r#%Pw)^J;=#zJ)<+iN(uQno z4KQEly0qc<1_;Ia1tZ(`Oi)}@fG!+;FIx>%T-D=7vOo@i89CzG+J1G1v@s{JK$Eil%$$Nq5H8orrW7aik1jmuGw zU61Nv%~^>zyAl-vJXzn|AowRAP#dJ4Q%|DM0d8g#bP7QGRPyU>=(>}L*%cV44AWrq zt`b98pMWK!O1hzzZ$D);YY>7Mt?w_AEiX#P2_v;fj*;Gr6&UtMP9q@-GjuMt-Tvth zhoy?ShvJ8^Yn#%gk8(qeqH+q{gY@6)prjWC76%wJViyYTNua%$t;bJC=E5T1jm|@# zGF&gOaP{bY1K8_|Aj-mZ8v4SxBn(Xa>C>RG_psu2{oAOJggdhZ0?N`c+39R06fgDA z&tmiL#}LmR4nm_UA&F5)FcEtBtYIupk1>~w(Fe;(I{k7WlSb5EDYVT!$j^kaWmSV9 zF~mni0+m~;7-5Mv) zlOV4S{Zj!pdLS1|o@rRyP*V%<9A%!+lVu1zLlQKAlES_RUR>xT8<7 zvwp{uQ1yU4+@{HZ@yYllO>xrwSmDbv^g+Lufr<{9C@TXqu!)CL))3b@t2ao%iTlfc zJ#Z7HjeAiUZUVXPN@pYYE?xryXimh5Q$uPctwDhMb!p{DshYyBmXlfGgAnou;jsOkmbiTtKk^av8*RB)_0L64}Plgcq7YS7k zLl);Ly>XCuS6~9xNU|`pdk{YRyJ01rJy}uK@+Pwd>(@~%2_7E38xx3G|6FSVWBJ(L z1f+7;!?EK`5$axrpNO~X(unmDHCx9`3OI)EBPq|Pl-h)iNIMgXKA|C?e3~`WZB`(3 zhZXtD@$VKC??KQPm#`akg^Oja@a6x^0cGWj1eMfiwTlqGX8#~aGD_XNGeilnQKz5A zb8NA<3cMZ0F_450+{L)I`FLw-DG#8K_>=C&D}3~u00vdJBjePD2Anss%q+UWG8^Sw z`jN&e5sD!-2YkO+rX(>0_bAEbT*(S}Wk)JvW}`DZlR963PN>nmuvUTOiLpT-J^d%; zkI?DzhJ-i!%{HTP36?n*7#=4;%b23gP^(ac5?| zBSw$$Pi%0SInwBNlnb9El=11o-UW@u^+ALym!$OvP)CNI&a~C8ZQaS1ug-;~Kkjs6 zLu>mR@&omPgb7YyjPC%k3?l}5rLu>tq$vY_Zb+rrsB}ge1fOnu6V~|lh*;>+@DsXJ z-uT3*&qVQ8$68E7f0P{%o|ouUgi0xZuxrT2Rw(gWRA~BHk=%<-FnnPv%isx|k1&vk zOu4C7*YPi6g_x7i2x&SWUW&+}n&kz89sR5M#jN37sP|R;(rO<>0fIWr;R$px*$#eK zkjEs4$AFM6dE&K18iTf>f;GL(0d~lC?EzYc9uI%$a18f z-#^z3Ef1|&wGAMo(IZf7aJ05*Z&3L$k!mum0~wRZs)&*%Cs70;p50gBvD=WYin5vC z3X~K6MIln4x@zthzyk z4!m91HR)YV$_K~IcyNwC8j*r^oa3VIB_#g20&S~s6>K7g1{jh47*1FyI5FaO`FUt`;r2;d1-vMGXns zIs|M%ByuJDcu%6^c+2*)i8eQt5sA|$Z|9s)|v-??JVn7|5?wzSs{SCexreqv5vbI8`T!hXBvw|mVaF+}Hfr(AMPc# zyC-Rb;~hTE#~K43cHlz4igQAjwb(HYC1OL6|IW831cfTpWa4ODi?n%N+wL|XUwSTH z9CZTqj9E13ZiU~T4u|_&2%YQ`0@LUc7W(MC-9Ys(Xy!L`!mcVvOy>1?+adfFOkPUX z3qP_!JoIF`x6yJh{X&8U92h1GqHn=l7&BTrkL#lE&^Md{U(lG^?z2>8KeqC-YORG` zMdrL6fl>89lLqf){VUv|9VZKgax*$l#i!eq!Cv@c?frPMf*=Drkr)fHt+Q`D7?WNw z`$QmogBe%Bz%Zo#qF;ipXRHxaBsSWDeVTun1rO7ji{7P>{2g8)v%PU~&Ke literal 0 HcmV?d00001 diff --git a/etc/AtsPki/AtsPki_Idnomic.cfg_ b/etc/AtsPki/AtsPki_Idnomic.cfg_ index 0c8ecd220..d73bf6d41 100644 --- a/etc/AtsPki/AtsPki_Idnomic.cfg_ +++ b/etc/AtsPki/AtsPki_Idnomic.cfg_ @@ -19,12 +19,14 @@ LibItsPki_Pics.PICS_HEADER_HOST_EC := "ea.utopia.plugtests2019.innovation.ke LibItsPki_Pics.PICS_HEADER_HOST_ATV := "ea.utopia.plugtests2019.innovation.keynectis.net" LibItsPki_Pics.PICS_HEADER_HOST_AT := "aa.utopia.plugtests2019.innovation.keynectis.net" LibItsPki_Pics.PICS_HEADER_HOST_CA := "dc.plugtests2019.innovation.keynectis.net" +LibItsPki_Pics.PICS_HEADER_HOST_TLM := "cpoc.jrc.ec.europa.eu" LibItsPki_Pics.PICS_HTTP_POST_URI_EC := "/" LibItsPki_Pics.PICS_HTTP_POST_URI_AT := "/" LibItsPki_Pics.PICS_HTTP_POST_URI_ATV := "/" LibItsPki_Pics.PICS_HTTP_GET_URI_CTL := "/getctl/1D3C7B499A054F8C"; LibItsPki_Pics.PICS_HTTP_GET_URI_CRL := "/getcrl/1D3C7B499A054F8C"; +LibItsPki_Pics.PICS_HTTP_GET_URI_ECTL := "/data/certificates/ectl/ECTL_TEST_ETSI-PLUGTEST_6.0_2019-11-07.oer" LibItsPki_Pics.PICS_ITS_S_SIGN_NITSP256_PRIVATE_KEY := '5C25F97607DFC62972A147FAD8B7A7C939569F0F95ECD4C641724A68B51836E5'O LibItsPki_Pics.PICS_ITS_S_SIGN_NISTP256_PUBLIC_KEY := '020144E5174B0AFDA86BDB8B643B68D40030F5BDB9A9F090C64852CC3C20C9D5AD'O @@ -72,11 +74,11 @@ system.httpAtVPort.params := "HTTP(codecs=http_its:http_etsi_ieee1609dot2_codec) #system.httpAtVPort.params := "HTTP(codecs=http_its:http_etsi_ieee1609dot2_codec)/TCP(debug=1,server_mode=1,server=192.168.1.41,local_port=80)" # Multiple HTTP component ports specific to TC_SECPKI_AA_AUTHVAL_xx system.httpAtPort.params := "HTTP(codecs=http_its:http_etsi_ieee1609dot2_codec)/TCP(server=aa.utopia.plugtests2019.innovation.keynectis.net)" system.httpCaPort.params := "HTTP(codecs=http_its:http_etsi_ieee1609dot2_codec)/TCP(server=dc.plugtests2019.innovation.keynectis.net)" - +system.httpTlmPort.params := "HTTP(codecs=http_its:http_etsi_ieee1609dot2_codec)/TCP(debug=1,server=cpoc.jrc.ec.europa.eu,use_ssl=1)" [EXECUTE] # The EnrolmentResponse message shall be sent by the EA to the ITS-S across the interface at reference point S3 in response to a received EnrolmentRequest message -#ItsPki_TestCases.TC_SECPKI_EA_ENR_RCV_01_BV +ItsPki_TestCases.TC_SECPKI_EA_ENR_RCV_01_BV # Check that EA doesn't accept Enrolment rekeying request when enrolment is not permitted by signing certificate (not containing an item of type PsidSsp) #ItsPki_TestCases.TC_SECPKI_EA_ENR_RCV_02_BI_01 @@ -184,9 +186,12 @@ system.httpCaPort.params := "HTTP(codecs=http_its:http_etsi_ieee1609dot2_codec)/ #ItsPki_TestCases.TC_SECPKI_AA_AUTHVAL_01_BV # Check that the RootCA generates the Full CTL when new EA is about to be added to the Root CTL -ItsPki_TestCases.TC_RCA_CTLGEN_01_BV +#ItsPki_TestCases.TC_RCA_CTLGEN_01_BV # Check that the RootCA generates the CRL when CA certificate is about to be revoked -ItsPki_TestCases.TC_RCA_CRLGEN_02_BV +#ItsPki_TestCases.TC_RCA_CRLGEN_02_BV + +# Check that the TLM generates the ECTL when new RootCA is about to be added +#ItsPki_TestCases.TC_TLM_ECTLGEN_01_BV [MAIN_CONTROLLER] # The options herein control the behavior of MC. diff --git a/etc/AtsRSUsSimulator/AtsRSUSimulator.cfg b/etc/AtsRSUsSimulator/AtsRSUSimulator.cfg index 2281c7385..23a97d8b5 100644 --- a/etc/AtsRSUsSimulator/AtsRSUSimulator.cfg +++ b/etc/AtsRSUsSimulator/AtsRSUSimulator.cfg @@ -71,7 +71,7 @@ LibItsPki_Pics.PICS_HTTP_POST_URI_AT := "/aa/authorization" LibItsPki_Pics.PICS_HTTP_POST_URI_ATV := "/ea/authval" LibItsPki_Pics.PICS_ITS_S_SIGN_NITSP256_PRIVATE_KEY := '5C25F97607DFC62972A147FAD8B7A7C939569F0F95ECD4C641724A68B51836E5'O LibItsPki_Pics.PICS_ITS_S_SIGN_NISTP256_PUBLIC_KEY := '020144E5174B0AFDA86BDB8B643B68D40030F5BDB9A9F090C64852CC3C20C9D5AD'O -LibItsPki_Pics.PICS_ITS_S_CANONICAL_ID := '1B4CA1210123AE900BBE6C3EBAE7E87DA20DBDAB1E7B2EC0691C51C1021900AA'O +LibItsPki_Pics.PICS_ITS_S_CANONICAL_ID := '455453492D4954532D303031'O LibItsPki_Pics.PICS_TS_EA_CERTIFICATE_ID := "CERT_TS_A_EA" LibItsPki_Pics.PICS_TS_AA_CERTIFICATE_ID := "CERT_TS_A_AA" diff --git a/ttcn/AtsPki/ItsPki_TestCases.ttcn b/ttcn/AtsPki/ItsPki_TestCases.ttcn index 4090324f9..f839f1089 100644 --- a/ttcn/AtsPki/ItsPki_TestCases.ttcn +++ b/ttcn/AtsPki/ItsPki_TestCases.ttcn @@ -58,6 +58,7 @@ module ItsPki_TestCases { import from LibItsHttp_BinaryTemplates all; import from LibItsHttp_Functions all; import from LibItsHttp_TestSystem all; + import from LibItsHttp_Pics all; // LibItsPki import from LibItsPki_TypesAndValues all; @@ -8902,7 +8903,7 @@ module ItsPki_TestCases { group ca_behavior { group ctl { - + /** * @desc Check that the RootCA generates the Full CTL when new EA is about to be added to the Root CTL *
@@ -8949,7 +8950,7 @@ module ItsPki_TestCases {
         // Test adapter configuration
         
         // Preamble
-        f_init_default_headers_list(-, "ca_request", v_headers);
+        f_init_default_headers_list(PICS_HEADER_CTL_CONTENT_TYPE, "ca_request", v_headers);
         action("The RootCA is triggered to add new EA certificate (CERT_EA) in the CTL");
         f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
         
@@ -9047,7 +9048,7 @@ module ItsPki_TestCases {
         // Test adapter configuration
         
         // Preamble
-        f_init_default_headers_list(-, "ca_request", v_headers);
+        f_init_default_headers_list(PICS_HEADER_CRL_CONTENT_TYPE, "ca_request", v_headers);
         action("the RootCA is triggered to add new CA certificate (CERT_CA) to the revocation list");
         f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
         
@@ -9104,4 +9105,111 @@ module ItsPki_TestCases {
 
   } // End of group ca_behavior
 
+  group tlm_behavior {
+    
+    group ctl {
+
+      /**
+       * @desc Check that the TLM generates the ECTL when new RootCA is about to be added
+       * 
+       * Pics Selection: PICS_IUT_CA_ROLE
+       * Initial conditions: 
+       *     }
+       * Expected behaviour:
+       *     ensure that {
+       *         when {
+       *             the TLM is triggered to add new RootCA certificate (CERT_RCA) in the CTL
+       *         }
+       *         then {
+       *             the IUT issue a new CTL of type CtlFormat
+       *                 containing isFullCtl
+       *                     indicating TRUE
+       *                 and containing ctlCommands
+       *                     containing CtlCommand
+       *                         containing add
+       *                             containing rca
+       *                                 containing selfsignedRootCa
+       *                                     indicating CERT_RCA
+       *         }
+       *     }
+       * 
+ * + * @see ETSI TS 103 525-2 TP TLM_ECTLGEN_01_BV + * @reference ETSI TS 102 941, clause 6.3.1 + */ + testcase TC_TLM_ECTLGEN_01_BV() runs on ItsPkiHttp system ItsPkiHttpSystem { + // Local variables + var HeaderLines v_headers; + var HttpMessage v_response; + + // Test control + if (not PICS_IUT_CA_ROLE) { + log("*** " & testcasename() & ": PICS_IUT_CA_ROLE required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cfHttpUp_tlm(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list(PICS_HEADER_CTL_CONTENT_TYPE, "tlm_request", v_headers); + action("The TLM is triggered to add new RootCA certificate (CERT_RCA) in the CTL"); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_http_send( + v_headers, + m_http_request( + m_http_request_get( + PICS_HTTP_GET_URI_ECTL, + v_headers + ))); + tc_ac.start; + alt { + [] httpTlmPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_binary( + mw_binary_body_ieee1609dot2_data( + mw_etsiTs103097Data_signed( + mw_signedData( + -, + mw_toBeSignedData( mw_signedDataPayload ), + mw_signerIdentifier_digest + ))))))) -> value v_response { + var ToBeSignedRcaCtl v_to_be_signed_tlm_ectl; + + tc_ac.stop; + + if (f_verify_rca_ctl_response_message(v_response.response.body.binary_body.ieee1609dot2_data, true, v_to_be_signed_tlm_ectl) == false) { + log("*** " & testcasename() & ": FAIL: Failed to verify RCA message ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } else { + if (f_verify_full_ectl(v_to_be_signed_tlm_ectl) == true) { + log("*** " & testcasename() & ": PASS: ToBeSignedRcaCtl received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log("*** " & testcasename() & ": FAIL: Receive unexpected message ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cfHttpDown_tlm(); + + } // End of testcase TC_TLM_ECTLGEN_01_BV + + } // End of group ctl + + } // End of group tlm_behavior + } // End of module ItsPki_TestCases diff --git a/ttcn/AtsRSUsSimulator/ItsRSUsSimulator_Functions.ttcn b/ttcn/AtsRSUsSimulator/ItsRSUsSimulator_Functions.ttcn index d5e92a5e8..7f13b3aa0 100644 --- a/ttcn/AtsRSUsSimulator/ItsRSUsSimulator_Functions.ttcn +++ b/ttcn/AtsRSUsSimulator/ItsRSUsSimulator_Functions.ttcn @@ -1389,7 +1389,6 @@ module ItsRSUsSimulator_Functions { vc_at_counter, vc_at_certificates )); - //v_pki.done; repeat; } [] cfPort.receive { diff --git a/ttcn/LibIts b/ttcn/LibIts index 85cb2b6c7..63ccaf663 160000 --- a/ttcn/LibIts +++ b/ttcn/LibIts @@ -1 +1 @@ -Subproject commit 85cb2b6c78a91a7d1370036baa632d557c509ed4 +Subproject commit 63ccaf6630a5e2f37f949f23cdeee2cfdbbe0f48 -- GitLab