From 8b3a272f935e15fc23b551169afbb83988b382cd Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Thu, 21 Mar 2024 10:48:30 +0100 Subject: [PATCH 01/32] test-data: add predefined RSA and EC keys Automatically generated with the following bash script: ``` LIST="secp521r1 brainpoolP512r1 secp384r1 brainpoolP384r1 secp256r1 secp256k1 brainpoolP256r1 secp224r1 secp224k1 secp192r1 secp192k1 x25519 x448" for item in $LIST; do ./programs/pkey/gen_key type=ec ec_curve=$item filename="tests/data_files/ec_$item.der" format=der done LIST="1024 1026 1028 1030 2048 4096" for item in $LIST; do ./programs/pkey/gen_key type=rsa rsa_keysize=$item filename="tests/data_files/rsa_$item.der" format=der done ``` Signed-off-by: Valerio Setti --- tests/data_files/Makefile | 51 ++++++++++++++++++++++++ tests/data_files/ec_brainpoolP256r1.der | Bin 0 -> 122 bytes tests/data_files/ec_brainpoolP384r1.der | Bin 0 -> 171 bytes tests/data_files/ec_brainpoolP512r1.der | Bin 0 -> 221 bytes tests/data_files/ec_secp192k1.der | Bin 0 -> 94 bytes tests/data_files/ec_secp192r1.der | Bin 0 -> 97 bytes tests/data_files/ec_secp224k1.der | Bin 0 -> 107 bytes tests/data_files/ec_secp224r1.der | Bin 0 -> 106 bytes tests/data_files/ec_secp256k1.der | Bin 0 -> 118 bytes tests/data_files/ec_secp256r1.der | Bin 0 -> 121 bytes tests/data_files/ec_secp384r1.der | Bin 0 -> 167 bytes tests/data_files/ec_secp521r1.der | Bin 0 -> 223 bytes tests/data_files/ec_x25519.der | Bin 0 -> 48 bytes tests/data_files/ec_x448.der | Bin 0 -> 72 bytes tests/data_files/rsa_1024.der | Bin 0 -> 607 bytes tests/data_files/rsa_1026.der | Bin 0 -> 609 bytes tests/data_files/rsa_1028.der | Bin 0 -> 611 bytes tests/data_files/rsa_1030.der | Bin 0 -> 610 bytes tests/data_files/rsa_2048.der | Bin 0 -> 1191 bytes tests/data_files/rsa_4096.der | Bin 0 -> 2347 bytes 20 files changed, 51 insertions(+) create mode 100644 tests/data_files/ec_brainpoolP256r1.der create mode 100644 tests/data_files/ec_brainpoolP384r1.der create mode 100644 tests/data_files/ec_brainpoolP512r1.der create mode 100644 tests/data_files/ec_secp192k1.der create mode 100644 tests/data_files/ec_secp192r1.der create mode 100644 tests/data_files/ec_secp224k1.der create mode 100644 tests/data_files/ec_secp224r1.der create mode 100644 tests/data_files/ec_secp256k1.der create mode 100644 tests/data_files/ec_secp256r1.der create mode 100644 tests/data_files/ec_secp384r1.der create mode 100644 tests/data_files/ec_secp521r1.der create mode 100644 tests/data_files/ec_x25519.der create mode 100644 tests/data_files/ec_x448.der create mode 100644 tests/data_files/rsa_1024.der create mode 100644 tests/data_files/rsa_1026.der create mode 100644 tests/data_files/rsa_1028.der create mode 100644 tests/data_files/rsa_1030.der create mode 100644 tests/data_files/rsa_2048.der create mode 100644 tests/data_files/rsa_4096.der diff --git a/tests/data_files/Makefile b/tests/data_files/Makefile index 01d2379d1e..db568ad5ba 100644 --- a/tests/data_files/Makefile +++ b/tests/data_files/Makefile @@ -17,6 +17,7 @@ FAKETIME ?= faketime TOP_DIR = ../.. MBEDTLS_CERT_WRITE ?= $(TOP_DIR)/programs/x509/cert_write MBEDTLS_CERT_REQ ?= $(TOP_DIR)/programs/x509/cert_req +MBEDTLS_GEN_KEY ?= $(TOP_DIR)/programs/pkey/gen_key ## Build the generated test data. Note that since the final outputs @@ -718,6 +719,21 @@ rsa_pkcs1_4096_clear.pem: $(OPENSSL) genrsa -out $@ 4096 all_final += rsa_pkcs1_4096_clear.pem +### RSA keys in DER format used in test_suite_pk. +rsa_1024.der: $(MBEDTLS_GEN_KEY) + $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1024 format=der filename="$@" +rsa_1026.der: $(MBEDTLS_GEN_KEY) + $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1026 format=der filename="$@" +rsa_1028.der: $(MBEDTLS_GEN_KEY) + $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1028 format=der filename="$@" +rsa_1030.der: $(MBEDTLS_GEN_KEY) + $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1030 format=der filename="$@" +rsa_2048.der: $(MBEDTLS_GEN_KEY) + $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=2048 format=der filename="$@" +rsa_4096.der: $(MBEDTLS_GEN_KEY) + $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=4096 format=der filename="$@" +all_final += rsa_1024.der rsa_1026.der rsa_1028.der rsa_1030.der rsa_2048.der rsa_4096.der + ### ### PKCS1-encoded, encrypted RSA keys ### @@ -1189,6 +1205,41 @@ keys_rsa_all: keys_rsa_unenc keys_rsa_enc_basic keys_rsa_enc_pkcs8_v1 keys_rsa_e #### Generate various EC keys ################################################################ +### EC keys in DER format to be used in test_suite_pk. +seedfile: + ln -s $(TOP_DIR)/seedfile ./seedfile + +ec_brainpoolP256r1.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=brainpoolP256r1 format=der filename="$@" +ec_brainpoolP384r1.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=brainpoolP384r1 format=der filename="$@" +ec_brainpoolP512r1.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=brainpoolP512r1 format=der filename="$@" +ec_secp192k1.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp192k1 format=der filename="$@" +ec_secp192r1.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp192r1 format=der filename="$@" +ec_secp224k1.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp224k1 format=der filename="$@" +ec_secp224r1.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp224r1 format=der filename="$@" +ec_secp256k1.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp256k1 format=der filename="$@" +ec_secp256r1.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp256r1 format=der filename="$@" +ec_secp384r1.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp384r1 format=der filename="$@" +ec_secp521r1.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp521r1 format=der filename="$@" +ec_x25519.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=x25519 format=der filename="$@" +ec_x448.der: seedfile + $(MBEDTLS_GEN_KEY) type=ec ec_curve=x448 format=der filename="$@" +all_final += ec_brainpoolP256r1.der ec_brainpoolP384r1.der ec_brainpoolP512r1.der \ + ec_secp192k1.der ec_secp192r1.der ec_secp224k1.der ec_secp224r1.der \ + ec_secp256k1.der ec_secp256r1.der ec_secp384r1.der ec_secp521r1.der \ + ec_x25519.der ec_x448.der + ### ### PKCS8 encoded ### diff --git a/tests/data_files/ec_brainpoolP256r1.der b/tests/data_files/ec_brainpoolP256r1.der new file mode 100644 index 0000000000000000000000000000000000000000..5c9ce38a1392bc75c3b1ee1f9a5630ddcc7ba1e2 GIT binary patch literal 122 zcmV-=0EPcBcme?d1RyFTie)40l9gt(bJ2;`Ggz*wDL7nK#O+f4<-fl6a9^Mc1_>)9 z0|NpG0Rac0L<2$q1YmCorA!ZPQvVEeDXj=oGST2ZU^fibr?gBO6=shp&lKZdBr4^{ cs|c23-beUAxksn}ODl4yAfOXrRMy7GdJQQt2LJ#7 literal 0 HcmV?d00001 diff --git a/tests/data_files/ec_brainpoolP384r1.der b/tests/data_files/ec_brainpoolP384r1.der new file mode 100644 index 0000000000000000000000000000000000000000..11e393d0a7de01cee151d41051a06f745f221cd9 GIT binary patch literal 171 zcmV;c095}lfv5rj0R%7_O`^ucV#e_m^Qj#AUzn-i!^xMS ztN>)yf%7XknYufm3kC@*Bm)Bi2mt{Lp=1MM00b>g(rhZajeJSfE*@+9<~CSABIOLp zOk_kT5%mPypBN*=G$-$0zL-XYDrTo3p%99}J0I{`U2zIgqByLH&W}XE6Pus!O)M#o ZE*N|B!{r{pTQah7mDq%_X12%!K%D)iOFIAn literal 0 HcmV?d00001 diff --git a/tests/data_files/ec_brainpoolP512r1.der b/tests/data_files/ec_brainpoolP512r1.der new file mode 100644 index 0000000000000000000000000000000000000000..84fce0aa885a87cea5eb23ef2011444ffa4331b2 GIT binary patch literal 221 zcmV<303!b|f!YEA0R%vACosnfHG+RykMIJIeB-i=`OG)S)z}_Y@Z#KTTzY1Xzn^Cdo{Oh8%Tl*3_`z=5-OI(h;}pA7nau5L7j{OmZr+PZLab9kj`B@!A`7EcjiETEi0x#eC4A*o|O~hgsE5yJj XMQwy>^d1$v{{=?6$WKn+KTp8J^UY&e literal 0 HcmV?d00001 diff --git a/tests/data_files/ec_secp192k1.der b/tests/data_files/ec_secp192k1.der new file mode 100644 index 0000000000000000000000000000000000000000..2d7c72848b47718971c91ecb84696800446a6405 GIT binary patch literal 94 zcmV-k0HOadTmk_B1Q==orCh@eckh{EcaM0lJiAj z12O;vd)qa_asqcj)`zY!0D4Z@HX{{QbbRya7Klx@u#D{Gq>?=8WVpQ1m9X_b0nxd{ DNFXY= literal 0 HcmV?d00001 diff --git a/tests/data_files/ec_secp224k1.der b/tests/data_files/ec_secp224k1.der new file mode 100644 index 0000000000000000000000000000000000000000..108b52bc13b28db639babcbc4f304d3f4638a0bb GIT binary patch literal 107 zcmV-x0F?hQX#xQO1RVh7L(2ST01Xh*5%y9q8z1daQ^BYxF4qRNAy2L=Tzfdl{` zp*#aR00een`FSl>Y%}s5Q$Q0fmT>e+fN}p&YJG@$52QH6V`{Rx-Nak4N^wL_y)~3_ NDirqJ4Kz5K3Ur(~V?-ox|8qe;o9RrxTMha!etC(2z6sDvU5S)OJf0iO8$ bn=nw%kj{+zQ6<|%d?CD6cm~s+NwI+eJFYRN literal 0 HcmV?d00001 diff --git a/tests/data_files/ec_secp384r1.der b/tests/data_files/ec_secp384r1.der new file mode 100644 index 0000000000000000000000000000000000000000..29860a463bb2f6f126420ec25bb2ad1a6b2be25c GIT binary patch literal 167 zcmV;Y09gMpfusTf0R%7`HbB{}qL@ouLk z(=CbUQ{%T}P5-N)2L=Tzfdl{|p=1MM00c7?#?&WninO;&Kxw;rKtD=i;)%b%-O?R% zVuaHk0fKIz|f!A+#BLLZGpN zQy9ga$4;xg0LM&A@&uH?QG)>@Dc?P$6jf(3Gs`lEe+EXjZ^vFua?IRd<<7Qn?M=dW ZITmw{B`~A){VWvhQ6X{W-ghm+94B8?UuXaT literal 0 HcmV?d00001 diff --git a/tests/data_files/ec_x25519.der b/tests/data_files/ec_x25519.der new file mode 100644 index 0000000000000000000000000000000000000000..5c1c32d6b40c8a6b1d0ef64a74845dc63889c78c GIT binary patch literal 48 zcmV-00MGw0E&>4nFa-t!D`jp3A_O3?sJ%b_v*M@9p%jl)1|YKCNk6ag(aoksh$07c GMa_75UlQ#A literal 0 HcmV?d00001 diff --git a/tests/data_files/ec_x448.der b/tests/data_files/ec_x448.der new file mode 100644 index 0000000000000000000000000000000000000000..849d4b83add45af0868d0c6354773208d09ff429 GIT binary patch literal 72 zcmV-O0Jr}zMgjo$l0e;NV=PGVU)^DbB%i*Sl}*^uApVYPxuH z7lOF(aPQwpQ`huN<&KGkT9TkAOaOk(A>Mczw615Umvqr!7F!?y?hgV30RRC4fq*6! zsj*zt1ltopMF-f#hPNYiJZ7k(k?`TlQxn=|EHn&y*IJm?Gk=S(Y?I>BVe_7foX-*1 zJ~iy(V9{}>!gk#9itoLoSNg#}$XyjfC9N}^divtT-}yS#g;3i*eBBG`pC3;7YE}=F zDI~zLmw=}Nv`LW4t!X1h^}j_aP>}*b0LcsE@h0G;xU5zS%9-=Mm=ieGK-s2N^8JaFr(kQL`1^Ul72O zJ<#RoFpDl%siyZ8gRCIdT@t@P3uCBm`J~{JH*B3q?yD?$^wyz7|3ffI68L~>;+#WY z0zgedZGl0+cx2$PW7W_S~=y6-UsMOnLHaTn+g6QHjCtbW;}wLAF4l z4uwVp5rm*g7p?%`JP28V0zhq$;`kqY_B4+haq3J;e##|`3r8%w2Cz(IBO%h{!z1jR z3p=%Asg6<$7!z!Des|@SVJO4t#FlvCQKHsMWiZ v(*ObthOo|`!YN}1m70GCu7#YG>E(S<8`+Ww4vL~bUVE2E#4Ek1Z#-`XO~V_P literal 0 HcmV?d00001 diff --git a/tests/data_files/rsa_1028.der b/tests/data_files/rsa_1028.der new file mode 100644 index 0000000000000000000000000000000000000000..97c658c54e3164280aca63bd664ad2b1f41b04e1 GIT binary patch literal 611 zcmV-p0-XIYf&yOx0RRGlfeNIW5x!InbRJPQA@iLc&2p!(Ak_kL)%*Whwm5eWO1kdM zGC;`q`rgkPElMNQd#3{R$t|%{JA+(yjtx0nLz5kKCB9z=~}EbYnxT+ znBKYrb6mK_k0aUShiqwfDz;?42Gm&$Di(|p zfai;-cySQ@VekYy*^&mZ)H|b^6u#*KK?8n7#wFPsbv%ZEOBnJfQMSr2P}unHalcd1 zj)=R}s-Mft%G0zJ@fD+uniyCx2ZJ;^;Ec_xWV)*~{H7PGFgpT40}J;3LZeRt6MtB5)s`ct>YR2dTnSPE_WF2r&;j|qGhH0tlM4^oF4}2;CtR$(9 ziS{^cTE46|4w<6)J^{KR0zm=ndmjA-s_c;238^q#=uLeE1iAzDDYT0v>&4o@G?qx4 z!!%^QkFg#25ts`SKf=;z-K5FQCUL`&{ago}H)6E{K?7qbna06d?sFJ5#mY)`@*{4B xq4xp488~f17}G|>al*O4i7>15Bdnv_@#o6-p3UlNre}42ea=`?`tMo%{4Z#NC;0#X literal 0 HcmV?d00001 diff --git a/tests/data_files/rsa_1030.der b/tests/data_files/rsa_1030.der new file mode 100644 index 0000000000000000000000000000000000000000..754109d80fe4a705e27ed009405ccf3ba4062200 GIT binary patch literal 610 zcmV-o0-gOZf&yLw0RRGlfiAvGO)6~BW$V0ZOSL`Gyq4OrY1YF|zFKJW!?M$bQ!qu4 z9kAd0n(OgAM5d~;s2^hv(r)6^v76MIyzloj9N%whu3&Xz8}}kM|9(_raHzOkt3X(u z$H!+8N~%5G8#Vr!k%RIapeysJKte7X2B#za(8XMR`k*vkFOi6Z-MIn-0RRC4fq?;U zC#TqVkMZMmMpvk*%M~VT9kp*F{Y_jrb<>$H;qcs2&J?pE$&!otytmUZrAGkvGoHBh z?-plNb0eqi<($9l+Ca3IXO*tCH!1LxRlSD9|7<0F{)*7nKGCLMeW-jo&A;M&%tALg zg`0*BqKohZ^9$wiR5DYgazmxGCfR`kK?eh~TT&s_V(@b*0m-&~F6YBMiQqhS4+>d$ zhkK{O6r2#}PV+fX1vag|7~yb)y!BU6JMb@)HxvF)Wwwwg?^yyt2C4GD@`;#znL8(? zLF(oj9n;S=%@<6uNcEo%aKELn>KNuuRU>(+EixWA%^IE67fmmOuh=(uLwjwWzF$K1 zVFEx_+k6#L@u6Xa5Pi3%4ipf*&eha(*et9Od({EdF?|uYcbLcr1F78QHio&7*}Bpj zF(9`Sb_sd>86$FAGQY6`K?4qqlWu>V+UKH@A|<8DUFw$6^CzuqdE31Rbcj{)e8Dy# z*N6z1^LY;kdy{j8IZe_NT`P#>ksoV}GKiy$M4^vK@BF7yGkBM-J1O5MEgfCPNmWzOIgf_z-%HX6PdA#X!0=r&tM(_INmG;q zOpcD_uD0;nlmzRHcR!2lYB8A@e%66i+Re$q+b?t9-a&5WKZkg2qs)|J9-^(PF@^l$ zEF1-8o?6|i{Hq&ugs3CU`r5e%DkaWH$i2RZE3Z9UOv(X`WJurIc`C!fN(wE`k@{rYuyCSy)qi4MV z2*Fxeg+qbqwC(?Sb>?|6jN=YrsM4orNR87zCU>BJ)kmD2K?<8tiEHy>(Hz z6 zOw6C-ql2x{mQEADTMh^xqyZIKIF>7VBp`qfE=eZJSNAnBwX7TKBKnxHCP40I#y-s@ z4wI*6k->PMlbegqvL?dhJB<~P)B%E>gWp$4bU-oHgPwY+gFPR*)ujY=uY)>?0)c@5 z!|*f0QPap*?z-YNNB-Y60Rzb&dZkIjecs7n18Ev%EK{+%M%`#}7qg}Sf5Sk;YS9pl zZCnXzedzOdI>=@t^YhRl*tKz+(wN8fo`YC3l!4`v z1=6tQDC9O8PNX+lgr^*hYZ7MMVAw#^Hh^&s86X5NC~re7}*?3#^x#lX|Ky~A8H&N&WLll`!Lhv@hC4Q z;9cM!)L-$J-{pkST*Z&}j*(QVtY=94>rg|5Po1!N3Ai%Iy4cQs8sRV_Q0>Ut-hbNB z0)c=++{p~umxh{KAoA#QwF$m3rgjg5?z@RLe!KxgsIC<-S1%&{N)0)s|+zn+Zo}Di(8)GJl-fsI+2E* zw&nafcz0b>KJ6!U2As_b&ujA!_jd3*kFW6pfq-E!5#z(b>3-1Ez+Yt4YjfzyKlX8} zE5w(o->x>;1HPqID}Z2iHoXAu7Gd( zWK$S4TeULBs)fEC!-eo?GB<(e zFOjIBfQKROO*WlXA6&hv-JKCJtyWU+aoHQ@=K+N(*Ux5dw}xu!Rcb^Ce|DnE5)7q3 z^{e)G7=-o(M%gzrD905GL4tAz%ESBOmE<-bOmROj8sL@L%u*e}pol0k3--N#W6}4x z7XtKijB2NuDjGCZ3PH+wLnh*kojO^U`md0Cy@M()a7^a-XWH5@jM9n*vv?VxPkdMV z5UoT{af$zArHbSkv0^upa80;si*@Q<>aLb}H+6Vpv9vo?qI=;1*A&M00h(huM*~S? zD=NjhW+jh}wYU%crn0bjxp8f9PmLPAkgzsHbi^IIXKA13Q})ApiI|7L>vs6tha)NS zB@8f;bzvkbWV`c0XPON@5_`91&AOTj20fIVE`DNbRQjj4a0kbBsTrm5Xgn6b-2BUmyH4S~_ z=GST<3kRm6VZBL8HXOrK3DbSa@>TY7@gEV!_q^=8+!phhT!-bjK>Mh+S|kKN#@!E& z93->Lut)W169+qMxEYrBlv3;}sqL9t)zH@dN&^)xtd37C>we^}&SzkP4-R;Jn!2+R zq&3?3+&(B0UiNVZgiX2uHlo$kx6W_J)fJQ()0yi+#pi*GLwp??9Ys+!iq+-ZDs_IJ z9}?agF0^B}NVdbR0)hbn0O5--S2o!-{qN&o~xxV3dy|%MU=sRl)7+@mM4|=d=Xb-$>q`VF1~{ z2u`zEac?hfz3cIO6gdA{C}g%F=bIZS=l0^~i9fob#Tosgevl7)74!T2>5O|_tWJh- z6Go-Ggr)K`24T`?e2?^dWrZGDV>IN@SHt1Hz~2EeIT`kfAgn*bxZht=?rtHuX^sDa z(c8m&FPyO;HsaS{B>#F?V<*)gt&4menHD%F%I>F0j!T)UHkG_M2FL0-`K&6((6GkKk8wp4kB@^LX$ z4GXkbF?`P$LGaU<{S?Pr^?m2opq6ASm}KIxeo{!W^n(U3+NOi3dXTCGyUe0tRuWof3`!tFu;YuuM zj1%Mp_fhnUJS}>iNz>XeAo$W)PcM!9lGkS-Z&2XRNt%I=C72pEhj zoCesX?eYdb<%s;1#+E)wYuCb-`K)Nr##IElUfKykzqrQdK)T!`17U_?+XQH~nF(D% z!$P!c0zpE#eql+wudJK6i=L0cc#iOec8Ow9?2uaGb|w;5b-Sy1ge8 z*uGom7)&zMMo-fz81PaOeLF3BT!Lm}OMrk|5G*lYO{UN&@m}jLciz>)PCZG-Nljk+ z7jP*jf5oKy#y`7LSu+BH0RU)|D5$r_-dhnFGTHz|UM z28n+aeOJ&UGu$jzs7C83WD-X^tD3fr6ib;JI{E(MD97rMO=~*uEVSlR9Zx_rcEB^8 z=ktbtBVey@zyy5AQ(0!4kQHh%s{S-r555yZ`Q>yyMPzELa0$0Oo@2M9Si~dqxZZ)t zJ>{_eV7q!FU40sp9LiLNIqgnjlZMCMnAn61qP(yziriV@d9r#(1wv~vG?&CWs?3!- R=`3(6@d_=a+nWZ6#2-xyg4h56 literal 0 HcmV?d00001 From dfc1915d393b91df9afe8c53b3162dcffa91dee1 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Thu, 21 Mar 2024 10:53:44 +0100 Subject: [PATCH 02/32] test_suite_pk: modify pk_genkey() in order to use predefined keys Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 136 +++++++--------------------- 1 file changed, 34 insertions(+), 102 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 442a362351..c39b8f7e59 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -26,9 +26,6 @@ /* Needed for the definition of MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE. */ #include "pkwrite.h" -/* Used for properly sizing the key buffer in pk_genkey_ec() */ -#include "psa_util_internal.h" - #define RSA_KEY_SIZE MBEDTLS_RSA_GEN_KEY_MIN_BITS #define RSA_KEY_LEN (MBEDTLS_RSA_GEN_KEY_MIN_BITS/8) @@ -185,120 +182,55 @@ #define MBEDTLS_MD_ALG_FOR_TEST MBEDTLS_MD_SHA512 #endif -#if defined(MBEDTLS_PK_USE_PSA_EC_DATA) -static int pk_genkey_ec(mbedtls_pk_context *pk, mbedtls_ecp_group_id grp_id) -{ - psa_status_t status; - psa_key_attributes_t key_attr = PSA_KEY_ATTRIBUTES_INIT; - size_t curve_bits; - psa_ecc_family_t curve = mbedtls_ecc_group_to_psa(grp_id, &curve_bits); - int ret; +const char *curve_names_lut[] = { + [MBEDTLS_ECP_DP_SECP192R1] = "secp192r1", + [MBEDTLS_ECP_DP_SECP256R1] = "secp256r1", + [MBEDTLS_ECP_DP_SECP384R1] = "secp384r1", + [MBEDTLS_ECP_DP_SECP521R1] = "secp521r1", + [MBEDTLS_ECP_DP_BP256R1] = "brainpoolP256r1", + [MBEDTLS_ECP_DP_BP384R1] = "brainpoolP384r1", + [MBEDTLS_ECP_DP_BP512R1] = "brainpoolP512r1", + [MBEDTLS_ECP_DP_CURVE25519] = "x25519", + [MBEDTLS_ECP_DP_SECP192K1] = "secp192k1", + [MBEDTLS_ECP_DP_SECP256K1] = "secp256k1", + [MBEDTLS_ECP_DP_CURVE448] = "x448", +}; - if (curve == 0) { - return MBEDTLS_ERR_PK_BAD_INPUT_DATA; - } - - psa_set_key_type(&key_attr, PSA_KEY_TYPE_ECC_KEY_PAIR(curve)); - psa_set_key_bits(&key_attr, curve_bits); - psa_key_usage_t usage = PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY; - psa_algorithm_t sign_alg = 0; - psa_algorithm_t derive_alg = 0; - if (mbedtls_pk_get_type(pk) != MBEDTLS_PK_ECDSA) { - usage |= PSA_KEY_USAGE_DERIVE; - derive_alg = PSA_ALG_ECDH; - } - if (mbedtls_pk_get_type(pk) != MBEDTLS_PK_ECKEY_DH && - curve != PSA_ECC_FAMILY_MONTGOMERY) { - usage |= PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE; -#if defined(MBEDTLS_ECDSA_DETERMINISTIC) - sign_alg = PSA_ALG_DETERMINISTIC_ECDSA(PSA_ALG_ANY_HASH); -#else - sign_alg = PSA_ALG_ECDSA(PSA_ALG_ANY_HASH); -#endif - } - if (derive_alg != 0) { - psa_set_key_algorithm(&key_attr, derive_alg); - if (sign_alg != 0) { - psa_set_key_enrollment_algorithm(&key_attr, sign_alg); - } - } else { - psa_set_key_algorithm(&key_attr, sign_alg); - } - psa_set_key_usage_flags(&key_attr, usage); - - status = psa_generate_key(&key_attr, &pk->priv_id); - if (status != PSA_SUCCESS) { - return MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE; - } - - status = psa_export_public_key(pk->priv_id, pk->pub_raw, sizeof(pk->pub_raw), - &pk->pub_raw_len); - if (status != PSA_SUCCESS) { - ret = MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE; - goto exit; - } - - pk->ec_family = curve; - pk->ec_bits = curve_bits; - - return 0; - -exit: - status = psa_destroy_key(pk->priv_id); - return (ret != 0) ? ret : psa_pk_status_to_mbedtls(status); -} -#endif /* MBEDTLS_PK_USE_PSA_EC_DATA */ - -/** Generate a key of the desired type. +/** Fill the provided PK context with a proper key. + * + * Instead of generating a new key every time, use predefined ones to speed up + * testing. + * This function assumes that the PK context has already been setup + * (mbedtls_pk_setup() has been called on the PK context ) so that it + * can determine the key type to be loaded from the PK context itself. * * \param pk The PK object to fill. It must have been initialized * with mbedtls_pk_setup(). * \param curve_or_keybits - For RSA keys, the key size in bits. * - For EC keys, the curve (\c MBEDTLS_ECP_DP_xxx). * - * \return The status from the underlying type-specific key - * generation function. - * \return -1 if the key type is not recognized. + * \return 0 on success or a negative value otherwise. */ static int pk_genkey(mbedtls_pk_context *pk, int curve_or_keybits) { - (void) pk; - (void) curve_or_keybits; + char file_name[128] = { 0 }; + int ret; + /* Dump pk_info since this is overridden by mbedtls_pk_parse_keyfile(). */ + const mbedtls_pk_info_t *original_pk_info = pk->pk_info; -#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_GENPRIME) if (mbedtls_pk_get_type(pk) == MBEDTLS_PK_RSA) { - return mbedtls_rsa_gen_key(mbedtls_pk_rsa(*pk), - mbedtls_test_rnd_std_rand, NULL, - curve_or_keybits, 3); + sprintf(file_name, "data_files/rsa_%d.der", curve_or_keybits); + } else if (mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECKEY || + mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECKEY_DH || + mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECDSA) { + sprintf(file_name, "data_files/ec_%s.der", curve_names_lut[curve_or_keybits]); } -#endif -#if defined(MBEDTLS_PK_HAVE_ECC_KEYS) - if (mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECKEY || - mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECKEY_DH || - mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECDSA) { - int ret; -#if defined(MBEDTLS_PK_USE_PSA_EC_DATA) - ret = pk_genkey_ec(pk, curve_or_keybits); - if (ret != 0) { - return ret; - } + ret = mbedtls_pk_parse_keyfile(pk, file_name, NULL, mbedtls_test_rnd_std_rand, NULL); + /* Restore pk_info. */ + pk->pk_info = original_pk_info; - return 0; -#else - ret = mbedtls_ecp_group_load(&mbedtls_pk_ec_rw(*pk)->grp, curve_or_keybits); - if (ret != 0) { - return ret; - } - return mbedtls_ecp_gen_keypair(&mbedtls_pk_ec_rw(*pk)->grp, - &mbedtls_pk_ec_rw(*pk)->d, - &mbedtls_pk_ec_rw(*pk)->Q, - mbedtls_test_rnd_std_rand, NULL); -#endif /* MBEDTLS_PK_USE_PSA_EC_DATA */ - - } -#endif /* MBEDTLS_PK_HAVE_ECC_KEYS */ - return -1; + return ret; } #if defined(MBEDTLS_PSA_CRYPTO_C) From 8bfa7fd93033eb6acdd01c66d131d3c919a058d1 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Fri, 22 Mar 2024 12:06:44 +0100 Subject: [PATCH 03/32] test_suite_pk: use a single helper function to generate PSA keys Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 117 ++++++++++------------------ 1 file changed, 42 insertions(+), 75 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index c39b8f7e59..cfb1838893 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -539,9 +539,11 @@ psa_status_t pk_psa_import_key(unsigned char *key_data, size_t key_len, return status; } -psa_status_t pk_psa_genkey_generic(psa_key_type_t type, size_t bits, - psa_key_usage_t usage, psa_algorithm_t alg, - mbedtls_svc_key_id_t *key) +psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, + psa_key_usage_t usage, psa_algorithm_t alg, + psa_algorithm_t enrollment_alg, + mbedtls_svc_key_id_t persistent_key_id, + mbedtls_svc_key_id_t *key) { psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; psa_status_t status; @@ -550,42 +552,16 @@ psa_status_t pk_psa_genkey_generic(psa_key_type_t type, size_t bits, psa_set_key_usage_flags(&attributes, usage); psa_set_key_algorithm(&attributes, alg); + psa_set_key_enrollment_algorithm(&attributes, enrollment_alg); psa_set_key_type(&attributes, type); psa_set_key_bits(&attributes, bits); + if (!mbedtls_svc_key_id_is_null(persistent_key_id)) { + psa_set_key_id(&attributes, persistent_key_id); + } status = psa_generate_key(&attributes, key); return status; } - -/* - * Generate an ECC key using PSA and return the key identifier of that key, - * or 0 if the key generation failed. - * The key uses NIST P-256 and is usable for signing with SHA-256. - */ -mbedtls_svc_key_id_t pk_psa_genkey_ecc(void) -{ - mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT; - - pk_psa_genkey_generic(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, - PSA_KEY_USAGE_SIGN_HASH, PSA_ALG_ECDSA(PSA_ALG_SHA_256), - &key); - - return key; -} - -/* - * Generate an RSA key using PSA and return the key identifier of that key, - * or 0 if the key generation failed. - */ -mbedtls_svc_key_id_t pk_psa_genkey_rsa(void) -{ - mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT; - - pk_psa_genkey_generic(PSA_KEY_TYPE_RSA_KEY_PAIR, 1024, PSA_KEY_USAGE_SIGN_HASH, - PSA_ALG_RSA_PKCS1V15_SIGN_RAW, &key); - - return key; -} #endif /* MBEDTLS_PSA_CRYPTO_C */ /* END_HEADER */ @@ -620,11 +596,15 @@ void pk_psa_utils(int key_is_rsa) mbedtls_pk_init(&pk); if (key_is_rsa) { - bitlen = 1024; /* hardcoded in genkey() */ - key = pk_psa_genkey_rsa(); + bitlen = 1024; + key = pk_psa_genkey(PSA_KEY_TYPE_RSA_KEY_PAIR, 1024, PSA_KEY_USAGE_SIGN_HASH, + PSA_ALG_RSA_PKCS1V15_SIGN_RAW, PSA_ALG_NONE, + PSA_KEY_ID_NULL, &key); } else { - bitlen = 256; /* hardcoded in genkey() */ - key = pk_psa_genkey_ecc(); + bitlen = 256; + key = pk_psa_genkey(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, + PSA_KEY_USAGE_SIGN_HASH, PSA_ALG_ECDSA(PSA_ALG_SHA_256), + PSA_ALG_NONE, PSA_KEY_ID_NULL, &key); } if (mbedtls_svc_key_id_is_null(key)) { goto exit; @@ -709,16 +689,8 @@ void pk_can_do_ext(int opaque_key, int key_type, int key_usage, int key_alg, USE_PSA_INIT(); if (opaque_key == 1) { - psa_set_key_usage_flags(&attributes, key_usage); - psa_set_key_algorithm(&attributes, key_alg); - if (key_alg2 != 0) { - psa_set_key_enrollment_algorithm(&attributes, key_alg2); - } - psa_set_key_type(&attributes, key_type); - psa_set_key_bits(&attributes, curve_or_keybits); - - PSA_ASSERT(psa_generate_key(&attributes, &key)); - + PSA_ASSERT(pk_psa_genkey(key_type, curve_or_keybits, key_usage, + key_alg, key_alg2, PSA_KEY_ID_NULL, &key)); if (mbedtls_svc_key_id_is_null(key)) { goto exit; } @@ -2234,17 +2206,18 @@ void pk_import_into_psa_lifetime(int from_opaque, #if defined(MBEDTLS_USE_PSA_CRYPTO) psa_key_type_t from_psa_type = PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY); - psa_set_key_type(&attributes, from_psa_type); - psa_set_key_bits(&attributes, MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS); - psa_set_key_usage_flags( - &attributes, + psa_key_usage_t psa_key_usage = (from_exportable ? PSA_KEY_USAGE_EXPORT : PSA_KEY_USAGE_COPY) | - PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH); - psa_set_key_algorithm(&attributes, PSA_ALG_ECDH); + PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH; + mbedtls_svc_key_id_t persistent_key_id = MBEDTLS_SVC_KEY_ID_INIT; + if (from_persistent) { - psa_set_key_id(&attributes, mbedtls_svc_key_id_make(0, 1)); + persistent_key_id = mbedtls_svc_key_id_make(0, 1); } - PSA_ASSERT(psa_generate_key(&attributes, &old_key_id)); + + PSA_ASSERT(pk_psa_genkey(from_psa_type, MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS, + psa_key_usage, PSA_ALG_ECDH, PSA_ALG_NONE, + persistent_key_id, &old_key_id)); TEST_EQUAL(mbedtls_pk_setup_opaque(&pk, old_key_id), 0); psa_reset_key_attributes(&attributes); #else @@ -2320,12 +2293,8 @@ void pk_get_psa_attributes_opaque(int from_type_arg, int from_bits_arg, PSA_INIT(); - psa_set_key_type(&attributes, from_type); - psa_set_key_bits(&attributes, bits); - psa_set_key_usage_flags(&attributes, from_usage); - psa_set_key_algorithm(&attributes, alg); - psa_set_key_enrollment_algorithm(&attributes, 42); - PSA_ASSERT(psa_generate_key(&attributes, &old_key_id)); + PSA_ASSERT(pk_psa_genkey(from_type, bits, from_usage, alg, 42, + PSA_KEY_ID_NULL, &old_key_id)); TEST_EQUAL(mbedtls_pk_setup_opaque(&pk, old_key_id), 0); psa_key_type_t expected_psa_type = @@ -2417,11 +2386,8 @@ void pk_import_into_psa_opaque(int from_type, int from_bits, PSA_INIT(); - psa_set_key_type(&from_attributes, from_type); - psa_set_key_bits(&from_attributes, from_bits); - psa_set_key_usage_flags(&from_attributes, from_usage); - psa_set_key_algorithm(&from_attributes, from_alg); - PSA_ASSERT(psa_generate_key(&from_attributes, &from_key_id)); + PSA_ASSERT(pk_psa_genkey(from_type, from_bits, from_usage, from_alg, PSA_ALG_NONE, + PSA_KEY_ID_NULL, &from_key_id)); TEST_EQUAL(mbedtls_pk_setup_opaque(&pk, from_key_id), 0); psa_set_key_type(&to_attributes, to_type); @@ -2488,8 +2454,9 @@ void pk_copy_from_psa_fail(void) #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE) /* Generate a key type that is not handled by the PK module. */ - PSA_ASSERT(pk_psa_genkey_generic(PSA_KEY_TYPE_DH_KEY_PAIR(PSA_DH_FAMILY_RFC7919), 2048, - PSA_KEY_USAGE_EXPORT, PSA_ALG_NONE, &key_id)); + PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_DH_KEY_PAIR(PSA_DH_FAMILY_RFC7919), 2048, + PSA_KEY_USAGE_EXPORT, PSA_ALG_NONE, PSA_ALG_NONE, + PSA_KEY_ID_NULL, &key_id)); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_BAD_INPUT_DATA); TEST_EQUAL(mbedtls_pk_copy_public_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_BAD_INPUT_DATA); psa_destroy_key(key_id); @@ -2498,8 +2465,8 @@ void pk_copy_from_psa_fail(void) #if defined(MBEDTLS_PK_HAVE_ECC_KEYS) && defined(PSA_WANT_ECC_SECP_R1_256) && \ defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE) /* Generate an EC key which cannot be exported. */ - PSA_ASSERT(pk_psa_genkey_generic(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, - 0, PSA_ALG_NONE, &key_id)); + PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, + 0, PSA_ALG_NONE, PSA_ALG_NONE, PSA_KEY_ID_NULL, &key_id)); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_TYPE_MISMATCH); psa_destroy_key(key_id); #endif /* MBEDTLS_PK_HAVE_ECC_KEYS && PSA_WANT_ECC_SECP_R1_256 && @@ -2521,11 +2488,11 @@ void pk_copy_from_psa_builtin_fail() mbedtls_pk_init(&pk_ctx); PSA_INIT(); - PSA_ASSERT(pk_psa_genkey_generic(PSA_KEY_TYPE_RSA_KEY_PAIR, - PSA_VENDOR_RSA_GENERATE_MIN_KEY_BITS, - PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT, - PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256), - &key_id)); + PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_RSA_KEY_PAIR, + PSA_VENDOR_RSA_GENERATE_MIN_KEY_BITS, + PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT, + PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256), + PSA_KEY_ID_NULL, &key_id)); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_BAD_INPUT_DATA); exit: mbedtls_pk_free(&pk_ctx); From cdb5a7d4f40e009ede4f1c9db2d8a9fc06f6a712 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Mon, 25 Mar 2024 13:00:51 +0100 Subject: [PATCH 04/32] test_suite_pk: modify pk_psa_genkey() in order to use predefined keys Use predefined keys instead of generating them at runtime as already done for pk_genkey(). Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 145 +++++++++++++++++++++------- 1 file changed, 109 insertions(+), 36 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index cfb1838893..162bdc5f4f 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -21,6 +21,8 @@ #include "psa/crypto.h" #include "mbedtls/psa_util.h" +#include "pkwrite.h" + #include /* Needed for the definition of MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE. */ @@ -184,6 +186,7 @@ const char *curve_names_lut[] = { [MBEDTLS_ECP_DP_SECP192R1] = "secp192r1", + [MBEDTLS_ECP_DP_SECP224R1] = "secp224r1", [MBEDTLS_ECP_DP_SECP256R1] = "secp256r1", [MBEDTLS_ECP_DP_SECP384R1] = "secp384r1", [MBEDTLS_ECP_DP_SECP521R1] = "secp521r1", @@ -196,10 +199,11 @@ const char *curve_names_lut[] = { [MBEDTLS_ECP_DP_CURVE448] = "x448", }; +#if defined(MBEDTLS_PK_PARSE_C) /** Fill the provided PK context with a proper key. * - * Instead of generating a new key every time, use predefined ones to speed up - * testing. + * This is a fake implementation of key generation because instead of generating + * a new key every time, we use predefined ones to speed up testing. * This function assumes that the PK context has already been setup * (mbedtls_pk_setup() has been called on the PK context ) so that it * can determine the key type to be loaded from the PK context itself. @@ -233,6 +237,94 @@ static int pk_genkey(mbedtls_pk_context *pk, int curve_or_keybits) return ret; } +/** Create a PSA key of the desired type and properties. + * + * This is similar to pk_genkey() above in the sense that it does not really + * generates a key every time, but it takes the key from a file instead in + * order to speedup testing. + * + * \param type PSA key type. Only RSA and EC keys are supported. + * \param bits PSA key bit size. + * \param usage PSA key usage flags. + * \param alg PSA key primary algorithm. + * \param enrollment_alg PSA key enrollment algorithm. + * \param persistent_key_id PSA key ID for persistent keys. Set to PSA_KEY_ID_NULL + * for volatile keys. + * \param[out] key Identifier of the "generated" (actually imported) PSA key. + */ +psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, + psa_key_usage_t usage, psa_algorithm_t alg, + psa_algorithm_t enrollment_alg, + mbedtls_svc_key_id_t persistent_key_id, + mbedtls_svc_key_id_t *key) +{ + psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + psa_status_t status = PSA_ERROR_GENERIC_ERROR; + mbedtls_pk_context pk; + char file_name[128] = { 0 }; + unsigned char key_data[MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE] = { 0 }; + size_t key_data_len; + unsigned char *key_data_start; + int ret; + + mbedtls_pk_init(&pk); + + /* Get the name of the key file to load. */ + if (PSA_KEY_TYPE_IS_RSA(type)) { + sprintf(file_name, "data_files/rsa_%lu.der", bits); + } else if (PSA_KEY_TYPE_IS_ECC(type)) { + psa_ecc_family_t ec_family = PSA_KEY_TYPE_ECC_GET_FAMILY(type); + mbedtls_ecp_group_id grp_id = mbedtls_ecc_group_from_psa(ec_family, bits); + sprintf(file_name, "data_files/ec_%s.der", curve_names_lut[grp_id]); + } else { + TEST_FAIL("Only EC or RSA key type is supported."); + } + /* Parse the key file and write the key material to the key_data buffer. */ + TEST_EQUAL(mbedtls_pk_parse_keyfile(&pk, file_name, NULL, mbedtls_test_rnd_std_rand, NULL), 0); + if (mbedtls_pk_get_type(&pk) == MBEDTLS_PK_RSA) { +#if defined(MBEDTLS_PK_WRITE_C) + ret = mbedtls_pk_write_key_der(&pk, key_data, sizeof(key_data)); + TEST_ASSERT(ret > 0); + key_data_len = (size_t) ret; +#else + TEST_FAIL("RSA is unsupported"); +#endif /* MBEDTLS_PK_WRITE_C */ + } else if (mbedtls_pk_get_type(&pk) == MBEDTLS_PK_ECKEY) { +#if defined(MBEDTLS_PK_USE_EC_DATA) + PSA_ASSERT(psa_export_key(pk->priv_id, key_data, sizeof(key_data), &key_data_len)); +#elif defined(MBEDTLS_PK_HAVE_ECC_KEYS) + const mbedtls_ecp_keypair *ec_ctx = mbedtls_pk_ec_ro(pk); + TEST_EQUAL(mbedtls_mpi_write_binary(&(ec_ctx->d), key_data, sizeof(key_data)), 0); + key_data_len = PSA_BITS_TO_BYTES(mbedtls_mpi_bitlen(&(ec_ctx->d))); +#else /* !MBEDTLS_PK_USE_EC_DATA && !MBEDTLS_PK_HAVE_ECC_KEYS */ + TEST_FAIL("EC is unsupported"); +#endif /* */ + } else { + TEST_FAIL("Unknown key type"); + } + /* Data was written to the end of the key_data buffer so we shift that to + * the beginnig. */ + key_data_start = key_data + sizeof(key_data) - key_data_len; + memmove(key_data, key_data_start, key_data_len); + + /* Import the key into PSA. */ + *key = MBEDTLS_SVC_KEY_ID_INIT; + psa_set_key_usage_flags(&attributes, usage); + psa_set_key_algorithm(&attributes, alg); + psa_set_key_enrollment_algorithm(&attributes, enrollment_alg); + psa_set_key_type(&attributes, type); + psa_set_key_bits(&attributes, bits); + if (!mbedtls_svc_key_id_is_null(persistent_key_id)) { + psa_set_key_id(&attributes, persistent_key_id); + } + status = psa_import_key(&attributes, key_data, key_data_len, key); + +exit: + mbedtls_pk_free(&pk); + return status; +} +#endif /* MBEDTLS_PK_PARSE_C */ + #if defined(MBEDTLS_PSA_CRYPTO_C) static psa_key_usage_t pk_get_psa_attributes_implied_usage( psa_key_usage_t expected_usage) @@ -538,30 +630,6 @@ psa_status_t pk_psa_import_key(unsigned char *key_data, size_t key_len, return status; } - -psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, - psa_key_usage_t usage, psa_algorithm_t alg, - psa_algorithm_t enrollment_alg, - mbedtls_svc_key_id_t persistent_key_id, - mbedtls_svc_key_id_t *key) -{ - psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; - psa_status_t status; - - *key = MBEDTLS_SVC_KEY_ID_INIT; - - psa_set_key_usage_flags(&attributes, usage); - psa_set_key_algorithm(&attributes, alg); - psa_set_key_enrollment_algorithm(&attributes, enrollment_alg); - psa_set_key_type(&attributes, type); - psa_set_key_bits(&attributes, bits); - if (!mbedtls_svc_key_id_is_null(persistent_key_id)) { - psa_set_key_id(&attributes, persistent_key_id); - } - status = psa_generate_key(&attributes, key); - - return status; -} #endif /* MBEDTLS_PSA_CRYPTO_C */ /* END_HEADER */ @@ -597,14 +665,14 @@ void pk_psa_utils(int key_is_rsa) if (key_is_rsa) { bitlen = 1024; - key = pk_psa_genkey(PSA_KEY_TYPE_RSA_KEY_PAIR, 1024, PSA_KEY_USAGE_SIGN_HASH, - PSA_ALG_RSA_PKCS1V15_SIGN_RAW, PSA_ALG_NONE, - PSA_KEY_ID_NULL, &key); + PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_RSA_KEY_PAIR, 1024, PSA_KEY_USAGE_SIGN_HASH, + PSA_ALG_RSA_PKCS1V15_SIGN_RAW, PSA_ALG_NONE, + PSA_KEY_ID_NULL, &key)); } else { bitlen = 256; - key = pk_psa_genkey(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, - PSA_KEY_USAGE_SIGN_HASH, PSA_ALG_ECDSA(PSA_ALG_SHA_256), - PSA_ALG_NONE, PSA_KEY_ID_NULL, &key); + PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, + PSA_KEY_USAGE_SIGN_HASH, PSA_ALG_ECDSA(PSA_ALG_SHA_256), + PSA_ALG_NONE, PSA_KEY_ID_NULL, &key)); } if (mbedtls_svc_key_id_is_null(key)) { goto exit; @@ -2453,10 +2521,15 @@ void pk_copy_from_psa_fail(void) MBEDTLS_ERR_PK_BAD_INPUT_DATA); #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE) - /* Generate a key type that is not handled by the PK module. */ - PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_DH_KEY_PAIR(PSA_DH_FAMILY_RFC7919), 2048, - PSA_KEY_USAGE_EXPORT, PSA_ALG_NONE, PSA_ALG_NONE, - PSA_KEY_ID_NULL, &key_id)); + /* Generate a key type that is not handled by the PK module. + * Note: we cannot use pk_psa_genkey() in this case because that function relies + * on PK module functionality and PK module does not support DH keys. */ + psa_key_attributes_t key_attr = PSA_KEY_ATTRIBUTES_INIT; + + psa_set_key_type(&key_attr, PSA_KEY_TYPE_DH_KEY_PAIR(PSA_DH_FAMILY_RFC7919)); + psa_set_key_bits(&key_attr, 2048); + psa_set_key_usage_flags(&key_attr, PSA_KEY_USAGE_EXPORT); + psa_generate_key(&key_attr, &key_id); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_BAD_INPUT_DATA); TEST_EQUAL(mbedtls_pk_copy_public_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_BAD_INPUT_DATA); psa_destroy_key(key_id); From 5ec934119df6faad81025337c8807e5be1332eda Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Mon, 25 Mar 2024 13:10:13 +0100 Subject: [PATCH 05/32] test_suite_pk: remove PSA_WANT_KEY_TYPE_[ECC/RSA]_KEY_PAIR_GENERATE dependencies EC and RSA keys are now loaded from a file so there is no need to generate them at runtime. Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.data | 88 ++++++++++++++--------------- tests/suites/test_suite_pk.function | 8 +-- 2 files changed, 47 insertions(+), 49 deletions(-) diff --git a/tests/suites/test_suite_pk.data b/tests/suites/test_suite_pk.data index a929c82f4f..3ec488ec81 100644 --- a/tests/suites/test_suite_pk.data +++ b/tests/suites/test_suite_pk.data @@ -1152,51 +1152,51 @@ depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_ENCRYPT:0:0:PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque ECC pair, 0 & SIGN_MESSAGE (bad policy) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:0:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque ECC pair, SIGN_MESSAGE & SIGN_MESSAGE -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque ECC pair, SIGN|VERIFY & SIGN_MESSAGE -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque ECC pair, SIGN|DECRYPT & SIGN_MESSAGE -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT PSA attributes for pk: opaque ECC pair, SIGN|... & SIGN_MESSAGE -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque ECC pair, SIGN_HASH & SIGN_HASH -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque ECC pair, ... & DERIVE -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_KEY_USAGE_DERIVE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DERIVE PSA attributes for pk: opaque ECC pair, ... & DECRYPT (bad) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_KEY_USAGE_DECRYPT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque ECC pair, ... & EXPORT (bad) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_ECDH:PSA_KEY_USAGE_EXPORT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque ECC pair->public, VERIFY_MESSAGE & VERIFY_MESSAGE -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_VERIFY_MESSAGE:0:0:PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque ECC pair->public, VERIFY_HASH & VERIFY_HASH -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_VERIFY_HASH:0:0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque ECC pair->public, ENCRYPT & ENCRYPT (bad) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256 pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_ENCRYPT:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_ENCRYPT:MBEDTLS_ERR_PK_TYPE_MISMATCH:0:0 PSA import into PSA: RSA pair to ECC (bad) @@ -1395,149 +1395,149 @@ depends_on:MBEDTLS_USE_PSA_CRYPTO pk_import_into_psa_lifetime:1:1:0:1:1 PSA import into PSA: opaque RSA, COPY (ok) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 PSA import into PSA: opaque RSA, EXPORT (ok) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 PSA import into PSA: opaque RSA, no COPY/EXPORT (bad) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:MBEDTLS_ERR_PK_TYPE_MISMATCH # Detail that isn't precisely documented: since this copies the key, # the new key has the intersection of the usage flags. PSA import into PSA: opaque RSA, COPY|EXPORT, different usage (restricted) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 # Detail that isn't precisely documented: since this copies the key, # the new key has the intersection of the usage flags. PSA import into PSA: opaque RSA, COPY, different usage (restricted) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 # Detail that isn't precisely documented: since this exports the key, # the new key has all the requested usage flags. PSA import into PSA: opaque RSA, EXPORT, different usage (ok) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 PSA import into PSA: opaque RSA, COPY|EXPORT, different algorithm (ok) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0 PSA import into PSA: opaque RSA, COPY, different algorithm (bad) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):MBEDTLS_ERR_PK_TYPE_MISMATCH PSA import into PSA: opaque RSA, EXPORT, different algorithm (ok) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0 PSA import into PSA: opaque RSA, implicit bits (ok) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:0:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 PSA import into PSA: opaque RSA, different bits (bad) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 8:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA import into PSA: opaque RSA, different type (bad) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:PSA_KEY_TYPE_HMAC:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA import into PSA: opaque RSA to public (ok) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_PUBLIC_KEY:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 PSA import into PSA: opaque RSA to public, implicit bits (ok) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_PUBLIC_KEY:0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 # MBEDTLS_ERR_PK_INVALID_ALG is the error that results from our translation # of PSA errors. In this case MBEDTLS_ERR_PK_TYPE_MISMATCH would probably # be more appropriate. PSA import into PSA: opaque RSA to public, different bits (bad) -depends_on:PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE:PSA_WANT_ALG_RSA_PKCS1V15_SIGN +depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_PUBLIC_KEY:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 8:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:MBEDTLS_ERR_PK_INVALID_ALG PSA import into PSA: opaque ECC, COPY (ok) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):0 PSA import into PSA: opaque ECC, EXPORT (ok) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):0 PSA import into PSA: opaque ECC, no COPY/EXPORT (bad) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):MBEDTLS_ERR_PK_TYPE_MISMATCH # Detail that isn't precisely documented: since this copies the key, # the new key has the intersection of the usage flags. PSA import into PSA: opaque ECC, COPY|EXPORT, different usage (restricted) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):0 # Detail that isn't precisely documented: since this copies the key, # the new key has the intersection of the usage flags. PSA import into PSA: opaque ECC, COPY, different usage (restricted) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):0 # Detail that isn't precisely documented: since this exports the key, # the new key has all the requested usage flags. PSA import into PSA: opaque ECC, EXPORT, different usage (ok) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):0 PSA import into PSA: opaque ECC, COPY|EXPORT, different algorithm (ok) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_DETERMINISTIC_ECDSA(PSA_ALG_SHA_256):0 PSA import into PSA: opaque ECC, COPY, different algorithm (bad) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_DETERMINISTIC_ECDSA(PSA_ALG_SHA_256):MBEDTLS_ERR_PK_TYPE_MISMATCH PSA import into PSA: opaque ECC, EXPORT, different algorithm (ok) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_DETERMINISTIC_ECDSA(PSA_ALG_SHA_256):0 PSA import into PSA: opaque ECC, implicit bits (ok) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):0:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):0 PSA import into PSA: opaque ECC, different bits (bad) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS + 8:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):MBEDTLS_ERR_PK_TYPE_MISMATCH PSA import into PSA: opaque ECC, different type (bad) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:PSA_KEY_TYPE_HMAC:MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA import into PSA: opaque ECC, different family (bad) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_HAVE_TWO_FAMILIES:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_HAVE_TWO_FAMILIES:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ANOTHER_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA import into PSA: opaque ECC to public (ok) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_PUBLIC_KEY(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):0 PSA import into PSA: opaque ECC to public, implicit bits (ok) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_PUBLIC_KEY(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):0 # MBEDTLS_ERR_PK_INVALID_ALG is the error that results from our translation # of PSA errors. In this case MBEDTLS_ERR_PK_TYPE_MISMATCH would probably # be more appropriate. PSA import into PSA: opaque ECC to public, different bits (bad) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):PSA_KEY_TYPE_ECC_PUBLIC_KEY(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS + 8:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):MBEDTLS_ERR_PK_INVALID_ALG PSA import into PSA: opaque ECC to public, different family (bad) -depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_HAVE_TWO_FAMILIES:PSA_WANT_ALG_ECDSA +depends_on:MBEDTLS_TEST_PSA_ECC_HAVE_TWO_FAMILIES:PSA_WANT_ALG_ECDSA pk_import_into_psa_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(MBEDTLS_TEST_PSA_ECC_ONE_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:PSA_KEY_TYPE_ECC_PUBLIC_KEY(MBEDTLS_TEST_PSA_ECC_ANOTHER_FAMILY):MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:MBEDTLS_ERR_PK_TYPE_MISMATCH Copy from PSA: use wrong parameters diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 162bdc5f4f..535c13b958 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -2253,7 +2253,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:MBEDTLS_PSA_CRYPTO_STORAGE_C */ +/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:MBEDTLS_PSA_CRYPTO_STORAGE_C */ void pk_import_into_psa_lifetime(int from_opaque, int from_persistent, /* when from opaque */ int from_exportable, /* when from opaque */ @@ -2535,15 +2535,13 @@ void pk_copy_from_psa_fail(void) psa_destroy_key(key_id); #endif /* PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE */ -#if defined(MBEDTLS_PK_HAVE_ECC_KEYS) && defined(PSA_WANT_ECC_SECP_R1_256) && \ - defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE) +#if defined(MBEDTLS_PK_HAVE_ECC_KEYS) && defined(PSA_WANT_ECC_SECP_R1_256) /* Generate an EC key which cannot be exported. */ PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, 0, PSA_ALG_NONE, PSA_ALG_NONE, PSA_KEY_ID_NULL, &key_id)); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_TYPE_MISMATCH); psa_destroy_key(key_id); -#endif /* MBEDTLS_PK_HAVE_ECC_KEYS && PSA_WANT_ECC_SECP_R1_256 && - PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE */ +#endif /* MBEDTLS_PK_HAVE_ECC_KEYS && PSA_WANT_ECC_SECP_R1_256 */ exit: mbedtls_pk_free(&pk_ctx); From cca2d437d266688c39033eb03490f702dc15d5c5 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Wed, 27 Mar 2024 11:19:50 +0100 Subject: [PATCH 06/32] test_suite_pk: use look-up table instead of file for the predefined keys This helps dropping dependency on FS_IO. This commit also removes DER files that were previusly added and which are not more needed/used. Signed-off-by: Valerio Setti --- tests/data_files/Makefile | 51 ---- tests/data_files/ec_brainpoolP256r1.der | Bin 122 -> 0 bytes tests/data_files/ec_brainpoolP384r1.der | Bin 171 -> 0 bytes tests/data_files/ec_brainpoolP512r1.der | Bin 221 -> 0 bytes tests/data_files/ec_secp192k1.der | Bin 94 -> 0 bytes tests/data_files/ec_secp192r1.der | Bin 97 -> 0 bytes tests/data_files/ec_secp224k1.der | Bin 107 -> 0 bytes tests/data_files/ec_secp224r1.der | Bin 106 -> 0 bytes tests/data_files/ec_secp256k1.der | Bin 118 -> 0 bytes tests/data_files/ec_secp256r1.der | Bin 121 -> 0 bytes tests/data_files/ec_secp384r1.der | Bin 167 -> 0 bytes tests/data_files/ec_secp521r1.der | Bin 223 -> 0 bytes tests/data_files/ec_x25519.der | Bin 48 -> 0 bytes tests/data_files/ec_x448.der | Bin 72 -> 0 bytes tests/data_files/rsa_1024.der | Bin 607 -> 0 bytes tests/data_files/rsa_1026.der | Bin 609 -> 0 bytes tests/data_files/rsa_1028.der | Bin 611 -> 0 bytes tests/data_files/rsa_1030.der | Bin 610 -> 0 bytes tests/data_files/rsa_2048.der | Bin 1191 -> 0 bytes tests/data_files/rsa_4096.der | Bin 2347 -> 0 bytes tests/src/test_keys.h | 311 ++++++++++++++++++++++++ tests/suites/test_suite_pk.function | 127 ++++++---- 22 files changed, 391 insertions(+), 98 deletions(-) delete mode 100644 tests/data_files/ec_brainpoolP256r1.der delete mode 100644 tests/data_files/ec_brainpoolP384r1.der delete mode 100644 tests/data_files/ec_brainpoolP512r1.der delete mode 100644 tests/data_files/ec_secp192k1.der delete mode 100644 tests/data_files/ec_secp192r1.der delete mode 100644 tests/data_files/ec_secp224k1.der delete mode 100644 tests/data_files/ec_secp224r1.der delete mode 100644 tests/data_files/ec_secp256k1.der delete mode 100644 tests/data_files/ec_secp256r1.der delete mode 100644 tests/data_files/ec_secp384r1.der delete mode 100644 tests/data_files/ec_secp521r1.der delete mode 100644 tests/data_files/ec_x25519.der delete mode 100644 tests/data_files/ec_x448.der delete mode 100644 tests/data_files/rsa_1024.der delete mode 100644 tests/data_files/rsa_1026.der delete mode 100644 tests/data_files/rsa_1028.der delete mode 100644 tests/data_files/rsa_1030.der delete mode 100644 tests/data_files/rsa_2048.der delete mode 100644 tests/data_files/rsa_4096.der create mode 100644 tests/src/test_keys.h diff --git a/tests/data_files/Makefile b/tests/data_files/Makefile index db568ad5ba..01d2379d1e 100644 --- a/tests/data_files/Makefile +++ b/tests/data_files/Makefile @@ -17,7 +17,6 @@ FAKETIME ?= faketime TOP_DIR = ../.. MBEDTLS_CERT_WRITE ?= $(TOP_DIR)/programs/x509/cert_write MBEDTLS_CERT_REQ ?= $(TOP_DIR)/programs/x509/cert_req -MBEDTLS_GEN_KEY ?= $(TOP_DIR)/programs/pkey/gen_key ## Build the generated test data. Note that since the final outputs @@ -719,21 +718,6 @@ rsa_pkcs1_4096_clear.pem: $(OPENSSL) genrsa -out $@ 4096 all_final += rsa_pkcs1_4096_clear.pem -### RSA keys in DER format used in test_suite_pk. -rsa_1024.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1024 format=der filename="$@" -rsa_1026.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1026 format=der filename="$@" -rsa_1028.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1028 format=der filename="$@" -rsa_1030.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1030 format=der filename="$@" -rsa_2048.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=2048 format=der filename="$@" -rsa_4096.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=4096 format=der filename="$@" -all_final += rsa_1024.der rsa_1026.der rsa_1028.der rsa_1030.der rsa_2048.der rsa_4096.der - ### ### PKCS1-encoded, encrypted RSA keys ### @@ -1205,41 +1189,6 @@ keys_rsa_all: keys_rsa_unenc keys_rsa_enc_basic keys_rsa_enc_pkcs8_v1 keys_rsa_e #### Generate various EC keys ################################################################ -### EC keys in DER format to be used in test_suite_pk. -seedfile: - ln -s $(TOP_DIR)/seedfile ./seedfile - -ec_brainpoolP256r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=brainpoolP256r1 format=der filename="$@" -ec_brainpoolP384r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=brainpoolP384r1 format=der filename="$@" -ec_brainpoolP512r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=brainpoolP512r1 format=der filename="$@" -ec_secp192k1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp192k1 format=der filename="$@" -ec_secp192r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp192r1 format=der filename="$@" -ec_secp224k1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp224k1 format=der filename="$@" -ec_secp224r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp224r1 format=der filename="$@" -ec_secp256k1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp256k1 format=der filename="$@" -ec_secp256r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp256r1 format=der filename="$@" -ec_secp384r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp384r1 format=der filename="$@" -ec_secp521r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp521r1 format=der filename="$@" -ec_x25519.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=x25519 format=der filename="$@" -ec_x448.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=x448 format=der filename="$@" -all_final += ec_brainpoolP256r1.der ec_brainpoolP384r1.der ec_brainpoolP512r1.der \ - ec_secp192k1.der ec_secp192r1.der ec_secp224k1.der ec_secp224r1.der \ - ec_secp256k1.der ec_secp256r1.der ec_secp384r1.der ec_secp521r1.der \ - ec_x25519.der ec_x448.der - ### ### PKCS8 encoded ### diff --git a/tests/data_files/ec_brainpoolP256r1.der b/tests/data_files/ec_brainpoolP256r1.der deleted file mode 100644 index 5c9ce38a1392bc75c3b1ee1f9a5630ddcc7ba1e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmV-=0EPcBcme?d1RyFTie)40l9gt(bJ2;`Ggz*wDL7nK#O+f4<-fl6a9^Mc1_>)9 z0|NpG0Rac0L<2$q1YmCorA!ZPQvVEeDXj=oGST2ZU^fibr?gBO6=shp&lKZdBr4^{ cs|c23-beUAxksn}ODl4yAfOXrRMy7GdJQQt2LJ#7 diff --git a/tests/data_files/ec_brainpoolP384r1.der b/tests/data_files/ec_brainpoolP384r1.der deleted file mode 100644 index 11e393d0a7de01cee151d41051a06f745f221cd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmV;c095}lfv5rj0R%7_O`^ucV#e_m^Qj#AUzn-i!^xMS ztN>)yf%7XknYufm3kC@*Bm)Bi2mt{Lp=1MM00b>g(rhZajeJSfE*@+9<~CSABIOLp zOk_kT5%mPypBN*=G$-$0zL-XYDrTo3p%99}J0I{`U2zIgqByLH&W}XE6Pus!O)M#o ZE*N|B!{r{pTQah7mDq%_X12%!K%D)iOFIAn diff --git a/tests/data_files/ec_brainpoolP512r1.der b/tests/data_files/ec_brainpoolP512r1.der deleted file mode 100644 index 84fce0aa885a87cea5eb23ef2011444ffa4331b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmV<303!b|f!YEA0R%vACosnfHG+RykMIJIeB-i=`OG)S)z}_Y@Z#KTTzY1Xzn^Cdo{Oh8%Tl*3_`z=5-OI(h;}pA7nau5L7j{OmZr+PZLab9kj`B@!A`7EcjiETEi0x#eC4A*o|O~hgsE5yJj XMQwy>^d1$v{{=?6$WKn+KTp8J^UY&e diff --git a/tests/data_files/ec_secp192k1.der b/tests/data_files/ec_secp192k1.der deleted file mode 100644 index 2d7c72848b47718971c91ecb84696800446a6405..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94 zcmV-k0HOadTmk_B1Q==orCh@eckh{EcaM0lJiAj z12O;vd)qa_asqcj)`zY!0D4Z@HX{{QbbRya7Klx@u#D{Gq>?=8WVpQ1m9X_b0nxd{ DNFXY= diff --git a/tests/data_files/ec_secp224k1.der b/tests/data_files/ec_secp224k1.der deleted file mode 100644 index 108b52bc13b28db639babcbc4f304d3f4638a0bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107 zcmV-x0F?hQX#xQO1RVh7L(2ST01Xh*5%y9q8z1daQ^BYxF4qRNAy2L=Tzfdl{` zp*#aR00een`FSl>Y%}s5Q$Q0fmT>e+fN}p&YJG@$52QH6V`{Rx-Nak4N^wL_y)~3_ NDirqJ4Kz5K3Ur(~V?-ox|8qe;o9RrxTMha!etC(2z6sDvU5S)OJf0iO8$ bn=nw%kj{+zQ6<|%d?CD6cm~s+NwI+eJFYRN diff --git a/tests/data_files/ec_secp384r1.der b/tests/data_files/ec_secp384r1.der deleted file mode 100644 index 29860a463bb2f6f126420ec25bb2ad1a6b2be25c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmV;Y09gMpfusTf0R%7`HbB{}qL@ouLk z(=CbUQ{%T}P5-N)2L=Tzfdl{|p=1MM00c7?#?&WninO;&Kxw;rKtD=i;)%b%-O?R% zVuaHk0fKIz|f!A+#BLLZGpN zQy9ga$4;xg0LM&A@&uH?QG)>@Dc?P$6jf(3Gs`lEe+EXjZ^vFua?IRd<<7Qn?M=dW ZITmw{B`~A){VWvhQ6X{W-ghm+94B8?UuXaT diff --git a/tests/data_files/ec_x25519.der b/tests/data_files/ec_x25519.der deleted file mode 100644 index 5c1c32d6b40c8a6b1d0ef64a74845dc63889c78c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmV-00MGw0E&>4nFa-t!D`jp3A_O3?sJ%b_v*M@9p%jl)1|YKCNk6ag(aoksh$07c GMa_75UlQ#A diff --git a/tests/data_files/ec_x448.der b/tests/data_files/ec_x448.der deleted file mode 100644 index 849d4b83add45af0868d0c6354773208d09ff429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmV-O0Jr}zMgjo$l0e;NV=PGVU)^DbB%i*Sl}*^uApVYPxuH z7lOF(aPQwpQ`huN<&KGkT9TkAOaOk(A>Mczw615Umvqr!7F!?y?hgV30RRC4fq*6! zsj*zt1ltopMF-f#hPNYiJZ7k(k?`TlQxn=|EHn&y*IJm?Gk=S(Y?I>BVe_7foX-*1 zJ~iy(V9{}>!gk#9itoLoSNg#}$XyjfC9N}^divtT-}yS#g;3i*eBBG`pC3;7YE}=F zDI~zLmw=}Nv`LW4t!X1h^}j_aP>}*b0LcsE@h0G;xU5zS%9-=Mm=ieGK-s2N^8JaFr(kQL`1^Ul72O zJ<#RoFpDl%siyZ8gRCIdT@t@P3uCBm`J~{JH*B3q?yD?$^wyz7|3ffI68L~>;+#WY z0zgedZGl0+cx2$PW7W_S~=y6-UsMOnLHaTn+g6QHjCtbW;}wLAF4l z4uwVp5rm*g7p?%`JP28V0zhq$;`kqY_B4+haq3J;e##|`3r8%w2Cz(IBO%h{!z1jR z3p=%Asg6<$7!z!Des|@SVJO4t#FlvCQKHsMWiZ v(*ObthOo|`!YN}1m70GCu7#YG>E(S<8`+Ww4vL~bUVE2E#4Ek1Z#-`XO~V_P diff --git a/tests/data_files/rsa_1028.der b/tests/data_files/rsa_1028.der deleted file mode 100644 index 97c658c54e3164280aca63bd664ad2b1f41b04e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 611 zcmV-p0-XIYf&yOx0RRGlfeNIW5x!InbRJPQA@iLc&2p!(Ak_kL)%*Whwm5eWO1kdM zGC;`q`rgkPElMNQd#3{R$t|%{JA+(yjtx0nLz5kKCB9z=~}EbYnxT+ znBKYrb6mK_k0aUShiqwfDz;?42Gm&$Di(|p zfai;-cySQ@VekYy*^&mZ)H|b^6u#*KK?8n7#wFPsbv%ZEOBnJfQMSr2P}unHalcd1 zj)=R}s-Mft%G0zJ@fD+uniyCx2ZJ;^;Ec_xWV)*~{H7PGFgpT40}J;3LZeRt6MtB5)s`ct>YR2dTnSPE_WF2r&;j|qGhH0tlM4^oF4}2;CtR$(9 ziS{^cTE46|4w<6)J^{KR0zm=ndmjA-s_c;238^q#=uLeE1iAzDDYT0v>&4o@G?qx4 z!!%^QkFg#25ts`SKf=;z-K5FQCUL`&{ago}H)6E{K?7qbna06d?sFJ5#mY)`@*{4B xq4xp488~f17}G|>al*O4i7>15Bdnv_@#o6-p3UlNre}42ea=`?`tMo%{4Z#NC;0#X diff --git a/tests/data_files/rsa_1030.der b/tests/data_files/rsa_1030.der deleted file mode 100644 index 754109d80fe4a705e27ed009405ccf3ba4062200..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmV-o0-gOZf&yLw0RRGlfiAvGO)6~BW$V0ZOSL`Gyq4OrY1YF|zFKJW!?M$bQ!qu4 z9kAd0n(OgAM5d~;s2^hv(r)6^v76MIyzloj9N%whu3&Xz8}}kM|9(_raHzOkt3X(u z$H!+8N~%5G8#Vr!k%RIapeysJKte7X2B#za(8XMR`k*vkFOi6Z-MIn-0RRC4fq?;U zC#TqVkMZMmMpvk*%M~VT9kp*F{Y_jrb<>$H;qcs2&J?pE$&!otytmUZrAGkvGoHBh z?-plNb0eqi<($9l+Ca3IXO*tCH!1LxRlSD9|7<0F{)*7nKGCLMeW-jo&A;M&%tALg zg`0*BqKohZ^9$wiR5DYgazmxGCfR`kK?eh~TT&s_V(@b*0m-&~F6YBMiQqhS4+>d$ zhkK{O6r2#}PV+fX1vag|7~yb)y!BU6JMb@)HxvF)Wwwwg?^yyt2C4GD@`;#znL8(? zLF(oj9n;S=%@<6uNcEo%aKELn>KNuuRU>(+EixWA%^IE67fmmOuh=(uLwjwWzF$K1 zVFEx_+k6#L@u6Xa5Pi3%4ipf*&eha(*et9Od({EdF?|uYcbLcr1F78QHio&7*}Bpj zF(9`Sb_sd>86$FAGQY6`K?4qqlWu>V+UKH@A|<8DUFw$6^CzuqdE31Rbcj{)e8Dy# z*N6z1^LY;kdy{j8IZe_NT`P#>ksoV}GKiy$M4^vK@BF7yGkBM-J1O5MEgfCPNmWzOIgf_z-%HX6PdA#X!0=r&tM(_INmG;q zOpcD_uD0;nlmzRHcR!2lYB8A@e%66i+Re$q+b?t9-a&5WKZkg2qs)|J9-^(PF@^l$ zEF1-8o?6|i{Hq&ugs3CU`r5e%DkaWH$i2RZE3Z9UOv(X`WJurIc`C!fN(wE`k@{rYuyCSy)qi4MV z2*Fxeg+qbqwC(?Sb>?|6jN=YrsM4orNR87zCU>BJ)kmD2K?<8tiEHy>(Hz z6 zOw6C-ql2x{mQEADTMh^xqyZIKIF>7VBp`qfE=eZJSNAnBwX7TKBKnxHCP40I#y-s@ z4wI*6k->PMlbegqvL?dhJB<~P)B%E>gWp$4bU-oHgPwY+gFPR*)ujY=uY)>?0)c@5 z!|*f0QPap*?z-YNNB-Y60Rzb&dZkIjecs7n18Ev%EK{+%M%`#}7qg}Sf5Sk;YS9pl zZCnXzedzOdI>=@t^YhRl*tKz+(wN8fo`YC3l!4`v z1=6tQDC9O8PNX+lgr^*hYZ7MMVAw#^Hh^&s86X5NC~re7}*?3#^x#lX|Ky~A8H&N&WLll`!Lhv@hC4Q z;9cM!)L-$J-{pkST*Z&}j*(QVtY=94>rg|5Po1!N3Ai%Iy4cQs8sRV_Q0>Ut-hbNB z0)c=++{p~umxh{KAoA#QwF$m3rgjg5?z@RLe!KxgsIC<-S1%&{N)0)s|+zn+Zo}Di(8)GJl-fsI+2E* zw&nafcz0b>KJ6!U2As_b&ujA!_jd3*kFW6pfq-E!5#z(b>3-1Ez+Yt4YjfzyKlX8} zE5w(o->x>;1HPqID}Z2iHoXAu7Gd( zWK$S4TeULBs)fEC!-eo?GB<(e zFOjIBfQKROO*WlXA6&hv-JKCJtyWU+aoHQ@=K+N(*Ux5dw}xu!Rcb^Ce|DnE5)7q3 z^{e)G7=-o(M%gzrD905GL4tAz%ESBOmE<-bOmROj8sL@L%u*e}pol0k3--N#W6}4x z7XtKijB2NuDjGCZ3PH+wLnh*kojO^U`md0Cy@M()a7^a-XWH5@jM9n*vv?VxPkdMV z5UoT{af$zArHbSkv0^upa80;si*@Q<>aLb}H+6Vpv9vo?qI=;1*A&M00h(huM*~S? zD=NjhW+jh}wYU%crn0bjxp8f9PmLPAkgzsHbi^IIXKA13Q})ApiI|7L>vs6tha)NS zB@8f;bzvkbWV`c0XPON@5_`91&AOTj20fIVE`DNbRQjj4a0kbBsTrm5Xgn6b-2BUmyH4S~_ z=GST<3kRm6VZBL8HXOrK3DbSa@>TY7@gEV!_q^=8+!phhT!-bjK>Mh+S|kKN#@!E& z93->Lut)W169+qMxEYrBlv3;}sqL9t)zH@dN&^)xtd37C>we^}&SzkP4-R;Jn!2+R zq&3?3+&(B0UiNVZgiX2uHlo$kx6W_J)fJQ()0yi+#pi*GLwp??9Ys+!iq+-ZDs_IJ z9}?agF0^B}NVdbR0)hbn0O5--S2o!-{qN&o~xxV3dy|%MU=sRl)7+@mM4|=d=Xb-$>q`VF1~{ z2u`zEac?hfz3cIO6gdA{C}g%F=bIZS=l0^~i9fob#Tosgevl7)74!T2>5O|_tWJh- z6Go-Ggr)K`24T`?e2?^dWrZGDV>IN@SHt1Hz~2EeIT`kfAgn*bxZht=?rtHuX^sDa z(c8m&FPyO;HsaS{B>#F?V<*)gt&4menHD%F%I>F0j!T)UHkG_M2FL0-`K&6((6GkKk8wp4kB@^LX$ z4GXkbF?`P$LGaU<{S?Pr^?m2opq6ASm}KIxeo{!W^n(U3+NOi3dXTCGyUe0tRuWof3`!tFu;YuuM zj1%Mp_fhnUJS}>iNz>XeAo$W)PcM!9lGkS-Z&2XRNt%I=C72pEhj zoCesX?eYdb<%s;1#+E)wYuCb-`K)Nr##IElUfKykzqrQdK)T!`17U_?+XQH~nF(D% z!$P!c0zpE#eql+wudJK6i=L0cc#iOec8Ow9?2uaGb|w;5b-Sy1ge8 z*uGom7)&zMMo-fz81PaOeLF3BT!Lm}OMrk|5G*lYO{UN&@m}jLciz>)PCZG-Nljk+ z7jP*jf5oKy#y`7LSu+BH0RU)|D5$r_-dhnFGTHz|UM z28n+aeOJ&UGu$jzs7C83WD-X^tD3fr6ib;JI{E(MD97rMO=~*uEVSlR9Zx_rcEB^8 z=ktbtBVey@zyy5AQ(0!4kQHh%s{S-r555yZ`Q>yyMPzELa0$0Oo@2M9Si~dqxZZ)t zJ>{_eV7q!FU40sp9LiLNIqgnjlZMCMnAn61qP(yziriV@d9r#(1wv~vG?&CWs?3!- R=`3(6@d_=a+nWZ6#2-xyg4h56 diff --git a/tests/src/test_keys.h b/tests/src/test_keys.h new file mode 100644 index 0000000000..21737b247a --- /dev/null +++ b/tests/src/test_keys.h @@ -0,0 +1,311 @@ +/** + * Predefined keys to be used in test_suite_pk. + * + * They were automatically generated with the following bash script: + * + * ``` + * LIST="secp521r1 brainpoolP512r1 secp384r1 brainpoolP384r1 secp256r1 secp256k1 + * brainpoolP256r1 secp224r1 secp224k1 secp192r1 secp192k1 x25519 x448" + * + * for item in $LIST; do + * ./programs/pkey/gen_key type=ec ec_curve=$item filename="tests/data_files/ec_$item.der" format=der + * done + * + * LIST="1024 1026 1028 1030 2048 4096" + * + * for item in $LIST; do + * ./programs/pkey/gen_key type=rsa rsa_keysize=$item filename="tests/data_files/rsa_$item.der" format=der + * done + * ``` + */ + +struct rsa_key { + int bits; + const char *key; +}; + +struct rsa_key rsa_key_data_lut[] = { + { 1024, + "3082025b020100028181009a1c55b1d24441a3a752f8e9d08b3392f2e95b" + "741468627cce9eee9c089928b98f77a1f3b0e4abb35552838071e4f853a5" + "b9dd04ca939240dd66632c48f15fdd6186249fc0043ef52a97d7bb6fecf4" + "be5d0e6aba78731782b8f070efdf4853d7f44ce58e89855a92a0274c007e" + "cd21de781ab4ae67a89774d160165b2000ee0f02030100010281802616a9" + "b15cd404db13404507d8c486b723753c66a8a291f0e1ca5313da662c340c" + "7ad75a98d6337f8baf6c93e2d261f39e8a9ccf11d83e35ece260d171a7c2" + "76dcf28aefbda457fac13fc85d154325ad339d7afae2c4dff93ad58550db" + "3e7cdd0bea9f1f4ef96a560f942924c0b19780a702b44990caad692346f5" + "bf45295091024100c90be3f126e0a4b8ac560bca99f3bd980842de6f90fa" + "f1e32bc9b029efd7ae8a5f6defa8195e3d3c70ebaa91d2cee080a93d4e7e" + "7f89dea09623dc7ce7aa8351024100c43c242651b315de5f10c0923dd0e5" + "e8308b2e57a9a6f71583ac20d65d12bf3f0b63a86ef9a4e093376c9d48ee" + "ab2c79f4d6a144ff43304912f8806ae29c435f02404d426d8141c0786ca3" + "8599986d1b36d3d2f0e78c1639e974b4621879b53abc4f5ea6dfbf48a867" + "7defa310f462ffaf54a234f61234aee5c7ee8aaf73ac8f6151024019076e" + "b8f07cbe1251dfca201d005302ad86630fcd54bd792205475ef01a1f0884" + "845e8c610d1593d162ea20ce4848f0f93892f340f7a9e5f8247804aa08b2" + "5302405f19b2ef1b2452e9a5edb032b673bd3e277ebc3f777a922b22c913" + "7d4028626b0445db61f42a99b4e5f28c3faf9a774604db172092eee0fdef" + "9526f7aec8a856" }, + { 1026, + "3082025d0201000281810344ca3e3712ee43d1ea5d493baa485d94fee503" + "323d37dc49b907b11b6b534669b2e572123ab6b5b8223b87e22d60c3be86" + "19f6a39f1d76f581f4dda46701628a6dff5316c6efb81bdcbe2cc20173cd" + "75c076b7ec84a61b6b80cffc16fa045cf68346013ed639e93708bf264072" + "63bc6a39ace26cf0eb24e2c0e6597fbab1f9bb0203010001028181010d06" + "b085e8522dffb90790d9dbdf342708e3fbe915017693452791eb2cd0331d" + "1c64e40db44eb591a37fdc29fd48d4e5d61b56ce3803b3112f5cd83d58d8" + "7b22b818641bba62adf3d5ca44f8523221b1068639ad865e7a7e6fc69aa2" + "1091fdf1a325d1b2c6a0ddd1f27883f01aa15b0b193311d357776b6ce52c" + "51ac1d8c0601024101ec7ae8715bbda8d4db6636396c1582e8e234275dc9" + "d272b0c31848f96dd201f4cc01ac857e25ce2b316ae1798c83a9786c2f8c" + "f71d3cbf2db13861814c9ea481024101b2fa7cd232925b355dda2d5f10a2" + "f0a05aa91ba74be5c088444d681e1dc0b2c85acfec84c1470233aa4bb5c9" + "db0b48853a410eb7d58b07afda91c54012da103b02410169dcc9ccf986fb" + "76241c0f7dd3f05e777636b23254e88083676701bfdd34f1610941b59d85" + "1a8c49ea8ec94c41b640a10e8546041184a04917ae00df3c08598102406d" + "90e2f81f7cf6348f1b71ea4c4a7eca258c0b472cbb06b04c642321d2e4c3" + "23ec9c0b3bb563a98e520b18136c757f22eff58b3b8b32a61109c1462a49" + "955c1902401e737a46f09dbc770e7c6ee0b1cce304a8d5bb93d300020c86" + "b0ce9fc2296307959a7f07ae859c94e9e57d511bd992080e8aa23f5e7b97" + "47c42bbda86f3c6f06" }, + { 1028, + "3082025f0201000281810aa49a11be540d741e513621f39d1ecd72a7b020" + "d50272d5fbff59b638770f4abaeecc3240c8f8fadecf1a2d4a23d47ba702" + "f5c92db1533b835c768e0d395c43931d7525c56aa71266a5dbd7b4c87c96" + "52536cd520e61762573274897f3ad77b83f43584660caee3fe3a9fa27b3f" + "50d71409feb01956faf9b966e1b08464f0210702030100010281810105c9" + "cbf4a6acd840657b370dea45e065a8d9127e850ab5a6cde537cdfb1a9c0a" + "941148aed2e0a172312209c1fae95aac346b9b55e998deba03735cb8c68f" + "27ea64e6f99d86428a80176115b2d6f5e12d7b9dce5cb68570968f876c69" + "762ab664be06d4590c2a168c1180e78ba8787110fd61f0043bd99206b0d4" + "3ba39a14bee90241037e44c625d91b753c86804b18f22851b6ca2f50d8f8" + "ee71bf53d18e88bbd5aa9fcbcbcad3b415f115a38d9a1858300783343ae0" + "8ccdaa64baab34fca617aa303b0241030bf6fd42a34f02155a61667a6482" + "33a3d683288b36c7530ed1bff81f2ae2e55ccd7c9d28c968568bbbd2b0ff" + "5701335abf1f9785395b136b539a4ecefc8f71a50241031d89986e08c244" + "3c46780481aaf5ea6a6ac6e803997e8e53641d7050e1b41d078669a9ea44" + "a18cf10f7c2a01ac24a98e89f6386d5abeac370e99a2f93e01ba21024101" + "ec7b1efd05aaec90d909a9305ce84d7d0504ba03f529b48b25ebc5dac034" + "96489bc33464bd8fb11df811980b123fc2d268dda4c9cd2671c391fd5c07" + "9c3762b5024103632899c6c15aee731835c5ca4a75f2236e86a1f701be19" + "386d4218d346c371c2b9c08930abf423aca3dbf1e7caf79ecdea6aa66775" + "7e7dce5852faef59fcfc2f" }, + { 1030, + "3082025e0201000281812ebe4c4d2a6cd165ebbc6a4bb53dd1bc96dab169" + "d6c34ebe5a68f3c3b2d385533045901db0dffc9aebf13c44a6aab2a81f63" + "0ed26ee2d4b19bd49abceff7331cdf6f6aae6075631bf72236ff7e546270" + "a8b85cab40589ec7c767114aaa3ddd1b35fe999183f21ca02bf3a840422e" + "1b06a723fdd0c55c7dfaa0345e2f918884ddb90203010001028181016f27" + "a7d8778ff1e3754657a8a9cb15266b1db56f22fd4d5c3875d3992ee1f0dc" + "52ce14b322c9928bf9bcb7d330a54700f6339eb8f5ef1667547323a7ede5" + "9cbfecda40b4976795aeb53729f09455bd86c4ff6c257dfe8ad0d63ed1a6" + "5f7da87c3acdbfe27ccc423739859b860ea28bf004f30be5f1543253a572" + "43a5b426d98102410703b35b5221d562f0732901c9b67d2ee7c33c89e03c" + "750f0a5978877ba7c2149c10e74ef339500536adbe18e17084bcf557513b" + "f02f933713fe5065b69028ef59024106a9f2bff289987d993b27a541eae6" + "1a1dd3cf34cd174cb148f59f0e70bfa5b0ea18e64e552379a92d321e37cd" + "1a9dd5174d2f84afd83778437b6d9ebe5f42f561024056db7c1552f1a161" + "84107db7a60e1410bdced5d474d82cac117bd501d4317d11b77798c80703" + "a9dce53686b990d9bad21b3120b713760979fc1923725b32bfb10241030e" + "8c936e7f9ddae7a2922225a5ca5dea96d1f327ad6b79dbbd08748855f17c" + "c13620d7880898f3790f077b937385394dd2135d2b88e4911f6b8c3288a3" + "8c44a1024101e712867c169a6f391cd8f3ce6d7672ed7e90e6590647ebb8" + "9bf55924c8cc487a91307b0cbd6f6a5e781dd5b160ac7efe0aba5b2757b3" + "b7b00881c25070dda042" }, + { 2048, + "308204a302010002820101009912d469d8864df984bd8ea0d1a4e9bef9b3" + "d3ee7249801cd28195d1f3cd71b12aed430dba25012f69effca752337897" + "ae3b29df272d1d5dc6495553d0398f86eddf4bd2084f379aaac0f05d33ab" + "f6279d495394034c8e8ee5aeb6f0da9404eb8c773f8bec6a3199187ed681" + "55dacdc9c1db2f73dfde416ee63f87786da3cc94631ea2adaa3185fce12c" + "1c05659e5addaafcab1b7484a823cdfadab90f8555da052bb92c61a96bb6" + "2c2b6acbb06e0b01e65605905e42a64def5cc29fc2c04275f4a0a07bcf7a" + "49978c820a4710b605ef15c8aa0678636f73f99d79f235548856c8bbf104" + "344b209e46bc14acca95050cb4aac1cfc0a28c9d9dc05ab3ee0cf40d0203" + "01000102820100156455048cc2aa2b7c723c383bcc12f18236701ff2df54" + "34d2f352a37271abd99150f28dbccd96969074be2788fc91f60a9e9089b3" + "d121793d307ae8f960cdeed297e1e1f290d589bb22b704a367bd0108c15a" + "59854381e9b4edff7975e679308ce30e61a8d2a767488dd33ee4676d5a6c" + "89cbde22f34dcc2887c8d01aec68f6bd7551b8155dfc8cf10a3f43c8ecdc" + "e55ade57f0041d58878bf7420e8d945bbe858829f55d86b6fe466ce135cd" + "34db478a16125a989978266ed38b8f8c204f3873cee95191c41549296ee5" + "6e8e7300f9b35700f8aed9c0a1a545ecb9f4d09bfa5c9044bc307ad30ac0" + "c6e27b6ce9ffbeed6213110a9aa821d0c7e85cb5ad349902818100c7feea" + "fc0076c99dd4b4259fc84c12f4290a6f468e538b6fd8d8aeea4ccc9fe3a3" + "83add1964e13bf5b0e081fa401155938962b7a2420800f2e4926ca57f735" + "31b5ac1beb22fa98b02640ee67c63ecd250e93a76791c1789f939b8bceb2" + "26c2e43b8d1590d401829d83df5749744031d5839e7aa9833d1fbad5a504" + "75af833a8902818100c3f033c251d3c857eebae23547fedf350103c91f7a" + "a549c37ddec96003691a652c53b1ba46dd687117b3a6007fc340c46ad110" + "8d6d5c096a7de8f3773ac866352888f17a7502cf45f3f3d021d8b5719bd2" + "98c7f59e3f4f675052800c653be810ec4c4d7c9481e59205d2b0e628e436" + "1a4ea4375a84a71c8de549ef546a68fc65028181009883e43b4d3749459d" + "81cbf76fcde3de62b5dc6a17fbca27ff5c2ef7ea9d5989459713a4f35493" + "66a84fa90e4809b37818d91c4ac6e62a0269afcb6f1f6a1c1cce8873b9fb" + "30d3e3f1282f26e05de01fd45ff197dfe584d15cc58ff68e9154aaac6748" + "fceb5043854f9db07909b832c8bad8ce7e1ae1302350edc8dade7fdad102" + "818042dcc90cda97869a5b20f2e873b509be30a6760f83eebb89367ebc01" + "43a8ae1530572f22fde3b82c3f8652738125c40842db2ce6d616be2fd4df" + "95956e3dcc82ff5e1be949dcb7968b74fbe550ea39e68eab0c3148db19e1" + "8b8b5b9edf3cde28483a91869db6e5fc3a78775d533eed2775069ccd0acf" + "6bf30ff776f03b8faff1028180613011e3c3c1e97ed0d4c05f64d46b73e8" + "c93ff671ab2bc497aadfae36d803c3e2d7e2ae6a99c36ceebeb86dd5ccd5" + "d6f3304821b44e2ee2bb5540f9104d02e7cee6315024096120fb12a98bc1" + "1f4f08acf31e6f0cf75ec44b046382344eb1a299a3996ca9b63f71b9fc96" + "9f9c76846382c7b026c57cdfdeb53eff85b4f6b373" }, + { 4096, + "3082092702010002820201009ffa9b03aab78e5980223bed1811991bf244" + "20e7a277efc45fb01e9d756eba9e57b17b7f198d03e5731f7c8adbcecd6c" + "c75c1185228aa3eb650e3df03d10b8c4ee4794be04d48f304a3884589789" + "8baa4aae806ff9645318345bb532c7aa85be1de3e4d87873fb709a9af4ed" + "984fc2d8f42a98a233204eb50ecce01fef9eaf0ff82324dea54ea7cc909b" + "164a58c71f8b47edb097099cb27ee2ba1cd7c37dfbf28e0685a418b1cb5f" + "e6cea64d0d3f8b713a628fa9afc385f067323781e72f91a8a1808721ee4d" + "369d551f5cbdaadd9d1131ad5652ef71d91be6e701852ad7cf666eb7866a" + "ea556a44087f76a2ca120ca53ff5abf6771884f60546d9373328c7150b41" + "827207cac3fbe295e4361f4c713f301ae095d9cc521dc1a08828320bf6bd" + "7f63d1f7b81702f4738c6aa7992a1a34550a41ca794326e28c9d3a5997fa" + "af907bbd832a2e704ce6f867dada308cd28a06b37819a04f7c57fb10ad44" + "4f7189ff64a58ae419b1623792704db86a8b75ea5deaae967837757863b1" + "b43b55a27be101d714c6f7019a6339470349632b2ac5ba66258f8db5b80f" + "fda6b2b078b9716d704f8d1abd90b0364474c41dbb67699fe753f6c37a89" + "9887c0eb76f8db872329f2250c30917561242a64bbf341679a0d3e127bb7" + "66cdba9a0ae4f15e6220571a083fb9c487c9deff3b029653783a3c205e3d" + "5e9aaed05e4ee8b0e13a03a9fac502030100010282020010fdfc531261f6" + "c3b8e169fe0fed6696da4fb4330645b8f8e1b5023b754ab295b8f8c80642" + "ff806771a7e98192414ffe7ada639e01823a50f965dedc5290212001b326" + "b05c30fb988479a64d06a37c6b350d7de4e6d76a200b07a6a26324d099d5" + "f0ebd0b65293656d7682076e83224e0af92f4723290e531ae455f5ee6cab" + "6985d0adccdc4013809de76b21b0764dfa6c4469da51120cbf7f738736bf" + "b3f4fbd96c05ebdd179d636d4f8bc8695cd381ce52c3b1a152a23a5babb0" + "cba273a204084b6f8f0211bf784c9f4d2974299fd240b58992bb8e1b2264" + "8f2ad12b30cafdb54ad7032a2ab263d1874061a016f4b2e4ad427ba640bb" + "76aa2ed14994ac8320a4d81ba570d35184956f049be8c6c7da7938cc5105" + "c07bfba6b990687b94066def18ac3525c139707ae781c1e66931241137c1" + "0854ee00a74c9c52dc67f1964721891b8302dc4719c60f10af993d69ddce" + "b128da65a36f4d0829e84c74f3570d8db747a6db352c22061c2603f255f6" + "72f11f11c6f7bcecbbdc16f3995c87e5b840fba8b65a24043fc6dd0f8e1c" + "24b3cbb047f56813073b6bb81996f79452ec2aa9ed995bd5d0d6fe4a0315" + "2eac8e4f2ceb7ee4aece6760820f0e787d9abab312a435daf8dc3e28125e" + "f67107844dba0136a2d5d4b7ce6fc7d5159419d399eb42c5e7818b437c1d" + "1a1d4551358ad5e5dc2a757e9f1f12de1a2eb463b748b6c3ad0282010100" + "e18b2f5736dccd61f604efd0c1921186d188c54849c6f78aff4964d1fe27" + "c0727f057d8bb2e5b86efcc1121e4a791d84acd643c38a75fdcf38167260" + "948f23cb0f40c555c1edebf1582439e7b404d9df48de9e6100d9c0084eb3" + "59716f2f6ebdebf17c1438ff5a2864b621e79b1b28e7f6e2e7893fbaa1c5" + "19fda27e900f7b15f3fbfce98c7b5dac4e86701346a5bb84a5f2330661d2" + "677c8ff47b65851e596334e4d057c3e1bec0df01313919f68a20ac3fc3b8" + "df5f52ee6e21b9698dff82d1dbc37b2f9cb12036e2d76024ff7a586327d5" + "1fad8b7c1d99163827caee7b61e908b0fcf51d3264b8a11abd121993676c" + "10d715a345c197d0f4f42e85f74647b30282010100b594e9e77eed5cbb93" + "8234af03d2415ed0f8cd99e86033799d68b6547986f27131550d0bb45831" + "7ccf1841f0d398fd14c75bf57de7d6a096642b9864e2b07e5248b1f48306" + "2fdaa683a87a90aa05e3bbacc4b8eed9929b73eaec5ece7424af6e751afb" + "348a28e14a3218e700f0069d1330324b71ee9ba0cf516586c8f0a139f022" + "b612173276b40646b2f3d1063ddebee38daa61248ee58594da0168c4382f" + "2fff763cdfd69c5765d6f75f7d1d6a1db6cfd894118451fe58ded97f54db" + "703e6ed770452e70c6988238ec0ed599bd5cc550874344873e1040374c6d" + "373a485c2d2adeac3b89a7615542e0833433c119b1c0c784c76446f68e8b" + "9a2fb7d20f77a7028201007f3f96bafef1fe52298a497f1ee6f94a760753" + "3ee09907ea7cf37c95596e360ea30986f67d3d4c1c1a3017b7cd4e9dcfcf" + "efa715b895af57ed0e0503e66d07c5b5da563b770973d79b61fce573d454" + "d3bbfa15a326e6b3883c56c5bcd0fd12dec6325d4dcf8689e84641d7c922" + "e264e6d28cdc12bc48e0a22272cdedd7fb53f763cb24bae38e6aa01f418c" + "13e404f751f48a3c2d7a9d49d3a6284a4251a378cd16f78d7026ccc3616f" + "afed8488d866bfde4eaf6f2b5f4d9bc5b8f331d17279ed4aaef45e3d6a55" + "8181e3ff93802c179801ce256c3549162ddbb25d090a19c478c4758e9200" + "22015f854d5fa4c997377f69d4df99596ecae7927bfd8f899e362f028201" + "000a34532cca4a4692d80852339fb05a321ce64e8f9eaa815a0d498c2d95" + "22cb4f272993711bf274dd81b9e842c3716e8f93608c9c45c21f06349cea" + "9488d4c854917746b97248902e196a077147cccaee8a1808188c2b9c06d8" + "a5edf2063ee588fc95c6963e496bd7c296f9ac68d0c65504b95eda0941bf" + "b8c6e740badc2303618661db0468b699095d41c347f4e4d736bd0d020d31" + "83c24c4e802de2185cdbf203963e7789d501685cbb4c2778d6b4d2c83d70" + "9cc765e0385855babd2713d8be5be7184c32d4464fd32918f052127d3b2d" + "7a5c8266634b80805b102c315f4da6d028f15eeb2e77ded5c24e3d49c749" + "4d5efb177029277fc5a4fcc63fbb53593302820100689328a8b7c6de5b11" + "1934790c4152320c1a63a090bbb5d243517fe1f0203729828806897f157d" + "57d02333dc2c56a846eb286412473bab9ab68d144b991a3af9fee228c7ea" + "904d6b3aef2e42245abf4d777385b877c86a9b16b5d7c9cab1221576d88d" + "ee4993f130236744acbbf45c6bbd2dcaafc00f2cf36537e54e8a99ea8084" + "801d4f403376c0339de7f3867f2360af6fc0047cc85359669b90156a31aa" + "fe34570fbe1342f9e5743d45646aab7009b73c9e63b7a458c423f3b8de81" + "c83de5b0fe60bb7a235d7d1a931cca548639ed4e629386c7de98d8840ba2" + "bcb02d8adc59e179b27a4705426b313497c43aaacc953ae92c702af10a2d" + "a5db9b0688c41f" }, +}; + +const char *ec_key_data_lut[] = { + [MBEDTLS_ECP_DP_SECP192R1] = + "305f020101041856ceb8c9bc8e6562242362d5176916c8cad73cefde6242" + "faa00a06082a8648ce3d030101a134033200047bdb35c272027741d687ae" + "31007a4ed936231556747cf3e916884db6b08cece5a4923ce964b8bcd195" + "b0f53e01d1b9c4", + [MBEDTLS_ECP_DP_SECP224R1] = + "3068020101041cab5caf66f71236bd1c4c4825588c531682b8019882a025" + "ed3814e32fa00706052b81040021a13c033a0004260e79423142a44ce9e5" + "b78144c39e3d2b5b2670af673868083416745e57be42319d8ee6d034ef9c" + "535c7f6cc45ed5026fae66c0dd1298a5", + [MBEDTLS_ECP_DP_SECP256R1] = + "30770201010420b52b83eb4cf15f4fb2bdef164f521b92a4c7329ce83dd2" + "b24fc4080980603b07a00a06082a8648ce3d030107a14403420004dd40ad" + "3c112abb3e7beed40ca349c9a755f930968722865c27ca5d0ca884220b59" + "9e6620019ef8fc9b3050cf90ce8cfb5125db447c21bc567806d39e49b181" + "01", + [MBEDTLS_ECP_DP_SECP384R1] = + "3081a402010104301b3640d9ada2984b5c4406c339fa859c374aa1692990" + "547b0897429689d4b226d20b1ca20fd32d89e853e3b7644dffaba0070605" + "2b81040022a164036200043315c6d4276e8ab4b74b4069bb7a403f4a62e2" + "89bfbfe39738dee4064d7ae22ff32520316f7230302db8fa7b0434ada5ac" + "3f39acd252b5ec2eadbebf55ba7edb2265026a33bae2dbf59314ce081277" + "3f08faef9fb4786d610a8c1c1f348e9627", + [MBEDTLS_ECP_DP_SECP521R1] = + "3081dc020101044201300db372ffd5307db8016608a097cb4ac8440e7419" + "589566518a9b8b4506aa00ddd21d736284d31e02ae3064a0d2b1c3de08ec" + "b6285534e13fefe456fde0337572a00706052b81040023a1818903818600" + "040183a4329055ced8534460a22f00271dc55b9857aad6886355bcac683d" + "461a2281190546929a8e64cdfc1242fb6e3a460b0821b4197b42a0b18253" + "18c59dc74eabbd00c74c4bf20494c05183012229df3da41455673233cb32" + "877f0646b66fc75e4d72ccdc60e5ceb670ed4dc2773916738e2530a3f5fd" + "2c14ec512171e6de772dc21c27", + [MBEDTLS_ECP_DP_BP256R1] = + "307802010104202a248a6523ec929566b473d189d63358aeaa29385c56c4" + "ed52fee5bfbef6705fa00b06092b2403030208010107a14403420004606f" + "09a54c0f6d52ff0c7429ad085332d1e03e60370cd6a7b44c1a15668f28cf" + "14e35f242ae5c7ab089663de47f840b947a7ff4b2b72a820a0136154d6c6" + "c87a", + [MBEDTLS_ECP_DP_BP384R1] = + "3081a802010104301a4da2c6c462c6f115f3a91cfa6006bdb549e4935364" + "b2199d7bc872f1eb9bfcfcc3c997a1ac0064d581f32b3899ba3ba00b0609" + "2b240303020801010ba164036200042d4ed26c2aba8d7c49d52e1e6bfbe6" + "36583f22e50cc94c64442811f504db9f1823c43427ef5fbe9846842a66a7" + "20a1108ac13b1ff05a5d710a51a238ac89ce8f44c0139b9fef4d2c298f2e" + "187bf3c3e51ec05b32b27195d884b166b6c803409c", + [MBEDTLS_ECP_DP_BP512R1] = + "3081da02010104406f2730c70a35827f5a8ff0028f7ce3b28cf9d2711ad2" + "269130c5c72eace8d12efb0afd2f099548afa55bd94dd7361ab63ba1bea0" + "c7d295a67498107cf89acfb3a00b06092b240303020801010da181850381" + "82000464615aa207894e1059a28fc36c9f1d955b518dc668ee3a257b35b7" + "6d1b48820a0c42bf91122a96c5887633d71796d6d541a098534ad09f1f1b" + "0ebaece479e8e0284a7bb28efd1185a77a3ab8715e6e99f9591d44f92ca7" + "b4896d36a9022fdffa0cd7744f4dc462172bc4c027456d8469f41e15bbff" + "0546bac84f4edf3f4fc0c3", + [MBEDTLS_ECP_DP_CURVE25519] = + "302e020100300506032b656e04220420b0a8bd3ffeb3e2a7caa1148f5406" + "20b2dd493faff1d1cda6458822077445cd78", + [MBEDTLS_ECP_DP_SECP192K1] = + "305c02010104186a01a55cc30d77ef9962778f78af3cbb5c7fc7dd1aa9a7" + "b6a00706052b8104001fa1340332000435aa842c4bef314c579910674cf3" + "cb426ce001bdd5ca0586398634776957b1e3afa9473e5b69648ffaa65a1f" + "052be658", + [MBEDTLS_ECP_DP_SECP256K1] = + "30740201010420282608d1c6067366c22ef6ed5aa3b6e31107e6fa535f2b" + "6def935626517883c7a00706052b8104000aa14403420004163f1a8038d1" + "11cd2da34a98b8524180de6c56268cd8b2d315201778d1e7c09da090c2c8" + "da4667bd3e831f444103606875069c222bd1cc9beb84cf2989ad37ec", + [MBEDTLS_ECP_DP_CURVE448] = + "3046020100300506032b656f043a043858ab68f1e135d8d38514774a63a3" + "4c659b3ed783f8cf87531f49927c5e97f459cb324a32ab3dd2f1613ad931" + "cb3df24d5244bc7e4691f1f4", +}; diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 535c13b958..4f490a18b5 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -184,22 +184,41 @@ #define MBEDTLS_MD_ALG_FOR_TEST MBEDTLS_MD_SHA512 #endif -const char *curve_names_lut[] = { - [MBEDTLS_ECP_DP_SECP192R1] = "secp192r1", - [MBEDTLS_ECP_DP_SECP224R1] = "secp224r1", - [MBEDTLS_ECP_DP_SECP256R1] = "secp256r1", - [MBEDTLS_ECP_DP_SECP384R1] = "secp384r1", - [MBEDTLS_ECP_DP_SECP521R1] = "secp521r1", - [MBEDTLS_ECP_DP_BP256R1] = "brainpoolP256r1", - [MBEDTLS_ECP_DP_BP384R1] = "brainpoolP384r1", - [MBEDTLS_ECP_DP_BP512R1] = "brainpoolP512r1", - [MBEDTLS_ECP_DP_CURVE25519] = "x25519", - [MBEDTLS_ECP_DP_SECP192K1] = "secp192k1", - [MBEDTLS_ECP_DP_SECP256K1] = "secp256k1", - [MBEDTLS_ECP_DP_CURVE448] = "x448", -}; - #if defined(MBEDTLS_PK_PARSE_C) + +#include <../src/test_keys.h> +static int get_predefined_key_data(int is_rsa, int curve_or_keybits, + unsigned char **outbuf, size_t *out_buf_size) +{ + const char *key_data_hex = NULL; + size_t out_buf_len = 0; + + if (is_rsa) { + size_t i; + for (i = 0; i < ARRAY_LENGTH(rsa_key_data_lut); i++) { + if (curve_or_keybits == rsa_key_data_lut[i].bits) { + key_data_hex = rsa_key_data_lut[i].key; + break; + } + } + } else { + key_data_hex = ec_key_data_lut[curve_or_keybits]; + } + + if (key_data_hex == NULL) { + return MBEDTLS_ERR_PK_BAD_INPUT_DATA; + } + + *out_buf_size = strlen(key_data_hex)/2; + *outbuf = mbedtls_calloc(*out_buf_size, sizeof(unsigned char)); + if (*outbuf == NULL) { + return MBEDTLS_ERR_PK_ALLOC_FAILED; + } + mbedtls_test_unhexify(*outbuf, *out_buf_size, key_data_hex, &out_buf_len); + + return 0; +} + /** Fill the provided PK context with a proper key. * * This is a fake implementation of key generation because instead of generating @@ -217,26 +236,27 @@ const char *curve_names_lut[] = { */ static int pk_genkey(mbedtls_pk_context *pk, int curve_or_keybits) { - char file_name[128] = { 0 }; - int ret; + unsigned char *key_data = NULL; + size_t key_data_len = 0; + int ret = MBEDTLS_ERR_PK_BAD_INPUT_DATA; + int is_rsa = (mbedtls_pk_get_type(pk) == MBEDTLS_PK_RSA); + /* Dump pk_info since this is overridden by mbedtls_pk_parse_keyfile(). */ const mbedtls_pk_info_t *original_pk_info = pk->pk_info; - if (mbedtls_pk_get_type(pk) == MBEDTLS_PK_RSA) { - sprintf(file_name, "data_files/rsa_%d.der", curve_or_keybits); - } else if (mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECKEY || - mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECKEY_DH || - mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECDSA) { - sprintf(file_name, "data_files/ec_%s.der", curve_names_lut[curve_or_keybits]); - } - - ret = mbedtls_pk_parse_keyfile(pk, file_name, NULL, mbedtls_test_rnd_std_rand, NULL); + TEST_EQUAL(get_predefined_key_data(is_rsa, curve_or_keybits, &key_data, &key_data_len), 0); + TEST_EQUAL(mbedtls_pk_parse_key(pk, key_data, key_data_len, NULL, 0, + mbedtls_test_rnd_std_rand, NULL), 0); /* Restore pk_info. */ pk->pk_info = original_pk_info; + ret = 0; +exit: + mbedtls_free(key_data); return ret; } +#if defined(MBEDTLS_PSA_CRYPTO_CLIENT) /** Create a PSA key of the desired type and properties. * * This is similar to pk_genkey() above in the sense that it does not really @@ -261,51 +281,61 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; psa_status_t status = PSA_ERROR_GENERIC_ERROR; mbedtls_pk_context pk; - char file_name[128] = { 0 }; - unsigned char key_data[MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE] = { 0 }; - size_t key_data_len; + unsigned char *key_data = NULL; + size_t key_data_size = 0; /* Overall size of key_data in bytes. It includes leading + * zeros (if any). */ + size_t key_data_len = 0; /* Length of valid bytes in key_data. */ unsigned char *key_data_start; int ret; mbedtls_pk_init(&pk); - /* Get the name of the key file to load. */ + /* Get the predefined key (in DER format) and parse it. */ if (PSA_KEY_TYPE_IS_RSA(type)) { - sprintf(file_name, "data_files/rsa_%lu.der", bits); - } else if (PSA_KEY_TYPE_IS_ECC(type)) { - psa_ecc_family_t ec_family = PSA_KEY_TYPE_ECC_GET_FAMILY(type); - mbedtls_ecp_group_id grp_id = mbedtls_ecc_group_from_psa(ec_family, bits); - sprintf(file_name, "data_files/ec_%s.der", curve_names_lut[grp_id]); + TEST_EQUAL(get_predefined_key_data(1, bits, &key_data, &key_data_size), 0); } else { - TEST_FAIL("Only EC or RSA key type is supported."); + mbedtls_ecp_group_id grp_id; + grp_id = mbedtls_ecc_group_from_psa(PSA_KEY_TYPE_ECC_GET_FAMILY(type), bits); + TEST_EQUAL(get_predefined_key_data(0, grp_id, &key_data, &key_data_size), 0); } - /* Parse the key file and write the key material to the key_data buffer. */ - TEST_EQUAL(mbedtls_pk_parse_keyfile(&pk, file_name, NULL, mbedtls_test_rnd_std_rand, NULL), 0); + TEST_EQUAL(mbedtls_pk_parse_key(&pk, key_data, key_data_size, NULL, 0, + mbedtls_test_rnd_std_rand, NULL), 0); + /* Resize key_data buffer. */ + mbedtls_free(key_data); + key_data = NULL; + TEST_CALLOC(key_data, MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE); + key_data_size = MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE; + + /* Export only the key data material in a PSA friendly format. + * + * Note: mbedtls_pk_write_key_der() and mbedtls_mpi_write_binary() write + * key data at the end of the provided buffer, whereas psa_export_key() + * writes the key at the beginning. + */ if (mbedtls_pk_get_type(&pk) == MBEDTLS_PK_RSA) { #if defined(MBEDTLS_PK_WRITE_C) - ret = mbedtls_pk_write_key_der(&pk, key_data, sizeof(key_data)); + ret = mbedtls_pk_write_key_der(&pk, key_data, key_data_size); TEST_ASSERT(ret > 0); key_data_len = (size_t) ret; + key_data_start = key_data + key_data_size - key_data_len; #else TEST_FAIL("RSA is unsupported"); #endif /* MBEDTLS_PK_WRITE_C */ } else if (mbedtls_pk_get_type(&pk) == MBEDTLS_PK_ECKEY) { -#if defined(MBEDTLS_PK_USE_EC_DATA) - PSA_ASSERT(psa_export_key(pk->priv_id, key_data, sizeof(key_data), &key_data_len)); +#if defined(MBEDTLS_PK_USE_PSA_EC_DATA) + PSA_ASSERT(psa_export_key(pk.priv_id, key_data, key_data_size, &key_data_len)); + key_data_start = key_data; #elif defined(MBEDTLS_PK_HAVE_ECC_KEYS) const mbedtls_ecp_keypair *ec_ctx = mbedtls_pk_ec_ro(pk); - TEST_EQUAL(mbedtls_mpi_write_binary(&(ec_ctx->d), key_data, sizeof(key_data)), 0); + TEST_EQUAL(mbedtls_mpi_write_binary(&(ec_ctx->d), key_data, key_data_size), 0); key_data_len = PSA_BITS_TO_BYTES(mbedtls_mpi_bitlen(&(ec_ctx->d))); + key_data_start = key_data + key_data_size - key_data_len; #else /* !MBEDTLS_PK_USE_EC_DATA && !MBEDTLS_PK_HAVE_ECC_KEYS */ TEST_FAIL("EC is unsupported"); #endif /* */ } else { TEST_FAIL("Unknown key type"); } - /* Data was written to the end of the key_data buffer so we shift that to - * the beginnig. */ - key_data_start = key_data + sizeof(key_data) - key_data_len; - memmove(key_data, key_data_start, key_data_len); /* Import the key into PSA. */ *key = MBEDTLS_SVC_KEY_ID_INIT; @@ -317,12 +347,14 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, if (!mbedtls_svc_key_id_is_null(persistent_key_id)) { psa_set_key_id(&attributes, persistent_key_id); } - status = psa_import_key(&attributes, key_data, key_data_len, key); + status = psa_import_key(&attributes, key_data_start, key_data_len, key); exit: + mbedtls_free(key_data); mbedtls_pk_free(&pk); return status; } +#endif /* MBEDTLS_PSA_CRYPTO_CLIENT */ #endif /* MBEDTLS_PK_PARSE_C */ #if defined(MBEDTLS_PSA_CRYPTO_C) @@ -2563,6 +2595,7 @@ void pk_copy_from_psa_builtin_fail() PSA_VENDOR_RSA_GENERATE_MIN_KEY_BITS, PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256), + PSA_ALG_NONE, PSA_KEY_ID_NULL, &key_id)); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_BAD_INPUT_DATA); exit: From 0b15050d5baa61599e924f67ee611d2d3a7d825f Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Wed, 27 Mar 2024 14:18:25 +0100 Subject: [PATCH 07/32] test_suite_pk: fix key_id initialization value Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 4f490a18b5..3779aa9543 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -699,12 +699,12 @@ void pk_psa_utils(int key_is_rsa) bitlen = 1024; PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_RSA_KEY_PAIR, 1024, PSA_KEY_USAGE_SIGN_HASH, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, PSA_ALG_NONE, - PSA_KEY_ID_NULL, &key)); + MBEDTLS_SVC_KEY_ID_INIT, &key)); } else { bitlen = 256; PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, PSA_KEY_USAGE_SIGN_HASH, PSA_ALG_ECDSA(PSA_ALG_SHA_256), - PSA_ALG_NONE, PSA_KEY_ID_NULL, &key)); + PSA_ALG_NONE, MBEDTLS_SVC_KEY_ID_INIT, &key)); } if (mbedtls_svc_key_id_is_null(key)) { goto exit; @@ -790,7 +790,7 @@ void pk_can_do_ext(int opaque_key, int key_type, int key_usage, int key_alg, if (opaque_key == 1) { PSA_ASSERT(pk_psa_genkey(key_type, curve_or_keybits, key_usage, - key_alg, key_alg2, PSA_KEY_ID_NULL, &key)); + key_alg, key_alg2, MBEDTLS_SVC_KEY_ID_INIT, &key)); if (mbedtls_svc_key_id_is_null(key)) { goto exit; } @@ -2394,7 +2394,7 @@ void pk_get_psa_attributes_opaque(int from_type_arg, int from_bits_arg, PSA_INIT(); PSA_ASSERT(pk_psa_genkey(from_type, bits, from_usage, alg, 42, - PSA_KEY_ID_NULL, &old_key_id)); + MBEDTLS_SVC_KEY_ID_INIT, &old_key_id)); TEST_EQUAL(mbedtls_pk_setup_opaque(&pk, old_key_id), 0); psa_key_type_t expected_psa_type = @@ -2487,7 +2487,7 @@ void pk_import_into_psa_opaque(int from_type, int from_bits, PSA_INIT(); PSA_ASSERT(pk_psa_genkey(from_type, from_bits, from_usage, from_alg, PSA_ALG_NONE, - PSA_KEY_ID_NULL, &from_key_id)); + MBEDTLS_SVC_KEY_ID_INIT, &from_key_id)); TEST_EQUAL(mbedtls_pk_setup_opaque(&pk, from_key_id), 0); psa_set_key_type(&to_attributes, to_type); @@ -2570,7 +2570,7 @@ void pk_copy_from_psa_fail(void) #if defined(MBEDTLS_PK_HAVE_ECC_KEYS) && defined(PSA_WANT_ECC_SECP_R1_256) /* Generate an EC key which cannot be exported. */ PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, - 0, PSA_ALG_NONE, PSA_ALG_NONE, PSA_KEY_ID_NULL, &key_id)); + 0, PSA_ALG_NONE, PSA_ALG_NONE, MBEDTLS_SVC_KEY_ID_INIT, &key_id)); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_TYPE_MISMATCH); psa_destroy_key(key_id); #endif /* MBEDTLS_PK_HAVE_ECC_KEYS && PSA_WANT_ECC_SECP_R1_256 */ @@ -2596,7 +2596,7 @@ void pk_copy_from_psa_builtin_fail() PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256), PSA_ALG_NONE, - PSA_KEY_ID_NULL, &key_id)); + MBEDTLS_SVC_KEY_ID_INIT, &key_id)); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_BAD_INPUT_DATA); exit: mbedtls_pk_free(&pk_ctx); From 9658e777b6941bd751fd256a461deec1732996e2 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Fri, 29 Mar 2024 09:50:20 +0100 Subject: [PATCH 08/32] test_suite_pk: simplify pk_genkey() Add pk_info parameter in order to ease the requirements on the provided PK context. Now it can simply be initialized, but not setup. Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 47 +++++++++++------------------ 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 3779aa9543..4806d093d1 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -227,28 +227,26 @@ static int get_predefined_key_data(int is_rsa, int curve_or_keybits, * (mbedtls_pk_setup() has been called on the PK context ) so that it * can determine the key type to be loaded from the PK context itself. * - * \param pk The PK object to fill. It must have been initialized - * with mbedtls_pk_setup(). + * \param pk The PK object to fill. It must have been initialized + * (mbedtls_pk_init()), but not setup (mbedtls_pk_setup()). + * \param pk_info mbedtls_pk_info_t to use in the generated PK context. * \param curve_or_keybits - For RSA keys, the key size in bits. * - For EC keys, the curve (\c MBEDTLS_ECP_DP_xxx). * * \return 0 on success or a negative value otherwise. */ -static int pk_genkey(mbedtls_pk_context *pk, int curve_or_keybits) +static int pk_genkey(mbedtls_pk_context *pk, const mbedtls_pk_info_t *pk_info, int curve_or_keybits) { unsigned char *key_data = NULL; size_t key_data_len = 0; int ret = MBEDTLS_ERR_PK_BAD_INPUT_DATA; - int is_rsa = (mbedtls_pk_get_type(pk) == MBEDTLS_PK_RSA); - - /* Dump pk_info since this is overridden by mbedtls_pk_parse_keyfile(). */ - const mbedtls_pk_info_t *original_pk_info = pk->pk_info; + int is_rsa = (curve_or_keybits >= 1024); TEST_EQUAL(get_predefined_key_data(is_rsa, curve_or_keybits, &key_data, &key_data_len), 0); TEST_EQUAL(mbedtls_pk_parse_key(pk, key_data, key_data_len, NULL, 0, mbedtls_test_rnd_std_rand, NULL), 0); - /* Restore pk_info. */ - pk->pk_info = original_pk_info; + /* Override pk_info. */ + pk->pk_info = pk_info; ret = 0; exit: @@ -311,7 +309,7 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, * Note: mbedtls_pk_write_key_der() and mbedtls_mpi_write_binary() write * key data at the end of the provided buffer, whereas psa_export_key() * writes the key at the beginning. - */ + */ if (mbedtls_pk_get_type(&pk) == MBEDTLS_PK_RSA) { #if defined(MBEDTLS_PK_WRITE_C) ret = mbedtls_pk_write_key_der(&pk, key_data, key_data_size); @@ -499,12 +497,12 @@ static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, if (pk_type == MBEDTLS_PK_NONE) { return 0; } - TEST_EQUAL(mbedtls_pk_setup(pk, mbedtls_pk_info_from_type(pk_type)), 0); switch (pk_type) { #if defined(MBEDTLS_RSA_C) case MBEDTLS_PK_RSA: { + TEST_EQUAL(mbedtls_pk_setup(pk, mbedtls_pk_info_from_type(pk_type)), 0); *psa_type = PSA_KEY_TYPE_RSA_KEY_PAIR; mbedtls_rsa_context *rsa = mbedtls_pk_rsa(*pk); if (want_pair) { @@ -538,7 +536,7 @@ static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, mbedtls_ecp_group_id grp_id = MBEDTLS_TEST_ECP_DP_ONE_CURVE; size_t bits; *psa_type = PSA_KEY_TYPE_ECC_KEY_PAIR(mbedtls_ecc_group_to_psa(grp_id, &bits)); - TEST_EQUAL(pk_genkey(pk, grp_id), 0); + TEST_EQUAL(pk_genkey(pk, mbedtls_pk_info_from_type(pk_type), grp_id), 0); if (!want_pair) { #if defined(MBEDTLS_PK_USE_PSA_EC_DATA) psa_key_attributes_t pub_attributes = PSA_KEY_ATTRIBUTES_INIT; @@ -799,9 +797,7 @@ void pk_can_do_ext(int opaque_key, int key_type, int key_usage, int key_alg, TEST_EQUAL(mbedtls_pk_get_type(&pk), MBEDTLS_PK_OPAQUE); } else { - TEST_EQUAL(mbedtls_pk_setup(&pk, - mbedtls_pk_info_from_type(key_type)), 0); - TEST_EQUAL(pk_genkey(&pk, curve_or_keybits), 0); + TEST_EQUAL(pk_genkey(&pk, mbedtls_pk_info_from_type(key_type), curve_or_keybits), 0); TEST_EQUAL(mbedtls_pk_get_type(&pk), key_type); } @@ -1003,8 +999,7 @@ void pk_utils(int type, int curve_or_keybits, int bitlen, int len, char *name) mbedtls_pk_init(&pk); USE_PSA_INIT(); - TEST_ASSERT(mbedtls_pk_setup(&pk, mbedtls_pk_info_from_type(type)) == 0); - TEST_ASSERT(pk_genkey(&pk, curve_or_keybits) == 0); + TEST_ASSERT(pk_genkey(&pk, mbedtls_pk_info_from_type(type), curve_or_keybits) == 0); TEST_ASSERT((int) mbedtls_pk_get_type(&pk) == type); TEST_ASSERT(mbedtls_pk_can_do(&pk, type)); @@ -1372,8 +1367,7 @@ void pk_sign_verify(int type, int curve_or_keybits, int rsa_padding, int rsa_md_ memset(hash, 0x2a, sizeof(hash)); memset(sig, 0, sizeof(sig)); - TEST_ASSERT(mbedtls_pk_setup(&pk, mbedtls_pk_info_from_type(type)) == 0); - TEST_ASSERT(pk_genkey(&pk, curve_or_keybits) == 0); + TEST_ASSERT(pk_genkey(&pk, mbedtls_pk_info_from_type(type), curve_or_keybits) == 0); #if defined(MBEDTLS_RSA_C) if (type == MBEDTLS_PK_RSA) { @@ -1766,9 +1760,7 @@ void pk_rsa_alt() memset(test, 0, sizeof(test)); /* Initialize PK RSA context with random key */ - TEST_ASSERT(mbedtls_pk_setup(&rsa, - mbedtls_pk_info_from_type(MBEDTLS_PK_RSA)) == 0); - TEST_ASSERT(pk_genkey(&rsa, RSA_KEY_SIZE) == 0); + TEST_ASSERT(pk_genkey(&rsa, mbedtls_pk_info_from_type(MBEDTLS_PK_RSA), RSA_KEY_SIZE) == 0); /* Extract key to the raw rsa context */ TEST_ASSERT(mbedtls_rsa_copy(&raw, mbedtls_pk_rsa(rsa)) == 0); @@ -1869,9 +1861,7 @@ void pk_psa_sign(int psa_type, int bits, int rsa_padding) /* Create the legacy EC/RSA PK context. */ #if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_GENPRIME) if (PSA_KEY_TYPE_IS_RSA(psa_type)) { - TEST_ASSERT(mbedtls_pk_setup(&pk, - mbedtls_pk_info_from_type(MBEDTLS_PK_RSA)) == 0); - TEST_EQUAL(pk_genkey(&pk, bits), 0); + TEST_EQUAL(pk_genkey(&pk, mbedtls_pk_info_from_type(MBEDTLS_PK_RSA), bits), 0); TEST_EQUAL(mbedtls_rsa_set_padding(mbedtls_pk_rsa(pk), rsa_padding, MBEDTLS_MD_NONE), 0); } #else /* MBEDTLS_RSA_C && MBEDTLS_GENPRIME */ @@ -1880,8 +1870,7 @@ void pk_psa_sign(int psa_type, int bits, int rsa_padding) #if defined(MBEDTLS_PK_CAN_ECDSA_SIGN) if (PSA_KEY_TYPE_IS_ECC_KEY_PAIR(psa_type)) { ecp_grp_id = mbedtls_ecc_group_from_psa(psa_type, bits); - TEST_ASSERT(mbedtls_pk_setup(&pk, mbedtls_pk_info_from_type(MBEDTLS_PK_ECKEY)) == 0); - TEST_ASSERT(pk_genkey(&pk, ecp_grp_id) == 0); + TEST_ASSERT(pk_genkey(&pk, mbedtls_pk_info_from_type(MBEDTLS_PK_ECKEY), ecp_grp_id) == 0); } #endif /* MBEDTLS_PK_CAN_ECDSA_SIGN */ @@ -2019,9 +2008,7 @@ void pk_sign_ext(int pk_type, int curve_or_keybits, int key_pk_type, int md_alg) mbedtls_pk_init(&pk); MD_OR_USE_PSA_INIT(); - TEST_EQUAL(mbedtls_pk_setup(&pk, - mbedtls_pk_info_from_type(pk_type)), 0); - TEST_EQUAL(pk_genkey(&pk, curve_or_keybits), 0); + TEST_EQUAL(pk_genkey(&pk, mbedtls_pk_info_from_type(pk_type), curve_or_keybits), 0); TEST_EQUAL(mbedtls_pk_sign_ext(key_pk_type, &pk, md_alg, hash, hash_len, sig, sizeof(sig), &sig_len, From 88ab0d4ec9caace63ddbb9c1a88e3f2031bdb166 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Fri, 29 Mar 2024 11:37:09 +0100 Subject: [PATCH 09/32] test_suite_pk: simplify pk_psa_genkey() Instead of using PK module to import/export the key in a PSA friendly format: - for RSA keys we use the DER input data directly; - for EC keys we extract the private key manually. This helps avoiding dependencies from PK_WRITE and PK_PARSE. Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 62 +++++++++-------------------- 1 file changed, 19 insertions(+), 43 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 4806d093d1..67c06d4123 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -278,61 +278,38 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, { psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; psa_status_t status = PSA_ERROR_GENERIC_ERROR; - mbedtls_pk_context pk; unsigned char *key_data = NULL; size_t key_data_size = 0; /* Overall size of key_data in bytes. It includes leading * zeros (if any). */ size_t key_data_len = 0; /* Length of valid bytes in key_data. */ unsigned char *key_data_start; - int ret; - mbedtls_pk_init(&pk); - - /* Get the predefined key (in DER format) and parse it. */ + /* Get the predefined key: + * - RSA keys are already in a valid format to be imported into PSA. + * - EC ones instead would require some adaptation. However instead of going + * through the PK module for import/export, we can directly skip the + * unrelevant data and go directly to the private key. + */ if (PSA_KEY_TYPE_IS_RSA(type)) { TEST_EQUAL(get_predefined_key_data(1, bits, &key_data, &key_data_size), 0); + key_data_start = key_data; + key_data_len = key_data_size; } else { mbedtls_ecp_group_id grp_id; grp_id = mbedtls_ecc_group_from_psa(PSA_KEY_TYPE_ECC_GET_FAMILY(type), bits); TEST_EQUAL(get_predefined_key_data(0, grp_id, &key_data, &key_data_size), 0); - } - TEST_EQUAL(mbedtls_pk_parse_key(&pk, key_data, key_data_size, NULL, 0, - mbedtls_test_rnd_std_rand, NULL), 0); - /* Resize key_data buffer. */ - mbedtls_free(key_data); - key_data = NULL; - TEST_CALLOC(key_data, MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE); - key_data_size = MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE; - /* Export only the key data material in a PSA friendly format. - * - * Note: mbedtls_pk_write_key_der() and mbedtls_mpi_write_binary() write - * key data at the end of the provided buffer, whereas psa_export_key() - * writes the key at the beginning. - */ - if (mbedtls_pk_get_type(&pk) == MBEDTLS_PK_RSA) { -#if defined(MBEDTLS_PK_WRITE_C) - ret = mbedtls_pk_write_key_der(&pk, key_data, key_data_size); - TEST_ASSERT(ret > 0); - key_data_len = (size_t) ret; - key_data_start = key_data + key_data_size - key_data_len; -#else - TEST_FAIL("RSA is unsupported"); -#endif /* MBEDTLS_PK_WRITE_C */ - } else if (mbedtls_pk_get_type(&pk) == MBEDTLS_PK_ECKEY) { -#if defined(MBEDTLS_PK_USE_PSA_EC_DATA) - PSA_ASSERT(psa_export_key(pk.priv_id, key_data, key_data_size, &key_data_len)); - key_data_start = key_data; -#elif defined(MBEDTLS_PK_HAVE_ECC_KEYS) - const mbedtls_ecp_keypair *ec_ctx = mbedtls_pk_ec_ro(pk); - TEST_EQUAL(mbedtls_mpi_write_binary(&(ec_ctx->d), key_data, key_data_size), 0); - key_data_len = PSA_BITS_TO_BYTES(mbedtls_mpi_bitlen(&(ec_ctx->d))); - key_data_start = key_data + key_data_size - key_data_len; -#else /* !MBEDTLS_PK_USE_EC_DATA && !MBEDTLS_PK_HAVE_ECC_KEYS */ - TEST_FAIL("EC is unsupported"); -#endif /* */ - } else { - TEST_FAIL("Unknown key type"); + unsigned char *p = key_data; + unsigned char *end = key_data + key_data_size; + size_t len; + int version; + + TEST_EQUAL(mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_SEQUENCE | + MBEDTLS_ASN1_CONSTRUCTED), 0); + TEST_EQUAL(mbedtls_asn1_get_int(&p, end, &version), 0); + TEST_EQUAL(mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_OCTET_STRING), 0); + key_data_start = p; + key_data_len = len; } /* Import the key into PSA. */ @@ -349,7 +326,6 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, exit: mbedtls_free(key_data); - mbedtls_pk_free(&pk); return status; } #endif /* MBEDTLS_PSA_CRYPTO_CLIENT */ From bdb7ae1dad14c63ddabe326ff2c9c9e3ce2cf34a Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Fri, 29 Mar 2024 16:59:40 +0100 Subject: [PATCH 10/32] test_suite_pk: add python script to generate predefined keys This commit adds "generate_test_keys.py" script to generate predefined keys used in test_suite_pk. Keys are generated with "programs/pkey/gen_key" tool and converted to C array using the python script. tests/src/test_keys.h is automatically generated using the above mentioned script. test_suite_pk is updated in order to use the new format. Signed-off-by: Valerio Setti --- tests/scripts/generate_test_keys.py | 103 +++ tests/src/test_keys.h | 1043 +++++++++++++++++++-------- tests/suites/test_suite_pk.function | 83 ++- 3 files changed, 885 insertions(+), 344 deletions(-) create mode 100755 tests/scripts/generate_test_keys.py diff --git a/tests/scripts/generate_test_keys.py b/tests/scripts/generate_test_keys.py new file mode 100755 index 0000000000..c2d23c91e1 --- /dev/null +++ b/tests/scripts/generate_test_keys.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 + +# Copyright The Mbed TLS Contributors +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + +"""Module generating EC and RSA keys to be used in test_suite_pk instead of +generating the required key at run time. This helps speeding up testing.""" + +import os +import sys +import subprocess + +KEY_GEN = "./programs/pkey/gen_key" +TMP_DER_FILE = "tmp_key.der" +OUTPUT_HEADER_FILE = "./tests/src/test_keys.h" +BYTES_PER_LINE = 12 + +KEYS = { + # RSA keys + 'test_rsa_1024': ['rsa', '1024'], + 'test_rsa_1026': ['rsa', '1026'], + 'test_rsa_1028': ['rsa', '1028'], + 'test_rsa_1030': ['rsa', '1030'], + 'test_rsa_2048': ['rsa', '2048'], + 'test_rsa_4096': ['rsa', '4096'], + # EC keys + 'test_ec_secp192r1': ['ec', 'secp192r1'], + 'test_ec_secp224r1': ['ec', 'secp224r1'], + 'test_ec_secp256r1': ['ec', 'secp256r1'], + 'test_ec_secp384r1': ['ec', 'secp384r1'], + 'test_ec_secp521r1': ['ec', 'secp521r1'], + 'test_ec_bp256r1': ['ec', 'brainpoolP256r1'], + 'test_ec_bp384r1': ['ec', 'brainpoolP384r1'], + 'test_ec_bp512r1': ['ec', 'brainpoolP512r1'], + 'test_ec_curve25519': ['ec', 'x25519'], + 'test_ec_secp192k1': ['ec', 'secp192k1'], + 'test_ec_secp256k1': ['ec', 'secp256k1'], + 'test_ec_curve448': ['ec', 'x448'], +} + +def generate_der_file(curve_type: str, curve_or_bits: str): + if not os.path.exists(KEY_GEN): + raise Exception("Key generation program does not exist.") + if curve_type == 'ec': + cob_param = 'ec_curve=' + curve_or_bits + else: + cob_param = 'rsa_keysize=' + curve_or_bits + + subprocess.run([KEY_GEN, 'type=' + curve_type, cob_param, + 'format=der', 'filename=' + TMP_DER_FILE], check=True) + +def convert_der_to_c(array_name: str) -> str: + """Convert a DER file content to a C array. The name of such array is + provided as input parameter. The file to be converted is the temporary + TMP_DER_FILE.""" + output_text = "const unsigned char {}[] = {{\n".format(array_name) + + with open(TMP_DER_FILE, 'rb') as input_file: + data_block = input_file.read(BYTES_PER_LINE) + while data_block: + new_line = ' ' + ', '.join(['{:#04x}'.format(b) for b in data_block]) + output_text = output_text + new_line + ",\n" + data_block = input_file.read(BYTES_PER_LINE) + + output_text = output_text + "};\n" + + return output_text + +def write_header(macro_name: str): + return ("/* This macro was generated from tests/scripts/generate_test_keys.py */\n" + + "/* BEGIN FILE string macro {} */\n".format(macro_name)) + +def write_footer(): + return "/* END FILE */\n" + +def main(): + # Remove intermediate and output files if already existing. + if os.path.exists(OUTPUT_HEADER_FILE): + os.remove(OUTPUT_HEADER_FILE) + if os.path.exists(TMP_DER_FILE): + os.remove(TMP_DER_FILE) + + output_file = open(OUTPUT_HEADER_FILE, 'at') + + add_newline = False + for key in KEYS: + # Use gen_key tool to generate the desired key (in DER format) and save + # it into a temporary file. + generate_der_file(KEYS[key][0], KEYS[key][1]) + # Convert the key from binary format to a C array and append the result + # to the output header file. + if add_newline: + output_file.write("\n") + output_file.write(write_header(key)) + c_data = convert_der_to_c(key) + output_file.write(c_data) + output_file.write(write_footer()) + # Remove the temporary key file. + os.remove(TMP_DER_FILE) + add_newline = True + +if __name__ == '__main__': + sys.exit(main()) diff --git a/tests/src/test_keys.h b/tests/src/test_keys.h index 21737b247a..0c9fc6edaf 100644 --- a/tests/src/test_keys.h +++ b/tests/src/test_keys.h @@ -1,311 +1,742 @@ -/** - * Predefined keys to be used in test_suite_pk. - * - * They were automatically generated with the following bash script: - * - * ``` - * LIST="secp521r1 brainpoolP512r1 secp384r1 brainpoolP384r1 secp256r1 secp256k1 - * brainpoolP256r1 secp224r1 secp224k1 secp192r1 secp192k1 x25519 x448" - * - * for item in $LIST; do - * ./programs/pkey/gen_key type=ec ec_curve=$item filename="tests/data_files/ec_$item.der" format=der - * done - * - * LIST="1024 1026 1028 1030 2048 4096" - * - * for item in $LIST; do - * ./programs/pkey/gen_key type=rsa rsa_keysize=$item filename="tests/data_files/rsa_$item.der" format=der - * done - * ``` - */ - -struct rsa_key { - int bits; - const char *key; +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_1024 */ +const unsigned char test_rsa_1024[] = { + 0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xa3, + 0x41, 0xeb, 0xfb, 0x42, 0x66, 0xcb, 0x43, 0x5d, 0xa1, 0x0a, 0x6f, 0xdc, + 0x66, 0x35, 0x71, 0x49, 0x6c, 0x03, 0x09, 0x0b, 0x3b, 0x02, 0x2e, 0xeb, + 0x8b, 0x9c, 0xed, 0x0a, 0x9b, 0xc4, 0x80, 0xa4, 0xf3, 0x80, 0x2d, 0xa0, + 0x22, 0x22, 0x4c, 0x84, 0x81, 0x13, 0x05, 0x0c, 0xdc, 0x62, 0xe0, 0xd3, + 0x19, 0x4a, 0x1e, 0x47, 0x16, 0x44, 0x4b, 0xc8, 0x61, 0x30, 0x13, 0x2c, + 0x8c, 0xa6, 0x31, 0x6e, 0x2b, 0xbe, 0x17, 0x64, 0x60, 0xbe, 0xb5, 0x7c, + 0xea, 0xbe, 0xe1, 0xb3, 0x20, 0x9f, 0x13, 0x71, 0x97, 0x12, 0x3c, 0x2c, + 0x09, 0xd8, 0x95, 0x88, 0x6b, 0x01, 0x10, 0x12, 0x6d, 0x18, 0xd3, 0xf7, + 0x2d, 0xab, 0x10, 0x2a, 0xd1, 0x32, 0x72, 0x52, 0x4b, 0xd9, 0x21, 0xea, + 0x14, 0x93, 0xac, 0x9a, 0x18, 0x80, 0x02, 0x54, 0x42, 0x6a, 0xfc, 0xed, + 0x0f, 0xec, 0xb3, 0xdf, 0x2b, 0x54, 0x31, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x01, 0x1f, 0xc4, 0xd3, 0x71, 0xd1, 0x59, 0xe0, 0x70, + 0x9e, 0x59, 0x7f, 0x4c, 0x2d, 0xf2, 0xfb, 0xc0, 0xf4, 0xea, 0xaf, 0x6f, + 0x01, 0x9c, 0xc1, 0xfc, 0x72, 0xb5, 0x65, 0xa7, 0x6f, 0x4b, 0xa2, 0xd4, + 0x1f, 0xee, 0x17, 0xc2, 0x54, 0xc1, 0xd6, 0x33, 0x8a, 0x5c, 0xfa, 0x69, + 0xac, 0x81, 0xcc, 0xc8, 0xff, 0x51, 0x54, 0x94, 0x8a, 0x39, 0x75, 0xa9, + 0x1f, 0x4c, 0x30, 0xb1, 0x9b, 0x95, 0x50, 0x5a, 0x7f, 0x9e, 0xc7, 0xd1, + 0x4c, 0x92, 0x20, 0x55, 0x4f, 0xe6, 0x8e, 0xb0, 0xfc, 0x77, 0xc3, 0x79, + 0x81, 0x9e, 0xda, 0xae, 0xed, 0xfd, 0x05, 0xd9, 0x37, 0xaa, 0x4b, 0xd4, + 0x9b, 0xa0, 0x3c, 0xd0, 0x86, 0xe1, 0xa5, 0x6f, 0x19, 0xe1, 0x59, 0x57, + 0xcb, 0xbf, 0x37, 0x0d, 0xbe, 0x17, 0xf5, 0xab, 0x13, 0x76, 0x9a, 0xef, + 0x8c, 0x7e, 0xca, 0xc4, 0x78, 0x20, 0x20, 0x10, 0x90, 0x4a, 0x81, 0x02, + 0x41, 0x00, 0xd6, 0x08, 0x58, 0x09, 0xc8, 0xba, 0x06, 0xa9, 0xf0, 0x0f, + 0x9e, 0x62, 0x0a, 0xde, 0xe3, 0x15, 0x87, 0xac, 0x19, 0x6f, 0x5b, 0x65, + 0x77, 0x77, 0x41, 0xf2, 0xf9, 0x2d, 0xb1, 0x10, 0x50, 0x9e, 0xa2, 0xe9, + 0xa2, 0xe1, 0x0d, 0xf4, 0xa9, 0x31, 0x43, 0x7f, 0xe8, 0xbd, 0xbd, 0xab, + 0x9c, 0x3d, 0xb6, 0x11, 0x20, 0xcb, 0x93, 0xbe, 0xc0, 0x0e, 0xa7, 0x91, + 0xf9, 0x77, 0xe9, 0x5a, 0xdf, 0x21, 0x02, 0x41, 0x00, 0xc3, 0x44, 0xda, + 0x87, 0x88, 0xfe, 0x44, 0xef, 0x5c, 0x80, 0x6e, 0x4f, 0x69, 0x31, 0xd9, + 0x86, 0x57, 0x5a, 0xf4, 0x16, 0xd4, 0x84, 0x11, 0xc9, 0x77, 0xac, 0xec, + 0xcc, 0x2a, 0xec, 0xd3, 0x4d, 0xff, 0xc4, 0x49, 0xd0, 0x3b, 0x2d, 0x1f, + 0x77, 0x27, 0x6c, 0x7b, 0x7f, 0x00, 0xc9, 0x02, 0xea, 0x1e, 0x87, 0x7b, + 0x5a, 0x67, 0xc4, 0xdb, 0x6d, 0xc4, 0xc5, 0xcd, 0xaf, 0x04, 0x81, 0x23, + 0x11, 0x02, 0x41, 0x00, 0xc1, 0x1d, 0x6e, 0x32, 0x05, 0xc6, 0xb3, 0x54, + 0x89, 0xa1, 0xce, 0x0a, 0x30, 0x3c, 0xc3, 0x30, 0x1d, 0xe6, 0x0e, 0x5d, + 0x07, 0x5e, 0x19, 0xd8, 0xa4, 0xcc, 0x92, 0x3f, 0xc3, 0xcf, 0x30, 0xae, + 0xb1, 0xd7, 0x94, 0x7a, 0xf3, 0x98, 0x99, 0x40, 0x35, 0xe3, 0x27, 0x20, + 0x6c, 0x0e, 0x77, 0x3e, 0xc7, 0x13, 0xd5, 0x3f, 0x59, 0xe3, 0x76, 0x6e, + 0xc2, 0x8b, 0x57, 0x47, 0xf6, 0x69, 0x63, 0x81, 0x02, 0x40, 0x78, 0x14, + 0xa9, 0x86, 0x5b, 0xba, 0x71, 0xcd, 0xf8, 0xc6, 0x8a, 0x0f, 0x8f, 0x93, + 0x36, 0x3f, 0xa5, 0x0c, 0xab, 0xba, 0x36, 0x6a, 0x19, 0x3e, 0x19, 0xb8, + 0x5f, 0xce, 0x96, 0x3f, 0x19, 0x1a, 0x88, 0x44, 0xbf, 0x57, 0xac, 0x6c, + 0x6d, 0x43, 0x2b, 0x1d, 0x4d, 0x3c, 0xa6, 0xd0, 0xf6, 0x57, 0xde, 0xfa, + 0x55, 0xe3, 0x1c, 0x99, 0x34, 0x8f, 0x66, 0x48, 0x75, 0xda, 0x41, 0x1c, + 0xe0, 0xe1, 0x02, 0x41, 0x00, 0xa1, 0x87, 0x23, 0x89, 0x69, 0x7e, 0x0b, + 0x69, 0x03, 0xac, 0x76, 0x05, 0xad, 0x42, 0xe9, 0x3f, 0xfc, 0xe7, 0x03, + 0x49, 0x8e, 0x0a, 0xcf, 0x74, 0x82, 0x7f, 0x00, 0x43, 0x14, 0x7e, 0x0c, + 0xce, 0xe7, 0x8b, 0xcb, 0x94, 0xf1, 0xae, 0x0b, 0xf2, 0x53, 0xfc, 0xa9, + 0xd1, 0x45, 0x95, 0x43, 0x0f, 0x16, 0x67, 0x52, 0x3f, 0xb9, 0x0b, 0x3d, + 0xc3, 0xce, 0x82, 0x69, 0x90, 0x35, 0xa6, 0x15, 0xef, }; +/* END FILE */ -struct rsa_key rsa_key_data_lut[] = { - { 1024, - "3082025b020100028181009a1c55b1d24441a3a752f8e9d08b3392f2e95b" - "741468627cce9eee9c089928b98f77a1f3b0e4abb35552838071e4f853a5" - "b9dd04ca939240dd66632c48f15fdd6186249fc0043ef52a97d7bb6fecf4" - "be5d0e6aba78731782b8f070efdf4853d7f44ce58e89855a92a0274c007e" - "cd21de781ab4ae67a89774d160165b2000ee0f02030100010281802616a9" - "b15cd404db13404507d8c486b723753c66a8a291f0e1ca5313da662c340c" - "7ad75a98d6337f8baf6c93e2d261f39e8a9ccf11d83e35ece260d171a7c2" - "76dcf28aefbda457fac13fc85d154325ad339d7afae2c4dff93ad58550db" - "3e7cdd0bea9f1f4ef96a560f942924c0b19780a702b44990caad692346f5" - "bf45295091024100c90be3f126e0a4b8ac560bca99f3bd980842de6f90fa" - "f1e32bc9b029efd7ae8a5f6defa8195e3d3c70ebaa91d2cee080a93d4e7e" - "7f89dea09623dc7ce7aa8351024100c43c242651b315de5f10c0923dd0e5" - "e8308b2e57a9a6f71583ac20d65d12bf3f0b63a86ef9a4e093376c9d48ee" - "ab2c79f4d6a144ff43304912f8806ae29c435f02404d426d8141c0786ca3" - "8599986d1b36d3d2f0e78c1639e974b4621879b53abc4f5ea6dfbf48a867" - "7defa310f462ffaf54a234f61234aee5c7ee8aaf73ac8f6151024019076e" - "b8f07cbe1251dfca201d005302ad86630fcd54bd792205475ef01a1f0884" - "845e8c610d1593d162ea20ce4848f0f93892f340f7a9e5f8247804aa08b2" - "5302405f19b2ef1b2452e9a5edb032b673bd3e277ebc3f777a922b22c913" - "7d4028626b0445db61f42a99b4e5f28c3faf9a774604db172092eee0fdef" - "9526f7aec8a856" }, - { 1026, - "3082025d0201000281810344ca3e3712ee43d1ea5d493baa485d94fee503" - "323d37dc49b907b11b6b534669b2e572123ab6b5b8223b87e22d60c3be86" - "19f6a39f1d76f581f4dda46701628a6dff5316c6efb81bdcbe2cc20173cd" - "75c076b7ec84a61b6b80cffc16fa045cf68346013ed639e93708bf264072" - "63bc6a39ace26cf0eb24e2c0e6597fbab1f9bb0203010001028181010d06" - "b085e8522dffb90790d9dbdf342708e3fbe915017693452791eb2cd0331d" - "1c64e40db44eb591a37fdc29fd48d4e5d61b56ce3803b3112f5cd83d58d8" - "7b22b818641bba62adf3d5ca44f8523221b1068639ad865e7a7e6fc69aa2" - "1091fdf1a325d1b2c6a0ddd1f27883f01aa15b0b193311d357776b6ce52c" - "51ac1d8c0601024101ec7ae8715bbda8d4db6636396c1582e8e234275dc9" - "d272b0c31848f96dd201f4cc01ac857e25ce2b316ae1798c83a9786c2f8c" - "f71d3cbf2db13861814c9ea481024101b2fa7cd232925b355dda2d5f10a2" - "f0a05aa91ba74be5c088444d681e1dc0b2c85acfec84c1470233aa4bb5c9" - "db0b48853a410eb7d58b07afda91c54012da103b02410169dcc9ccf986fb" - "76241c0f7dd3f05e777636b23254e88083676701bfdd34f1610941b59d85" - "1a8c49ea8ec94c41b640a10e8546041184a04917ae00df3c08598102406d" - "90e2f81f7cf6348f1b71ea4c4a7eca258c0b472cbb06b04c642321d2e4c3" - "23ec9c0b3bb563a98e520b18136c757f22eff58b3b8b32a61109c1462a49" - "955c1902401e737a46f09dbc770e7c6ee0b1cce304a8d5bb93d300020c86" - "b0ce9fc2296307959a7f07ae859c94e9e57d511bd992080e8aa23f5e7b97" - "47c42bbda86f3c6f06" }, - { 1028, - "3082025f0201000281810aa49a11be540d741e513621f39d1ecd72a7b020" - "d50272d5fbff59b638770f4abaeecc3240c8f8fadecf1a2d4a23d47ba702" - "f5c92db1533b835c768e0d395c43931d7525c56aa71266a5dbd7b4c87c96" - "52536cd520e61762573274897f3ad77b83f43584660caee3fe3a9fa27b3f" - "50d71409feb01956faf9b966e1b08464f0210702030100010281810105c9" - "cbf4a6acd840657b370dea45e065a8d9127e850ab5a6cde537cdfb1a9c0a" - "941148aed2e0a172312209c1fae95aac346b9b55e998deba03735cb8c68f" - "27ea64e6f99d86428a80176115b2d6f5e12d7b9dce5cb68570968f876c69" - "762ab664be06d4590c2a168c1180e78ba8787110fd61f0043bd99206b0d4" - "3ba39a14bee90241037e44c625d91b753c86804b18f22851b6ca2f50d8f8" - "ee71bf53d18e88bbd5aa9fcbcbcad3b415f115a38d9a1858300783343ae0" - "8ccdaa64baab34fca617aa303b0241030bf6fd42a34f02155a61667a6482" - "33a3d683288b36c7530ed1bff81f2ae2e55ccd7c9d28c968568bbbd2b0ff" - "5701335abf1f9785395b136b539a4ecefc8f71a50241031d89986e08c244" - "3c46780481aaf5ea6a6ac6e803997e8e53641d7050e1b41d078669a9ea44" - "a18cf10f7c2a01ac24a98e89f6386d5abeac370e99a2f93e01ba21024101" - "ec7b1efd05aaec90d909a9305ce84d7d0504ba03f529b48b25ebc5dac034" - "96489bc33464bd8fb11df811980b123fc2d268dda4c9cd2671c391fd5c07" - "9c3762b5024103632899c6c15aee731835c5ca4a75f2236e86a1f701be19" - "386d4218d346c371c2b9c08930abf423aca3dbf1e7caf79ecdea6aa66775" - "7e7dce5852faef59fcfc2f" }, - { 1030, - "3082025e0201000281812ebe4c4d2a6cd165ebbc6a4bb53dd1bc96dab169" - "d6c34ebe5a68f3c3b2d385533045901db0dffc9aebf13c44a6aab2a81f63" - "0ed26ee2d4b19bd49abceff7331cdf6f6aae6075631bf72236ff7e546270" - "a8b85cab40589ec7c767114aaa3ddd1b35fe999183f21ca02bf3a840422e" - "1b06a723fdd0c55c7dfaa0345e2f918884ddb90203010001028181016f27" - "a7d8778ff1e3754657a8a9cb15266b1db56f22fd4d5c3875d3992ee1f0dc" - "52ce14b322c9928bf9bcb7d330a54700f6339eb8f5ef1667547323a7ede5" - "9cbfecda40b4976795aeb53729f09455bd86c4ff6c257dfe8ad0d63ed1a6" - "5f7da87c3acdbfe27ccc423739859b860ea28bf004f30be5f1543253a572" - "43a5b426d98102410703b35b5221d562f0732901c9b67d2ee7c33c89e03c" - "750f0a5978877ba7c2149c10e74ef339500536adbe18e17084bcf557513b" - "f02f933713fe5065b69028ef59024106a9f2bff289987d993b27a541eae6" - "1a1dd3cf34cd174cb148f59f0e70bfa5b0ea18e64e552379a92d321e37cd" - "1a9dd5174d2f84afd83778437b6d9ebe5f42f561024056db7c1552f1a161" - "84107db7a60e1410bdced5d474d82cac117bd501d4317d11b77798c80703" - "a9dce53686b990d9bad21b3120b713760979fc1923725b32bfb10241030e" - "8c936e7f9ddae7a2922225a5ca5dea96d1f327ad6b79dbbd08748855f17c" - "c13620d7880898f3790f077b937385394dd2135d2b88e4911f6b8c3288a3" - "8c44a1024101e712867c169a6f391cd8f3ce6d7672ed7e90e6590647ebb8" - "9bf55924c8cc487a91307b0cbd6f6a5e781dd5b160ac7efe0aba5b2757b3" - "b7b00881c25070dda042" }, - { 2048, - "308204a302010002820101009912d469d8864df984bd8ea0d1a4e9bef9b3" - "d3ee7249801cd28195d1f3cd71b12aed430dba25012f69effca752337897" - "ae3b29df272d1d5dc6495553d0398f86eddf4bd2084f379aaac0f05d33ab" - "f6279d495394034c8e8ee5aeb6f0da9404eb8c773f8bec6a3199187ed681" - "55dacdc9c1db2f73dfde416ee63f87786da3cc94631ea2adaa3185fce12c" - "1c05659e5addaafcab1b7484a823cdfadab90f8555da052bb92c61a96bb6" - "2c2b6acbb06e0b01e65605905e42a64def5cc29fc2c04275f4a0a07bcf7a" - "49978c820a4710b605ef15c8aa0678636f73f99d79f235548856c8bbf104" - "344b209e46bc14acca95050cb4aac1cfc0a28c9d9dc05ab3ee0cf40d0203" - "01000102820100156455048cc2aa2b7c723c383bcc12f18236701ff2df54" - "34d2f352a37271abd99150f28dbccd96969074be2788fc91f60a9e9089b3" - "d121793d307ae8f960cdeed297e1e1f290d589bb22b704a367bd0108c15a" - "59854381e9b4edff7975e679308ce30e61a8d2a767488dd33ee4676d5a6c" - "89cbde22f34dcc2887c8d01aec68f6bd7551b8155dfc8cf10a3f43c8ecdc" - "e55ade57f0041d58878bf7420e8d945bbe858829f55d86b6fe466ce135cd" - "34db478a16125a989978266ed38b8f8c204f3873cee95191c41549296ee5" - "6e8e7300f9b35700f8aed9c0a1a545ecb9f4d09bfa5c9044bc307ad30ac0" - "c6e27b6ce9ffbeed6213110a9aa821d0c7e85cb5ad349902818100c7feea" - "fc0076c99dd4b4259fc84c12f4290a6f468e538b6fd8d8aeea4ccc9fe3a3" - "83add1964e13bf5b0e081fa401155938962b7a2420800f2e4926ca57f735" - "31b5ac1beb22fa98b02640ee67c63ecd250e93a76791c1789f939b8bceb2" - "26c2e43b8d1590d401829d83df5749744031d5839e7aa9833d1fbad5a504" - "75af833a8902818100c3f033c251d3c857eebae23547fedf350103c91f7a" - "a549c37ddec96003691a652c53b1ba46dd687117b3a6007fc340c46ad110" - "8d6d5c096a7de8f3773ac866352888f17a7502cf45f3f3d021d8b5719bd2" - "98c7f59e3f4f675052800c653be810ec4c4d7c9481e59205d2b0e628e436" - "1a4ea4375a84a71c8de549ef546a68fc65028181009883e43b4d3749459d" - "81cbf76fcde3de62b5dc6a17fbca27ff5c2ef7ea9d5989459713a4f35493" - "66a84fa90e4809b37818d91c4ac6e62a0269afcb6f1f6a1c1cce8873b9fb" - "30d3e3f1282f26e05de01fd45ff197dfe584d15cc58ff68e9154aaac6748" - "fceb5043854f9db07909b832c8bad8ce7e1ae1302350edc8dade7fdad102" - "818042dcc90cda97869a5b20f2e873b509be30a6760f83eebb89367ebc01" - "43a8ae1530572f22fde3b82c3f8652738125c40842db2ce6d616be2fd4df" - "95956e3dcc82ff5e1be949dcb7968b74fbe550ea39e68eab0c3148db19e1" - "8b8b5b9edf3cde28483a91869db6e5fc3a78775d533eed2775069ccd0acf" - "6bf30ff776f03b8faff1028180613011e3c3c1e97ed0d4c05f64d46b73e8" - "c93ff671ab2bc497aadfae36d803c3e2d7e2ae6a99c36ceebeb86dd5ccd5" - "d6f3304821b44e2ee2bb5540f9104d02e7cee6315024096120fb12a98bc1" - "1f4f08acf31e6f0cf75ec44b046382344eb1a299a3996ca9b63f71b9fc96" - "9f9c76846382c7b026c57cdfdeb53eff85b4f6b373" }, - { 4096, - "3082092702010002820201009ffa9b03aab78e5980223bed1811991bf244" - "20e7a277efc45fb01e9d756eba9e57b17b7f198d03e5731f7c8adbcecd6c" - "c75c1185228aa3eb650e3df03d10b8c4ee4794be04d48f304a3884589789" - "8baa4aae806ff9645318345bb532c7aa85be1de3e4d87873fb709a9af4ed" - "984fc2d8f42a98a233204eb50ecce01fef9eaf0ff82324dea54ea7cc909b" - "164a58c71f8b47edb097099cb27ee2ba1cd7c37dfbf28e0685a418b1cb5f" - "e6cea64d0d3f8b713a628fa9afc385f067323781e72f91a8a1808721ee4d" - "369d551f5cbdaadd9d1131ad5652ef71d91be6e701852ad7cf666eb7866a" - "ea556a44087f76a2ca120ca53ff5abf6771884f60546d9373328c7150b41" - "827207cac3fbe295e4361f4c713f301ae095d9cc521dc1a08828320bf6bd" - "7f63d1f7b81702f4738c6aa7992a1a34550a41ca794326e28c9d3a5997fa" - "af907bbd832a2e704ce6f867dada308cd28a06b37819a04f7c57fb10ad44" - "4f7189ff64a58ae419b1623792704db86a8b75ea5deaae967837757863b1" - "b43b55a27be101d714c6f7019a6339470349632b2ac5ba66258f8db5b80f" - "fda6b2b078b9716d704f8d1abd90b0364474c41dbb67699fe753f6c37a89" - "9887c0eb76f8db872329f2250c30917561242a64bbf341679a0d3e127bb7" - "66cdba9a0ae4f15e6220571a083fb9c487c9deff3b029653783a3c205e3d" - "5e9aaed05e4ee8b0e13a03a9fac502030100010282020010fdfc531261f6" - "c3b8e169fe0fed6696da4fb4330645b8f8e1b5023b754ab295b8f8c80642" - "ff806771a7e98192414ffe7ada639e01823a50f965dedc5290212001b326" - "b05c30fb988479a64d06a37c6b350d7de4e6d76a200b07a6a26324d099d5" - "f0ebd0b65293656d7682076e83224e0af92f4723290e531ae455f5ee6cab" - "6985d0adccdc4013809de76b21b0764dfa6c4469da51120cbf7f738736bf" - "b3f4fbd96c05ebdd179d636d4f8bc8695cd381ce52c3b1a152a23a5babb0" - "cba273a204084b6f8f0211bf784c9f4d2974299fd240b58992bb8e1b2264" - "8f2ad12b30cafdb54ad7032a2ab263d1874061a016f4b2e4ad427ba640bb" - "76aa2ed14994ac8320a4d81ba570d35184956f049be8c6c7da7938cc5105" - "c07bfba6b990687b94066def18ac3525c139707ae781c1e66931241137c1" - "0854ee00a74c9c52dc67f1964721891b8302dc4719c60f10af993d69ddce" - "b128da65a36f4d0829e84c74f3570d8db747a6db352c22061c2603f255f6" - "72f11f11c6f7bcecbbdc16f3995c87e5b840fba8b65a24043fc6dd0f8e1c" - "24b3cbb047f56813073b6bb81996f79452ec2aa9ed995bd5d0d6fe4a0315" - "2eac8e4f2ceb7ee4aece6760820f0e787d9abab312a435daf8dc3e28125e" - "f67107844dba0136a2d5d4b7ce6fc7d5159419d399eb42c5e7818b437c1d" - "1a1d4551358ad5e5dc2a757e9f1f12de1a2eb463b748b6c3ad0282010100" - "e18b2f5736dccd61f604efd0c1921186d188c54849c6f78aff4964d1fe27" - "c0727f057d8bb2e5b86efcc1121e4a791d84acd643c38a75fdcf38167260" - "948f23cb0f40c555c1edebf1582439e7b404d9df48de9e6100d9c0084eb3" - "59716f2f6ebdebf17c1438ff5a2864b621e79b1b28e7f6e2e7893fbaa1c5" - "19fda27e900f7b15f3fbfce98c7b5dac4e86701346a5bb84a5f2330661d2" - "677c8ff47b65851e596334e4d057c3e1bec0df01313919f68a20ac3fc3b8" - "df5f52ee6e21b9698dff82d1dbc37b2f9cb12036e2d76024ff7a586327d5" - "1fad8b7c1d99163827caee7b61e908b0fcf51d3264b8a11abd121993676c" - "10d715a345c197d0f4f42e85f74647b30282010100b594e9e77eed5cbb93" - "8234af03d2415ed0f8cd99e86033799d68b6547986f27131550d0bb45831" - "7ccf1841f0d398fd14c75bf57de7d6a096642b9864e2b07e5248b1f48306" - "2fdaa683a87a90aa05e3bbacc4b8eed9929b73eaec5ece7424af6e751afb" - "348a28e14a3218e700f0069d1330324b71ee9ba0cf516586c8f0a139f022" - "b612173276b40646b2f3d1063ddebee38daa61248ee58594da0168c4382f" - "2fff763cdfd69c5765d6f75f7d1d6a1db6cfd894118451fe58ded97f54db" - "703e6ed770452e70c6988238ec0ed599bd5cc550874344873e1040374c6d" - "373a485c2d2adeac3b89a7615542e0833433c119b1c0c784c76446f68e8b" - "9a2fb7d20f77a7028201007f3f96bafef1fe52298a497f1ee6f94a760753" - "3ee09907ea7cf37c95596e360ea30986f67d3d4c1c1a3017b7cd4e9dcfcf" - "efa715b895af57ed0e0503e66d07c5b5da563b770973d79b61fce573d454" - "d3bbfa15a326e6b3883c56c5bcd0fd12dec6325d4dcf8689e84641d7c922" - "e264e6d28cdc12bc48e0a22272cdedd7fb53f763cb24bae38e6aa01f418c" - "13e404f751f48a3c2d7a9d49d3a6284a4251a378cd16f78d7026ccc3616f" - "afed8488d866bfde4eaf6f2b5f4d9bc5b8f331d17279ed4aaef45e3d6a55" - "8181e3ff93802c179801ce256c3549162ddbb25d090a19c478c4758e9200" - "22015f854d5fa4c997377f69d4df99596ecae7927bfd8f899e362f028201" - "000a34532cca4a4692d80852339fb05a321ce64e8f9eaa815a0d498c2d95" - "22cb4f272993711bf274dd81b9e842c3716e8f93608c9c45c21f06349cea" - "9488d4c854917746b97248902e196a077147cccaee8a1808188c2b9c06d8" - "a5edf2063ee588fc95c6963e496bd7c296f9ac68d0c65504b95eda0941bf" - "b8c6e740badc2303618661db0468b699095d41c347f4e4d736bd0d020d31" - "83c24c4e802de2185cdbf203963e7789d501685cbb4c2778d6b4d2c83d70" - "9cc765e0385855babd2713d8be5be7184c32d4464fd32918f052127d3b2d" - "7a5c8266634b80805b102c315f4da6d028f15eeb2e77ded5c24e3d49c749" - "4d5efb177029277fc5a4fcc63fbb53593302820100689328a8b7c6de5b11" - "1934790c4152320c1a63a090bbb5d243517fe1f0203729828806897f157d" - "57d02333dc2c56a846eb286412473bab9ab68d144b991a3af9fee228c7ea" - "904d6b3aef2e42245abf4d777385b877c86a9b16b5d7c9cab1221576d88d" - "ee4993f130236744acbbf45c6bbd2dcaafc00f2cf36537e54e8a99ea8084" - "801d4f403376c0339de7f3867f2360af6fc0047cc85359669b90156a31aa" - "fe34570fbe1342f9e5743d45646aab7009b73c9e63b7a458c423f3b8de81" - "c83de5b0fe60bb7a235d7d1a931cca548639ed4e629386c7de98d8840ba2" - "bcb02d8adc59e179b27a4705426b313497c43aaacc953ae92c702af10a2d" - "a5db9b0688c41f" }, +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_1026 */ +const unsigned char test_rsa_1026[] = { + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x03, 0x17, + 0x5c, 0xd2, 0x6b, 0x55, 0xf6, 0x1a, 0x0b, 0x42, 0x33, 0xc8, 0x18, 0x08, + 0x26, 0x31, 0x35, 0x04, 0x0a, 0xdb, 0xab, 0x0b, 0xd9, 0x49, 0x70, 0x59, + 0xcb, 0x51, 0xce, 0xc7, 0x14, 0x7c, 0xd6, 0xdf, 0xaf, 0x26, 0x71, 0xac, + 0x1f, 0xf9, 0xae, 0xa8, 0xe4, 0xc5, 0xde, 0xfe, 0x84, 0xbb, 0x68, 0x07, + 0xa9, 0x48, 0x82, 0x83, 0x5b, 0xbc, 0x2b, 0x75, 0x32, 0x51, 0xb5, 0x98, + 0xe0, 0x9b, 0xa2, 0xbd, 0x0f, 0x29, 0x96, 0x58, 0x5d, 0xbc, 0x80, 0xeb, + 0x9b, 0xda, 0xae, 0x8c, 0xf4, 0xea, 0x3e, 0xa1, 0xf4, 0x7a, 0x97, 0x13, + 0x42, 0x74, 0x74, 0x47, 0x83, 0xff, 0x31, 0xf8, 0x82, 0x92, 0xe3, 0xb1, + 0x38, 0x30, 0xea, 0x17, 0x67, 0x4b, 0xb6, 0x69, 0xdc, 0x5f, 0x17, 0xf2, + 0x94, 0x3f, 0xc8, 0x07, 0x1b, 0x10, 0x81, 0x8b, 0xd0, 0x2f, 0xfc, 0x8f, + 0xfb, 0xab, 0xa0, 0xa9, 0x02, 0x3b, 0x79, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x04, 0x29, 0x3b, 0x62, 0xcf, 0xe5, 0xe6, 0x60, 0xc1, + 0xfa, 0x28, 0x20, 0x30, 0x39, 0x2e, 0x63, 0x0e, 0x60, 0x95, 0xd6, 0xb5, + 0x67, 0xd7, 0x48, 0x6a, 0x26, 0xdb, 0x55, 0xdd, 0x34, 0xea, 0x92, 0x54, + 0x44, 0xc5, 0x4c, 0xc7, 0x50, 0x51, 0x53, 0xfa, 0x61, 0x5e, 0x5e, 0x95, + 0x9a, 0x05, 0x77, 0xd8, 0x5d, 0xaa, 0xe7, 0xbc, 0xc7, 0x15, 0x4e, 0x69, + 0x31, 0x25, 0x8a, 0xd7, 0x81, 0x25, 0x3d, 0x22, 0xdf, 0xd1, 0x91, 0x78, + 0xd2, 0xd1, 0x24, 0xb9, 0xa6, 0x9a, 0x12, 0xc5, 0xe1, 0xfe, 0xe7, 0x94, + 0xad, 0xbd, 0x9e, 0x6b, 0xe0, 0x97, 0x32, 0x33, 0x6a, 0xae, 0x98, 0x66, + 0xd7, 0x96, 0x7a, 0x72, 0xc7, 0xb4, 0x69, 0xef, 0x3d, 0x20, 0x37, 0x48, + 0xad, 0xd4, 0x92, 0x8a, 0xc0, 0x3f, 0x08, 0xfc, 0x8f, 0x61, 0xcc, 0x60, + 0x60, 0x49, 0xa7, 0xe4, 0xa0, 0x62, 0xf5, 0x7e, 0x19, 0xb5, 0x81, 0x02, + 0x41, 0x01, 0xe7, 0x1d, 0x98, 0x00, 0xc1, 0x36, 0xa4, 0x3e, 0x84, 0x3f, + 0xd1, 0x43, 0x9c, 0x4e, 0xa2, 0x62, 0xb2, 0x6b, 0x5d, 0x93, 0x5d, 0x41, + 0x51, 0x46, 0x6a, 0x75, 0x76, 0x97, 0xcc, 0x38, 0xa9, 0xeb, 0xbf, 0xae, + 0xcb, 0xd8, 0xac, 0x6b, 0x7b, 0xfa, 0xc7, 0x37, 0x6d, 0xc0, 0x7f, 0xb2, + 0x84, 0xaa, 0x6a, 0x54, 0x6f, 0xd7, 0xd0, 0xf6, 0x0c, 0xe6, 0x11, 0xc9, + 0xcc, 0xce, 0xa6, 0xb8, 0x66, 0x69, 0x02, 0x41, 0x01, 0x9f, 0xe5, 0x0e, + 0x78, 0x9f, 0xb4, 0x44, 0xba, 0x29, 0x74, 0xe7, 0xdb, 0x98, 0x44, 0xd2, + 0xa6, 0x03, 0xa6, 0xe7, 0xb4, 0x00, 0x6e, 0xe1, 0xcf, 0xa7, 0xcd, 0xe4, + 0xa8, 0x8e, 0xa7, 0xb8, 0xcd, 0x68, 0x23, 0x07, 0x6f, 0x47, 0xb9, 0xcd, + 0x59, 0x34, 0xc2, 0x9e, 0xc0, 0xb2, 0xed, 0x7a, 0x9b, 0xc2, 0x3d, 0xab, + 0x64, 0x36, 0xdd, 0xf9, 0xf2, 0x2d, 0xc1, 0x42, 0x4f, 0x11, 0x4b, 0x2a, + 0x91, 0x02, 0x41, 0x01, 0x73, 0xdd, 0x4c, 0xc0, 0x2e, 0xc0, 0x37, 0x0c, + 0x9e, 0xcb, 0x55, 0x46, 0xe7, 0x19, 0xc4, 0xaf, 0xd2, 0x03, 0x52, 0xd1, + 0x80, 0x1c, 0xb0, 0x1e, 0x30, 0x81, 0x71, 0xc2, 0x9a, 0x9e, 0x1b, 0x62, + 0x24, 0xd8, 0x1d, 0x38, 0x51, 0x10, 0x50, 0xfa, 0x76, 0x81, 0x23, 0x21, + 0x14, 0x9b, 0x44, 0xda, 0x10, 0x08, 0x5b, 0xc5, 0x86, 0xf9, 0x7f, 0x89, + 0x57, 0xc5, 0x15, 0xbc, 0x20, 0xdc, 0x9f, 0x19, 0x02, 0x41, 0x00, 0xd1, + 0xcd, 0xb6, 0x98, 0x29, 0x50, 0xc2, 0x5e, 0xfb, 0x6c, 0xeb, 0x4e, 0x3f, + 0x29, 0x70, 0xee, 0xa8, 0xe6, 0xf8, 0xfa, 0x38, 0x41, 0xb7, 0x8e, 0x8f, + 0x03, 0x71, 0xf7, 0x8a, 0x47, 0x98, 0x15, 0x9f, 0x14, 0x14, 0xbb, 0x11, + 0x7e, 0xec, 0xd5, 0xb4, 0xa4, 0xfd, 0x7b, 0x0e, 0x88, 0x78, 0x92, 0xbc, + 0xd1, 0x69, 0x75, 0xdb, 0xab, 0xed, 0x5c, 0x3b, 0xb2, 0xc3, 0xa5, 0xa9, + 0x7e, 0xb6, 0xd1, 0x02, 0x41, 0x01, 0x5e, 0x54, 0x53, 0x64, 0x9d, 0x04, + 0xe9, 0xb8, 0x6c, 0x96, 0x61, 0x85, 0xfe, 0x7c, 0x5b, 0x81, 0x46, 0x7b, + 0x92, 0xb7, 0xb7, 0x0a, 0x84, 0x9a, 0x1b, 0xcf, 0x9e, 0x56, 0xcb, 0x25, + 0xd6, 0xe2, 0x7d, 0xb9, 0xf1, 0x7e, 0x25, 0x34, 0x2a, 0x9c, 0xc7, 0x78, + 0xe8, 0x0b, 0xea, 0x04, 0xf8, 0x2e, 0xb0, 0xd5, 0xed, 0xb9, 0xdc, 0x71, + 0xdb, 0x9f, 0xba, 0xe6, 0xe5, 0xbb, 0xbd, 0xc0, 0x7c, 0xd7, }; +/* END FILE */ -const char *ec_key_data_lut[] = { - [MBEDTLS_ECP_DP_SECP192R1] = - "305f020101041856ceb8c9bc8e6562242362d5176916c8cad73cefde6242" - "faa00a06082a8648ce3d030101a134033200047bdb35c272027741d687ae" - "31007a4ed936231556747cf3e916884db6b08cece5a4923ce964b8bcd195" - "b0f53e01d1b9c4", - [MBEDTLS_ECP_DP_SECP224R1] = - "3068020101041cab5caf66f71236bd1c4c4825588c531682b8019882a025" - "ed3814e32fa00706052b81040021a13c033a0004260e79423142a44ce9e5" - "b78144c39e3d2b5b2670af673868083416745e57be42319d8ee6d034ef9c" - "535c7f6cc45ed5026fae66c0dd1298a5", - [MBEDTLS_ECP_DP_SECP256R1] = - "30770201010420b52b83eb4cf15f4fb2bdef164f521b92a4c7329ce83dd2" - "b24fc4080980603b07a00a06082a8648ce3d030107a14403420004dd40ad" - "3c112abb3e7beed40ca349c9a755f930968722865c27ca5d0ca884220b59" - "9e6620019ef8fc9b3050cf90ce8cfb5125db447c21bc567806d39e49b181" - "01", - [MBEDTLS_ECP_DP_SECP384R1] = - "3081a402010104301b3640d9ada2984b5c4406c339fa859c374aa1692990" - "547b0897429689d4b226d20b1ca20fd32d89e853e3b7644dffaba0070605" - "2b81040022a164036200043315c6d4276e8ab4b74b4069bb7a403f4a62e2" - "89bfbfe39738dee4064d7ae22ff32520316f7230302db8fa7b0434ada5ac" - "3f39acd252b5ec2eadbebf55ba7edb2265026a33bae2dbf59314ce081277" - "3f08faef9fb4786d610a8c1c1f348e9627", - [MBEDTLS_ECP_DP_SECP521R1] = - "3081dc020101044201300db372ffd5307db8016608a097cb4ac8440e7419" - "589566518a9b8b4506aa00ddd21d736284d31e02ae3064a0d2b1c3de08ec" - "b6285534e13fefe456fde0337572a00706052b81040023a1818903818600" - "040183a4329055ced8534460a22f00271dc55b9857aad6886355bcac683d" - "461a2281190546929a8e64cdfc1242fb6e3a460b0821b4197b42a0b18253" - "18c59dc74eabbd00c74c4bf20494c05183012229df3da41455673233cb32" - "877f0646b66fc75e4d72ccdc60e5ceb670ed4dc2773916738e2530a3f5fd" - "2c14ec512171e6de772dc21c27", - [MBEDTLS_ECP_DP_BP256R1] = - "307802010104202a248a6523ec929566b473d189d63358aeaa29385c56c4" - "ed52fee5bfbef6705fa00b06092b2403030208010107a14403420004606f" - "09a54c0f6d52ff0c7429ad085332d1e03e60370cd6a7b44c1a15668f28cf" - "14e35f242ae5c7ab089663de47f840b947a7ff4b2b72a820a0136154d6c6" - "c87a", - [MBEDTLS_ECP_DP_BP384R1] = - "3081a802010104301a4da2c6c462c6f115f3a91cfa6006bdb549e4935364" - "b2199d7bc872f1eb9bfcfcc3c997a1ac0064d581f32b3899ba3ba00b0609" - "2b240303020801010ba164036200042d4ed26c2aba8d7c49d52e1e6bfbe6" - "36583f22e50cc94c64442811f504db9f1823c43427ef5fbe9846842a66a7" - "20a1108ac13b1ff05a5d710a51a238ac89ce8f44c0139b9fef4d2c298f2e" - "187bf3c3e51ec05b32b27195d884b166b6c803409c", - [MBEDTLS_ECP_DP_BP512R1] = - "3081da02010104406f2730c70a35827f5a8ff0028f7ce3b28cf9d2711ad2" - "269130c5c72eace8d12efb0afd2f099548afa55bd94dd7361ab63ba1bea0" - "c7d295a67498107cf89acfb3a00b06092b240303020801010da181850381" - "82000464615aa207894e1059a28fc36c9f1d955b518dc668ee3a257b35b7" - "6d1b48820a0c42bf91122a96c5887633d71796d6d541a098534ad09f1f1b" - "0ebaece479e8e0284a7bb28efd1185a77a3ab8715e6e99f9591d44f92ca7" - "b4896d36a9022fdffa0cd7744f4dc462172bc4c027456d8469f41e15bbff" - "0546bac84f4edf3f4fc0c3", - [MBEDTLS_ECP_DP_CURVE25519] = - "302e020100300506032b656e04220420b0a8bd3ffeb3e2a7caa1148f5406" - "20b2dd493faff1d1cda6458822077445cd78", - [MBEDTLS_ECP_DP_SECP192K1] = - "305c02010104186a01a55cc30d77ef9962778f78af3cbb5c7fc7dd1aa9a7" - "b6a00706052b8104001fa1340332000435aa842c4bef314c579910674cf3" - "cb426ce001bdd5ca0586398634776957b1e3afa9473e5b69648ffaa65a1f" - "052be658", - [MBEDTLS_ECP_DP_SECP256K1] = - "30740201010420282608d1c6067366c22ef6ed5aa3b6e31107e6fa535f2b" - "6def935626517883c7a00706052b8104000aa14403420004163f1a8038d1" - "11cd2da34a98b8524180de6c56268cd8b2d315201778d1e7c09da090c2c8" - "da4667bd3e831f444103606875069c222bd1cc9beb84cf2989ad37ec", - [MBEDTLS_ECP_DP_CURVE448] = - "3046020100300506032b656f043a043858ab68f1e135d8d38514774a63a3" - "4c659b3ed783f8cf87531f49927c5e97f459cb324a32ab3dd2f1613ad931" - "cb3df24d5244bc7e4691f1f4", +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_1028 */ +const unsigned char test_rsa_1028[] = { + 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x0f, 0x16, + 0x99, 0x9c, 0x0c, 0xc7, 0xb5, 0x63, 0x2d, 0xec, 0xdc, 0x12, 0x15, 0x15, + 0x12, 0x47, 0x26, 0xcc, 0xa9, 0xba, 0x8d, 0x31, 0x82, 0x63, 0x3e, 0xa9, + 0xdc, 0xa0, 0xa8, 0x7f, 0x02, 0x22, 0x4e, 0x5e, 0xa3, 0x77, 0xee, 0x13, + 0x94, 0x04, 0x76, 0x04, 0x8e, 0x98, 0xab, 0x7c, 0x82, 0xdd, 0x68, 0x5a, + 0xf6, 0xa8, 0x14, 0x5e, 0xf7, 0x43, 0xef, 0x04, 0xb5, 0x3f, 0x6a, 0x31, + 0x93, 0xd6, 0x1a, 0xfa, 0xcd, 0x20, 0x7b, 0x0e, 0xc3, 0x18, 0x39, 0x5f, + 0x7e, 0x1b, 0xa0, 0xe5, 0x85, 0x3e, 0xf7, 0x44, 0x51, 0xcc, 0xf7, 0xf1, + 0xc2, 0xf6, 0x79, 0x15, 0x0e, 0x0b, 0x50, 0x32, 0x35, 0xda, 0xeb, 0xe4, + 0x7d, 0x32, 0x6d, 0x21, 0x9e, 0xb2, 0xa0, 0x99, 0x0c, 0xc6, 0x17, 0xee, + 0xcd, 0xb5, 0xa6, 0x81, 0xa9, 0x91, 0x1b, 0x09, 0xfd, 0x32, 0xf9, 0xa1, + 0x8b, 0x1b, 0xf7, 0x99, 0xaf, 0xd6, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x03, 0x21, 0xe8, 0x06, 0x33, 0xc9, 0x0a, 0x69, 0x6a, + 0xd1, 0x6f, 0xe6, 0xf9, 0x25, 0x84, 0xc3, 0xec, 0xd4, 0x34, 0xb0, 0x9c, + 0x3b, 0x99, 0x1c, 0x4d, 0x98, 0x2a, 0x4b, 0xd8, 0x6f, 0x75, 0xdb, 0xf5, + 0x75, 0x44, 0x6e, 0xd3, 0xa8, 0x90, 0xe4, 0x54, 0x34, 0x21, 0xfe, 0xa4, + 0x2b, 0x97, 0x67, 0xac, 0x10, 0xa6, 0x80, 0xc2, 0xa9, 0xec, 0x9f, 0xd7, + 0xf1, 0x9c, 0x47, 0x6c, 0x1e, 0x9a, 0xd8, 0xa8, 0xe8, 0x5f, 0x76, 0x57, + 0x95, 0x26, 0xc0, 0x97, 0x5e, 0x56, 0x6d, 0x0c, 0x6c, 0xc5, 0x20, 0xd8, + 0x8f, 0xd7, 0xfd, 0xf4, 0x39, 0x97, 0xc2, 0x3b, 0xaa, 0x97, 0xd5, 0xea, + 0xaf, 0xdf, 0x23, 0x27, 0xf3, 0xea, 0x67, 0xd8, 0x52, 0x0a, 0x1f, 0xc2, + 0x5c, 0x3f, 0x56, 0x8f, 0x96, 0xc6, 0x3b, 0xa1, 0x12, 0xaf, 0xd3, 0x07, + 0xb4, 0x67, 0x37, 0x0d, 0xb2, 0x00, 0x80, 0x7b, 0xef, 0x4b, 0x58, 0x51, + 0x02, 0x41, 0x03, 0xe3, 0x05, 0x9f, 0xf4, 0x8d, 0xb5, 0x19, 0x32, 0x73, + 0xf1, 0xe7, 0x65, 0x49, 0xbb, 0xb4, 0xe0, 0x4a, 0x71, 0x23, 0x52, 0x69, + 0xd8, 0x06, 0x78, 0x8c, 0xde, 0x8a, 0x95, 0xfb, 0x70, 0x78, 0x6b, 0x20, + 0xcd, 0xfe, 0x2f, 0x3a, 0x56, 0xc6, 0x77, 0x44, 0xa8, 0x69, 0x32, 0xe6, + 0x1e, 0x58, 0xff, 0x6e, 0xd8, 0xe6, 0x54, 0x9a, 0xcd, 0x4e, 0xe9, 0xe2, + 0x44, 0x2d, 0x44, 0x27, 0x7d, 0x19, 0xdd, 0x02, 0x41, 0x03, 0xe1, 0xc5, + 0xcb, 0x94, 0x19, 0x26, 0x92, 0xdf, 0xf4, 0x81, 0xf1, 0x45, 0xb2, 0x69, + 0x5c, 0xfa, 0x06, 0x79, 0x2e, 0xc7, 0x71, 0xca, 0x94, 0x1e, 0x8b, 0xa8, + 0x2c, 0x93, 0x6b, 0xc2, 0x0d, 0xd0, 0x5e, 0xca, 0x57, 0x12, 0xee, 0x7f, + 0x64, 0xc2, 0x08, 0xaf, 0x6b, 0xa0, 0xdc, 0x2b, 0xe9, 0x40, 0xc9, 0xb8, + 0x49, 0xb2, 0x89, 0xd9, 0x8a, 0x08, 0x46, 0xc7, 0xd8, 0x60, 0xbd, 0x0f, + 0x08, 0xe3, 0x02, 0x41, 0x00, 0x88, 0x3b, 0xc3, 0xeb, 0xca, 0xdf, 0x29, + 0xc5, 0x03, 0xa4, 0xf2, 0x46, 0xa6, 0xf2, 0xc1, 0x50, 0x18, 0x41, 0x27, + 0x51, 0xe8, 0x56, 0x00, 0x84, 0xce, 0xdc, 0xc5, 0x62, 0xc5, 0x9b, 0x5f, + 0x91, 0x63, 0x5b, 0x70, 0xda, 0xec, 0x84, 0xe7, 0x05, 0x7b, 0x6c, 0x07, + 0x83, 0x45, 0x88, 0x90, 0x2c, 0xe0, 0xf3, 0x67, 0x8d, 0xdb, 0xe8, 0x12, + 0x4e, 0xe9, 0x80, 0xe6, 0x25, 0xb7, 0xb6, 0x64, 0x2d, 0x02, 0x41, 0x03, + 0x79, 0x4f, 0xa0, 0x56, 0xf0, 0x0a, 0xec, 0xf5, 0x2d, 0xc1, 0xfb, 0x3f, + 0xfb, 0xe0, 0xfe, 0x2b, 0x61, 0x0f, 0xa1, 0x25, 0x2a, 0x57, 0xb7, 0x25, + 0x7e, 0xa5, 0x08, 0xff, 0x04, 0x37, 0xac, 0x55, 0x03, 0xfe, 0xde, 0xdd, + 0x3a, 0x41, 0x16, 0xd1, 0xed, 0x23, 0xce, 0x95, 0x2d, 0x72, 0xbe, 0x52, + 0x14, 0x32, 0xaf, 0x00, 0xef, 0x0b, 0x95, 0xd2, 0xc2, 0x44, 0xa5, 0x06, + 0x2d, 0x29, 0xff, 0x31, 0x02, 0x41, 0x02, 0xc6, 0xb7, 0xac, 0x1d, 0x3b, + 0x80, 0xc4, 0x46, 0x4a, 0xff, 0xdd, 0x3f, 0xbb, 0x17, 0x4a, 0xf2, 0x19, + 0x3a, 0x74, 0x61, 0xa2, 0xd7, 0xc7, 0xd5, 0x85, 0xa3, 0x72, 0xfe, 0x86, + 0x20, 0x85, 0x5a, 0xa9, 0xb2, 0x84, 0x19, 0xcf, 0x41, 0x4a, 0x62, 0x11, + 0x07, 0x33, 0x82, 0xb2, 0x5f, 0x9f, 0x81, 0xfe, 0x1e, 0x8b, 0x26, 0x32, + 0xaa, 0x3c, 0x75, 0xa7, 0xb3, 0xbc, 0xc5, 0x92, 0x71, 0x88, 0x58, }; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_1030 */ +const unsigned char test_rsa_1030[] = { + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x29, 0x80, + 0x16, 0x41, 0x52, 0x5b, 0x45, 0xb0, 0xcf, 0x21, 0xf3, 0x1e, 0xcf, 0x61, + 0x78, 0x6b, 0xb7, 0x90, 0x12, 0x9b, 0x2c, 0xdb, 0xfa, 0x5a, 0x36, 0x78, + 0xcc, 0xa9, 0xcf, 0x90, 0x3d, 0x76, 0xcd, 0x22, 0x41, 0xb2, 0x24, 0x32, + 0x87, 0xb8, 0x32, 0x88, 0x28, 0xed, 0x69, 0xe9, 0x3d, 0x88, 0x8c, 0x40, + 0xfb, 0x41, 0x59, 0x6e, 0x78, 0x05, 0x5a, 0xa2, 0x5a, 0xb0, 0xba, 0x12, + 0x7e, 0x49, 0x30, 0x2d, 0xc7, 0x87, 0xda, 0xb2, 0xbd, 0xf9, 0x44, 0x61, + 0xd4, 0x9a, 0x3c, 0x8f, 0xb9, 0xac, 0x95, 0xec, 0xc4, 0xe7, 0xed, 0xbc, + 0xf1, 0xed, 0xea, 0xdc, 0xa9, 0x8b, 0x1e, 0x73, 0x09, 0x25, 0xf2, 0xff, + 0xea, 0xf4, 0x4f, 0xfd, 0x14, 0xe8, 0xab, 0x65, 0x80, 0xeb, 0xa4, 0x91, + 0xfa, 0x45, 0x8e, 0xf0, 0x84, 0xff, 0x59, 0x36, 0x40, 0xef, 0xaf, 0x63, + 0x23, 0x51, 0xcf, 0xb5, 0x2b, 0x9d, 0x35, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x08, 0x9c, 0xdf, 0xe1, 0x8a, 0x27, 0x4d, 0xa1, 0x1a, + 0x77, 0xd4, 0x06, 0x60, 0xa9, 0x3c, 0xad, 0xf4, 0x50, 0x77, 0x00, 0x13, + 0xf1, 0x0a, 0x75, 0xe7, 0x08, 0xae, 0x87, 0x0e, 0x80, 0x03, 0xb5, 0x90, + 0x70, 0xab, 0xdc, 0x3e, 0x05, 0x6b, 0xa3, 0xd7, 0x7e, 0xe9, 0x29, 0x8e, + 0x99, 0xbc, 0xae, 0xc6, 0x56, 0xe5, 0x1e, 0x44, 0xa2, 0x77, 0xcf, 0xba, + 0xa5, 0xe7, 0xb6, 0xf6, 0x43, 0x08, 0xc9, 0x02, 0x84, 0xef, 0x41, 0xb5, + 0x04, 0xc5, 0x6f, 0xd8, 0x9a, 0xa0, 0x71, 0xaa, 0x1a, 0x7e, 0xac, 0x57, + 0xb9, 0x73, 0x5a, 0x02, 0xbf, 0x7c, 0xbe, 0x05, 0xf7, 0x7a, 0xa8, 0xf1, + 0x83, 0x1a, 0x58, 0xe1, 0x85, 0xbb, 0x40, 0x87, 0xff, 0x83, 0xbd, 0x9c, + 0x5a, 0x5e, 0xe5, 0x88, 0xe0, 0x88, 0x27, 0xe2, 0xef, 0xbb, 0xb1, 0x23, + 0x33, 0x31, 0x7f, 0x2d, 0x58, 0x14, 0x31, 0xac, 0x36, 0x08, 0xb9, 0x69, + 0x02, 0x41, 0x06, 0xb1, 0xe8, 0x8e, 0xfe, 0x4a, 0x77, 0x67, 0xa0, 0xdd, + 0xb6, 0xb0, 0x94, 0x58, 0xbf, 0x68, 0x67, 0x9d, 0x31, 0xd8, 0x49, 0x55, + 0xf0, 0xc9, 0x50, 0x7b, 0x5f, 0x1d, 0x0d, 0x1b, 0x16, 0x78, 0x5d, 0xe3, + 0x11, 0x9c, 0x58, 0x20, 0xa6, 0xd9, 0xbc, 0x2b, 0x03, 0xb5, 0x2d, 0x99, + 0xaa, 0x67, 0x27, 0x2f, 0x16, 0x45, 0x3c, 0xf6, 0x3d, 0x0b, 0x76, 0xe8, + 0x73, 0x8b, 0x94, 0x38, 0xd1, 0x43, 0x9d, 0x02, 0x41, 0x06, 0x32, 0xe1, + 0x2a, 0xb9, 0x61, 0x5f, 0xa4, 0x5c, 0x67, 0x33, 0x71, 0xaf, 0xa0, 0xa6, + 0xef, 0x95, 0x63, 0x3a, 0x49, 0xef, 0xa6, 0xe6, 0x63, 0x39, 0x54, 0x80, + 0xef, 0x44, 0x49, 0xe0, 0x69, 0x6b, 0xf9, 0xbc, 0x89, 0x60, 0x1c, 0x03, + 0xce, 0x92, 0x53, 0x0d, 0x33, 0x88, 0x64, 0x9b, 0x77, 0xd3, 0x22, 0xec, + 0x1d, 0x94, 0xb5, 0x43, 0x0b, 0xb7, 0x69, 0xd1, 0x1d, 0xfc, 0x70, 0x30, + 0xc8, 0x79, 0x02, 0x41, 0x02, 0xb1, 0x63, 0x02, 0xc9, 0x64, 0x38, 0x9d, + 0x35, 0x46, 0x99, 0x2a, 0x73, 0xb1, 0x32, 0xe4, 0x92, 0xf0, 0xd6, 0xd0, + 0xd1, 0xc6, 0xc0, 0xc0, 0xa9, 0x1f, 0xc6, 0xc5, 0x4f, 0xb5, 0x3a, 0x97, + 0x95, 0xe4, 0x34, 0xfc, 0x37, 0x32, 0x83, 0x0a, 0x87, 0xb6, 0xa1, 0x9a, + 0x29, 0xca, 0x6a, 0x91, 0x6d, 0x60, 0x72, 0x4b, 0xcd, 0x56, 0x9a, 0x7d, + 0x57, 0x09, 0xef, 0x18, 0x10, 0xb9, 0xbd, 0xea, 0xbd, 0x02, 0x40, 0x77, + 0xdb, 0x55, 0xf4, 0xc6, 0x8c, 0x08, 0xc8, 0x09, 0xeb, 0x72, 0xcc, 0xc7, + 0x1f, 0x94, 0xbc, 0xfd, 0xcf, 0xab, 0x41, 0xf4, 0xa3, 0x36, 0x1f, 0x60, + 0x68, 0x94, 0xa9, 0xdd, 0xc2, 0x9b, 0x73, 0xd2, 0x5b, 0x11, 0x2d, 0x37, + 0x30, 0x7a, 0x6b, 0xc6, 0xe6, 0x1a, 0x5c, 0x54, 0xed, 0x01, 0x31, 0xeb, + 0x53, 0x56, 0x30, 0xa3, 0x38, 0x3b, 0x2c, 0x51, 0x4b, 0xc0, 0x2e, 0x0e, + 0xf3, 0x40, 0x51, 0x02, 0x41, 0x03, 0x26, 0x57, 0x0d, 0xf5, 0xdf, 0x3f, + 0x5e, 0x31, 0x00, 0x9b, 0xf0, 0x92, 0x04, 0xfd, 0x97, 0x3e, 0x04, 0x7f, + 0x23, 0xd7, 0x79, 0x3c, 0xd7, 0xe8, 0xe1, 0x0e, 0xf0, 0xc4, 0x9f, 0xdb, + 0x4b, 0x5a, 0x42, 0xd7, 0x63, 0x4f, 0x95, 0x85, 0x35, 0xb9, 0x37, 0x24, + 0x34, 0xeb, 0xa3, 0xc7, 0x27, 0x49, 0x18, 0x78, 0x68, 0x05, 0x45, 0x6c, + 0x9b, 0xa7, 0x60, 0x07, 0x9d, 0x7e, 0x63, 0xad, 0xb7, 0x0c, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_2048 */ +const unsigned char test_rsa_2048[] = { + 0x30, 0x82, 0x04, 0xa5, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xaa, 0x20, 0x13, 0x4a, 0x30, 0x6e, 0x42, 0xaf, 0xcb, 0x0a, 0xb9, 0x31, + 0x8e, 0x5d, 0x85, 0x75, 0xfb, 0x48, 0x35, 0xbe, 0xc0, 0x77, 0x93, 0xcd, + 0x51, 0xf4, 0x22, 0x0d, 0x72, 0x1a, 0xc1, 0x87, 0xf5, 0x6c, 0xb6, 0x68, + 0xb8, 0xc3, 0x63, 0x90, 0xa7, 0x38, 0x86, 0x44, 0xc0, 0xfb, 0x03, 0x0a, + 0x69, 0xc2, 0xb0, 0x3a, 0x15, 0xa5, 0xa0, 0xe9, 0x5a, 0xab, 0x32, 0xbb, + 0xd1, 0x73, 0x88, 0x34, 0x77, 0xc5, 0xae, 0xc9, 0x7d, 0x0d, 0x33, 0x78, + 0x31, 0x57, 0xc0, 0x43, 0xa1, 0x61, 0x90, 0x7f, 0xfc, 0xd9, 0x02, 0x71, + 0x76, 0x96, 0x4e, 0xe5, 0x55, 0xe8, 0x6e, 0x34, 0x1c, 0xd7, 0x8c, 0xab, + 0x7f, 0xec, 0xc2, 0x36, 0xba, 0x4a, 0x04, 0xac, 0xfb, 0x78, 0x74, 0xf1, + 0xc3, 0xff, 0x4d, 0xac, 0x53, 0x27, 0x7a, 0x0d, 0xdc, 0x49, 0xbe, 0x8d, + 0x8f, 0xaa, 0x24, 0x9b, 0xbc, 0x94, 0x6c, 0xfe, 0x23, 0x18, 0xad, 0x80, + 0x9b, 0x68, 0x0e, 0xf6, 0xc7, 0x66, 0xf2, 0xca, 0x64, 0xc6, 0xb5, 0x68, + 0x89, 0xf2, 0xac, 0x93, 0xa8, 0x57, 0x2f, 0xd4, 0xd6, 0xc3, 0xee, 0x84, + 0x7b, 0x20, 0xcb, 0x5a, 0x9f, 0xd5, 0x03, 0x9b, 0x57, 0x44, 0xf3, 0x86, + 0x64, 0x88, 0x79, 0xf5, 0xe9, 0xb9, 0x4b, 0xf8, 0x74, 0x70, 0xea, 0x77, + 0x98, 0x4b, 0x36, 0xc2, 0xa8, 0x63, 0xe8, 0x56, 0x52, 0xae, 0x67, 0xf3, + 0x7c, 0x78, 0x0a, 0x0f, 0x9c, 0xd7, 0xc9, 0xc9, 0x89, 0x8f, 0x47, 0xe7, + 0x3a, 0xb8, 0x0f, 0x85, 0x66, 0xb0, 0x42, 0x2a, 0x55, 0x3c, 0x9c, 0x3c, + 0xcc, 0xc0, 0xf5, 0xc0, 0x20, 0x8b, 0x2f, 0xe4, 0xd1, 0x36, 0xc1, 0x2e, + 0x54, 0x97, 0xa4, 0xe8, 0x6f, 0xac, 0x94, 0x10, 0x43, 0xb8, 0xb9, 0x17, + 0x20, 0x09, 0x45, 0x70, 0x44, 0x0f, 0x47, 0xe2, 0x80, 0x33, 0x30, 0x05, + 0xd0, 0xd2, 0x62, 0x4f, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, + 0x00, 0x13, 0x66, 0x73, 0xfc, 0xae, 0x58, 0x2c, 0x87, 0xa2, 0x76, 0x57, + 0x17, 0x15, 0x1e, 0x8a, 0x15, 0x21, 0xb2, 0x22, 0xda, 0xdd, 0x54, 0xe5, + 0x88, 0x70, 0xf3, 0x8f, 0x9c, 0x8b, 0xea, 0x0c, 0x2e, 0xc6, 0x68, 0x7e, + 0xc6, 0xa3, 0x67, 0x38, 0xa7, 0xea, 0xc1, 0xd1, 0xe1, 0xee, 0x45, 0xd1, + 0x9b, 0x72, 0xe3, 0x0e, 0x38, 0x99, 0x76, 0x59, 0x4a, 0xb3, 0x19, 0xb9, + 0xbf, 0xdc, 0x4b, 0x39, 0xf9, 0x8d, 0xbc, 0xff, 0xc9, 0x1f, 0x57, 0x0d, + 0x8b, 0x03, 0xc9, 0x77, 0x75, 0xde, 0xe5, 0xe2, 0xd6, 0x0d, 0x8d, 0xeb, + 0xae, 0xe7, 0xb0, 0x8d, 0x4f, 0xae, 0xc3, 0xc2, 0x29, 0x74, 0x2e, 0x8a, + 0x6e, 0x96, 0x38, 0x78, 0x0f, 0x48, 0xa0, 0x1f, 0x37, 0x60, 0xb7, 0xe4, + 0x52, 0x1b, 0xa1, 0x36, 0x08, 0xd4, 0x34, 0xb8, 0xc0, 0xf2, 0xe1, 0x7f, + 0xf6, 0xe1, 0xae, 0xab, 0xdd, 0x0c, 0x9c, 0xba, 0x6e, 0xf2, 0xfd, 0xee, + 0x92, 0x22, 0x68, 0x8d, 0x78, 0xb4, 0xc3, 0x67, 0x97, 0xce, 0xae, 0xc5, + 0x3f, 0x9c, 0x41, 0x62, 0xbf, 0xf0, 0xab, 0x1d, 0xe9, 0x62, 0xf9, 0x2e, + 0x63, 0xa7, 0xd5, 0x2d, 0x49, 0xbe, 0x67, 0x4c, 0x76, 0xb6, 0x81, 0x63, + 0xb6, 0x94, 0x86, 0xa7, 0x6a, 0x5a, 0xd8, 0xe4, 0x85, 0xe3, 0x61, 0x0d, + 0xb3, 0x5a, 0x52, 0x5b, 0x6f, 0x59, 0x81, 0xc0, 0x8d, 0xd7, 0xee, 0x0c, + 0xa3, 0xa3, 0xe1, 0x95, 0x5a, 0x09, 0x89, 0x71, 0x4d, 0xe2, 0x97, 0xec, + 0x9b, 0x6a, 0x76, 0x5a, 0xc6, 0x92, 0x61, 0x4b, 0x1d, 0x42, 0xc1, 0x55, + 0x25, 0x29, 0x61, 0x84, 0x75, 0x06, 0xfd, 0x6f, 0xb0, 0xe2, 0xba, 0x8a, + 0xa3, 0x6c, 0x89, 0x6b, 0x57, 0xf6, 0x59, 0x35, 0x9c, 0xef, 0x1d, 0x0b, + 0xb6, 0xe0, 0x0e, 0xcc, 0x31, 0x7a, 0x99, 0x20, 0x6f, 0x4c, 0xa2, 0x9c, + 0xcc, 0x58, 0xc1, 0xb4, 0x65, 0x02, 0x81, 0x81, 0x00, 0xde, 0x2d, 0x72, + 0xf5, 0xad, 0x7b, 0x26, 0xec, 0x59, 0x28, 0x10, 0x87, 0x2c, 0xfe, 0xee, + 0x63, 0x2f, 0xe2, 0xa2, 0xc7, 0xa7, 0x1f, 0xcc, 0xa0, 0x8d, 0xf1, 0x27, + 0x6c, 0xd5, 0xfd, 0x98, 0xe1, 0x5f, 0x85, 0x5b, 0xc0, 0xd3, 0x5b, 0x6b, + 0xbf, 0x3e, 0xa6, 0x2a, 0x28, 0xa4, 0xbf, 0x17, 0xed, 0x68, 0xc1, 0x72, + 0xaa, 0xb2, 0x57, 0x4d, 0x33, 0x24, 0xf8, 0x3b, 0x92, 0x85, 0xa7, 0x6d, + 0xa5, 0x89, 0xfe, 0x32, 0x27, 0x8d, 0x9a, 0xbb, 0x47, 0xf6, 0xa4, 0x6c, + 0x07, 0x44, 0xb0, 0xd3, 0x04, 0x67, 0xae, 0x1d, 0x6e, 0x1a, 0x0e, 0xf3, + 0x4a, 0x3a, 0xe4, 0xae, 0x91, 0xf9, 0x1e, 0x90, 0xbc, 0x84, 0x61, 0x0e, + 0x39, 0x09, 0x92, 0xbf, 0x68, 0x6c, 0xb9, 0xee, 0x6e, 0xbf, 0x20, 0x16, + 0xe9, 0x7f, 0x3c, 0x33, 0x87, 0x4f, 0x1f, 0x7a, 0xcc, 0x93, 0x4e, 0x8f, + 0xea, 0xc2, 0xd1, 0xac, 0x7b, 0x02, 0x81, 0x81, 0x00, 0xc4, 0x06, 0x14, + 0xfb, 0x02, 0xa8, 0xf7, 0x8c, 0x92, 0x72, 0xde, 0xa8, 0x99, 0xf3, 0x62, + 0xb6, 0x09, 0x23, 0x08, 0x3a, 0x27, 0x07, 0xfe, 0x6d, 0x82, 0xa4, 0x74, + 0x10, 0xbc, 0x36, 0xaa, 0xa8, 0x65, 0x52, 0x50, 0x9f, 0xdb, 0x11, 0xa6, + 0xe1, 0xc5, 0xc6, 0x7f, 0xca, 0xb9, 0xc2, 0x56, 0xc0, 0x15, 0x54, 0x7c, + 0x53, 0x3e, 0x3c, 0x78, 0xaf, 0x75, 0x22, 0x0f, 0x65, 0xa2, 0xdd, 0x22, + 0x38, 0xb1, 0x0f, 0x40, 0xc1, 0x45, 0x30, 0x97, 0xf0, 0xc8, 0xc1, 0x32, + 0xde, 0x89, 0x80, 0x4c, 0xdc, 0xe5, 0x2f, 0x69, 0x2c, 0x73, 0xf3, 0xa7, + 0x52, 0x16, 0x50, 0xe2, 0xad, 0x2b, 0xc6, 0x9e, 0x6d, 0x53, 0x4f, 0xb3, + 0x56, 0x0e, 0x3d, 0x78, 0xbf, 0x19, 0xfa, 0x5f, 0x67, 0x91, 0xa5, 0xd8, + 0x2e, 0xd5, 0xb7, 0xd7, 0x3d, 0x6b, 0x06, 0x68, 0x6a, 0x23, 0x27, 0xae, + 0x3c, 0xac, 0x69, 0x0b, 0x3d, 0x02, 0x81, 0x81, 0x00, 0x8f, 0xbb, 0xdb, + 0x69, 0x71, 0x08, 0x01, 0x10, 0x5a, 0x45, 0x7f, 0x1b, 0xd4, 0x52, 0x40, + 0xaa, 0xce, 0x69, 0xd2, 0x61, 0x53, 0x8f, 0x50, 0xf4, 0x75, 0x9f, 0x93, + 0x9f, 0xe7, 0x78, 0x9e, 0x94, 0xff, 0x14, 0xe9, 0x5c, 0xff, 0xdf, 0x5e, + 0xff, 0x64, 0x6a, 0x5f, 0x4f, 0xd7, 0xf5, 0x00, 0x67, 0xc8, 0xa3, 0x8d, + 0xa9, 0x3c, 0xa3, 0x1a, 0x00, 0x82, 0x64, 0x4d, 0x35, 0xe7, 0x5d, 0x7f, + 0xa3, 0xde, 0x78, 0x22, 0xbe, 0x4f, 0xef, 0xd0, 0x45, 0x28, 0x1d, 0x0a, + 0xfe, 0x50, 0xc4, 0x0c, 0x60, 0x07, 0x2b, 0x2f, 0x42, 0xf1, 0x7c, 0xc6, + 0x8c, 0x39, 0x39, 0x84, 0x6e, 0x4f, 0x3a, 0x24, 0xec, 0xb0, 0xbf, 0x91, + 0x51, 0xf9, 0x0d, 0x84, 0xe2, 0xeb, 0xa4, 0x05, 0xca, 0x83, 0xbf, 0x20, + 0xd3, 0x82, 0x4a, 0xd2, 0x13, 0x31, 0x6e, 0xee, 0x24, 0xb7, 0x0f, 0xd6, + 0x2f, 0x4c, 0x46, 0x15, 0x4d, 0x02, 0x81, 0x81, 0x00, 0x8b, 0xa2, 0x39, + 0x77, 0xc4, 0xa1, 0x50, 0x15, 0x96, 0x8c, 0xb5, 0x07, 0x2d, 0x03, 0x2e, + 0xa1, 0xb5, 0x48, 0x7b, 0x27, 0xd1, 0x7d, 0xe4, 0x43, 0x65, 0xf8, 0x77, + 0xa5, 0x24, 0x2d, 0x5c, 0xcb, 0xaf, 0xc1, 0x3f, 0x25, 0x60, 0x0b, 0xe6, + 0xf0, 0x94, 0xcd, 0x9d, 0x62, 0x6f, 0x88, 0x7b, 0xfb, 0x40, 0x36, 0x7a, + 0x89, 0x61, 0x9f, 0xf9, 0xe8, 0x22, 0x6c, 0x2c, 0xc3, 0x9d, 0x8c, 0x20, + 0x40, 0x79, 0xff, 0xff, 0x84, 0xad, 0x20, 0xbc, 0x5b, 0x0c, 0xe6, 0x72, + 0xb2, 0x0b, 0x08, 0x95, 0xb8, 0x14, 0x99, 0xfd, 0x35, 0x69, 0x33, 0x7b, + 0x51, 0x02, 0x0c, 0x84, 0x2c, 0x0f, 0x2e, 0xe0, 0xd3, 0xc7, 0xb0, 0xd2, + 0x72, 0xce, 0x9a, 0x03, 0x55, 0x3d, 0xd0, 0x17, 0xfd, 0xd2, 0xc6, 0x6c, + 0x84, 0x90, 0x40, 0xf0, 0xd6, 0x13, 0x52, 0xf1, 0x36, 0x09, 0xec, 0xce, + 0x34, 0xf2, 0x2b, 0xb1, 0x91, 0x02, 0x81, 0x81, 0x00, 0xc5, 0xf8, 0xda, + 0xdb, 0x52, 0xa6, 0x7b, 0x9a, 0x38, 0x1d, 0xb6, 0x5f, 0x8f, 0x08, 0x54, + 0x17, 0x60, 0xe0, 0x99, 0x06, 0x6b, 0xf9, 0xac, 0xe9, 0x71, 0x38, 0x60, + 0x0d, 0x79, 0x12, 0xe7, 0xd4, 0x47, 0x48, 0xfc, 0x12, 0x5b, 0x73, 0x4a, + 0x9a, 0xca, 0xda, 0x54, 0xaa, 0xb7, 0x4e, 0xf4, 0x2d, 0x70, 0xd5, 0x22, + 0x9f, 0xa0, 0x51, 0x62, 0x2b, 0x7f, 0xa7, 0x14, 0x7d, 0xd4, 0x1e, 0x3e, + 0xfd, 0x26, 0x97, 0x71, 0xaf, 0x01, 0x9d, 0x3b, 0x7a, 0x0f, 0x4d, 0xab, + 0xfb, 0xe8, 0xff, 0xf4, 0x4d, 0xd0, 0xf3, 0x22, 0x5a, 0x37, 0x51, 0xe3, + 0x85, 0x3a, 0x3f, 0x78, 0x36, 0x66, 0xaa, 0x57, 0x69, 0x6a, 0xe9, 0x7a, + 0x55, 0x7c, 0x1c, 0xeb, 0x8c, 0x5f, 0x17, 0x15, 0x9a, 0xd2, 0xa1, 0x21, + 0xbe, 0xd5, 0x6d, 0xb1, 0xaa, 0x3f, 0xc7, 0xbc, 0x36, 0xf6, 0xea, 0x78, + 0x98, 0x26, 0x94, 0xb2, 0x58, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_4096 */ +const unsigned char test_rsa_4096[] = { + 0x30, 0x82, 0x09, 0x29, 0x02, 0x01, 0x00, 0x02, 0x82, 0x02, 0x01, 0x00, + 0xca, 0xd0, 0xd9, 0x1e, 0xae, 0x27, 0x25, 0x04, 0x53, 0xb5, 0x7f, 0x0a, + 0x56, 0x80, 0xd2, 0xf5, 0xd4, 0x9c, 0x59, 0x33, 0x0e, 0xae, 0x70, 0xe0, + 0x35, 0xb7, 0x65, 0x6b, 0x3a, 0xbf, 0x45, 0x65, 0x1f, 0xfb, 0x86, 0x6b, + 0x9c, 0x3e, 0x33, 0x6c, 0xff, 0xc2, 0x03, 0x3d, 0x25, 0x0a, 0x6b, 0xbe, + 0xd7, 0x03, 0x97, 0xdd, 0xea, 0x5b, 0x80, 0xb7, 0x8b, 0x3c, 0xad, 0xaf, + 0x88, 0x53, 0x64, 0x30, 0x90, 0xb3, 0xf3, 0x5e, 0x82, 0x8b, 0x0b, 0x59, + 0x29, 0x11, 0x32, 0xf1, 0x50, 0xce, 0xd1, 0x89, 0x4a, 0x88, 0xdb, 0x14, + 0x52, 0xbd, 0x5b, 0x67, 0x13, 0x1e, 0x60, 0x89, 0xd9, 0x53, 0xf4, 0x34, + 0x5e, 0xfe, 0x3d, 0xd4, 0xae, 0xf5, 0x97, 0x7a, 0xe4, 0x66, 0xd5, 0xb0, + 0x74, 0x72, 0xd9, 0x13, 0x02, 0x3a, 0x42, 0xc3, 0x91, 0xdb, 0xd1, 0x41, + 0x6f, 0x46, 0x06, 0x51, 0xd2, 0x0c, 0xb9, 0x6b, 0x8b, 0x72, 0xa0, 0x0e, + 0xcc, 0x05, 0x95, 0x5c, 0xa0, 0xbd, 0x57, 0xda, 0xb8, 0x33, 0x87, 0x85, + 0xc7, 0xee, 0xd1, 0x06, 0xcc, 0x78, 0x90, 0x39, 0xd4, 0x96, 0x24, 0x89, + 0xda, 0xff, 0xb0, 0xe4, 0xd2, 0x39, 0x58, 0x45, 0xf5, 0x2a, 0x45, 0x44, + 0xc3, 0xca, 0x54, 0xa7, 0xd7, 0x32, 0x8f, 0x3e, 0x56, 0x30, 0x14, 0xef, + 0x20, 0x3d, 0x96, 0xe1, 0xdf, 0x75, 0xa7, 0x99, 0x5c, 0xdd, 0x98, 0x21, + 0xf1, 0xac, 0x8f, 0x0c, 0x6b, 0xf0, 0x79, 0x55, 0x27, 0xc1, 0x00, 0xa3, + 0xec, 0x49, 0xb4, 0x0d, 0x02, 0x92, 0xba, 0xa0, 0x7f, 0x53, 0xaf, 0xd0, + 0x41, 0x33, 0x73, 0xb4, 0xc4, 0xfd, 0x1f, 0xf7, 0x54, 0xa5, 0xd2, 0x71, + 0xb1, 0x6c, 0x4c, 0x1f, 0x45, 0xce, 0xf0, 0xd0, 0x8d, 0xe2, 0xaa, 0x02, + 0xa6, 0xce, 0x4b, 0xac, 0xeb, 0xd0, 0xb7, 0x4a, 0x56, 0xf0, 0xc6, 0x0f, + 0x0f, 0x95, 0xcb, 0x11, 0xf3, 0x62, 0xee, 0x60, 0xcf, 0xca, 0x80, 0x24, + 0x11, 0xaa, 0x25, 0x04, 0xce, 0xa8, 0xae, 0x3d, 0x38, 0xec, 0xab, 0xa5, + 0x13, 0xd4, 0xca, 0xf7, 0x2d, 0x52, 0xfb, 0x16, 0x10, 0x88, 0xdf, 0x8f, + 0xa0, 0xcc, 0xf6, 0xa1, 0xb8, 0x4d, 0xaa, 0x18, 0x9c, 0x1f, 0xcf, 0x0a, + 0xe6, 0x13, 0xde, 0x21, 0x60, 0xee, 0xa4, 0x50, 0x97, 0x81, 0x28, 0x6f, + 0xc3, 0xc4, 0xdc, 0xe2, 0x73, 0xf4, 0x42, 0x40, 0x8b, 0x28, 0x79, 0xcc, + 0x5f, 0x9d, 0xe6, 0x3c, 0x42, 0xfb, 0x54, 0x5c, 0x9c, 0xb5, 0xad, 0xbd, + 0xc7, 0x6d, 0x04, 0xc3, 0x6e, 0xa3, 0x25, 0x90, 0x16, 0x79, 0xd0, 0x8a, + 0xa4, 0xe6, 0x6c, 0x9e, 0x63, 0x61, 0x20, 0xb9, 0x06, 0x1e, 0xc9, 0x3b, + 0x44, 0x61, 0x80, 0x9f, 0xb8, 0xbd, 0x78, 0xa5, 0x06, 0xfd, 0xec, 0x10, + 0x4a, 0xed, 0x31, 0xc5, 0xb6, 0x19, 0xff, 0xa2, 0xd6, 0xba, 0xb4, 0xd9, + 0x86, 0x40, 0x7f, 0x24, 0x47, 0x48, 0xf4, 0xa0, 0x66, 0x66, 0xe5, 0xa4, + 0x51, 0xc1, 0xa3, 0x25, 0x2e, 0x34, 0x58, 0x61, 0x85, 0x51, 0x75, 0x49, + 0x18, 0xf4, 0xa6, 0xd8, 0x83, 0x28, 0x7e, 0xcc, 0x56, 0x27, 0xc6, 0x79, + 0xda, 0x8e, 0x3e, 0x36, 0x23, 0xe2, 0xa7, 0x6d, 0x11, 0xcb, 0x91, 0x05, + 0x59, 0xdf, 0x0f, 0x40, 0x27, 0x25, 0x7c, 0x13, 0x8c, 0xbe, 0x1c, 0x9c, + 0x54, 0x0f, 0x57, 0xe3, 0x8f, 0x46, 0xcf, 0xa3, 0xfc, 0x4a, 0x31, 0xf8, + 0xe2, 0x32, 0x9a, 0x73, 0x21, 0x04, 0x44, 0x8a, 0xe8, 0x2d, 0x77, 0x2e, + 0xad, 0xa4, 0xbd, 0xc8, 0x14, 0x85, 0xb1, 0x8a, 0x72, 0x79, 0x69, 0x24, + 0x97, 0x04, 0x7b, 0x56, 0xf5, 0xc4, 0xd9, 0xdb, 0x4f, 0x91, 0x40, 0x60, + 0xf0, 0xda, 0x0a, 0xd7, 0x12, 0xf0, 0x09, 0x21, 0xbd, 0x7c, 0x2f, 0x01, + 0x73, 0x66, 0x69, 0xd7, 0x92, 0x6a, 0xa6, 0x1b, 0x02, 0x03, 0x01, 0x00, + 0x01, 0x02, 0x82, 0x02, 0x00, 0x38, 0xe9, 0x3d, 0xe3, 0xc4, 0x0e, 0xab, + 0xee, 0x78, 0xe6, 0xd7, 0x0d, 0x39, 0x94, 0xd0, 0x9d, 0xb6, 0xd9, 0x60, + 0x96, 0x59, 0x2a, 0x4d, 0xf6, 0x3c, 0x5c, 0x88, 0x12, 0xfc, 0xdb, 0x2b, + 0x47, 0xe3, 0x1f, 0x9b, 0x6a, 0x9a, 0xdf, 0x41, 0x62, 0xf6, 0xa9, 0xa4, + 0x6b, 0x05, 0xf7, 0xd4, 0xa0, 0x2a, 0x89, 0x91, 0x95, 0xed, 0xeb, 0x5b, + 0x45, 0x25, 0xc7, 0x13, 0x1d, 0xcc, 0x6d, 0x4a, 0x11, 0xee, 0xa8, 0xf0, + 0x43, 0xb6, 0xf1, 0xf9, 0x6f, 0x3d, 0x7c, 0xdc, 0x04, 0xa7, 0x1e, 0x41, + 0xe1, 0xfa, 0x8e, 0x48, 0x9b, 0x7d, 0x54, 0x31, 0x4f, 0xcd, 0x27, 0x9b, + 0x03, 0x53, 0x7e, 0xa1, 0x6a, 0x08, 0xb5, 0xe2, 0xf7, 0xc9, 0x58, 0x94, + 0xf7, 0x21, 0x1c, 0x52, 0x1e, 0x3f, 0xae, 0xf2, 0x86, 0xc8, 0xfb, 0x3c, + 0x3c, 0xd0, 0xb3, 0x14, 0x16, 0xfe, 0x78, 0x71, 0xd1, 0x87, 0xd5, 0x96, + 0x3a, 0x3d, 0x59, 0x1e, 0xdc, 0xc8, 0x17, 0x51, 0x00, 0x3b, 0x02, 0xa6, + 0xa2, 0x73, 0x49, 0xd2, 0x5f, 0x91, 0xe8, 0xcb, 0xb2, 0xd2, 0xb1, 0x8a, + 0x17, 0x10, 0x36, 0x49, 0x6e, 0x7d, 0x8b, 0x7e, 0x41, 0xd7, 0x53, 0xcc, + 0x17, 0x65, 0x62, 0x45, 0x29, 0xb4, 0x9f, 0x13, 0xfe, 0x3c, 0xfe, 0xac, + 0xff, 0x5b, 0x04, 0x06, 0xfb, 0xca, 0xda, 0x3d, 0x7a, 0x88, 0x4f, 0xe5, + 0x85, 0xbd, 0x6f, 0x58, 0xff, 0x3d, 0x67, 0xa4, 0x84, 0x61, 0xcd, 0x8a, + 0xde, 0x80, 0x57, 0x42, 0x2c, 0xbd, 0x63, 0x39, 0x28, 0xe5, 0x6d, 0xf2, + 0xfc, 0x92, 0x7e, 0x13, 0x39, 0xa6, 0xf2, 0x1f, 0x27, 0xbc, 0x97, 0x22, + 0xdf, 0x2e, 0x5b, 0x91, 0x9f, 0xe1, 0x9f, 0x78, 0x04, 0xd6, 0x7b, 0xe9, + 0x4b, 0x3c, 0x65, 0x3c, 0x3b, 0x9e, 0x3f, 0x09, 0x31, 0x2e, 0xc2, 0xd4, + 0x8c, 0x01, 0xb5, 0x72, 0x7e, 0x4b, 0x6b, 0x47, 0x1d, 0xf3, 0xb2, 0xaa, + 0x9c, 0xd0, 0x1a, 0x11, 0x24, 0xad, 0xeb, 0x0e, 0x9e, 0xe1, 0xa9, 0xfc, + 0x4c, 0xf0, 0xd0, 0xc5, 0x4d, 0xd0, 0xef, 0x45, 0xa2, 0x64, 0xce, 0x08, + 0x60, 0x55, 0xaf, 0x11, 0xbd, 0xad, 0xda, 0x20, 0x04, 0x97, 0x1f, 0x9f, + 0x99, 0x4a, 0x44, 0x6d, 0x94, 0x57, 0xd8, 0x4d, 0x80, 0xb0, 0x2a, 0xf3, + 0x32, 0xd8, 0x62, 0x2b, 0xbb, 0x28, 0xa5, 0x8e, 0x7f, 0x55, 0xfa, 0xe1, + 0xb6, 0x34, 0x27, 0x80, 0xa9, 0x63, 0x6b, 0xa7, 0x1b, 0x00, 0x6f, 0x47, + 0x51, 0xf2, 0x4d, 0x8a, 0xa2, 0x6b, 0xf8, 0x3f, 0xe0, 0x07, 0x06, 0x58, + 0x87, 0x8d, 0x42, 0x5b, 0x81, 0x2f, 0xba, 0x8b, 0xec, 0xfd, 0x5e, 0xad, + 0xd5, 0x22, 0xac, 0xb8, 0xb8, 0xa9, 0x51, 0x10, 0x1d, 0x08, 0x78, 0xf4, + 0xc8, 0xff, 0xfc, 0x25, 0x85, 0xe1, 0xe1, 0x5a, 0xb7, 0x9c, 0x53, 0xc1, + 0x50, 0x7b, 0xfa, 0x48, 0xf4, 0x84, 0x2c, 0x1b, 0x10, 0xd4, 0x31, 0x0b, + 0x6f, 0x0d, 0x35, 0x36, 0xf2, 0xbb, 0x70, 0xfb, 0x18, 0xf6, 0x22, 0x8e, + 0x87, 0x39, 0xd2, 0x5d, 0x8c, 0xef, 0x42, 0xe4, 0x36, 0x8b, 0x44, 0xac, + 0x3c, 0xab, 0x09, 0xf9, 0x26, 0xb3, 0x3d, 0x85, 0x57, 0x75, 0x0a, 0x76, + 0x69, 0x14, 0x53, 0x0c, 0x28, 0xd9, 0x28, 0x57, 0x4b, 0x60, 0xea, 0xcf, + 0x83, 0xac, 0x9a, 0x05, 0xd4, 0x54, 0x46, 0xd3, 0xfd, 0xb4, 0x5d, 0xcb, + 0x45, 0x5a, 0xda, 0x1b, 0xcf, 0x71, 0x03, 0xd9, 0xc7, 0x1b, 0xd8, 0xb6, + 0x45, 0x17, 0x45, 0x01, 0x3e, 0x75, 0xf1, 0x48, 0x5c, 0x7a, 0xec, 0x58, + 0xe3, 0x71, 0xfb, 0xfe, 0x66, 0xcf, 0x99, 0x1e, 0xf7, 0xa1, 0x79, 0x74, + 0xb0, 0x99, 0x9d, 0xe5, 0x93, 0x3f, 0xa3, 0x31, 0x06, 0xb3, 0x16, 0x71, + 0x27, 0x36, 0xb0, 0xc0, 0x64, 0xe8, 0x07, 0x5e, 0xf0, 0x4a, 0x76, 0x04, + 0x91, 0x02, 0x82, 0x01, 0x01, 0x00, 0xff, 0x09, 0x0d, 0x15, 0xda, 0xbd, + 0xa7, 0xe9, 0x79, 0x20, 0x59, 0x05, 0xc1, 0xea, 0x20, 0xa9, 0xb9, 0x47, + 0x16, 0x42, 0xeb, 0x3f, 0x26, 0xa4, 0x8b, 0xfd, 0x48, 0x4b, 0xdf, 0x06, + 0x35, 0x8b, 0x32, 0xe3, 0xf7, 0x1f, 0xb1, 0x92, 0x96, 0xbf, 0x48, 0x04, + 0x32, 0xb2, 0x4e, 0x83, 0x9a, 0x1f, 0x4b, 0x11, 0x75, 0xb8, 0xbf, 0x4d, + 0x2e, 0xe0, 0x8a, 0x22, 0xde, 0x94, 0xb1, 0x98, 0xc0, 0xec, 0x8a, 0x49, + 0x73, 0x07, 0xf5, 0x69, 0x4c, 0x9a, 0x2f, 0xab, 0xf6, 0xdd, 0x93, 0x26, + 0x6c, 0x79, 0x2c, 0xac, 0xbc, 0x7d, 0x67, 0xad, 0x3e, 0x46, 0xdd, 0xf2, + 0xef, 0x14, 0x8a, 0x10, 0x9c, 0x11, 0x9b, 0x4a, 0xd5, 0x27, 0x87, 0x52, + 0x79, 0x1a, 0xb3, 0x67, 0xe3, 0x29, 0x35, 0x97, 0x57, 0xa7, 0x7f, 0xab, + 0xed, 0xe2, 0xa4, 0xa8, 0x94, 0x01, 0x7c, 0x85, 0x5e, 0x47, 0x67, 0xb5, + 0xae, 0xf0, 0x2b, 0x9a, 0xa6, 0xb1, 0x4c, 0xd7, 0x84, 0xae, 0x24, 0x1e, + 0x28, 0x77, 0x63, 0x69, 0x38, 0x6b, 0xab, 0xe0, 0x4f, 0x90, 0x78, 0x4a, + 0x31, 0x30, 0xe8, 0x95, 0xbc, 0xcb, 0x95, 0x9c, 0xd5, 0x34, 0x7c, 0x4c, + 0x07, 0xa7, 0x23, 0x66, 0x6b, 0xd6, 0x59, 0x93, 0x69, 0x22, 0xb3, 0xda, + 0x47, 0x66, 0xf8, 0xee, 0x4a, 0x38, 0x5e, 0xab, 0x2d, 0xf7, 0xe0, 0xab, + 0x9f, 0x65, 0x1a, 0x90, 0x04, 0xaa, 0x71, 0xc5, 0x59, 0xf2, 0x0c, 0xb3, + 0xbe, 0xd5, 0xcf, 0x17, 0xcd, 0x70, 0x4c, 0xa6, 0xb7, 0xb5, 0x19, 0xc2, + 0x2b, 0xa8, 0x6b, 0x0c, 0x5f, 0x81, 0xb6, 0x18, 0x7b, 0x2e, 0x74, 0x6f, + 0xcb, 0x37, 0x15, 0x71, 0x4f, 0x7e, 0xac, 0xbf, 0x66, 0xf5, 0xb6, 0x72, + 0xf7, 0xe9, 0xc7, 0x99, 0xa5, 0x31, 0xf9, 0x27, 0x74, 0x4d, 0x68, 0xd6, + 0x60, 0xc7, 0x83, 0xe7, 0xd4, 0xa0, 0xc0, 0x09, 0x7a, 0x0f, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xcb, 0x95, 0x3b, 0xb3, 0x52, 0xf2, 0x44, 0x4c, 0x50, + 0xe0, 0xee, 0xaf, 0xf2, 0xec, 0x68, 0x73, 0x70, 0x16, 0x6c, 0x1d, 0x54, + 0xeb, 0xa2, 0xaf, 0x4e, 0xb9, 0x53, 0x5f, 0x73, 0x07, 0x72, 0x68, 0x70, + 0xce, 0xf0, 0xc5, 0x1b, 0x94, 0xb3, 0x48, 0xb5, 0x8e, 0x58, 0xb5, 0x81, + 0x96, 0x7b, 0xbb, 0x83, 0x33, 0x95, 0x06, 0x1a, 0x01, 0x69, 0xe1, 0x59, + 0xf9, 0x6d, 0x3d, 0x13, 0x5f, 0x52, 0xdf, 0xb6, 0x66, 0x68, 0x2b, 0xd8, + 0x06, 0x4a, 0xf8, 0xf9, 0x69, 0xed, 0xdd, 0x1e, 0x39, 0x93, 0x10, 0xe5, + 0x1b, 0x0b, 0xfe, 0x52, 0xd2, 0x9b, 0x64, 0x6c, 0xb3, 0xdc, 0x8a, 0x30, + 0x63, 0x56, 0x1c, 0x57, 0x39, 0x30, 0xfb, 0x89, 0x12, 0xd0, 0xbc, 0x00, + 0xd8, 0x4c, 0x0d, 0xcb, 0x17, 0x3e, 0x80, 0xad, 0x87, 0xc2, 0xd9, 0x28, + 0xe1, 0xbe, 0x69, 0x2b, 0x6b, 0x11, 0x7f, 0x8d, 0xb7, 0xc0, 0x2f, 0x9c, + 0x10, 0xe7, 0xd5, 0x12, 0xc0, 0x10, 0xec, 0x43, 0x9d, 0xe7, 0x30, 0x4b, + 0x5d, 0xec, 0x05, 0x22, 0xf3, 0x71, 0xab, 0x6e, 0xba, 0x99, 0x9a, 0xc7, + 0xe2, 0x95, 0x2b, 0xa4, 0xdc, 0xf0, 0x18, 0xa7, 0x91, 0x76, 0x5e, 0xf2, + 0x3b, 0x46, 0x51, 0xb9, 0xa2, 0x3e, 0xe1, 0xac, 0x7b, 0x18, 0x49, 0x15, + 0x2b, 0x01, 0xd6, 0xeb, 0x38, 0x90, 0xe4, 0x76, 0x1e, 0xc2, 0xd7, 0x7a, + 0x28, 0x0a, 0x05, 0x68, 0xbd, 0x59, 0xeb, 0xdf, 0x2b, 0x39, 0x58, 0x4b, + 0xa8, 0xf9, 0x92, 0x4c, 0xf2, 0xbf, 0xe6, 0x12, 0x6f, 0x13, 0x03, 0xa3, + 0xf5, 0xa1, 0xd2, 0x2b, 0x68, 0xf4, 0x8b, 0xac, 0x14, 0xb1, 0x3d, 0x05, + 0x4a, 0xea, 0x5a, 0x13, 0x29, 0x47, 0x36, 0x95, 0x7d, 0xf4, 0xed, 0x06, + 0x23, 0x3c, 0xf1, 0x4c, 0xf0, 0x95, 0xf9, 0xc7, 0x7e, 0x41, 0x85, 0x84, + 0xbf, 0x53, 0xfc, 0xa4, 0x5a, 0x8f, 0x35, 0x02, 0x82, 0x01, 0x00, 0x4e, + 0x64, 0xc8, 0xd9, 0xeb, 0xe8, 0x1a, 0x62, 0x20, 0xf2, 0x79, 0x8a, 0xd4, + 0x85, 0x94, 0x4e, 0xb7, 0x7e, 0x0b, 0x70, 0xbc, 0x81, 0x27, 0xee, 0xb2, + 0x7d, 0x43, 0xa8, 0xd6, 0xc0, 0x40, 0xdb, 0x2d, 0xe4, 0x77, 0x05, 0x0d, + 0xff, 0x62, 0x49, 0x1f, 0xe8, 0xf2, 0x70, 0x6e, 0xc3, 0xf3, 0x2f, 0x25, + 0x53, 0x13, 0x9d, 0x9b, 0x68, 0x2d, 0x3d, 0xa6, 0x18, 0x7b, 0xd4, 0xb7, + 0x16, 0x9e, 0x4e, 0xd7, 0x5f, 0x26, 0x75, 0xce, 0xd0, 0xf4, 0x53, 0xfc, + 0xcd, 0x5e, 0x4f, 0xd3, 0xb8, 0x9e, 0xe5, 0x4c, 0x7f, 0x38, 0x5d, 0x4f, + 0xee, 0x27, 0xd3, 0x7e, 0xcb, 0xfb, 0x03, 0x94, 0x40, 0xf0, 0xc8, 0x54, + 0xb4, 0xd6, 0xfa, 0x94, 0x95, 0x1c, 0x56, 0xc1, 0xc8, 0xf0, 0x41, 0xad, + 0x90, 0x7c, 0xc8, 0x26, 0xed, 0x81, 0x6d, 0x06, 0x72, 0x2f, 0x34, 0x99, + 0xc3, 0x21, 0x2c, 0xcf, 0xcb, 0x40, 0x1f, 0xe1, 0x37, 0x63, 0x7f, 0xe2, + 0x7f, 0xe8, 0xef, 0xe2, 0x78, 0x46, 0xb6, 0x14, 0x1f, 0xb6, 0xd1, 0x19, + 0xff, 0x14, 0x55, 0xf3, 0x33, 0xd3, 0x15, 0x16, 0x99, 0x58, 0x74, 0x37, + 0xe4, 0x02, 0x81, 0x64, 0xa7, 0xb6, 0x3e, 0x81, 0x1a, 0x2d, 0x91, 0xb0, + 0xed, 0x28, 0x07, 0x1b, 0xc3, 0xbf, 0xe8, 0xfe, 0x21, 0xb9, 0x3c, 0xc4, + 0x94, 0xd7, 0xc7, 0x77, 0x0f, 0x2a, 0x2a, 0xd8, 0xd4, 0x66, 0x2a, 0xc2, + 0x58, 0x08, 0x82, 0xe7, 0xb6, 0xa4, 0xb5, 0x72, 0x37, 0xfd, 0xd5, 0x44, + 0x2a, 0x87, 0x13, 0xaa, 0xfc, 0x4d, 0x91, 0x32, 0x7e, 0x96, 0x28, 0xf8, + 0x01, 0x64, 0x73, 0xee, 0x24, 0xa3, 0x11, 0xa6, 0x8c, 0xb3, 0x03, 0xdc, + 0x33, 0xe5, 0x81, 0x27, 0xf9, 0x05, 0x0d, 0x9e, 0x66, 0x33, 0x2a, 0x3e, + 0x4d, 0x0b, 0x69, 0xf4, 0x0c, 0xd9, 0xa8, 0xda, 0x79, 0xfb, 0x99, 0x02, + 0x0e, 0xa7, 0xaf, 0x02, 0x82, 0x01, 0x01, 0x00, 0x80, 0xff, 0xab, 0xd7, + 0xa2, 0x2c, 0x7f, 0x18, 0x78, 0x7b, 0x3e, 0xe3, 0x60, 0xa3, 0x6a, 0x40, + 0x13, 0x7b, 0x31, 0xc0, 0x98, 0x49, 0xc3, 0x49, 0x20, 0x32, 0x10, 0x61, + 0x3f, 0xeb, 0x2d, 0x14, 0x7e, 0xbe, 0xb2, 0x13, 0xc3, 0xb9, 0x42, 0xad, + 0x44, 0xd5, 0xd0, 0xe2, 0x1a, 0x1d, 0xf7, 0x83, 0x46, 0xcc, 0x8d, 0x96, + 0x53, 0x2e, 0x28, 0x20, 0x32, 0x39, 0xf9, 0x7d, 0x24, 0xe4, 0x57, 0x08, + 0x08, 0x74, 0xf5, 0x77, 0x2a, 0xa8, 0x3a, 0x23, 0x6f, 0x2f, 0x2f, 0x18, + 0xd8, 0x89, 0x14, 0xe6, 0x34, 0xb6, 0x21, 0xb0, 0x62, 0x5c, 0xaf, 0x38, + 0x40, 0x24, 0xec, 0x0e, 0xe8, 0x40, 0x59, 0x95, 0x15, 0xb3, 0xd8, 0x94, + 0xda, 0x33, 0x80, 0xee, 0x4f, 0xfe, 0xbe, 0x9a, 0x52, 0xe1, 0x04, 0xaa, + 0xd6, 0xca, 0x5a, 0xad, 0xed, 0xd8, 0xb5, 0x25, 0xc0, 0xec, 0x54, 0x27, + 0x25, 0xee, 0x94, 0x29, 0xd6, 0xd3, 0x63, 0x83, 0x41, 0x21, 0x50, 0xd7, + 0xd4, 0xb4, 0x9e, 0x84, 0x9c, 0x8d, 0x03, 0xfb, 0xf1, 0x3c, 0x9e, 0xff, + 0x48, 0xe7, 0x96, 0x63, 0x5c, 0x5a, 0xf7, 0xb8, 0xb2, 0xfb, 0x88, 0x6b, + 0xa6, 0xea, 0x66, 0x3e, 0x1d, 0x71, 0x6f, 0xca, 0x63, 0x3d, 0x2a, 0x69, + 0x27, 0x38, 0xcc, 0x97, 0xaa, 0x81, 0x18, 0xe6, 0x4d, 0x20, 0x07, 0xb7, + 0xac, 0x1d, 0x2b, 0xcb, 0x0b, 0xcd, 0x89, 0x24, 0x0a, 0x4d, 0x49, 0x48, + 0x4b, 0x9e, 0x00, 0xf5, 0x30, 0xe3, 0xfe, 0x58, 0x34, 0xc7, 0xf0, 0xce, + 0xe1, 0x49, 0x5e, 0x9c, 0x04, 0xed, 0xa5, 0x3f, 0x1e, 0x60, 0x9f, 0xec, + 0x4c, 0xfa, 0xc3, 0x9f, 0xed, 0xd5, 0x9d, 0x8f, 0xbb, 0xea, 0x81, 0x04, + 0x56, 0x4f, 0x7c, 0xbe, 0x20, 0x10, 0x7e, 0x12, 0x4c, 0x75, 0x7a, 0x22, + 0xce, 0xc4, 0xf2, 0xd1, 0x9e, 0xde, 0xf9, 0x61, 0xf1, 0xe6, 0xac, 0x2d, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xd7, 0x32, 0x63, 0x0a, 0x84, 0xda, 0x7e, + 0x7e, 0xc5, 0xdf, 0xff, 0xbc, 0x82, 0x36, 0x8d, 0x83, 0x5b, 0x79, 0xa2, + 0x25, 0x88, 0xeb, 0xeb, 0x4e, 0xb8, 0xa1, 0x29, 0xbe, 0x9d, 0x81, 0x80, + 0x4b, 0x63, 0x67, 0xcc, 0x0a, 0x0d, 0xe9, 0xee, 0x84, 0x03, 0xf7, 0x2a, + 0x04, 0xe5, 0xa6, 0x0d, 0x8e, 0x0d, 0x34, 0x9f, 0x7c, 0xc1, 0xa0, 0xad, + 0x32, 0x59, 0xf8, 0x94, 0xb2, 0x4c, 0xca, 0x70, 0x68, 0xa3, 0x4b, 0xa8, + 0x58, 0xad, 0x46, 0x36, 0x08, 0xcd, 0x94, 0x10, 0x66, 0x5b, 0xbb, 0x38, + 0x16, 0x47, 0xb9, 0x2a, 0xe9, 0xe7, 0xf1, 0x4d, 0xb5, 0xb1, 0x77, 0x13, + 0xd7, 0x4f, 0xea, 0x53, 0x5f, 0xde, 0x8e, 0x0d, 0x6c, 0x88, 0x86, 0x79, + 0x0a, 0xa7, 0x2b, 0xaa, 0xe2, 0x3b, 0xb4, 0xa6, 0xd9, 0x2e, 0x57, 0xe4, + 0x76, 0x67, 0xa2, 0x4e, 0x24, 0x93, 0x2b, 0xfb, 0x7f, 0x30, 0x89, 0x66, + 0x16, 0x02, 0xe8, 0x6a, 0x2f, 0x75, 0x9e, 0xc1, 0xec, 0x7c, 0x72, 0x18, + 0xbe, 0xf1, 0x4a, 0x87, 0xc9, 0x8c, 0xcb, 0xb6, 0xa2, 0x02, 0x6e, 0x97, + 0x88, 0x4a, 0xba, 0x4a, 0xb2, 0xd8, 0x8c, 0x4a, 0xf5, 0x9c, 0x87, 0x2d, + 0x4b, 0x3d, 0x8c, 0x08, 0xdf, 0x31, 0xe7, 0x51, 0xc8, 0x4a, 0x3c, 0xf8, + 0x19, 0xb6, 0x3f, 0x6f, 0x6b, 0xe9, 0x8a, 0xed, 0x42, 0x54, 0x58, 0x96, + 0x2d, 0x00, 0x4a, 0x5f, 0xba, 0xf6, 0xf2, 0x87, 0x86, 0xc8, 0x11, 0xaf, + 0xc5, 0x31, 0x59, 0x24, 0x96, 0x76, 0xcc, 0xa0, 0xda, 0xe9, 0x3d, 0x40, + 0x0e, 0x2b, 0x64, 0xa4, 0xb2, 0x91, 0x0c, 0x04, 0x5e, 0xa9, 0x86, 0x3c, + 0xfc, 0x03, 0x8f, 0x07, 0x09, 0x52, 0x05, 0xb3, 0x9d, 0x08, 0xa7, 0xbf, + 0x1a, 0x47, 0xbb, 0x81, 0x39, 0xf1, 0xdf, 0x39, 0x65, 0x5e, 0x6b, 0x35, + 0x8d, 0x53, 0x67, 0x9f, 0x43, 0x59, 0x38, 0x45, 0xb4, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp192r1 */ +const unsigned char test_ec_secp192r1[] = { + 0x30, 0x5f, 0x02, 0x01, 0x01, 0x04, 0x18, 0xf2, 0xb2, 0x0b, 0x3a, 0xce, + 0x36, 0x72, 0xcd, 0xb2, 0xe2, 0x37, 0x80, 0x0a, 0x5e, 0x1a, 0x8e, 0x20, + 0xa4, 0x55, 0xe3, 0x53, 0xfc, 0x98, 0xeb, 0xa0, 0x0a, 0x06, 0x08, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x01, 0xa1, 0x34, 0x03, 0x32, 0x00, + 0x04, 0x32, 0x24, 0xf9, 0x2a, 0x4b, 0x53, 0x29, 0x16, 0x22, 0xa6, 0xd7, + 0x35, 0xb8, 0xc8, 0xd4, 0x16, 0x22, 0x5e, 0xfd, 0xce, 0x34, 0xf7, 0x1c, + 0xd3, 0x0c, 0xea, 0xf3, 0x71, 0xbe, 0x2e, 0x40, 0x61, 0x2b, 0x31, 0x85, + 0xcb, 0x6b, 0xec, 0x59, 0xfc, 0x19, 0x31, 0xb0, 0x45, 0x04, 0x41, 0xea, + 0xf9, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp224r1 */ +const unsigned char test_ec_secp224r1[] = { + 0x30, 0x68, 0x02, 0x01, 0x01, 0x04, 0x1c, 0x74, 0x02, 0x38, 0xee, 0x23, + 0x01, 0xa0, 0x11, 0x8c, 0xfe, 0xd1, 0xfb, 0x66, 0x6e, 0x04, 0x92, 0x9e, + 0xe9, 0x75, 0x9b, 0xaf, 0x5a, 0xf2, 0x9a, 0x64, 0x16, 0x83, 0x08, 0xa0, + 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x21, 0xa1, 0x3c, 0x03, 0x3a, + 0x00, 0x04, 0xd3, 0xe3, 0x0e, 0x63, 0x84, 0x9d, 0xbb, 0x5e, 0xb2, 0xb4, + 0x2d, 0x28, 0xe6, 0x45, 0x5d, 0xea, 0xae, 0x4e, 0x17, 0x8a, 0x88, 0xe8, + 0x68, 0xce, 0x44, 0xc5, 0xd2, 0xf9, 0xef, 0x10, 0x20, 0xe6, 0x07, 0x08, + 0x47, 0xde, 0xaa, 0xb4, 0xda, 0x38, 0x5e, 0xf2, 0x2e, 0xc4, 0x94, 0x01, + 0xba, 0xc4, 0x57, 0xf1, 0xee, 0x51, 0xba, 0x38, 0x13, 0x30, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp256r1 */ +const unsigned char test_ec_secp256r1[] = { + 0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0x9e, 0x24, 0x0a, 0x03, 0x94, + 0x40, 0x32, 0xf9, 0x9b, 0x41, 0xfd, 0x83, 0x4d, 0xa9, 0x31, 0x98, 0xaf, + 0xa3, 0x09, 0x6e, 0xc3, 0x05, 0x39, 0xb6, 0x67, 0xb0, 0x32, 0x83, 0x22, + 0xd1, 0xe2, 0x93, 0xa0, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, + 0x03, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x78, 0xfa, 0x74, + 0x37, 0x63, 0x6d, 0xda, 0x49, 0xa5, 0x6b, 0x33, 0x0d, 0x5b, 0xc1, 0x39, + 0x67, 0x83, 0x1a, 0x18, 0x9c, 0x31, 0xf4, 0x83, 0xc3, 0xfe, 0xc1, 0x96, + 0x7d, 0x22, 0x21, 0x51, 0x52, 0x78, 0x46, 0x50, 0xdc, 0x92, 0xb9, 0x0b, + 0xf0, 0xe5, 0x80, 0x00, 0xc4, 0x07, 0x7d, 0x16, 0xe0, 0x09, 0x55, 0x29, + 0x9d, 0x3c, 0x53, 0x42, 0xf4, 0x58, 0xff, 0x93, 0xc1, 0xaa, 0x23, 0xd5, + 0x3e, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp384r1 */ +const unsigned char test_ec_secp384r1[] = { + 0x30, 0x81, 0xa4, 0x02, 0x01, 0x01, 0x04, 0x30, 0x59, 0x92, 0x61, 0x10, + 0xdd, 0x83, 0x76, 0x99, 0xb5, 0xc4, 0x08, 0xe3, 0x3d, 0xb8, 0x8c, 0xac, + 0x5d, 0x46, 0x7f, 0x96, 0x9f, 0x7c, 0x40, 0xa0, 0xbf, 0xe8, 0xf0, 0x6b, + 0xcf, 0x1d, 0x2a, 0xe8, 0xb1, 0x90, 0xb1, 0x6c, 0xc3, 0xcf, 0x01, 0x9f, + 0xc4, 0x2c, 0x0e, 0x9b, 0x05, 0x07, 0xce, 0xed, 0xa0, 0x07, 0x06, 0x05, + 0x2b, 0x81, 0x04, 0x00, 0x22, 0xa1, 0x64, 0x03, 0x62, 0x00, 0x04, 0x90, + 0x73, 0x8b, 0xcc, 0x2a, 0x0d, 0x1e, 0xcc, 0x6e, 0x4e, 0x14, 0xbc, 0x51, + 0x2c, 0xb6, 0xce, 0xdb, 0xb2, 0xc2, 0xdd, 0x20, 0xf6, 0xf5, 0x20, 0xa7, + 0xff, 0x98, 0x37, 0x2a, 0x8c, 0x35, 0xe2, 0xf8, 0x3e, 0xf1, 0xd6, 0x5e, + 0x79, 0x84, 0xe8, 0x43, 0x04, 0x9c, 0xc3, 0xe0, 0xfe, 0x2f, 0x4f, 0x82, + 0xb1, 0xee, 0xec, 0x2b, 0x11, 0x49, 0x8f, 0xb4, 0x77, 0xce, 0x74, 0x11, + 0xbb, 0x16, 0x6b, 0x69, 0xd2, 0xee, 0x01, 0xff, 0x99, 0xd1, 0x0f, 0x57, + 0x46, 0x2d, 0x83, 0xfe, 0x17, 0x4d, 0xcc, 0x59, 0x7d, 0xa5, 0x4a, 0x52, + 0x39, 0x4f, 0x6a, 0xe1, 0xb6, 0x21, 0xbe, 0x74, 0x72, 0xd2, 0x51, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp521r1 */ +const unsigned char test_ec_secp521r1[] = { + 0x30, 0x81, 0xdc, 0x02, 0x01, 0x01, 0x04, 0x42, 0x00, 0x51, 0xcf, 0xff, + 0x6d, 0x27, 0x46, 0x89, 0x81, 0x7e, 0x9d, 0x99, 0x5a, 0x28, 0x6b, 0x2b, + 0x69, 0x55, 0xdb, 0x5b, 0xde, 0x1c, 0x47, 0x69, 0x05, 0x99, 0x9e, 0xa3, + 0x81, 0x5b, 0x5c, 0x4c, 0xe8, 0x7e, 0xde, 0x0a, 0x58, 0x52, 0x05, 0x0a, + 0x26, 0xac, 0x4b, 0xb0, 0x55, 0x2d, 0xdf, 0xab, 0x0e, 0x3e, 0x17, 0x27, + 0xca, 0x8c, 0xc1, 0x5b, 0x2b, 0xf1, 0x51, 0x5f, 0x33, 0xee, 0x91, 0xb8, + 0x68, 0x28, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x23, 0xa1, + 0x81, 0x89, 0x03, 0x81, 0x86, 0x00, 0x04, 0x01, 0xcf, 0xdb, 0xee, 0xaf, + 0xc1, 0x2a, 0xa1, 0x07, 0x67, 0x1d, 0x48, 0xea, 0x61, 0x17, 0xd0, 0x16, + 0x7e, 0x91, 0x41, 0x59, 0x67, 0x53, 0x86, 0x4d, 0xe5, 0xc8, 0xfe, 0xc5, + 0x0d, 0x17, 0xab, 0x8d, 0x30, 0xff, 0x00, 0xf9, 0x52, 0x2e, 0x87, 0x49, + 0xc2, 0xe1, 0x37, 0x10, 0x9a, 0xd5, 0x78, 0xbe, 0x41, 0x0f, 0x28, 0xbe, + 0x2b, 0x13, 0x69, 0x1f, 0xb2, 0xbc, 0xde, 0x26, 0x41, 0x58, 0xe7, 0x1b, + 0x23, 0x00, 0x37, 0xe9, 0x1d, 0x15, 0x23, 0x0b, 0x52, 0xfb, 0x4b, 0xb7, + 0x8e, 0xa7, 0x19, 0x5b, 0x0d, 0x63, 0x60, 0xaf, 0x55, 0xd5, 0xba, 0xed, + 0xe2, 0xfb, 0x06, 0x8b, 0xd5, 0x45, 0xd3, 0x1e, 0x40, 0x99, 0xba, 0x3a, + 0x2a, 0xa2, 0x54, 0x2a, 0x28, 0x6b, 0x7c, 0xe6, 0x4c, 0x61, 0xf6, 0x2c, + 0x3c, 0x3c, 0xda, 0xc4, 0x28, 0xf8, 0x1d, 0x99, 0x6e, 0xc3, 0x10, 0x25, + 0x23, 0xe5, 0x75, 0x57, 0x6e, 0x70, 0xff, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_bp256r1 */ +const unsigned char test_ec_bp256r1[] = { + 0x30, 0x78, 0x02, 0x01, 0x01, 0x04, 0x20, 0x53, 0xd7, 0x10, 0x63, 0x7f, + 0x58, 0x46, 0x73, 0xcc, 0x4c, 0x8f, 0xdb, 0x43, 0xc5, 0xc5, 0x17, 0x9e, + 0x07, 0xe4, 0x87, 0xc6, 0x80, 0xd5, 0x9e, 0x5e, 0xc8, 0x38, 0x70, 0xc2, + 0x4c, 0xb4, 0xf7, 0xa0, 0x0b, 0x06, 0x09, 0x2b, 0x24, 0x03, 0x03, 0x02, + 0x08, 0x01, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x49, 0xcd, + 0x94, 0xf2, 0x2b, 0x12, 0xff, 0x6e, 0xdf, 0x5f, 0x1a, 0xab, 0xf1, 0x49, + 0xaa, 0x46, 0x1d, 0x18, 0xb5, 0xa1, 0x4e, 0xd3, 0x88, 0x62, 0x01, 0x42, + 0x9b, 0x9e, 0xa0, 0xc1, 0x38, 0x24, 0x3f, 0x64, 0x8c, 0xf6, 0x65, 0xd7, + 0x7c, 0x4a, 0xad, 0x86, 0xe4, 0x2f, 0xf8, 0x20, 0x21, 0xb7, 0x7b, 0x50, + 0x9e, 0xf6, 0xa2, 0x44, 0x41, 0x63, 0xae, 0xd9, 0xd3, 0xaf, 0x35, 0x97, + 0xc7, 0x02, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_bp384r1 */ +const unsigned char test_ec_bp384r1[] = { + 0x30, 0x81, 0xa8, 0x02, 0x01, 0x01, 0x04, 0x30, 0x4a, 0x28, 0x9c, 0xc2, + 0xf0, 0xfd, 0x7c, 0xdb, 0xe3, 0xd1, 0x03, 0xb9, 0xf1, 0x3c, 0xb5, 0xaa, + 0x8e, 0xb6, 0x4d, 0x93, 0xa3, 0xac, 0x1f, 0x4f, 0x1d, 0x67, 0x41, 0x75, + 0x8d, 0x86, 0xd5, 0xd8, 0x19, 0x9e, 0xb8, 0x6a, 0xf9, 0x29, 0x51, 0x26, + 0xbf, 0x70, 0xfc, 0x3e, 0x6f, 0xcf, 0x1e, 0xcc, 0xa0, 0x0b, 0x06, 0x09, + 0x2b, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x0b, 0xa1, 0x64, 0x03, + 0x62, 0x00, 0x04, 0x3d, 0x98, 0x26, 0x32, 0x82, 0xbb, 0xc5, 0x0b, 0x3f, + 0x77, 0x76, 0x91, 0xeb, 0x63, 0xab, 0xa8, 0x4f, 0x13, 0x69, 0x6e, 0x73, + 0x0f, 0x86, 0x23, 0x19, 0x0d, 0xec, 0x85, 0xe9, 0xea, 0xe3, 0x30, 0xfd, + 0x53, 0xef, 0xd2, 0xa1, 0x9c, 0x4d, 0x23, 0xf7, 0x26, 0x02, 0x98, 0x01, + 0x99, 0x95, 0x53, 0x87, 0x16, 0x11, 0x09, 0x8c, 0x34, 0xa9, 0x11, 0xcb, + 0x75, 0x1a, 0x72, 0xa8, 0x82, 0xc5, 0xdb, 0x92, 0x17, 0x59, 0xa6, 0xc0, + 0x16, 0x97, 0xf5, 0xba, 0x6c, 0x5b, 0x87, 0x4d, 0xa4, 0xff, 0x59, 0xeb, + 0xe9, 0xf4, 0x3f, 0x78, 0x6e, 0x5e, 0xff, 0x18, 0x36, 0x4e, 0x06, 0x27, + 0x5b, 0x00, 0x6a, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_bp512r1 */ +const unsigned char test_ec_bp512r1[] = { + 0x30, 0x81, 0xda, 0x02, 0x01, 0x01, 0x04, 0x40, 0x35, 0x8e, 0xa9, 0xb9, + 0xe1, 0x55, 0xf3, 0x9e, 0x8a, 0x26, 0x8a, 0x9c, 0x29, 0xb1, 0x47, 0xc5, + 0x3e, 0x0e, 0x16, 0x7f, 0x6d, 0x3f, 0x8d, 0x5c, 0x05, 0xe9, 0xc1, 0x52, + 0x76, 0xa2, 0x47, 0x6a, 0x42, 0xd8, 0x30, 0xc2, 0x41, 0x14, 0xf9, 0x05, + 0x3e, 0x9c, 0xfa, 0xa6, 0x49, 0xfe, 0xb4, 0x9d, 0xfb, 0x9c, 0x45, 0x68, + 0x03, 0xb7, 0xae, 0x51, 0xcf, 0x61, 0x41, 0x10, 0x7f, 0xa7, 0xf4, 0x2b, + 0xa0, 0x0b, 0x06, 0x09, 0x2b, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, + 0x0d, 0xa1, 0x81, 0x85, 0x03, 0x81, 0x82, 0x00, 0x04, 0xa7, 0xbf, 0xf3, + 0xd0, 0xa8, 0x3d, 0xad, 0xfc, 0x50, 0x65, 0xbf, 0x30, 0x61, 0x79, 0x39, + 0x64, 0x36, 0xa9, 0x62, 0x74, 0x97, 0x82, 0xc8, 0xba, 0x1b, 0x6a, 0xaa, + 0x48, 0x0f, 0x7f, 0x56, 0x4c, 0xad, 0x47, 0x13, 0x5a, 0x14, 0x50, 0x60, + 0x54, 0xa8, 0x3e, 0x6d, 0xa7, 0x87, 0xfe, 0x1d, 0x41, 0x2b, 0x0a, 0x7e, + 0xaf, 0x0e, 0xe9, 0xcc, 0xce, 0x44, 0x5f, 0x51, 0x88, 0x22, 0x22, 0xf9, + 0x63, 0x6e, 0xdd, 0x99, 0xbb, 0xd5, 0x14, 0x9b, 0x10, 0x30, 0xa3, 0xe6, + 0x60, 0x9a, 0xa9, 0xa4, 0x42, 0x79, 0xa8, 0xd2, 0x74, 0x7e, 0xf9, 0x02, + 0x71, 0x8d, 0xd6, 0xed, 0x52, 0xb1, 0x1b, 0xdb, 0x0d, 0x6f, 0x49, 0xda, + 0x70, 0x5b, 0xf4, 0x70, 0x98, 0x11, 0xa4, 0xec, 0x4c, 0x9d, 0x67, 0x5f, + 0x3b, 0xea, 0x1c, 0x02, 0x46, 0x89, 0xff, 0xc2, 0x33, 0xa3, 0xa9, 0x57, + 0x36, 0xd8, 0x10, 0x0e, 0xf6, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_curve25519 */ +const unsigned char test_ec_curve25519[] = { + 0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x6e, + 0x04, 0x22, 0x04, 0x20, 0xd0, 0x40, 0x4f, 0x5d, 0xf9, 0x7e, 0x1c, 0x24, + 0xd6, 0x68, 0x08, 0x29, 0x5b, 0xfd, 0x49, 0xaa, 0xd0, 0x6f, 0x8e, 0x44, + 0x13, 0x52, 0x84, 0x07, 0x79, 0x8a, 0xda, 0x69, 0xa2, 0xa0, 0xf6, 0x52, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp192k1 */ +const unsigned char test_ec_secp192k1[] = { + 0x30, 0x5c, 0x02, 0x01, 0x01, 0x04, 0x18, 0xca, 0xa6, 0x5e, 0x57, 0x3d, + 0xb3, 0x0f, 0x12, 0x29, 0x4f, 0x5e, 0xc8, 0xb3, 0x3f, 0x6a, 0x1a, 0x8d, + 0x32, 0xb9, 0x9d, 0xbe, 0x0f, 0x7b, 0x95, 0xa0, 0x07, 0x06, 0x05, 0x2b, + 0x81, 0x04, 0x00, 0x1f, 0xa1, 0x34, 0x03, 0x32, 0x00, 0x04, 0x31, 0x24, + 0xcf, 0x44, 0xb3, 0x62, 0x5a, 0x1d, 0xb6, 0xfd, 0xf7, 0xee, 0x5c, 0x65, + 0x8c, 0x43, 0x6b, 0x05, 0x17, 0xe5, 0x12, 0x75, 0xf8, 0xe2, 0xbd, 0xb1, + 0xf2, 0x0e, 0x66, 0xae, 0x39, 0xad, 0xc6, 0x6d, 0xb8, 0x02, 0xb2, 0x72, + 0x4a, 0xd5, 0x37, 0xdc, 0x23, 0x00, 0x28, 0x6e, 0x1b, 0x98, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp256k1 */ +const unsigned char test_ec_secp256k1[] = { + 0x30, 0x74, 0x02, 0x01, 0x01, 0x04, 0x20, 0x3a, 0x18, 0xe9, 0x5c, 0x8e, + 0xde, 0xb5, 0x8e, 0x1b, 0xd5, 0x36, 0xa6, 0x01, 0xb6, 0x3d, 0x4c, 0xe1, + 0x86, 0x65, 0x3b, 0x77, 0xb5, 0xfd, 0x3c, 0xc8, 0x6f, 0x15, 0x16, 0x0b, + 0x16, 0x88, 0x80, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x0a, + 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x0f, 0x63, 0x3a, 0x58, 0xa9, 0xc1, + 0xbb, 0x56, 0x12, 0xe1, 0x3d, 0xff, 0x91, 0x27, 0x06, 0xca, 0x4e, 0x46, + 0xbb, 0xdb, 0x9b, 0xb8, 0x62, 0xec, 0xd9, 0x39, 0xa8, 0x02, 0x08, 0x1c, + 0x1c, 0xb8, 0x0d, 0xe1, 0x28, 0xeb, 0x06, 0xca, 0xb6, 0x50, 0x5e, 0x99, + 0xe0, 0x24, 0x20, 0xef, 0x72, 0xe6, 0x5d, 0x27, 0x96, 0x25, 0x7f, 0x6e, + 0xf6, 0x65, 0x43, 0xe1, 0xaf, 0x6c, 0x71, 0x86, 0x29, 0xb8, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_curve448 */ +const unsigned char test_ec_curve448[] = { + 0x30, 0x46, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x6f, + 0x04, 0x3a, 0x04, 0x38, 0x74, 0xe8, 0x0c, 0xd1, 0xf3, 0x1d, 0x38, 0xae, + 0x1d, 0x57, 0x6e, 0xfd, 0x8a, 0x5f, 0xc2, 0xf0, 0x48, 0x95, 0x41, 0xc9, + 0x75, 0x31, 0x6f, 0x80, 0xea, 0xc2, 0xdf, 0x0f, 0x86, 0xc6, 0xda, 0x0a, + 0x6f, 0x6e, 0xeb, 0x45, 0xc0, 0x03, 0xbf, 0x13, 0xb3, 0x43, 0xa1, 0xb2, + 0x57, 0x27, 0xd4, 0xc7, 0xc7, 0x7a, 0xf7, 0x29, 0xa7, 0x78, 0xe1, 0xe9, +}; +/* END FILE */ diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 67c06d4123..1bc12c207f 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -187,36 +187,46 @@ #if defined(MBEDTLS_PK_PARSE_C) #include <../src/test_keys.h> -static int get_predefined_key_data(int is_rsa, int curve_or_keybits, - unsigned char **outbuf, size_t *out_buf_size) +struct key_lut_element { + int curve_or_keybits; + const unsigned char *key; + size_t key_len; +}; + +struct key_lut_element keys_lut[] = { + { 1024, test_rsa_1024, sizeof(test_rsa_1024) }, + { 1026, test_rsa_1026, sizeof(test_rsa_1026) }, + { 1028, test_rsa_1028, sizeof(test_rsa_1028) }, + { 1030, test_rsa_1030, sizeof(test_rsa_1030) }, + { 2048, test_rsa_2048, sizeof(test_rsa_2048) }, + { 4096, test_rsa_4096, sizeof(test_rsa_4096) }, + { MBEDTLS_ECP_DP_SECP192R1, test_ec_secp192r1, sizeof(test_ec_secp192r1) }, + { MBEDTLS_ECP_DP_SECP224R1, test_ec_secp224r1, sizeof(test_ec_secp224r1) }, + { MBEDTLS_ECP_DP_SECP256R1, test_ec_secp256r1, sizeof(test_ec_secp256r1) }, + { MBEDTLS_ECP_DP_SECP384R1, test_ec_secp384r1, sizeof(test_ec_secp384r1) }, + { MBEDTLS_ECP_DP_SECP521R1, test_ec_secp521r1, sizeof(test_ec_secp521r1) }, + { MBEDTLS_ECP_DP_BP256R1, test_ec_bp256r1, sizeof(test_ec_bp256r1) }, + { MBEDTLS_ECP_DP_BP384R1, test_ec_bp384r1, sizeof(test_ec_bp384r1) }, + { MBEDTLS_ECP_DP_BP512R1, test_ec_bp512r1, sizeof(test_ec_bp512r1) }, + { MBEDTLS_ECP_DP_CURVE25519, test_ec_curve25519, sizeof(test_ec_curve25519) }, + { MBEDTLS_ECP_DP_SECP192K1, test_ec_secp192k1, sizeof(test_ec_secp192k1) }, + { MBEDTLS_ECP_DP_SECP256K1, test_ec_secp256k1, sizeof(test_ec_secp256k1) }, + { MBEDTLS_ECP_DP_CURVE448, test_ec_curve448, sizeof(test_ec_curve448) }, +}; + +static int get_predefined_key_data(int curve_or_keybits, + const unsigned char **key, size_t *key_len) { - const char *key_data_hex = NULL; - size_t out_buf_len = 0; - - if (is_rsa) { - size_t i; - for (i = 0; i < ARRAY_LENGTH(rsa_key_data_lut); i++) { - if (curve_or_keybits == rsa_key_data_lut[i].bits) { - key_data_hex = rsa_key_data_lut[i].key; - break; - } + size_t i; + for (i = 0; i < ARRAY_LENGTH(keys_lut); i++) { + if (curve_or_keybits == keys_lut[i].curve_or_keybits) { + *key = keys_lut[i].key; + *key_len = keys_lut[i].key_len; + return 0; } - } else { - key_data_hex = ec_key_data_lut[curve_or_keybits]; } - if (key_data_hex == NULL) { - return MBEDTLS_ERR_PK_BAD_INPUT_DATA; - } - - *out_buf_size = strlen(key_data_hex)/2; - *outbuf = mbedtls_calloc(*out_buf_size, sizeof(unsigned char)); - if (*outbuf == NULL) { - return MBEDTLS_ERR_PK_ALLOC_FAILED; - } - mbedtls_test_unhexify(*outbuf, *out_buf_size, key_data_hex, &out_buf_len); - - return 0; + return MBEDTLS_ERR_PK_BAD_INPUT_DATA; } /** Fill the provided PK context with a proper key. @@ -237,12 +247,11 @@ static int get_predefined_key_data(int is_rsa, int curve_or_keybits, */ static int pk_genkey(mbedtls_pk_context *pk, const mbedtls_pk_info_t *pk_info, int curve_or_keybits) { - unsigned char *key_data = NULL; + const unsigned char *key_data = NULL; size_t key_data_len = 0; int ret = MBEDTLS_ERR_PK_BAD_INPUT_DATA; - int is_rsa = (curve_or_keybits >= 1024); - TEST_EQUAL(get_predefined_key_data(is_rsa, curve_or_keybits, &key_data, &key_data_len), 0); + TEST_EQUAL(get_predefined_key_data(curve_or_keybits, &key_data, &key_data_len), 0); TEST_EQUAL(mbedtls_pk_parse_key(pk, key_data, key_data_len, NULL, 0, mbedtls_test_rnd_std_rand, NULL), 0); /* Override pk_info. */ @@ -250,7 +259,6 @@ static int pk_genkey(mbedtls_pk_context *pk, const mbedtls_pk_info_t *pk_info, i ret = 0; exit: - mbedtls_free(key_data); return ret; } @@ -278,11 +286,11 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, { psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; psa_status_t status = PSA_ERROR_GENERIC_ERROR; - unsigned char *key_data = NULL; + const unsigned char *key_data = NULL; size_t key_data_size = 0; /* Overall size of key_data in bytes. It includes leading * zeros (if any). */ size_t key_data_len = 0; /* Length of valid bytes in key_data. */ - unsigned char *key_data_start; + const unsigned char *key_data_start; /* Get the predefined key: * - RSA keys are already in a valid format to be imported into PSA. @@ -291,16 +299,16 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, * unrelevant data and go directly to the private key. */ if (PSA_KEY_TYPE_IS_RSA(type)) { - TEST_EQUAL(get_predefined_key_data(1, bits, &key_data, &key_data_size), 0); - key_data_start = key_data; + TEST_EQUAL(get_predefined_key_data(bits, &key_data, &key_data_size), 0); + key_data_start = (unsigned char *) key_data; key_data_len = key_data_size; } else { mbedtls_ecp_group_id grp_id; grp_id = mbedtls_ecc_group_from_psa(PSA_KEY_TYPE_ECC_GET_FAMILY(type), bits); - TEST_EQUAL(get_predefined_key_data(0, grp_id, &key_data, &key_data_size), 0); + TEST_EQUAL(get_predefined_key_data(grp_id, &key_data, &key_data_size), 0); - unsigned char *p = key_data; - unsigned char *end = key_data + key_data_size; + unsigned char *p = (unsigned char *) key_data; + unsigned char *end = (unsigned char *) key_data + key_data_size; size_t len; int version; @@ -325,7 +333,6 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, status = psa_import_key(&attributes, key_data_start, key_data_len, key); exit: - mbedtls_free(key_data); return status; } #endif /* MBEDTLS_PSA_CRYPTO_CLIENT */ From 4a350cac4ff0ebb370b5c5e138445bda892c6cc5 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 2 Apr 2024 11:31:33 +0200 Subject: [PATCH 11/32] pk: fix unused variable in copy_from_psa() key_bits is unused when neither MBEDTLS_RSA_C or MBEDTLS_PK_HAVE_ECC_KEYS are defined. Signed-off-by: Valerio Setti --- library/pk.c | 1 + 1 file changed, 1 insertion(+) diff --git a/library/pk.c b/library/pk.c index c29318dd97..e33a2434b9 100644 --- a/library/pk.c +++ b/library/pk.c @@ -968,6 +968,7 @@ static int copy_from_psa(mbedtls_svc_key_id_t key_id, } else #endif /* MBEDTLS_PK_HAVE_ECC_KEYS */ { + (void) key_bits; return MBEDTLS_ERR_PK_BAD_INPUT_DATA; } From 09e98720371f0191166abb4371d34e63700afecf Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 2 Apr 2024 11:33:22 +0200 Subject: [PATCH 12/32] test_suite_pk: fix guards Now that key generation has been replaced with parsing predefined keys, guards for MBEDTLS_PK_PARSE_C need to be added in test code. This commits also removes remaining usage of GENPRIME. Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.data | 244 ++++++++++++++-------------- tests/suites/test_suite_pk.function | 78 ++++----- 2 files changed, 162 insertions(+), 160 deletions(-) diff --git a/tests/suites/test_suite_pk.data b/tests/suites/test_suite_pk.data index 3ec488ec81..e93c764542 100644 --- a/tests/suites/test_suite_pk.data +++ b/tests/suites/test_suite_pk.data @@ -9,21 +9,21 @@ depends_on:MBEDTLS_RSA_C valid_parameters_pkwrite:"308204a20201000282010100a9021f3d406ad555538bfd36ee82652e15615e89bfb8e84590dbee881652d3f143504796125964876bfd2be046f973beddcf92e1915bed66a06f8929794580d0836ad54143775f397c09044782b0573970eda3ec15191ea8330847c10542a9fd4cc3b4dfdd061f4d1051406773130f40f86d81255f0ab153c6307e1539acf95aee7f929ea6055be7139785b52392d9d42406d50925897507dda61a8f3f0919bead652c64eb959bdcfe415e17a6da6c5b69cc02ba142c16249c4adccdd0f7526773f12da023fd7ef431ca2d70ca890b04db2ea64f706e9ecebd5889e253599e6e5a9265e2883f0c9419a3dde5e89d9513ed29dbab7012dc5aca6b17ab528254b10203010001028201001689f5e89142ae18a6ffb0513715a4b0b4a13b9e5b3729a2bd62d738c6e15cea7bf3a4d85ab2193a0628c9452bb1f0c1af8b132789df1c95e72778bf5330f5b0d915d242d5e0818e85001ed5fa93d1ce13455deb0a15438562e8e3c8d60ec1e4c9ebff9f2b36b9cde9332cc79f0d17a7ae79cc1353cd75409ad9b4b6d7ee3d82af6f3207656cf2ac98947c15c398db0cebf8dc3eef5398269480cdd09411b960273ae3f364da09af849f24aa87346c58618ea91d9d6cd1d3932c80dbfc1f0a4166a9036911999ca27761079f0ce02db02c1c909ff9b4278578d7bb1b54b2b7082fc9e864b6b394e331c0d11a9a68255565b6dd477f4119c5809839520700711102818100d7db987ad86de6a9b0749fb5da80bacde3bebd72dcc83f60a27db74f927ac3661386577bfce5b4a00ad024682401d6aad29713c8e223b53415305ca07559821099b187fdd1bad3dc4dec9da96f5fa6128331e8f7d89f1e1a788698d1a27256dc7cd392f04e531a9e38e7265bf4fd7eec01e7835e9b1a0dd8923e440381be1c2702818100c87025fff7a493c623404966fbc8b32ed164ca620ad1a0ad11ef42fd12118456017856a8b42e5d4ad36104e9dc9f8a2f3003c3957ffddb20e2f4e3fc3cf2cdddae01f57a56de4fd24b91ab6d3e5cc0e8af0473659594a6bbfdaacf958f19c8d508eac12d8977616af6877106288093d37904a139220c1bc278ea56edc086976702818043e708685c7cf5fa9b4f948e1856366d5e1f3a694f9a8e954f884c89f3823ac5798ee12657bfcaba2dac9c47464c6dc2fecc17a531be19da706fee336bb6e47b645dbc71d3eff9856bddeb1ac9b644ffbdd58d7ba9e1240f1faaf797ba8a4d58becbaf85789e1bd979fcfccc209d3db7f0416bc9eef09b3a6d86b8ce8199d4310281804f4b86ccffe49d0d8ace98fb63ea9f708b284ba483d130b6a75cb76cb4e4372d6b41774f20912319420ca4cbfc1b25a8cb5f01d6381f6ebc50ed3ef08010327f5ba2acc1ac7220b3fa6f7399314db2879b0db0b5647abd87abb01295815a5b086491b2c0d81c616ed67ef8a8ce0727f446711d7323d4147b5828a52143c43b4b028180540756beba83c20a0bda11d6dec706a71744ff28090cec079dffb507d82828038fe657f61496a20317f779cb683ce8196c29a6fe28839a282eef4de57773be56808b0c3e2ac7747e2b200b2fbf20b55258cd24622a1ce0099de098ab0855106ae087f08b0c8c346d81619400c1b4838e33ed9ff90f05db8fccf8fb7ab881ca12" PK utils: RSA Minimum key -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_utils:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS:MBEDTLS_RSA_GEN_KEY_MIN_BITS:(MBEDTLS_RSA_GEN_KEY_MIN_BITS + 7) / 8:"RSA" # mbedtls_rsa_gen_key() only supports even sizes, so we don't test min+1, # min+3, etc. PK utils: RSA Minimum key + 2 bits -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_utils:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 2:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 2:(MBEDTLS_RSA_GEN_KEY_MIN_BITS + 2 + 7) / 8:"RSA" PK utils: RSA Minimum key + 4 bits -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_utils:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 4:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 4:(MBEDTLS_RSA_GEN_KEY_MIN_BITS + 4 + 7) / 8:"RSA" PK utils: RSA Minimum key + 6 bits -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_utils:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 6:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 6:(MBEDTLS_RSA_GEN_KEY_MIN_BITS + 6 + 7) / 8:"RSA" PK utils: ECKEY SECP192R1 @@ -63,7 +63,7 @@ depends_on:MBEDTLS_PK_CAN_ECDSA_VERIFY:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_ECP_HAV pk_psa_utils:0 PK PSA utilities: RSA setup/free, info functions, unsupported operations -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_psa_utils:1 PK can do ext: ECDSA(ANY)/NONE, invalid check STREAM_CIPHER @@ -159,147 +159,147 @@ depends_on:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_ECP_HAVE_SECP256R1 pk_can_do_ext:1:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):PSA_KEY_USAGE_DERIVE|PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_ECDH:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):256:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_KEY_USAGE_DERIVE:1 PK can do ext: RSA_PKCS1V15_SIGN(ANY)/NONE, check not allowed COPY usage -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_COPY:0 PK can do ext: RSA_PKCS1V15_SIGN(ANY)/NONE, invalid check STREAM_CIPHER -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_STREAM_CIPHER:PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PKCS1V15_SIGN(ANY)/NONE, invalid check ECDSA(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PKCS1V15_SIGN(ANY)/NONE, invalid check ECDH -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_ECDH:PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PKCS1V15_SIGN(ANY)/NONE, invalid check RSA_PKCS1V15_CRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PKCS1V15_SIGN(ANY)/NONE, invalid check RSA_PSS(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PKCS1V15_SIGN(ANY)/NONE, check RSA_PKCS1V15_SIGN(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: RSA_PKCS1V15_SIGN(ANY)/NONE, check non-present usage -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_DERIVE:0 PK can do ext: RSA_PKCS1V15_SIGN(SHA256)/NONE, check RSA_PKCS1V15_SIGN(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: NONE, RSA_PKCS1V15_SIGN(ANY), check RSA_PKCS1V15_SIGN(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_NONE:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: NONE, RSA_PKCS1V15_SIGN(SHA256), check RSA_PKCS1V15_SIGN(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_NONE:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: RSA_PKCS1V15_SIGN(SHA256)/NONE, invalid check RSA_PKCS1V15_SIGN(ANY) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PKCS1V15_SIGN(SHA1)/NONE, invalid check RSA_PKCS1V15_SIGN(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_1):PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PSS(ANY)/NONE, invalid check STREAM_CIPHER -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_STREAM_CIPHER:PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PSS(ANY)/NONE, invalid check ECDSA(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PSS(ANY)/NONE, invalid check RSA_PKCS1V15_CRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PSS(ANY)/NONE, invalid check RSA_PKCS1V15_SIGN(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PSS(ANY)/NONE, check RSA_PSS(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):PSA_ALG_NONE:1024:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: RSA_PSS(SHA256)/NONE, check RSA_PSS(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_ALG_NONE:1024:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: NONE, RSA_PSS(ANY), check RSA_PSS(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_NONE:PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):1024:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: NONE, RSA_PSS(SHA256), check RSA_PSS(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_NONE:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):1024:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: RSA_PSS(SHA256)/NONE, invalid check RSA_PSS(ANY) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_ALG_NONE:1024:PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PSS(SHA1)/NONE, invalid check RSA_PSS(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PSS(PSA_ALG_SHA_1):PSA_ALG_NONE:1024:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PKCS1V15_SIGN_RAW/NONE, check RSA_PKCS1V15_SIGN_RAW -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: RSA_PKCS1V15_SIGN_RAW/NONE, invalid check RSA_PKCS1V15_SIGN(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:0 PK can do ext: RSA_PKCS1V15_CRYPT/NONE, invalid check STREAM_CIPHER -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_ALG_NONE:1024:PSA_ALG_STREAM_CIPHER:PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT:0 PK can do ext: RSA_PKCS1V15_CRYPT/NONE, invalid check ECDSA(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_ALG_NONE:1024:PSA_ALG_ECDSA(PSA_ALG_SHA_256):PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT:0 PK can do ext: RSA_PKCS1V15_CRYPT/NONE, invalid check ECDH -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_ALG_NONE:1024:PSA_ALG_ECDH:PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT:0 PK can do ext: RSA_PKCS1V15_CRYPT/NONE, invalid check RSA_PSS(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_ALG_NONE:1024:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT:0 PK can do ext: RSA_PKCS1V15_CRYPT/NONE, invalid check RSA_PKCS1V15_SIGN(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT:0 PK can do ext: RSA_PKCS1V15_CRYPT/NONE, check RSA_PKCS1V15_CRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_ALG_NONE:1024:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:1 PK can do ext: RSA_PKCS1V15_CRYPT/RSA_PSS(ANY), check RSA_PKCS1V15_CRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT|PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):1024:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:1 PK can do ext: RSA_PKCS1V15_CRYPT/RSA_PSS(ANY), check RSA_PSS(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT|PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):1024:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_KEY_USAGE_DECRYPT:1 PK can do ext: RSA_PKCS1V15_CRYPT/RSA_PSS(ANY), check non allowed ENCRYPT usage -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_ENCRYPT|PSA_KEY_USAGE_DECRYPT|PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):1024:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_KEY_USAGE_ENCRYPT:0 PK can do ext: RSA_PKCS1V15_SIGN(ANY)/RSA_PSS(ANY), check RSA_PSS(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):1024:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: RSA_PKCS1V15_SIGN(ANY)/RSA_PSS(ANY), check RSA_PKCS1V15_SIGN(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:1:PSA_KEY_TYPE_RSA_KEY_PAIR:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH):PSA_ALG_RSA_PSS(PSA_ALG_ANY_HASH):1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: MBEDTLS_PK_ECKEY, check ECDSA(SHA256) @@ -311,19 +311,19 @@ depends_on:MBEDTLS_PK_HAVE_ECC_KEYS:MBEDTLS_ECP_HAVE_SECP256R1 pk_can_do_ext:0:MBEDTLS_PK_ECKEY:0:0:0:MBEDTLS_ECP_DP_SECP256R1:PSA_ALG_ECDH:PSA_KEY_USAGE_DERIVE:1 PK can do ext: MBEDTLS_PK_RSA, check RSA_PKCS1V15_SIGN(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:0:MBEDTLS_PK_RSA:0:0:0:1024:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 PK can do ext: MBEDTLS_PK_RSA, check PSA_ALG_RSA_PKCS1V15_CRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:0:MBEDTLS_PK_RSA:0:0:0:1024:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:1 PK can do ext: MBEDTLS_PK_RSA, check invalid PSA_KEY_USAGE_ENCRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:0:MBEDTLS_PK_RSA:0:0:0:1024:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_ENCRYPT:0 PK can do ext: MBEDTLS_PK_RSA, check RSA_PSS(SHA256) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_can_do_ext:0:MBEDTLS_PK_RSA:0:0:0:1024:PSA_ALG_RSA_PSS(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:1 RSA verify test vector: PKCS1v1.5 (explicit), SHA1, good @@ -435,19 +435,19 @@ depends_on:MBEDTLS_PK_HAVE_ECC_KEYS:MBEDTLS_ECP_HAVE_SECP192R1 pk_sign_verify:MBEDTLS_PK_ECKEY_DH:MBEDTLS_ECP_DP_SECP192R1:0:0:MBEDTLS_ERR_PK_TYPE_MISMATCH:MBEDTLS_ERR_PK_TYPE_MISMATCH RSA sign-verify, PKCS1v1.5, SHA1 -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_GENPRIME:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA1 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA1 pk_sign_verify:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS:MBEDTLS_RSA_PKCS_V15:MBEDTLS_MD_SHA1:0:0 RSA sign-verify, PKCS1v2.1, SHA1 -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_GENPRIME:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA1 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA1 pk_sign_verify:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS:MBEDTLS_RSA_PKCS_V21:MBEDTLS_MD_SHA1:0:0 RSA sign-verify, PKCS1v1.5, SHA256 -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_GENPRIME:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA256 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA256 pk_sign_verify:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS:MBEDTLS_RSA_PKCS_V15:MBEDTLS_MD_SHA256:0:0 RSA sign-verify, PKCS1v2.1, SHA256 -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_GENPRIME:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA256 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA256 pk_sign_verify:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS:MBEDTLS_RSA_PKCS_V21:MBEDTLS_MD_SHA256:0:0 RSA encrypt-decrypt test PKCS1 v1.5 @@ -507,7 +507,7 @@ depends_on:MBEDTLS_PK_CAN_ECDSA_VERIFY:MBEDTLS_PK_CAN_ECDSA_SIGN pk_ec_nocrypt:MBEDTLS_PK_ECDSA RSA_ALT consistency -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_GENPRIME:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512 pk_rsa_alt: Verify ext RSA #1 (PKCS1 v2.1, salt_len = ANY, OK) @@ -688,11 +688,11 @@ depends_on:MBEDTLS_PK_CAN_ECDSA_SIGN:MBEDTLS_ECP_HAVE_BP512R1 pk_psa_sign:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_BRAINPOOL_P_R1):512:0 PSA wrapped sign: RSA PKCS1 v1.5 -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_psa_sign:PSA_KEY_TYPE_RSA_KEY_PAIR:1024:MBEDTLS_RSA_PKCS_V15 PSA wrapped sign: RSA PKCS1 v2.1 -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21 pk_psa_sign:PSA_KEY_TYPE_RSA_KEY_PAIR:1024:MBEDTLS_RSA_PKCS_V21 PK sign ext: RSA2048, PK_RSA, MD_SHA256 @@ -762,136 +762,136 @@ pk_get_psa_attributes_fail:MBEDTLS_PK_NONE:FROM_PUBLIC:PSA_KEY_USAGE_SIGN_MESSAG # Bad usage due to not specifying sign/crypt/derive. PSA attributes for pk: RSA usage=0 (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes_fail:MBEDTLS_PK_RSA:FROM_PAIR:0:MBEDTLS_ERR_PK_TYPE_MISMATCH # Bad usage due to not specifying sign/crypt/derive. PSA attributes for pk: RSA usage=EXPORT (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_EXPORT:MBEDTLS_ERR_PK_TYPE_MISMATCH # This usage could make sense, but is not currently supported. PSA attributes for pk: RSA usage=DECRYPT|EXPORT (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_EXPORT:MBEDTLS_ERR_PK_TYPE_MISMATCH # Bad usage due to specifying more than one of sign/crypt/derive. PSA attributes for pk: RSA usage=DECRYPT|SIGN_MESSAGE (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_SIGN_MESSAGE:MBEDTLS_ERR_PK_TYPE_MISMATCH # This usage could make sense, but is not currently supported. PSA attributes for pk: RSA usage=SIGN_MESSAGE|SIGN_HASH (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_SIGN_HASH:MBEDTLS_ERR_PK_TYPE_MISMATCH # This usage could make sense, but is not currently supported. PSA attributes for pk: RSA usage=SIGN_MESSAGE|VERIFY_MESSAGE (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA attributes for pk: RSA v15 pair DECRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_DECRYPT:1:PSA_ALG_RSA_PKCS1V15_CRYPT PSA attributes for pk: RSA v21 SHA-256 pair DECRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA256 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA256 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_SHA256:FROM_PAIR:PSA_KEY_USAGE_DECRYPT:1:PSA_ALG_RSA_OAEP(PSA_ALG_SHA_256) PSA attributes for pk: RSA v21 SHA-512 pair DECRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA512 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA512 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_SHA512:FROM_PAIR:PSA_KEY_USAGE_DECRYPT:1:PSA_ALG_RSA_OAEP(PSA_ALG_SHA_512) PSA attributes for pk: RSA v15 pair->public ENCRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_ENCRYPT:0:PSA_ALG_RSA_PKCS1V15_CRYPT PSA attributes for pk: RSA v21 SHA-256 pair->public ENCRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA256 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA256 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_SHA256:FROM_PAIR:PSA_KEY_USAGE_ENCRYPT:0:PSA_ALG_RSA_OAEP(PSA_ALG_SHA_256) PSA attributes for pk: RSA v21 SHA-512 pair->public ENCRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA512 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA512 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_SHA512:FROM_PAIR:PSA_KEY_USAGE_ENCRYPT:0:PSA_ALG_RSA_OAEP(PSA_ALG_SHA_512) PSA attributes for pk: RSA v15 public ENCRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_USAGE_ENCRYPT:0:PSA_ALG_RSA_PKCS1V15_CRYPT PSA attributes for pk: RSA v21 SHA-256 public ENCRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA256 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA256 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_SHA256:FROM_PUBLIC:PSA_KEY_USAGE_ENCRYPT:0:PSA_ALG_RSA_OAEP(PSA_ALG_SHA_256) PSA attributes for pk: RSA v21 SHA-512 public ENCRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA512 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA512 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_SHA512:FROM_PUBLIC:PSA_KEY_USAGE_ENCRYPT:0:PSA_ALG_RSA_OAEP(PSA_ALG_SHA_512) PSA attributes for pk: RSA v15 public DECRYPT (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes_fail:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_USAGE_DECRYPT:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA attributes for pk: RSA v15 pair SIGN_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_SIGN_MESSAGE:1:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v21 SHA-256 pair SIGN_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_NONE:FROM_PAIR:PSA_KEY_USAGE_SIGN_MESSAGE:1:PSA_ALG_RSA_PSS_ANY_SALT(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v15 pair SIGN_HASH -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_SIGN_HASH:1:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v21 SHA-256 pair SIGN_HASH -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_NONE:FROM_PAIR:PSA_KEY_USAGE_SIGN_HASH:1:PSA_ALG_RSA_PSS_ANY_SALT(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v15 pair->public VERIFY_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_VERIFY_MESSAGE:0:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v21 SHA-256 pair->public VERIFY_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_NONE:FROM_PAIR:PSA_KEY_USAGE_VERIFY_MESSAGE:0:PSA_ALG_RSA_PSS_ANY_SALT(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v15 pair->public VERIFY_HASH -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_VERIFY_HASH:0:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v21 SHA-256 pair->public VERIFY_HASH -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_NONE:FROM_PAIR:PSA_KEY_USAGE_VERIFY_HASH:0:PSA_ALG_RSA_PSS_ANY_SALT(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v15 public VERIFY_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_USAGE_VERIFY_MESSAGE:0:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v21 SHA-256 public VERIFY_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_NONE:FROM_PUBLIC:PSA_KEY_USAGE_VERIFY_MESSAGE:0:PSA_ALG_RSA_PSS_ANY_SALT(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v15 public VERIFY_HASH -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_USAGE_VERIFY_HASH:0:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v21 SHA-256 public VERIFY_HASH -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V21 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21 pk_rsa_v21_get_psa_attributes:MBEDTLS_MD_NONE:FROM_PUBLIC:PSA_KEY_USAGE_VERIFY_HASH:0:PSA_ALG_RSA_PSS_ANY_SALT(PSA_ALG_ANY_HASH) PSA attributes for pk: RSA v15 public SIGN_MESSAGE (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes_fail:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_USAGE_SIGN_MESSAGE:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA attributes for pk: RSA v15 public SIGN_HASH (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes_fail:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_USAGE_SIGN_HASH:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA attributes for pk: RSA v15 pair DERIVE (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_USAGE_DERIVE:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA attributes for pk: RSA v15 public DERIVE (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_PKCS1_V15 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_get_psa_attributes_fail:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_USAGE_DERIVE:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA attributes for pk: ECKEY pair DECRYPT (bad) @@ -1063,163 +1063,163 @@ depends_on:MBEDTLS_PK_HAVE_ECC_KEYS:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE pk_get_psa_attributes_fail:MBEDTLS_PK_ECKEY_DH:FROM_PUBLIC:PSA_KEY_USAGE_VERIFY_HASH:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA attributes for pk: opaque RSA pair, 0 & SIGN_MESSAGE (bad policy) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque RSA pair, SIGN_MESSAGE & SIGN_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque RSA pair, SIGN|VERIFY & SIGN_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque RSA pair, SIGN|DECRYPT & SIGN_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT # For a PK_OPAQUE key with a key pair type output, # mbedtls_pk_import_into_psa() requires the key to be copyable or exportable. # Try all combinations of COPY/not, EXPORT/not. PSA attributes for pk: opaque RSA pair, SIGN|... & SIGN_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque RSA pair, SIGN|EXPORT|... & SIGN_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque RSA pair, SIGN|COPY|... & SIGN_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque RSA pair, SIGN|COPY|EXPORT... & SIGN_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque RSA pair, SIGN_MESSAGE & SIGN_HASH (bad policy) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 # For a PK_OPAQUE key, mbedtls_pk_get_psa_attributes() ignores the input # key's algorithm policy. Just this time, test with a few different algorithms. PSA attributes for pk: opaque RSA pair, SIGN_HASH & SIGN_HASH [0] -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_NONE:PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque RSA pair, SIGN_HASH & SIGN_HASH [raw] -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque RSA pair, SIGN_HASH & SIGN_HASH [v15] -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque RSA pair, SIGN_HASH & SIGN_HASH [PSS] -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PSS_ANY_SALT(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque RSA pair, 0 & DECRYPT (bad policy) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque RSA pair, DECRYPT & DECRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:0:1:PSA_KEY_USAGE_DECRYPT PSA attributes for pk: opaque RSA pair, DECRYPT|... & DECRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque RSA pair, ... & DERIVE (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DERIVE:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque RSA pair, ... & EXPORT (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_EXPORT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque RSA pair->public, VERIFY_MESSAGE & VERIFY_MESSAGE -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_VERIFY_MESSAGE:0:0:PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque RSA pair->public, VERIFY_HASH & VERIFY_HASH -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_VERIFY_HASH:0:0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque RSA pair->public, ENCRYPT & ENCRYPT -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_ENCRYPT:0:0:PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque ECC pair, 0 & SIGN_MESSAGE (bad policy) -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:0:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque ECC pair, SIGN_MESSAGE & SIGN_MESSAGE -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque ECC pair, SIGN|VERIFY & SIGN_MESSAGE -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque ECC pair, SIGN|DECRYPT & SIGN_MESSAGE -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT PSA attributes for pk: opaque ECC pair, SIGN|... & SIGN_MESSAGE -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque ECC pair, SIGN_HASH & SIGN_HASH -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque ECC pair, ... & DERIVE -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_KEY_USAGE_DERIVE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DERIVE PSA attributes for pk: opaque ECC pair, ... & DECRYPT (bad) -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DERIVE:PSA_ALG_ECDH:PSA_KEY_USAGE_DECRYPT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque ECC pair, ... & EXPORT (bad) -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_ECDH:PSA_KEY_USAGE_EXPORT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque ECC pair->public, VERIFY_MESSAGE & VERIFY_MESSAGE -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_VERIFY_MESSAGE:0:0:PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque ECC pair->public, VERIFY_HASH & VERIFY_HASH -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_VERIFY_HASH:0:0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque ECC pair->public, ENCRYPT & ENCRYPT (bad) -depends_on:PSA_WANT_ECC_SECP_R1_256 +depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS pk_get_psa_attributes_opaque:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_KEY_USAGE_ENCRYPT:PSA_ALG_ECDSA_ANY:PSA_KEY_USAGE_ENCRYPT:MBEDTLS_ERR_PK_TYPE_MISMATCH:0:0 PSA import into PSA: RSA pair to ECC (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):0:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA import into PSA: RSA public to RSA pair (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_TYPE_RSA_KEY_PAIR:0:MBEDTLS_ERR_RSA_BAD_INPUT_DATA # MBEDTLS_ERR_PK_INVALID_ALG is the error that results from our translation # of PSA errors. In this case MBEDTLS_ERR_PK_TYPE_MISMATCH would probably # be more appropriate. (Applies to all the RSA "different bits" test cases.) PSA import into PSA: RSA pair to different bits (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 8:MBEDTLS_ERR_PK_INVALID_ALG PSA import into PSA: RSA public to different bits (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_TYPE_RSA_PUBLIC_KEY:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 8:MBEDTLS_ERR_PK_INVALID_ALG PSA import into PSA: RSA private to public, different bits (bad) -depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME +depends_on:MBEDTLS_RSA_C pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_TYPE_RSA_PUBLIC_KEY:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 8:MBEDTLS_ERR_PK_INVALID_ALG PSA import into PSA: ECKEY pair to RSA (bad) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 1bc12c207f..fc5418502e 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -184,8 +184,6 @@ #define MBEDTLS_MD_ALG_FOR_TEST MBEDTLS_MD_SHA512 #endif -#if defined(MBEDTLS_PK_PARSE_C) - #include <../src/test_keys.h> struct key_lut_element { int curve_or_keybits; @@ -229,6 +227,7 @@ static int get_predefined_key_data(int curve_or_keybits, return MBEDTLS_ERR_PK_BAD_INPUT_DATA; } +#if defined(MBEDTLS_PK_PARSE_C) /** Fill the provided PK context with a proper key. * * This is a fake implementation of key generation because instead of generating @@ -239,13 +238,13 @@ static int get_predefined_key_data(int curve_or_keybits, * * \param pk The PK object to fill. It must have been initialized * (mbedtls_pk_init()), but not setup (mbedtls_pk_setup()). - * \param pk_info mbedtls_pk_info_t to use in the generated PK context. + * \param pk_type mbedtls_pk_type_t to use in the PK context. * \param curve_or_keybits - For RSA keys, the key size in bits. * - For EC keys, the curve (\c MBEDTLS_ECP_DP_xxx). * * \return 0 on success or a negative value otherwise. */ -static int pk_genkey(mbedtls_pk_context *pk, const mbedtls_pk_info_t *pk_info, int curve_or_keybits) +static int pk_genkey(mbedtls_pk_context *pk, mbedtls_pk_type_t pk_type, int curve_or_keybits) { const unsigned char *key_data = NULL; size_t key_data_len = 0; @@ -255,12 +254,13 @@ static int pk_genkey(mbedtls_pk_context *pk, const mbedtls_pk_info_t *pk_info, i TEST_EQUAL(mbedtls_pk_parse_key(pk, key_data, key_data_len, NULL, 0, mbedtls_test_rnd_std_rand, NULL), 0); /* Override pk_info. */ - pk->pk_info = pk_info; + pk->pk_info = mbedtls_pk_info_from_type(pk_type); ret = 0; exit: return ret; } +#endif /* MBEDTLS_PK_PARSE_C */ #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) /** Create a PSA key of the desired type and properties. @@ -303,6 +303,7 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, key_data_start = (unsigned char *) key_data; key_data_len = key_data_size; } else { +#if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) mbedtls_ecp_group_id grp_id; grp_id = mbedtls_ecc_group_from_psa(PSA_KEY_TYPE_ECC_GET_FAMILY(type), bits); TEST_EQUAL(get_predefined_key_data(grp_id, &key_data, &key_data_size), 0); @@ -315,9 +316,16 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, TEST_EQUAL(mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_SEQUENCE | MBEDTLS_ASN1_CONSTRUCTED), 0); TEST_EQUAL(mbedtls_asn1_get_int(&p, end, &version), 0); + if ((grp_id == MBEDTLS_ECP_DP_CURVE25519) || (grp_id == MBEDTLS_ECP_DP_CURVE448)) { + TEST_EQUAL(mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_SEQUENCE | + MBEDTLS_ASN1_CONSTRUCTED), 0); + p += len; + TEST_EQUAL(mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_OCTET_STRING), 0); + } TEST_EQUAL(mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_OCTET_STRING), 0); key_data_start = p; key_data_len = len; +#endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */ } /* Import the key into PSA. */ @@ -336,9 +344,9 @@ exit: return status; } #endif /* MBEDTLS_PSA_CRYPTO_CLIENT */ -#endif /* MBEDTLS_PK_PARSE_C */ #if defined(MBEDTLS_PSA_CRYPTO_C) +#if defined(MBEDTLS_PK_PARSE_C) static psa_key_usage_t pk_get_psa_attributes_implied_usage( psa_key_usage_t expected_usage) { @@ -362,6 +370,7 @@ static psa_key_usage_t pk_get_psa_attributes_implied_usage( expected_usage |= PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY; return expected_usage; } +#endif /* MBEDTLS_PK_PARSE_C */ #define RSA_WRITE_PUBKEY_MAX_SIZE \ PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) @@ -473,7 +482,7 @@ typedef enum { FROM_PAIR = 1 } from_pair_t; -#if defined(MBEDTLS_PSA_CRYPTO_C) +#if defined(MBEDTLS_PSA_CRYPTO_C) && defined(MBEDTLS_PK_PARSE_C) static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, mbedtls_pk_context *pk, psa_key_type_t *psa_type) { @@ -487,20 +496,13 @@ static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, { TEST_EQUAL(mbedtls_pk_setup(pk, mbedtls_pk_info_from_type(pk_type)), 0); *psa_type = PSA_KEY_TYPE_RSA_KEY_PAIR; - mbedtls_rsa_context *rsa = mbedtls_pk_rsa(*pk); if (want_pair) { -#if defined(MBEDTLS_GENPRIME) - TEST_EQUAL(mbedtls_rsa_gen_key( - rsa, - mbedtls_test_rnd_std_rand, NULL, - MBEDTLS_RSA_GEN_KEY_MIN_BITS, 65537), 0); -#else - TEST_FAIL("I don't know how to create an RSA key pair in this configuration."); -#endif + TEST_EQUAL(pk_genkey(pk, pk_type, MBEDTLS_RSA_GEN_KEY_MIN_BITS), 0); } else { unsigned char N[PSA_BITS_TO_BYTES(MBEDTLS_RSA_GEN_KEY_MIN_BITS)] = { 0xff }; N[sizeof(N) - 1] = 0x03; const unsigned char E[1] = { 0x03 }; + mbedtls_rsa_context *rsa = mbedtls_pk_rsa(*pk); TEST_EQUAL(mbedtls_rsa_import_raw(rsa, N, sizeof(N), NULL, 0, NULL, 0, NULL, 0, @@ -519,7 +521,7 @@ static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, mbedtls_ecp_group_id grp_id = MBEDTLS_TEST_ECP_DP_ONE_CURVE; size_t bits; *psa_type = PSA_KEY_TYPE_ECC_KEY_PAIR(mbedtls_ecc_group_to_psa(grp_id, &bits)); - TEST_EQUAL(pk_genkey(pk, mbedtls_pk_info_from_type(pk_type), grp_id), 0); + TEST_EQUAL(pk_genkey(pk, pk_type, grp_id), 0); if (!want_pair) { #if defined(MBEDTLS_PK_USE_PSA_EC_DATA) psa_key_attributes_t pub_attributes = PSA_KEY_ATTRIBUTES_INIT; @@ -555,7 +557,7 @@ static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, exit: return MBEDTLS_ERR_ERROR_GENERIC_ERROR; } -#endif +#endif /* MBEDTLS_PSA_CRYPTO_C && MBEDTLS_PK_PARSE_C */ #if defined(MBEDTLS_PSA_CRYPTO_C) /* Create a new PSA key which will contain only the public part of the private @@ -757,7 +759,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_USE_PSA_CRYPTO */ +/* BEGIN_CASE depends_on:MBEDTLS_USE_PSA_CRYPTO:MBEDTLS_PK_PARSE_C */ void pk_can_do_ext(int opaque_key, int key_type, int key_usage, int key_alg, int key_alg2, int curve_or_keybits, int alg_check, int usage_check, int result) @@ -780,7 +782,7 @@ void pk_can_do_ext(int opaque_key, int key_type, int key_usage, int key_alg, TEST_EQUAL(mbedtls_pk_get_type(&pk), MBEDTLS_PK_OPAQUE); } else { - TEST_EQUAL(pk_genkey(&pk, mbedtls_pk_info_from_type(key_type), curve_or_keybits), 0); + TEST_EQUAL(pk_genkey(&pk, key_type, curve_or_keybits), 0); TEST_EQUAL(mbedtls_pk_get_type(&pk), key_type); } @@ -974,7 +976,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_PK_PARSE_C */ void pk_utils(int type, int curve_or_keybits, int bitlen, int len, char *name) { mbedtls_pk_context pk; @@ -982,7 +984,7 @@ void pk_utils(int type, int curve_or_keybits, int bitlen, int len, char *name) mbedtls_pk_init(&pk); USE_PSA_INIT(); - TEST_ASSERT(pk_genkey(&pk, mbedtls_pk_info_from_type(type), curve_or_keybits) == 0); + TEST_ASSERT(pk_genkey(&pk, type, curve_or_keybits) == 0); TEST_ASSERT((int) mbedtls_pk_get_type(&pk) == type); TEST_ASSERT(mbedtls_pk_can_do(&pk, type)); @@ -1323,7 +1325,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_MD_CAN_SHA256:PK_CAN_SIGN_SOME */ +/* BEGIN_CASE depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_MD_CAN_SHA256:PK_CAN_SIGN_SOME */ void pk_sign_verify(int type, int curve_or_keybits, int rsa_padding, int rsa_md_alg, int sign_ret, int verify_ret) { @@ -1350,7 +1352,7 @@ void pk_sign_verify(int type, int curve_or_keybits, int rsa_padding, int rsa_md_ memset(hash, 0x2a, sizeof(hash)); memset(sig, 0, sizeof(sig)); - TEST_ASSERT(pk_genkey(&pk, mbedtls_pk_info_from_type(type), curve_or_keybits) == 0); + TEST_ASSERT(pk_genkey(&pk, type, curve_or_keybits) == 0); #if defined(MBEDTLS_RSA_C) if (type == MBEDTLS_PK_RSA) { @@ -1715,7 +1717,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_RSA_C:MBEDTLS_PK_RSA_ALT_SUPPORT */ +/* BEGIN_CASE depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C:MBEDTLS_PK_RSA_ALT_SUPPORT */ void pk_rsa_alt() { /* @@ -1743,7 +1745,7 @@ void pk_rsa_alt() memset(test, 0, sizeof(test)); /* Initialize PK RSA context with random key */ - TEST_ASSERT(pk_genkey(&rsa, mbedtls_pk_info_from_type(MBEDTLS_PK_RSA), RSA_KEY_SIZE) == 0); + TEST_ASSERT(pk_genkey(&rsa, MBEDTLS_PK_RSA, RSA_KEY_SIZE) == 0); /* Extract key to the raw rsa context */ TEST_ASSERT(mbedtls_rsa_copy(&raw, mbedtls_pk_rsa(rsa)) == 0); @@ -1811,7 +1813,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_MD_CAN_SHA256:MBEDTLS_USE_PSA_CRYPTO:MBEDTLS_TEST_PK_PSA_SIGN */ +/* BEGIN_CASE depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_MD_CAN_SHA256:MBEDTLS_USE_PSA_CRYPTO:MBEDTLS_TEST_PK_PSA_SIGN */ void pk_psa_sign(int psa_type, int bits, int rsa_padding) { mbedtls_pk_context pk; @@ -1842,18 +1844,18 @@ void pk_psa_sign(int psa_type, int bits, int rsa_padding) USE_PSA_INIT(); /* Create the legacy EC/RSA PK context. */ -#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_GENPRIME) +#if defined(MBEDTLS_RSA_C) if (PSA_KEY_TYPE_IS_RSA(psa_type)) { - TEST_EQUAL(pk_genkey(&pk, mbedtls_pk_info_from_type(MBEDTLS_PK_RSA), bits), 0); + TEST_EQUAL(pk_genkey(&pk, MBEDTLS_PK_RSA, bits), 0); TEST_EQUAL(mbedtls_rsa_set_padding(mbedtls_pk_rsa(pk), rsa_padding, MBEDTLS_MD_NONE), 0); } -#else /* MBEDTLS_RSA_C && MBEDTLS_GENPRIME */ +#else /* MBEDTLS_RSA_C && MBEDTLS_PK_PARSE_C */ (void) rsa_padding; #endif /* MBEDTLS_RSA_C && MBEDTLS_GENPRIME */ #if defined(MBEDTLS_PK_CAN_ECDSA_SIGN) if (PSA_KEY_TYPE_IS_ECC_KEY_PAIR(psa_type)) { ecp_grp_id = mbedtls_ecc_group_from_psa(psa_type, bits); - TEST_ASSERT(pk_genkey(&pk, mbedtls_pk_info_from_type(MBEDTLS_PK_ECKEY), ecp_grp_id) == 0); + TEST_ASSERT(pk_genkey(&pk, MBEDTLS_PK_ECKEY, ecp_grp_id) == 0); } #endif /* MBEDTLS_PK_CAN_ECDSA_SIGN */ @@ -1975,7 +1977,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_GENPRIME */ +/* BEGIN_CASE depends_on:MBEDTLS_PK_PARSE_C */ void pk_sign_ext(int pk_type, int curve_or_keybits, int key_pk_type, int md_alg) { mbedtls_pk_context pk; @@ -1991,7 +1993,7 @@ void pk_sign_ext(int pk_type, int curve_or_keybits, int key_pk_type, int md_alg) mbedtls_pk_init(&pk); MD_OR_USE_PSA_INIT(); - TEST_EQUAL(pk_genkey(&pk, mbedtls_pk_info_from_type(pk_type), curve_or_keybits), 0); + TEST_EQUAL(pk_genkey(&pk, pk_type, curve_or_keybits), 0); TEST_EQUAL(mbedtls_pk_sign_ext(key_pk_type, &pk, md_alg, hash, hash_len, sig, sizeof(sig), &sig_len, @@ -2118,7 +2120,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C */ +/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_PK_PARSE_C */ void pk_get_psa_attributes(int pk_type, int from_pair, int usage_arg, int to_pair, int expected_alg) @@ -2181,7 +2183,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_GENPRIME */ +/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_PK_PARSE_C */ void pk_rsa_v21_get_psa_attributes(int md_type, int from_pair, int usage_arg, int to_pair, int expected_alg) @@ -2229,7 +2231,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C */ +/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_PK_PARSE_C */ void pk_get_psa_attributes_fail(int pk_type, int from_pair, int usage_arg, int expected_ret) @@ -2255,7 +2257,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:MBEDTLS_PSA_CRYPTO_STORAGE_C */ +/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_PK_PARSE_C:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:MBEDTLS_PSA_CRYPTO_STORAGE_C */ void pk_import_into_psa_lifetime(int from_opaque, int from_persistent, /* when from opaque */ int from_exportable, /* when from opaque */ @@ -2406,7 +2408,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C */ +/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_PK_PARSE_C */ void pk_import_into_psa_fail(int pk_type, int from_pair, int type_arg, int bits_arg, int expected_ret) From 001ec961c69c08125dc2dc1fa64952b47e310ec6 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Wed, 3 Apr 2024 13:42:20 +0200 Subject: [PATCH 13/32] generate_test_keys.py: minor improvements - remove BEGIN_FILE/END_FILE lines from output header file. - add single disclaimer at the beginning of the file instead of having it repeated for every array. - improved exception message for missing key generation program. This commits also regenerates "test_keys.h" in order to fully comply with the new format. Signed-off-by: Valerio Setti --- tests/scripts/generate_test_keys.py | 18 +- tests/src/test_keys.h | 1315 +++++++++++++-------------- 2 files changed, 641 insertions(+), 692 deletions(-) diff --git a/tests/scripts/generate_test_keys.py b/tests/scripts/generate_test_keys.py index c2d23c91e1..23bc9a19e8 100755 --- a/tests/scripts/generate_test_keys.py +++ b/tests/scripts/generate_test_keys.py @@ -40,7 +40,7 @@ KEYS = { def generate_der_file(curve_type: str, curve_or_bits: str): if not os.path.exists(KEY_GEN): - raise Exception("Key generation program does not exist.") + raise Exception(KEY_GEN + " does not exist. Please build it before running this script.") if curve_type == 'ec': cob_param = 'ec_curve=' + curve_or_bits else: @@ -66,13 +66,6 @@ def convert_der_to_c(array_name: str) -> str: return output_text -def write_header(macro_name: str): - return ("/* This macro was generated from tests/scripts/generate_test_keys.py */\n" + - "/* BEGIN FILE string macro {} */\n".format(macro_name)) - -def write_footer(): - return "/* END FILE */\n" - def main(): # Remove intermediate and output files if already existing. if os.path.exists(OUTPUT_HEADER_FILE): @@ -81,6 +74,13 @@ def main(): os.remove(TMP_DER_FILE) output_file = open(OUTPUT_HEADER_FILE, 'at') + output_file.write( + "/*********************************************************************************\n" + + " * This file was automatically generated from tests/scripts/generate_test_keys.py.\n" + + " * Please do not edit it manually.\n" + + " *********************************************************************************/\n" + + "\n" + ) add_newline = False for key in KEYS: @@ -91,10 +91,8 @@ def main(): # to the output header file. if add_newline: output_file.write("\n") - output_file.write(write_header(key)) c_data = convert_der_to_c(key) output_file.write(c_data) - output_file.write(write_footer()) # Remove the temporary key file. os.remove(TMP_DER_FILE) add_newline = True diff --git a/tests/src/test_keys.h b/tests/src/test_keys.h index 0c9fc6edaf..197e142ddd 100644 --- a/tests/src/test_keys.h +++ b/tests/src/test_keys.h @@ -1,742 +1,693 @@ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_rsa_1024 */ +/********************************************************************************* + * This file was automatically generated from tests/scripts/generate_test_keys.py. + * Please do not edit it manually. + *********************************************************************************/ + const unsigned char test_rsa_1024[] = { - 0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xa3, - 0x41, 0xeb, 0xfb, 0x42, 0x66, 0xcb, 0x43, 0x5d, 0xa1, 0x0a, 0x6f, 0xdc, - 0x66, 0x35, 0x71, 0x49, 0x6c, 0x03, 0x09, 0x0b, 0x3b, 0x02, 0x2e, 0xeb, - 0x8b, 0x9c, 0xed, 0x0a, 0x9b, 0xc4, 0x80, 0xa4, 0xf3, 0x80, 0x2d, 0xa0, - 0x22, 0x22, 0x4c, 0x84, 0x81, 0x13, 0x05, 0x0c, 0xdc, 0x62, 0xe0, 0xd3, - 0x19, 0x4a, 0x1e, 0x47, 0x16, 0x44, 0x4b, 0xc8, 0x61, 0x30, 0x13, 0x2c, - 0x8c, 0xa6, 0x31, 0x6e, 0x2b, 0xbe, 0x17, 0x64, 0x60, 0xbe, 0xb5, 0x7c, - 0xea, 0xbe, 0xe1, 0xb3, 0x20, 0x9f, 0x13, 0x71, 0x97, 0x12, 0x3c, 0x2c, - 0x09, 0xd8, 0x95, 0x88, 0x6b, 0x01, 0x10, 0x12, 0x6d, 0x18, 0xd3, 0xf7, - 0x2d, 0xab, 0x10, 0x2a, 0xd1, 0x32, 0x72, 0x52, 0x4b, 0xd9, 0x21, 0xea, - 0x14, 0x93, 0xac, 0x9a, 0x18, 0x80, 0x02, 0x54, 0x42, 0x6a, 0xfc, 0xed, - 0x0f, 0xec, 0xb3, 0xdf, 0x2b, 0x54, 0x31, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x80, 0x01, 0x1f, 0xc4, 0xd3, 0x71, 0xd1, 0x59, 0xe0, 0x70, - 0x9e, 0x59, 0x7f, 0x4c, 0x2d, 0xf2, 0xfb, 0xc0, 0xf4, 0xea, 0xaf, 0x6f, - 0x01, 0x9c, 0xc1, 0xfc, 0x72, 0xb5, 0x65, 0xa7, 0x6f, 0x4b, 0xa2, 0xd4, - 0x1f, 0xee, 0x17, 0xc2, 0x54, 0xc1, 0xd6, 0x33, 0x8a, 0x5c, 0xfa, 0x69, - 0xac, 0x81, 0xcc, 0xc8, 0xff, 0x51, 0x54, 0x94, 0x8a, 0x39, 0x75, 0xa9, - 0x1f, 0x4c, 0x30, 0xb1, 0x9b, 0x95, 0x50, 0x5a, 0x7f, 0x9e, 0xc7, 0xd1, - 0x4c, 0x92, 0x20, 0x55, 0x4f, 0xe6, 0x8e, 0xb0, 0xfc, 0x77, 0xc3, 0x79, - 0x81, 0x9e, 0xda, 0xae, 0xed, 0xfd, 0x05, 0xd9, 0x37, 0xaa, 0x4b, 0xd4, - 0x9b, 0xa0, 0x3c, 0xd0, 0x86, 0xe1, 0xa5, 0x6f, 0x19, 0xe1, 0x59, 0x57, - 0xcb, 0xbf, 0x37, 0x0d, 0xbe, 0x17, 0xf5, 0xab, 0x13, 0x76, 0x9a, 0xef, - 0x8c, 0x7e, 0xca, 0xc4, 0x78, 0x20, 0x20, 0x10, 0x90, 0x4a, 0x81, 0x02, - 0x41, 0x00, 0xd6, 0x08, 0x58, 0x09, 0xc8, 0xba, 0x06, 0xa9, 0xf0, 0x0f, - 0x9e, 0x62, 0x0a, 0xde, 0xe3, 0x15, 0x87, 0xac, 0x19, 0x6f, 0x5b, 0x65, - 0x77, 0x77, 0x41, 0xf2, 0xf9, 0x2d, 0xb1, 0x10, 0x50, 0x9e, 0xa2, 0xe9, - 0xa2, 0xe1, 0x0d, 0xf4, 0xa9, 0x31, 0x43, 0x7f, 0xe8, 0xbd, 0xbd, 0xab, - 0x9c, 0x3d, 0xb6, 0x11, 0x20, 0xcb, 0x93, 0xbe, 0xc0, 0x0e, 0xa7, 0x91, - 0xf9, 0x77, 0xe9, 0x5a, 0xdf, 0x21, 0x02, 0x41, 0x00, 0xc3, 0x44, 0xda, - 0x87, 0x88, 0xfe, 0x44, 0xef, 0x5c, 0x80, 0x6e, 0x4f, 0x69, 0x31, 0xd9, - 0x86, 0x57, 0x5a, 0xf4, 0x16, 0xd4, 0x84, 0x11, 0xc9, 0x77, 0xac, 0xec, - 0xcc, 0x2a, 0xec, 0xd3, 0x4d, 0xff, 0xc4, 0x49, 0xd0, 0x3b, 0x2d, 0x1f, - 0x77, 0x27, 0x6c, 0x7b, 0x7f, 0x00, 0xc9, 0x02, 0xea, 0x1e, 0x87, 0x7b, - 0x5a, 0x67, 0xc4, 0xdb, 0x6d, 0xc4, 0xc5, 0xcd, 0xaf, 0x04, 0x81, 0x23, - 0x11, 0x02, 0x41, 0x00, 0xc1, 0x1d, 0x6e, 0x32, 0x05, 0xc6, 0xb3, 0x54, - 0x89, 0xa1, 0xce, 0x0a, 0x30, 0x3c, 0xc3, 0x30, 0x1d, 0xe6, 0x0e, 0x5d, - 0x07, 0x5e, 0x19, 0xd8, 0xa4, 0xcc, 0x92, 0x3f, 0xc3, 0xcf, 0x30, 0xae, - 0xb1, 0xd7, 0x94, 0x7a, 0xf3, 0x98, 0x99, 0x40, 0x35, 0xe3, 0x27, 0x20, - 0x6c, 0x0e, 0x77, 0x3e, 0xc7, 0x13, 0xd5, 0x3f, 0x59, 0xe3, 0x76, 0x6e, - 0xc2, 0x8b, 0x57, 0x47, 0xf6, 0x69, 0x63, 0x81, 0x02, 0x40, 0x78, 0x14, - 0xa9, 0x86, 0x5b, 0xba, 0x71, 0xcd, 0xf8, 0xc6, 0x8a, 0x0f, 0x8f, 0x93, - 0x36, 0x3f, 0xa5, 0x0c, 0xab, 0xba, 0x36, 0x6a, 0x19, 0x3e, 0x19, 0xb8, - 0x5f, 0xce, 0x96, 0x3f, 0x19, 0x1a, 0x88, 0x44, 0xbf, 0x57, 0xac, 0x6c, - 0x6d, 0x43, 0x2b, 0x1d, 0x4d, 0x3c, 0xa6, 0xd0, 0xf6, 0x57, 0xde, 0xfa, - 0x55, 0xe3, 0x1c, 0x99, 0x34, 0x8f, 0x66, 0x48, 0x75, 0xda, 0x41, 0x1c, - 0xe0, 0xe1, 0x02, 0x41, 0x00, 0xa1, 0x87, 0x23, 0x89, 0x69, 0x7e, 0x0b, - 0x69, 0x03, 0xac, 0x76, 0x05, 0xad, 0x42, 0xe9, 0x3f, 0xfc, 0xe7, 0x03, - 0x49, 0x8e, 0x0a, 0xcf, 0x74, 0x82, 0x7f, 0x00, 0x43, 0x14, 0x7e, 0x0c, - 0xce, 0xe7, 0x8b, 0xcb, 0x94, 0xf1, 0xae, 0x0b, 0xf2, 0x53, 0xfc, 0xa9, - 0xd1, 0x45, 0x95, 0x43, 0x0f, 0x16, 0x67, 0x52, 0x3f, 0xb9, 0x0b, 0x3d, - 0xc3, 0xce, 0x82, 0x69, 0x90, 0x35, 0xa6, 0x15, 0xef, + 0x30, 0x82, 0x02, 0x5b, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0x96, + 0xbf, 0x20, 0x0e, 0x0b, 0xab, 0xff, 0x46, 0x3d, 0xd8, 0xc4, 0x25, 0x71, + 0x78, 0x27, 0xe4, 0x27, 0xfd, 0x9c, 0x38, 0x26, 0x25, 0xc2, 0x05, 0xb2, + 0x9a, 0x73, 0x04, 0x99, 0xa8, 0x75, 0x00, 0x98, 0x6b, 0x28, 0xec, 0xe9, + 0x87, 0x6c, 0x92, 0xf8, 0xdd, 0x6e, 0x3b, 0x0a, 0xae, 0x79, 0x79, 0xa1, + 0xbc, 0x39, 0xc2, 0x3e, 0x2d, 0x46, 0xad, 0x09, 0xff, 0xec, 0x3a, 0x2b, + 0xf5, 0xaf, 0x87, 0xaa, 0x69, 0x25, 0xa3, 0x71, 0xa1, 0xe0, 0x43, 0x13, + 0x63, 0xac, 0x0d, 0x54, 0x62, 0x5b, 0xd3, 0x1b, 0x36, 0x0e, 0x6d, 0x26, + 0x80, 0x56, 0xd3, 0x10, 0xf2, 0x21, 0xd4, 0xac, 0x96, 0x3e, 0xe6, 0x66, + 0x7a, 0xea, 0x02, 0x14, 0x02, 0x28, 0x0f, 0x92, 0x46, 0x82, 0x23, 0x06, + 0xd6, 0xef, 0xcc, 0x69, 0x3b, 0x58, 0x82, 0xb0, 0xd7, 0x26, 0x9f, 0x10, + 0x7c, 0x68, 0x5c, 0x4c, 0x91, 0x0c, 0x27, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x15, 0xb8, 0x8f, 0x62, 0xb1, 0x62, 0xd9, 0xf8, 0x61, + 0xe3, 0xfb, 0x36, 0x01, 0x4e, 0x14, 0xc2, 0xbc, 0x27, 0xbf, 0xb1, 0x45, + 0x7f, 0x38, 0xf5, 0x94, 0xe1, 0x20, 0x03, 0xeb, 0x2c, 0xc9, 0xed, 0xc9, + 0x33, 0x33, 0xa5, 0x43, 0x6c, 0x57, 0x2e, 0xd6, 0xe6, 0x22, 0x6d, 0x26, + 0x77, 0xb2, 0x70, 0x33, 0x67, 0x9e, 0xe8, 0xf2, 0xb2, 0xed, 0x15, 0x4a, + 0x34, 0xbd, 0x47, 0x3a, 0x85, 0xff, 0x01, 0xc9, 0x8e, 0xa9, 0x3d, 0x65, + 0xaa, 0x62, 0xcb, 0xf7, 0x33, 0xdd, 0xfb, 0x69, 0x67, 0xa4, 0xc6, 0xda, + 0x3e, 0xc9, 0x5a, 0x00, 0xaa, 0xb7, 0xde, 0x01, 0x45, 0x15, 0xfb, 0x8b, + 0x87, 0x68, 0x40, 0xa7, 0xf1, 0xe3, 0xc2, 0xeb, 0xa1, 0x9a, 0xcd, 0x49, + 0xf8, 0x19, 0xae, 0x61, 0x5a, 0x8e, 0x2d, 0x8f, 0x49, 0x85, 0x09, 0x64, + 0x48, 0x29, 0x4a, 0x2c, 0x1a, 0x12, 0x51, 0x33, 0xbe, 0xc0, 0x0d, 0x02, + 0x41, 0x00, 0xc7, 0x67, 0x6c, 0xc0, 0xb8, 0x44, 0x65, 0x5c, 0xd1, 0xfd, + 0xb3, 0x36, 0x91, 0xf5, 0xb4, 0xf9, 0x51, 0x55, 0x18, 0x9a, 0x42, 0x68, + 0xe5, 0xd0, 0x73, 0xe9, 0xdd, 0xf0, 0x91, 0x49, 0xa8, 0x2b, 0x3f, 0x8a, + 0xfc, 0xc5, 0x43, 0x9a, 0xa8, 0x4a, 0xe7, 0xe8, 0xf3, 0xdd, 0x3d, 0x9f, + 0x9c, 0xb8, 0xa7, 0xab, 0xeb, 0xd8, 0xc0, 0xa3, 0xae, 0xde, 0x1d, 0x46, + 0x38, 0x87, 0x2d, 0x96, 0x3b, 0x4d, 0x02, 0x41, 0x00, 0xc1, 0x88, 0x48, + 0x0c, 0xb2, 0x5e, 0x24, 0x09, 0x11, 0x93, 0xbc, 0xaa, 0x8d, 0x27, 0x14, + 0x47, 0x4e, 0x59, 0xae, 0x53, 0xfc, 0x75, 0x02, 0x56, 0xa5, 0x10, 0x33, + 0x92, 0x72, 0xa5, 0xbe, 0x95, 0xbc, 0x4e, 0x19, 0x85, 0x89, 0xd1, 0xc2, + 0xe4, 0xf4, 0x64, 0x1d, 0xe0, 0x7e, 0xa7, 0x2d, 0x7b, 0x6d, 0xb0, 0xb0, + 0x2a, 0x1b, 0xad, 0xc6, 0x6c, 0xf5, 0x64, 0x53, 0x31, 0xaa, 0xb4, 0x23, + 0x43, 0x02, 0x40, 0x64, 0xb0, 0x77, 0xfc, 0xf4, 0xcf, 0x2c, 0xb3, 0xeb, + 0x21, 0x85, 0x8e, 0x47, 0xb3, 0xdf, 0xb7, 0x89, 0x77, 0x43, 0xde, 0x19, + 0x2c, 0xa8, 0xe7, 0x52, 0xb0, 0xc4, 0x2e, 0x46, 0xde, 0xff, 0xb9, 0x1e, + 0xf4, 0x0a, 0xe1, 0x7d, 0x5a, 0xaa, 0x22, 0x70, 0xea, 0x73, 0xc1, 0xc2, + 0xed, 0x47, 0x11, 0x03, 0x31, 0xcf, 0xfc, 0xfa, 0x81, 0x6c, 0xba, 0xa1, + 0xe3, 0xa4, 0x85, 0xb5, 0xe2, 0x47, 0x7d, 0x02, 0x40, 0x13, 0xcb, 0x4b, + 0x8b, 0x38, 0xe7, 0x16, 0x0a, 0x73, 0x68, 0xc7, 0xe0, 0x2d, 0xc5, 0xb4, + 0x76, 0x42, 0x96, 0x3b, 0x95, 0x4d, 0x79, 0xee, 0x3e, 0x4c, 0x6d, 0xa6, + 0xc8, 0xb0, 0xbf, 0x31, 0x0a, 0x01, 0x93, 0x7f, 0x5a, 0xc0, 0x28, 0xdb, + 0x25, 0x2d, 0xb5, 0xdb, 0xb4, 0x6d, 0x5f, 0xcd, 0xf0, 0x14, 0xdd, 0x00, + 0x77, 0x9e, 0x13, 0x1c, 0xfb, 0x61, 0xf1, 0xdb, 0xec, 0x75, 0x88, 0x2d, + 0x1f, 0x02, 0x40, 0x21, 0x0a, 0xa0, 0x87, 0x82, 0x23, 0x01, 0xe9, 0x8b, + 0xcc, 0x29, 0xb3, 0x47, 0x69, 0xfe, 0x37, 0x65, 0x90, 0x79, 0xaa, 0x36, + 0x9b, 0x6c, 0x58, 0xd4, 0x62, 0x08, 0x6c, 0xfe, 0x1f, 0xec, 0x89, 0xbb, + 0x85, 0x9e, 0x27, 0xd2, 0x0d, 0x97, 0xaa, 0x3d, 0x2c, 0x00, 0xee, 0x60, + 0x95, 0x77, 0x6e, 0x5d, 0xc4, 0xe2, 0x49, 0x3f, 0x79, 0x38, 0x78, 0xc8, + 0x48, 0xa3, 0xe3, 0x80, 0x46, 0xcb, 0x22, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_rsa_1026 */ const unsigned char test_rsa_1026[] = { - 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x03, 0x17, - 0x5c, 0xd2, 0x6b, 0x55, 0xf6, 0x1a, 0x0b, 0x42, 0x33, 0xc8, 0x18, 0x08, - 0x26, 0x31, 0x35, 0x04, 0x0a, 0xdb, 0xab, 0x0b, 0xd9, 0x49, 0x70, 0x59, - 0xcb, 0x51, 0xce, 0xc7, 0x14, 0x7c, 0xd6, 0xdf, 0xaf, 0x26, 0x71, 0xac, - 0x1f, 0xf9, 0xae, 0xa8, 0xe4, 0xc5, 0xde, 0xfe, 0x84, 0xbb, 0x68, 0x07, - 0xa9, 0x48, 0x82, 0x83, 0x5b, 0xbc, 0x2b, 0x75, 0x32, 0x51, 0xb5, 0x98, - 0xe0, 0x9b, 0xa2, 0xbd, 0x0f, 0x29, 0x96, 0x58, 0x5d, 0xbc, 0x80, 0xeb, - 0x9b, 0xda, 0xae, 0x8c, 0xf4, 0xea, 0x3e, 0xa1, 0xf4, 0x7a, 0x97, 0x13, - 0x42, 0x74, 0x74, 0x47, 0x83, 0xff, 0x31, 0xf8, 0x82, 0x92, 0xe3, 0xb1, - 0x38, 0x30, 0xea, 0x17, 0x67, 0x4b, 0xb6, 0x69, 0xdc, 0x5f, 0x17, 0xf2, - 0x94, 0x3f, 0xc8, 0x07, 0x1b, 0x10, 0x81, 0x8b, 0xd0, 0x2f, 0xfc, 0x8f, - 0xfb, 0xab, 0xa0, 0xa9, 0x02, 0x3b, 0x79, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x80, 0x04, 0x29, 0x3b, 0x62, 0xcf, 0xe5, 0xe6, 0x60, 0xc1, - 0xfa, 0x28, 0x20, 0x30, 0x39, 0x2e, 0x63, 0x0e, 0x60, 0x95, 0xd6, 0xb5, - 0x67, 0xd7, 0x48, 0x6a, 0x26, 0xdb, 0x55, 0xdd, 0x34, 0xea, 0x92, 0x54, - 0x44, 0xc5, 0x4c, 0xc7, 0x50, 0x51, 0x53, 0xfa, 0x61, 0x5e, 0x5e, 0x95, - 0x9a, 0x05, 0x77, 0xd8, 0x5d, 0xaa, 0xe7, 0xbc, 0xc7, 0x15, 0x4e, 0x69, - 0x31, 0x25, 0x8a, 0xd7, 0x81, 0x25, 0x3d, 0x22, 0xdf, 0xd1, 0x91, 0x78, - 0xd2, 0xd1, 0x24, 0xb9, 0xa6, 0x9a, 0x12, 0xc5, 0xe1, 0xfe, 0xe7, 0x94, - 0xad, 0xbd, 0x9e, 0x6b, 0xe0, 0x97, 0x32, 0x33, 0x6a, 0xae, 0x98, 0x66, - 0xd7, 0x96, 0x7a, 0x72, 0xc7, 0xb4, 0x69, 0xef, 0x3d, 0x20, 0x37, 0x48, - 0xad, 0xd4, 0x92, 0x8a, 0xc0, 0x3f, 0x08, 0xfc, 0x8f, 0x61, 0xcc, 0x60, - 0x60, 0x49, 0xa7, 0xe4, 0xa0, 0x62, 0xf5, 0x7e, 0x19, 0xb5, 0x81, 0x02, - 0x41, 0x01, 0xe7, 0x1d, 0x98, 0x00, 0xc1, 0x36, 0xa4, 0x3e, 0x84, 0x3f, - 0xd1, 0x43, 0x9c, 0x4e, 0xa2, 0x62, 0xb2, 0x6b, 0x5d, 0x93, 0x5d, 0x41, - 0x51, 0x46, 0x6a, 0x75, 0x76, 0x97, 0xcc, 0x38, 0xa9, 0xeb, 0xbf, 0xae, - 0xcb, 0xd8, 0xac, 0x6b, 0x7b, 0xfa, 0xc7, 0x37, 0x6d, 0xc0, 0x7f, 0xb2, - 0x84, 0xaa, 0x6a, 0x54, 0x6f, 0xd7, 0xd0, 0xf6, 0x0c, 0xe6, 0x11, 0xc9, - 0xcc, 0xce, 0xa6, 0xb8, 0x66, 0x69, 0x02, 0x41, 0x01, 0x9f, 0xe5, 0x0e, - 0x78, 0x9f, 0xb4, 0x44, 0xba, 0x29, 0x74, 0xe7, 0xdb, 0x98, 0x44, 0xd2, - 0xa6, 0x03, 0xa6, 0xe7, 0xb4, 0x00, 0x6e, 0xe1, 0xcf, 0xa7, 0xcd, 0xe4, - 0xa8, 0x8e, 0xa7, 0xb8, 0xcd, 0x68, 0x23, 0x07, 0x6f, 0x47, 0xb9, 0xcd, - 0x59, 0x34, 0xc2, 0x9e, 0xc0, 0xb2, 0xed, 0x7a, 0x9b, 0xc2, 0x3d, 0xab, - 0x64, 0x36, 0xdd, 0xf9, 0xf2, 0x2d, 0xc1, 0x42, 0x4f, 0x11, 0x4b, 0x2a, - 0x91, 0x02, 0x41, 0x01, 0x73, 0xdd, 0x4c, 0xc0, 0x2e, 0xc0, 0x37, 0x0c, - 0x9e, 0xcb, 0x55, 0x46, 0xe7, 0x19, 0xc4, 0xaf, 0xd2, 0x03, 0x52, 0xd1, - 0x80, 0x1c, 0xb0, 0x1e, 0x30, 0x81, 0x71, 0xc2, 0x9a, 0x9e, 0x1b, 0x62, - 0x24, 0xd8, 0x1d, 0x38, 0x51, 0x10, 0x50, 0xfa, 0x76, 0x81, 0x23, 0x21, - 0x14, 0x9b, 0x44, 0xda, 0x10, 0x08, 0x5b, 0xc5, 0x86, 0xf9, 0x7f, 0x89, - 0x57, 0xc5, 0x15, 0xbc, 0x20, 0xdc, 0x9f, 0x19, 0x02, 0x41, 0x00, 0xd1, - 0xcd, 0xb6, 0x98, 0x29, 0x50, 0xc2, 0x5e, 0xfb, 0x6c, 0xeb, 0x4e, 0x3f, - 0x29, 0x70, 0xee, 0xa8, 0xe6, 0xf8, 0xfa, 0x38, 0x41, 0xb7, 0x8e, 0x8f, - 0x03, 0x71, 0xf7, 0x8a, 0x47, 0x98, 0x15, 0x9f, 0x14, 0x14, 0xbb, 0x11, - 0x7e, 0xec, 0xd5, 0xb4, 0xa4, 0xfd, 0x7b, 0x0e, 0x88, 0x78, 0x92, 0xbc, - 0xd1, 0x69, 0x75, 0xdb, 0xab, 0xed, 0x5c, 0x3b, 0xb2, 0xc3, 0xa5, 0xa9, - 0x7e, 0xb6, 0xd1, 0x02, 0x41, 0x01, 0x5e, 0x54, 0x53, 0x64, 0x9d, 0x04, - 0xe9, 0xb8, 0x6c, 0x96, 0x61, 0x85, 0xfe, 0x7c, 0x5b, 0x81, 0x46, 0x7b, - 0x92, 0xb7, 0xb7, 0x0a, 0x84, 0x9a, 0x1b, 0xcf, 0x9e, 0x56, 0xcb, 0x25, - 0xd6, 0xe2, 0x7d, 0xb9, 0xf1, 0x7e, 0x25, 0x34, 0x2a, 0x9c, 0xc7, 0x78, - 0xe8, 0x0b, 0xea, 0x04, 0xf8, 0x2e, 0xb0, 0xd5, 0xed, 0xb9, 0xdc, 0x71, - 0xdb, 0x9f, 0xba, 0xe6, 0xe5, 0xbb, 0xbd, 0xc0, 0x7c, 0xd7, + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x02, 0xae, + 0x9a, 0x65, 0x51, 0x54, 0x10, 0x29, 0xa3, 0x7a, 0x5f, 0xa3, 0x1b, 0x9d, + 0xf3, 0x0e, 0x24, 0xdb, 0x1f, 0xd8, 0x4e, 0x12, 0x43, 0x49, 0x00, 0x31, + 0xf8, 0x03, 0x88, 0x04, 0x87, 0x8f, 0xc9, 0x95, 0x66, 0x34, 0xb3, 0xcf, + 0x0a, 0xf1, 0x2e, 0x47, 0xd3, 0x8c, 0x3b, 0x41, 0xff, 0x32, 0x60, 0xd8, + 0x17, 0x7e, 0xad, 0x83, 0x4c, 0x37, 0x6d, 0x6b, 0xc5, 0x49, 0x6f, 0x36, + 0x84, 0xb8, 0x59, 0xa5, 0x5a, 0x03, 0xbf, 0xd7, 0xbe, 0xca, 0x9c, 0x09, + 0x1c, 0xf5, 0x20, 0xd3, 0x3a, 0x0e, 0x2f, 0xd3, 0x08, 0xa3, 0x9a, 0x65, + 0x54, 0x26, 0xa6, 0x78, 0x35, 0x7a, 0xd9, 0x70, 0x0d, 0x4d, 0xb9, 0xf7, + 0x76, 0xfd, 0x6e, 0xf5, 0xe4, 0x00, 0xe6, 0xcb, 0x60, 0xec, 0xc6, 0x38, + 0x24, 0x9e, 0x9b, 0xe6, 0x69, 0x81, 0xe0, 0xc3, 0xc9, 0x10, 0xef, 0x73, + 0xe4, 0x22, 0x52, 0x3d, 0x8c, 0x16, 0xc3, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x54, 0x28, 0x86, 0x9c, 0xb6, 0x62, 0x18, 0xc8, 0x79, + 0xfa, 0x79, 0x02, 0xac, 0x94, 0x9b, 0x3a, 0x37, 0x45, 0xaa, 0xfc, 0xbe, + 0xce, 0x52, 0x87, 0x5c, 0x98, 0x9a, 0xce, 0x34, 0x47, 0xed, 0x7e, 0xf6, + 0xfa, 0x05, 0x21, 0xb9, 0x12, 0x0d, 0x47, 0xef, 0xf3, 0xe5, 0x2f, 0x6a, + 0x42, 0x7e, 0x89, 0x52, 0x53, 0x66, 0xea, 0x9b, 0xba, 0x5e, 0xdc, 0xe1, + 0xa5, 0xd7, 0xff, 0x72, 0xbe, 0x47, 0xde, 0x06, 0x0b, 0x48, 0xf9, 0xf4, + 0xb7, 0xa8, 0x06, 0x76, 0xfd, 0xd2, 0x4c, 0xbf, 0xe4, 0x4a, 0x1c, 0x7f, + 0xf8, 0x71, 0xc6, 0x9f, 0x80, 0xfa, 0x97, 0xca, 0xc3, 0xf6, 0x70, 0xe3, + 0x5e, 0x8c, 0x2d, 0x02, 0xe0, 0x3a, 0x91, 0xbd, 0xa2, 0x12, 0xa4, 0xa5, + 0x7c, 0x9d, 0x6a, 0xdd, 0x00, 0xfe, 0x28, 0x60, 0xbf, 0x7e, 0x5f, 0x4f, + 0xb3, 0xf5, 0xd2, 0x0f, 0x8c, 0x69, 0x0b, 0xf0, 0x2c, 0x60, 0x81, 0x02, + 0x41, 0x01, 0xc4, 0x95, 0xb4, 0x0c, 0xf6, 0xfe, 0x28, 0xe5, 0xdc, 0x63, + 0xeb, 0x33, 0x06, 0xc1, 0xe6, 0x34, 0xa9, 0x68, 0x73, 0x2d, 0xff, 0x72, + 0x3c, 0xde, 0x74, 0xf7, 0xbb, 0x79, 0xde, 0x85, 0x20, 0x55, 0xa4, 0xe4, + 0x8b, 0x94, 0x82, 0x5b, 0x63, 0xe0, 0xdc, 0xba, 0x3d, 0x95, 0x43, 0x86, + 0xe6, 0xfd, 0x9b, 0x13, 0x75, 0xf7, 0xd2, 0xf1, 0xf5, 0x99, 0xd5, 0x9c, + 0xdf, 0x38, 0x93, 0xdc, 0x4e, 0x03, 0x02, 0x41, 0x01, 0x84, 0x5e, 0xbe, + 0xe1, 0x62, 0x47, 0x50, 0xfc, 0x17, 0xff, 0xc7, 0x15, 0x16, 0x25, 0xef, + 0x6b, 0xd0, 0xb6, 0xdb, 0x13, 0xcb, 0x65, 0x7e, 0xce, 0x4f, 0xab, 0x76, + 0xe0, 0x8b, 0xe8, 0xc0, 0xe4, 0xc0, 0x49, 0xac, 0xb7, 0x2a, 0x97, 0xad, + 0xaa, 0xe1, 0x31, 0xba, 0xd7, 0x02, 0x52, 0xfa, 0xfa, 0x03, 0xd3, 0xc3, + 0x9b, 0x3e, 0x2d, 0x32, 0xea, 0x9f, 0xb2, 0x8b, 0x66, 0x1b, 0xc4, 0x18, + 0x41, 0x02, 0x41, 0x01, 0xa3, 0x23, 0xd9, 0x69, 0xa0, 0x5c, 0xe5, 0x57, + 0x6b, 0x72, 0x05, 0xe2, 0x6d, 0xc1, 0xa9, 0x06, 0xe0, 0x55, 0x61, 0x46, + 0x1a, 0x2a, 0x9c, 0x00, 0x91, 0x66, 0xd4, 0x73, 0x1b, 0x07, 0x43, 0x58, + 0xcd, 0xaa, 0xf3, 0x31, 0x88, 0x40, 0x47, 0x11, 0x7a, 0x99, 0xe8, 0x6a, + 0x91, 0xed, 0x1f, 0x83, 0x82, 0xd8, 0xd5, 0x09, 0xbc, 0x8c, 0x64, 0x9e, + 0x21, 0x5c, 0x74, 0xc6, 0x1a, 0xf9, 0x8e, 0x2d, 0x02, 0x41, 0x00, 0xd1, + 0x4f, 0xa2, 0xfe, 0xa3, 0xd2, 0x1d, 0xe2, 0x90, 0x28, 0xa9, 0x2a, 0x43, + 0x32, 0x94, 0xd3, 0xfd, 0xbb, 0xdf, 0x5c, 0xce, 0xbd, 0x57, 0xd7, 0x67, + 0x76, 0xd8, 0xed, 0xf2, 0x59, 0xb2, 0x44, 0x57, 0x22, 0x1d, 0xf4, 0xe5, + 0xfe, 0xb3, 0x79, 0xaa, 0x3e, 0xfc, 0x1c, 0xcf, 0x42, 0xdb, 0xc3, 0x0d, + 0x76, 0xff, 0x30, 0x57, 0x15, 0x53, 0x20, 0xc2, 0x8b, 0x1e, 0xb8, 0x1c, + 0x74, 0xd6, 0x41, 0x02, 0x41, 0x00, 0x94, 0x24, 0x23, 0x0b, 0x45, 0x3a, + 0xef, 0xf3, 0x41, 0x19, 0x11, 0xba, 0xf6, 0xca, 0xab, 0x72, 0x9e, 0xc0, + 0xa4, 0xc2, 0x9e, 0x52, 0xf8, 0x36, 0xf4, 0xe8, 0xed, 0x5d, 0xa7, 0x5f, + 0x68, 0x46, 0xf4, 0x91, 0x17, 0x9c, 0xe8, 0x1b, 0x31, 0x50, 0xd7, 0x42, + 0x25, 0xc5, 0x67, 0x6a, 0xf8, 0xc2, 0x1f, 0x28, 0xe3, 0xdc, 0x52, 0x79, + 0x7b, 0xf6, 0x68, 0xdc, 0x60, 0xc6, 0xdc, 0xcc, 0xcd, 0x1d, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_rsa_1028 */ const unsigned char test_rsa_1028[] = { - 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x0f, 0x16, - 0x99, 0x9c, 0x0c, 0xc7, 0xb5, 0x63, 0x2d, 0xec, 0xdc, 0x12, 0x15, 0x15, - 0x12, 0x47, 0x26, 0xcc, 0xa9, 0xba, 0x8d, 0x31, 0x82, 0x63, 0x3e, 0xa9, - 0xdc, 0xa0, 0xa8, 0x7f, 0x02, 0x22, 0x4e, 0x5e, 0xa3, 0x77, 0xee, 0x13, - 0x94, 0x04, 0x76, 0x04, 0x8e, 0x98, 0xab, 0x7c, 0x82, 0xdd, 0x68, 0x5a, - 0xf6, 0xa8, 0x14, 0x5e, 0xf7, 0x43, 0xef, 0x04, 0xb5, 0x3f, 0x6a, 0x31, - 0x93, 0xd6, 0x1a, 0xfa, 0xcd, 0x20, 0x7b, 0x0e, 0xc3, 0x18, 0x39, 0x5f, - 0x7e, 0x1b, 0xa0, 0xe5, 0x85, 0x3e, 0xf7, 0x44, 0x51, 0xcc, 0xf7, 0xf1, - 0xc2, 0xf6, 0x79, 0x15, 0x0e, 0x0b, 0x50, 0x32, 0x35, 0xda, 0xeb, 0xe4, - 0x7d, 0x32, 0x6d, 0x21, 0x9e, 0xb2, 0xa0, 0x99, 0x0c, 0xc6, 0x17, 0xee, - 0xcd, 0xb5, 0xa6, 0x81, 0xa9, 0x91, 0x1b, 0x09, 0xfd, 0x32, 0xf9, 0xa1, - 0x8b, 0x1b, 0xf7, 0x99, 0xaf, 0xd6, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x03, 0x21, 0xe8, 0x06, 0x33, 0xc9, 0x0a, 0x69, 0x6a, - 0xd1, 0x6f, 0xe6, 0xf9, 0x25, 0x84, 0xc3, 0xec, 0xd4, 0x34, 0xb0, 0x9c, - 0x3b, 0x99, 0x1c, 0x4d, 0x98, 0x2a, 0x4b, 0xd8, 0x6f, 0x75, 0xdb, 0xf5, - 0x75, 0x44, 0x6e, 0xd3, 0xa8, 0x90, 0xe4, 0x54, 0x34, 0x21, 0xfe, 0xa4, - 0x2b, 0x97, 0x67, 0xac, 0x10, 0xa6, 0x80, 0xc2, 0xa9, 0xec, 0x9f, 0xd7, - 0xf1, 0x9c, 0x47, 0x6c, 0x1e, 0x9a, 0xd8, 0xa8, 0xe8, 0x5f, 0x76, 0x57, - 0x95, 0x26, 0xc0, 0x97, 0x5e, 0x56, 0x6d, 0x0c, 0x6c, 0xc5, 0x20, 0xd8, - 0x8f, 0xd7, 0xfd, 0xf4, 0x39, 0x97, 0xc2, 0x3b, 0xaa, 0x97, 0xd5, 0xea, - 0xaf, 0xdf, 0x23, 0x27, 0xf3, 0xea, 0x67, 0xd8, 0x52, 0x0a, 0x1f, 0xc2, - 0x5c, 0x3f, 0x56, 0x8f, 0x96, 0xc6, 0x3b, 0xa1, 0x12, 0xaf, 0xd3, 0x07, - 0xb4, 0x67, 0x37, 0x0d, 0xb2, 0x00, 0x80, 0x7b, 0xef, 0x4b, 0x58, 0x51, - 0x02, 0x41, 0x03, 0xe3, 0x05, 0x9f, 0xf4, 0x8d, 0xb5, 0x19, 0x32, 0x73, - 0xf1, 0xe7, 0x65, 0x49, 0xbb, 0xb4, 0xe0, 0x4a, 0x71, 0x23, 0x52, 0x69, - 0xd8, 0x06, 0x78, 0x8c, 0xde, 0x8a, 0x95, 0xfb, 0x70, 0x78, 0x6b, 0x20, - 0xcd, 0xfe, 0x2f, 0x3a, 0x56, 0xc6, 0x77, 0x44, 0xa8, 0x69, 0x32, 0xe6, - 0x1e, 0x58, 0xff, 0x6e, 0xd8, 0xe6, 0x54, 0x9a, 0xcd, 0x4e, 0xe9, 0xe2, - 0x44, 0x2d, 0x44, 0x27, 0x7d, 0x19, 0xdd, 0x02, 0x41, 0x03, 0xe1, 0xc5, - 0xcb, 0x94, 0x19, 0x26, 0x92, 0xdf, 0xf4, 0x81, 0xf1, 0x45, 0xb2, 0x69, - 0x5c, 0xfa, 0x06, 0x79, 0x2e, 0xc7, 0x71, 0xca, 0x94, 0x1e, 0x8b, 0xa8, - 0x2c, 0x93, 0x6b, 0xc2, 0x0d, 0xd0, 0x5e, 0xca, 0x57, 0x12, 0xee, 0x7f, - 0x64, 0xc2, 0x08, 0xaf, 0x6b, 0xa0, 0xdc, 0x2b, 0xe9, 0x40, 0xc9, 0xb8, - 0x49, 0xb2, 0x89, 0xd9, 0x8a, 0x08, 0x46, 0xc7, 0xd8, 0x60, 0xbd, 0x0f, - 0x08, 0xe3, 0x02, 0x41, 0x00, 0x88, 0x3b, 0xc3, 0xeb, 0xca, 0xdf, 0x29, - 0xc5, 0x03, 0xa4, 0xf2, 0x46, 0xa6, 0xf2, 0xc1, 0x50, 0x18, 0x41, 0x27, - 0x51, 0xe8, 0x56, 0x00, 0x84, 0xce, 0xdc, 0xc5, 0x62, 0xc5, 0x9b, 0x5f, - 0x91, 0x63, 0x5b, 0x70, 0xda, 0xec, 0x84, 0xe7, 0x05, 0x7b, 0x6c, 0x07, - 0x83, 0x45, 0x88, 0x90, 0x2c, 0xe0, 0xf3, 0x67, 0x8d, 0xdb, 0xe8, 0x12, - 0x4e, 0xe9, 0x80, 0xe6, 0x25, 0xb7, 0xb6, 0x64, 0x2d, 0x02, 0x41, 0x03, - 0x79, 0x4f, 0xa0, 0x56, 0xf0, 0x0a, 0xec, 0xf5, 0x2d, 0xc1, 0xfb, 0x3f, - 0xfb, 0xe0, 0xfe, 0x2b, 0x61, 0x0f, 0xa1, 0x25, 0x2a, 0x57, 0xb7, 0x25, - 0x7e, 0xa5, 0x08, 0xff, 0x04, 0x37, 0xac, 0x55, 0x03, 0xfe, 0xde, 0xdd, - 0x3a, 0x41, 0x16, 0xd1, 0xed, 0x23, 0xce, 0x95, 0x2d, 0x72, 0xbe, 0x52, - 0x14, 0x32, 0xaf, 0x00, 0xef, 0x0b, 0x95, 0xd2, 0xc2, 0x44, 0xa5, 0x06, - 0x2d, 0x29, 0xff, 0x31, 0x02, 0x41, 0x02, 0xc6, 0xb7, 0xac, 0x1d, 0x3b, - 0x80, 0xc4, 0x46, 0x4a, 0xff, 0xdd, 0x3f, 0xbb, 0x17, 0x4a, 0xf2, 0x19, - 0x3a, 0x74, 0x61, 0xa2, 0xd7, 0xc7, 0xd5, 0x85, 0xa3, 0x72, 0xfe, 0x86, - 0x20, 0x85, 0x5a, 0xa9, 0xb2, 0x84, 0x19, 0xcf, 0x41, 0x4a, 0x62, 0x11, - 0x07, 0x33, 0x82, 0xb2, 0x5f, 0x9f, 0x81, 0xfe, 0x1e, 0x8b, 0x26, 0x32, - 0xaa, 0x3c, 0x75, 0xa7, 0xb3, 0xbc, 0xc5, 0x92, 0x71, 0x88, 0x58, + 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x0c, 0x48, + 0x52, 0xeb, 0x3d, 0x96, 0x7a, 0x6c, 0x68, 0xa7, 0x10, 0x15, 0x4b, 0xc4, + 0x8b, 0x32, 0xa8, 0xb1, 0xd5, 0xdf, 0xbf, 0xb1, 0x11, 0xfd, 0x50, 0xac, + 0xc9, 0x27, 0x99, 0xd6, 0xfe, 0x34, 0x6d, 0x0c, 0xd2, 0x2b, 0x4e, 0xc7, + 0x1b, 0xbf, 0xc2, 0x85, 0x04, 0x99, 0x50, 0x13, 0xa2, 0x60, 0x02, 0x67, + 0x94, 0xcf, 0xe7, 0x84, 0xc7, 0xb2, 0x03, 0x81, 0xb8, 0x60, 0xfa, 0xaf, + 0xc0, 0xcd, 0x30, 0xf0, 0xe6, 0xdb, 0xd0, 0x3a, 0x3d, 0x1d, 0x3c, 0x8e, + 0x0d, 0xb1, 0x86, 0xc3, 0xba, 0xa1, 0x35, 0x47, 0xae, 0x6e, 0x43, 0x23, + 0x4a, 0x61, 0xfc, 0xc5, 0x1e, 0xa6, 0xe8, 0x74, 0x38, 0x3b, 0x4c, 0x79, + 0x4a, 0x94, 0x66, 0x1a, 0x44, 0x23, 0x0a, 0x96, 0x86, 0x5d, 0xf6, 0x43, + 0x5a, 0xa7, 0x03, 0x46, 0x81, 0x9f, 0xe9, 0xf4, 0xaa, 0xa3, 0x03, 0xe1, + 0xea, 0x21, 0xf1, 0xae, 0x2d, 0x06, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x01, 0x1f, 0xa6, 0xb2, 0x4d, 0x9e, 0x94, 0x11, 0x91, + 0xdb, 0x62, 0xbd, 0xc8, 0x02, 0x31, 0x87, 0xcf, 0x66, 0x01, 0x7e, 0x68, + 0x2f, 0x7f, 0x49, 0x50, 0xd5, 0x95, 0xcb, 0x71, 0x27, 0xf9, 0x76, 0x7b, + 0x59, 0x76, 0x6a, 0xae, 0xd8, 0xc9, 0x41, 0x98, 0x3e, 0x8a, 0x06, 0xaa, + 0x8c, 0x39, 0x49, 0x16, 0x3f, 0x3a, 0x9e, 0x70, 0x7c, 0x35, 0xb6, 0xa3, + 0xda, 0x7c, 0xaf, 0x26, 0x8f, 0xe8, 0x8f, 0xfc, 0x5b, 0x7c, 0xda, 0x94, + 0x57, 0x8d, 0x03, 0x5c, 0xed, 0x66, 0xfe, 0x9c, 0x6e, 0xaa, 0xcc, 0xa1, + 0x05, 0x48, 0xc4, 0x11, 0xbc, 0xf7, 0xdf, 0xaa, 0xeb, 0x65, 0xb6, 0xaf, + 0xce, 0x45, 0x0c, 0x7f, 0x3a, 0x84, 0x0a, 0x85, 0x28, 0xf0, 0xa4, 0xd6, + 0x39, 0x9e, 0xc3, 0xc6, 0x47, 0x24, 0x6f, 0xbe, 0x20, 0x45, 0x19, 0x84, + 0x29, 0x0d, 0x12, 0x9a, 0x12, 0xc9, 0x03, 0x96, 0xf0, 0x26, 0x11, 0x49, + 0x02, 0x41, 0x03, 0x9a, 0xb4, 0xe9, 0x07, 0xe1, 0xe0, 0x69, 0xc7, 0x0c, + 0x5c, 0x71, 0x1b, 0x21, 0x31, 0x66, 0x5b, 0x5d, 0x0d, 0x3c, 0x51, 0x64, + 0xda, 0xb4, 0xfe, 0x14, 0xb1, 0x27, 0xa6, 0x97, 0x36, 0x58, 0xb2, 0xa0, + 0x17, 0xa9, 0x28, 0x33, 0x19, 0x6b, 0xee, 0x6f, 0x6c, 0x17, 0x50, 0x8c, + 0x01, 0x78, 0xfb, 0xfe, 0xed, 0xab, 0xf6, 0x71, 0xd9, 0x85, 0xc8, 0x96, + 0x63, 0x7c, 0x10, 0x3c, 0xf0, 0x54, 0x09, 0x02, 0x41, 0x03, 0x68, 0x60, + 0x30, 0x2c, 0xc9, 0xcc, 0x20, 0x7e, 0x1e, 0xd3, 0xb0, 0x04, 0x3f, 0xde, + 0xef, 0x53, 0x2f, 0x3b, 0xf6, 0x77, 0x01, 0x41, 0x41, 0xa8, 0xc1, 0x5a, + 0x21, 0x30, 0xf4, 0xdc, 0x5c, 0xeb, 0xbe, 0x75, 0x3f, 0xf2, 0x8a, 0xa0, + 0x35, 0xd2, 0xed, 0x23, 0xbc, 0xfc, 0x24, 0x53, 0xde, 0x64, 0x88, 0x72, + 0xef, 0x43, 0xbd, 0x2d, 0x0f, 0x2d, 0x71, 0xb1, 0xe2, 0xbf, 0xe9, 0xe7, + 0x42, 0xff, 0x02, 0x41, 0x03, 0x3c, 0xb3, 0x36, 0x87, 0xa9, 0xca, 0x4f, + 0xb6, 0x41, 0xd7, 0xd4, 0x8d, 0xb5, 0x26, 0x14, 0xf4, 0x01, 0x82, 0x9d, + 0xa5, 0xcc, 0x9a, 0xd0, 0xeb, 0x51, 0xd2, 0x39, 0xf6, 0x58, 0xe0, 0xaa, + 0x90, 0xe3, 0x4f, 0xdc, 0xd1, 0x09, 0xf3, 0xcf, 0x07, 0xfa, 0x72, 0x6e, + 0x0e, 0x1d, 0x70, 0x45, 0x24, 0xae, 0x34, 0xef, 0xb9, 0x0b, 0x4f, 0x7d, + 0xe4, 0x45, 0x8d, 0x5c, 0x23, 0x89, 0x57, 0x9f, 0x61, 0x02, 0x41, 0x02, + 0xa7, 0xde, 0x86, 0xcc, 0xf0, 0xfb, 0xff, 0xba, 0xaa, 0xc5, 0xa9, 0x60, + 0xb6, 0x72, 0x44, 0xab, 0xdc, 0x9c, 0xeb, 0xa8, 0xb5, 0x36, 0xa9, 0x38, + 0x1e, 0x6f, 0xe2, 0x7c, 0x27, 0xe8, 0x71, 0x16, 0x5c, 0x99, 0x3e, 0x1c, + 0x04, 0xc3, 0x75, 0x0f, 0x0c, 0x37, 0x14, 0xfa, 0xa0, 0x49, 0x28, 0x81, + 0xcb, 0x01, 0x5f, 0xcc, 0xb7, 0xeb, 0x1c, 0xef, 0xfa, 0xb2, 0x7a, 0x97, + 0xbc, 0x6f, 0xb9, 0xfb, 0x02, 0x41, 0x01, 0x60, 0x60, 0x57, 0x31, 0x7d, + 0xbe, 0xac, 0xd2, 0x64, 0xb9, 0x26, 0x52, 0x4f, 0x20, 0xda, 0xde, 0xd3, + 0x27, 0x38, 0x97, 0xea, 0xb4, 0xf4, 0xcd, 0x83, 0xfa, 0xeb, 0x51, 0x47, + 0x5b, 0x78, 0x24, 0x53, 0x17, 0xf8, 0x26, 0xee, 0xf7, 0x92, 0x25, 0x14, + 0xcd, 0xb6, 0x86, 0xe7, 0x06, 0xb3, 0xd7, 0xee, 0x8b, 0x42, 0x31, 0xb4, + 0x49, 0x95, 0x4e, 0x8c, 0x11, 0x57, 0x7f, 0x44, 0x36, 0x22, 0x64, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_rsa_1030 */ const unsigned char test_rsa_1030[] = { - 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x29, 0x80, - 0x16, 0x41, 0x52, 0x5b, 0x45, 0xb0, 0xcf, 0x21, 0xf3, 0x1e, 0xcf, 0x61, - 0x78, 0x6b, 0xb7, 0x90, 0x12, 0x9b, 0x2c, 0xdb, 0xfa, 0x5a, 0x36, 0x78, - 0xcc, 0xa9, 0xcf, 0x90, 0x3d, 0x76, 0xcd, 0x22, 0x41, 0xb2, 0x24, 0x32, - 0x87, 0xb8, 0x32, 0x88, 0x28, 0xed, 0x69, 0xe9, 0x3d, 0x88, 0x8c, 0x40, - 0xfb, 0x41, 0x59, 0x6e, 0x78, 0x05, 0x5a, 0xa2, 0x5a, 0xb0, 0xba, 0x12, - 0x7e, 0x49, 0x30, 0x2d, 0xc7, 0x87, 0xda, 0xb2, 0xbd, 0xf9, 0x44, 0x61, - 0xd4, 0x9a, 0x3c, 0x8f, 0xb9, 0xac, 0x95, 0xec, 0xc4, 0xe7, 0xed, 0xbc, - 0xf1, 0xed, 0xea, 0xdc, 0xa9, 0x8b, 0x1e, 0x73, 0x09, 0x25, 0xf2, 0xff, - 0xea, 0xf4, 0x4f, 0xfd, 0x14, 0xe8, 0xab, 0x65, 0x80, 0xeb, 0xa4, 0x91, - 0xfa, 0x45, 0x8e, 0xf0, 0x84, 0xff, 0x59, 0x36, 0x40, 0xef, 0xaf, 0x63, - 0x23, 0x51, 0xcf, 0xb5, 0x2b, 0x9d, 0x35, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x08, 0x9c, 0xdf, 0xe1, 0x8a, 0x27, 0x4d, 0xa1, 0x1a, - 0x77, 0xd4, 0x06, 0x60, 0xa9, 0x3c, 0xad, 0xf4, 0x50, 0x77, 0x00, 0x13, - 0xf1, 0x0a, 0x75, 0xe7, 0x08, 0xae, 0x87, 0x0e, 0x80, 0x03, 0xb5, 0x90, - 0x70, 0xab, 0xdc, 0x3e, 0x05, 0x6b, 0xa3, 0xd7, 0x7e, 0xe9, 0x29, 0x8e, - 0x99, 0xbc, 0xae, 0xc6, 0x56, 0xe5, 0x1e, 0x44, 0xa2, 0x77, 0xcf, 0xba, - 0xa5, 0xe7, 0xb6, 0xf6, 0x43, 0x08, 0xc9, 0x02, 0x84, 0xef, 0x41, 0xb5, - 0x04, 0xc5, 0x6f, 0xd8, 0x9a, 0xa0, 0x71, 0xaa, 0x1a, 0x7e, 0xac, 0x57, - 0xb9, 0x73, 0x5a, 0x02, 0xbf, 0x7c, 0xbe, 0x05, 0xf7, 0x7a, 0xa8, 0xf1, - 0x83, 0x1a, 0x58, 0xe1, 0x85, 0xbb, 0x40, 0x87, 0xff, 0x83, 0xbd, 0x9c, - 0x5a, 0x5e, 0xe5, 0x88, 0xe0, 0x88, 0x27, 0xe2, 0xef, 0xbb, 0xb1, 0x23, - 0x33, 0x31, 0x7f, 0x2d, 0x58, 0x14, 0x31, 0xac, 0x36, 0x08, 0xb9, 0x69, - 0x02, 0x41, 0x06, 0xb1, 0xe8, 0x8e, 0xfe, 0x4a, 0x77, 0x67, 0xa0, 0xdd, - 0xb6, 0xb0, 0x94, 0x58, 0xbf, 0x68, 0x67, 0x9d, 0x31, 0xd8, 0x49, 0x55, - 0xf0, 0xc9, 0x50, 0x7b, 0x5f, 0x1d, 0x0d, 0x1b, 0x16, 0x78, 0x5d, 0xe3, - 0x11, 0x9c, 0x58, 0x20, 0xa6, 0xd9, 0xbc, 0x2b, 0x03, 0xb5, 0x2d, 0x99, - 0xaa, 0x67, 0x27, 0x2f, 0x16, 0x45, 0x3c, 0xf6, 0x3d, 0x0b, 0x76, 0xe8, - 0x73, 0x8b, 0x94, 0x38, 0xd1, 0x43, 0x9d, 0x02, 0x41, 0x06, 0x32, 0xe1, - 0x2a, 0xb9, 0x61, 0x5f, 0xa4, 0x5c, 0x67, 0x33, 0x71, 0xaf, 0xa0, 0xa6, - 0xef, 0x95, 0x63, 0x3a, 0x49, 0xef, 0xa6, 0xe6, 0x63, 0x39, 0x54, 0x80, - 0xef, 0x44, 0x49, 0xe0, 0x69, 0x6b, 0xf9, 0xbc, 0x89, 0x60, 0x1c, 0x03, - 0xce, 0x92, 0x53, 0x0d, 0x33, 0x88, 0x64, 0x9b, 0x77, 0xd3, 0x22, 0xec, - 0x1d, 0x94, 0xb5, 0x43, 0x0b, 0xb7, 0x69, 0xd1, 0x1d, 0xfc, 0x70, 0x30, - 0xc8, 0x79, 0x02, 0x41, 0x02, 0xb1, 0x63, 0x02, 0xc9, 0x64, 0x38, 0x9d, - 0x35, 0x46, 0x99, 0x2a, 0x73, 0xb1, 0x32, 0xe4, 0x92, 0xf0, 0xd6, 0xd0, - 0xd1, 0xc6, 0xc0, 0xc0, 0xa9, 0x1f, 0xc6, 0xc5, 0x4f, 0xb5, 0x3a, 0x97, - 0x95, 0xe4, 0x34, 0xfc, 0x37, 0x32, 0x83, 0x0a, 0x87, 0xb6, 0xa1, 0x9a, - 0x29, 0xca, 0x6a, 0x91, 0x6d, 0x60, 0x72, 0x4b, 0xcd, 0x56, 0x9a, 0x7d, - 0x57, 0x09, 0xef, 0x18, 0x10, 0xb9, 0xbd, 0xea, 0xbd, 0x02, 0x40, 0x77, - 0xdb, 0x55, 0xf4, 0xc6, 0x8c, 0x08, 0xc8, 0x09, 0xeb, 0x72, 0xcc, 0xc7, - 0x1f, 0x94, 0xbc, 0xfd, 0xcf, 0xab, 0x41, 0xf4, 0xa3, 0x36, 0x1f, 0x60, - 0x68, 0x94, 0xa9, 0xdd, 0xc2, 0x9b, 0x73, 0xd2, 0x5b, 0x11, 0x2d, 0x37, - 0x30, 0x7a, 0x6b, 0xc6, 0xe6, 0x1a, 0x5c, 0x54, 0xed, 0x01, 0x31, 0xeb, - 0x53, 0x56, 0x30, 0xa3, 0x38, 0x3b, 0x2c, 0x51, 0x4b, 0xc0, 0x2e, 0x0e, - 0xf3, 0x40, 0x51, 0x02, 0x41, 0x03, 0x26, 0x57, 0x0d, 0xf5, 0xdf, 0x3f, - 0x5e, 0x31, 0x00, 0x9b, 0xf0, 0x92, 0x04, 0xfd, 0x97, 0x3e, 0x04, 0x7f, - 0x23, 0xd7, 0x79, 0x3c, 0xd7, 0xe8, 0xe1, 0x0e, 0xf0, 0xc4, 0x9f, 0xdb, - 0x4b, 0x5a, 0x42, 0xd7, 0x63, 0x4f, 0x95, 0x85, 0x35, 0xb9, 0x37, 0x24, - 0x34, 0xeb, 0xa3, 0xc7, 0x27, 0x49, 0x18, 0x78, 0x68, 0x05, 0x45, 0x6c, - 0x9b, 0xa7, 0x60, 0x07, 0x9d, 0x7e, 0x63, 0xad, 0xb7, 0x0c, + 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x29, 0x32, + 0x4b, 0xbf, 0x78, 0x5a, 0xf5, 0x4f, 0x0a, 0x61, 0xd5, 0x99, 0x29, 0xf2, + 0x3d, 0x39, 0x68, 0x3b, 0xab, 0x41, 0x30, 0x1e, 0x2c, 0x87, 0xca, 0x33, + 0xa3, 0x2f, 0x31, 0x23, 0x9a, 0xe1, 0xca, 0x5b, 0x75, 0xf0, 0xc3, 0x84, + 0x9c, 0x52, 0xe7, 0xf9, 0x67, 0xa8, 0xa6, 0x2b, 0x7c, 0x43, 0xa9, 0x5f, + 0xd7, 0x25, 0x64, 0x43, 0xa9, 0x02, 0xa7, 0x7d, 0x97, 0x24, 0x26, 0x7d, + 0x89, 0x5d, 0x20, 0x8a, 0xb8, 0x6c, 0xcc, 0xcb, 0x18, 0x65, 0x9c, 0xbe, + 0x1a, 0xd8, 0x47, 0xa2, 0xeb, 0xc2, 0xe2, 0x88, 0x26, 0x4f, 0xfc, 0x77, + 0x08, 0x6c, 0x5a, 0x82, 0x30, 0xbe, 0x84, 0xa6, 0xaa, 0x67, 0x41, 0xbd, + 0xe5, 0x1e, 0x87, 0x23, 0x33, 0xbd, 0x59, 0x6d, 0x41, 0xb5, 0x94, 0xc8, + 0xcb, 0xc3, 0xc6, 0x4d, 0xe7, 0x3e, 0x79, 0x6e, 0x9a, 0x8e, 0x54, 0xa7, + 0x1c, 0x64, 0x97, 0x69, 0xc8, 0xc2, 0xdf, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x05, 0x40, 0xdf, 0x5d, 0x50, 0xab, 0xc8, 0xbc, 0x86, + 0x46, 0x68, 0xf1, 0x59, 0xe2, 0xaf, 0x8c, 0x07, 0xe4, 0x14, 0x0d, 0x56, + 0xba, 0xd7, 0xa8, 0x39, 0x50, 0xd1, 0xc3, 0xcd, 0x85, 0xb7, 0x7f, 0xde, + 0x48, 0xeb, 0x86, 0xad, 0xbd, 0x80, 0xc7, 0x27, 0x18, 0x81, 0x9a, 0x30, + 0x16, 0x90, 0xdc, 0xd0, 0x01, 0xe3, 0x73, 0x11, 0x3b, 0x7a, 0x42, 0x01, + 0xb9, 0xdc, 0xf1, 0x99, 0xe1, 0x9d, 0xb2, 0xbb, 0x89, 0xc5, 0xbe, 0x87, + 0x6c, 0x5e, 0xcd, 0xc3, 0xaf, 0x18, 0x4e, 0x42, 0x69, 0xac, 0x26, 0x5b, + 0x24, 0x15, 0xdb, 0x69, 0x88, 0x6d, 0x74, 0x91, 0xe3, 0x4a, 0xb7, 0x5f, + 0x64, 0xa7, 0xdf, 0xc3, 0xff, 0x12, 0xac, 0x29, 0xc0, 0x9d, 0x8a, 0x13, + 0x56, 0xdc, 0xec, 0x8c, 0x77, 0xad, 0xa3, 0xf7, 0xcb, 0x28, 0x06, 0x90, + 0x59, 0x6e, 0x2f, 0x22, 0x14, 0xa7, 0x1a, 0xc0, 0xc0, 0x19, 0xc2, 0x81, + 0x02, 0x41, 0x06, 0xf9, 0x78, 0x16, 0xa4, 0xf4, 0xd3, 0x30, 0x26, 0xbe, + 0x99, 0xa1, 0xe1, 0x2a, 0x8d, 0x07, 0xb2, 0xf7, 0x2a, 0xfc, 0x76, 0x6a, + 0x4c, 0x2d, 0x97, 0x48, 0x70, 0x64, 0xda, 0xb4, 0x62, 0xb6, 0x3f, 0xa7, + 0x1a, 0x95, 0x78, 0xb4, 0xab, 0xfd, 0xd2, 0x84, 0xbf, 0x98, 0x22, 0xfe, + 0xbe, 0x34, 0x26, 0x1d, 0x96, 0x06, 0x20, 0x6b, 0x19, 0x31, 0xb9, 0x08, + 0x8c, 0x8e, 0x21, 0x6d, 0x19, 0xe2, 0xf3, 0x02, 0x41, 0x05, 0xe8, 0x1f, + 0xe6, 0x01, 0xed, 0x9a, 0xd4, 0xab, 0x84, 0x1e, 0xc8, 0x1f, 0xd0, 0xa2, + 0x33, 0xb1, 0x49, 0xe2, 0xac, 0x40, 0x80, 0x06, 0x04, 0x4b, 0xe3, 0x6e, + 0xd4, 0x35, 0x42, 0x45, 0x98, 0x77, 0x42, 0xb2, 0x56, 0xd9, 0x1b, 0xce, + 0x28, 0xdf, 0x96, 0xd0, 0xc1, 0x2e, 0x06, 0x5a, 0x7a, 0x62, 0x76, 0x3e, + 0xb4, 0xe7, 0xcc, 0x7e, 0xa6, 0x1d, 0xb5, 0x7a, 0x9e, 0x2f, 0x3e, 0x09, + 0x23, 0x65, 0x02, 0x41, 0x06, 0x97, 0x5d, 0x56, 0x89, 0x2e, 0x97, 0x27, + 0xba, 0x76, 0x06, 0xdb, 0x65, 0xe0, 0xc0, 0xc7, 0xb5, 0xea, 0xc1, 0x45, + 0x36, 0xe3, 0xde, 0x7a, 0x77, 0xae, 0x8e, 0x09, 0xc2, 0x67, 0x17, 0xa3, + 0x05, 0x24, 0xf7, 0x8a, 0xab, 0x38, 0x94, 0x12, 0x9d, 0x11, 0xb7, 0xc0, + 0x1f, 0xd2, 0x80, 0x0e, 0xe8, 0xb6, 0xad, 0x41, 0xbd, 0x01, 0x7a, 0x1d, + 0xf3, 0xb0, 0x90, 0xa5, 0x02, 0x12, 0x09, 0x94, 0xe1, 0x02, 0x41, 0x04, + 0xdc, 0x69, 0x13, 0xf2, 0xd6, 0x45, 0xab, 0x6b, 0x93, 0x89, 0x79, 0x8c, + 0xa5, 0x38, 0x37, 0x6e, 0x59, 0xad, 0xcf, 0xb0, 0x2d, 0x2b, 0xc6, 0x71, + 0x65, 0xb4, 0x19, 0xb3, 0xd2, 0xdc, 0x4f, 0x83, 0x26, 0x42, 0x7a, 0x32, + 0xa6, 0x2d, 0x5d, 0x79, 0xd4, 0x35, 0xec, 0x25, 0x22, 0x59, 0x67, 0x8a, + 0x8c, 0x61, 0x42, 0xa3, 0xd8, 0xa9, 0x09, 0xb0, 0x3d, 0x5f, 0xb1, 0xba, + 0x93, 0x45, 0x15, 0xf9, 0x02, 0x41, 0x06, 0x5e, 0x0f, 0x28, 0x69, 0x63, + 0x78, 0xfa, 0x87, 0xbf, 0x45, 0x62, 0x02, 0xca, 0x84, 0x34, 0xea, 0x1b, + 0x30, 0xb2, 0x3b, 0x04, 0xb3, 0x1c, 0xb4, 0x61, 0xfd, 0x9f, 0xba, 0xb5, + 0xdb, 0x88, 0x65, 0x6b, 0x4c, 0x36, 0xc5, 0x6c, 0x2d, 0x9a, 0xce, 0x06, + 0x8d, 0x4c, 0xc2, 0x64, 0x48, 0x74, 0x4e, 0x6e, 0xb6, 0x09, 0xa8, 0x18, + 0x25, 0xce, 0x86, 0x27, 0x61, 0x02, 0x16, 0x32, 0xe2, 0xae, 0x41, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_rsa_2048 */ const unsigned char test_rsa_2048[] = { - 0x30, 0x82, 0x04, 0xa5, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, - 0xaa, 0x20, 0x13, 0x4a, 0x30, 0x6e, 0x42, 0xaf, 0xcb, 0x0a, 0xb9, 0x31, - 0x8e, 0x5d, 0x85, 0x75, 0xfb, 0x48, 0x35, 0xbe, 0xc0, 0x77, 0x93, 0xcd, - 0x51, 0xf4, 0x22, 0x0d, 0x72, 0x1a, 0xc1, 0x87, 0xf5, 0x6c, 0xb6, 0x68, - 0xb8, 0xc3, 0x63, 0x90, 0xa7, 0x38, 0x86, 0x44, 0xc0, 0xfb, 0x03, 0x0a, - 0x69, 0xc2, 0xb0, 0x3a, 0x15, 0xa5, 0xa0, 0xe9, 0x5a, 0xab, 0x32, 0xbb, - 0xd1, 0x73, 0x88, 0x34, 0x77, 0xc5, 0xae, 0xc9, 0x7d, 0x0d, 0x33, 0x78, - 0x31, 0x57, 0xc0, 0x43, 0xa1, 0x61, 0x90, 0x7f, 0xfc, 0xd9, 0x02, 0x71, - 0x76, 0x96, 0x4e, 0xe5, 0x55, 0xe8, 0x6e, 0x34, 0x1c, 0xd7, 0x8c, 0xab, - 0x7f, 0xec, 0xc2, 0x36, 0xba, 0x4a, 0x04, 0xac, 0xfb, 0x78, 0x74, 0xf1, - 0xc3, 0xff, 0x4d, 0xac, 0x53, 0x27, 0x7a, 0x0d, 0xdc, 0x49, 0xbe, 0x8d, - 0x8f, 0xaa, 0x24, 0x9b, 0xbc, 0x94, 0x6c, 0xfe, 0x23, 0x18, 0xad, 0x80, - 0x9b, 0x68, 0x0e, 0xf6, 0xc7, 0x66, 0xf2, 0xca, 0x64, 0xc6, 0xb5, 0x68, - 0x89, 0xf2, 0xac, 0x93, 0xa8, 0x57, 0x2f, 0xd4, 0xd6, 0xc3, 0xee, 0x84, - 0x7b, 0x20, 0xcb, 0x5a, 0x9f, 0xd5, 0x03, 0x9b, 0x57, 0x44, 0xf3, 0x86, - 0x64, 0x88, 0x79, 0xf5, 0xe9, 0xb9, 0x4b, 0xf8, 0x74, 0x70, 0xea, 0x77, - 0x98, 0x4b, 0x36, 0xc2, 0xa8, 0x63, 0xe8, 0x56, 0x52, 0xae, 0x67, 0xf3, - 0x7c, 0x78, 0x0a, 0x0f, 0x9c, 0xd7, 0xc9, 0xc9, 0x89, 0x8f, 0x47, 0xe7, - 0x3a, 0xb8, 0x0f, 0x85, 0x66, 0xb0, 0x42, 0x2a, 0x55, 0x3c, 0x9c, 0x3c, - 0xcc, 0xc0, 0xf5, 0xc0, 0x20, 0x8b, 0x2f, 0xe4, 0xd1, 0x36, 0xc1, 0x2e, - 0x54, 0x97, 0xa4, 0xe8, 0x6f, 0xac, 0x94, 0x10, 0x43, 0xb8, 0xb9, 0x17, - 0x20, 0x09, 0x45, 0x70, 0x44, 0x0f, 0x47, 0xe2, 0x80, 0x33, 0x30, 0x05, - 0xd0, 0xd2, 0x62, 0x4f, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, - 0x00, 0x13, 0x66, 0x73, 0xfc, 0xae, 0x58, 0x2c, 0x87, 0xa2, 0x76, 0x57, - 0x17, 0x15, 0x1e, 0x8a, 0x15, 0x21, 0xb2, 0x22, 0xda, 0xdd, 0x54, 0xe5, - 0x88, 0x70, 0xf3, 0x8f, 0x9c, 0x8b, 0xea, 0x0c, 0x2e, 0xc6, 0x68, 0x7e, - 0xc6, 0xa3, 0x67, 0x38, 0xa7, 0xea, 0xc1, 0xd1, 0xe1, 0xee, 0x45, 0xd1, - 0x9b, 0x72, 0xe3, 0x0e, 0x38, 0x99, 0x76, 0x59, 0x4a, 0xb3, 0x19, 0xb9, - 0xbf, 0xdc, 0x4b, 0x39, 0xf9, 0x8d, 0xbc, 0xff, 0xc9, 0x1f, 0x57, 0x0d, - 0x8b, 0x03, 0xc9, 0x77, 0x75, 0xde, 0xe5, 0xe2, 0xd6, 0x0d, 0x8d, 0xeb, - 0xae, 0xe7, 0xb0, 0x8d, 0x4f, 0xae, 0xc3, 0xc2, 0x29, 0x74, 0x2e, 0x8a, - 0x6e, 0x96, 0x38, 0x78, 0x0f, 0x48, 0xa0, 0x1f, 0x37, 0x60, 0xb7, 0xe4, - 0x52, 0x1b, 0xa1, 0x36, 0x08, 0xd4, 0x34, 0xb8, 0xc0, 0xf2, 0xe1, 0x7f, - 0xf6, 0xe1, 0xae, 0xab, 0xdd, 0x0c, 0x9c, 0xba, 0x6e, 0xf2, 0xfd, 0xee, - 0x92, 0x22, 0x68, 0x8d, 0x78, 0xb4, 0xc3, 0x67, 0x97, 0xce, 0xae, 0xc5, - 0x3f, 0x9c, 0x41, 0x62, 0xbf, 0xf0, 0xab, 0x1d, 0xe9, 0x62, 0xf9, 0x2e, - 0x63, 0xa7, 0xd5, 0x2d, 0x49, 0xbe, 0x67, 0x4c, 0x76, 0xb6, 0x81, 0x63, - 0xb6, 0x94, 0x86, 0xa7, 0x6a, 0x5a, 0xd8, 0xe4, 0x85, 0xe3, 0x61, 0x0d, - 0xb3, 0x5a, 0x52, 0x5b, 0x6f, 0x59, 0x81, 0xc0, 0x8d, 0xd7, 0xee, 0x0c, - 0xa3, 0xa3, 0xe1, 0x95, 0x5a, 0x09, 0x89, 0x71, 0x4d, 0xe2, 0x97, 0xec, - 0x9b, 0x6a, 0x76, 0x5a, 0xc6, 0x92, 0x61, 0x4b, 0x1d, 0x42, 0xc1, 0x55, - 0x25, 0x29, 0x61, 0x84, 0x75, 0x06, 0xfd, 0x6f, 0xb0, 0xe2, 0xba, 0x8a, - 0xa3, 0x6c, 0x89, 0x6b, 0x57, 0xf6, 0x59, 0x35, 0x9c, 0xef, 0x1d, 0x0b, - 0xb6, 0xe0, 0x0e, 0xcc, 0x31, 0x7a, 0x99, 0x20, 0x6f, 0x4c, 0xa2, 0x9c, - 0xcc, 0x58, 0xc1, 0xb4, 0x65, 0x02, 0x81, 0x81, 0x00, 0xde, 0x2d, 0x72, - 0xf5, 0xad, 0x7b, 0x26, 0xec, 0x59, 0x28, 0x10, 0x87, 0x2c, 0xfe, 0xee, - 0x63, 0x2f, 0xe2, 0xa2, 0xc7, 0xa7, 0x1f, 0xcc, 0xa0, 0x8d, 0xf1, 0x27, - 0x6c, 0xd5, 0xfd, 0x98, 0xe1, 0x5f, 0x85, 0x5b, 0xc0, 0xd3, 0x5b, 0x6b, - 0xbf, 0x3e, 0xa6, 0x2a, 0x28, 0xa4, 0xbf, 0x17, 0xed, 0x68, 0xc1, 0x72, - 0xaa, 0xb2, 0x57, 0x4d, 0x33, 0x24, 0xf8, 0x3b, 0x92, 0x85, 0xa7, 0x6d, - 0xa5, 0x89, 0xfe, 0x32, 0x27, 0x8d, 0x9a, 0xbb, 0x47, 0xf6, 0xa4, 0x6c, - 0x07, 0x44, 0xb0, 0xd3, 0x04, 0x67, 0xae, 0x1d, 0x6e, 0x1a, 0x0e, 0xf3, - 0x4a, 0x3a, 0xe4, 0xae, 0x91, 0xf9, 0x1e, 0x90, 0xbc, 0x84, 0x61, 0x0e, - 0x39, 0x09, 0x92, 0xbf, 0x68, 0x6c, 0xb9, 0xee, 0x6e, 0xbf, 0x20, 0x16, - 0xe9, 0x7f, 0x3c, 0x33, 0x87, 0x4f, 0x1f, 0x7a, 0xcc, 0x93, 0x4e, 0x8f, - 0xea, 0xc2, 0xd1, 0xac, 0x7b, 0x02, 0x81, 0x81, 0x00, 0xc4, 0x06, 0x14, - 0xfb, 0x02, 0xa8, 0xf7, 0x8c, 0x92, 0x72, 0xde, 0xa8, 0x99, 0xf3, 0x62, - 0xb6, 0x09, 0x23, 0x08, 0x3a, 0x27, 0x07, 0xfe, 0x6d, 0x82, 0xa4, 0x74, - 0x10, 0xbc, 0x36, 0xaa, 0xa8, 0x65, 0x52, 0x50, 0x9f, 0xdb, 0x11, 0xa6, - 0xe1, 0xc5, 0xc6, 0x7f, 0xca, 0xb9, 0xc2, 0x56, 0xc0, 0x15, 0x54, 0x7c, - 0x53, 0x3e, 0x3c, 0x78, 0xaf, 0x75, 0x22, 0x0f, 0x65, 0xa2, 0xdd, 0x22, - 0x38, 0xb1, 0x0f, 0x40, 0xc1, 0x45, 0x30, 0x97, 0xf0, 0xc8, 0xc1, 0x32, - 0xde, 0x89, 0x80, 0x4c, 0xdc, 0xe5, 0x2f, 0x69, 0x2c, 0x73, 0xf3, 0xa7, - 0x52, 0x16, 0x50, 0xe2, 0xad, 0x2b, 0xc6, 0x9e, 0x6d, 0x53, 0x4f, 0xb3, - 0x56, 0x0e, 0x3d, 0x78, 0xbf, 0x19, 0xfa, 0x5f, 0x67, 0x91, 0xa5, 0xd8, - 0x2e, 0xd5, 0xb7, 0xd7, 0x3d, 0x6b, 0x06, 0x68, 0x6a, 0x23, 0x27, 0xae, - 0x3c, 0xac, 0x69, 0x0b, 0x3d, 0x02, 0x81, 0x81, 0x00, 0x8f, 0xbb, 0xdb, - 0x69, 0x71, 0x08, 0x01, 0x10, 0x5a, 0x45, 0x7f, 0x1b, 0xd4, 0x52, 0x40, - 0xaa, 0xce, 0x69, 0xd2, 0x61, 0x53, 0x8f, 0x50, 0xf4, 0x75, 0x9f, 0x93, - 0x9f, 0xe7, 0x78, 0x9e, 0x94, 0xff, 0x14, 0xe9, 0x5c, 0xff, 0xdf, 0x5e, - 0xff, 0x64, 0x6a, 0x5f, 0x4f, 0xd7, 0xf5, 0x00, 0x67, 0xc8, 0xa3, 0x8d, - 0xa9, 0x3c, 0xa3, 0x1a, 0x00, 0x82, 0x64, 0x4d, 0x35, 0xe7, 0x5d, 0x7f, - 0xa3, 0xde, 0x78, 0x22, 0xbe, 0x4f, 0xef, 0xd0, 0x45, 0x28, 0x1d, 0x0a, - 0xfe, 0x50, 0xc4, 0x0c, 0x60, 0x07, 0x2b, 0x2f, 0x42, 0xf1, 0x7c, 0xc6, - 0x8c, 0x39, 0x39, 0x84, 0x6e, 0x4f, 0x3a, 0x24, 0xec, 0xb0, 0xbf, 0x91, - 0x51, 0xf9, 0x0d, 0x84, 0xe2, 0xeb, 0xa4, 0x05, 0xca, 0x83, 0xbf, 0x20, - 0xd3, 0x82, 0x4a, 0xd2, 0x13, 0x31, 0x6e, 0xee, 0x24, 0xb7, 0x0f, 0xd6, - 0x2f, 0x4c, 0x46, 0x15, 0x4d, 0x02, 0x81, 0x81, 0x00, 0x8b, 0xa2, 0x39, - 0x77, 0xc4, 0xa1, 0x50, 0x15, 0x96, 0x8c, 0xb5, 0x07, 0x2d, 0x03, 0x2e, - 0xa1, 0xb5, 0x48, 0x7b, 0x27, 0xd1, 0x7d, 0xe4, 0x43, 0x65, 0xf8, 0x77, - 0xa5, 0x24, 0x2d, 0x5c, 0xcb, 0xaf, 0xc1, 0x3f, 0x25, 0x60, 0x0b, 0xe6, - 0xf0, 0x94, 0xcd, 0x9d, 0x62, 0x6f, 0x88, 0x7b, 0xfb, 0x40, 0x36, 0x7a, - 0x89, 0x61, 0x9f, 0xf9, 0xe8, 0x22, 0x6c, 0x2c, 0xc3, 0x9d, 0x8c, 0x20, - 0x40, 0x79, 0xff, 0xff, 0x84, 0xad, 0x20, 0xbc, 0x5b, 0x0c, 0xe6, 0x72, - 0xb2, 0x0b, 0x08, 0x95, 0xb8, 0x14, 0x99, 0xfd, 0x35, 0x69, 0x33, 0x7b, - 0x51, 0x02, 0x0c, 0x84, 0x2c, 0x0f, 0x2e, 0xe0, 0xd3, 0xc7, 0xb0, 0xd2, - 0x72, 0xce, 0x9a, 0x03, 0x55, 0x3d, 0xd0, 0x17, 0xfd, 0xd2, 0xc6, 0x6c, - 0x84, 0x90, 0x40, 0xf0, 0xd6, 0x13, 0x52, 0xf1, 0x36, 0x09, 0xec, 0xce, - 0x34, 0xf2, 0x2b, 0xb1, 0x91, 0x02, 0x81, 0x81, 0x00, 0xc5, 0xf8, 0xda, - 0xdb, 0x52, 0xa6, 0x7b, 0x9a, 0x38, 0x1d, 0xb6, 0x5f, 0x8f, 0x08, 0x54, - 0x17, 0x60, 0xe0, 0x99, 0x06, 0x6b, 0xf9, 0xac, 0xe9, 0x71, 0x38, 0x60, - 0x0d, 0x79, 0x12, 0xe7, 0xd4, 0x47, 0x48, 0xfc, 0x12, 0x5b, 0x73, 0x4a, - 0x9a, 0xca, 0xda, 0x54, 0xaa, 0xb7, 0x4e, 0xf4, 0x2d, 0x70, 0xd5, 0x22, - 0x9f, 0xa0, 0x51, 0x62, 0x2b, 0x7f, 0xa7, 0x14, 0x7d, 0xd4, 0x1e, 0x3e, - 0xfd, 0x26, 0x97, 0x71, 0xaf, 0x01, 0x9d, 0x3b, 0x7a, 0x0f, 0x4d, 0xab, - 0xfb, 0xe8, 0xff, 0xf4, 0x4d, 0xd0, 0xf3, 0x22, 0x5a, 0x37, 0x51, 0xe3, - 0x85, 0x3a, 0x3f, 0x78, 0x36, 0x66, 0xaa, 0x57, 0x69, 0x6a, 0xe9, 0x7a, - 0x55, 0x7c, 0x1c, 0xeb, 0x8c, 0x5f, 0x17, 0x15, 0x9a, 0xd2, 0xa1, 0x21, - 0xbe, 0xd5, 0x6d, 0xb1, 0xaa, 0x3f, 0xc7, 0xbc, 0x36, 0xf6, 0xea, 0x78, - 0x98, 0x26, 0x94, 0xb2, 0x58, + 0x30, 0x82, 0x04, 0xa4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xd3, 0x67, 0x70, 0x8d, 0x0a, 0x25, 0x6c, 0x81, 0xb1, 0x25, 0xae, 0xf9, + 0xcb, 0x57, 0x0f, 0xb5, 0xb1, 0x14, 0xa3, 0xc7, 0x91, 0xfd, 0xee, 0x13, + 0x63, 0x96, 0xd5, 0x56, 0x17, 0x2b, 0xa1, 0xea, 0xf1, 0x25, 0x29, 0xb1, + 0xac, 0x7f, 0x56, 0xcb, 0xdc, 0x6d, 0x1b, 0x21, 0x2b, 0x4d, 0xee, 0x0d, + 0xd0, 0xff, 0x3b, 0xdc, 0x5d, 0x08, 0x37, 0x5e, 0xf0, 0x33, 0x84, 0x11, + 0x0e, 0x0d, 0xe9, 0x3a, 0xda, 0x65, 0xfa, 0xd6, 0xd7, 0x22, 0x4a, 0x6e, + 0xa8, 0xf7, 0x49, 0x4b, 0x6f, 0xbe, 0xc2, 0x2f, 0xb8, 0xa0, 0x86, 0xdc, + 0x7a, 0xe6, 0xcf, 0x9b, 0x9e, 0x9a, 0xa3, 0xbd, 0x25, 0x29, 0x38, 0x17, + 0x60, 0x31, 0x81, 0x84, 0x3b, 0xbb, 0x6d, 0xa6, 0x62, 0xf8, 0xee, 0x8f, + 0x27, 0xd3, 0x26, 0x29, 0xb8, 0xc0, 0xef, 0x84, 0x18, 0x5a, 0xaa, 0x5a, + 0x35, 0x80, 0x9a, 0x78, 0x8c, 0x3a, 0x45, 0x32, 0xd0, 0x67, 0xcf, 0x0c, + 0x02, 0xdb, 0x26, 0x15, 0x66, 0x97, 0x78, 0x68, 0xe1, 0x28, 0x7c, 0x15, + 0xb5, 0xe9, 0x73, 0x38, 0xf3, 0x5c, 0x9f, 0xcc, 0xf7, 0x5b, 0x76, 0xef, + 0x77, 0xa0, 0xbf, 0xd2, 0x1c, 0x06, 0x91, 0xd2, 0xaf, 0x1d, 0xa2, 0x1f, + 0x27, 0xd4, 0xd9, 0x8d, 0x59, 0x13, 0x7e, 0xed, 0xe3, 0x04, 0x50, 0xb9, + 0xb2, 0x53, 0x90, 0x8b, 0xaa, 0x73, 0xc1, 0x1e, 0x5e, 0x7b, 0x76, 0x3a, + 0x3e, 0x5c, 0xf4, 0x5e, 0xbb, 0xc4, 0xb8, 0x41, 0xb5, 0x22, 0x79, 0x42, + 0x76, 0x6b, 0x04, 0xee, 0x70, 0x6e, 0x6d, 0xfd, 0x1a, 0x34, 0x96, 0x9b, + 0xc4, 0x8f, 0x19, 0xd1, 0xc3, 0xcd, 0x9e, 0x57, 0xfd, 0x08, 0x83, 0xbb, + 0xe1, 0x9f, 0x76, 0xa7, 0x17, 0xa6, 0x3c, 0x74, 0x63, 0x90, 0x4c, 0x77, + 0xb8, 0x7f, 0xa0, 0x50, 0xbc, 0x3c, 0xfe, 0x51, 0x6e, 0xd0, 0x3d, 0x39, + 0x0e, 0xe4, 0x07, 0x3f, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, + 0x00, 0x13, 0x5c, 0x5b, 0xd0, 0x6e, 0xe7, 0x72, 0x82, 0x86, 0x28, 0xbf, + 0x57, 0x9d, 0x29, 0xc2, 0x04, 0x8f, 0xcd, 0x26, 0x1a, 0xb6, 0xe2, 0x1c, + 0x95, 0xa5, 0xff, 0x40, 0x56, 0x7c, 0x14, 0xc0, 0xe5, 0x75, 0x64, 0x43, + 0xe7, 0x43, 0xb6, 0xfd, 0xc9, 0xf9, 0xcb, 0xfc, 0x3a, 0x13, 0x6f, 0x35, + 0xa8, 0x0a, 0x45, 0xf5, 0xc3, 0x7e, 0xb9, 0xab, 0xe8, 0x83, 0xf3, 0x13, + 0xdb, 0x44, 0x00, 0x3e, 0x25, 0xe7, 0xae, 0x83, 0x44, 0x7d, 0xbb, 0x64, + 0x39, 0xb2, 0x3b, 0xc3, 0x78, 0xa7, 0x29, 0x3f, 0x3b, 0x83, 0x9b, 0x1f, + 0xfe, 0xbd, 0x3a, 0xba, 0x34, 0xb4, 0x57, 0xd1, 0x3b, 0x17, 0x56, 0x29, + 0x0e, 0xea, 0xfe, 0x5d, 0xb0, 0x30, 0x90, 0x3f, 0xc0, 0x87, 0x3b, 0xe9, + 0x0d, 0x2f, 0x46, 0x85, 0x2e, 0x38, 0xff, 0x62, 0x70, 0x24, 0x92, 0xd9, + 0x1b, 0x1d, 0xdf, 0x43, 0x46, 0x5b, 0x01, 0x53, 0x28, 0xe3, 0x86, 0x4a, + 0xfc, 0x50, 0x65, 0xe5, 0xa1, 0x41, 0x5b, 0xef, 0x0c, 0xf5, 0xd1, 0x82, + 0x81, 0xa4, 0xbb, 0x07, 0xf7, 0x34, 0xbe, 0x94, 0xaa, 0x84, 0x38, 0x13, + 0x28, 0x86, 0xc0, 0x61, 0x9d, 0xd9, 0xc0, 0xc0, 0x62, 0x23, 0x3b, 0x1c, + 0x2e, 0x8e, 0x2e, 0x00, 0xc4, 0x73, 0xc3, 0x7d, 0xa7, 0xb4, 0xae, 0xc1, + 0x97, 0x60, 0x36, 0x38, 0xa5, 0xe9, 0xae, 0xe6, 0xef, 0x44, 0x69, 0x47, + 0x28, 0xd9, 0x44, 0xe5, 0x14, 0x5a, 0xd9, 0x2a, 0x03, 0xb0, 0x71, 0x14, + 0x28, 0x28, 0x0d, 0x43, 0x97, 0x90, 0x35, 0xaf, 0x23, 0xca, 0x7a, 0x5f, + 0x5f, 0x4b, 0xe9, 0x1c, 0xc6, 0xbe, 0x86, 0x04, 0x1c, 0xa5, 0x23, 0x44, + 0x91, 0xa2, 0xec, 0x6d, 0xcb, 0x95, 0x18, 0x75, 0x6d, 0xf5, 0xe4, 0xa7, + 0x33, 0x7a, 0xa0, 0x9b, 0x5c, 0x0b, 0xcf, 0x10, 0x85, 0x30, 0xbd, 0xa6, + 0xcc, 0x35, 0x6d, 0x6e, 0xf1, 0x02, 0x81, 0x81, 0x00, 0xf4, 0xf2, 0xbf, + 0xf3, 0x44, 0xa0, 0x29, 0x23, 0xe7, 0x07, 0x5c, 0x81, 0x46, 0xb5, 0x6a, + 0xbc, 0xf9, 0x1c, 0x8e, 0x16, 0x70, 0x21, 0x5d, 0x27, 0xe1, 0x46, 0x12, + 0x09, 0x12, 0x46, 0xea, 0x52, 0x35, 0xbf, 0x9c, 0x50, 0xab, 0xe5, 0x0f, + 0xc4, 0x6b, 0xb0, 0x17, 0x5d, 0x35, 0x8c, 0x8e, 0x9e, 0x91, 0xd4, 0xe5, + 0xfe, 0xae, 0x95, 0x0c, 0xd7, 0xd5, 0xc8, 0xfd, 0x8a, 0x19, 0x2c, 0xba, + 0xe9, 0x7f, 0x9f, 0x15, 0x33, 0xbf, 0xec, 0x2f, 0xe9, 0x45, 0x5f, 0x80, + 0xa9, 0xf4, 0x96, 0xf5, 0x89, 0xbb, 0x94, 0x42, 0x10, 0x00, 0x46, 0x2a, + 0x6e, 0x1f, 0xee, 0xfd, 0xe8, 0x78, 0xae, 0xf7, 0x2a, 0xa5, 0x22, 0x5f, + 0x77, 0xae, 0x1a, 0x08, 0xd6, 0x35, 0x5e, 0xdb, 0x38, 0x4a, 0xd1, 0x60, + 0xb5, 0xf9, 0xd9, 0x95, 0x00, 0x26, 0x6f, 0xf7, 0x12, 0x52, 0x5b, 0x1d, + 0x09, 0x28, 0xdd, 0x21, 0xbb, 0x02, 0x81, 0x81, 0x00, 0xdc, 0xf1, 0x3d, + 0xbb, 0x87, 0xf7, 0xae, 0x69, 0xe8, 0x18, 0x94, 0x51, 0x2c, 0x78, 0xaf, + 0x1c, 0x8b, 0x77, 0x22, 0x49, 0xce, 0xd2, 0x1a, 0xc2, 0xbc, 0x0f, 0xca, + 0x63, 0x1d, 0x92, 0x1e, 0x98, 0x94, 0x5b, 0xda, 0x57, 0xcd, 0x98, 0xa6, + 0x6a, 0x54, 0x8f, 0x43, 0x93, 0x7f, 0x0f, 0xca, 0xe5, 0x2e, 0xf5, 0x50, + 0x06, 0x43, 0x0e, 0xbf, 0xec, 0x08, 0x53, 0xba, 0x04, 0x8f, 0x54, 0x35, + 0xa3, 0x21, 0x9e, 0xf9, 0xfc, 0x53, 0x37, 0xf3, 0xb5, 0x3a, 0x95, 0x7a, + 0x60, 0x89, 0xc9, 0x53, 0xaf, 0xf4, 0x2e, 0x39, 0x83, 0x15, 0x67, 0x38, + 0x7f, 0x65, 0x4f, 0xce, 0xcd, 0x42, 0x0b, 0x84, 0x83, 0xdf, 0xe0, 0xf3, + 0x59, 0x1f, 0x62, 0xef, 0x64, 0xc3, 0xbc, 0xe8, 0x56, 0xff, 0x20, 0xcd, + 0xe4, 0xfb, 0xa3, 0x50, 0xa3, 0xca, 0xfb, 0xd8, 0xbe, 0x96, 0x94, 0x06, + 0x9a, 0x02, 0x1b, 0x86, 0x4d, 0x02, 0x81, 0x81, 0x00, 0xa0, 0xb7, 0x05, + 0xaa, 0x9f, 0xc4, 0x56, 0x39, 0xf0, 0x43, 0xac, 0x36, 0x46, 0x26, 0x92, + 0x3a, 0x1b, 0x58, 0xd9, 0x01, 0x6f, 0xe0, 0xf4, 0x36, 0x4e, 0x60, 0xa3, + 0x44, 0xc0, 0x71, 0x37, 0x1d, 0x69, 0x96, 0xa7, 0x01, 0x67, 0x47, 0x8b, + 0xe8, 0xdc, 0x9f, 0x55, 0x35, 0x1b, 0x05, 0x76, 0x2e, 0x24, 0x91, 0x03, + 0xb6, 0xee, 0xe5, 0x6c, 0xdf, 0xd0, 0xad, 0x67, 0x6d, 0x4c, 0xc7, 0x44, + 0x7c, 0x1f, 0xf8, 0x48, 0xf9, 0x03, 0x5b, 0xfc, 0xb3, 0x99, 0x88, 0xe7, + 0xea, 0x9b, 0x48, 0xd1, 0x21, 0xe5, 0xa9, 0x89, 0x0e, 0xe6, 0x9f, 0x23, + 0x07, 0xce, 0x7c, 0x08, 0xac, 0x97, 0x42, 0x75, 0x79, 0xcd, 0x8f, 0x98, + 0x03, 0xf6, 0x7f, 0xae, 0x7c, 0x9d, 0xd7, 0xf7, 0x0e, 0x20, 0x48, 0xf0, + 0xa3, 0x75, 0xa3, 0x85, 0x57, 0xeb, 0xe0, 0x5a, 0xc3, 0xf2, 0xb5, 0x45, + 0x7f, 0xd5, 0x08, 0x02, 0x31, 0x02, 0x81, 0x80, 0x6b, 0x9f, 0xc7, 0xe6, + 0x75, 0xd1, 0x1c, 0xd0, 0xd2, 0x12, 0x47, 0x0d, 0x53, 0x90, 0x66, 0x1c, + 0x8d, 0x83, 0x36, 0xdc, 0xa5, 0x36, 0x8b, 0x7a, 0x98, 0x89, 0x48, 0x99, + 0x07, 0x6a, 0x8a, 0x24, 0xe0, 0xff, 0xed, 0x58, 0x1f, 0xfa, 0x5f, 0xf6, + 0x23, 0xc2, 0xb5, 0xb4, 0x3f, 0x8c, 0xbd, 0xd4, 0xee, 0x0e, 0xe9, 0x30, + 0x63, 0xb1, 0xe7, 0xa3, 0x5e, 0x5b, 0x0a, 0x9d, 0xf6, 0x03, 0x9b, 0x2d, + 0x1f, 0xcf, 0x85, 0x0e, 0x78, 0xab, 0x24, 0xb7, 0xff, 0x15, 0x99, 0x4b, + 0x35, 0x53, 0x30, 0xc4, 0xe1, 0x39, 0x33, 0x22, 0xbb, 0x66, 0x50, 0x8b, + 0x1e, 0x1a, 0xc6, 0x2e, 0x0e, 0x21, 0xf6, 0x27, 0x17, 0x03, 0x49, 0x06, + 0xfc, 0xd7, 0x00, 0xae, 0x20, 0xfb, 0x00, 0x62, 0x80, 0x5c, 0xc6, 0x6e, + 0xe8, 0x75, 0x21, 0x6e, 0xe8, 0x0d, 0xce, 0x02, 0xe8, 0xee, 0xaa, 0x58, + 0x92, 0xf6, 0x3d, 0x71, 0x02, 0x81, 0x81, 0x00, 0x84, 0x6e, 0x5b, 0x4e, + 0x97, 0xdd, 0xef, 0xaa, 0x17, 0x06, 0xe8, 0xa0, 0x9b, 0x00, 0x49, 0x1f, + 0xaa, 0x50, 0x28, 0x35, 0x04, 0xae, 0xf1, 0x74, 0xdf, 0xcc, 0x60, 0xfc, + 0xe2, 0x97, 0x7d, 0x81, 0xdc, 0x91, 0x11, 0xbc, 0xb4, 0x9e, 0x84, 0x87, + 0xf7, 0xd8, 0xf7, 0x4f, 0xa4, 0x76, 0x5f, 0x86, 0xec, 0x26, 0x7f, 0xb3, + 0x3c, 0x37, 0x15, 0xc4, 0x43, 0xda, 0x51, 0x54, 0xf7, 0x10, 0x05, 0x25, + 0x24, 0x11, 0x92, 0xa8, 0xb9, 0x41, 0x1a, 0xd2, 0x01, 0xd5, 0x52, 0xac, + 0x99, 0x07, 0x59, 0xdc, 0xcf, 0x8d, 0x7f, 0x7d, 0x5f, 0x01, 0xa6, 0x77, + 0xe5, 0x83, 0xfd, 0x6a, 0x1f, 0x7b, 0xcb, 0x38, 0x29, 0xfc, 0xd0, 0x6f, + 0x6b, 0x86, 0xd5, 0xcd, 0x1c, 0x63, 0x7f, 0xb0, 0x58, 0xda, 0x43, 0xc7, + 0x2f, 0x81, 0xd0, 0x3f, 0xd5, 0x8f, 0xa1, 0xda, 0xf1, 0x75, 0xda, 0x4c, + 0x5b, 0x4f, 0x2c, 0x20, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_rsa_4096 */ const unsigned char test_rsa_4096[] = { 0x30, 0x82, 0x09, 0x29, 0x02, 0x01, 0x00, 0x02, 0x82, 0x02, 0x01, 0x00, - 0xca, 0xd0, 0xd9, 0x1e, 0xae, 0x27, 0x25, 0x04, 0x53, 0xb5, 0x7f, 0x0a, - 0x56, 0x80, 0xd2, 0xf5, 0xd4, 0x9c, 0x59, 0x33, 0x0e, 0xae, 0x70, 0xe0, - 0x35, 0xb7, 0x65, 0x6b, 0x3a, 0xbf, 0x45, 0x65, 0x1f, 0xfb, 0x86, 0x6b, - 0x9c, 0x3e, 0x33, 0x6c, 0xff, 0xc2, 0x03, 0x3d, 0x25, 0x0a, 0x6b, 0xbe, - 0xd7, 0x03, 0x97, 0xdd, 0xea, 0x5b, 0x80, 0xb7, 0x8b, 0x3c, 0xad, 0xaf, - 0x88, 0x53, 0x64, 0x30, 0x90, 0xb3, 0xf3, 0x5e, 0x82, 0x8b, 0x0b, 0x59, - 0x29, 0x11, 0x32, 0xf1, 0x50, 0xce, 0xd1, 0x89, 0x4a, 0x88, 0xdb, 0x14, - 0x52, 0xbd, 0x5b, 0x67, 0x13, 0x1e, 0x60, 0x89, 0xd9, 0x53, 0xf4, 0x34, - 0x5e, 0xfe, 0x3d, 0xd4, 0xae, 0xf5, 0x97, 0x7a, 0xe4, 0x66, 0xd5, 0xb0, - 0x74, 0x72, 0xd9, 0x13, 0x02, 0x3a, 0x42, 0xc3, 0x91, 0xdb, 0xd1, 0x41, - 0x6f, 0x46, 0x06, 0x51, 0xd2, 0x0c, 0xb9, 0x6b, 0x8b, 0x72, 0xa0, 0x0e, - 0xcc, 0x05, 0x95, 0x5c, 0xa0, 0xbd, 0x57, 0xda, 0xb8, 0x33, 0x87, 0x85, - 0xc7, 0xee, 0xd1, 0x06, 0xcc, 0x78, 0x90, 0x39, 0xd4, 0x96, 0x24, 0x89, - 0xda, 0xff, 0xb0, 0xe4, 0xd2, 0x39, 0x58, 0x45, 0xf5, 0x2a, 0x45, 0x44, - 0xc3, 0xca, 0x54, 0xa7, 0xd7, 0x32, 0x8f, 0x3e, 0x56, 0x30, 0x14, 0xef, - 0x20, 0x3d, 0x96, 0xe1, 0xdf, 0x75, 0xa7, 0x99, 0x5c, 0xdd, 0x98, 0x21, - 0xf1, 0xac, 0x8f, 0x0c, 0x6b, 0xf0, 0x79, 0x55, 0x27, 0xc1, 0x00, 0xa3, - 0xec, 0x49, 0xb4, 0x0d, 0x02, 0x92, 0xba, 0xa0, 0x7f, 0x53, 0xaf, 0xd0, - 0x41, 0x33, 0x73, 0xb4, 0xc4, 0xfd, 0x1f, 0xf7, 0x54, 0xa5, 0xd2, 0x71, - 0xb1, 0x6c, 0x4c, 0x1f, 0x45, 0xce, 0xf0, 0xd0, 0x8d, 0xe2, 0xaa, 0x02, - 0xa6, 0xce, 0x4b, 0xac, 0xeb, 0xd0, 0xb7, 0x4a, 0x56, 0xf0, 0xc6, 0x0f, - 0x0f, 0x95, 0xcb, 0x11, 0xf3, 0x62, 0xee, 0x60, 0xcf, 0xca, 0x80, 0x24, - 0x11, 0xaa, 0x25, 0x04, 0xce, 0xa8, 0xae, 0x3d, 0x38, 0xec, 0xab, 0xa5, - 0x13, 0xd4, 0xca, 0xf7, 0x2d, 0x52, 0xfb, 0x16, 0x10, 0x88, 0xdf, 0x8f, - 0xa0, 0xcc, 0xf6, 0xa1, 0xb8, 0x4d, 0xaa, 0x18, 0x9c, 0x1f, 0xcf, 0x0a, - 0xe6, 0x13, 0xde, 0x21, 0x60, 0xee, 0xa4, 0x50, 0x97, 0x81, 0x28, 0x6f, - 0xc3, 0xc4, 0xdc, 0xe2, 0x73, 0xf4, 0x42, 0x40, 0x8b, 0x28, 0x79, 0xcc, - 0x5f, 0x9d, 0xe6, 0x3c, 0x42, 0xfb, 0x54, 0x5c, 0x9c, 0xb5, 0xad, 0xbd, - 0xc7, 0x6d, 0x04, 0xc3, 0x6e, 0xa3, 0x25, 0x90, 0x16, 0x79, 0xd0, 0x8a, - 0xa4, 0xe6, 0x6c, 0x9e, 0x63, 0x61, 0x20, 0xb9, 0x06, 0x1e, 0xc9, 0x3b, - 0x44, 0x61, 0x80, 0x9f, 0xb8, 0xbd, 0x78, 0xa5, 0x06, 0xfd, 0xec, 0x10, - 0x4a, 0xed, 0x31, 0xc5, 0xb6, 0x19, 0xff, 0xa2, 0xd6, 0xba, 0xb4, 0xd9, - 0x86, 0x40, 0x7f, 0x24, 0x47, 0x48, 0xf4, 0xa0, 0x66, 0x66, 0xe5, 0xa4, - 0x51, 0xc1, 0xa3, 0x25, 0x2e, 0x34, 0x58, 0x61, 0x85, 0x51, 0x75, 0x49, - 0x18, 0xf4, 0xa6, 0xd8, 0x83, 0x28, 0x7e, 0xcc, 0x56, 0x27, 0xc6, 0x79, - 0xda, 0x8e, 0x3e, 0x36, 0x23, 0xe2, 0xa7, 0x6d, 0x11, 0xcb, 0x91, 0x05, - 0x59, 0xdf, 0x0f, 0x40, 0x27, 0x25, 0x7c, 0x13, 0x8c, 0xbe, 0x1c, 0x9c, - 0x54, 0x0f, 0x57, 0xe3, 0x8f, 0x46, 0xcf, 0xa3, 0xfc, 0x4a, 0x31, 0xf8, - 0xe2, 0x32, 0x9a, 0x73, 0x21, 0x04, 0x44, 0x8a, 0xe8, 0x2d, 0x77, 0x2e, - 0xad, 0xa4, 0xbd, 0xc8, 0x14, 0x85, 0xb1, 0x8a, 0x72, 0x79, 0x69, 0x24, - 0x97, 0x04, 0x7b, 0x56, 0xf5, 0xc4, 0xd9, 0xdb, 0x4f, 0x91, 0x40, 0x60, - 0xf0, 0xda, 0x0a, 0xd7, 0x12, 0xf0, 0x09, 0x21, 0xbd, 0x7c, 0x2f, 0x01, - 0x73, 0x66, 0x69, 0xd7, 0x92, 0x6a, 0xa6, 0x1b, 0x02, 0x03, 0x01, 0x00, - 0x01, 0x02, 0x82, 0x02, 0x00, 0x38, 0xe9, 0x3d, 0xe3, 0xc4, 0x0e, 0xab, - 0xee, 0x78, 0xe6, 0xd7, 0x0d, 0x39, 0x94, 0xd0, 0x9d, 0xb6, 0xd9, 0x60, - 0x96, 0x59, 0x2a, 0x4d, 0xf6, 0x3c, 0x5c, 0x88, 0x12, 0xfc, 0xdb, 0x2b, - 0x47, 0xe3, 0x1f, 0x9b, 0x6a, 0x9a, 0xdf, 0x41, 0x62, 0xf6, 0xa9, 0xa4, - 0x6b, 0x05, 0xf7, 0xd4, 0xa0, 0x2a, 0x89, 0x91, 0x95, 0xed, 0xeb, 0x5b, - 0x45, 0x25, 0xc7, 0x13, 0x1d, 0xcc, 0x6d, 0x4a, 0x11, 0xee, 0xa8, 0xf0, - 0x43, 0xb6, 0xf1, 0xf9, 0x6f, 0x3d, 0x7c, 0xdc, 0x04, 0xa7, 0x1e, 0x41, - 0xe1, 0xfa, 0x8e, 0x48, 0x9b, 0x7d, 0x54, 0x31, 0x4f, 0xcd, 0x27, 0x9b, - 0x03, 0x53, 0x7e, 0xa1, 0x6a, 0x08, 0xb5, 0xe2, 0xf7, 0xc9, 0x58, 0x94, - 0xf7, 0x21, 0x1c, 0x52, 0x1e, 0x3f, 0xae, 0xf2, 0x86, 0xc8, 0xfb, 0x3c, - 0x3c, 0xd0, 0xb3, 0x14, 0x16, 0xfe, 0x78, 0x71, 0xd1, 0x87, 0xd5, 0x96, - 0x3a, 0x3d, 0x59, 0x1e, 0xdc, 0xc8, 0x17, 0x51, 0x00, 0x3b, 0x02, 0xa6, - 0xa2, 0x73, 0x49, 0xd2, 0x5f, 0x91, 0xe8, 0xcb, 0xb2, 0xd2, 0xb1, 0x8a, - 0x17, 0x10, 0x36, 0x49, 0x6e, 0x7d, 0x8b, 0x7e, 0x41, 0xd7, 0x53, 0xcc, - 0x17, 0x65, 0x62, 0x45, 0x29, 0xb4, 0x9f, 0x13, 0xfe, 0x3c, 0xfe, 0xac, - 0xff, 0x5b, 0x04, 0x06, 0xfb, 0xca, 0xda, 0x3d, 0x7a, 0x88, 0x4f, 0xe5, - 0x85, 0xbd, 0x6f, 0x58, 0xff, 0x3d, 0x67, 0xa4, 0x84, 0x61, 0xcd, 0x8a, - 0xde, 0x80, 0x57, 0x42, 0x2c, 0xbd, 0x63, 0x39, 0x28, 0xe5, 0x6d, 0xf2, - 0xfc, 0x92, 0x7e, 0x13, 0x39, 0xa6, 0xf2, 0x1f, 0x27, 0xbc, 0x97, 0x22, - 0xdf, 0x2e, 0x5b, 0x91, 0x9f, 0xe1, 0x9f, 0x78, 0x04, 0xd6, 0x7b, 0xe9, - 0x4b, 0x3c, 0x65, 0x3c, 0x3b, 0x9e, 0x3f, 0x09, 0x31, 0x2e, 0xc2, 0xd4, - 0x8c, 0x01, 0xb5, 0x72, 0x7e, 0x4b, 0x6b, 0x47, 0x1d, 0xf3, 0xb2, 0xaa, - 0x9c, 0xd0, 0x1a, 0x11, 0x24, 0xad, 0xeb, 0x0e, 0x9e, 0xe1, 0xa9, 0xfc, - 0x4c, 0xf0, 0xd0, 0xc5, 0x4d, 0xd0, 0xef, 0x45, 0xa2, 0x64, 0xce, 0x08, - 0x60, 0x55, 0xaf, 0x11, 0xbd, 0xad, 0xda, 0x20, 0x04, 0x97, 0x1f, 0x9f, - 0x99, 0x4a, 0x44, 0x6d, 0x94, 0x57, 0xd8, 0x4d, 0x80, 0xb0, 0x2a, 0xf3, - 0x32, 0xd8, 0x62, 0x2b, 0xbb, 0x28, 0xa5, 0x8e, 0x7f, 0x55, 0xfa, 0xe1, - 0xb6, 0x34, 0x27, 0x80, 0xa9, 0x63, 0x6b, 0xa7, 0x1b, 0x00, 0x6f, 0x47, - 0x51, 0xf2, 0x4d, 0x8a, 0xa2, 0x6b, 0xf8, 0x3f, 0xe0, 0x07, 0x06, 0x58, - 0x87, 0x8d, 0x42, 0x5b, 0x81, 0x2f, 0xba, 0x8b, 0xec, 0xfd, 0x5e, 0xad, - 0xd5, 0x22, 0xac, 0xb8, 0xb8, 0xa9, 0x51, 0x10, 0x1d, 0x08, 0x78, 0xf4, - 0xc8, 0xff, 0xfc, 0x25, 0x85, 0xe1, 0xe1, 0x5a, 0xb7, 0x9c, 0x53, 0xc1, - 0x50, 0x7b, 0xfa, 0x48, 0xf4, 0x84, 0x2c, 0x1b, 0x10, 0xd4, 0x31, 0x0b, - 0x6f, 0x0d, 0x35, 0x36, 0xf2, 0xbb, 0x70, 0xfb, 0x18, 0xf6, 0x22, 0x8e, - 0x87, 0x39, 0xd2, 0x5d, 0x8c, 0xef, 0x42, 0xe4, 0x36, 0x8b, 0x44, 0xac, - 0x3c, 0xab, 0x09, 0xf9, 0x26, 0xb3, 0x3d, 0x85, 0x57, 0x75, 0x0a, 0x76, - 0x69, 0x14, 0x53, 0x0c, 0x28, 0xd9, 0x28, 0x57, 0x4b, 0x60, 0xea, 0xcf, - 0x83, 0xac, 0x9a, 0x05, 0xd4, 0x54, 0x46, 0xd3, 0xfd, 0xb4, 0x5d, 0xcb, - 0x45, 0x5a, 0xda, 0x1b, 0xcf, 0x71, 0x03, 0xd9, 0xc7, 0x1b, 0xd8, 0xb6, - 0x45, 0x17, 0x45, 0x01, 0x3e, 0x75, 0xf1, 0x48, 0x5c, 0x7a, 0xec, 0x58, - 0xe3, 0x71, 0xfb, 0xfe, 0x66, 0xcf, 0x99, 0x1e, 0xf7, 0xa1, 0x79, 0x74, - 0xb0, 0x99, 0x9d, 0xe5, 0x93, 0x3f, 0xa3, 0x31, 0x06, 0xb3, 0x16, 0x71, - 0x27, 0x36, 0xb0, 0xc0, 0x64, 0xe8, 0x07, 0x5e, 0xf0, 0x4a, 0x76, 0x04, - 0x91, 0x02, 0x82, 0x01, 0x01, 0x00, 0xff, 0x09, 0x0d, 0x15, 0xda, 0xbd, - 0xa7, 0xe9, 0x79, 0x20, 0x59, 0x05, 0xc1, 0xea, 0x20, 0xa9, 0xb9, 0x47, - 0x16, 0x42, 0xeb, 0x3f, 0x26, 0xa4, 0x8b, 0xfd, 0x48, 0x4b, 0xdf, 0x06, - 0x35, 0x8b, 0x32, 0xe3, 0xf7, 0x1f, 0xb1, 0x92, 0x96, 0xbf, 0x48, 0x04, - 0x32, 0xb2, 0x4e, 0x83, 0x9a, 0x1f, 0x4b, 0x11, 0x75, 0xb8, 0xbf, 0x4d, - 0x2e, 0xe0, 0x8a, 0x22, 0xde, 0x94, 0xb1, 0x98, 0xc0, 0xec, 0x8a, 0x49, - 0x73, 0x07, 0xf5, 0x69, 0x4c, 0x9a, 0x2f, 0xab, 0xf6, 0xdd, 0x93, 0x26, - 0x6c, 0x79, 0x2c, 0xac, 0xbc, 0x7d, 0x67, 0xad, 0x3e, 0x46, 0xdd, 0xf2, - 0xef, 0x14, 0x8a, 0x10, 0x9c, 0x11, 0x9b, 0x4a, 0xd5, 0x27, 0x87, 0x52, - 0x79, 0x1a, 0xb3, 0x67, 0xe3, 0x29, 0x35, 0x97, 0x57, 0xa7, 0x7f, 0xab, - 0xed, 0xe2, 0xa4, 0xa8, 0x94, 0x01, 0x7c, 0x85, 0x5e, 0x47, 0x67, 0xb5, - 0xae, 0xf0, 0x2b, 0x9a, 0xa6, 0xb1, 0x4c, 0xd7, 0x84, 0xae, 0x24, 0x1e, - 0x28, 0x77, 0x63, 0x69, 0x38, 0x6b, 0xab, 0xe0, 0x4f, 0x90, 0x78, 0x4a, - 0x31, 0x30, 0xe8, 0x95, 0xbc, 0xcb, 0x95, 0x9c, 0xd5, 0x34, 0x7c, 0x4c, - 0x07, 0xa7, 0x23, 0x66, 0x6b, 0xd6, 0x59, 0x93, 0x69, 0x22, 0xb3, 0xda, - 0x47, 0x66, 0xf8, 0xee, 0x4a, 0x38, 0x5e, 0xab, 0x2d, 0xf7, 0xe0, 0xab, - 0x9f, 0x65, 0x1a, 0x90, 0x04, 0xaa, 0x71, 0xc5, 0x59, 0xf2, 0x0c, 0xb3, - 0xbe, 0xd5, 0xcf, 0x17, 0xcd, 0x70, 0x4c, 0xa6, 0xb7, 0xb5, 0x19, 0xc2, - 0x2b, 0xa8, 0x6b, 0x0c, 0x5f, 0x81, 0xb6, 0x18, 0x7b, 0x2e, 0x74, 0x6f, - 0xcb, 0x37, 0x15, 0x71, 0x4f, 0x7e, 0xac, 0xbf, 0x66, 0xf5, 0xb6, 0x72, - 0xf7, 0xe9, 0xc7, 0x99, 0xa5, 0x31, 0xf9, 0x27, 0x74, 0x4d, 0x68, 0xd6, - 0x60, 0xc7, 0x83, 0xe7, 0xd4, 0xa0, 0xc0, 0x09, 0x7a, 0x0f, 0x02, 0x82, - 0x01, 0x01, 0x00, 0xcb, 0x95, 0x3b, 0xb3, 0x52, 0xf2, 0x44, 0x4c, 0x50, - 0xe0, 0xee, 0xaf, 0xf2, 0xec, 0x68, 0x73, 0x70, 0x16, 0x6c, 0x1d, 0x54, - 0xeb, 0xa2, 0xaf, 0x4e, 0xb9, 0x53, 0x5f, 0x73, 0x07, 0x72, 0x68, 0x70, - 0xce, 0xf0, 0xc5, 0x1b, 0x94, 0xb3, 0x48, 0xb5, 0x8e, 0x58, 0xb5, 0x81, - 0x96, 0x7b, 0xbb, 0x83, 0x33, 0x95, 0x06, 0x1a, 0x01, 0x69, 0xe1, 0x59, - 0xf9, 0x6d, 0x3d, 0x13, 0x5f, 0x52, 0xdf, 0xb6, 0x66, 0x68, 0x2b, 0xd8, - 0x06, 0x4a, 0xf8, 0xf9, 0x69, 0xed, 0xdd, 0x1e, 0x39, 0x93, 0x10, 0xe5, - 0x1b, 0x0b, 0xfe, 0x52, 0xd2, 0x9b, 0x64, 0x6c, 0xb3, 0xdc, 0x8a, 0x30, - 0x63, 0x56, 0x1c, 0x57, 0x39, 0x30, 0xfb, 0x89, 0x12, 0xd0, 0xbc, 0x00, - 0xd8, 0x4c, 0x0d, 0xcb, 0x17, 0x3e, 0x80, 0xad, 0x87, 0xc2, 0xd9, 0x28, - 0xe1, 0xbe, 0x69, 0x2b, 0x6b, 0x11, 0x7f, 0x8d, 0xb7, 0xc0, 0x2f, 0x9c, - 0x10, 0xe7, 0xd5, 0x12, 0xc0, 0x10, 0xec, 0x43, 0x9d, 0xe7, 0x30, 0x4b, - 0x5d, 0xec, 0x05, 0x22, 0xf3, 0x71, 0xab, 0x6e, 0xba, 0x99, 0x9a, 0xc7, - 0xe2, 0x95, 0x2b, 0xa4, 0xdc, 0xf0, 0x18, 0xa7, 0x91, 0x76, 0x5e, 0xf2, - 0x3b, 0x46, 0x51, 0xb9, 0xa2, 0x3e, 0xe1, 0xac, 0x7b, 0x18, 0x49, 0x15, - 0x2b, 0x01, 0xd6, 0xeb, 0x38, 0x90, 0xe4, 0x76, 0x1e, 0xc2, 0xd7, 0x7a, - 0x28, 0x0a, 0x05, 0x68, 0xbd, 0x59, 0xeb, 0xdf, 0x2b, 0x39, 0x58, 0x4b, - 0xa8, 0xf9, 0x92, 0x4c, 0xf2, 0xbf, 0xe6, 0x12, 0x6f, 0x13, 0x03, 0xa3, - 0xf5, 0xa1, 0xd2, 0x2b, 0x68, 0xf4, 0x8b, 0xac, 0x14, 0xb1, 0x3d, 0x05, - 0x4a, 0xea, 0x5a, 0x13, 0x29, 0x47, 0x36, 0x95, 0x7d, 0xf4, 0xed, 0x06, - 0x23, 0x3c, 0xf1, 0x4c, 0xf0, 0x95, 0xf9, 0xc7, 0x7e, 0x41, 0x85, 0x84, - 0xbf, 0x53, 0xfc, 0xa4, 0x5a, 0x8f, 0x35, 0x02, 0x82, 0x01, 0x00, 0x4e, - 0x64, 0xc8, 0xd9, 0xeb, 0xe8, 0x1a, 0x62, 0x20, 0xf2, 0x79, 0x8a, 0xd4, - 0x85, 0x94, 0x4e, 0xb7, 0x7e, 0x0b, 0x70, 0xbc, 0x81, 0x27, 0xee, 0xb2, - 0x7d, 0x43, 0xa8, 0xd6, 0xc0, 0x40, 0xdb, 0x2d, 0xe4, 0x77, 0x05, 0x0d, - 0xff, 0x62, 0x49, 0x1f, 0xe8, 0xf2, 0x70, 0x6e, 0xc3, 0xf3, 0x2f, 0x25, - 0x53, 0x13, 0x9d, 0x9b, 0x68, 0x2d, 0x3d, 0xa6, 0x18, 0x7b, 0xd4, 0xb7, - 0x16, 0x9e, 0x4e, 0xd7, 0x5f, 0x26, 0x75, 0xce, 0xd0, 0xf4, 0x53, 0xfc, - 0xcd, 0x5e, 0x4f, 0xd3, 0xb8, 0x9e, 0xe5, 0x4c, 0x7f, 0x38, 0x5d, 0x4f, - 0xee, 0x27, 0xd3, 0x7e, 0xcb, 0xfb, 0x03, 0x94, 0x40, 0xf0, 0xc8, 0x54, - 0xb4, 0xd6, 0xfa, 0x94, 0x95, 0x1c, 0x56, 0xc1, 0xc8, 0xf0, 0x41, 0xad, - 0x90, 0x7c, 0xc8, 0x26, 0xed, 0x81, 0x6d, 0x06, 0x72, 0x2f, 0x34, 0x99, - 0xc3, 0x21, 0x2c, 0xcf, 0xcb, 0x40, 0x1f, 0xe1, 0x37, 0x63, 0x7f, 0xe2, - 0x7f, 0xe8, 0xef, 0xe2, 0x78, 0x46, 0xb6, 0x14, 0x1f, 0xb6, 0xd1, 0x19, - 0xff, 0x14, 0x55, 0xf3, 0x33, 0xd3, 0x15, 0x16, 0x99, 0x58, 0x74, 0x37, - 0xe4, 0x02, 0x81, 0x64, 0xa7, 0xb6, 0x3e, 0x81, 0x1a, 0x2d, 0x91, 0xb0, - 0xed, 0x28, 0x07, 0x1b, 0xc3, 0xbf, 0xe8, 0xfe, 0x21, 0xb9, 0x3c, 0xc4, - 0x94, 0xd7, 0xc7, 0x77, 0x0f, 0x2a, 0x2a, 0xd8, 0xd4, 0x66, 0x2a, 0xc2, - 0x58, 0x08, 0x82, 0xe7, 0xb6, 0xa4, 0xb5, 0x72, 0x37, 0xfd, 0xd5, 0x44, - 0x2a, 0x87, 0x13, 0xaa, 0xfc, 0x4d, 0x91, 0x32, 0x7e, 0x96, 0x28, 0xf8, - 0x01, 0x64, 0x73, 0xee, 0x24, 0xa3, 0x11, 0xa6, 0x8c, 0xb3, 0x03, 0xdc, - 0x33, 0xe5, 0x81, 0x27, 0xf9, 0x05, 0x0d, 0x9e, 0x66, 0x33, 0x2a, 0x3e, - 0x4d, 0x0b, 0x69, 0xf4, 0x0c, 0xd9, 0xa8, 0xda, 0x79, 0xfb, 0x99, 0x02, - 0x0e, 0xa7, 0xaf, 0x02, 0x82, 0x01, 0x01, 0x00, 0x80, 0xff, 0xab, 0xd7, - 0xa2, 0x2c, 0x7f, 0x18, 0x78, 0x7b, 0x3e, 0xe3, 0x60, 0xa3, 0x6a, 0x40, - 0x13, 0x7b, 0x31, 0xc0, 0x98, 0x49, 0xc3, 0x49, 0x20, 0x32, 0x10, 0x61, - 0x3f, 0xeb, 0x2d, 0x14, 0x7e, 0xbe, 0xb2, 0x13, 0xc3, 0xb9, 0x42, 0xad, - 0x44, 0xd5, 0xd0, 0xe2, 0x1a, 0x1d, 0xf7, 0x83, 0x46, 0xcc, 0x8d, 0x96, - 0x53, 0x2e, 0x28, 0x20, 0x32, 0x39, 0xf9, 0x7d, 0x24, 0xe4, 0x57, 0x08, - 0x08, 0x74, 0xf5, 0x77, 0x2a, 0xa8, 0x3a, 0x23, 0x6f, 0x2f, 0x2f, 0x18, - 0xd8, 0x89, 0x14, 0xe6, 0x34, 0xb6, 0x21, 0xb0, 0x62, 0x5c, 0xaf, 0x38, - 0x40, 0x24, 0xec, 0x0e, 0xe8, 0x40, 0x59, 0x95, 0x15, 0xb3, 0xd8, 0x94, - 0xda, 0x33, 0x80, 0xee, 0x4f, 0xfe, 0xbe, 0x9a, 0x52, 0xe1, 0x04, 0xaa, - 0xd6, 0xca, 0x5a, 0xad, 0xed, 0xd8, 0xb5, 0x25, 0xc0, 0xec, 0x54, 0x27, - 0x25, 0xee, 0x94, 0x29, 0xd6, 0xd3, 0x63, 0x83, 0x41, 0x21, 0x50, 0xd7, - 0xd4, 0xb4, 0x9e, 0x84, 0x9c, 0x8d, 0x03, 0xfb, 0xf1, 0x3c, 0x9e, 0xff, - 0x48, 0xe7, 0x96, 0x63, 0x5c, 0x5a, 0xf7, 0xb8, 0xb2, 0xfb, 0x88, 0x6b, - 0xa6, 0xea, 0x66, 0x3e, 0x1d, 0x71, 0x6f, 0xca, 0x63, 0x3d, 0x2a, 0x69, - 0x27, 0x38, 0xcc, 0x97, 0xaa, 0x81, 0x18, 0xe6, 0x4d, 0x20, 0x07, 0xb7, - 0xac, 0x1d, 0x2b, 0xcb, 0x0b, 0xcd, 0x89, 0x24, 0x0a, 0x4d, 0x49, 0x48, - 0x4b, 0x9e, 0x00, 0xf5, 0x30, 0xe3, 0xfe, 0x58, 0x34, 0xc7, 0xf0, 0xce, - 0xe1, 0x49, 0x5e, 0x9c, 0x04, 0xed, 0xa5, 0x3f, 0x1e, 0x60, 0x9f, 0xec, - 0x4c, 0xfa, 0xc3, 0x9f, 0xed, 0xd5, 0x9d, 0x8f, 0xbb, 0xea, 0x81, 0x04, - 0x56, 0x4f, 0x7c, 0xbe, 0x20, 0x10, 0x7e, 0x12, 0x4c, 0x75, 0x7a, 0x22, - 0xce, 0xc4, 0xf2, 0xd1, 0x9e, 0xde, 0xf9, 0x61, 0xf1, 0xe6, 0xac, 0x2d, - 0x02, 0x82, 0x01, 0x01, 0x00, 0xd7, 0x32, 0x63, 0x0a, 0x84, 0xda, 0x7e, - 0x7e, 0xc5, 0xdf, 0xff, 0xbc, 0x82, 0x36, 0x8d, 0x83, 0x5b, 0x79, 0xa2, - 0x25, 0x88, 0xeb, 0xeb, 0x4e, 0xb8, 0xa1, 0x29, 0xbe, 0x9d, 0x81, 0x80, - 0x4b, 0x63, 0x67, 0xcc, 0x0a, 0x0d, 0xe9, 0xee, 0x84, 0x03, 0xf7, 0x2a, - 0x04, 0xe5, 0xa6, 0x0d, 0x8e, 0x0d, 0x34, 0x9f, 0x7c, 0xc1, 0xa0, 0xad, - 0x32, 0x59, 0xf8, 0x94, 0xb2, 0x4c, 0xca, 0x70, 0x68, 0xa3, 0x4b, 0xa8, - 0x58, 0xad, 0x46, 0x36, 0x08, 0xcd, 0x94, 0x10, 0x66, 0x5b, 0xbb, 0x38, - 0x16, 0x47, 0xb9, 0x2a, 0xe9, 0xe7, 0xf1, 0x4d, 0xb5, 0xb1, 0x77, 0x13, - 0xd7, 0x4f, 0xea, 0x53, 0x5f, 0xde, 0x8e, 0x0d, 0x6c, 0x88, 0x86, 0x79, - 0x0a, 0xa7, 0x2b, 0xaa, 0xe2, 0x3b, 0xb4, 0xa6, 0xd9, 0x2e, 0x57, 0xe4, - 0x76, 0x67, 0xa2, 0x4e, 0x24, 0x93, 0x2b, 0xfb, 0x7f, 0x30, 0x89, 0x66, - 0x16, 0x02, 0xe8, 0x6a, 0x2f, 0x75, 0x9e, 0xc1, 0xec, 0x7c, 0x72, 0x18, - 0xbe, 0xf1, 0x4a, 0x87, 0xc9, 0x8c, 0xcb, 0xb6, 0xa2, 0x02, 0x6e, 0x97, - 0x88, 0x4a, 0xba, 0x4a, 0xb2, 0xd8, 0x8c, 0x4a, 0xf5, 0x9c, 0x87, 0x2d, - 0x4b, 0x3d, 0x8c, 0x08, 0xdf, 0x31, 0xe7, 0x51, 0xc8, 0x4a, 0x3c, 0xf8, - 0x19, 0xb6, 0x3f, 0x6f, 0x6b, 0xe9, 0x8a, 0xed, 0x42, 0x54, 0x58, 0x96, - 0x2d, 0x00, 0x4a, 0x5f, 0xba, 0xf6, 0xf2, 0x87, 0x86, 0xc8, 0x11, 0xaf, - 0xc5, 0x31, 0x59, 0x24, 0x96, 0x76, 0xcc, 0xa0, 0xda, 0xe9, 0x3d, 0x40, - 0x0e, 0x2b, 0x64, 0xa4, 0xb2, 0x91, 0x0c, 0x04, 0x5e, 0xa9, 0x86, 0x3c, - 0xfc, 0x03, 0x8f, 0x07, 0x09, 0x52, 0x05, 0xb3, 0x9d, 0x08, 0xa7, 0xbf, - 0x1a, 0x47, 0xbb, 0x81, 0x39, 0xf1, 0xdf, 0x39, 0x65, 0x5e, 0x6b, 0x35, - 0x8d, 0x53, 0x67, 0x9f, 0x43, 0x59, 0x38, 0x45, 0xb4, + 0xf2, 0x60, 0xe5, 0x99, 0x5a, 0xb8, 0xcf, 0xbc, 0xd2, 0x19, 0xf9, 0x31, + 0x3a, 0x3f, 0x2a, 0xda, 0x81, 0xe1, 0x19, 0x3f, 0x21, 0x44, 0x12, 0x88, + 0x1d, 0x29, 0xa9, 0xdb, 0x33, 0x9b, 0x64, 0x11, 0x25, 0xb3, 0x6a, 0x51, + 0x66, 0xfd, 0x08, 0x29, 0xa4, 0x08, 0x2d, 0x93, 0xe8, 0x5f, 0xe8, 0xb4, + 0xc7, 0x9b, 0xac, 0x6a, 0x76, 0xfb, 0xaa, 0x28, 0x7f, 0x8c, 0xd6, 0xc9, + 0x2a, 0x45, 0x6d, 0x38, 0x1a, 0xf2, 0x31, 0xf5, 0xb4, 0xd6, 0x94, 0x6c, + 0x22, 0xee, 0x9d, 0xcf, 0x39, 0x97, 0xe0, 0x72, 0x29, 0x9b, 0x46, 0x95, + 0x1a, 0x44, 0x5f, 0xd5, 0xf2, 0x69, 0xa7, 0x0d, 0xcd, 0xab, 0x00, 0x0c, + 0xa5, 0xe4, 0xee, 0x43, 0x73, 0x05, 0x98, 0x6f, 0x0b, 0x37, 0x52, 0x33, + 0x31, 0x87, 0x9c, 0x7d, 0x1c, 0xfa, 0xf1, 0x96, 0x4a, 0x2a, 0x2d, 0xd4, + 0x0c, 0x50, 0x0e, 0x49, 0x8d, 0x21, 0x2a, 0xbf, 0x19, 0x98, 0xfb, 0x68, + 0x3f, 0x06, 0x61, 0xce, 0x6c, 0x5a, 0x8b, 0xbe, 0x2b, 0x45, 0x00, 0xb3, + 0x3f, 0xc1, 0x9e, 0xca, 0xa1, 0x13, 0xa6, 0x2b, 0x2a, 0xf2, 0x59, 0xdf, + 0xb0, 0x7d, 0xcc, 0xfd, 0x39, 0x19, 0xfc, 0xd1, 0x7e, 0xdc, 0xe0, 0x07, + 0x44, 0xd4, 0xf3, 0x63, 0x88, 0x58, 0x3d, 0xd4, 0xe3, 0x64, 0x46, 0x08, + 0x7c, 0xc1, 0x19, 0x5a, 0xab, 0x56, 0xea, 0xd0, 0x6f, 0x6f, 0xf0, 0x6b, + 0x26, 0x64, 0x15, 0x39, 0xfb, 0xff, 0x36, 0xce, 0xd6, 0x3c, 0x4b, 0xba, + 0xda, 0x62, 0x3a, 0x03, 0x22, 0x0e, 0x2b, 0xe1, 0xf4, 0xa5, 0xbd, 0x9d, + 0x99, 0x2d, 0x57, 0xbc, 0xf7, 0x3f, 0x44, 0x70, 0xf2, 0xd5, 0xa8, 0x5c, + 0x08, 0xea, 0x68, 0x99, 0xaf, 0xe5, 0xc2, 0xc7, 0xeb, 0x51, 0x2f, 0x5b, + 0x53, 0xd4, 0xbd, 0x87, 0x67, 0xc1, 0xb7, 0xa8, 0xeb, 0x64, 0x67, 0x03, + 0xd5, 0x00, 0xd2, 0xd6, 0xa7, 0x42, 0x43, 0x7f, 0x0e, 0xdd, 0x2c, 0x11, + 0x0a, 0x25, 0xc9, 0xd3, 0xc6, 0x40, 0x79, 0x20, 0x0c, 0x27, 0xea, 0x70, + 0xfe, 0x3a, 0x17, 0x22, 0xa9, 0x07, 0x77, 0x6a, 0x1f, 0x4d, 0x9d, 0x85, + 0x46, 0xba, 0xad, 0x92, 0x4e, 0x2a, 0x23, 0xc8, 0x26, 0x0d, 0x8c, 0xb8, + 0xbc, 0xaf, 0x88, 0x3a, 0xe2, 0x92, 0x94, 0xe5, 0x7d, 0x23, 0xd1, 0x42, + 0xd3, 0x6b, 0xff, 0x6e, 0x07, 0xc5, 0xde, 0xb2, 0x2c, 0x07, 0xfc, 0x15, + 0xef, 0xd8, 0x86, 0x1e, 0xee, 0x7f, 0x85, 0x10, 0x08, 0x29, 0x7a, 0xd1, + 0xd0, 0x6f, 0x22, 0xc8, 0x3e, 0x17, 0xef, 0xe5, 0xf8, 0x27, 0x97, 0x40, + 0xeb, 0x75, 0xd6, 0xe3, 0x00, 0xde, 0x80, 0xd1, 0x69, 0xe7, 0x2b, 0xe1, + 0xb1, 0x81, 0xbd, 0x8e, 0x47, 0x2d, 0x47, 0xd5, 0xea, 0x48, 0x4c, 0x05, + 0xda, 0x52, 0x68, 0xc3, 0x36, 0xe6, 0x45, 0xff, 0x84, 0x3e, 0xd6, 0x9d, + 0xa9, 0x4e, 0xf8, 0xc2, 0x43, 0x80, 0x7d, 0xa9, 0x1d, 0x68, 0xa8, 0x3a, + 0xf2, 0x93, 0x4c, 0x08, 0x56, 0x44, 0x4a, 0xf4, 0xce, 0xb8, 0xa2, 0x05, + 0x18, 0x2b, 0xf6, 0x86, 0x29, 0x0e, 0x25, 0x8f, 0x7b, 0x7a, 0x01, 0xfa, + 0xd8, 0x81, 0xcc, 0x7b, 0x9c, 0x38, 0x81, 0xc1, 0xc7, 0x3f, 0x2c, 0x4e, + 0xb0, 0x86, 0x4c, 0xca, 0xdb, 0xaf, 0x49, 0x1c, 0x14, 0x15, 0x50, 0x98, + 0x29, 0x50, 0xeb, 0x3f, 0xbe, 0x20, 0x96, 0x3f, 0x7c, 0xd3, 0x5c, 0xdc, + 0x58, 0xa9, 0x00, 0x70, 0x0f, 0x7b, 0x2b, 0xf0, 0xfa, 0x26, 0x9c, 0x2b, + 0x52, 0x3f, 0x0c, 0x0b, 0xb3, 0xc6, 0xe1, 0xa4, 0xb0, 0xee, 0xa1, 0x4f, + 0x95, 0x17, 0x5d, 0xf2, 0xda, 0x2a, 0xe5, 0xd1, 0x8f, 0xf1, 0x68, 0x8e, + 0x50, 0x29, 0x20, 0xfe, 0xa8, 0x34, 0xf3, 0x99, 0x4f, 0xce, 0x0b, 0x78, + 0xb4, 0xad, 0x51, 0xe2, 0x85, 0xeb, 0xfd, 0xe1, 0x02, 0x03, 0x01, 0x00, + 0x01, 0x02, 0x82, 0x02, 0x00, 0x1a, 0x49, 0x73, 0x85, 0x49, 0x0f, 0x53, + 0xaa, 0x6f, 0x1f, 0xf5, 0x84, 0x87, 0x04, 0x6c, 0x4d, 0xa3, 0xf9, 0xe9, + 0x8e, 0xcc, 0xf9, 0x10, 0xc8, 0x75, 0xdf, 0x3b, 0xa6, 0x84, 0x27, 0x95, + 0x77, 0xfd, 0x9e, 0x82, 0x88, 0x9f, 0x12, 0x90, 0xc4, 0xd1, 0x5f, 0x38, + 0xb0, 0x3a, 0xaa, 0xd2, 0x36, 0x6f, 0x12, 0x9d, 0x65, 0xb3, 0x8f, 0x52, + 0x52, 0x4f, 0x99, 0x12, 0xff, 0x60, 0xc8, 0x04, 0x53, 0x2a, 0x2a, 0xfb, + 0xcb, 0xa1, 0xe8, 0x06, 0xd3, 0x5e, 0x8b, 0x82, 0x0e, 0x84, 0x38, 0xca, + 0x55, 0x1f, 0x59, 0x91, 0x93, 0x60, 0xb4, 0xab, 0x2f, 0x2d, 0x3a, 0x13, + 0xad, 0xdd, 0xd1, 0x2e, 0xb1, 0x70, 0x79, 0x8e, 0x74, 0xbe, 0xc0, 0x0b, + 0xda, 0xf9, 0x3c, 0xaf, 0xfb, 0xd0, 0xe2, 0x9c, 0x10, 0x7e, 0xa8, 0xe1, + 0xb4, 0x32, 0xc9, 0x75, 0xcc, 0x72, 0x64, 0x69, 0x54, 0x45, 0x4b, 0xe4, + 0x52, 0xb3, 0x00, 0x42, 0x3d, 0xf9, 0x5d, 0xe4, 0x14, 0x2a, 0xf0, 0xbc, + 0x08, 0xad, 0x31, 0x2f, 0xe5, 0x00, 0xe4, 0x6b, 0x28, 0x1f, 0x45, 0x9e, + 0x07, 0x3f, 0x02, 0x67, 0x48, 0x69, 0x20, 0x0f, 0xb0, 0x23, 0xf6, 0x03, + 0x53, 0x26, 0x3e, 0xe6, 0xc6, 0x2b, 0x0b, 0x2c, 0x75, 0x6e, 0x47, 0x61, + 0xb7, 0x59, 0xcd, 0x19, 0x82, 0x58, 0xa3, 0x69, 0xb0, 0x49, 0x76, 0x65, + 0x03, 0xa3, 0x9e, 0x60, 0x95, 0x02, 0x66, 0x26, 0xde, 0x31, 0xcc, 0x29, + 0x61, 0xcf, 0xde, 0xdc, 0xb8, 0xc0, 0x70, 0x18, 0x4a, 0x18, 0x32, 0xb0, + 0xc4, 0x32, 0x10, 0x1a, 0xab, 0x41, 0xbe, 0x66, 0xee, 0x5d, 0xe3, 0x5c, + 0xf5, 0x22, 0x05, 0x15, 0x9c, 0x1b, 0xb4, 0x6e, 0x91, 0x42, 0x80, 0x38, + 0xfa, 0x8d, 0x35, 0x32, 0x1d, 0x65, 0xcf, 0x64, 0x19, 0xd0, 0x21, 0x34, + 0x9d, 0xcb, 0x9f, 0xc9, 0x43, 0x63, 0x61, 0xd2, 0x3b, 0xd3, 0x01, 0x7f, + 0xae, 0x3f, 0x77, 0xd5, 0x5f, 0x45, 0x52, 0x9a, 0x71, 0xe8, 0xa8, 0x41, + 0xc4, 0x95, 0x96, 0xdf, 0x42, 0x3d, 0xcb, 0xb7, 0x38, 0x28, 0x73, 0x8c, + 0x11, 0xa8, 0x1f, 0xd9, 0xe3, 0x8d, 0xe1, 0x97, 0xa0, 0x74, 0xc4, 0xbe, + 0x45, 0x3e, 0x61, 0x77, 0xdd, 0x19, 0xdd, 0xcc, 0x2f, 0x75, 0xeb, 0xa7, + 0x07, 0xbe, 0x58, 0xc4, 0x41, 0x54, 0x0f, 0xd3, 0x8e, 0xcf, 0x36, 0xe7, + 0x43, 0xdc, 0xc9, 0x9a, 0xdf, 0x6e, 0x58, 0x64, 0xe0, 0xce, 0x40, 0x1f, + 0xcc, 0x43, 0x38, 0x25, 0xac, 0x4c, 0x64, 0xc8, 0xcf, 0xd3, 0x05, 0x89, + 0x34, 0x41, 0x12, 0x2b, 0xb2, 0xf5, 0x57, 0x3f, 0xe7, 0x0e, 0xf5, 0x6a, + 0x7f, 0x90, 0xdb, 0xfa, 0x97, 0xf8, 0xc2, 0xf5, 0xd9, 0xa4, 0xce, 0x07, + 0x5b, 0x09, 0xb0, 0x71, 0x17, 0xf3, 0x76, 0xc6, 0x5b, 0xc9, 0xb7, 0x73, + 0xd1, 0x07, 0xb2, 0x72, 0x71, 0xe0, 0xdc, 0x5d, 0x50, 0xa0, 0x38, 0x89, + 0xfa, 0x82, 0xb8, 0x62, 0x69, 0xcf, 0x81, 0xa1, 0x60, 0x9c, 0x33, 0x4e, + 0x5a, 0xa5, 0x9a, 0x76, 0x54, 0x1a, 0x40, 0xa1, 0xba, 0x63, 0xd0, 0xde, + 0x1c, 0x23, 0xbf, 0xed, 0x9b, 0x12, 0xc8, 0xc1, 0x41, 0x3e, 0x07, 0xe0, + 0xc8, 0xbf, 0x04, 0x73, 0xe3, 0x3a, 0xce, 0xbe, 0x54, 0x5d, 0x9d, 0x97, + 0xb9, 0xe8, 0xc9, 0x69, 0xd3, 0xc2, 0x0a, 0x1e, 0x65, 0x80, 0xa2, 0xeb, + 0x0c, 0x11, 0x77, 0x07, 0xe8, 0x09, 0xba, 0x92, 0x3d, 0xe9, 0x10, 0x77, + 0xf4, 0x8b, 0x7b, 0x8f, 0x9e, 0x1d, 0xe9, 0x97, 0x76, 0x94, 0x6a, 0x91, + 0x13, 0xb7, 0x42, 0x2d, 0xdf, 0x70, 0x3c, 0x5c, 0xb6, 0x8f, 0xb5, 0x7c, + 0x21, 0x55, 0x23, 0x72, 0xe7, 0x45, 0xba, 0xb2, 0xf6, 0x3a, 0x30, 0x0f, + 0x51, 0x52, 0x08, 0x13, 0x56, 0x1e, 0x7c, 0x4d, 0x52, 0x60, 0x1c, 0x79, + 0xd5, 0x02, 0x82, 0x01, 0x01, 0x00, 0xfb, 0xfe, 0x82, 0xfc, 0x4e, 0x1f, + 0x85, 0x7e, 0x0f, 0xf0, 0x55, 0x93, 0x9c, 0xf9, 0x0c, 0x64, 0xc9, 0xe1, + 0xbb, 0xa9, 0x69, 0xae, 0x17, 0x07, 0x72, 0x25, 0x8d, 0x99, 0x19, 0x43, + 0xc1, 0x29, 0x96, 0xcf, 0x27, 0x01, 0x85, 0x55, 0xca, 0x10, 0xcb, 0xf6, + 0xfe, 0x31, 0x82, 0x66, 0x23, 0xfb, 0xf0, 0xf7, 0xb1, 0x2c, 0x07, 0x5f, + 0xeb, 0x9c, 0xf0, 0xb8, 0xf1, 0x01, 0xc8, 0x7b, 0xde, 0xa2, 0x5e, 0x7f, + 0x03, 0x25, 0x73, 0x49, 0x27, 0x57, 0x30, 0x7f, 0x55, 0x55, 0x58, 0x15, + 0x16, 0x13, 0x70, 0x75, 0x69, 0x86, 0xc0, 0xf9, 0x5c, 0xd7, 0x35, 0x38, + 0xf9, 0xa2, 0xed, 0x0a, 0xa4, 0xe1, 0x57, 0xcf, 0x1c, 0x1c, 0x75, 0x78, + 0xbc, 0xb0, 0x88, 0x13, 0x35, 0x19, 0x7c, 0x58, 0x1a, 0xec, 0x7a, 0x0f, + 0x8b, 0x77, 0xf3, 0x4f, 0xaa, 0xa8, 0xcc, 0xd8, 0x06, 0x5c, 0x1e, 0x9a, + 0x3f, 0x52, 0x66, 0x96, 0x44, 0x0c, 0xfd, 0x9c, 0xdd, 0xc7, 0xef, 0x87, + 0x4c, 0xb4, 0xa3, 0xd3, 0xf0, 0xaf, 0x0b, 0x02, 0x5a, 0xcb, 0xc0, 0xce, + 0xda, 0xd3, 0xba, 0xdc, 0x7e, 0xca, 0xd8, 0xfa, 0x80, 0xf1, 0xe5, 0x40, + 0xcd, 0x42, 0xa6, 0x32, 0x81, 0x49, 0x3f, 0x81, 0x02, 0xab, 0xa1, 0x6d, + 0x3a, 0x33, 0x04, 0x89, 0xb9, 0x48, 0xff, 0xa1, 0x02, 0x1b, 0x6c, 0x75, + 0x50, 0x47, 0x30, 0x51, 0x56, 0x27, 0x8b, 0xec, 0x17, 0x8f, 0x13, 0x9e, + 0x99, 0x18, 0x32, 0x54, 0x35, 0x2c, 0xd1, 0xc3, 0x6b, 0x96, 0xed, 0xcb, + 0xc0, 0x86, 0xeb, 0x68, 0x3e, 0xf5, 0x4b, 0x6a, 0x85, 0xf2, 0xcc, 0x3e, + 0x87, 0x0c, 0x24, 0x94, 0x34, 0x76, 0xe0, 0xee, 0x90, 0x30, 0x00, 0xdc, + 0x41, 0xf4, 0x1b, 0xad, 0x81, 0x08, 0xf7, 0x05, 0x06, 0x6e, 0x4b, 0x5b, + 0x7b, 0xc3, 0x2d, 0xaa, 0x1f, 0x37, 0xb1, 0xe1, 0x5a, 0x65, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xf6, 0x3b, 0x41, 0x17, 0x76, 0x3a, 0x48, 0xca, 0x82, + 0x34, 0x61, 0xc8, 0x4f, 0x98, 0x5b, 0x90, 0xea, 0xc1, 0x1d, 0x43, 0x22, + 0x7b, 0x85, 0xa7, 0x29, 0x50, 0x8e, 0x91, 0xab, 0xf3, 0x5e, 0x1f, 0x34, + 0x72, 0xc9, 0x8b, 0xe6, 0x21, 0x94, 0x1b, 0xfa, 0x5f, 0xce, 0x7b, 0xa3, + 0xd1, 0xf9, 0xab, 0xd4, 0x13, 0x75, 0x53, 0xb7, 0x63, 0x4b, 0xb5, 0x33, + 0x09, 0xf1, 0x6e, 0xe9, 0x63, 0xca, 0x06, 0xd0, 0x92, 0x16, 0x84, 0x5f, + 0xa5, 0x09, 0x12, 0x0f, 0x06, 0x07, 0x49, 0x45, 0x03, 0x68, 0x08, 0x3c, + 0x02, 0x6e, 0xb0, 0x0a, 0x3d, 0x39, 0xce, 0x58, 0x17, 0x1d, 0xb9, 0x9e, + 0x10, 0xd1, 0xe2, 0x4b, 0x68, 0x64, 0x9b, 0xc4, 0x1a, 0x9b, 0x3e, 0x1d, + 0x7c, 0x4e, 0x36, 0x83, 0x67, 0x9d, 0x68, 0x9c, 0xe4, 0x7d, 0x39, 0x6e, + 0x6f, 0x82, 0xea, 0x7b, 0x5f, 0x06, 0x4a, 0x71, 0x89, 0xd3, 0x42, 0x76, + 0x22, 0xd5, 0x2d, 0x83, 0xb9, 0x75, 0x9c, 0xa1, 0xb4, 0xb1, 0x0c, 0x8e, + 0x11, 0x4a, 0x6e, 0x1e, 0x36, 0x59, 0x01, 0xf3, 0x4d, 0x3b, 0x88, 0xd4, + 0x34, 0x03, 0xb1, 0x6c, 0xae, 0xd7, 0xd2, 0x90, 0x5b, 0xf7, 0xb2, 0x97, + 0x40, 0xee, 0x38, 0x08, 0x98, 0x3d, 0x85, 0xa5, 0x44, 0xa7, 0x84, 0xee, + 0xfc, 0xfe, 0x94, 0xfa, 0x44, 0x3c, 0x8e, 0xbb, 0x83, 0x46, 0x07, 0xb3, + 0x68, 0xae, 0xb0, 0x72, 0xa9, 0x0e, 0xaf, 0x87, 0x32, 0x1a, 0xa5, 0x52, + 0xc3, 0x67, 0x40, 0xc7, 0xe9, 0x13, 0x73, 0x98, 0x77, 0x61, 0x3d, 0xae, + 0x19, 0xa9, 0x86, 0x07, 0x5c, 0x95, 0x62, 0x4d, 0x36, 0x8c, 0xa6, 0x36, + 0x57, 0xd1, 0x41, 0x1b, 0x47, 0x73, 0x98, 0x46, 0x5c, 0xf5, 0x4e, 0x1a, + 0xf2, 0xa7, 0x7b, 0x1e, 0xee, 0x03, 0xdc, 0xf2, 0x68, 0x1f, 0x05, 0xd7, + 0xbf, 0x5b, 0x98, 0x20, 0xfc, 0xff, 0xcd, 0x02, 0x82, 0x01, 0x01, 0x00, + 0x99, 0x2a, 0x17, 0x3f, 0x77, 0xd4, 0x9c, 0xf5, 0x04, 0x87, 0x15, 0xdc, + 0xc4, 0xfa, 0x73, 0x58, 0x07, 0x85, 0x16, 0xe5, 0x60, 0x00, 0x9a, 0xaa, + 0xc1, 0xec, 0xa5, 0x66, 0x3a, 0xfe, 0xfd, 0xb7, 0x63, 0x9c, 0xc1, 0x9e, + 0xa1, 0x06, 0x85, 0xed, 0x33, 0xac, 0x0a, 0xd0, 0xd8, 0xeb, 0x70, 0x4f, + 0xc0, 0x25, 0x2d, 0x21, 0x0f, 0xd2, 0x73, 0x89, 0x4e, 0x9f, 0x7a, 0x8d, + 0x94, 0xe8, 0x05, 0x68, 0x37, 0x7b, 0x87, 0xd4, 0x09, 0x80, 0x9b, 0x52, + 0xd9, 0x7d, 0x6b, 0xc6, 0x95, 0xe5, 0x2b, 0x27, 0xe1, 0xa0, 0xdb, 0xe5, + 0x36, 0x01, 0xdb, 0x36, 0x4b, 0x79, 0x37, 0xf2, 0x99, 0x95, 0x70, 0xa6, + 0x2f, 0x13, 0x09, 0x89, 0x1a, 0xb5, 0xaa, 0x2a, 0xba, 0x6a, 0xc2, 0x49, + 0x9d, 0x54, 0x87, 0xf8, 0xd8, 0x2f, 0xfe, 0x9b, 0x87, 0xde, 0x12, 0x62, + 0xcb, 0x2f, 0x3a, 0x9e, 0x5f, 0x53, 0x6d, 0xcd, 0x8d, 0xe1, 0x23, 0xb7, + 0xa9, 0xa6, 0xe0, 0xfe, 0x97, 0x4e, 0x6b, 0x87, 0x18, 0x54, 0xc7, 0xe3, + 0xfd, 0x13, 0x0f, 0x50, 0xec, 0xfe, 0x4d, 0xef, 0x87, 0x92, 0x61, 0xd6, + 0xb5, 0x8f, 0x7d, 0x34, 0x8a, 0x1d, 0x9b, 0x25, 0x39, 0x93, 0x55, 0x15, + 0xca, 0x6d, 0x85, 0xcc, 0x00, 0x30, 0x3d, 0xc1, 0xa8, 0xae, 0x75, 0x5a, + 0x33, 0x56, 0x0f, 0xcb, 0xcf, 0x5e, 0x76, 0xce, 0xee, 0x45, 0x61, 0xd2, + 0x63, 0xaf, 0xba, 0x9a, 0x12, 0x58, 0xc1, 0xc0, 0xfd, 0x46, 0x45, 0x93, + 0xda, 0x63, 0xa7, 0x4f, 0x73, 0x75, 0xf6, 0xad, 0x8b, 0x04, 0x2f, 0xd0, + 0x34, 0x68, 0xa8, 0xc5, 0xec, 0xf2, 0xcc, 0x6e, 0xcb, 0x04, 0xf1, 0xe6, + 0x97, 0xcd, 0x29, 0x02, 0xa4, 0x63, 0x3c, 0x0b, 0x3d, 0x8f, 0x75, 0xf0, + 0x97, 0x04, 0x0c, 0xe6, 0x99, 0x13, 0x1f, 0xe4, 0x80, 0x2a, 0xf9, 0x12, + 0x87, 0x21, 0xec, 0x29, 0x02, 0x82, 0x01, 0x00, 0x57, 0xc6, 0x33, 0xa3, + 0xeb, 0x6f, 0x47, 0x77, 0x79, 0x06, 0xb7, 0x3c, 0xb2, 0xb2, 0xfb, 0x21, + 0x23, 0xae, 0x07, 0x82, 0x61, 0x0e, 0x6b, 0x4c, 0x75, 0x7b, 0xd3, 0xf6, + 0xb5, 0xb7, 0x21, 0x7c, 0x3a, 0x34, 0x19, 0x08, 0x97, 0xd6, 0xac, 0x77, + 0x74, 0xbf, 0x26, 0x5a, 0x08, 0xc1, 0xd7, 0x20, 0x9b, 0x8e, 0xfc, 0x2a, + 0x05, 0x9b, 0x8d, 0xe7, 0x5f, 0xf4, 0x51, 0x6e, 0x5a, 0x20, 0x4a, 0x6a, + 0x37, 0x7b, 0x7c, 0x2f, 0x5f, 0xf0, 0xf2, 0xd4, 0xcf, 0x2a, 0x34, 0xfa, + 0xb7, 0x71, 0x49, 0x6a, 0x76, 0x09, 0xdf, 0xef, 0x3d, 0x17, 0x2a, 0x3e, + 0x16, 0x44, 0xd7, 0x41, 0xcd, 0xc8, 0xed, 0x28, 0x9f, 0xfc, 0xec, 0xb0, + 0x62, 0x2d, 0xa1, 0xdd, 0x78, 0xa1, 0x51, 0x38, 0x39, 0x8b, 0x7c, 0x1f, + 0x48, 0x9e, 0x62, 0xcd, 0x50, 0x42, 0xcc, 0x06, 0x4e, 0x48, 0x47, 0x73, + 0xce, 0x19, 0x75, 0x87, 0xa1, 0x99, 0x35, 0x28, 0xee, 0x65, 0xf4, 0x39, + 0x0b, 0xa3, 0xdf, 0xe1, 0x3b, 0xdb, 0x8a, 0x0e, 0xcb, 0x12, 0x50, 0x94, + 0x53, 0x68, 0xda, 0xaa, 0x22, 0x0b, 0x10, 0xad, 0xf4, 0xb2, 0x37, 0x19, + 0x46, 0x80, 0xa2, 0x41, 0xb5, 0x8d, 0x5d, 0xdd, 0xf7, 0xa2, 0x5d, 0x7c, + 0x00, 0xb8, 0x02, 0x87, 0x6e, 0xb2, 0x1d, 0x06, 0x7a, 0x58, 0x4c, 0xc6, + 0x0c, 0xad, 0xf5, 0x0e, 0xd5, 0xb3, 0xa1, 0x62, 0x20, 0xdd, 0x86, 0xf0, + 0xa7, 0x5f, 0x03, 0x04, 0xa0, 0x06, 0x2c, 0x0e, 0x79, 0xb4, 0xea, 0x4c, + 0x30, 0xb3, 0x8d, 0xa4, 0x71, 0x25, 0x90, 0xba, 0xc8, 0x71, 0x06, 0x87, + 0x6e, 0x42, 0xdd, 0xcc, 0x7a, 0x5e, 0xbf, 0xa7, 0x57, 0xd4, 0x16, 0xae, + 0xd7, 0x96, 0x57, 0x93, 0xaa, 0x23, 0x89, 0xf4, 0x67, 0xc8, 0x2c, 0xf4, + 0x5c, 0x2d, 0x25, 0xb1, 0xed, 0x80, 0xb7, 0x63, 0xf9, 0x8e, 0x76, 0x99, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0xf8, 0x0f, 0x4d, 0xbb, 0xd4, 0xe4, + 0x25, 0x05, 0xa3, 0x17, 0x4c, 0x37, 0x62, 0x02, 0x14, 0x3e, 0xc0, 0x72, + 0xe8, 0xea, 0x3d, 0x8a, 0x1a, 0xc1, 0x6e, 0x6a, 0xdd, 0x27, 0xc6, 0xc2, + 0x4c, 0xd6, 0x1a, 0x09, 0xe6, 0x08, 0xc9, 0xf1, 0x5f, 0x91, 0x32, 0x66, + 0x97, 0xbb, 0x3d, 0xaf, 0x19, 0x57, 0x9f, 0x7b, 0x49, 0x99, 0x2f, 0x46, + 0x62, 0xb7, 0xcc, 0xde, 0xec, 0x8f, 0x30, 0x2d, 0xe1, 0x21, 0xad, 0x8e, + 0xf4, 0x38, 0xf6, 0xc0, 0x1f, 0x45, 0x60, 0x5e, 0x5f, 0xac, 0x65, 0x9c, + 0x8e, 0xc6, 0xa0, 0xd2, 0xa6, 0x4f, 0xf8, 0x67, 0xc0, 0x1f, 0x70, 0xcc, + 0x9f, 0x29, 0x5f, 0x9c, 0x42, 0x9c, 0xa9, 0x1e, 0x5e, 0x97, 0x61, 0x11, + 0x11, 0xd3, 0x88, 0x4a, 0xd8, 0xc2, 0xee, 0xab, 0x6a, 0xde, 0x6c, 0x20, + 0xbb, 0x1d, 0xa4, 0xc5, 0x49, 0xdb, 0xb4, 0x7c, 0x8f, 0x1f, 0xad, 0x4d, + 0xc3, 0x24, 0x7d, 0x77, 0x0b, 0x2e, 0x9f, 0x94, 0xe5, 0x48, 0xe1, 0x69, + 0x15, 0xac, 0xc6, 0x96, 0x9a, 0x5b, 0x62, 0xcb, 0x73, 0x45, 0x27, 0x43, + 0xd3, 0xd4, 0x49, 0x99, 0x3e, 0x69, 0xfd, 0x63, 0x59, 0x2b, 0x73, 0x94, + 0x56, 0x20, 0x39, 0x0c, 0x97, 0xbc, 0x85, 0x8d, 0xfe, 0xe6, 0x4b, 0x84, + 0xf7, 0x6d, 0x9d, 0x64, 0x34, 0x06, 0xee, 0x4c, 0x4f, 0x61, 0x66, 0x9c, + 0xaf, 0xd0, 0x98, 0x4d, 0x19, 0x66, 0xa6, 0x67, 0x25, 0x8d, 0xa3, 0x93, + 0xe3, 0xe5, 0x45, 0x10, 0xf5, 0x88, 0xb6, 0xd8, 0x53, 0x68, 0x77, 0x99, + 0xd0, 0x84, 0x9c, 0x78, 0x69, 0x85, 0xe2, 0xb6, 0x15, 0x3c, 0xdc, 0xff, + 0x52, 0xd6, 0x44, 0xfe, 0xa7, 0x9e, 0x83, 0x60, 0x7f, 0x63, 0xde, 0x59, + 0xe2, 0x7c, 0xf9, 0xfd, 0x9a, 0xb3, 0x38, 0xf0, 0xfb, 0x26, 0x6a, 0x67, + 0xcb, 0xab, 0xc9, 0x9e, 0xac, 0xb0, 0x1e, 0x0b, 0x5e, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_secp192r1 */ const unsigned char test_ec_secp192r1[] = { - 0x30, 0x5f, 0x02, 0x01, 0x01, 0x04, 0x18, 0xf2, 0xb2, 0x0b, 0x3a, 0xce, - 0x36, 0x72, 0xcd, 0xb2, 0xe2, 0x37, 0x80, 0x0a, 0x5e, 0x1a, 0x8e, 0x20, - 0xa4, 0x55, 0xe3, 0x53, 0xfc, 0x98, 0xeb, 0xa0, 0x0a, 0x06, 0x08, 0x2a, + 0x30, 0x5f, 0x02, 0x01, 0x01, 0x04, 0x18, 0xeb, 0x6a, 0x83, 0xe7, 0x5b, + 0xa1, 0x5e, 0x13, 0x8b, 0xea, 0x23, 0x89, 0x4a, 0xf9, 0xa6, 0xd9, 0x9e, + 0x1b, 0xba, 0x51, 0xf7, 0xa9, 0xf3, 0xa8, 0xa0, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x01, 0xa1, 0x34, 0x03, 0x32, 0x00, - 0x04, 0x32, 0x24, 0xf9, 0x2a, 0x4b, 0x53, 0x29, 0x16, 0x22, 0xa6, 0xd7, - 0x35, 0xb8, 0xc8, 0xd4, 0x16, 0x22, 0x5e, 0xfd, 0xce, 0x34, 0xf7, 0x1c, - 0xd3, 0x0c, 0xea, 0xf3, 0x71, 0xbe, 0x2e, 0x40, 0x61, 0x2b, 0x31, 0x85, - 0xcb, 0x6b, 0xec, 0x59, 0xfc, 0x19, 0x31, 0xb0, 0x45, 0x04, 0x41, 0xea, - 0xf9, + 0x04, 0xb4, 0x64, 0x38, 0xcb, 0xf9, 0x1b, 0x96, 0x35, 0x67, 0xbd, 0x99, + 0x1b, 0xc0, 0x57, 0xf8, 0xb8, 0xc9, 0x53, 0xa5, 0x81, 0x04, 0xe4, 0x69, + 0xec, 0x55, 0xdd, 0x0e, 0x25, 0x90, 0xa4, 0xe7, 0x47, 0x66, 0x94, 0x3b, + 0x98, 0x68, 0xb8, 0x1b, 0xd9, 0x8e, 0x92, 0x2f, 0x48, 0x56, 0x60, 0x07, + 0xea, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_secp224r1 */ const unsigned char test_ec_secp224r1[] = { - 0x30, 0x68, 0x02, 0x01, 0x01, 0x04, 0x1c, 0x74, 0x02, 0x38, 0xee, 0x23, - 0x01, 0xa0, 0x11, 0x8c, 0xfe, 0xd1, 0xfb, 0x66, 0x6e, 0x04, 0x92, 0x9e, - 0xe9, 0x75, 0x9b, 0xaf, 0x5a, 0xf2, 0x9a, 0x64, 0x16, 0x83, 0x08, 0xa0, + 0x30, 0x68, 0x02, 0x01, 0x01, 0x04, 0x1c, 0x1e, 0xec, 0x90, 0x48, 0xba, + 0x1e, 0x64, 0xf1, 0x21, 0x61, 0x28, 0xb7, 0x96, 0xa5, 0xd8, 0x5a, 0x4e, + 0x1c, 0x99, 0x6b, 0xd8, 0x2a, 0xcd, 0x8d, 0x04, 0x52, 0x08, 0xcc, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x21, 0xa1, 0x3c, 0x03, 0x3a, - 0x00, 0x04, 0xd3, 0xe3, 0x0e, 0x63, 0x84, 0x9d, 0xbb, 0x5e, 0xb2, 0xb4, - 0x2d, 0x28, 0xe6, 0x45, 0x5d, 0xea, 0xae, 0x4e, 0x17, 0x8a, 0x88, 0xe8, - 0x68, 0xce, 0x44, 0xc5, 0xd2, 0xf9, 0xef, 0x10, 0x20, 0xe6, 0x07, 0x08, - 0x47, 0xde, 0xaa, 0xb4, 0xda, 0x38, 0x5e, 0xf2, 0x2e, 0xc4, 0x94, 0x01, - 0xba, 0xc4, 0x57, 0xf1, 0xee, 0x51, 0xba, 0x38, 0x13, 0x30, + 0x00, 0x04, 0xc2, 0xf0, 0x4f, 0x21, 0x05, 0xb4, 0x59, 0xa2, 0xba, 0x90, + 0x37, 0x4f, 0x7b, 0x1d, 0x63, 0x96, 0xb4, 0x39, 0xa0, 0x6f, 0x00, 0x44, + 0xdc, 0xc5, 0xe1, 0x85, 0x05, 0x3b, 0x58, 0xde, 0xbf, 0x9e, 0xb6, 0xe4, + 0x1e, 0x25, 0x96, 0xef, 0x90, 0x53, 0x1e, 0x86, 0x42, 0xa0, 0x64, 0x55, + 0x42, 0x3a, 0x76, 0x05, 0xfc, 0x6c, 0x01, 0xc3, 0x98, 0xbb, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_secp256r1 */ const unsigned char test_ec_secp256r1[] = { - 0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0x9e, 0x24, 0x0a, 0x03, 0x94, - 0x40, 0x32, 0xf9, 0x9b, 0x41, 0xfd, 0x83, 0x4d, 0xa9, 0x31, 0x98, 0xaf, - 0xa3, 0x09, 0x6e, 0xc3, 0x05, 0x39, 0xb6, 0x67, 0xb0, 0x32, 0x83, 0x22, - 0xd1, 0xe2, 0x93, 0xa0, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, - 0x03, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x78, 0xfa, 0x74, - 0x37, 0x63, 0x6d, 0xda, 0x49, 0xa5, 0x6b, 0x33, 0x0d, 0x5b, 0xc1, 0x39, - 0x67, 0x83, 0x1a, 0x18, 0x9c, 0x31, 0xf4, 0x83, 0xc3, 0xfe, 0xc1, 0x96, - 0x7d, 0x22, 0x21, 0x51, 0x52, 0x78, 0x46, 0x50, 0xdc, 0x92, 0xb9, 0x0b, - 0xf0, 0xe5, 0x80, 0x00, 0xc4, 0x07, 0x7d, 0x16, 0xe0, 0x09, 0x55, 0x29, - 0x9d, 0x3c, 0x53, 0x42, 0xf4, 0x58, 0xff, 0x93, 0xc1, 0xaa, 0x23, 0xd5, - 0x3e, + 0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0xed, 0x96, 0xc5, 0x3c, 0x6c, + 0xde, 0x36, 0x87, 0x3c, 0xfa, 0x5c, 0xe5, 0xa7, 0x0d, 0x52, 0x05, 0x66, + 0x9d, 0xf5, 0xf0, 0x59, 0x40, 0x68, 0x9a, 0x6a, 0xe6, 0x6e, 0x04, 0xa9, + 0x15, 0x30, 0x36, 0xa0, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, + 0x03, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x2c, 0x8d, 0x41, + 0xbf, 0x8b, 0xfc, 0xde, 0x64, 0xd9, 0xa7, 0x06, 0x4c, 0xe9, 0xe0, 0xe8, + 0xe7, 0x50, 0x62, 0x51, 0x9c, 0x68, 0xc3, 0x26, 0x2e, 0xd4, 0x86, 0xc2, + 0xbc, 0xc2, 0xa8, 0x44, 0x4b, 0x4e, 0xcb, 0xde, 0x33, 0xe1, 0xd3, 0x72, + 0x87, 0xe1, 0x18, 0xaa, 0x32, 0x36, 0xa3, 0x05, 0x4f, 0x2c, 0x47, 0x27, + 0x17, 0x60, 0x37, 0x31, 0x60, 0x28, 0x19, 0x8a, 0xeb, 0x05, 0x1e, 0x7b, + 0x60, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_secp384r1 */ const unsigned char test_ec_secp384r1[] = { - 0x30, 0x81, 0xa4, 0x02, 0x01, 0x01, 0x04, 0x30, 0x59, 0x92, 0x61, 0x10, - 0xdd, 0x83, 0x76, 0x99, 0xb5, 0xc4, 0x08, 0xe3, 0x3d, 0xb8, 0x8c, 0xac, - 0x5d, 0x46, 0x7f, 0x96, 0x9f, 0x7c, 0x40, 0xa0, 0xbf, 0xe8, 0xf0, 0x6b, - 0xcf, 0x1d, 0x2a, 0xe8, 0xb1, 0x90, 0xb1, 0x6c, 0xc3, 0xcf, 0x01, 0x9f, - 0xc4, 0x2c, 0x0e, 0x9b, 0x05, 0x07, 0xce, 0xed, 0xa0, 0x07, 0x06, 0x05, - 0x2b, 0x81, 0x04, 0x00, 0x22, 0xa1, 0x64, 0x03, 0x62, 0x00, 0x04, 0x90, - 0x73, 0x8b, 0xcc, 0x2a, 0x0d, 0x1e, 0xcc, 0x6e, 0x4e, 0x14, 0xbc, 0x51, - 0x2c, 0xb6, 0xce, 0xdb, 0xb2, 0xc2, 0xdd, 0x20, 0xf6, 0xf5, 0x20, 0xa7, - 0xff, 0x98, 0x37, 0x2a, 0x8c, 0x35, 0xe2, 0xf8, 0x3e, 0xf1, 0xd6, 0x5e, - 0x79, 0x84, 0xe8, 0x43, 0x04, 0x9c, 0xc3, 0xe0, 0xfe, 0x2f, 0x4f, 0x82, - 0xb1, 0xee, 0xec, 0x2b, 0x11, 0x49, 0x8f, 0xb4, 0x77, 0xce, 0x74, 0x11, - 0xbb, 0x16, 0x6b, 0x69, 0xd2, 0xee, 0x01, 0xff, 0x99, 0xd1, 0x0f, 0x57, - 0x46, 0x2d, 0x83, 0xfe, 0x17, 0x4d, 0xcc, 0x59, 0x7d, 0xa5, 0x4a, 0x52, - 0x39, 0x4f, 0x6a, 0xe1, 0xb6, 0x21, 0xbe, 0x74, 0x72, 0xd2, 0x51, + 0x30, 0x81, 0xa4, 0x02, 0x01, 0x01, 0x04, 0x30, 0xa8, 0x88, 0x45, 0xb7, + 0x52, 0x1d, 0x21, 0x2c, 0x2c, 0x20, 0x48, 0x48, 0x51, 0x19, 0xf1, 0x09, + 0x5d, 0x1a, 0x55, 0x78, 0x06, 0x59, 0x71, 0xea, 0xfd, 0x17, 0x41, 0x82, + 0x49, 0x63, 0x9e, 0x62, 0xe1, 0x9c, 0xcc, 0x22, 0x69, 0xeb, 0xbb, 0x90, + 0x7e, 0xa0, 0x50, 0x65, 0xfd, 0x4b, 0xa1, 0x0c, 0xa0, 0x07, 0x06, 0x05, + 0x2b, 0x81, 0x04, 0x00, 0x22, 0xa1, 0x64, 0x03, 0x62, 0x00, 0x04, 0x74, + 0xa4, 0x5a, 0xa5, 0xb2, 0xfb, 0xb9, 0x21, 0x79, 0x0f, 0xa5, 0x91, 0xe5, + 0x31, 0x36, 0x28, 0x9d, 0xbf, 0x7e, 0x10, 0xae, 0x1b, 0x71, 0xd5, 0x84, + 0xd4, 0x5b, 0xb4, 0xca, 0x84, 0xa3, 0x7d, 0xbd, 0x0a, 0xa5, 0x71, 0xda, + 0x24, 0xad, 0x87, 0xa9, 0xaf, 0x72, 0x3c, 0xb7, 0x8e, 0x51, 0xa5, 0x15, + 0x8d, 0x9b, 0x92, 0xa8, 0xd1, 0x86, 0x86, 0xd2, 0x1a, 0x5a, 0x68, 0x4c, + 0x0a, 0x9c, 0x36, 0x04, 0x9e, 0xba, 0xa1, 0xc5, 0x98, 0x86, 0x07, 0x59, + 0xec, 0x63, 0xbe, 0x8f, 0x2a, 0x3a, 0xde, 0x15, 0x59, 0xfa, 0x55, 0xc7, + 0x92, 0xcd, 0x4f, 0xa4, 0x8a, 0xcc, 0x1e, 0xa7, 0x14, 0x9b, 0x73, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_secp521r1 */ const unsigned char test_ec_secp521r1[] = { - 0x30, 0x81, 0xdc, 0x02, 0x01, 0x01, 0x04, 0x42, 0x00, 0x51, 0xcf, 0xff, - 0x6d, 0x27, 0x46, 0x89, 0x81, 0x7e, 0x9d, 0x99, 0x5a, 0x28, 0x6b, 0x2b, - 0x69, 0x55, 0xdb, 0x5b, 0xde, 0x1c, 0x47, 0x69, 0x05, 0x99, 0x9e, 0xa3, - 0x81, 0x5b, 0x5c, 0x4c, 0xe8, 0x7e, 0xde, 0x0a, 0x58, 0x52, 0x05, 0x0a, - 0x26, 0xac, 0x4b, 0xb0, 0x55, 0x2d, 0xdf, 0xab, 0x0e, 0x3e, 0x17, 0x27, - 0xca, 0x8c, 0xc1, 0x5b, 0x2b, 0xf1, 0x51, 0x5f, 0x33, 0xee, 0x91, 0xb8, - 0x68, 0x28, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x23, 0xa1, - 0x81, 0x89, 0x03, 0x81, 0x86, 0x00, 0x04, 0x01, 0xcf, 0xdb, 0xee, 0xaf, - 0xc1, 0x2a, 0xa1, 0x07, 0x67, 0x1d, 0x48, 0xea, 0x61, 0x17, 0xd0, 0x16, - 0x7e, 0x91, 0x41, 0x59, 0x67, 0x53, 0x86, 0x4d, 0xe5, 0xc8, 0xfe, 0xc5, - 0x0d, 0x17, 0xab, 0x8d, 0x30, 0xff, 0x00, 0xf9, 0x52, 0x2e, 0x87, 0x49, - 0xc2, 0xe1, 0x37, 0x10, 0x9a, 0xd5, 0x78, 0xbe, 0x41, 0x0f, 0x28, 0xbe, - 0x2b, 0x13, 0x69, 0x1f, 0xb2, 0xbc, 0xde, 0x26, 0x41, 0x58, 0xe7, 0x1b, - 0x23, 0x00, 0x37, 0xe9, 0x1d, 0x15, 0x23, 0x0b, 0x52, 0xfb, 0x4b, 0xb7, - 0x8e, 0xa7, 0x19, 0x5b, 0x0d, 0x63, 0x60, 0xaf, 0x55, 0xd5, 0xba, 0xed, - 0xe2, 0xfb, 0x06, 0x8b, 0xd5, 0x45, 0xd3, 0x1e, 0x40, 0x99, 0xba, 0x3a, - 0x2a, 0xa2, 0x54, 0x2a, 0x28, 0x6b, 0x7c, 0xe6, 0x4c, 0x61, 0xf6, 0x2c, - 0x3c, 0x3c, 0xda, 0xc4, 0x28, 0xf8, 0x1d, 0x99, 0x6e, 0xc3, 0x10, 0x25, - 0x23, 0xe5, 0x75, 0x57, 0x6e, 0x70, 0xff, + 0x30, 0x81, 0xdc, 0x02, 0x01, 0x01, 0x04, 0x42, 0x00, 0x13, 0x96, 0x0c, + 0x56, 0xec, 0x80, 0x5d, 0x78, 0x63, 0x67, 0x4c, 0xbd, 0xdc, 0xef, 0x69, + 0xc8, 0x74, 0xd6, 0xbe, 0x94, 0xb4, 0x36, 0x2f, 0xe5, 0x7b, 0x67, 0x1e, + 0x09, 0x74, 0xc4, 0x2b, 0xfd, 0x5a, 0xd7, 0xca, 0xec, 0xb7, 0x8e, 0xb1, + 0x09, 0xb8, 0xe1, 0xcf, 0x57, 0xd7, 0xe3, 0x6a, 0x57, 0xef, 0x84, 0xd7, + 0xf7, 0x4d, 0xaa, 0xf4, 0xd3, 0x53, 0x78, 0x1c, 0x95, 0xf7, 0x63, 0x1f, + 0xb1, 0x98, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x23, 0xa1, + 0x81, 0x89, 0x03, 0x81, 0x86, 0x00, 0x04, 0x01, 0x20, 0xa9, 0xc9, 0x35, + 0x18, 0x71, 0x4b, 0x54, 0xb0, 0xd7, 0x2f, 0xcc, 0xdd, 0x7d, 0xec, 0x25, + 0x04, 0xa7, 0x2e, 0xda, 0x76, 0x8f, 0xb3, 0x77, 0xd6, 0xa5, 0xf8, 0x9e, + 0xea, 0x10, 0x58, 0xc4, 0x2c, 0xdb, 0xae, 0x78, 0xc3, 0x79, 0x04, 0x91, + 0xb4, 0x35, 0xa5, 0x26, 0xa5, 0x93, 0x2b, 0xda, 0x7a, 0xb1, 0xcf, 0x2f, + 0xc9, 0x66, 0xc7, 0xad, 0x89, 0x22, 0x49, 0xc6, 0x95, 0xcd, 0x66, 0xea, + 0x36, 0x01, 0xc5, 0x06, 0x75, 0xb0, 0xc7, 0x27, 0xa7, 0xa7, 0x89, 0xdc, + 0x97, 0x53, 0xa3, 0x74, 0xf8, 0xb7, 0xa7, 0xba, 0x25, 0x0d, 0x45, 0xa7, + 0x82, 0x5d, 0x8a, 0xb9, 0x3e, 0x43, 0x22, 0x34, 0xdf, 0x49, 0x23, 0x06, + 0xc3, 0xa5, 0x55, 0x45, 0xef, 0xdf, 0xaf, 0x68, 0x70, 0x69, 0x4f, 0x65, + 0x0a, 0xfb, 0xe8, 0xa8, 0xd9, 0xd1, 0x4c, 0x8b, 0x13, 0x7d, 0x43, 0xc5, + 0x8a, 0x87, 0x3d, 0x93, 0x5a, 0x66, 0xd5, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_bp256r1 */ const unsigned char test_ec_bp256r1[] = { - 0x30, 0x78, 0x02, 0x01, 0x01, 0x04, 0x20, 0x53, 0xd7, 0x10, 0x63, 0x7f, - 0x58, 0x46, 0x73, 0xcc, 0x4c, 0x8f, 0xdb, 0x43, 0xc5, 0xc5, 0x17, 0x9e, - 0x07, 0xe4, 0x87, 0xc6, 0x80, 0xd5, 0x9e, 0x5e, 0xc8, 0x38, 0x70, 0xc2, - 0x4c, 0xb4, 0xf7, 0xa0, 0x0b, 0x06, 0x09, 0x2b, 0x24, 0x03, 0x03, 0x02, - 0x08, 0x01, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x49, 0xcd, - 0x94, 0xf2, 0x2b, 0x12, 0xff, 0x6e, 0xdf, 0x5f, 0x1a, 0xab, 0xf1, 0x49, - 0xaa, 0x46, 0x1d, 0x18, 0xb5, 0xa1, 0x4e, 0xd3, 0x88, 0x62, 0x01, 0x42, - 0x9b, 0x9e, 0xa0, 0xc1, 0x38, 0x24, 0x3f, 0x64, 0x8c, 0xf6, 0x65, 0xd7, - 0x7c, 0x4a, 0xad, 0x86, 0xe4, 0x2f, 0xf8, 0x20, 0x21, 0xb7, 0x7b, 0x50, - 0x9e, 0xf6, 0xa2, 0x44, 0x41, 0x63, 0xae, 0xd9, 0xd3, 0xaf, 0x35, 0x97, - 0xc7, 0x02, + 0x30, 0x78, 0x02, 0x01, 0x01, 0x04, 0x20, 0x4c, 0xb1, 0x0d, 0x0f, 0x90, + 0xe3, 0xae, 0x71, 0x43, 0x7a, 0xc8, 0x3a, 0x6d, 0x6f, 0x51, 0x35, 0x19, + 0xa4, 0x42, 0xe2, 0x47, 0x61, 0x4d, 0xfe, 0x1f, 0xe8, 0xf9, 0x61, 0x56, + 0x88, 0x87, 0x82, 0xa0, 0x0b, 0x06, 0x09, 0x2b, 0x24, 0x03, 0x03, 0x02, + 0x08, 0x01, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x04, 0x7e, + 0xaa, 0x53, 0x65, 0x4c, 0x1b, 0x46, 0x7c, 0x10, 0x89, 0x58, 0xb8, 0xd8, + 0xd7, 0xaa, 0x09, 0x4f, 0xe4, 0x65, 0xc8, 0x03, 0xa0, 0x6f, 0x1a, 0xf0, + 0x4e, 0x95, 0xa4, 0xe0, 0x6c, 0xaf, 0x82, 0x8f, 0x2b, 0xa7, 0x32, 0xca, + 0x77, 0x7c, 0x60, 0xed, 0xc1, 0x02, 0x33, 0x35, 0xec, 0x0f, 0x7b, 0x92, + 0x0b, 0xfa, 0x8e, 0x4f, 0x25, 0xd4, 0x6d, 0xd9, 0x5c, 0xa9, 0x65, 0x22, + 0x3d, 0x38, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_bp384r1 */ const unsigned char test_ec_bp384r1[] = { - 0x30, 0x81, 0xa8, 0x02, 0x01, 0x01, 0x04, 0x30, 0x4a, 0x28, 0x9c, 0xc2, - 0xf0, 0xfd, 0x7c, 0xdb, 0xe3, 0xd1, 0x03, 0xb9, 0xf1, 0x3c, 0xb5, 0xaa, - 0x8e, 0xb6, 0x4d, 0x93, 0xa3, 0xac, 0x1f, 0x4f, 0x1d, 0x67, 0x41, 0x75, - 0x8d, 0x86, 0xd5, 0xd8, 0x19, 0x9e, 0xb8, 0x6a, 0xf9, 0x29, 0x51, 0x26, - 0xbf, 0x70, 0xfc, 0x3e, 0x6f, 0xcf, 0x1e, 0xcc, 0xa0, 0x0b, 0x06, 0x09, + 0x30, 0x81, 0xa8, 0x02, 0x01, 0x01, 0x04, 0x30, 0x25, 0xe5, 0x2b, 0x86, + 0xfe, 0xd0, 0x4b, 0xac, 0x1e, 0x91, 0x10, 0x8e, 0xe4, 0xb7, 0x22, 0xe5, + 0xa8, 0xcc, 0x9a, 0x3a, 0xe7, 0x54, 0x04, 0x08, 0xda, 0x45, 0x0b, 0xf4, + 0x2f, 0x7a, 0x9b, 0x04, 0xa9, 0xcf, 0x37, 0x1b, 0xf4, 0x6c, 0x98, 0x79, + 0xd6, 0x8e, 0x8c, 0x8e, 0x39, 0x9d, 0x09, 0x31, 0xa0, 0x0b, 0x06, 0x09, 0x2b, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x0b, 0xa1, 0x64, 0x03, - 0x62, 0x00, 0x04, 0x3d, 0x98, 0x26, 0x32, 0x82, 0xbb, 0xc5, 0x0b, 0x3f, - 0x77, 0x76, 0x91, 0xeb, 0x63, 0xab, 0xa8, 0x4f, 0x13, 0x69, 0x6e, 0x73, - 0x0f, 0x86, 0x23, 0x19, 0x0d, 0xec, 0x85, 0xe9, 0xea, 0xe3, 0x30, 0xfd, - 0x53, 0xef, 0xd2, 0xa1, 0x9c, 0x4d, 0x23, 0xf7, 0x26, 0x02, 0x98, 0x01, - 0x99, 0x95, 0x53, 0x87, 0x16, 0x11, 0x09, 0x8c, 0x34, 0xa9, 0x11, 0xcb, - 0x75, 0x1a, 0x72, 0xa8, 0x82, 0xc5, 0xdb, 0x92, 0x17, 0x59, 0xa6, 0xc0, - 0x16, 0x97, 0xf5, 0xba, 0x6c, 0x5b, 0x87, 0x4d, 0xa4, 0xff, 0x59, 0xeb, - 0xe9, 0xf4, 0x3f, 0x78, 0x6e, 0x5e, 0xff, 0x18, 0x36, 0x4e, 0x06, 0x27, - 0x5b, 0x00, 0x6a, + 0x62, 0x00, 0x04, 0x1f, 0xf8, 0x30, 0xb5, 0x6e, 0x08, 0xa2, 0xf8, 0xc1, + 0x19, 0x86, 0xb1, 0x64, 0x9b, 0xd0, 0x68, 0x84, 0x3c, 0x7a, 0x40, 0xe3, + 0x56, 0x95, 0xa1, 0x24, 0x49, 0x7a, 0x36, 0xb8, 0x6a, 0x4d, 0x55, 0x61, + 0x04, 0x82, 0x5b, 0xfd, 0xe0, 0xf1, 0x2c, 0x88, 0x84, 0xed, 0xfb, 0x37, + 0x8a, 0x07, 0xf7, 0x89, 0xfa, 0x95, 0x07, 0x21, 0xbb, 0x66, 0x44, 0x46, + 0x63, 0x80, 0x61, 0x09, 0x06, 0xfd, 0x7e, 0xfd, 0x41, 0xae, 0x86, 0x98, + 0xa9, 0x05, 0xb2, 0x31, 0x49, 0xca, 0xad, 0x14, 0x8b, 0xb5, 0x8c, 0x7c, + 0x2b, 0x16, 0x66, 0x1e, 0x18, 0x7b, 0xa3, 0x52, 0xbc, 0x5d, 0x26, 0x1e, + 0x70, 0xdb, 0x11, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_bp512r1 */ const unsigned char test_ec_bp512r1[] = { - 0x30, 0x81, 0xda, 0x02, 0x01, 0x01, 0x04, 0x40, 0x35, 0x8e, 0xa9, 0xb9, - 0xe1, 0x55, 0xf3, 0x9e, 0x8a, 0x26, 0x8a, 0x9c, 0x29, 0xb1, 0x47, 0xc5, - 0x3e, 0x0e, 0x16, 0x7f, 0x6d, 0x3f, 0x8d, 0x5c, 0x05, 0xe9, 0xc1, 0x52, - 0x76, 0xa2, 0x47, 0x6a, 0x42, 0xd8, 0x30, 0xc2, 0x41, 0x14, 0xf9, 0x05, - 0x3e, 0x9c, 0xfa, 0xa6, 0x49, 0xfe, 0xb4, 0x9d, 0xfb, 0x9c, 0x45, 0x68, - 0x03, 0xb7, 0xae, 0x51, 0xcf, 0x61, 0x41, 0x10, 0x7f, 0xa7, 0xf4, 0x2b, + 0x30, 0x81, 0xda, 0x02, 0x01, 0x01, 0x04, 0x40, 0x92, 0xcd, 0x27, 0xe6, + 0x7a, 0xdc, 0x76, 0x4e, 0xb0, 0x70, 0xb5, 0xae, 0x1e, 0xf2, 0x2a, 0x0e, + 0x8b, 0xc0, 0xa6, 0x42, 0x2e, 0x23, 0xd8, 0xc1, 0x65, 0x3b, 0x45, 0x95, + 0xf2, 0xd0, 0xed, 0xeb, 0x48, 0x8a, 0x9c, 0x32, 0xcf, 0xb0, 0x03, 0x66, + 0x65, 0xf9, 0xed, 0x60, 0x39, 0x06, 0xff, 0x8e, 0x9d, 0xd3, 0x39, 0xa7, + 0x49, 0x7e, 0xf7, 0xd1, 0xe2, 0xb9, 0xb0, 0x6c, 0x48, 0x76, 0x01, 0xb8, 0xa0, 0x0b, 0x06, 0x09, 0x2b, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, - 0x0d, 0xa1, 0x81, 0x85, 0x03, 0x81, 0x82, 0x00, 0x04, 0xa7, 0xbf, 0xf3, - 0xd0, 0xa8, 0x3d, 0xad, 0xfc, 0x50, 0x65, 0xbf, 0x30, 0x61, 0x79, 0x39, - 0x64, 0x36, 0xa9, 0x62, 0x74, 0x97, 0x82, 0xc8, 0xba, 0x1b, 0x6a, 0xaa, - 0x48, 0x0f, 0x7f, 0x56, 0x4c, 0xad, 0x47, 0x13, 0x5a, 0x14, 0x50, 0x60, - 0x54, 0xa8, 0x3e, 0x6d, 0xa7, 0x87, 0xfe, 0x1d, 0x41, 0x2b, 0x0a, 0x7e, - 0xaf, 0x0e, 0xe9, 0xcc, 0xce, 0x44, 0x5f, 0x51, 0x88, 0x22, 0x22, 0xf9, - 0x63, 0x6e, 0xdd, 0x99, 0xbb, 0xd5, 0x14, 0x9b, 0x10, 0x30, 0xa3, 0xe6, - 0x60, 0x9a, 0xa9, 0xa4, 0x42, 0x79, 0xa8, 0xd2, 0x74, 0x7e, 0xf9, 0x02, - 0x71, 0x8d, 0xd6, 0xed, 0x52, 0xb1, 0x1b, 0xdb, 0x0d, 0x6f, 0x49, 0xda, - 0x70, 0x5b, 0xf4, 0x70, 0x98, 0x11, 0xa4, 0xec, 0x4c, 0x9d, 0x67, 0x5f, - 0x3b, 0xea, 0x1c, 0x02, 0x46, 0x89, 0xff, 0xc2, 0x33, 0xa3, 0xa9, 0x57, - 0x36, 0xd8, 0x10, 0x0e, 0xf6, + 0x0d, 0xa1, 0x81, 0x85, 0x03, 0x81, 0x82, 0x00, 0x04, 0x30, 0xb4, 0xb1, + 0x4d, 0xea, 0xed, 0xf9, 0x32, 0xff, 0xe1, 0xdb, 0x96, 0xd7, 0x34, 0xd4, + 0x6b, 0x3e, 0xad, 0xf5, 0xfa, 0x0b, 0xdd, 0x5d, 0x41, 0x56, 0xfd, 0x2d, + 0x8e, 0x2b, 0x84, 0x2f, 0xc0, 0xe4, 0xba, 0xed, 0x53, 0x2c, 0x4c, 0xeb, + 0x14, 0xe3, 0x89, 0x92, 0x66, 0xdc, 0x61, 0x3a, 0xda, 0xb9, 0xb9, 0x8c, + 0xc7, 0x41, 0x74, 0xba, 0x40, 0x54, 0xef, 0xce, 0x38, 0xc9, 0x0a, 0xeb, + 0x70, 0x01, 0x30, 0xf8, 0x18, 0x7e, 0x8c, 0x39, 0x16, 0xfc, 0xef, 0x10, + 0x7f, 0x16, 0xe2, 0x52, 0xba, 0x8f, 0x37, 0xdf, 0x23, 0x72, 0xe2, 0xd9, + 0x90, 0x7a, 0x51, 0xc3, 0x44, 0x8a, 0x6e, 0x92, 0x79, 0x7b, 0x66, 0x22, + 0xa9, 0x7e, 0xef, 0xef, 0x8d, 0x10, 0x23, 0x95, 0x97, 0xd7, 0x28, 0x28, + 0x4c, 0x89, 0xcb, 0x14, 0xe2, 0x89, 0x09, 0xe8, 0x05, 0x07, 0x0f, 0x6a, + 0x3f, 0xad, 0x84, 0xb3, 0x0b, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_curve25519 */ const unsigned char test_ec_curve25519[] = { 0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x6e, - 0x04, 0x22, 0x04, 0x20, 0xd0, 0x40, 0x4f, 0x5d, 0xf9, 0x7e, 0x1c, 0x24, - 0xd6, 0x68, 0x08, 0x29, 0x5b, 0xfd, 0x49, 0xaa, 0xd0, 0x6f, 0x8e, 0x44, - 0x13, 0x52, 0x84, 0x07, 0x79, 0x8a, 0xda, 0x69, 0xa2, 0xa0, 0xf6, 0x52, + 0x04, 0x22, 0x04, 0x20, 0xf0, 0x29, 0x67, 0x44, 0x79, 0x87, 0xc0, 0x63, + 0xe1, 0x20, 0xd5, 0x6f, 0x45, 0xc5, 0x94, 0x3a, 0xd1, 0x75, 0x2a, 0x77, + 0xa1, 0x86, 0x98, 0x65, 0xdd, 0xab, 0x63, 0x88, 0xe1, 0x2a, 0x66, 0x6e, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_secp192k1 */ const unsigned char test_ec_secp192k1[] = { - 0x30, 0x5c, 0x02, 0x01, 0x01, 0x04, 0x18, 0xca, 0xa6, 0x5e, 0x57, 0x3d, - 0xb3, 0x0f, 0x12, 0x29, 0x4f, 0x5e, 0xc8, 0xb3, 0x3f, 0x6a, 0x1a, 0x8d, - 0x32, 0xb9, 0x9d, 0xbe, 0x0f, 0x7b, 0x95, 0xa0, 0x07, 0x06, 0x05, 0x2b, - 0x81, 0x04, 0x00, 0x1f, 0xa1, 0x34, 0x03, 0x32, 0x00, 0x04, 0x31, 0x24, - 0xcf, 0x44, 0xb3, 0x62, 0x5a, 0x1d, 0xb6, 0xfd, 0xf7, 0xee, 0x5c, 0x65, - 0x8c, 0x43, 0x6b, 0x05, 0x17, 0xe5, 0x12, 0x75, 0xf8, 0xe2, 0xbd, 0xb1, - 0xf2, 0x0e, 0x66, 0xae, 0x39, 0xad, 0xc6, 0x6d, 0xb8, 0x02, 0xb2, 0x72, - 0x4a, 0xd5, 0x37, 0xdc, 0x23, 0x00, 0x28, 0x6e, 0x1b, 0x98, + 0x30, 0x5c, 0x02, 0x01, 0x01, 0x04, 0x18, 0x30, 0xaa, 0xb8, 0xb2, 0x51, + 0x9e, 0xf6, 0x8e, 0xf5, 0xbe, 0x41, 0xbc, 0x2d, 0x2d, 0x1f, 0x96, 0x30, + 0xd8, 0x5f, 0x62, 0x9c, 0xca, 0x51, 0xca, 0xa0, 0x07, 0x06, 0x05, 0x2b, + 0x81, 0x04, 0x00, 0x1f, 0xa1, 0x34, 0x03, 0x32, 0x00, 0x04, 0xf5, 0x88, + 0xa8, 0x31, 0x0c, 0x1f, 0xf2, 0xdf, 0xeb, 0x70, 0x69, 0xd7, 0x8c, 0x42, + 0xe1, 0xaa, 0x20, 0x66, 0x5e, 0x49, 0x74, 0x7f, 0xb5, 0xa5, 0x6b, 0x96, + 0x75, 0xc6, 0xa2, 0xda, 0xf0, 0x5d, 0xa2, 0x8e, 0xbd, 0x54, 0x94, 0xf5, + 0x4d, 0x31, 0x1e, 0x6c, 0x70, 0xa3, 0xd2, 0x29, 0xda, 0x4d, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_secp256k1 */ const unsigned char test_ec_secp256k1[] = { - 0x30, 0x74, 0x02, 0x01, 0x01, 0x04, 0x20, 0x3a, 0x18, 0xe9, 0x5c, 0x8e, - 0xde, 0xb5, 0x8e, 0x1b, 0xd5, 0x36, 0xa6, 0x01, 0xb6, 0x3d, 0x4c, 0xe1, - 0x86, 0x65, 0x3b, 0x77, 0xb5, 0xfd, 0x3c, 0xc8, 0x6f, 0x15, 0x16, 0x0b, - 0x16, 0x88, 0x80, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x0a, - 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x0f, 0x63, 0x3a, 0x58, 0xa9, 0xc1, - 0xbb, 0x56, 0x12, 0xe1, 0x3d, 0xff, 0x91, 0x27, 0x06, 0xca, 0x4e, 0x46, - 0xbb, 0xdb, 0x9b, 0xb8, 0x62, 0xec, 0xd9, 0x39, 0xa8, 0x02, 0x08, 0x1c, - 0x1c, 0xb8, 0x0d, 0xe1, 0x28, 0xeb, 0x06, 0xca, 0xb6, 0x50, 0x5e, 0x99, - 0xe0, 0x24, 0x20, 0xef, 0x72, 0xe6, 0x5d, 0x27, 0x96, 0x25, 0x7f, 0x6e, - 0xf6, 0x65, 0x43, 0xe1, 0xaf, 0x6c, 0x71, 0x86, 0x29, 0xb8, + 0x30, 0x74, 0x02, 0x01, 0x01, 0x04, 0x20, 0xda, 0x1f, 0xf8, 0xe8, 0xb9, + 0x1f, 0x45, 0xd8, 0xc3, 0xfe, 0x3e, 0x5d, 0x50, 0x56, 0xc3, 0xe8, 0xad, + 0x87, 0xb0, 0x91, 0x71, 0xcd, 0xca, 0x80, 0xa7, 0xdf, 0x49, 0xd6, 0xa5, + 0xc6, 0x9f, 0x97, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x0a, + 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0xef, 0x76, 0x2f, 0x4f, 0x6a, 0x7d, + 0x0a, 0xec, 0xef, 0x78, 0x0b, 0xa1, 0xba, 0x57, 0x0f, 0x41, 0x76, 0x76, + 0xf1, 0x4f, 0x7e, 0x91, 0x8b, 0x18, 0xba, 0xab, 0xd9, 0xd7, 0xcc, 0x2c, + 0xe2, 0x1e, 0x92, 0x6d, 0xfd, 0x53, 0xcc, 0xa4, 0x62, 0xab, 0xe4, 0xc0, + 0xaf, 0xaf, 0xc9, 0xd0, 0x10, 0x1a, 0x89, 0x86, 0x6d, 0x6f, 0x24, 0x71, + 0xa3, 0xe2, 0x70, 0xe2, 0x02, 0xe5, 0x96, 0x48, 0xd5, 0x03, }; -/* END FILE */ -/* This macro was generated from tests/scripts/generate_test_keys.py */ -/* BEGIN FILE string macro test_ec_curve448 */ const unsigned char test_ec_curve448[] = { 0x30, 0x46, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x6f, - 0x04, 0x3a, 0x04, 0x38, 0x74, 0xe8, 0x0c, 0xd1, 0xf3, 0x1d, 0x38, 0xae, - 0x1d, 0x57, 0x6e, 0xfd, 0x8a, 0x5f, 0xc2, 0xf0, 0x48, 0x95, 0x41, 0xc9, - 0x75, 0x31, 0x6f, 0x80, 0xea, 0xc2, 0xdf, 0x0f, 0x86, 0xc6, 0xda, 0x0a, - 0x6f, 0x6e, 0xeb, 0x45, 0xc0, 0x03, 0xbf, 0x13, 0xb3, 0x43, 0xa1, 0xb2, - 0x57, 0x27, 0xd4, 0xc7, 0xc7, 0x7a, 0xf7, 0x29, 0xa7, 0x78, 0xe1, 0xe9, + 0x04, 0x3a, 0x04, 0x38, 0xe4, 0xd9, 0x04, 0xba, 0x83, 0x93, 0xa5, 0x69, + 0x14, 0x17, 0xab, 0x9d, 0xfd, 0xc9, 0xf2, 0x0d, 0x57, 0x6f, 0xe7, 0x1a, + 0xe6, 0xac, 0xb7, 0x76, 0xdc, 0xe2, 0x76, 0x68, 0x34, 0xd9, 0x45, 0x11, + 0xff, 0x73, 0x24, 0x03, 0xe1, 0x49, 0x6a, 0x65, 0x1d, 0x89, 0xd3, 0x2f, + 0xbc, 0xfe, 0x49, 0xa8, 0xc1, 0xba, 0xbf, 0x46, 0x4b, 0x4c, 0x25, 0xef, }; -/* END FILE */ From b9a3f79a2a876d24c61de2504cef38d83866c3c5 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Wed, 3 Apr 2024 13:50:26 +0200 Subject: [PATCH 14/32] test_suite_pk: minor code fixes and comments improvements Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index fc5418502e..5e9e4d6d2f 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -232,9 +232,11 @@ static int get_predefined_key_data(int curve_or_keybits, * * This is a fake implementation of key generation because instead of generating * a new key every time, we use predefined ones to speed up testing. - * This function assumes that the PK context has already been setup - * (mbedtls_pk_setup() has been called on the PK context ) so that it - * can determine the key type to be loaded from the PK context itself. + * + * These keys are taken from "test/src/test_keys.h" which is automatically + * generated using "tests/scripts/generate_test_keys.py". Therefore if new + * EC curves or RSA key bits need to be tested, please update "test_keys.h" + * using this script. * * \param pk The PK object to fill. It must have been initialized * (mbedtls_pk_init()), but not setup (mbedtls_pk_setup()). @@ -309,7 +311,7 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, TEST_EQUAL(get_predefined_key_data(grp_id, &key_data, &key_data_size), 0); unsigned char *p = (unsigned char *) key_data; - unsigned char *end = (unsigned char *) key_data + key_data_size; + const unsigned char *end = key_data + key_data_size; size_t len; int version; @@ -1849,9 +1851,9 @@ void pk_psa_sign(int psa_type, int bits, int rsa_padding) TEST_EQUAL(pk_genkey(&pk, MBEDTLS_PK_RSA, bits), 0); TEST_EQUAL(mbedtls_rsa_set_padding(mbedtls_pk_rsa(pk), rsa_padding, MBEDTLS_MD_NONE), 0); } -#else /* MBEDTLS_RSA_C && MBEDTLS_PK_PARSE_C */ +#else /* MBEDTLS_RSA_C */ (void) rsa_padding; -#endif /* MBEDTLS_RSA_C && MBEDTLS_GENPRIME */ +#endif /* MBEDTLS_RSA_C */ #if defined(MBEDTLS_PK_CAN_ECDSA_SIGN) if (PSA_KEY_TYPE_IS_ECC_KEY_PAIR(psa_type)) { ecp_grp_id = mbedtls_ecc_group_from_psa(psa_type, bits); From 7affeef725d4b924950f108e2aea4c9bdd6546f3 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 9 Apr 2024 12:28:39 +0200 Subject: [PATCH 15/32] generate_test_keys: use keys from asymmetric_key_data.py asymmetric_key_data.py already provides EC/RSA key pair values that are suitable for generate_test_keys.py. So instead of re-generating the keys using gen_key program, we use those keys. This commit also: - extends asymmetric_key_data.py to introduce RSA bit sizes that are used in test_suite_pk but were missing from asymmetric_key_data.py. - updates test_keys.h with new keys. Signed-off-by: Valerio Setti --- scripts/mbedtls_dev/asymmetric_key_data.py | 80 ++ tests/scripts/check-python-files.sh | 1 + tests/scripts/generate_test_keys.py | 115 +- tests/src/test_keys.h | 1319 ++++++++++---------- tests/suites/test_suite_pk.function | 172 +-- 5 files changed, 905 insertions(+), 782 deletions(-) diff --git a/scripts/mbedtls_dev/asymmetric_key_data.py b/scripts/mbedtls_dev/asymmetric_key_data.py index 8ca6758782..4287be2d49 100644 --- a/scripts/mbedtls_dev/asymmetric_key_data.py +++ b/scripts/mbedtls_dev/asymmetric_key_data.py @@ -136,6 +136,54 @@ ASYMMETRIC_KEY_DATA = construct_asymmetric_key_data({ 308189 02818100af057d396ee84fb75fdbb5c2b13c7fe5a654aa8aa2470b541ee1feb0b12d25c79711531249e1129628042dbbb6c120d1443524ef4c0e6e1d8956eeb2077af12349ddeee54483bc06c2c61948cd02b202e796aebd94d3a7cbf859c2c1819c324cb82b9cd34ede263a2abffe4733f077869e8660f7d6834da53d690ef7985f6bc3 0203010001 +"""), + 1026: (""" +3082025e + 020100 + 02818102d09661fc74224ba7be7907abef4f5e8bcc264a802c978f7eaa5855ada05436d75db768d20f68595dbcc3d725b138e80b247e44a4163a0542fab612acbbde45f2e93894aa253bddef6a7becdc9cc29a99bacf48dc6e38db7a33e9ac924c520fc6be7d6e5646c1d67fb8b2b97ac60beecc3bb8e75bed8315aa3fe46f748a66d6ef + 0203010001 + 0281806a4a346beba97f655fe834647d2944f5f40815e7302caf02ed179893c2d989395d5e877cacbf24a77a079d3db71580ccdbf63023d00f80e52f5c1a0716b323b7bfcbdc8a1781c44c4153e3da228d17b2dc78eb1f44cff60fe1150808a6e38ba2470aee2e948a6898ddadea56d9470927aca8d94a0338c11a8e95715b5f94e011 + 024101f5418534c36236fc9fd38934d7c06dfed3829151ccab56b6330c641f7796a71924cf8119ca26e186ecd3068d6607a05260db4857651980436891adde9eb92ab7 + 02410170042fbdbaba1e102b7f7f1dc9d940cfdcd85dd0ea65f543c6432e9c5480724bb49b1e5f80ca2b9f84cd6644bfb2e3d0968090b89f534dc2951e606db909dd89 + 0241014b6c1aeb1c14a04ec04e5975fb015cb914984c054dd22bef24299939c514733f88bb3a9d16b04685b3a883b8923190ab672715d9d31add57b4983de1e8087e59 + 02410117bf76f308b0560e00a2c864427dcd50b5161c2aa523a00f46f4e6c79b4c90958fd2a282028aac227477169888085a38c34f33b3c41934f1071db23b75ff53d1 + 02410120a428b4e0c4a6f202920fd49cc9886e6b6719d40a3ad0604f5d5efd5ef6973a573ab324f38ecb8e669a69341597081e240b6ae4e2714887dd78dadaeb0b9216 +""", """ +308189 + 02818102d09661fc74224ba7be7907abef4f5e8bcc264a802c978f7eaa5855ada05436d75db768d20f68595dbcc3d725b138e80b247e44a4163a0542fab612acbbde45f2e93894aa253bddef6a7becdc9cc29a99bacf48dc6e38db7a33e9ac924c520fc6be7d6e5646c1d67fb8b2b97ac60beecc3bb8e75bed8315aa3fe46f748a66d6ef + 0203010001 +"""), + 1028: (""" +3082025e + 020100 + 0281810e62a76f0e0b59683a7ebf7cbfd37b1d1781d8f1b900604b507f0f04c72a3d340d067bcd53bea3caff4e4ae694f0b6d8f591a4167fbf7f372ab57e83a69a3f26f447bcf582bc9621a30a3b44d6b43e986d1a867b07489e4f9bfcadaa82a2782dc2729a631fb1fb9ffb794b4e53c76239e04d4a8f80352588db29462dde18237cf5 + 0203010001 + 02818101cfa0422e3bb60c15ef2e96db4499e789f5d634ea64567b2cdd6e2bdd121f85edccdee9b4ed178c5f33816101a7c371518b3e23f9fdc71b90242cd310b6b31428b0b64eb9596be0cc044cc85048982f90b706e66ccdd39ad5a1a7b64cf034eac0c35d7ace93f2bcd3ce243bd8f83b46f509ca2f805063002af2bb2d88b6ee36a9 + 024103f0886d2977526f3f3f6a075600232ce3008517276dd3721dee08fd6c999fc976b9e8dd2bc143385fa4b48735ce81c66b501d7129ee7860cfbef23b5da91e6c2d + 024103a6c8734aace59d5f386f97de450f8a12d63ae6ac15d336e010c9fcf03a32f0611881ac6cd8b3f989925c0f025af26cf26aebd7d9b04eb503048dca2f503c28e9 + 0241019b300451c3b47866f113e9a9c6a490c87c8dc6c2eca42902caea1f6907b97e0a4a02072aafc1185ae66c34345bddcd683361cda1aaf8a98009f9f8fa56d97081 + 02401bcca849173d38e1e50ec48872ab54a2dcc621a80a7a1e8ea951287988718d5e85d90d64ab4926e9a575a168a385c421ad765813fc3f4af8cd00de7b6bba6e49 + 0241036dcf69f6e548c8acfb536fb6cd186f8b8f20d313361d0447c1b5e380f4113e578b31e867dda47d44ad3761e793f725031b8d379f389de277a9a0137651df548a +""", """ +308189 + 0281810e62a76f0e0b59683a7ebf7cbfd37b1d1781d8f1b900604b507f0f04c72a3d340d067bcd53bea3caff4e4ae694f0b6d8f591a4167fbf7f372ab57e83a69a3f26f447bcf582bc9621a30a3b44d6b43e986d1a867b07489e4f9bfcadaa82a2782dc2729a631fb1fb9ffb794b4e53c76239e04d4a8f80352588db29462dde18237cf5 + 0203010001 +"""), + 1030: (""" +3082025f + 020100 + 0281812b7cd197f5796d1f8e576b2b37723fd9210814ef1c1995f9899d50058f379d239c66878e922f34c6ae3672c8598fcd5d47b764d2ec156e134d03cf6a94d38d2ea8bc76dbbc60c4b974219090eaf287497d7dcf7f119cfa867496f7e91c12b5d552e1d1461a80dbe9a59db3b016c6c0141c3b2a0e226089b855cb88ef656408bd89 + 0203010001 + 0281810210d5ff531cacb22f8cf7dd1fd9fb0376f3647f2e9ab3df9c89b9ad3c98e68b89adeb29901dd2f2cf2ac1f817726278830ec8a8d0fdd19d496ec6bc683671174786b7d6a8e822fa71d65ad35abbdf0e6e55ff2c1821b62bc630192160e5c9b3dcafc65ae6b2a088fbc5591da58a45dd7a30960f7d3def75b80cdf73247360e8fb + 0241072e371a3ba861e78e3eb9313065faab0a97216e9544bfc2d5b403844b43273705755a85aa0baf7114770cfeca20bca17ac19bc4cbba106a33b3dddca0fb535f33 + 0241060e6af37ab4ea11f52b9344e7160eb2a53f1075e1229a7f10a301de3359f53e981ea0e17df0fb380f089e5c37dd40daa29eefd205f5c87b38f8fef636b57ba053 + 0241023a5dd09ef83540b30b554d24f64f9c28d212068cfc62ffe26d53b605e05557a632ee9e90cfc56531f36aadd82be63bb8aa405a04d8bbe5281bc45883fed7b4af + 0241041de6dbad4caf5417a9504965201c4b99827de8f369f7456a84b3ef5c4ec9238c7a3d782a8915ebec643a698b5bee0af0c243592bce0042aadeaf49a4b4c6dd9b + 024105d32dee952b503b536fcecf19ec08236a9cd945c49551bf99f15b674fc21aa199f4c4211f0f0007c417c1fb4155326a2142fca454bbd38d6dbc6caa7ac335a17c +""", """ +308189 + 0281812b7cd197f5796d1f8e576b2b37723fd9210814ef1c1995f9899d50058f379d239c66878e922f34c6ae3672c8598fcd5d47b764d2ec156e134d03cf6a94d38d2ea8bc76dbbc60c4b974219090eaf287497d7dcf7f119cfa867496f7e91c12b5d552e1d1461a80dbe9a59db3b016c6c0141c3b2a0e226089b855cb88ef656408bd89 + 0203010001 """), 1536: (""" 3082037b @@ -152,6 +200,38 @@ ASYMMETRIC_KEY_DATA = construct_asymmetric_key_data({ 3081c9 0281c100c870feb6ca6b1d2bd9f2dd99e20f1fe2d7e5192de662229dbe162bd1ba66336a7182903ca0b72796cd441c83d24bcdc3e9a2f5e4399c8a043f1c3ddf04754a66d4cfe7b3671a37dd31a9b4c13bfe06ee90f9d94ddaa06de67a52ac863e68f756736ceb014405a6160579640f831dddccc34ad0b05070e3f9954a58d1815813e1b83bcadba814789c87f1ef2ba5d738b793ec456a67360eea1b5faf1c7cc7bf24f3b2a9d0f8958b1096e0f0c335f8888d0c63a51c3c0337214fa3f5efdf6dcc35 0203010001 +"""), + 2048: (""" +308204a3 + 020100 + 0282010100f7bb6b8eab40491cd64455ec04d4ed8db5051a9738fc7af73ff3b097511cce40aaf76537b1353504427986b7b2b53a964a6937b558ec0d1dea274af2b8fff2f094c243fa577266a79db0c26ffe30416d23ef05dd5fecab413ebbb4f8526ae720a94584226b37d92ef463fc736cb38e530e7488d9162f5726807bc543138a2d258adb4d680221c2532381ccfa81bc89bc3d7b84039c2df41ce3ec8db91c2380e781ba3aa9e23b74ed9973d4908efca47aa8d9b7b0a4423297a404427c3f3cd6e0782e4553880f06ba39a64f4a7b0eef921a6050a207cefadcf07394a3e18ea915dc8497e7ae61fc3162f62f5065a692af077266f7360c2076cebeaf14cb22c1ed + 0203010001 + 0282010000b8962dce604bc62e7678f48ca80cfff456ad36e2f6d329cc911a42ba7cf5b9b8f5aae1005e4a06f6e591279038d8508f2b62badfa5223da3cc94fa8360d5556f6d6852be75ea08135cac1834da719a4e7837e166d1d2c6c816b64661c10766b02f705cc4489f947428255835a909214341c21335ae12181dd81e611d59b1db70667bebd7e92b71e1d388318d3ec14d616f72c231f6727a183e6818285bd65f6572cadc9012248821b2d0ae6cedd30ca440d4d34cd77e2cf6b40ed2c7d856b30d474733fce0fb695c3e6530c079aed955e4073055f2655d4b671e291fde400f2f06d0b33f87d261e0ad3dae48a913841b34cfed03790fcaee00de2e90fb9621 + 02818100fcbe89cd1aa319e49ef4f72149bf06da57dcc64d3de605e9ff3e76fc66f4b1e2878245ffd71990511b17e97f33818889a8c21b5527fd181327affe88f9bba670c4e6f1e6309bd0323074e4cbcf23dce3c19b8d5495f56a93059ba7414f28ed1ec906ad18c63de1148abcfe9be7986000f425e580b70e43e48e24fa9d51aaae4d + 02818100faec5a7bed2e53cfca1e167db4641db5a00fe2c328125423d594789f3ec072c623e7afbdee0089fd26307651f6d3611a88af28c34585d5cb713a650c35933f58944db9bd15ba9fc28b07e6705b7b3ef1ccb48d21a53569c8b84c444b61ea5c6e67b54f0afd852ffb8c92a111fab8677263eeb80cf1a3403b4a9a209776947221 + 0281802ff99afeabc7b9ea83a1cc272d706d4494d8fb6b3e0ca3a2bf28843d74ed8db68a3258472ff5524792f4ff057e296059810717591ab61813cabcc57c0aab6bf48bebaa8f1f3af45212909dbd721c449996ee87ed3e69cf49090f7ab812e699dbf61ca64ec592895ef4d6db1d8ce08798a6bf6ac8fbf6613cc91e8bd3c0e4bd21 + 02818100b29b34590bddb308afecb4c3ab78abf1114add755e7b956aa0677b6896a933c937db7dabaad2b565fd1df7caa5ef9629e5eb100fd6d7c9f372d846fee6cfb6025e25e934df57a4ca3c5e5637d9d6235ac80428852f6c92acae0a937e38e731fde0521d3e4c70d653ae9edc89c8b623e4379fbf606f4b6db8068528f7c70f2921 + 0281800ed47ae05b275a23a7dfe3ffb727e3a268e626a59d401d2d846de26954ff54fc9ed93a9af33fac2c967a18e0f86145083e39923454bc10da5f4937e836b99851956bffb301ce9e06789786693213fcde6d5f2933d52bb29dc340ea011257788d3c5775eb6569230aafbf08752d40a8419de71b01d4927e27c1079caada0568b1 + """, """ +3081010a + 0282010100f7bb6b8eab40491cd64455ec04d4ed8db5051a9738fc7af73ff3b097511cce40aaf76537b1353504427986b7b2b53a964a6937b558ec0d1dea274af2b8fff2f094c243fa577266a79db0c26ffe30416d23ef05dd5fecab413ebbb4f8526ae720a94584226b37d92ef463fc736cb38e530e7488d9162f5726807bc543138a2d258adb4d680221c2532381ccfa81bc89bc3d7b84039c2df41ce3ec8db91c2380e781ba3aa9e23b74ed9973d4908efca47aa8d9b7b0a4423297a404427c3f3cd6e0782e4553880f06ba39a64f4a7b0eef921a6050a207cefadcf07394a3e18ea915dc8497e7ae61fc3162f62f5065a692af077266f7360c2076cebeaf14cb22c1ed + 0203010001 +"""), + 4096: (""" +30820929 + 020100 + 0282020100cc8725f6b38d5d01aeeb07d36e03de4d31a0261ce74fe11a895ecfd13d168aee932af135ffbb849877273897081f3f7593c14ae82bc266c10544f726ae1ccf133d8a4018d380dfa25251c011107b7513a943346aa0e0dec11d8d7fa25644653c118daabce6d41f066f6621768801478055780e91b68ea3c95856d172a89032b39c824e8b7dc1a3f8aee4f6b368baa3cd68f50d52680117e9b913d7f8c852a0d1008e8b87a5c97e37afc11a080550557b8b4dcbd8e192ed3366d83a09d27c77e150f66855b5dcfdb2df151bd7f444250eaf6fe3f236826c81fa848101bfaad535ffb522d6ff97c9dd1e43b82cce2921d153c15450c4724ffd3efdca578e013650a03a5cf501fc58600fb5c860c0ef0cfe0ac0712d441313dca41a4d7d411e6c83b2151749d28be4692f62373db07e4a79051c5682ec20d491c4cfc7bc140f35fa15e5a1fa756d65b8ef93addf4c47c4a35b184f22a1ef089948f946f6faeb6470f26746e658cf9b4177417842e6d373558089aff721b930e9ec61b4f6a02c052c6924d39a5bbb15ed1106c4010f4dd69c79d042c8b31661b1ee486bc69db5f2f07a50d85b20699d601315625bb869629c7f4c5d48b211d097f438acec95973a38d421090af0f13484e4e94b8cb5efc18507f4b931df39987ffb2830293e4da381aaf70b3292952ef934e2b40fdebba3d9701b76e1be548274b2602d888537482d + 0203010001 + 028202001a943e9c0089f0aa0116048a96abb486321a86916f82fb352460789fcfb1400550853e5afedc9ad6e877259cc4feb093c24b968534f89abb5f48aed8ad3c4bb1cba7cd7c1c724d3dae36770010b5068a334f2b3ee720c9f9ed320001f3f587f5662f939e605df519343d60c0635ccd32b188bc55f5d434173c9e6db2199341af833990e50246f99cddf79dd2c35babe14c103a76b8d2d98d73528f98c249b0a1f09155b31f599fc833542422a2342623bbbef4ac7ee605e2cdecf01fea25683bd4f66ca924ccef00418adff730c4714f66ffa2af0da3e5df7f539c634289fc12bc24093ec8f0ec180af0907cec1ebec911fa180fb5f3c80ed852896ad6e6b3eccb44de62193d52118cab2b171071d5fdaa7c4288fc7766d57774f4be46151bb90ace7c10c215f62ed26e52e6122436f532bd54fc08272adb216a2db433d5699c40ad58faa2660898ffccfc98002f8bb0361b4cf9ed6e93c1ca96d34a1ef40460f85918cfde4a8193b51ecea4b3903cae924a8fad5f8308954c9f19a7597bf0a75126a557e49f8bbd31fc4e8556f230640bf36204c6cf3d56dca5a41d860307ba6705a698681100a327f91739c486c470ba71d03d285314b0d7d04008e03f2a2b85e7c243d6fd9b97a02168c069ec572d3f0ca15ebcb1739f3a0b3c147a88e0b74f45a007ae927d6f822bf50b87b1e93fe7d9180bc6bc12bde6c8070d10c97331 + 0282010100f50ebceac9d3c64482a8c265d6365461aa4a31a6a7633a24c8e34794ecdfcab1d6b52fb6a5f38055cc32d6a61b889550de27b3d0bd68b6d4fda041598ab98887143988576806b1c48720794902952ebe1bf0def65a0e6f94067056e6864fa2882e3a16f246282093d037639078182dd0a6eb21d3bad0637901a268b14c632c9d0b1690ed88abdde03f528247aa2e41557d0865ad34e53ff53ae0e5dea195d93fe65c25871f6f23adf34b6e960c2978f2b7475dafce6cbb26a53934d26c193d67f32de91035eeb89022beb7d5df784ac20ca6ab91bf6b775b6c9416f605b4841736cbfbd22ad98ab2e8428457e0793f5af40e550b48765d59e6e1b4a4a1f571f1 + 0282010100d5a91d4d44bb9b73c1fe0248925e2c0ec1de51390bd8a73b453da51ae29325ae7657089fd4ee4a2fd96e345b57f672d7d484fde99189ab0a6365bf2b38680d6bb947f4b217be660323c26b86d643ae686d82e36ec00cfd038942443caa04a0f91e68ec717935b45e790311be56440d7176949594688ed1dd5c9103c57c158d05e4c37b98d81898030744a64f6ebdbf750aab79757e34dac422163ea7c0f42b97710c861978b24100385aad727e5f3836a74ea4bf1d36ef2a5edf9c9e8f996ef3191348450ea9f1d4a63db29cb06f63e5badb18e4d40f5112b658d1cc23cb65388aca03d141a6bc5fbd9429fe33d340d3e85bfa848908d60b562f894e8a337dfd + 0282010100c4950f0d95dc51d791ad094d223b3113abc49af1e2a361f83242c8a07a28c8744315d3f1c44c82edd0c21398eacb75648ae1f48885f92379d6ffa08cd11126a99d9acd79b8946e3486659185f511718ec5e1432b02714426cdc77e9eacade36735161a643dcd60dcd2922c47af5f4e196c5d8124555f67fca148048dfe062cbaca334f0d8daeb96d73be9f8e17c1c55d6bd0b9a7e99fe1dfba5cc16a07dbaa8c6d220c64c9dda114a0f029052b3a75b0d73fe3b2ed7821e5cd7307a1a95fd1f7ba8760c8454b7c38fbf65c88b01cd273ba2c55c3b477e426ae025a2cffc4a095f2ba4e0779a24b765b85489f2a0e79b95fc0c38e2a91f12ef65ca749ce369431 + 028201002aa48e0c95e33bab66d4637048863314deec9819629be30499552c56a951e4fb64f309ed9c79d2a4aa28ac9a6e7be97fda1290fac4e94d11cdb4c8eabf5f450e72f4418a29e2fe493221e3840dcf8447a353b440ae63e93b83718e5ced31ef4ec91af7d5cdf3420478f27be019278be7515b665f305f10d3b55ddbfad64116dc4e4415aef3b234e4a5d6b5bab4c77a26c9f25f536bd4f0b4a478fc184f126c80d53742ac62c270e6b258a6b56b3365ecc28797a9ed12c1b91b265603ef751807bcc1747313f22729e1e3fe79f75cc3fb5dc7ccb81efacf9b847945a6109ecf9cf156505cbb55a3d317eb325661d18fe6bb416046837318053b365199334c03a1 + 0282010100ee63706030a4ece9fe3bddcfc49f5a83f37f63ebcb29dbdc999f6ff54b596f115cf1eca09990108a439518e996f689fdde89b2c67edc04bf8e366734c2ae3017ec14e042050e7c656840146ca048394dcebe90dd2195349bbad306569031b2ef6e9171d2ae7797c8844e548394ca3b768d8496e99ef63abb59b0ff7fc70eb53153dd0f59018a275acba701f2c76a15c894f53461fedf65bc25c2c5cec396e556a1a919bc7a056393d50644126dcdef9256642e65a6043cbce9497e192cf2cb33648e117f41dbf01900acb93b0c78ddf31f381f4db3f9ccbbb69093dabf2e89dbbc0cb72f20c005a2519e3a874146495d7aacf3416a422e560986f22f39456e7f + """, """ +3082020a + 0282020100cc8725f6b38d5d01aeeb07d36e03de4d31a0261ce74fe11a895ecfd13d168aee932af135ffbb849877273897081f3f7593c14ae82bc266c10544f726ae1ccf133d8a4018d380dfa25251c011107b7513a943346aa0e0dec11d8d7fa25644653c118daabce6d41f066f6621768801478055780e91b68ea3c95856d172a89032b39c824e8b7dc1a3f8aee4f6b368baa3cd68f50d52680117e9b913d7f8c852a0d1008e8b87a5c97e37afc11a080550557b8b4dcbd8e192ed3366d83a09d27c77e150f66855b5dcfdb2df151bd7f444250eaf6fe3f236826c81fa848101bfaad535ffb522d6ff97c9dd1e43b82cce2921d153c15450c4724ffd3efdca578e013650a03a5cf501fc58600fb5c860c0ef0cfe0ac0712d441313dca41a4d7d411e6c83b2151749d28be4692f62373db07e4a79051c5682ec20d491c4cfc7bc140f35fa15e5a1fa756d65b8ef93addf4c47c4a35b184f22a1ef089948f946f6faeb6470f26746e658cf9b4177417842e6d373558089aff721b930e9ec61b4f6a02c052c6924d39a5bbb15ed1106c4010f4dd69c79d042c8b31661b1ee486bc69db5f2f07a50d85b20699d601315625bb869629c7f4c5d48b211d097f438acec95973a38d421090af0f13484e4e94b8cb5efc18507f4b931df39987ffb2830293e4da381aaf70b3292952ef934e2b40fdebba3d9701b76e1be548274b2602d888537482d + 0203010001 """), }, }) diff --git a/tests/scripts/check-python-files.sh b/tests/scripts/check-python-files.sh index 51e80792b0..cf1f87ab12 100755 --- a/tests/scripts/check-python-files.sh +++ b/tests/scripts/check-python-files.sh @@ -62,6 +62,7 @@ $PYTHON -m pylint scripts/mbedtls_dev/*.py scripts/*.py tests/scripts/*.py || { echo echo 'Running mypy ...' +export MYPYPATH="../../scripts" $PYTHON -m mypy scripts/*.py tests/scripts/*.py || ret=1 diff --git a/tests/scripts/generate_test_keys.py b/tests/scripts/generate_test_keys.py index 23bc9a19e8..630ab05ac1 100755 --- a/tests/scripts/generate_test_keys.py +++ b/tests/scripts/generate_test_keys.py @@ -8,94 +8,85 @@ generating the required key at run time. This helps speeding up testing.""" import os import sys -import subprocess +# pylint: disable=wrong-import-position +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + "/" +sys.path.append(SCRIPT_DIR + "../../scripts/") +from mbedtls_dev.asymmetric_key_data import ASYMMETRIC_KEY_DATA -KEY_GEN = "./programs/pkey/gen_key" -TMP_DER_FILE = "tmp_key.der" -OUTPUT_HEADER_FILE = "./tests/src/test_keys.h" +OUTPUT_HEADER_FILE = SCRIPT_DIR + "../src/test_keys.h" BYTES_PER_LINE = 12 KEYS = { # RSA keys - 'test_rsa_1024': ['rsa', '1024'], - 'test_rsa_1026': ['rsa', '1026'], - 'test_rsa_1028': ['rsa', '1028'], - 'test_rsa_1030': ['rsa', '1030'], - 'test_rsa_2048': ['rsa', '2048'], - 'test_rsa_4096': ['rsa', '4096'], + 'test_rsa_1024': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1024], + 'test_rsa_1026': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1026], + 'test_rsa_1028': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1028], + 'test_rsa_1030': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1030], + 'test_rsa_2048': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 2048], + 'test_rsa_4096': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 4096], # EC keys - 'test_ec_secp192r1': ['ec', 'secp192r1'], - 'test_ec_secp224r1': ['ec', 'secp224r1'], - 'test_ec_secp256r1': ['ec', 'secp256r1'], - 'test_ec_secp384r1': ['ec', 'secp384r1'], - 'test_ec_secp521r1': ['ec', 'secp521r1'], - 'test_ec_bp256r1': ['ec', 'brainpoolP256r1'], - 'test_ec_bp384r1': ['ec', 'brainpoolP384r1'], - 'test_ec_bp512r1': ['ec', 'brainpoolP512r1'], - 'test_ec_curve25519': ['ec', 'x25519'], - 'test_ec_secp192k1': ['ec', 'secp192k1'], - 'test_ec_secp256k1': ['ec', 'secp256k1'], - 'test_ec_curve448': ['ec', 'x448'], + 'test_ec_secp192r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)', 192], + 'test_ec_secp192r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)', 192], + 'test_ec_secp224r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)', 224], + 'test_ec_secp224r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)', 224], + 'test_ec_secp256r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)', 256], + 'test_ec_secp256r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)', 256], + 'test_ec_secp384r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)', 384], + 'test_ec_secp384r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)', 384], + 'test_ec_secp521r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)', 521], + 'test_ec_secp521r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)', 521], + 'test_ec_bp256r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 256], + 'test_ec_bp256r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 256], + 'test_ec_bp384r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 384], + 'test_ec_bp384r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 384], + 'test_ec_bp512r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 512], + 'test_ec_bp512r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 512], + 'test_ec_secp192k1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_K1)', 192], + 'test_ec_secp192k1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_K1)', 192], + 'test_ec_secp256k1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_K1)', 256], + 'test_ec_secp256k1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_K1)', 256], + 'test_ec_curve25519_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY)', 255], + 'test_ec_curve25519_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_MONTGOMERY)', 255], + 'test_ec_curve448_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY)', 448], + 'test_ec_curve448_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_MONTGOMERY)', 448], } -def generate_der_file(curve_type: str, curve_or_bits: str): - if not os.path.exists(KEY_GEN): - raise Exception(KEY_GEN + " does not exist. Please build it before running this script.") - if curve_type == 'ec': - cob_param = 'ec_curve=' + curve_or_bits - else: - cob_param = 'rsa_keysize=' + curve_or_bits - - subprocess.run([KEY_GEN, 'type=' + curve_type, cob_param, - 'format=der', 'filename=' + TMP_DER_FILE], check=True) - -def convert_der_to_c(array_name: str) -> str: - """Convert a DER file content to a C array. The name of such array is - provided as input parameter. The file to be converted is the temporary - TMP_DER_FILE.""" +def convert_der_to_c(array_name: str, key_data: bytearray) -> str: + """Convert a DER content to a C array.""" output_text = "const unsigned char {}[] = {{\n".format(array_name) - with open(TMP_DER_FILE, 'rb') as input_file: - data_block = input_file.read(BYTES_PER_LINE) - while data_block: - new_line = ' ' + ', '.join(['{:#04x}'.format(b) for b in data_block]) - output_text = output_text + new_line + ",\n" - data_block = input_file.read(BYTES_PER_LINE) + def get_data_chunk(data): + for index in range(0, len(data), BYTES_PER_LINE): + yield data[index : index + BYTES_PER_LINE] - output_text = output_text + "};\n" + for bytes_chunk in get_data_chunk(key_data): + new_line = ' ' + ', '.join(['{:#04x}'.format(b) for b in bytes_chunk]) + output_text = output_text + new_line + ",\n" + + output_text = output_text + "};" return output_text def main(): - # Remove intermediate and output files if already existing. + # Remove output file if already existing. if os.path.exists(OUTPUT_HEADER_FILE): os.remove(OUTPUT_HEADER_FILE) - if os.path.exists(TMP_DER_FILE): - os.remove(TMP_DER_FILE) output_file = open(OUTPUT_HEADER_FILE, 'at') output_file.write( "/*********************************************************************************\n" + " * This file was automatically generated from tests/scripts/generate_test_keys.py.\n" + " * Please do not edit it manually.\n" + - " *********************************************************************************/\n" + - "\n" + " *********************************************************************************/\n" ) - add_newline = False for key in KEYS: - # Use gen_key tool to generate the desired key (in DER format) and save - # it into a temporary file. - generate_der_file(KEYS[key][0], KEYS[key][1]) - # Convert the key from binary format to a C array and append the result - # to the output header file. - if add_newline: - output_file.write("\n") - c_data = convert_der_to_c(key) - output_file.write(c_data) - # Remove the temporary key file. - os.remove(TMP_DER_FILE) - add_newline = True + key_type = KEYS[key][0] + key_bitsize = KEYS[key][1] + c_array = convert_der_to_c(key, ASYMMETRIC_KEY_DATA[key_type][key_bitsize]) + output_file.write("\n") + output_file.write(c_array) + output_file.write("\n") if __name__ == '__main__': sys.exit(main()) diff --git a/tests/src/test_keys.h b/tests/src/test_keys.h index 197e142ddd..694bee55fb 100644 --- a/tests/src/test_keys.h +++ b/tests/src/test_keys.h @@ -4,690 +4,717 @@ *********************************************************************************/ const unsigned char test_rsa_1024[] = { - 0x30, 0x82, 0x02, 0x5b, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0x96, - 0xbf, 0x20, 0x0e, 0x0b, 0xab, 0xff, 0x46, 0x3d, 0xd8, 0xc4, 0x25, 0x71, - 0x78, 0x27, 0xe4, 0x27, 0xfd, 0x9c, 0x38, 0x26, 0x25, 0xc2, 0x05, 0xb2, - 0x9a, 0x73, 0x04, 0x99, 0xa8, 0x75, 0x00, 0x98, 0x6b, 0x28, 0xec, 0xe9, - 0x87, 0x6c, 0x92, 0xf8, 0xdd, 0x6e, 0x3b, 0x0a, 0xae, 0x79, 0x79, 0xa1, - 0xbc, 0x39, 0xc2, 0x3e, 0x2d, 0x46, 0xad, 0x09, 0xff, 0xec, 0x3a, 0x2b, - 0xf5, 0xaf, 0x87, 0xaa, 0x69, 0x25, 0xa3, 0x71, 0xa1, 0xe0, 0x43, 0x13, - 0x63, 0xac, 0x0d, 0x54, 0x62, 0x5b, 0xd3, 0x1b, 0x36, 0x0e, 0x6d, 0x26, - 0x80, 0x56, 0xd3, 0x10, 0xf2, 0x21, 0xd4, 0xac, 0x96, 0x3e, 0xe6, 0x66, - 0x7a, 0xea, 0x02, 0x14, 0x02, 0x28, 0x0f, 0x92, 0x46, 0x82, 0x23, 0x06, - 0xd6, 0xef, 0xcc, 0x69, 0x3b, 0x58, 0x82, 0xb0, 0xd7, 0x26, 0x9f, 0x10, - 0x7c, 0x68, 0x5c, 0x4c, 0x91, 0x0c, 0x27, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x80, 0x15, 0xb8, 0x8f, 0x62, 0xb1, 0x62, 0xd9, 0xf8, 0x61, - 0xe3, 0xfb, 0x36, 0x01, 0x4e, 0x14, 0xc2, 0xbc, 0x27, 0xbf, 0xb1, 0x45, - 0x7f, 0x38, 0xf5, 0x94, 0xe1, 0x20, 0x03, 0xeb, 0x2c, 0xc9, 0xed, 0xc9, - 0x33, 0x33, 0xa5, 0x43, 0x6c, 0x57, 0x2e, 0xd6, 0xe6, 0x22, 0x6d, 0x26, - 0x77, 0xb2, 0x70, 0x33, 0x67, 0x9e, 0xe8, 0xf2, 0xb2, 0xed, 0x15, 0x4a, - 0x34, 0xbd, 0x47, 0x3a, 0x85, 0xff, 0x01, 0xc9, 0x8e, 0xa9, 0x3d, 0x65, - 0xaa, 0x62, 0xcb, 0xf7, 0x33, 0xdd, 0xfb, 0x69, 0x67, 0xa4, 0xc6, 0xda, - 0x3e, 0xc9, 0x5a, 0x00, 0xaa, 0xb7, 0xde, 0x01, 0x45, 0x15, 0xfb, 0x8b, - 0x87, 0x68, 0x40, 0xa7, 0xf1, 0xe3, 0xc2, 0xeb, 0xa1, 0x9a, 0xcd, 0x49, - 0xf8, 0x19, 0xae, 0x61, 0x5a, 0x8e, 0x2d, 0x8f, 0x49, 0x85, 0x09, 0x64, - 0x48, 0x29, 0x4a, 0x2c, 0x1a, 0x12, 0x51, 0x33, 0xbe, 0xc0, 0x0d, 0x02, - 0x41, 0x00, 0xc7, 0x67, 0x6c, 0xc0, 0xb8, 0x44, 0x65, 0x5c, 0xd1, 0xfd, - 0xb3, 0x36, 0x91, 0xf5, 0xb4, 0xf9, 0x51, 0x55, 0x18, 0x9a, 0x42, 0x68, - 0xe5, 0xd0, 0x73, 0xe9, 0xdd, 0xf0, 0x91, 0x49, 0xa8, 0x2b, 0x3f, 0x8a, - 0xfc, 0xc5, 0x43, 0x9a, 0xa8, 0x4a, 0xe7, 0xe8, 0xf3, 0xdd, 0x3d, 0x9f, - 0x9c, 0xb8, 0xa7, 0xab, 0xeb, 0xd8, 0xc0, 0xa3, 0xae, 0xde, 0x1d, 0x46, - 0x38, 0x87, 0x2d, 0x96, 0x3b, 0x4d, 0x02, 0x41, 0x00, 0xc1, 0x88, 0x48, - 0x0c, 0xb2, 0x5e, 0x24, 0x09, 0x11, 0x93, 0xbc, 0xaa, 0x8d, 0x27, 0x14, - 0x47, 0x4e, 0x59, 0xae, 0x53, 0xfc, 0x75, 0x02, 0x56, 0xa5, 0x10, 0x33, - 0x92, 0x72, 0xa5, 0xbe, 0x95, 0xbc, 0x4e, 0x19, 0x85, 0x89, 0xd1, 0xc2, - 0xe4, 0xf4, 0x64, 0x1d, 0xe0, 0x7e, 0xa7, 0x2d, 0x7b, 0x6d, 0xb0, 0xb0, - 0x2a, 0x1b, 0xad, 0xc6, 0x6c, 0xf5, 0x64, 0x53, 0x31, 0xaa, 0xb4, 0x23, - 0x43, 0x02, 0x40, 0x64, 0xb0, 0x77, 0xfc, 0xf4, 0xcf, 0x2c, 0xb3, 0xeb, - 0x21, 0x85, 0x8e, 0x47, 0xb3, 0xdf, 0xb7, 0x89, 0x77, 0x43, 0xde, 0x19, - 0x2c, 0xa8, 0xe7, 0x52, 0xb0, 0xc4, 0x2e, 0x46, 0xde, 0xff, 0xb9, 0x1e, - 0xf4, 0x0a, 0xe1, 0x7d, 0x5a, 0xaa, 0x22, 0x70, 0xea, 0x73, 0xc1, 0xc2, - 0xed, 0x47, 0x11, 0x03, 0x31, 0xcf, 0xfc, 0xfa, 0x81, 0x6c, 0xba, 0xa1, - 0xe3, 0xa4, 0x85, 0xb5, 0xe2, 0x47, 0x7d, 0x02, 0x40, 0x13, 0xcb, 0x4b, - 0x8b, 0x38, 0xe7, 0x16, 0x0a, 0x73, 0x68, 0xc7, 0xe0, 0x2d, 0xc5, 0xb4, - 0x76, 0x42, 0x96, 0x3b, 0x95, 0x4d, 0x79, 0xee, 0x3e, 0x4c, 0x6d, 0xa6, - 0xc8, 0xb0, 0xbf, 0x31, 0x0a, 0x01, 0x93, 0x7f, 0x5a, 0xc0, 0x28, 0xdb, - 0x25, 0x2d, 0xb5, 0xdb, 0xb4, 0x6d, 0x5f, 0xcd, 0xf0, 0x14, 0xdd, 0x00, - 0x77, 0x9e, 0x13, 0x1c, 0xfb, 0x61, 0xf1, 0xdb, 0xec, 0x75, 0x88, 0x2d, - 0x1f, 0x02, 0x40, 0x21, 0x0a, 0xa0, 0x87, 0x82, 0x23, 0x01, 0xe9, 0x8b, - 0xcc, 0x29, 0xb3, 0x47, 0x69, 0xfe, 0x37, 0x65, 0x90, 0x79, 0xaa, 0x36, - 0x9b, 0x6c, 0x58, 0xd4, 0x62, 0x08, 0x6c, 0xfe, 0x1f, 0xec, 0x89, 0xbb, - 0x85, 0x9e, 0x27, 0xd2, 0x0d, 0x97, 0xaa, 0x3d, 0x2c, 0x00, 0xee, 0x60, - 0x95, 0x77, 0x6e, 0x5d, 0xc4, 0xe2, 0x49, 0x3f, 0x79, 0x38, 0x78, 0xc8, - 0x48, 0xa3, 0xe3, 0x80, 0x46, 0xcb, 0x22, + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xaf, + 0x05, 0x7d, 0x39, 0x6e, 0xe8, 0x4f, 0xb7, 0x5f, 0xdb, 0xb5, 0xc2, 0xb1, + 0x3c, 0x7f, 0xe5, 0xa6, 0x54, 0xaa, 0x8a, 0xa2, 0x47, 0x0b, 0x54, 0x1e, + 0xe1, 0xfe, 0xb0, 0xb1, 0x2d, 0x25, 0xc7, 0x97, 0x11, 0x53, 0x12, 0x49, + 0xe1, 0x12, 0x96, 0x28, 0x04, 0x2d, 0xbb, 0xb6, 0xc1, 0x20, 0xd1, 0x44, + 0x35, 0x24, 0xef, 0x4c, 0x0e, 0x6e, 0x1d, 0x89, 0x56, 0xee, 0xb2, 0x07, + 0x7a, 0xf1, 0x23, 0x49, 0xdd, 0xee, 0xe5, 0x44, 0x83, 0xbc, 0x06, 0xc2, + 0xc6, 0x19, 0x48, 0xcd, 0x02, 0xb2, 0x02, 0xe7, 0x96, 0xae, 0xbd, 0x94, + 0xd3, 0xa7, 0xcb, 0xf8, 0x59, 0xc2, 0xc1, 0x81, 0x9c, 0x32, 0x4c, 0xb8, + 0x2b, 0x9c, 0xd3, 0x4e, 0xde, 0x26, 0x3a, 0x2a, 0xbf, 0xfe, 0x47, 0x33, + 0xf0, 0x77, 0x86, 0x9e, 0x86, 0x60, 0xf7, 0xd6, 0x83, 0x4d, 0xa5, 0x3d, + 0x69, 0x0e, 0xf7, 0x98, 0x5f, 0x6b, 0xc3, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x00, 0x87, 0x4b, 0xf0, 0xff, 0xc2, 0xf2, 0xa7, 0x1d, + 0x14, 0x67, 0x1d, 0xdd, 0x01, 0x71, 0xc9, 0x54, 0xd7, 0xfd, 0xbf, 0x50, + 0x28, 0x1e, 0x4f, 0x6d, 0x99, 0xea, 0x0e, 0x1e, 0xbc, 0xf8, 0x2f, 0xaa, + 0x58, 0xe7, 0xb5, 0x95, 0xff, 0xb2, 0x93, 0xd1, 0xab, 0xe1, 0x7f, 0x11, + 0x0b, 0x37, 0xc4, 0x8c, 0xc0, 0xf3, 0x6c, 0x37, 0xe8, 0x4d, 0x87, 0x66, + 0x21, 0xd3, 0x27, 0xf6, 0x4b, 0xbe, 0x08, 0x45, 0x7d, 0x3e, 0xc4, 0x09, + 0x8b, 0xa2, 0xfa, 0x0a, 0x31, 0x9f, 0xba, 0x41, 0x1c, 0x28, 0x41, 0xed, + 0x7b, 0xe8, 0x31, 0x96, 0xa8, 0xcd, 0xf9, 0xda, 0xa5, 0xd0, 0x06, 0x94, + 0xbc, 0x33, 0x5f, 0xc4, 0xc3, 0x22, 0x17, 0xfe, 0x04, 0x88, 0xbc, 0xe9, + 0xcb, 0x72, 0x02, 0xe5, 0x94, 0x68, 0xb1, 0xea, 0xd1, 0x19, 0x00, 0x04, + 0x77, 0xdb, 0x2c, 0xa7, 0x97, 0xfa, 0xc1, 0x9e, 0xda, 0x3f, 0x58, 0xc1, + 0x02, 0x41, 0x00, 0xe2, 0xab, 0x76, 0x08, 0x41, 0xbb, 0x9d, 0x30, 0xa8, + 0x1d, 0x22, 0x2d, 0xe1, 0xeb, 0x73, 0x81, 0xd8, 0x22, 0x14, 0x40, 0x7f, + 0x1b, 0x97, 0x5c, 0xbb, 0xfe, 0x4e, 0x1a, 0x94, 0x67, 0xfd, 0x98, 0xad, + 0xbd, 0x78, 0xf6, 0x07, 0x83, 0x6c, 0xa5, 0xbe, 0x19, 0x28, 0xb9, 0xd1, + 0x60, 0xd9, 0x7f, 0xd4, 0x5c, 0x12, 0xd6, 0xb5, 0x2e, 0x2c, 0x98, 0x71, + 0xa1, 0x74, 0xc6, 0x6b, 0x48, 0x81, 0x13, 0x02, 0x41, 0x00, 0xc5, 0xab, + 0x27, 0x60, 0x21, 0x59, 0xae, 0x7d, 0x6f, 0x20, 0xc3, 0xc2, 0xee, 0x85, + 0x1e, 0x46, 0xdc, 0x11, 0x2e, 0x68, 0x9e, 0x28, 0xd5, 0xfc, 0xbb, 0xf9, + 0x90, 0xa9, 0x9e, 0xf8, 0xa9, 0x0b, 0x8b, 0xb4, 0x4f, 0xd3, 0x64, 0x67, + 0xe7, 0xfc, 0x17, 0x89, 0xce, 0xb6, 0x63, 0xab, 0xda, 0x33, 0x86, 0x52, + 0xc3, 0xc7, 0x3f, 0x11, 0x17, 0x74, 0x90, 0x2e, 0x84, 0x05, 0x65, 0x92, + 0x70, 0x91, 0x02, 0x41, 0x00, 0xb6, 0xcd, 0xbd, 0x35, 0x4f, 0x7d, 0xf5, + 0x79, 0xa6, 0x3b, 0x48, 0xb3, 0x64, 0x3e, 0x35, 0x3b, 0x84, 0x89, 0x87, + 0x77, 0xb4, 0x8b, 0x15, 0xf9, 0x4e, 0x0b, 0xfc, 0x05, 0x67, 0xa6, 0xae, + 0x59, 0x11, 0xd5, 0x7a, 0xd6, 0x40, 0x9c, 0xf7, 0x64, 0x7b, 0xf9, 0x62, + 0x64, 0xe9, 0xbd, 0x87, 0xeb, 0x95, 0xe2, 0x63, 0xb7, 0x11, 0x0b, 0x9a, + 0x1f, 0x9f, 0x94, 0xac, 0xce, 0xd0, 0xfa, 0xfa, 0x4d, 0x02, 0x40, 0x71, + 0x19, 0x5e, 0xec, 0x37, 0xe8, 0xd2, 0x57, 0xde, 0xcf, 0xc6, 0x72, 0xb0, + 0x7a, 0xe6, 0x39, 0xf1, 0x0c, 0xbb, 0x9b, 0x0c, 0x73, 0x9d, 0x0c, 0x80, + 0x99, 0x68, 0xd6, 0x44, 0xa9, 0x4e, 0x3f, 0xd6, 0xed, 0x92, 0x87, 0x07, + 0x7a, 0x14, 0x58, 0x3f, 0x37, 0x90, 0x58, 0xf7, 0x6a, 0x8a, 0xec, 0xd4, + 0x3c, 0x62, 0xdc, 0x8c, 0x0f, 0x41, 0x76, 0x66, 0x50, 0xd7, 0x25, 0x27, + 0x5a, 0xc4, 0xa1, 0x02, 0x41, 0x00, 0xbb, 0x32, 0xd1, 0x33, 0xed, 0xc2, + 0xe0, 0x48, 0xd4, 0x63, 0x38, 0x8b, 0x7b, 0xe9, 0xcb, 0x4b, 0xe2, 0x9f, + 0x4b, 0x62, 0x50, 0xbe, 0x60, 0x3e, 0x70, 0xe3, 0x64, 0x75, 0x01, 0xc9, + 0x7d, 0xdd, 0xe2, 0x0a, 0x4e, 0x71, 0xbe, 0x95, 0xfd, 0x5e, 0x71, 0x78, + 0x4e, 0x25, 0xac, 0xa4, 0xba, 0xf2, 0x5b, 0xe5, 0x73, 0x8a, 0xae, 0x59, + 0xbb, 0xfe, 0x1c, 0x99, 0x77, 0x81, 0x44, 0x7a, 0x2b, 0x24, }; const unsigned char test_rsa_1026[] = { - 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x02, 0xae, - 0x9a, 0x65, 0x51, 0x54, 0x10, 0x29, 0xa3, 0x7a, 0x5f, 0xa3, 0x1b, 0x9d, - 0xf3, 0x0e, 0x24, 0xdb, 0x1f, 0xd8, 0x4e, 0x12, 0x43, 0x49, 0x00, 0x31, - 0xf8, 0x03, 0x88, 0x04, 0x87, 0x8f, 0xc9, 0x95, 0x66, 0x34, 0xb3, 0xcf, - 0x0a, 0xf1, 0x2e, 0x47, 0xd3, 0x8c, 0x3b, 0x41, 0xff, 0x32, 0x60, 0xd8, - 0x17, 0x7e, 0xad, 0x83, 0x4c, 0x37, 0x6d, 0x6b, 0xc5, 0x49, 0x6f, 0x36, - 0x84, 0xb8, 0x59, 0xa5, 0x5a, 0x03, 0xbf, 0xd7, 0xbe, 0xca, 0x9c, 0x09, - 0x1c, 0xf5, 0x20, 0xd3, 0x3a, 0x0e, 0x2f, 0xd3, 0x08, 0xa3, 0x9a, 0x65, - 0x54, 0x26, 0xa6, 0x78, 0x35, 0x7a, 0xd9, 0x70, 0x0d, 0x4d, 0xb9, 0xf7, - 0x76, 0xfd, 0x6e, 0xf5, 0xe4, 0x00, 0xe6, 0xcb, 0x60, 0xec, 0xc6, 0x38, - 0x24, 0x9e, 0x9b, 0xe6, 0x69, 0x81, 0xe0, 0xc3, 0xc9, 0x10, 0xef, 0x73, - 0xe4, 0x22, 0x52, 0x3d, 0x8c, 0x16, 0xc3, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x80, 0x54, 0x28, 0x86, 0x9c, 0xb6, 0x62, 0x18, 0xc8, 0x79, - 0xfa, 0x79, 0x02, 0xac, 0x94, 0x9b, 0x3a, 0x37, 0x45, 0xaa, 0xfc, 0xbe, - 0xce, 0x52, 0x87, 0x5c, 0x98, 0x9a, 0xce, 0x34, 0x47, 0xed, 0x7e, 0xf6, - 0xfa, 0x05, 0x21, 0xb9, 0x12, 0x0d, 0x47, 0xef, 0xf3, 0xe5, 0x2f, 0x6a, - 0x42, 0x7e, 0x89, 0x52, 0x53, 0x66, 0xea, 0x9b, 0xba, 0x5e, 0xdc, 0xe1, - 0xa5, 0xd7, 0xff, 0x72, 0xbe, 0x47, 0xde, 0x06, 0x0b, 0x48, 0xf9, 0xf4, - 0xb7, 0xa8, 0x06, 0x76, 0xfd, 0xd2, 0x4c, 0xbf, 0xe4, 0x4a, 0x1c, 0x7f, - 0xf8, 0x71, 0xc6, 0x9f, 0x80, 0xfa, 0x97, 0xca, 0xc3, 0xf6, 0x70, 0xe3, - 0x5e, 0x8c, 0x2d, 0x02, 0xe0, 0x3a, 0x91, 0xbd, 0xa2, 0x12, 0xa4, 0xa5, - 0x7c, 0x9d, 0x6a, 0xdd, 0x00, 0xfe, 0x28, 0x60, 0xbf, 0x7e, 0x5f, 0x4f, - 0xb3, 0xf5, 0xd2, 0x0f, 0x8c, 0x69, 0x0b, 0xf0, 0x2c, 0x60, 0x81, 0x02, - 0x41, 0x01, 0xc4, 0x95, 0xb4, 0x0c, 0xf6, 0xfe, 0x28, 0xe5, 0xdc, 0x63, - 0xeb, 0x33, 0x06, 0xc1, 0xe6, 0x34, 0xa9, 0x68, 0x73, 0x2d, 0xff, 0x72, - 0x3c, 0xde, 0x74, 0xf7, 0xbb, 0x79, 0xde, 0x85, 0x20, 0x55, 0xa4, 0xe4, - 0x8b, 0x94, 0x82, 0x5b, 0x63, 0xe0, 0xdc, 0xba, 0x3d, 0x95, 0x43, 0x86, - 0xe6, 0xfd, 0x9b, 0x13, 0x75, 0xf7, 0xd2, 0xf1, 0xf5, 0x99, 0xd5, 0x9c, - 0xdf, 0x38, 0x93, 0xdc, 0x4e, 0x03, 0x02, 0x41, 0x01, 0x84, 0x5e, 0xbe, - 0xe1, 0x62, 0x47, 0x50, 0xfc, 0x17, 0xff, 0xc7, 0x15, 0x16, 0x25, 0xef, - 0x6b, 0xd0, 0xb6, 0xdb, 0x13, 0xcb, 0x65, 0x7e, 0xce, 0x4f, 0xab, 0x76, - 0xe0, 0x8b, 0xe8, 0xc0, 0xe4, 0xc0, 0x49, 0xac, 0xb7, 0x2a, 0x97, 0xad, - 0xaa, 0xe1, 0x31, 0xba, 0xd7, 0x02, 0x52, 0xfa, 0xfa, 0x03, 0xd3, 0xc3, - 0x9b, 0x3e, 0x2d, 0x32, 0xea, 0x9f, 0xb2, 0x8b, 0x66, 0x1b, 0xc4, 0x18, - 0x41, 0x02, 0x41, 0x01, 0xa3, 0x23, 0xd9, 0x69, 0xa0, 0x5c, 0xe5, 0x57, - 0x6b, 0x72, 0x05, 0xe2, 0x6d, 0xc1, 0xa9, 0x06, 0xe0, 0x55, 0x61, 0x46, - 0x1a, 0x2a, 0x9c, 0x00, 0x91, 0x66, 0xd4, 0x73, 0x1b, 0x07, 0x43, 0x58, - 0xcd, 0xaa, 0xf3, 0x31, 0x88, 0x40, 0x47, 0x11, 0x7a, 0x99, 0xe8, 0x6a, - 0x91, 0xed, 0x1f, 0x83, 0x82, 0xd8, 0xd5, 0x09, 0xbc, 0x8c, 0x64, 0x9e, - 0x21, 0x5c, 0x74, 0xc6, 0x1a, 0xf9, 0x8e, 0x2d, 0x02, 0x41, 0x00, 0xd1, - 0x4f, 0xa2, 0xfe, 0xa3, 0xd2, 0x1d, 0xe2, 0x90, 0x28, 0xa9, 0x2a, 0x43, - 0x32, 0x94, 0xd3, 0xfd, 0xbb, 0xdf, 0x5c, 0xce, 0xbd, 0x57, 0xd7, 0x67, - 0x76, 0xd8, 0xed, 0xf2, 0x59, 0xb2, 0x44, 0x57, 0x22, 0x1d, 0xf4, 0xe5, - 0xfe, 0xb3, 0x79, 0xaa, 0x3e, 0xfc, 0x1c, 0xcf, 0x42, 0xdb, 0xc3, 0x0d, - 0x76, 0xff, 0x30, 0x57, 0x15, 0x53, 0x20, 0xc2, 0x8b, 0x1e, 0xb8, 0x1c, - 0x74, 0xd6, 0x41, 0x02, 0x41, 0x00, 0x94, 0x24, 0x23, 0x0b, 0x45, 0x3a, - 0xef, 0xf3, 0x41, 0x19, 0x11, 0xba, 0xf6, 0xca, 0xab, 0x72, 0x9e, 0xc0, - 0xa4, 0xc2, 0x9e, 0x52, 0xf8, 0x36, 0xf4, 0xe8, 0xed, 0x5d, 0xa7, 0x5f, - 0x68, 0x46, 0xf4, 0x91, 0x17, 0x9c, 0xe8, 0x1b, 0x31, 0x50, 0xd7, 0x42, - 0x25, 0xc5, 0x67, 0x6a, 0xf8, 0xc2, 0x1f, 0x28, 0xe3, 0xdc, 0x52, 0x79, - 0x7b, 0xf6, 0x68, 0xdc, 0x60, 0xc6, 0xdc, 0xcc, 0xcd, 0x1d, + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x02, 0xd0, + 0x96, 0x61, 0xfc, 0x74, 0x22, 0x4b, 0xa7, 0xbe, 0x79, 0x07, 0xab, 0xef, + 0x4f, 0x5e, 0x8b, 0xcc, 0x26, 0x4a, 0x80, 0x2c, 0x97, 0x8f, 0x7e, 0xaa, + 0x58, 0x55, 0xad, 0xa0, 0x54, 0x36, 0xd7, 0x5d, 0xb7, 0x68, 0xd2, 0x0f, + 0x68, 0x59, 0x5d, 0xbc, 0xc3, 0xd7, 0x25, 0xb1, 0x38, 0xe8, 0x0b, 0x24, + 0x7e, 0x44, 0xa4, 0x16, 0x3a, 0x05, 0x42, 0xfa, 0xb6, 0x12, 0xac, 0xbb, + 0xde, 0x45, 0xf2, 0xe9, 0x38, 0x94, 0xaa, 0x25, 0x3b, 0xdd, 0xef, 0x6a, + 0x7b, 0xec, 0xdc, 0x9c, 0xc2, 0x9a, 0x99, 0xba, 0xcf, 0x48, 0xdc, 0x6e, + 0x38, 0xdb, 0x7a, 0x33, 0xe9, 0xac, 0x92, 0x4c, 0x52, 0x0f, 0xc6, 0xbe, + 0x7d, 0x6e, 0x56, 0x46, 0xc1, 0xd6, 0x7f, 0xb8, 0xb2, 0xb9, 0x7a, 0xc6, + 0x0b, 0xee, 0xcc, 0x3b, 0xb8, 0xe7, 0x5b, 0xed, 0x83, 0x15, 0xaa, 0x3f, + 0xe4, 0x6f, 0x74, 0x8a, 0x66, 0xd6, 0xef, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x6a, 0x4a, 0x34, 0x6b, 0xeb, 0xa9, 0x7f, 0x65, 0x5f, + 0xe8, 0x34, 0x64, 0x7d, 0x29, 0x44, 0xf5, 0xf4, 0x08, 0x15, 0xe7, 0x30, + 0x2c, 0xaf, 0x02, 0xed, 0x17, 0x98, 0x93, 0xc2, 0xd9, 0x89, 0x39, 0x5d, + 0x5e, 0x87, 0x7c, 0xac, 0xbf, 0x24, 0xa7, 0x7a, 0x07, 0x9d, 0x3d, 0xb7, + 0x15, 0x80, 0xcc, 0xdb, 0xf6, 0x30, 0x23, 0xd0, 0x0f, 0x80, 0xe5, 0x2f, + 0x5c, 0x1a, 0x07, 0x16, 0xb3, 0x23, 0xb7, 0xbf, 0xcb, 0xdc, 0x8a, 0x17, + 0x81, 0xc4, 0x4c, 0x41, 0x53, 0xe3, 0xda, 0x22, 0x8d, 0x17, 0xb2, 0xdc, + 0x78, 0xeb, 0x1f, 0x44, 0xcf, 0xf6, 0x0f, 0xe1, 0x15, 0x08, 0x08, 0xa6, + 0xe3, 0x8b, 0xa2, 0x47, 0x0a, 0xee, 0x2e, 0x94, 0x8a, 0x68, 0x98, 0xdd, + 0xad, 0xea, 0x56, 0xd9, 0x47, 0x09, 0x27, 0xac, 0xa8, 0xd9, 0x4a, 0x03, + 0x38, 0xc1, 0x1a, 0x8e, 0x95, 0x71, 0x5b, 0x5f, 0x94, 0xe0, 0x11, 0x02, + 0x41, 0x01, 0xf5, 0x41, 0x85, 0x34, 0xc3, 0x62, 0x36, 0xfc, 0x9f, 0xd3, + 0x89, 0x34, 0xd7, 0xc0, 0x6d, 0xfe, 0xd3, 0x82, 0x91, 0x51, 0xcc, 0xab, + 0x56, 0xb6, 0x33, 0x0c, 0x64, 0x1f, 0x77, 0x96, 0xa7, 0x19, 0x24, 0xcf, + 0x81, 0x19, 0xca, 0x26, 0xe1, 0x86, 0xec, 0xd3, 0x06, 0x8d, 0x66, 0x07, + 0xa0, 0x52, 0x60, 0xdb, 0x48, 0x57, 0x65, 0x19, 0x80, 0x43, 0x68, 0x91, + 0xad, 0xde, 0x9e, 0xb9, 0x2a, 0xb7, 0x02, 0x41, 0x01, 0x70, 0x04, 0x2f, + 0xbd, 0xba, 0xba, 0x1e, 0x10, 0x2b, 0x7f, 0x7f, 0x1d, 0xc9, 0xd9, 0x40, + 0xcf, 0xdc, 0xd8, 0x5d, 0xd0, 0xea, 0x65, 0xf5, 0x43, 0xc6, 0x43, 0x2e, + 0x9c, 0x54, 0x80, 0x72, 0x4b, 0xb4, 0x9b, 0x1e, 0x5f, 0x80, 0xca, 0x2b, + 0x9f, 0x84, 0xcd, 0x66, 0x44, 0xbf, 0xb2, 0xe3, 0xd0, 0x96, 0x80, 0x90, + 0xb8, 0x9f, 0x53, 0x4d, 0xc2, 0x95, 0x1e, 0x60, 0x6d, 0xb9, 0x09, 0xdd, + 0x89, 0x02, 0x41, 0x01, 0x4b, 0x6c, 0x1a, 0xeb, 0x1c, 0x14, 0xa0, 0x4e, + 0xc0, 0x4e, 0x59, 0x75, 0xfb, 0x01, 0x5c, 0xb9, 0x14, 0x98, 0x4c, 0x05, + 0x4d, 0xd2, 0x2b, 0xef, 0x24, 0x29, 0x99, 0x39, 0xc5, 0x14, 0x73, 0x3f, + 0x88, 0xbb, 0x3a, 0x9d, 0x16, 0xb0, 0x46, 0x85, 0xb3, 0xa8, 0x83, 0xb8, + 0x92, 0x31, 0x90, 0xab, 0x67, 0x27, 0x15, 0xd9, 0xd3, 0x1a, 0xdd, 0x57, + 0xb4, 0x98, 0x3d, 0xe1, 0xe8, 0x08, 0x7e, 0x59, 0x02, 0x41, 0x01, 0x17, + 0xbf, 0x76, 0xf3, 0x08, 0xb0, 0x56, 0x0e, 0x00, 0xa2, 0xc8, 0x64, 0x42, + 0x7d, 0xcd, 0x50, 0xb5, 0x16, 0x1c, 0x2a, 0xa5, 0x23, 0xa0, 0x0f, 0x46, + 0xf4, 0xe6, 0xc7, 0x9b, 0x4c, 0x90, 0x95, 0x8f, 0xd2, 0xa2, 0x82, 0x02, + 0x8a, 0xac, 0x22, 0x74, 0x77, 0x16, 0x98, 0x88, 0x08, 0x5a, 0x38, 0xc3, + 0x4f, 0x33, 0xb3, 0xc4, 0x19, 0x34, 0xf1, 0x07, 0x1d, 0xb2, 0x3b, 0x75, + 0xff, 0x53, 0xd1, 0x02, 0x41, 0x01, 0x20, 0xa4, 0x28, 0xb4, 0xe0, 0xc4, + 0xa6, 0xf2, 0x02, 0x92, 0x0f, 0xd4, 0x9c, 0xc9, 0x88, 0x6e, 0x6b, 0x67, + 0x19, 0xd4, 0x0a, 0x3a, 0xd0, 0x60, 0x4f, 0x5d, 0x5e, 0xfd, 0x5e, 0xf6, + 0x97, 0x3a, 0x57, 0x3a, 0xb3, 0x24, 0xf3, 0x8e, 0xcb, 0x8e, 0x66, 0x9a, + 0x69, 0x34, 0x15, 0x97, 0x08, 0x1e, 0x24, 0x0b, 0x6a, 0xe4, 0xe2, 0x71, + 0x48, 0x87, 0xdd, 0x78, 0xda, 0xda, 0xeb, 0x0b, 0x92, 0x16, }; const unsigned char test_rsa_1028[] = { - 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x0c, 0x48, - 0x52, 0xeb, 0x3d, 0x96, 0x7a, 0x6c, 0x68, 0xa7, 0x10, 0x15, 0x4b, 0xc4, - 0x8b, 0x32, 0xa8, 0xb1, 0xd5, 0xdf, 0xbf, 0xb1, 0x11, 0xfd, 0x50, 0xac, - 0xc9, 0x27, 0x99, 0xd6, 0xfe, 0x34, 0x6d, 0x0c, 0xd2, 0x2b, 0x4e, 0xc7, - 0x1b, 0xbf, 0xc2, 0x85, 0x04, 0x99, 0x50, 0x13, 0xa2, 0x60, 0x02, 0x67, - 0x94, 0xcf, 0xe7, 0x84, 0xc7, 0xb2, 0x03, 0x81, 0xb8, 0x60, 0xfa, 0xaf, - 0xc0, 0xcd, 0x30, 0xf0, 0xe6, 0xdb, 0xd0, 0x3a, 0x3d, 0x1d, 0x3c, 0x8e, - 0x0d, 0xb1, 0x86, 0xc3, 0xba, 0xa1, 0x35, 0x47, 0xae, 0x6e, 0x43, 0x23, - 0x4a, 0x61, 0xfc, 0xc5, 0x1e, 0xa6, 0xe8, 0x74, 0x38, 0x3b, 0x4c, 0x79, - 0x4a, 0x94, 0x66, 0x1a, 0x44, 0x23, 0x0a, 0x96, 0x86, 0x5d, 0xf6, 0x43, - 0x5a, 0xa7, 0x03, 0x46, 0x81, 0x9f, 0xe9, 0xf4, 0xaa, 0xa3, 0x03, 0xe1, - 0xea, 0x21, 0xf1, 0xae, 0x2d, 0x06, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x01, 0x1f, 0xa6, 0xb2, 0x4d, 0x9e, 0x94, 0x11, 0x91, - 0xdb, 0x62, 0xbd, 0xc8, 0x02, 0x31, 0x87, 0xcf, 0x66, 0x01, 0x7e, 0x68, - 0x2f, 0x7f, 0x49, 0x50, 0xd5, 0x95, 0xcb, 0x71, 0x27, 0xf9, 0x76, 0x7b, - 0x59, 0x76, 0x6a, 0xae, 0xd8, 0xc9, 0x41, 0x98, 0x3e, 0x8a, 0x06, 0xaa, - 0x8c, 0x39, 0x49, 0x16, 0x3f, 0x3a, 0x9e, 0x70, 0x7c, 0x35, 0xb6, 0xa3, - 0xda, 0x7c, 0xaf, 0x26, 0x8f, 0xe8, 0x8f, 0xfc, 0x5b, 0x7c, 0xda, 0x94, - 0x57, 0x8d, 0x03, 0x5c, 0xed, 0x66, 0xfe, 0x9c, 0x6e, 0xaa, 0xcc, 0xa1, - 0x05, 0x48, 0xc4, 0x11, 0xbc, 0xf7, 0xdf, 0xaa, 0xeb, 0x65, 0xb6, 0xaf, - 0xce, 0x45, 0x0c, 0x7f, 0x3a, 0x84, 0x0a, 0x85, 0x28, 0xf0, 0xa4, 0xd6, - 0x39, 0x9e, 0xc3, 0xc6, 0x47, 0x24, 0x6f, 0xbe, 0x20, 0x45, 0x19, 0x84, - 0x29, 0x0d, 0x12, 0x9a, 0x12, 0xc9, 0x03, 0x96, 0xf0, 0x26, 0x11, 0x49, - 0x02, 0x41, 0x03, 0x9a, 0xb4, 0xe9, 0x07, 0xe1, 0xe0, 0x69, 0xc7, 0x0c, - 0x5c, 0x71, 0x1b, 0x21, 0x31, 0x66, 0x5b, 0x5d, 0x0d, 0x3c, 0x51, 0x64, - 0xda, 0xb4, 0xfe, 0x14, 0xb1, 0x27, 0xa6, 0x97, 0x36, 0x58, 0xb2, 0xa0, - 0x17, 0xa9, 0x28, 0x33, 0x19, 0x6b, 0xee, 0x6f, 0x6c, 0x17, 0x50, 0x8c, - 0x01, 0x78, 0xfb, 0xfe, 0xed, 0xab, 0xf6, 0x71, 0xd9, 0x85, 0xc8, 0x96, - 0x63, 0x7c, 0x10, 0x3c, 0xf0, 0x54, 0x09, 0x02, 0x41, 0x03, 0x68, 0x60, - 0x30, 0x2c, 0xc9, 0xcc, 0x20, 0x7e, 0x1e, 0xd3, 0xb0, 0x04, 0x3f, 0xde, - 0xef, 0x53, 0x2f, 0x3b, 0xf6, 0x77, 0x01, 0x41, 0x41, 0xa8, 0xc1, 0x5a, - 0x21, 0x30, 0xf4, 0xdc, 0x5c, 0xeb, 0xbe, 0x75, 0x3f, 0xf2, 0x8a, 0xa0, - 0x35, 0xd2, 0xed, 0x23, 0xbc, 0xfc, 0x24, 0x53, 0xde, 0x64, 0x88, 0x72, - 0xef, 0x43, 0xbd, 0x2d, 0x0f, 0x2d, 0x71, 0xb1, 0xe2, 0xbf, 0xe9, 0xe7, - 0x42, 0xff, 0x02, 0x41, 0x03, 0x3c, 0xb3, 0x36, 0x87, 0xa9, 0xca, 0x4f, - 0xb6, 0x41, 0xd7, 0xd4, 0x8d, 0xb5, 0x26, 0x14, 0xf4, 0x01, 0x82, 0x9d, - 0xa5, 0xcc, 0x9a, 0xd0, 0xeb, 0x51, 0xd2, 0x39, 0xf6, 0x58, 0xe0, 0xaa, - 0x90, 0xe3, 0x4f, 0xdc, 0xd1, 0x09, 0xf3, 0xcf, 0x07, 0xfa, 0x72, 0x6e, - 0x0e, 0x1d, 0x70, 0x45, 0x24, 0xae, 0x34, 0xef, 0xb9, 0x0b, 0x4f, 0x7d, - 0xe4, 0x45, 0x8d, 0x5c, 0x23, 0x89, 0x57, 0x9f, 0x61, 0x02, 0x41, 0x02, - 0xa7, 0xde, 0x86, 0xcc, 0xf0, 0xfb, 0xff, 0xba, 0xaa, 0xc5, 0xa9, 0x60, - 0xb6, 0x72, 0x44, 0xab, 0xdc, 0x9c, 0xeb, 0xa8, 0xb5, 0x36, 0xa9, 0x38, - 0x1e, 0x6f, 0xe2, 0x7c, 0x27, 0xe8, 0x71, 0x16, 0x5c, 0x99, 0x3e, 0x1c, - 0x04, 0xc3, 0x75, 0x0f, 0x0c, 0x37, 0x14, 0xfa, 0xa0, 0x49, 0x28, 0x81, - 0xcb, 0x01, 0x5f, 0xcc, 0xb7, 0xeb, 0x1c, 0xef, 0xfa, 0xb2, 0x7a, 0x97, - 0xbc, 0x6f, 0xb9, 0xfb, 0x02, 0x41, 0x01, 0x60, 0x60, 0x57, 0x31, 0x7d, - 0xbe, 0xac, 0xd2, 0x64, 0xb9, 0x26, 0x52, 0x4f, 0x20, 0xda, 0xde, 0xd3, - 0x27, 0x38, 0x97, 0xea, 0xb4, 0xf4, 0xcd, 0x83, 0xfa, 0xeb, 0x51, 0x47, - 0x5b, 0x78, 0x24, 0x53, 0x17, 0xf8, 0x26, 0xee, 0xf7, 0x92, 0x25, 0x14, - 0xcd, 0xb6, 0x86, 0xe7, 0x06, 0xb3, 0xd7, 0xee, 0x8b, 0x42, 0x31, 0xb4, - 0x49, 0x95, 0x4e, 0x8c, 0x11, 0x57, 0x7f, 0x44, 0x36, 0x22, 0x64, + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x0e, 0x62, + 0xa7, 0x6f, 0x0e, 0x0b, 0x59, 0x68, 0x3a, 0x7e, 0xbf, 0x7c, 0xbf, 0xd3, + 0x7b, 0x1d, 0x17, 0x81, 0xd8, 0xf1, 0xb9, 0x00, 0x60, 0x4b, 0x50, 0x7f, + 0x0f, 0x04, 0xc7, 0x2a, 0x3d, 0x34, 0x0d, 0x06, 0x7b, 0xcd, 0x53, 0xbe, + 0xa3, 0xca, 0xff, 0x4e, 0x4a, 0xe6, 0x94, 0xf0, 0xb6, 0xd8, 0xf5, 0x91, + 0xa4, 0x16, 0x7f, 0xbf, 0x7f, 0x37, 0x2a, 0xb5, 0x7e, 0x83, 0xa6, 0x9a, + 0x3f, 0x26, 0xf4, 0x47, 0xbc, 0xf5, 0x82, 0xbc, 0x96, 0x21, 0xa3, 0x0a, + 0x3b, 0x44, 0xd6, 0xb4, 0x3e, 0x98, 0x6d, 0x1a, 0x86, 0x7b, 0x07, 0x48, + 0x9e, 0x4f, 0x9b, 0xfc, 0xad, 0xaa, 0x82, 0xa2, 0x78, 0x2d, 0xc2, 0x72, + 0x9a, 0x63, 0x1f, 0xb1, 0xfb, 0x9f, 0xfb, 0x79, 0x4b, 0x4e, 0x53, 0xc7, + 0x62, 0x39, 0xe0, 0x4d, 0x4a, 0x8f, 0x80, 0x35, 0x25, 0x88, 0xdb, 0x29, + 0x46, 0x2d, 0xde, 0x18, 0x23, 0x7c, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x01, 0xcf, 0xa0, 0x42, 0x2e, 0x3b, 0xb6, 0x0c, 0x15, + 0xef, 0x2e, 0x96, 0xdb, 0x44, 0x99, 0xe7, 0x89, 0xf5, 0xd6, 0x34, 0xea, + 0x64, 0x56, 0x7b, 0x2c, 0xdd, 0x6e, 0x2b, 0xdd, 0x12, 0x1f, 0x85, 0xed, + 0xcc, 0xde, 0xe9, 0xb4, 0xed, 0x17, 0x8c, 0x5f, 0x33, 0x81, 0x61, 0x01, + 0xa7, 0xc3, 0x71, 0x51, 0x8b, 0x3e, 0x23, 0xf9, 0xfd, 0xc7, 0x1b, 0x90, + 0x24, 0x2c, 0xd3, 0x10, 0xb6, 0xb3, 0x14, 0x28, 0xb0, 0xb6, 0x4e, 0xb9, + 0x59, 0x6b, 0xe0, 0xcc, 0x04, 0x4c, 0xc8, 0x50, 0x48, 0x98, 0x2f, 0x90, + 0xb7, 0x06, 0xe6, 0x6c, 0xcd, 0xd3, 0x9a, 0xd5, 0xa1, 0xa7, 0xb6, 0x4c, + 0xf0, 0x34, 0xea, 0xc0, 0xc3, 0x5d, 0x7a, 0xce, 0x93, 0xf2, 0xbc, 0xd3, + 0xce, 0x24, 0x3b, 0xd8, 0xf8, 0x3b, 0x46, 0xf5, 0x09, 0xca, 0x2f, 0x80, + 0x50, 0x63, 0x00, 0x2a, 0xf2, 0xbb, 0x2d, 0x88, 0xb6, 0xee, 0x36, 0xa9, + 0x02, 0x41, 0x03, 0xf0, 0x88, 0x6d, 0x29, 0x77, 0x52, 0x6f, 0x3f, 0x3f, + 0x6a, 0x07, 0x56, 0x00, 0x23, 0x2c, 0xe3, 0x00, 0x85, 0x17, 0x27, 0x6d, + 0xd3, 0x72, 0x1d, 0xee, 0x08, 0xfd, 0x6c, 0x99, 0x9f, 0xc9, 0x76, 0xb9, + 0xe8, 0xdd, 0x2b, 0xc1, 0x43, 0x38, 0x5f, 0xa4, 0xb4, 0x87, 0x35, 0xce, + 0x81, 0xc6, 0x6b, 0x50, 0x1d, 0x71, 0x29, 0xee, 0x78, 0x60, 0xcf, 0xbe, + 0xf2, 0x3b, 0x5d, 0xa9, 0x1e, 0x6c, 0x2d, 0x02, 0x41, 0x03, 0xa6, 0xc8, + 0x73, 0x4a, 0xac, 0xe5, 0x9d, 0x5f, 0x38, 0x6f, 0x97, 0xde, 0x45, 0x0f, + 0x8a, 0x12, 0xd6, 0x3a, 0xe6, 0xac, 0x15, 0xd3, 0x36, 0xe0, 0x10, 0xc9, + 0xfc, 0xf0, 0x3a, 0x32, 0xf0, 0x61, 0x18, 0x81, 0xac, 0x6c, 0xd8, 0xb3, + 0xf9, 0x89, 0x92, 0x5c, 0x0f, 0x02, 0x5a, 0xf2, 0x6c, 0xf2, 0x6a, 0xeb, + 0xd7, 0xd9, 0xb0, 0x4e, 0xb5, 0x03, 0x04, 0x8d, 0xca, 0x2f, 0x50, 0x3c, + 0x28, 0xe9, 0x02, 0x41, 0x01, 0x9b, 0x30, 0x04, 0x51, 0xc3, 0xb4, 0x78, + 0x66, 0xf1, 0x13, 0xe9, 0xa9, 0xc6, 0xa4, 0x90, 0xc8, 0x7c, 0x8d, 0xc6, + 0xc2, 0xec, 0xa4, 0x29, 0x02, 0xca, 0xea, 0x1f, 0x69, 0x07, 0xb9, 0x7e, + 0x0a, 0x4a, 0x02, 0x07, 0x2a, 0xaf, 0xc1, 0x18, 0x5a, 0xe6, 0x6c, 0x34, + 0x34, 0x5b, 0xdd, 0xcd, 0x68, 0x33, 0x61, 0xcd, 0xa1, 0xaa, 0xf8, 0xa9, + 0x80, 0x09, 0xf9, 0xf8, 0xfa, 0x56, 0xd9, 0x70, 0x81, 0x02, 0x40, 0x1b, + 0xcc, 0xa8, 0x49, 0x17, 0x3d, 0x38, 0xe1, 0xe5, 0x0e, 0xc4, 0x88, 0x72, + 0xab, 0x54, 0xa2, 0xdc, 0xc6, 0x21, 0xa8, 0x0a, 0x7a, 0x1e, 0x8e, 0xa9, + 0x51, 0x28, 0x79, 0x88, 0x71, 0x8d, 0x5e, 0x85, 0xd9, 0x0d, 0x64, 0xab, + 0x49, 0x26, 0xe9, 0xa5, 0x75, 0xa1, 0x68, 0xa3, 0x85, 0xc4, 0x21, 0xad, + 0x76, 0x58, 0x13, 0xfc, 0x3f, 0x4a, 0xf8, 0xcd, 0x00, 0xde, 0x7b, 0x6b, + 0xba, 0x6e, 0x49, 0x02, 0x41, 0x03, 0x6d, 0xcf, 0x69, 0xf6, 0xe5, 0x48, + 0xc8, 0xac, 0xfb, 0x53, 0x6f, 0xb6, 0xcd, 0x18, 0x6f, 0x8b, 0x8f, 0x20, + 0xd3, 0x13, 0x36, 0x1d, 0x04, 0x47, 0xc1, 0xb5, 0xe3, 0x80, 0xf4, 0x11, + 0x3e, 0x57, 0x8b, 0x31, 0xe8, 0x67, 0xdd, 0xa4, 0x7d, 0x44, 0xad, 0x37, + 0x61, 0xe7, 0x93, 0xf7, 0x25, 0x03, 0x1b, 0x8d, 0x37, 0x9f, 0x38, 0x9d, + 0xe2, 0x77, 0xa9, 0xa0, 0x13, 0x76, 0x51, 0xdf, 0x54, 0x8a, }; const unsigned char test_rsa_1030[] = { - 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x29, 0x32, - 0x4b, 0xbf, 0x78, 0x5a, 0xf5, 0x4f, 0x0a, 0x61, 0xd5, 0x99, 0x29, 0xf2, - 0x3d, 0x39, 0x68, 0x3b, 0xab, 0x41, 0x30, 0x1e, 0x2c, 0x87, 0xca, 0x33, - 0xa3, 0x2f, 0x31, 0x23, 0x9a, 0xe1, 0xca, 0x5b, 0x75, 0xf0, 0xc3, 0x84, - 0x9c, 0x52, 0xe7, 0xf9, 0x67, 0xa8, 0xa6, 0x2b, 0x7c, 0x43, 0xa9, 0x5f, - 0xd7, 0x25, 0x64, 0x43, 0xa9, 0x02, 0xa7, 0x7d, 0x97, 0x24, 0x26, 0x7d, - 0x89, 0x5d, 0x20, 0x8a, 0xb8, 0x6c, 0xcc, 0xcb, 0x18, 0x65, 0x9c, 0xbe, - 0x1a, 0xd8, 0x47, 0xa2, 0xeb, 0xc2, 0xe2, 0x88, 0x26, 0x4f, 0xfc, 0x77, - 0x08, 0x6c, 0x5a, 0x82, 0x30, 0xbe, 0x84, 0xa6, 0xaa, 0x67, 0x41, 0xbd, - 0xe5, 0x1e, 0x87, 0x23, 0x33, 0xbd, 0x59, 0x6d, 0x41, 0xb5, 0x94, 0xc8, - 0xcb, 0xc3, 0xc6, 0x4d, 0xe7, 0x3e, 0x79, 0x6e, 0x9a, 0x8e, 0x54, 0xa7, - 0x1c, 0x64, 0x97, 0x69, 0xc8, 0xc2, 0xdf, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x05, 0x40, 0xdf, 0x5d, 0x50, 0xab, 0xc8, 0xbc, 0x86, - 0x46, 0x68, 0xf1, 0x59, 0xe2, 0xaf, 0x8c, 0x07, 0xe4, 0x14, 0x0d, 0x56, - 0xba, 0xd7, 0xa8, 0x39, 0x50, 0xd1, 0xc3, 0xcd, 0x85, 0xb7, 0x7f, 0xde, - 0x48, 0xeb, 0x86, 0xad, 0xbd, 0x80, 0xc7, 0x27, 0x18, 0x81, 0x9a, 0x30, - 0x16, 0x90, 0xdc, 0xd0, 0x01, 0xe3, 0x73, 0x11, 0x3b, 0x7a, 0x42, 0x01, - 0xb9, 0xdc, 0xf1, 0x99, 0xe1, 0x9d, 0xb2, 0xbb, 0x89, 0xc5, 0xbe, 0x87, - 0x6c, 0x5e, 0xcd, 0xc3, 0xaf, 0x18, 0x4e, 0x42, 0x69, 0xac, 0x26, 0x5b, - 0x24, 0x15, 0xdb, 0x69, 0x88, 0x6d, 0x74, 0x91, 0xe3, 0x4a, 0xb7, 0x5f, - 0x64, 0xa7, 0xdf, 0xc3, 0xff, 0x12, 0xac, 0x29, 0xc0, 0x9d, 0x8a, 0x13, - 0x56, 0xdc, 0xec, 0x8c, 0x77, 0xad, 0xa3, 0xf7, 0xcb, 0x28, 0x06, 0x90, - 0x59, 0x6e, 0x2f, 0x22, 0x14, 0xa7, 0x1a, 0xc0, 0xc0, 0x19, 0xc2, 0x81, - 0x02, 0x41, 0x06, 0xf9, 0x78, 0x16, 0xa4, 0xf4, 0xd3, 0x30, 0x26, 0xbe, - 0x99, 0xa1, 0xe1, 0x2a, 0x8d, 0x07, 0xb2, 0xf7, 0x2a, 0xfc, 0x76, 0x6a, - 0x4c, 0x2d, 0x97, 0x48, 0x70, 0x64, 0xda, 0xb4, 0x62, 0xb6, 0x3f, 0xa7, - 0x1a, 0x95, 0x78, 0xb4, 0xab, 0xfd, 0xd2, 0x84, 0xbf, 0x98, 0x22, 0xfe, - 0xbe, 0x34, 0x26, 0x1d, 0x96, 0x06, 0x20, 0x6b, 0x19, 0x31, 0xb9, 0x08, - 0x8c, 0x8e, 0x21, 0x6d, 0x19, 0xe2, 0xf3, 0x02, 0x41, 0x05, 0xe8, 0x1f, - 0xe6, 0x01, 0xed, 0x9a, 0xd4, 0xab, 0x84, 0x1e, 0xc8, 0x1f, 0xd0, 0xa2, - 0x33, 0xb1, 0x49, 0xe2, 0xac, 0x40, 0x80, 0x06, 0x04, 0x4b, 0xe3, 0x6e, - 0xd4, 0x35, 0x42, 0x45, 0x98, 0x77, 0x42, 0xb2, 0x56, 0xd9, 0x1b, 0xce, - 0x28, 0xdf, 0x96, 0xd0, 0xc1, 0x2e, 0x06, 0x5a, 0x7a, 0x62, 0x76, 0x3e, - 0xb4, 0xe7, 0xcc, 0x7e, 0xa6, 0x1d, 0xb5, 0x7a, 0x9e, 0x2f, 0x3e, 0x09, - 0x23, 0x65, 0x02, 0x41, 0x06, 0x97, 0x5d, 0x56, 0x89, 0x2e, 0x97, 0x27, - 0xba, 0x76, 0x06, 0xdb, 0x65, 0xe0, 0xc0, 0xc7, 0xb5, 0xea, 0xc1, 0x45, - 0x36, 0xe3, 0xde, 0x7a, 0x77, 0xae, 0x8e, 0x09, 0xc2, 0x67, 0x17, 0xa3, - 0x05, 0x24, 0xf7, 0x8a, 0xab, 0x38, 0x94, 0x12, 0x9d, 0x11, 0xb7, 0xc0, - 0x1f, 0xd2, 0x80, 0x0e, 0xe8, 0xb6, 0xad, 0x41, 0xbd, 0x01, 0x7a, 0x1d, - 0xf3, 0xb0, 0x90, 0xa5, 0x02, 0x12, 0x09, 0x94, 0xe1, 0x02, 0x41, 0x04, - 0xdc, 0x69, 0x13, 0xf2, 0xd6, 0x45, 0xab, 0x6b, 0x93, 0x89, 0x79, 0x8c, - 0xa5, 0x38, 0x37, 0x6e, 0x59, 0xad, 0xcf, 0xb0, 0x2d, 0x2b, 0xc6, 0x71, - 0x65, 0xb4, 0x19, 0xb3, 0xd2, 0xdc, 0x4f, 0x83, 0x26, 0x42, 0x7a, 0x32, - 0xa6, 0x2d, 0x5d, 0x79, 0xd4, 0x35, 0xec, 0x25, 0x22, 0x59, 0x67, 0x8a, - 0x8c, 0x61, 0x42, 0xa3, 0xd8, 0xa9, 0x09, 0xb0, 0x3d, 0x5f, 0xb1, 0xba, - 0x93, 0x45, 0x15, 0xf9, 0x02, 0x41, 0x06, 0x5e, 0x0f, 0x28, 0x69, 0x63, - 0x78, 0xfa, 0x87, 0xbf, 0x45, 0x62, 0x02, 0xca, 0x84, 0x34, 0xea, 0x1b, - 0x30, 0xb2, 0x3b, 0x04, 0xb3, 0x1c, 0xb4, 0x61, 0xfd, 0x9f, 0xba, 0xb5, - 0xdb, 0x88, 0x65, 0x6b, 0x4c, 0x36, 0xc5, 0x6c, 0x2d, 0x9a, 0xce, 0x06, - 0x8d, 0x4c, 0xc2, 0x64, 0x48, 0x74, 0x4e, 0x6e, 0xb6, 0x09, 0xa8, 0x18, - 0x25, 0xce, 0x86, 0x27, 0x61, 0x02, 0x16, 0x32, 0xe2, 0xae, 0x41, + 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x2b, 0x7c, + 0xd1, 0x97, 0xf5, 0x79, 0x6d, 0x1f, 0x8e, 0x57, 0x6b, 0x2b, 0x37, 0x72, + 0x3f, 0xd9, 0x21, 0x08, 0x14, 0xef, 0x1c, 0x19, 0x95, 0xf9, 0x89, 0x9d, + 0x50, 0x05, 0x8f, 0x37, 0x9d, 0x23, 0x9c, 0x66, 0x87, 0x8e, 0x92, 0x2f, + 0x34, 0xc6, 0xae, 0x36, 0x72, 0xc8, 0x59, 0x8f, 0xcd, 0x5d, 0x47, 0xb7, + 0x64, 0xd2, 0xec, 0x15, 0x6e, 0x13, 0x4d, 0x03, 0xcf, 0x6a, 0x94, 0xd3, + 0x8d, 0x2e, 0xa8, 0xbc, 0x76, 0xdb, 0xbc, 0x60, 0xc4, 0xb9, 0x74, 0x21, + 0x90, 0x90, 0xea, 0xf2, 0x87, 0x49, 0x7d, 0x7d, 0xcf, 0x7f, 0x11, 0x9c, + 0xfa, 0x86, 0x74, 0x96, 0xf7, 0xe9, 0x1c, 0x12, 0xb5, 0xd5, 0x52, 0xe1, + 0xd1, 0x46, 0x1a, 0x80, 0xdb, 0xe9, 0xa5, 0x9d, 0xb3, 0xb0, 0x16, 0xc6, + 0xc0, 0x14, 0x1c, 0x3b, 0x2a, 0x0e, 0x22, 0x60, 0x89, 0xb8, 0x55, 0xcb, + 0x88, 0xef, 0x65, 0x64, 0x08, 0xbd, 0x89, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x02, 0x10, 0xd5, 0xff, 0x53, 0x1c, 0xac, 0xb2, 0x2f, + 0x8c, 0xf7, 0xdd, 0x1f, 0xd9, 0xfb, 0x03, 0x76, 0xf3, 0x64, 0x7f, 0x2e, + 0x9a, 0xb3, 0xdf, 0x9c, 0x89, 0xb9, 0xad, 0x3c, 0x98, 0xe6, 0x8b, 0x89, + 0xad, 0xeb, 0x29, 0x90, 0x1d, 0xd2, 0xf2, 0xcf, 0x2a, 0xc1, 0xf8, 0x17, + 0x72, 0x62, 0x78, 0x83, 0x0e, 0xc8, 0xa8, 0xd0, 0xfd, 0xd1, 0x9d, 0x49, + 0x6e, 0xc6, 0xbc, 0x68, 0x36, 0x71, 0x17, 0x47, 0x86, 0xb7, 0xd6, 0xa8, + 0xe8, 0x22, 0xfa, 0x71, 0xd6, 0x5a, 0xd3, 0x5a, 0xbb, 0xdf, 0x0e, 0x6e, + 0x55, 0xff, 0x2c, 0x18, 0x21, 0xb6, 0x2b, 0xc6, 0x30, 0x19, 0x21, 0x60, + 0xe5, 0xc9, 0xb3, 0xdc, 0xaf, 0xc6, 0x5a, 0xe6, 0xb2, 0xa0, 0x88, 0xfb, + 0xc5, 0x59, 0x1d, 0xa5, 0x8a, 0x45, 0xdd, 0x7a, 0x30, 0x96, 0x0f, 0x7d, + 0x3d, 0xef, 0x75, 0xb8, 0x0c, 0xdf, 0x73, 0x24, 0x73, 0x60, 0xe8, 0xfb, + 0x02, 0x41, 0x07, 0x2e, 0x37, 0x1a, 0x3b, 0xa8, 0x61, 0xe7, 0x8e, 0x3e, + 0xb9, 0x31, 0x30, 0x65, 0xfa, 0xab, 0x0a, 0x97, 0x21, 0x6e, 0x95, 0x44, + 0xbf, 0xc2, 0xd5, 0xb4, 0x03, 0x84, 0x4b, 0x43, 0x27, 0x37, 0x05, 0x75, + 0x5a, 0x85, 0xaa, 0x0b, 0xaf, 0x71, 0x14, 0x77, 0x0c, 0xfe, 0xca, 0x20, + 0xbc, 0xa1, 0x7a, 0xc1, 0x9b, 0xc4, 0xcb, 0xba, 0x10, 0x6a, 0x33, 0xb3, + 0xdd, 0xdc, 0xa0, 0xfb, 0x53, 0x5f, 0x33, 0x02, 0x41, 0x06, 0x0e, 0x6a, + 0xf3, 0x7a, 0xb4, 0xea, 0x11, 0xf5, 0x2b, 0x93, 0x44, 0xe7, 0x16, 0x0e, + 0xb2, 0xa5, 0x3f, 0x10, 0x75, 0xe1, 0x22, 0x9a, 0x7f, 0x10, 0xa3, 0x01, + 0xde, 0x33, 0x59, 0xf5, 0x3e, 0x98, 0x1e, 0xa0, 0xe1, 0x7d, 0xf0, 0xfb, + 0x38, 0x0f, 0x08, 0x9e, 0x5c, 0x37, 0xdd, 0x40, 0xda, 0xa2, 0x9e, 0xef, + 0xd2, 0x05, 0xf5, 0xc8, 0x7b, 0x38, 0xf8, 0xfe, 0xf6, 0x36, 0xb5, 0x7b, + 0xa0, 0x53, 0x02, 0x41, 0x02, 0x3a, 0x5d, 0xd0, 0x9e, 0xf8, 0x35, 0x40, + 0xb3, 0x0b, 0x55, 0x4d, 0x24, 0xf6, 0x4f, 0x9c, 0x28, 0xd2, 0x12, 0x06, + 0x8c, 0xfc, 0x62, 0xff, 0xe2, 0x6d, 0x53, 0xb6, 0x05, 0xe0, 0x55, 0x57, + 0xa6, 0x32, 0xee, 0x9e, 0x90, 0xcf, 0xc5, 0x65, 0x31, 0xf3, 0x6a, 0xad, + 0xd8, 0x2b, 0xe6, 0x3b, 0xb8, 0xaa, 0x40, 0x5a, 0x04, 0xd8, 0xbb, 0xe5, + 0x28, 0x1b, 0xc4, 0x58, 0x83, 0xfe, 0xd7, 0xb4, 0xaf, 0x02, 0x41, 0x04, + 0x1d, 0xe6, 0xdb, 0xad, 0x4c, 0xaf, 0x54, 0x17, 0xa9, 0x50, 0x49, 0x65, + 0x20, 0x1c, 0x4b, 0x99, 0x82, 0x7d, 0xe8, 0xf3, 0x69, 0xf7, 0x45, 0x6a, + 0x84, 0xb3, 0xef, 0x5c, 0x4e, 0xc9, 0x23, 0x8c, 0x7a, 0x3d, 0x78, 0x2a, + 0x89, 0x15, 0xeb, 0xec, 0x64, 0x3a, 0x69, 0x8b, 0x5b, 0xee, 0x0a, 0xf0, + 0xc2, 0x43, 0x59, 0x2b, 0xce, 0x00, 0x42, 0xaa, 0xde, 0xaf, 0x49, 0xa4, + 0xb4, 0xc6, 0xdd, 0x9b, 0x02, 0x41, 0x05, 0xd3, 0x2d, 0xee, 0x95, 0x2b, + 0x50, 0x3b, 0x53, 0x6f, 0xce, 0xcf, 0x19, 0xec, 0x08, 0x23, 0x6a, 0x9c, + 0xd9, 0x45, 0xc4, 0x95, 0x51, 0xbf, 0x99, 0xf1, 0x5b, 0x67, 0x4f, 0xc2, + 0x1a, 0xa1, 0x99, 0xf4, 0xc4, 0x21, 0x1f, 0x0f, 0x00, 0x07, 0xc4, 0x17, + 0xc1, 0xfb, 0x41, 0x55, 0x32, 0x6a, 0x21, 0x42, 0xfc, 0xa4, 0x54, 0xbb, + 0xd3, 0x8d, 0x6d, 0xbc, 0x6c, 0xaa, 0x7a, 0xc3, 0x35, 0xa1, 0x7c, }; const unsigned char test_rsa_2048[] = { - 0x30, 0x82, 0x04, 0xa4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, - 0xd3, 0x67, 0x70, 0x8d, 0x0a, 0x25, 0x6c, 0x81, 0xb1, 0x25, 0xae, 0xf9, - 0xcb, 0x57, 0x0f, 0xb5, 0xb1, 0x14, 0xa3, 0xc7, 0x91, 0xfd, 0xee, 0x13, - 0x63, 0x96, 0xd5, 0x56, 0x17, 0x2b, 0xa1, 0xea, 0xf1, 0x25, 0x29, 0xb1, - 0xac, 0x7f, 0x56, 0xcb, 0xdc, 0x6d, 0x1b, 0x21, 0x2b, 0x4d, 0xee, 0x0d, - 0xd0, 0xff, 0x3b, 0xdc, 0x5d, 0x08, 0x37, 0x5e, 0xf0, 0x33, 0x84, 0x11, - 0x0e, 0x0d, 0xe9, 0x3a, 0xda, 0x65, 0xfa, 0xd6, 0xd7, 0x22, 0x4a, 0x6e, - 0xa8, 0xf7, 0x49, 0x4b, 0x6f, 0xbe, 0xc2, 0x2f, 0xb8, 0xa0, 0x86, 0xdc, - 0x7a, 0xe6, 0xcf, 0x9b, 0x9e, 0x9a, 0xa3, 0xbd, 0x25, 0x29, 0x38, 0x17, - 0x60, 0x31, 0x81, 0x84, 0x3b, 0xbb, 0x6d, 0xa6, 0x62, 0xf8, 0xee, 0x8f, - 0x27, 0xd3, 0x26, 0x29, 0xb8, 0xc0, 0xef, 0x84, 0x18, 0x5a, 0xaa, 0x5a, - 0x35, 0x80, 0x9a, 0x78, 0x8c, 0x3a, 0x45, 0x32, 0xd0, 0x67, 0xcf, 0x0c, - 0x02, 0xdb, 0x26, 0x15, 0x66, 0x97, 0x78, 0x68, 0xe1, 0x28, 0x7c, 0x15, - 0xb5, 0xe9, 0x73, 0x38, 0xf3, 0x5c, 0x9f, 0xcc, 0xf7, 0x5b, 0x76, 0xef, - 0x77, 0xa0, 0xbf, 0xd2, 0x1c, 0x06, 0x91, 0xd2, 0xaf, 0x1d, 0xa2, 0x1f, - 0x27, 0xd4, 0xd9, 0x8d, 0x59, 0x13, 0x7e, 0xed, 0xe3, 0x04, 0x50, 0xb9, - 0xb2, 0x53, 0x90, 0x8b, 0xaa, 0x73, 0xc1, 0x1e, 0x5e, 0x7b, 0x76, 0x3a, - 0x3e, 0x5c, 0xf4, 0x5e, 0xbb, 0xc4, 0xb8, 0x41, 0xb5, 0x22, 0x79, 0x42, - 0x76, 0x6b, 0x04, 0xee, 0x70, 0x6e, 0x6d, 0xfd, 0x1a, 0x34, 0x96, 0x9b, - 0xc4, 0x8f, 0x19, 0xd1, 0xc3, 0xcd, 0x9e, 0x57, 0xfd, 0x08, 0x83, 0xbb, - 0xe1, 0x9f, 0x76, 0xa7, 0x17, 0xa6, 0x3c, 0x74, 0x63, 0x90, 0x4c, 0x77, - 0xb8, 0x7f, 0xa0, 0x50, 0xbc, 0x3c, 0xfe, 0x51, 0x6e, 0xd0, 0x3d, 0x39, - 0x0e, 0xe4, 0x07, 0x3f, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, - 0x00, 0x13, 0x5c, 0x5b, 0xd0, 0x6e, 0xe7, 0x72, 0x82, 0x86, 0x28, 0xbf, - 0x57, 0x9d, 0x29, 0xc2, 0x04, 0x8f, 0xcd, 0x26, 0x1a, 0xb6, 0xe2, 0x1c, - 0x95, 0xa5, 0xff, 0x40, 0x56, 0x7c, 0x14, 0xc0, 0xe5, 0x75, 0x64, 0x43, - 0xe7, 0x43, 0xb6, 0xfd, 0xc9, 0xf9, 0xcb, 0xfc, 0x3a, 0x13, 0x6f, 0x35, - 0xa8, 0x0a, 0x45, 0xf5, 0xc3, 0x7e, 0xb9, 0xab, 0xe8, 0x83, 0xf3, 0x13, - 0xdb, 0x44, 0x00, 0x3e, 0x25, 0xe7, 0xae, 0x83, 0x44, 0x7d, 0xbb, 0x64, - 0x39, 0xb2, 0x3b, 0xc3, 0x78, 0xa7, 0x29, 0x3f, 0x3b, 0x83, 0x9b, 0x1f, - 0xfe, 0xbd, 0x3a, 0xba, 0x34, 0xb4, 0x57, 0xd1, 0x3b, 0x17, 0x56, 0x29, - 0x0e, 0xea, 0xfe, 0x5d, 0xb0, 0x30, 0x90, 0x3f, 0xc0, 0x87, 0x3b, 0xe9, - 0x0d, 0x2f, 0x46, 0x85, 0x2e, 0x38, 0xff, 0x62, 0x70, 0x24, 0x92, 0xd9, - 0x1b, 0x1d, 0xdf, 0x43, 0x46, 0x5b, 0x01, 0x53, 0x28, 0xe3, 0x86, 0x4a, - 0xfc, 0x50, 0x65, 0xe5, 0xa1, 0x41, 0x5b, 0xef, 0x0c, 0xf5, 0xd1, 0x82, - 0x81, 0xa4, 0xbb, 0x07, 0xf7, 0x34, 0xbe, 0x94, 0xaa, 0x84, 0x38, 0x13, - 0x28, 0x86, 0xc0, 0x61, 0x9d, 0xd9, 0xc0, 0xc0, 0x62, 0x23, 0x3b, 0x1c, - 0x2e, 0x8e, 0x2e, 0x00, 0xc4, 0x73, 0xc3, 0x7d, 0xa7, 0xb4, 0xae, 0xc1, - 0x97, 0x60, 0x36, 0x38, 0xa5, 0xe9, 0xae, 0xe6, 0xef, 0x44, 0x69, 0x47, - 0x28, 0xd9, 0x44, 0xe5, 0x14, 0x5a, 0xd9, 0x2a, 0x03, 0xb0, 0x71, 0x14, - 0x28, 0x28, 0x0d, 0x43, 0x97, 0x90, 0x35, 0xaf, 0x23, 0xca, 0x7a, 0x5f, - 0x5f, 0x4b, 0xe9, 0x1c, 0xc6, 0xbe, 0x86, 0x04, 0x1c, 0xa5, 0x23, 0x44, - 0x91, 0xa2, 0xec, 0x6d, 0xcb, 0x95, 0x18, 0x75, 0x6d, 0xf5, 0xe4, 0xa7, - 0x33, 0x7a, 0xa0, 0x9b, 0x5c, 0x0b, 0xcf, 0x10, 0x85, 0x30, 0xbd, 0xa6, - 0xcc, 0x35, 0x6d, 0x6e, 0xf1, 0x02, 0x81, 0x81, 0x00, 0xf4, 0xf2, 0xbf, - 0xf3, 0x44, 0xa0, 0x29, 0x23, 0xe7, 0x07, 0x5c, 0x81, 0x46, 0xb5, 0x6a, - 0xbc, 0xf9, 0x1c, 0x8e, 0x16, 0x70, 0x21, 0x5d, 0x27, 0xe1, 0x46, 0x12, - 0x09, 0x12, 0x46, 0xea, 0x52, 0x35, 0xbf, 0x9c, 0x50, 0xab, 0xe5, 0x0f, - 0xc4, 0x6b, 0xb0, 0x17, 0x5d, 0x35, 0x8c, 0x8e, 0x9e, 0x91, 0xd4, 0xe5, - 0xfe, 0xae, 0x95, 0x0c, 0xd7, 0xd5, 0xc8, 0xfd, 0x8a, 0x19, 0x2c, 0xba, - 0xe9, 0x7f, 0x9f, 0x15, 0x33, 0xbf, 0xec, 0x2f, 0xe9, 0x45, 0x5f, 0x80, - 0xa9, 0xf4, 0x96, 0xf5, 0x89, 0xbb, 0x94, 0x42, 0x10, 0x00, 0x46, 0x2a, - 0x6e, 0x1f, 0xee, 0xfd, 0xe8, 0x78, 0xae, 0xf7, 0x2a, 0xa5, 0x22, 0x5f, - 0x77, 0xae, 0x1a, 0x08, 0xd6, 0x35, 0x5e, 0xdb, 0x38, 0x4a, 0xd1, 0x60, - 0xb5, 0xf9, 0xd9, 0x95, 0x00, 0x26, 0x6f, 0xf7, 0x12, 0x52, 0x5b, 0x1d, - 0x09, 0x28, 0xdd, 0x21, 0xbb, 0x02, 0x81, 0x81, 0x00, 0xdc, 0xf1, 0x3d, - 0xbb, 0x87, 0xf7, 0xae, 0x69, 0xe8, 0x18, 0x94, 0x51, 0x2c, 0x78, 0xaf, - 0x1c, 0x8b, 0x77, 0x22, 0x49, 0xce, 0xd2, 0x1a, 0xc2, 0xbc, 0x0f, 0xca, - 0x63, 0x1d, 0x92, 0x1e, 0x98, 0x94, 0x5b, 0xda, 0x57, 0xcd, 0x98, 0xa6, - 0x6a, 0x54, 0x8f, 0x43, 0x93, 0x7f, 0x0f, 0xca, 0xe5, 0x2e, 0xf5, 0x50, - 0x06, 0x43, 0x0e, 0xbf, 0xec, 0x08, 0x53, 0xba, 0x04, 0x8f, 0x54, 0x35, - 0xa3, 0x21, 0x9e, 0xf9, 0xfc, 0x53, 0x37, 0xf3, 0xb5, 0x3a, 0x95, 0x7a, - 0x60, 0x89, 0xc9, 0x53, 0xaf, 0xf4, 0x2e, 0x39, 0x83, 0x15, 0x67, 0x38, - 0x7f, 0x65, 0x4f, 0xce, 0xcd, 0x42, 0x0b, 0x84, 0x83, 0xdf, 0xe0, 0xf3, - 0x59, 0x1f, 0x62, 0xef, 0x64, 0xc3, 0xbc, 0xe8, 0x56, 0xff, 0x20, 0xcd, - 0xe4, 0xfb, 0xa3, 0x50, 0xa3, 0xca, 0xfb, 0xd8, 0xbe, 0x96, 0x94, 0x06, - 0x9a, 0x02, 0x1b, 0x86, 0x4d, 0x02, 0x81, 0x81, 0x00, 0xa0, 0xb7, 0x05, - 0xaa, 0x9f, 0xc4, 0x56, 0x39, 0xf0, 0x43, 0xac, 0x36, 0x46, 0x26, 0x92, - 0x3a, 0x1b, 0x58, 0xd9, 0x01, 0x6f, 0xe0, 0xf4, 0x36, 0x4e, 0x60, 0xa3, - 0x44, 0xc0, 0x71, 0x37, 0x1d, 0x69, 0x96, 0xa7, 0x01, 0x67, 0x47, 0x8b, - 0xe8, 0xdc, 0x9f, 0x55, 0x35, 0x1b, 0x05, 0x76, 0x2e, 0x24, 0x91, 0x03, - 0xb6, 0xee, 0xe5, 0x6c, 0xdf, 0xd0, 0xad, 0x67, 0x6d, 0x4c, 0xc7, 0x44, - 0x7c, 0x1f, 0xf8, 0x48, 0xf9, 0x03, 0x5b, 0xfc, 0xb3, 0x99, 0x88, 0xe7, - 0xea, 0x9b, 0x48, 0xd1, 0x21, 0xe5, 0xa9, 0x89, 0x0e, 0xe6, 0x9f, 0x23, - 0x07, 0xce, 0x7c, 0x08, 0xac, 0x97, 0x42, 0x75, 0x79, 0xcd, 0x8f, 0x98, - 0x03, 0xf6, 0x7f, 0xae, 0x7c, 0x9d, 0xd7, 0xf7, 0x0e, 0x20, 0x48, 0xf0, - 0xa3, 0x75, 0xa3, 0x85, 0x57, 0xeb, 0xe0, 0x5a, 0xc3, 0xf2, 0xb5, 0x45, - 0x7f, 0xd5, 0x08, 0x02, 0x31, 0x02, 0x81, 0x80, 0x6b, 0x9f, 0xc7, 0xe6, - 0x75, 0xd1, 0x1c, 0xd0, 0xd2, 0x12, 0x47, 0x0d, 0x53, 0x90, 0x66, 0x1c, - 0x8d, 0x83, 0x36, 0xdc, 0xa5, 0x36, 0x8b, 0x7a, 0x98, 0x89, 0x48, 0x99, - 0x07, 0x6a, 0x8a, 0x24, 0xe0, 0xff, 0xed, 0x58, 0x1f, 0xfa, 0x5f, 0xf6, - 0x23, 0xc2, 0xb5, 0xb4, 0x3f, 0x8c, 0xbd, 0xd4, 0xee, 0x0e, 0xe9, 0x30, - 0x63, 0xb1, 0xe7, 0xa3, 0x5e, 0x5b, 0x0a, 0x9d, 0xf6, 0x03, 0x9b, 0x2d, - 0x1f, 0xcf, 0x85, 0x0e, 0x78, 0xab, 0x24, 0xb7, 0xff, 0x15, 0x99, 0x4b, - 0x35, 0x53, 0x30, 0xc4, 0xe1, 0x39, 0x33, 0x22, 0xbb, 0x66, 0x50, 0x8b, - 0x1e, 0x1a, 0xc6, 0x2e, 0x0e, 0x21, 0xf6, 0x27, 0x17, 0x03, 0x49, 0x06, - 0xfc, 0xd7, 0x00, 0xae, 0x20, 0xfb, 0x00, 0x62, 0x80, 0x5c, 0xc6, 0x6e, - 0xe8, 0x75, 0x21, 0x6e, 0xe8, 0x0d, 0xce, 0x02, 0xe8, 0xee, 0xaa, 0x58, - 0x92, 0xf6, 0x3d, 0x71, 0x02, 0x81, 0x81, 0x00, 0x84, 0x6e, 0x5b, 0x4e, - 0x97, 0xdd, 0xef, 0xaa, 0x17, 0x06, 0xe8, 0xa0, 0x9b, 0x00, 0x49, 0x1f, - 0xaa, 0x50, 0x28, 0x35, 0x04, 0xae, 0xf1, 0x74, 0xdf, 0xcc, 0x60, 0xfc, - 0xe2, 0x97, 0x7d, 0x81, 0xdc, 0x91, 0x11, 0xbc, 0xb4, 0x9e, 0x84, 0x87, - 0xf7, 0xd8, 0xf7, 0x4f, 0xa4, 0x76, 0x5f, 0x86, 0xec, 0x26, 0x7f, 0xb3, - 0x3c, 0x37, 0x15, 0xc4, 0x43, 0xda, 0x51, 0x54, 0xf7, 0x10, 0x05, 0x25, - 0x24, 0x11, 0x92, 0xa8, 0xb9, 0x41, 0x1a, 0xd2, 0x01, 0xd5, 0x52, 0xac, - 0x99, 0x07, 0x59, 0xdc, 0xcf, 0x8d, 0x7f, 0x7d, 0x5f, 0x01, 0xa6, 0x77, - 0xe5, 0x83, 0xfd, 0x6a, 0x1f, 0x7b, 0xcb, 0x38, 0x29, 0xfc, 0xd0, 0x6f, - 0x6b, 0x86, 0xd5, 0xcd, 0x1c, 0x63, 0x7f, 0xb0, 0x58, 0xda, 0x43, 0xc7, - 0x2f, 0x81, 0xd0, 0x3f, 0xd5, 0x8f, 0xa1, 0xda, 0xf1, 0x75, 0xda, 0x4c, - 0x5b, 0x4f, 0x2c, 0x20, + 0x30, 0x82, 0x04, 0xa3, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xf7, 0xbb, 0x6b, 0x8e, 0xab, 0x40, 0x49, 0x1c, 0xd6, 0x44, 0x55, 0xec, + 0x04, 0xd4, 0xed, 0x8d, 0xb5, 0x05, 0x1a, 0x97, 0x38, 0xfc, 0x7a, 0xf7, + 0x3f, 0xf3, 0xb0, 0x97, 0x51, 0x1c, 0xce, 0x40, 0xaa, 0xf7, 0x65, 0x37, + 0xb1, 0x35, 0x35, 0x04, 0x42, 0x79, 0x86, 0xb7, 0xb2, 0xb5, 0x3a, 0x96, + 0x4a, 0x69, 0x37, 0xb5, 0x58, 0xec, 0x0d, 0x1d, 0xea, 0x27, 0x4a, 0xf2, + 0xb8, 0xff, 0xf2, 0xf0, 0x94, 0xc2, 0x43, 0xfa, 0x57, 0x72, 0x66, 0xa7, + 0x9d, 0xb0, 0xc2, 0x6f, 0xfe, 0x30, 0x41, 0x6d, 0x23, 0xef, 0x05, 0xdd, + 0x5f, 0xec, 0xab, 0x41, 0x3e, 0xbb, 0xb4, 0xf8, 0x52, 0x6a, 0xe7, 0x20, + 0xa9, 0x45, 0x84, 0x22, 0x6b, 0x37, 0xd9, 0x2e, 0xf4, 0x63, 0xfc, 0x73, + 0x6c, 0xb3, 0x8e, 0x53, 0x0e, 0x74, 0x88, 0xd9, 0x16, 0x2f, 0x57, 0x26, + 0x80, 0x7b, 0xc5, 0x43, 0x13, 0x8a, 0x2d, 0x25, 0x8a, 0xdb, 0x4d, 0x68, + 0x02, 0x21, 0xc2, 0x53, 0x23, 0x81, 0xcc, 0xfa, 0x81, 0xbc, 0x89, 0xbc, + 0x3d, 0x7b, 0x84, 0x03, 0x9c, 0x2d, 0xf4, 0x1c, 0xe3, 0xec, 0x8d, 0xb9, + 0x1c, 0x23, 0x80, 0xe7, 0x81, 0xba, 0x3a, 0xa9, 0xe2, 0x3b, 0x74, 0xed, + 0x99, 0x73, 0xd4, 0x90, 0x8e, 0xfc, 0xa4, 0x7a, 0xa8, 0xd9, 0xb7, 0xb0, + 0xa4, 0x42, 0x32, 0x97, 0xa4, 0x04, 0x42, 0x7c, 0x3f, 0x3c, 0xd6, 0xe0, + 0x78, 0x2e, 0x45, 0x53, 0x88, 0x0f, 0x06, 0xba, 0x39, 0xa6, 0x4f, 0x4a, + 0x7b, 0x0e, 0xef, 0x92, 0x1a, 0x60, 0x50, 0xa2, 0x07, 0xce, 0xfa, 0xdc, + 0xf0, 0x73, 0x94, 0xa3, 0xe1, 0x8e, 0xa9, 0x15, 0xdc, 0x84, 0x97, 0xe7, + 0xae, 0x61, 0xfc, 0x31, 0x62, 0xf6, 0x2f, 0x50, 0x65, 0xa6, 0x92, 0xaf, + 0x07, 0x72, 0x66, 0xf7, 0x36, 0x0c, 0x20, 0x76, 0xce, 0xbe, 0xaf, 0x14, + 0xcb, 0x22, 0xc1, 0xed, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, + 0x00, 0x00, 0xb8, 0x96, 0x2d, 0xce, 0x60, 0x4b, 0xc6, 0x2e, 0x76, 0x78, + 0xf4, 0x8c, 0xa8, 0x0c, 0xff, 0xf4, 0x56, 0xad, 0x36, 0xe2, 0xf6, 0xd3, + 0x29, 0xcc, 0x91, 0x1a, 0x42, 0xba, 0x7c, 0xf5, 0xb9, 0xb8, 0xf5, 0xaa, + 0xe1, 0x00, 0x5e, 0x4a, 0x06, 0xf6, 0xe5, 0x91, 0x27, 0x90, 0x38, 0xd8, + 0x50, 0x8f, 0x2b, 0x62, 0xba, 0xdf, 0xa5, 0x22, 0x3d, 0xa3, 0xcc, 0x94, + 0xfa, 0x83, 0x60, 0xd5, 0x55, 0x6f, 0x6d, 0x68, 0x52, 0xbe, 0x75, 0xea, + 0x08, 0x13, 0x5c, 0xac, 0x18, 0x34, 0xda, 0x71, 0x9a, 0x4e, 0x78, 0x37, + 0xe1, 0x66, 0xd1, 0xd2, 0xc6, 0xc8, 0x16, 0xb6, 0x46, 0x61, 0xc1, 0x07, + 0x66, 0xb0, 0x2f, 0x70, 0x5c, 0xc4, 0x48, 0x9f, 0x94, 0x74, 0x28, 0x25, + 0x58, 0x35, 0xa9, 0x09, 0x21, 0x43, 0x41, 0xc2, 0x13, 0x35, 0xae, 0x12, + 0x18, 0x1d, 0xd8, 0x1e, 0x61, 0x1d, 0x59, 0xb1, 0xdb, 0x70, 0x66, 0x7b, + 0xeb, 0xd7, 0xe9, 0x2b, 0x71, 0xe1, 0xd3, 0x88, 0x31, 0x8d, 0x3e, 0xc1, + 0x4d, 0x61, 0x6f, 0x72, 0xc2, 0x31, 0xf6, 0x72, 0x7a, 0x18, 0x3e, 0x68, + 0x18, 0x28, 0x5b, 0xd6, 0x5f, 0x65, 0x72, 0xca, 0xdc, 0x90, 0x12, 0x24, + 0x88, 0x21, 0xb2, 0xd0, 0xae, 0x6c, 0xed, 0xd3, 0x0c, 0xa4, 0x40, 0xd4, + 0xd3, 0x4c, 0xd7, 0x7e, 0x2c, 0xf6, 0xb4, 0x0e, 0xd2, 0xc7, 0xd8, 0x56, + 0xb3, 0x0d, 0x47, 0x47, 0x33, 0xfc, 0xe0, 0xfb, 0x69, 0x5c, 0x3e, 0x65, + 0x30, 0xc0, 0x79, 0xae, 0xd9, 0x55, 0xe4, 0x07, 0x30, 0x55, 0xf2, 0x65, + 0x5d, 0x4b, 0x67, 0x1e, 0x29, 0x1f, 0xde, 0x40, 0x0f, 0x2f, 0x06, 0xd0, + 0xb3, 0x3f, 0x87, 0xd2, 0x61, 0xe0, 0xad, 0x3d, 0xae, 0x48, 0xa9, 0x13, + 0x84, 0x1b, 0x34, 0xcf, 0xed, 0x03, 0x79, 0x0f, 0xca, 0xee, 0x00, 0xde, + 0x2e, 0x90, 0xfb, 0x96, 0x21, 0x02, 0x81, 0x81, 0x00, 0xfc, 0xbe, 0x89, + 0xcd, 0x1a, 0xa3, 0x19, 0xe4, 0x9e, 0xf4, 0xf7, 0x21, 0x49, 0xbf, 0x06, + 0xda, 0x57, 0xdc, 0xc6, 0x4d, 0x3d, 0xe6, 0x05, 0xe9, 0xff, 0x3e, 0x76, + 0xfc, 0x66, 0xf4, 0xb1, 0xe2, 0x87, 0x82, 0x45, 0xff, 0xd7, 0x19, 0x90, + 0x51, 0x1b, 0x17, 0xe9, 0x7f, 0x33, 0x81, 0x88, 0x89, 0xa8, 0xc2, 0x1b, + 0x55, 0x27, 0xfd, 0x18, 0x13, 0x27, 0xaf, 0xfe, 0x88, 0xf9, 0xbb, 0xa6, + 0x70, 0xc4, 0xe6, 0xf1, 0xe6, 0x30, 0x9b, 0xd0, 0x32, 0x30, 0x74, 0xe4, + 0xcb, 0xcf, 0x23, 0xdc, 0xe3, 0xc1, 0x9b, 0x8d, 0x54, 0x95, 0xf5, 0x6a, + 0x93, 0x05, 0x9b, 0xa7, 0x41, 0x4f, 0x28, 0xed, 0x1e, 0xc9, 0x06, 0xad, + 0x18, 0xc6, 0x3d, 0xe1, 0x14, 0x8a, 0xbc, 0xfe, 0x9b, 0xe7, 0x98, 0x60, + 0x00, 0xf4, 0x25, 0xe5, 0x80, 0xb7, 0x0e, 0x43, 0xe4, 0x8e, 0x24, 0xfa, + 0x9d, 0x51, 0xaa, 0xae, 0x4d, 0x02, 0x81, 0x81, 0x00, 0xfa, 0xec, 0x5a, + 0x7b, 0xed, 0x2e, 0x53, 0xcf, 0xca, 0x1e, 0x16, 0x7d, 0xb4, 0x64, 0x1d, + 0xb5, 0xa0, 0x0f, 0xe2, 0xc3, 0x28, 0x12, 0x54, 0x23, 0xd5, 0x94, 0x78, + 0x9f, 0x3e, 0xc0, 0x72, 0xc6, 0x23, 0xe7, 0xaf, 0xbd, 0xee, 0x00, 0x89, + 0xfd, 0x26, 0x30, 0x76, 0x51, 0xf6, 0xd3, 0x61, 0x1a, 0x88, 0xaf, 0x28, + 0xc3, 0x45, 0x85, 0xd5, 0xcb, 0x71, 0x3a, 0x65, 0x0c, 0x35, 0x93, 0x3f, + 0x58, 0x94, 0x4d, 0xb9, 0xbd, 0x15, 0xba, 0x9f, 0xc2, 0x8b, 0x07, 0xe6, + 0x70, 0x5b, 0x7b, 0x3e, 0xf1, 0xcc, 0xb4, 0x8d, 0x21, 0xa5, 0x35, 0x69, + 0xc8, 0xb8, 0x4c, 0x44, 0x4b, 0x61, 0xea, 0x5c, 0x6e, 0x67, 0xb5, 0x4f, + 0x0a, 0xfd, 0x85, 0x2f, 0xfb, 0x8c, 0x92, 0xa1, 0x11, 0xfa, 0xb8, 0x67, + 0x72, 0x63, 0xee, 0xb8, 0x0c, 0xf1, 0xa3, 0x40, 0x3b, 0x4a, 0x9a, 0x20, + 0x97, 0x76, 0x94, 0x72, 0x21, 0x02, 0x81, 0x80, 0x2f, 0xf9, 0x9a, 0xfe, + 0xab, 0xc7, 0xb9, 0xea, 0x83, 0xa1, 0xcc, 0x27, 0x2d, 0x70, 0x6d, 0x44, + 0x94, 0xd8, 0xfb, 0x6b, 0x3e, 0x0c, 0xa3, 0xa2, 0xbf, 0x28, 0x84, 0x3d, + 0x74, 0xed, 0x8d, 0xb6, 0x8a, 0x32, 0x58, 0x47, 0x2f, 0xf5, 0x52, 0x47, + 0x92, 0xf4, 0xff, 0x05, 0x7e, 0x29, 0x60, 0x59, 0x81, 0x07, 0x17, 0x59, + 0x1a, 0xb6, 0x18, 0x13, 0xca, 0xbc, 0xc5, 0x7c, 0x0a, 0xab, 0x6b, 0xf4, + 0x8b, 0xeb, 0xaa, 0x8f, 0x1f, 0x3a, 0xf4, 0x52, 0x12, 0x90, 0x9d, 0xbd, + 0x72, 0x1c, 0x44, 0x99, 0x96, 0xee, 0x87, 0xed, 0x3e, 0x69, 0xcf, 0x49, + 0x09, 0x0f, 0x7a, 0xb8, 0x12, 0xe6, 0x99, 0xdb, 0xf6, 0x1c, 0xa6, 0x4e, + 0xc5, 0x92, 0x89, 0x5e, 0xf4, 0xd6, 0xdb, 0x1d, 0x8c, 0xe0, 0x87, 0x98, + 0xa6, 0xbf, 0x6a, 0xc8, 0xfb, 0xf6, 0x61, 0x3c, 0xc9, 0x1e, 0x8b, 0xd3, + 0xc0, 0xe4, 0xbd, 0x21, 0x02, 0x81, 0x81, 0x00, 0xb2, 0x9b, 0x34, 0x59, + 0x0b, 0xdd, 0xb3, 0x08, 0xaf, 0xec, 0xb4, 0xc3, 0xab, 0x78, 0xab, 0xf1, + 0x11, 0x4a, 0xdd, 0x75, 0x5e, 0x7b, 0x95, 0x6a, 0xa0, 0x67, 0x7b, 0x68, + 0x96, 0xa9, 0x33, 0xc9, 0x37, 0xdb, 0x7d, 0xab, 0xaa, 0xd2, 0xb5, 0x65, + 0xfd, 0x1d, 0xf7, 0xca, 0xa5, 0xef, 0x96, 0x29, 0xe5, 0xeb, 0x10, 0x0f, + 0xd6, 0xd7, 0xc9, 0xf3, 0x72, 0xd8, 0x46, 0xfe, 0xe6, 0xcf, 0xb6, 0x02, + 0x5e, 0x25, 0xe9, 0x34, 0xdf, 0x57, 0xa4, 0xca, 0x3c, 0x5e, 0x56, 0x37, + 0xd9, 0xd6, 0x23, 0x5a, 0xc8, 0x04, 0x28, 0x85, 0x2f, 0x6c, 0x92, 0xac, + 0xae, 0x0a, 0x93, 0x7e, 0x38, 0xe7, 0x31, 0xfd, 0xe0, 0x52, 0x1d, 0x3e, + 0x4c, 0x70, 0xd6, 0x53, 0xae, 0x9e, 0xdc, 0x89, 0xc8, 0xb6, 0x23, 0xe4, + 0x37, 0x9f, 0xbf, 0x60, 0x6f, 0x4b, 0x6d, 0xb8, 0x06, 0x85, 0x28, 0xf7, + 0xc7, 0x0f, 0x29, 0x21, 0x02, 0x81, 0x80, 0x0e, 0xd4, 0x7a, 0xe0, 0x5b, + 0x27, 0x5a, 0x23, 0xa7, 0xdf, 0xe3, 0xff, 0xb7, 0x27, 0xe3, 0xa2, 0x68, + 0xe6, 0x26, 0xa5, 0x9d, 0x40, 0x1d, 0x2d, 0x84, 0x6d, 0xe2, 0x69, 0x54, + 0xff, 0x54, 0xfc, 0x9e, 0xd9, 0x3a, 0x9a, 0xf3, 0x3f, 0xac, 0x2c, 0x96, + 0x7a, 0x18, 0xe0, 0xf8, 0x61, 0x45, 0x08, 0x3e, 0x39, 0x92, 0x34, 0x54, + 0xbc, 0x10, 0xda, 0x5f, 0x49, 0x37, 0xe8, 0x36, 0xb9, 0x98, 0x51, 0x95, + 0x6b, 0xff, 0xb3, 0x01, 0xce, 0x9e, 0x06, 0x78, 0x97, 0x86, 0x69, 0x32, + 0x13, 0xfc, 0xde, 0x6d, 0x5f, 0x29, 0x33, 0xd5, 0x2b, 0xb2, 0x9d, 0xc3, + 0x40, 0xea, 0x01, 0x12, 0x57, 0x78, 0x8d, 0x3c, 0x57, 0x75, 0xeb, 0x65, + 0x69, 0x23, 0x0a, 0xaf, 0xbf, 0x08, 0x75, 0x2d, 0x40, 0xa8, 0x41, 0x9d, + 0xe7, 0x1b, 0x01, 0xd4, 0x92, 0x7e, 0x27, 0xc1, 0x07, 0x9c, 0xaa, 0xda, + 0x05, 0x68, 0xb1, }; const unsigned char test_rsa_4096[] = { 0x30, 0x82, 0x09, 0x29, 0x02, 0x01, 0x00, 0x02, 0x82, 0x02, 0x01, 0x00, - 0xf2, 0x60, 0xe5, 0x99, 0x5a, 0xb8, 0xcf, 0xbc, 0xd2, 0x19, 0xf9, 0x31, - 0x3a, 0x3f, 0x2a, 0xda, 0x81, 0xe1, 0x19, 0x3f, 0x21, 0x44, 0x12, 0x88, - 0x1d, 0x29, 0xa9, 0xdb, 0x33, 0x9b, 0x64, 0x11, 0x25, 0xb3, 0x6a, 0x51, - 0x66, 0xfd, 0x08, 0x29, 0xa4, 0x08, 0x2d, 0x93, 0xe8, 0x5f, 0xe8, 0xb4, - 0xc7, 0x9b, 0xac, 0x6a, 0x76, 0xfb, 0xaa, 0x28, 0x7f, 0x8c, 0xd6, 0xc9, - 0x2a, 0x45, 0x6d, 0x38, 0x1a, 0xf2, 0x31, 0xf5, 0xb4, 0xd6, 0x94, 0x6c, - 0x22, 0xee, 0x9d, 0xcf, 0x39, 0x97, 0xe0, 0x72, 0x29, 0x9b, 0x46, 0x95, - 0x1a, 0x44, 0x5f, 0xd5, 0xf2, 0x69, 0xa7, 0x0d, 0xcd, 0xab, 0x00, 0x0c, - 0xa5, 0xe4, 0xee, 0x43, 0x73, 0x05, 0x98, 0x6f, 0x0b, 0x37, 0x52, 0x33, - 0x31, 0x87, 0x9c, 0x7d, 0x1c, 0xfa, 0xf1, 0x96, 0x4a, 0x2a, 0x2d, 0xd4, - 0x0c, 0x50, 0x0e, 0x49, 0x8d, 0x21, 0x2a, 0xbf, 0x19, 0x98, 0xfb, 0x68, - 0x3f, 0x06, 0x61, 0xce, 0x6c, 0x5a, 0x8b, 0xbe, 0x2b, 0x45, 0x00, 0xb3, - 0x3f, 0xc1, 0x9e, 0xca, 0xa1, 0x13, 0xa6, 0x2b, 0x2a, 0xf2, 0x59, 0xdf, - 0xb0, 0x7d, 0xcc, 0xfd, 0x39, 0x19, 0xfc, 0xd1, 0x7e, 0xdc, 0xe0, 0x07, - 0x44, 0xd4, 0xf3, 0x63, 0x88, 0x58, 0x3d, 0xd4, 0xe3, 0x64, 0x46, 0x08, - 0x7c, 0xc1, 0x19, 0x5a, 0xab, 0x56, 0xea, 0xd0, 0x6f, 0x6f, 0xf0, 0x6b, - 0x26, 0x64, 0x15, 0x39, 0xfb, 0xff, 0x36, 0xce, 0xd6, 0x3c, 0x4b, 0xba, - 0xda, 0x62, 0x3a, 0x03, 0x22, 0x0e, 0x2b, 0xe1, 0xf4, 0xa5, 0xbd, 0x9d, - 0x99, 0x2d, 0x57, 0xbc, 0xf7, 0x3f, 0x44, 0x70, 0xf2, 0xd5, 0xa8, 0x5c, - 0x08, 0xea, 0x68, 0x99, 0xaf, 0xe5, 0xc2, 0xc7, 0xeb, 0x51, 0x2f, 0x5b, - 0x53, 0xd4, 0xbd, 0x87, 0x67, 0xc1, 0xb7, 0xa8, 0xeb, 0x64, 0x67, 0x03, - 0xd5, 0x00, 0xd2, 0xd6, 0xa7, 0x42, 0x43, 0x7f, 0x0e, 0xdd, 0x2c, 0x11, - 0x0a, 0x25, 0xc9, 0xd3, 0xc6, 0x40, 0x79, 0x20, 0x0c, 0x27, 0xea, 0x70, - 0xfe, 0x3a, 0x17, 0x22, 0xa9, 0x07, 0x77, 0x6a, 0x1f, 0x4d, 0x9d, 0x85, - 0x46, 0xba, 0xad, 0x92, 0x4e, 0x2a, 0x23, 0xc8, 0x26, 0x0d, 0x8c, 0xb8, - 0xbc, 0xaf, 0x88, 0x3a, 0xe2, 0x92, 0x94, 0xe5, 0x7d, 0x23, 0xd1, 0x42, - 0xd3, 0x6b, 0xff, 0x6e, 0x07, 0xc5, 0xde, 0xb2, 0x2c, 0x07, 0xfc, 0x15, - 0xef, 0xd8, 0x86, 0x1e, 0xee, 0x7f, 0x85, 0x10, 0x08, 0x29, 0x7a, 0xd1, - 0xd0, 0x6f, 0x22, 0xc8, 0x3e, 0x17, 0xef, 0xe5, 0xf8, 0x27, 0x97, 0x40, - 0xeb, 0x75, 0xd6, 0xe3, 0x00, 0xde, 0x80, 0xd1, 0x69, 0xe7, 0x2b, 0xe1, - 0xb1, 0x81, 0xbd, 0x8e, 0x47, 0x2d, 0x47, 0xd5, 0xea, 0x48, 0x4c, 0x05, - 0xda, 0x52, 0x68, 0xc3, 0x36, 0xe6, 0x45, 0xff, 0x84, 0x3e, 0xd6, 0x9d, - 0xa9, 0x4e, 0xf8, 0xc2, 0x43, 0x80, 0x7d, 0xa9, 0x1d, 0x68, 0xa8, 0x3a, - 0xf2, 0x93, 0x4c, 0x08, 0x56, 0x44, 0x4a, 0xf4, 0xce, 0xb8, 0xa2, 0x05, - 0x18, 0x2b, 0xf6, 0x86, 0x29, 0x0e, 0x25, 0x8f, 0x7b, 0x7a, 0x01, 0xfa, - 0xd8, 0x81, 0xcc, 0x7b, 0x9c, 0x38, 0x81, 0xc1, 0xc7, 0x3f, 0x2c, 0x4e, - 0xb0, 0x86, 0x4c, 0xca, 0xdb, 0xaf, 0x49, 0x1c, 0x14, 0x15, 0x50, 0x98, - 0x29, 0x50, 0xeb, 0x3f, 0xbe, 0x20, 0x96, 0x3f, 0x7c, 0xd3, 0x5c, 0xdc, - 0x58, 0xa9, 0x00, 0x70, 0x0f, 0x7b, 0x2b, 0xf0, 0xfa, 0x26, 0x9c, 0x2b, - 0x52, 0x3f, 0x0c, 0x0b, 0xb3, 0xc6, 0xe1, 0xa4, 0xb0, 0xee, 0xa1, 0x4f, - 0x95, 0x17, 0x5d, 0xf2, 0xda, 0x2a, 0xe5, 0xd1, 0x8f, 0xf1, 0x68, 0x8e, - 0x50, 0x29, 0x20, 0xfe, 0xa8, 0x34, 0xf3, 0x99, 0x4f, 0xce, 0x0b, 0x78, - 0xb4, 0xad, 0x51, 0xe2, 0x85, 0xeb, 0xfd, 0xe1, 0x02, 0x03, 0x01, 0x00, - 0x01, 0x02, 0x82, 0x02, 0x00, 0x1a, 0x49, 0x73, 0x85, 0x49, 0x0f, 0x53, - 0xaa, 0x6f, 0x1f, 0xf5, 0x84, 0x87, 0x04, 0x6c, 0x4d, 0xa3, 0xf9, 0xe9, - 0x8e, 0xcc, 0xf9, 0x10, 0xc8, 0x75, 0xdf, 0x3b, 0xa6, 0x84, 0x27, 0x95, - 0x77, 0xfd, 0x9e, 0x82, 0x88, 0x9f, 0x12, 0x90, 0xc4, 0xd1, 0x5f, 0x38, - 0xb0, 0x3a, 0xaa, 0xd2, 0x36, 0x6f, 0x12, 0x9d, 0x65, 0xb3, 0x8f, 0x52, - 0x52, 0x4f, 0x99, 0x12, 0xff, 0x60, 0xc8, 0x04, 0x53, 0x2a, 0x2a, 0xfb, - 0xcb, 0xa1, 0xe8, 0x06, 0xd3, 0x5e, 0x8b, 0x82, 0x0e, 0x84, 0x38, 0xca, - 0x55, 0x1f, 0x59, 0x91, 0x93, 0x60, 0xb4, 0xab, 0x2f, 0x2d, 0x3a, 0x13, - 0xad, 0xdd, 0xd1, 0x2e, 0xb1, 0x70, 0x79, 0x8e, 0x74, 0xbe, 0xc0, 0x0b, - 0xda, 0xf9, 0x3c, 0xaf, 0xfb, 0xd0, 0xe2, 0x9c, 0x10, 0x7e, 0xa8, 0xe1, - 0xb4, 0x32, 0xc9, 0x75, 0xcc, 0x72, 0x64, 0x69, 0x54, 0x45, 0x4b, 0xe4, - 0x52, 0xb3, 0x00, 0x42, 0x3d, 0xf9, 0x5d, 0xe4, 0x14, 0x2a, 0xf0, 0xbc, - 0x08, 0xad, 0x31, 0x2f, 0xe5, 0x00, 0xe4, 0x6b, 0x28, 0x1f, 0x45, 0x9e, - 0x07, 0x3f, 0x02, 0x67, 0x48, 0x69, 0x20, 0x0f, 0xb0, 0x23, 0xf6, 0x03, - 0x53, 0x26, 0x3e, 0xe6, 0xc6, 0x2b, 0x0b, 0x2c, 0x75, 0x6e, 0x47, 0x61, - 0xb7, 0x59, 0xcd, 0x19, 0x82, 0x58, 0xa3, 0x69, 0xb0, 0x49, 0x76, 0x65, - 0x03, 0xa3, 0x9e, 0x60, 0x95, 0x02, 0x66, 0x26, 0xde, 0x31, 0xcc, 0x29, - 0x61, 0xcf, 0xde, 0xdc, 0xb8, 0xc0, 0x70, 0x18, 0x4a, 0x18, 0x32, 0xb0, - 0xc4, 0x32, 0x10, 0x1a, 0xab, 0x41, 0xbe, 0x66, 0xee, 0x5d, 0xe3, 0x5c, - 0xf5, 0x22, 0x05, 0x15, 0x9c, 0x1b, 0xb4, 0x6e, 0x91, 0x42, 0x80, 0x38, - 0xfa, 0x8d, 0x35, 0x32, 0x1d, 0x65, 0xcf, 0x64, 0x19, 0xd0, 0x21, 0x34, - 0x9d, 0xcb, 0x9f, 0xc9, 0x43, 0x63, 0x61, 0xd2, 0x3b, 0xd3, 0x01, 0x7f, - 0xae, 0x3f, 0x77, 0xd5, 0x5f, 0x45, 0x52, 0x9a, 0x71, 0xe8, 0xa8, 0x41, - 0xc4, 0x95, 0x96, 0xdf, 0x42, 0x3d, 0xcb, 0xb7, 0x38, 0x28, 0x73, 0x8c, - 0x11, 0xa8, 0x1f, 0xd9, 0xe3, 0x8d, 0xe1, 0x97, 0xa0, 0x74, 0xc4, 0xbe, - 0x45, 0x3e, 0x61, 0x77, 0xdd, 0x19, 0xdd, 0xcc, 0x2f, 0x75, 0xeb, 0xa7, - 0x07, 0xbe, 0x58, 0xc4, 0x41, 0x54, 0x0f, 0xd3, 0x8e, 0xcf, 0x36, 0xe7, - 0x43, 0xdc, 0xc9, 0x9a, 0xdf, 0x6e, 0x58, 0x64, 0xe0, 0xce, 0x40, 0x1f, - 0xcc, 0x43, 0x38, 0x25, 0xac, 0x4c, 0x64, 0xc8, 0xcf, 0xd3, 0x05, 0x89, - 0x34, 0x41, 0x12, 0x2b, 0xb2, 0xf5, 0x57, 0x3f, 0xe7, 0x0e, 0xf5, 0x6a, - 0x7f, 0x90, 0xdb, 0xfa, 0x97, 0xf8, 0xc2, 0xf5, 0xd9, 0xa4, 0xce, 0x07, - 0x5b, 0x09, 0xb0, 0x71, 0x17, 0xf3, 0x76, 0xc6, 0x5b, 0xc9, 0xb7, 0x73, - 0xd1, 0x07, 0xb2, 0x72, 0x71, 0xe0, 0xdc, 0x5d, 0x50, 0xa0, 0x38, 0x89, - 0xfa, 0x82, 0xb8, 0x62, 0x69, 0xcf, 0x81, 0xa1, 0x60, 0x9c, 0x33, 0x4e, - 0x5a, 0xa5, 0x9a, 0x76, 0x54, 0x1a, 0x40, 0xa1, 0xba, 0x63, 0xd0, 0xde, - 0x1c, 0x23, 0xbf, 0xed, 0x9b, 0x12, 0xc8, 0xc1, 0x41, 0x3e, 0x07, 0xe0, - 0xc8, 0xbf, 0x04, 0x73, 0xe3, 0x3a, 0xce, 0xbe, 0x54, 0x5d, 0x9d, 0x97, - 0xb9, 0xe8, 0xc9, 0x69, 0xd3, 0xc2, 0x0a, 0x1e, 0x65, 0x80, 0xa2, 0xeb, - 0x0c, 0x11, 0x77, 0x07, 0xe8, 0x09, 0xba, 0x92, 0x3d, 0xe9, 0x10, 0x77, - 0xf4, 0x8b, 0x7b, 0x8f, 0x9e, 0x1d, 0xe9, 0x97, 0x76, 0x94, 0x6a, 0x91, - 0x13, 0xb7, 0x42, 0x2d, 0xdf, 0x70, 0x3c, 0x5c, 0xb6, 0x8f, 0xb5, 0x7c, - 0x21, 0x55, 0x23, 0x72, 0xe7, 0x45, 0xba, 0xb2, 0xf6, 0x3a, 0x30, 0x0f, - 0x51, 0x52, 0x08, 0x13, 0x56, 0x1e, 0x7c, 0x4d, 0x52, 0x60, 0x1c, 0x79, - 0xd5, 0x02, 0x82, 0x01, 0x01, 0x00, 0xfb, 0xfe, 0x82, 0xfc, 0x4e, 0x1f, - 0x85, 0x7e, 0x0f, 0xf0, 0x55, 0x93, 0x9c, 0xf9, 0x0c, 0x64, 0xc9, 0xe1, - 0xbb, 0xa9, 0x69, 0xae, 0x17, 0x07, 0x72, 0x25, 0x8d, 0x99, 0x19, 0x43, - 0xc1, 0x29, 0x96, 0xcf, 0x27, 0x01, 0x85, 0x55, 0xca, 0x10, 0xcb, 0xf6, - 0xfe, 0x31, 0x82, 0x66, 0x23, 0xfb, 0xf0, 0xf7, 0xb1, 0x2c, 0x07, 0x5f, - 0xeb, 0x9c, 0xf0, 0xb8, 0xf1, 0x01, 0xc8, 0x7b, 0xde, 0xa2, 0x5e, 0x7f, - 0x03, 0x25, 0x73, 0x49, 0x27, 0x57, 0x30, 0x7f, 0x55, 0x55, 0x58, 0x15, - 0x16, 0x13, 0x70, 0x75, 0x69, 0x86, 0xc0, 0xf9, 0x5c, 0xd7, 0x35, 0x38, - 0xf9, 0xa2, 0xed, 0x0a, 0xa4, 0xe1, 0x57, 0xcf, 0x1c, 0x1c, 0x75, 0x78, - 0xbc, 0xb0, 0x88, 0x13, 0x35, 0x19, 0x7c, 0x58, 0x1a, 0xec, 0x7a, 0x0f, - 0x8b, 0x77, 0xf3, 0x4f, 0xaa, 0xa8, 0xcc, 0xd8, 0x06, 0x5c, 0x1e, 0x9a, - 0x3f, 0x52, 0x66, 0x96, 0x44, 0x0c, 0xfd, 0x9c, 0xdd, 0xc7, 0xef, 0x87, - 0x4c, 0xb4, 0xa3, 0xd3, 0xf0, 0xaf, 0x0b, 0x02, 0x5a, 0xcb, 0xc0, 0xce, - 0xda, 0xd3, 0xba, 0xdc, 0x7e, 0xca, 0xd8, 0xfa, 0x80, 0xf1, 0xe5, 0x40, - 0xcd, 0x42, 0xa6, 0x32, 0x81, 0x49, 0x3f, 0x81, 0x02, 0xab, 0xa1, 0x6d, - 0x3a, 0x33, 0x04, 0x89, 0xb9, 0x48, 0xff, 0xa1, 0x02, 0x1b, 0x6c, 0x75, - 0x50, 0x47, 0x30, 0x51, 0x56, 0x27, 0x8b, 0xec, 0x17, 0x8f, 0x13, 0x9e, - 0x99, 0x18, 0x32, 0x54, 0x35, 0x2c, 0xd1, 0xc3, 0x6b, 0x96, 0xed, 0xcb, - 0xc0, 0x86, 0xeb, 0x68, 0x3e, 0xf5, 0x4b, 0x6a, 0x85, 0xf2, 0xcc, 0x3e, - 0x87, 0x0c, 0x24, 0x94, 0x34, 0x76, 0xe0, 0xee, 0x90, 0x30, 0x00, 0xdc, - 0x41, 0xf4, 0x1b, 0xad, 0x81, 0x08, 0xf7, 0x05, 0x06, 0x6e, 0x4b, 0x5b, - 0x7b, 0xc3, 0x2d, 0xaa, 0x1f, 0x37, 0xb1, 0xe1, 0x5a, 0x65, 0x02, 0x82, - 0x01, 0x01, 0x00, 0xf6, 0x3b, 0x41, 0x17, 0x76, 0x3a, 0x48, 0xca, 0x82, - 0x34, 0x61, 0xc8, 0x4f, 0x98, 0x5b, 0x90, 0xea, 0xc1, 0x1d, 0x43, 0x22, - 0x7b, 0x85, 0xa7, 0x29, 0x50, 0x8e, 0x91, 0xab, 0xf3, 0x5e, 0x1f, 0x34, - 0x72, 0xc9, 0x8b, 0xe6, 0x21, 0x94, 0x1b, 0xfa, 0x5f, 0xce, 0x7b, 0xa3, - 0xd1, 0xf9, 0xab, 0xd4, 0x13, 0x75, 0x53, 0xb7, 0x63, 0x4b, 0xb5, 0x33, - 0x09, 0xf1, 0x6e, 0xe9, 0x63, 0xca, 0x06, 0xd0, 0x92, 0x16, 0x84, 0x5f, - 0xa5, 0x09, 0x12, 0x0f, 0x06, 0x07, 0x49, 0x45, 0x03, 0x68, 0x08, 0x3c, - 0x02, 0x6e, 0xb0, 0x0a, 0x3d, 0x39, 0xce, 0x58, 0x17, 0x1d, 0xb9, 0x9e, - 0x10, 0xd1, 0xe2, 0x4b, 0x68, 0x64, 0x9b, 0xc4, 0x1a, 0x9b, 0x3e, 0x1d, - 0x7c, 0x4e, 0x36, 0x83, 0x67, 0x9d, 0x68, 0x9c, 0xe4, 0x7d, 0x39, 0x6e, - 0x6f, 0x82, 0xea, 0x7b, 0x5f, 0x06, 0x4a, 0x71, 0x89, 0xd3, 0x42, 0x76, - 0x22, 0xd5, 0x2d, 0x83, 0xb9, 0x75, 0x9c, 0xa1, 0xb4, 0xb1, 0x0c, 0x8e, - 0x11, 0x4a, 0x6e, 0x1e, 0x36, 0x59, 0x01, 0xf3, 0x4d, 0x3b, 0x88, 0xd4, - 0x34, 0x03, 0xb1, 0x6c, 0xae, 0xd7, 0xd2, 0x90, 0x5b, 0xf7, 0xb2, 0x97, - 0x40, 0xee, 0x38, 0x08, 0x98, 0x3d, 0x85, 0xa5, 0x44, 0xa7, 0x84, 0xee, - 0xfc, 0xfe, 0x94, 0xfa, 0x44, 0x3c, 0x8e, 0xbb, 0x83, 0x46, 0x07, 0xb3, - 0x68, 0xae, 0xb0, 0x72, 0xa9, 0x0e, 0xaf, 0x87, 0x32, 0x1a, 0xa5, 0x52, - 0xc3, 0x67, 0x40, 0xc7, 0xe9, 0x13, 0x73, 0x98, 0x77, 0x61, 0x3d, 0xae, - 0x19, 0xa9, 0x86, 0x07, 0x5c, 0x95, 0x62, 0x4d, 0x36, 0x8c, 0xa6, 0x36, - 0x57, 0xd1, 0x41, 0x1b, 0x47, 0x73, 0x98, 0x46, 0x5c, 0xf5, 0x4e, 0x1a, - 0xf2, 0xa7, 0x7b, 0x1e, 0xee, 0x03, 0xdc, 0xf2, 0x68, 0x1f, 0x05, 0xd7, - 0xbf, 0x5b, 0x98, 0x20, 0xfc, 0xff, 0xcd, 0x02, 0x82, 0x01, 0x01, 0x00, - 0x99, 0x2a, 0x17, 0x3f, 0x77, 0xd4, 0x9c, 0xf5, 0x04, 0x87, 0x15, 0xdc, - 0xc4, 0xfa, 0x73, 0x58, 0x07, 0x85, 0x16, 0xe5, 0x60, 0x00, 0x9a, 0xaa, - 0xc1, 0xec, 0xa5, 0x66, 0x3a, 0xfe, 0xfd, 0xb7, 0x63, 0x9c, 0xc1, 0x9e, - 0xa1, 0x06, 0x85, 0xed, 0x33, 0xac, 0x0a, 0xd0, 0xd8, 0xeb, 0x70, 0x4f, - 0xc0, 0x25, 0x2d, 0x21, 0x0f, 0xd2, 0x73, 0x89, 0x4e, 0x9f, 0x7a, 0x8d, - 0x94, 0xe8, 0x05, 0x68, 0x37, 0x7b, 0x87, 0xd4, 0x09, 0x80, 0x9b, 0x52, - 0xd9, 0x7d, 0x6b, 0xc6, 0x95, 0xe5, 0x2b, 0x27, 0xe1, 0xa0, 0xdb, 0xe5, - 0x36, 0x01, 0xdb, 0x36, 0x4b, 0x79, 0x37, 0xf2, 0x99, 0x95, 0x70, 0xa6, - 0x2f, 0x13, 0x09, 0x89, 0x1a, 0xb5, 0xaa, 0x2a, 0xba, 0x6a, 0xc2, 0x49, - 0x9d, 0x54, 0x87, 0xf8, 0xd8, 0x2f, 0xfe, 0x9b, 0x87, 0xde, 0x12, 0x62, - 0xcb, 0x2f, 0x3a, 0x9e, 0x5f, 0x53, 0x6d, 0xcd, 0x8d, 0xe1, 0x23, 0xb7, - 0xa9, 0xa6, 0xe0, 0xfe, 0x97, 0x4e, 0x6b, 0x87, 0x18, 0x54, 0xc7, 0xe3, - 0xfd, 0x13, 0x0f, 0x50, 0xec, 0xfe, 0x4d, 0xef, 0x87, 0x92, 0x61, 0xd6, - 0xb5, 0x8f, 0x7d, 0x34, 0x8a, 0x1d, 0x9b, 0x25, 0x39, 0x93, 0x55, 0x15, - 0xca, 0x6d, 0x85, 0xcc, 0x00, 0x30, 0x3d, 0xc1, 0xa8, 0xae, 0x75, 0x5a, - 0x33, 0x56, 0x0f, 0xcb, 0xcf, 0x5e, 0x76, 0xce, 0xee, 0x45, 0x61, 0xd2, - 0x63, 0xaf, 0xba, 0x9a, 0x12, 0x58, 0xc1, 0xc0, 0xfd, 0x46, 0x45, 0x93, - 0xda, 0x63, 0xa7, 0x4f, 0x73, 0x75, 0xf6, 0xad, 0x8b, 0x04, 0x2f, 0xd0, - 0x34, 0x68, 0xa8, 0xc5, 0xec, 0xf2, 0xcc, 0x6e, 0xcb, 0x04, 0xf1, 0xe6, - 0x97, 0xcd, 0x29, 0x02, 0xa4, 0x63, 0x3c, 0x0b, 0x3d, 0x8f, 0x75, 0xf0, - 0x97, 0x04, 0x0c, 0xe6, 0x99, 0x13, 0x1f, 0xe4, 0x80, 0x2a, 0xf9, 0x12, - 0x87, 0x21, 0xec, 0x29, 0x02, 0x82, 0x01, 0x00, 0x57, 0xc6, 0x33, 0xa3, - 0xeb, 0x6f, 0x47, 0x77, 0x79, 0x06, 0xb7, 0x3c, 0xb2, 0xb2, 0xfb, 0x21, - 0x23, 0xae, 0x07, 0x82, 0x61, 0x0e, 0x6b, 0x4c, 0x75, 0x7b, 0xd3, 0xf6, - 0xb5, 0xb7, 0x21, 0x7c, 0x3a, 0x34, 0x19, 0x08, 0x97, 0xd6, 0xac, 0x77, - 0x74, 0xbf, 0x26, 0x5a, 0x08, 0xc1, 0xd7, 0x20, 0x9b, 0x8e, 0xfc, 0x2a, - 0x05, 0x9b, 0x8d, 0xe7, 0x5f, 0xf4, 0x51, 0x6e, 0x5a, 0x20, 0x4a, 0x6a, - 0x37, 0x7b, 0x7c, 0x2f, 0x5f, 0xf0, 0xf2, 0xd4, 0xcf, 0x2a, 0x34, 0xfa, - 0xb7, 0x71, 0x49, 0x6a, 0x76, 0x09, 0xdf, 0xef, 0x3d, 0x17, 0x2a, 0x3e, - 0x16, 0x44, 0xd7, 0x41, 0xcd, 0xc8, 0xed, 0x28, 0x9f, 0xfc, 0xec, 0xb0, - 0x62, 0x2d, 0xa1, 0xdd, 0x78, 0xa1, 0x51, 0x38, 0x39, 0x8b, 0x7c, 0x1f, - 0x48, 0x9e, 0x62, 0xcd, 0x50, 0x42, 0xcc, 0x06, 0x4e, 0x48, 0x47, 0x73, - 0xce, 0x19, 0x75, 0x87, 0xa1, 0x99, 0x35, 0x28, 0xee, 0x65, 0xf4, 0x39, - 0x0b, 0xa3, 0xdf, 0xe1, 0x3b, 0xdb, 0x8a, 0x0e, 0xcb, 0x12, 0x50, 0x94, - 0x53, 0x68, 0xda, 0xaa, 0x22, 0x0b, 0x10, 0xad, 0xf4, 0xb2, 0x37, 0x19, - 0x46, 0x80, 0xa2, 0x41, 0xb5, 0x8d, 0x5d, 0xdd, 0xf7, 0xa2, 0x5d, 0x7c, - 0x00, 0xb8, 0x02, 0x87, 0x6e, 0xb2, 0x1d, 0x06, 0x7a, 0x58, 0x4c, 0xc6, - 0x0c, 0xad, 0xf5, 0x0e, 0xd5, 0xb3, 0xa1, 0x62, 0x20, 0xdd, 0x86, 0xf0, - 0xa7, 0x5f, 0x03, 0x04, 0xa0, 0x06, 0x2c, 0x0e, 0x79, 0xb4, 0xea, 0x4c, - 0x30, 0xb3, 0x8d, 0xa4, 0x71, 0x25, 0x90, 0xba, 0xc8, 0x71, 0x06, 0x87, - 0x6e, 0x42, 0xdd, 0xcc, 0x7a, 0x5e, 0xbf, 0xa7, 0x57, 0xd4, 0x16, 0xae, - 0xd7, 0x96, 0x57, 0x93, 0xaa, 0x23, 0x89, 0xf4, 0x67, 0xc8, 0x2c, 0xf4, - 0x5c, 0x2d, 0x25, 0xb1, 0xed, 0x80, 0xb7, 0x63, 0xf9, 0x8e, 0x76, 0x99, - 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0xf8, 0x0f, 0x4d, 0xbb, 0xd4, 0xe4, - 0x25, 0x05, 0xa3, 0x17, 0x4c, 0x37, 0x62, 0x02, 0x14, 0x3e, 0xc0, 0x72, - 0xe8, 0xea, 0x3d, 0x8a, 0x1a, 0xc1, 0x6e, 0x6a, 0xdd, 0x27, 0xc6, 0xc2, - 0x4c, 0xd6, 0x1a, 0x09, 0xe6, 0x08, 0xc9, 0xf1, 0x5f, 0x91, 0x32, 0x66, - 0x97, 0xbb, 0x3d, 0xaf, 0x19, 0x57, 0x9f, 0x7b, 0x49, 0x99, 0x2f, 0x46, - 0x62, 0xb7, 0xcc, 0xde, 0xec, 0x8f, 0x30, 0x2d, 0xe1, 0x21, 0xad, 0x8e, - 0xf4, 0x38, 0xf6, 0xc0, 0x1f, 0x45, 0x60, 0x5e, 0x5f, 0xac, 0x65, 0x9c, - 0x8e, 0xc6, 0xa0, 0xd2, 0xa6, 0x4f, 0xf8, 0x67, 0xc0, 0x1f, 0x70, 0xcc, - 0x9f, 0x29, 0x5f, 0x9c, 0x42, 0x9c, 0xa9, 0x1e, 0x5e, 0x97, 0x61, 0x11, - 0x11, 0xd3, 0x88, 0x4a, 0xd8, 0xc2, 0xee, 0xab, 0x6a, 0xde, 0x6c, 0x20, - 0xbb, 0x1d, 0xa4, 0xc5, 0x49, 0xdb, 0xb4, 0x7c, 0x8f, 0x1f, 0xad, 0x4d, - 0xc3, 0x24, 0x7d, 0x77, 0x0b, 0x2e, 0x9f, 0x94, 0xe5, 0x48, 0xe1, 0x69, - 0x15, 0xac, 0xc6, 0x96, 0x9a, 0x5b, 0x62, 0xcb, 0x73, 0x45, 0x27, 0x43, - 0xd3, 0xd4, 0x49, 0x99, 0x3e, 0x69, 0xfd, 0x63, 0x59, 0x2b, 0x73, 0x94, - 0x56, 0x20, 0x39, 0x0c, 0x97, 0xbc, 0x85, 0x8d, 0xfe, 0xe6, 0x4b, 0x84, - 0xf7, 0x6d, 0x9d, 0x64, 0x34, 0x06, 0xee, 0x4c, 0x4f, 0x61, 0x66, 0x9c, - 0xaf, 0xd0, 0x98, 0x4d, 0x19, 0x66, 0xa6, 0x67, 0x25, 0x8d, 0xa3, 0x93, - 0xe3, 0xe5, 0x45, 0x10, 0xf5, 0x88, 0xb6, 0xd8, 0x53, 0x68, 0x77, 0x99, - 0xd0, 0x84, 0x9c, 0x78, 0x69, 0x85, 0xe2, 0xb6, 0x15, 0x3c, 0xdc, 0xff, - 0x52, 0xd6, 0x44, 0xfe, 0xa7, 0x9e, 0x83, 0x60, 0x7f, 0x63, 0xde, 0x59, - 0xe2, 0x7c, 0xf9, 0xfd, 0x9a, 0xb3, 0x38, 0xf0, 0xfb, 0x26, 0x6a, 0x67, - 0xcb, 0xab, 0xc9, 0x9e, 0xac, 0xb0, 0x1e, 0x0b, 0x5e, + 0xcc, 0x87, 0x25, 0xf6, 0xb3, 0x8d, 0x5d, 0x01, 0xae, 0xeb, 0x07, 0xd3, + 0x6e, 0x03, 0xde, 0x4d, 0x31, 0xa0, 0x26, 0x1c, 0xe7, 0x4f, 0xe1, 0x1a, + 0x89, 0x5e, 0xcf, 0xd1, 0x3d, 0x16, 0x8a, 0xee, 0x93, 0x2a, 0xf1, 0x35, + 0xff, 0xbb, 0x84, 0x98, 0x77, 0x27, 0x38, 0x97, 0x08, 0x1f, 0x3f, 0x75, + 0x93, 0xc1, 0x4a, 0xe8, 0x2b, 0xc2, 0x66, 0xc1, 0x05, 0x44, 0xf7, 0x26, + 0xae, 0x1c, 0xcf, 0x13, 0x3d, 0x8a, 0x40, 0x18, 0xd3, 0x80, 0xdf, 0xa2, + 0x52, 0x51, 0xc0, 0x11, 0x10, 0x7b, 0x75, 0x13, 0xa9, 0x43, 0x34, 0x6a, + 0xa0, 0xe0, 0xde, 0xc1, 0x1d, 0x8d, 0x7f, 0xa2, 0x56, 0x44, 0x65, 0x3c, + 0x11, 0x8d, 0xaa, 0xbc, 0xe6, 0xd4, 0x1f, 0x06, 0x6f, 0x66, 0x21, 0x76, + 0x88, 0x01, 0x47, 0x80, 0x55, 0x78, 0x0e, 0x91, 0xb6, 0x8e, 0xa3, 0xc9, + 0x58, 0x56, 0xd1, 0x72, 0xa8, 0x90, 0x32, 0xb3, 0x9c, 0x82, 0x4e, 0x8b, + 0x7d, 0xc1, 0xa3, 0xf8, 0xae, 0xe4, 0xf6, 0xb3, 0x68, 0xba, 0xa3, 0xcd, + 0x68, 0xf5, 0x0d, 0x52, 0x68, 0x01, 0x17, 0xe9, 0xb9, 0x13, 0xd7, 0xf8, + 0xc8, 0x52, 0xa0, 0xd1, 0x00, 0x8e, 0x8b, 0x87, 0xa5, 0xc9, 0x7e, 0x37, + 0xaf, 0xc1, 0x1a, 0x08, 0x05, 0x50, 0x55, 0x7b, 0x8b, 0x4d, 0xcb, 0xd8, + 0xe1, 0x92, 0xed, 0x33, 0x66, 0xd8, 0x3a, 0x09, 0xd2, 0x7c, 0x77, 0xe1, + 0x50, 0xf6, 0x68, 0x55, 0xb5, 0xdc, 0xfd, 0xb2, 0xdf, 0x15, 0x1b, 0xd7, + 0xf4, 0x44, 0x25, 0x0e, 0xaf, 0x6f, 0xe3, 0xf2, 0x36, 0x82, 0x6c, 0x81, + 0xfa, 0x84, 0x81, 0x01, 0xbf, 0xaa, 0xd5, 0x35, 0xff, 0xb5, 0x22, 0xd6, + 0xff, 0x97, 0xc9, 0xdd, 0x1e, 0x43, 0xb8, 0x2c, 0xce, 0x29, 0x21, 0xd1, + 0x53, 0xc1, 0x54, 0x50, 0xc4, 0x72, 0x4f, 0xfd, 0x3e, 0xfd, 0xca, 0x57, + 0x8e, 0x01, 0x36, 0x50, 0xa0, 0x3a, 0x5c, 0xf5, 0x01, 0xfc, 0x58, 0x60, + 0x0f, 0xb5, 0xc8, 0x60, 0xc0, 0xef, 0x0c, 0xfe, 0x0a, 0xc0, 0x71, 0x2d, + 0x44, 0x13, 0x13, 0xdc, 0xa4, 0x1a, 0x4d, 0x7d, 0x41, 0x1e, 0x6c, 0x83, + 0xb2, 0x15, 0x17, 0x49, 0xd2, 0x8b, 0xe4, 0x69, 0x2f, 0x62, 0x37, 0x3d, + 0xb0, 0x7e, 0x4a, 0x79, 0x05, 0x1c, 0x56, 0x82, 0xec, 0x20, 0xd4, 0x91, + 0xc4, 0xcf, 0xc7, 0xbc, 0x14, 0x0f, 0x35, 0xfa, 0x15, 0xe5, 0xa1, 0xfa, + 0x75, 0x6d, 0x65, 0xb8, 0xef, 0x93, 0xad, 0xdf, 0x4c, 0x47, 0xc4, 0xa3, + 0x5b, 0x18, 0x4f, 0x22, 0xa1, 0xef, 0x08, 0x99, 0x48, 0xf9, 0x46, 0xf6, + 0xfa, 0xeb, 0x64, 0x70, 0xf2, 0x67, 0x46, 0xe6, 0x58, 0xcf, 0x9b, 0x41, + 0x77, 0x41, 0x78, 0x42, 0xe6, 0xd3, 0x73, 0x55, 0x80, 0x89, 0xaf, 0xf7, + 0x21, 0xb9, 0x30, 0xe9, 0xec, 0x61, 0xb4, 0xf6, 0xa0, 0x2c, 0x05, 0x2c, + 0x69, 0x24, 0xd3, 0x9a, 0x5b, 0xbb, 0x15, 0xed, 0x11, 0x06, 0xc4, 0x01, + 0x0f, 0x4d, 0xd6, 0x9c, 0x79, 0xd0, 0x42, 0xc8, 0xb3, 0x16, 0x61, 0xb1, + 0xee, 0x48, 0x6b, 0xc6, 0x9d, 0xb5, 0xf2, 0xf0, 0x7a, 0x50, 0xd8, 0x5b, + 0x20, 0x69, 0x9d, 0x60, 0x13, 0x15, 0x62, 0x5b, 0xb8, 0x69, 0x62, 0x9c, + 0x7f, 0x4c, 0x5d, 0x48, 0xb2, 0x11, 0xd0, 0x97, 0xf4, 0x38, 0xac, 0xec, + 0x95, 0x97, 0x3a, 0x38, 0xd4, 0x21, 0x09, 0x0a, 0xf0, 0xf1, 0x34, 0x84, + 0xe4, 0xe9, 0x4b, 0x8c, 0xb5, 0xef, 0xc1, 0x85, 0x07, 0xf4, 0xb9, 0x31, + 0xdf, 0x39, 0x98, 0x7f, 0xfb, 0x28, 0x30, 0x29, 0x3e, 0x4d, 0xa3, 0x81, + 0xaa, 0xf7, 0x0b, 0x32, 0x92, 0x95, 0x2e, 0xf9, 0x34, 0xe2, 0xb4, 0x0f, + 0xde, 0xbb, 0xa3, 0xd9, 0x70, 0x1b, 0x76, 0xe1, 0xbe, 0x54, 0x82, 0x74, + 0xb2, 0x60, 0x2d, 0x88, 0x85, 0x37, 0x48, 0x2d, 0x02, 0x03, 0x01, 0x00, + 0x01, 0x02, 0x82, 0x02, 0x00, 0x1a, 0x94, 0x3e, 0x9c, 0x00, 0x89, 0xf0, + 0xaa, 0x01, 0x16, 0x04, 0x8a, 0x96, 0xab, 0xb4, 0x86, 0x32, 0x1a, 0x86, + 0x91, 0x6f, 0x82, 0xfb, 0x35, 0x24, 0x60, 0x78, 0x9f, 0xcf, 0xb1, 0x40, + 0x05, 0x50, 0x85, 0x3e, 0x5a, 0xfe, 0xdc, 0x9a, 0xd6, 0xe8, 0x77, 0x25, + 0x9c, 0xc4, 0xfe, 0xb0, 0x93, 0xc2, 0x4b, 0x96, 0x85, 0x34, 0xf8, 0x9a, + 0xbb, 0x5f, 0x48, 0xae, 0xd8, 0xad, 0x3c, 0x4b, 0xb1, 0xcb, 0xa7, 0xcd, + 0x7c, 0x1c, 0x72, 0x4d, 0x3d, 0xae, 0x36, 0x77, 0x00, 0x10, 0xb5, 0x06, + 0x8a, 0x33, 0x4f, 0x2b, 0x3e, 0xe7, 0x20, 0xc9, 0xf9, 0xed, 0x32, 0x00, + 0x01, 0xf3, 0xf5, 0x87, 0xf5, 0x66, 0x2f, 0x93, 0x9e, 0x60, 0x5d, 0xf5, + 0x19, 0x34, 0x3d, 0x60, 0xc0, 0x63, 0x5c, 0xcd, 0x32, 0xb1, 0x88, 0xbc, + 0x55, 0xf5, 0xd4, 0x34, 0x17, 0x3c, 0x9e, 0x6d, 0xb2, 0x19, 0x93, 0x41, + 0xaf, 0x83, 0x39, 0x90, 0xe5, 0x02, 0x46, 0xf9, 0x9c, 0xdd, 0xf7, 0x9d, + 0xd2, 0xc3, 0x5b, 0xab, 0xe1, 0x4c, 0x10, 0x3a, 0x76, 0xb8, 0xd2, 0xd9, + 0x8d, 0x73, 0x52, 0x8f, 0x98, 0xc2, 0x49, 0xb0, 0xa1, 0xf0, 0x91, 0x55, + 0xb3, 0x1f, 0x59, 0x9f, 0xc8, 0x33, 0x54, 0x24, 0x22, 0xa2, 0x34, 0x26, + 0x23, 0xbb, 0xbe, 0xf4, 0xac, 0x7e, 0xe6, 0x05, 0xe2, 0xcd, 0xec, 0xf0, + 0x1f, 0xea, 0x25, 0x68, 0x3b, 0xd4, 0xf6, 0x6c, 0xa9, 0x24, 0xcc, 0xef, + 0x00, 0x41, 0x8a, 0xdf, 0xf7, 0x30, 0xc4, 0x71, 0x4f, 0x66, 0xff, 0xa2, + 0xaf, 0x0d, 0xa3, 0xe5, 0xdf, 0x7f, 0x53, 0x9c, 0x63, 0x42, 0x89, 0xfc, + 0x12, 0xbc, 0x24, 0x09, 0x3e, 0xc8, 0xf0, 0xec, 0x18, 0x0a, 0xf0, 0x90, + 0x7c, 0xec, 0x1e, 0xbe, 0xc9, 0x11, 0xfa, 0x18, 0x0f, 0xb5, 0xf3, 0xc8, + 0x0e, 0xd8, 0x52, 0x89, 0x6a, 0xd6, 0xe6, 0xb3, 0xec, 0xcb, 0x44, 0xde, + 0x62, 0x19, 0x3d, 0x52, 0x11, 0x8c, 0xab, 0x2b, 0x17, 0x10, 0x71, 0xd5, + 0xfd, 0xaa, 0x7c, 0x42, 0x88, 0xfc, 0x77, 0x66, 0xd5, 0x77, 0x74, 0xf4, + 0xbe, 0x46, 0x15, 0x1b, 0xb9, 0x0a, 0xce, 0x7c, 0x10, 0xc2, 0x15, 0xf6, + 0x2e, 0xd2, 0x6e, 0x52, 0xe6, 0x12, 0x24, 0x36, 0xf5, 0x32, 0xbd, 0x54, + 0xfc, 0x08, 0x27, 0x2a, 0xdb, 0x21, 0x6a, 0x2d, 0xb4, 0x33, 0xd5, 0x69, + 0x9c, 0x40, 0xad, 0x58, 0xfa, 0xa2, 0x66, 0x08, 0x98, 0xff, 0xcc, 0xfc, + 0x98, 0x00, 0x2f, 0x8b, 0xb0, 0x36, 0x1b, 0x4c, 0xf9, 0xed, 0x6e, 0x93, + 0xc1, 0xca, 0x96, 0xd3, 0x4a, 0x1e, 0xf4, 0x04, 0x60, 0xf8, 0x59, 0x18, + 0xcf, 0xde, 0x4a, 0x81, 0x93, 0xb5, 0x1e, 0xce, 0xa4, 0xb3, 0x90, 0x3c, + 0xae, 0x92, 0x4a, 0x8f, 0xad, 0x5f, 0x83, 0x08, 0x95, 0x4c, 0x9f, 0x19, + 0xa7, 0x59, 0x7b, 0xf0, 0xa7, 0x51, 0x26, 0xa5, 0x57, 0xe4, 0x9f, 0x8b, + 0xbd, 0x31, 0xfc, 0x4e, 0x85, 0x56, 0xf2, 0x30, 0x64, 0x0b, 0xf3, 0x62, + 0x04, 0xc6, 0xcf, 0x3d, 0x56, 0xdc, 0xa5, 0xa4, 0x1d, 0x86, 0x03, 0x07, + 0xba, 0x67, 0x05, 0xa6, 0x98, 0x68, 0x11, 0x00, 0xa3, 0x27, 0xf9, 0x17, + 0x39, 0xc4, 0x86, 0xc4, 0x70, 0xba, 0x71, 0xd0, 0x3d, 0x28, 0x53, 0x14, + 0xb0, 0xd7, 0xd0, 0x40, 0x08, 0xe0, 0x3f, 0x2a, 0x2b, 0x85, 0xe7, 0xc2, + 0x43, 0xd6, 0xfd, 0x9b, 0x97, 0xa0, 0x21, 0x68, 0xc0, 0x69, 0xec, 0x57, + 0x2d, 0x3f, 0x0c, 0xa1, 0x5e, 0xbc, 0xb1, 0x73, 0x9f, 0x3a, 0x0b, 0x3c, + 0x14, 0x7a, 0x88, 0xe0, 0xb7, 0x4f, 0x45, 0xa0, 0x07, 0xae, 0x92, 0x7d, + 0x6f, 0x82, 0x2b, 0xf5, 0x0b, 0x87, 0xb1, 0xe9, 0x3f, 0xe7, 0xd9, 0x18, + 0x0b, 0xc6, 0xbc, 0x12, 0xbd, 0xe6, 0xc8, 0x07, 0x0d, 0x10, 0xc9, 0x73, + 0x31, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf5, 0x0e, 0xbc, 0xea, 0xc9, 0xd3, + 0xc6, 0x44, 0x82, 0xa8, 0xc2, 0x65, 0xd6, 0x36, 0x54, 0x61, 0xaa, 0x4a, + 0x31, 0xa6, 0xa7, 0x63, 0x3a, 0x24, 0xc8, 0xe3, 0x47, 0x94, 0xec, 0xdf, + 0xca, 0xb1, 0xd6, 0xb5, 0x2f, 0xb6, 0xa5, 0xf3, 0x80, 0x55, 0xcc, 0x32, + 0xd6, 0xa6, 0x1b, 0x88, 0x95, 0x50, 0xde, 0x27, 0xb3, 0xd0, 0xbd, 0x68, + 0xb6, 0xd4, 0xfd, 0xa0, 0x41, 0x59, 0x8a, 0xb9, 0x88, 0x87, 0x14, 0x39, + 0x88, 0x57, 0x68, 0x06, 0xb1, 0xc4, 0x87, 0x20, 0x79, 0x49, 0x02, 0x95, + 0x2e, 0xbe, 0x1b, 0xf0, 0xde, 0xf6, 0x5a, 0x0e, 0x6f, 0x94, 0x06, 0x70, + 0x56, 0xe6, 0x86, 0x4f, 0xa2, 0x88, 0x2e, 0x3a, 0x16, 0xf2, 0x46, 0x28, + 0x20, 0x93, 0xd0, 0x37, 0x63, 0x90, 0x78, 0x18, 0x2d, 0xd0, 0xa6, 0xeb, + 0x21, 0xd3, 0xba, 0xd0, 0x63, 0x79, 0x01, 0xa2, 0x68, 0xb1, 0x4c, 0x63, + 0x2c, 0x9d, 0x0b, 0x16, 0x90, 0xed, 0x88, 0xab, 0xdd, 0xe0, 0x3f, 0x52, + 0x82, 0x47, 0xaa, 0x2e, 0x41, 0x55, 0x7d, 0x08, 0x65, 0xad, 0x34, 0xe5, + 0x3f, 0xf5, 0x3a, 0xe0, 0xe5, 0xde, 0xa1, 0x95, 0xd9, 0x3f, 0xe6, 0x5c, + 0x25, 0x87, 0x1f, 0x6f, 0x23, 0xad, 0xf3, 0x4b, 0x6e, 0x96, 0x0c, 0x29, + 0x78, 0xf2, 0xb7, 0x47, 0x5d, 0xaf, 0xce, 0x6c, 0xbb, 0x26, 0xa5, 0x39, + 0x34, 0xd2, 0x6c, 0x19, 0x3d, 0x67, 0xf3, 0x2d, 0xe9, 0x10, 0x35, 0xee, + 0xb8, 0x90, 0x22, 0xbe, 0xb7, 0xd5, 0xdf, 0x78, 0x4a, 0xc2, 0x0c, 0xa6, + 0xab, 0x91, 0xbf, 0x6b, 0x77, 0x5b, 0x6c, 0x94, 0x16, 0xf6, 0x05, 0xb4, + 0x84, 0x17, 0x36, 0xcb, 0xfb, 0xd2, 0x2a, 0xd9, 0x8a, 0xb2, 0xe8, 0x42, + 0x84, 0x57, 0xe0, 0x79, 0x3f, 0x5a, 0xf4, 0x0e, 0x55, 0x0b, 0x48, 0x76, + 0x5d, 0x59, 0xe6, 0xe1, 0xb4, 0xa4, 0xa1, 0xf5, 0x71, 0xf1, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xd5, 0xa9, 0x1d, 0x4d, 0x44, 0xbb, 0x9b, 0x73, 0xc1, + 0xfe, 0x02, 0x48, 0x92, 0x5e, 0x2c, 0x0e, 0xc1, 0xde, 0x51, 0x39, 0x0b, + 0xd8, 0xa7, 0x3b, 0x45, 0x3d, 0xa5, 0x1a, 0xe2, 0x93, 0x25, 0xae, 0x76, + 0x57, 0x08, 0x9f, 0xd4, 0xee, 0x4a, 0x2f, 0xd9, 0x6e, 0x34, 0x5b, 0x57, + 0xf6, 0x72, 0xd7, 0xd4, 0x84, 0xfd, 0xe9, 0x91, 0x89, 0xab, 0x0a, 0x63, + 0x65, 0xbf, 0x2b, 0x38, 0x68, 0x0d, 0x6b, 0xb9, 0x47, 0xf4, 0xb2, 0x17, + 0xbe, 0x66, 0x03, 0x23, 0xc2, 0x6b, 0x86, 0xd6, 0x43, 0xae, 0x68, 0x6d, + 0x82, 0xe3, 0x6e, 0xc0, 0x0c, 0xfd, 0x03, 0x89, 0x42, 0x44, 0x3c, 0xaa, + 0x04, 0xa0, 0xf9, 0x1e, 0x68, 0xec, 0x71, 0x79, 0x35, 0xb4, 0x5e, 0x79, + 0x03, 0x11, 0xbe, 0x56, 0x44, 0x0d, 0x71, 0x76, 0x94, 0x95, 0x94, 0x68, + 0x8e, 0xd1, 0xdd, 0x5c, 0x91, 0x03, 0xc5, 0x7c, 0x15, 0x8d, 0x05, 0xe4, + 0xc3, 0x7b, 0x98, 0xd8, 0x18, 0x98, 0x03, 0x07, 0x44, 0xa6, 0x4f, 0x6e, + 0xbd, 0xbf, 0x75, 0x0a, 0xab, 0x79, 0x75, 0x7e, 0x34, 0xda, 0xc4, 0x22, + 0x16, 0x3e, 0xa7, 0xc0, 0xf4, 0x2b, 0x97, 0x71, 0x0c, 0x86, 0x19, 0x78, + 0xb2, 0x41, 0x00, 0x38, 0x5a, 0xad, 0x72, 0x7e, 0x5f, 0x38, 0x36, 0xa7, + 0x4e, 0xa4, 0xbf, 0x1d, 0x36, 0xef, 0x2a, 0x5e, 0xdf, 0x9c, 0x9e, 0x8f, + 0x99, 0x6e, 0xf3, 0x19, 0x13, 0x48, 0x45, 0x0e, 0xa9, 0xf1, 0xd4, 0xa6, + 0x3d, 0xb2, 0x9c, 0xb0, 0x6f, 0x63, 0xe5, 0xba, 0xdb, 0x18, 0xe4, 0xd4, + 0x0f, 0x51, 0x12, 0xb6, 0x58, 0xd1, 0xcc, 0x23, 0xcb, 0x65, 0x38, 0x8a, + 0xca, 0x03, 0xd1, 0x41, 0xa6, 0xbc, 0x5f, 0xbd, 0x94, 0x29, 0xfe, 0x33, + 0xd3, 0x40, 0xd3, 0xe8, 0x5b, 0xfa, 0x84, 0x89, 0x08, 0xd6, 0x0b, 0x56, + 0x2f, 0x89, 0x4e, 0x8a, 0x33, 0x7d, 0xfd, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xc4, 0x95, 0x0f, 0x0d, 0x95, 0xdc, 0x51, 0xd7, 0x91, 0xad, 0x09, 0x4d, + 0x22, 0x3b, 0x31, 0x13, 0xab, 0xc4, 0x9a, 0xf1, 0xe2, 0xa3, 0x61, 0xf8, + 0x32, 0x42, 0xc8, 0xa0, 0x7a, 0x28, 0xc8, 0x74, 0x43, 0x15, 0xd3, 0xf1, + 0xc4, 0x4c, 0x82, 0xed, 0xd0, 0xc2, 0x13, 0x98, 0xea, 0xcb, 0x75, 0x64, + 0x8a, 0xe1, 0xf4, 0x88, 0x85, 0xf9, 0x23, 0x79, 0xd6, 0xff, 0xa0, 0x8c, + 0xd1, 0x11, 0x26, 0xa9, 0x9d, 0x9a, 0xcd, 0x79, 0xb8, 0x94, 0x6e, 0x34, + 0x86, 0x65, 0x91, 0x85, 0xf5, 0x11, 0x71, 0x8e, 0xc5, 0xe1, 0x43, 0x2b, + 0x02, 0x71, 0x44, 0x26, 0xcd, 0xc7, 0x7e, 0x9e, 0xac, 0xad, 0xe3, 0x67, + 0x35, 0x16, 0x1a, 0x64, 0x3d, 0xcd, 0x60, 0xdc, 0xd2, 0x92, 0x2c, 0x47, + 0xaf, 0x5f, 0x4e, 0x19, 0x6c, 0x5d, 0x81, 0x24, 0x55, 0x5f, 0x67, 0xfc, + 0xa1, 0x48, 0x04, 0x8d, 0xfe, 0x06, 0x2c, 0xba, 0xca, 0x33, 0x4f, 0x0d, + 0x8d, 0xae, 0xb9, 0x6d, 0x73, 0xbe, 0x9f, 0x8e, 0x17, 0xc1, 0xc5, 0x5d, + 0x6b, 0xd0, 0xb9, 0xa7, 0xe9, 0x9f, 0xe1, 0xdf, 0xba, 0x5c, 0xc1, 0x6a, + 0x07, 0xdb, 0xaa, 0x8c, 0x6d, 0x22, 0x0c, 0x64, 0xc9, 0xdd, 0xa1, 0x14, + 0xa0, 0xf0, 0x29, 0x05, 0x2b, 0x3a, 0x75, 0xb0, 0xd7, 0x3f, 0xe3, 0xb2, + 0xed, 0x78, 0x21, 0xe5, 0xcd, 0x73, 0x07, 0xa1, 0xa9, 0x5f, 0xd1, 0xf7, + 0xba, 0x87, 0x60, 0xc8, 0x45, 0x4b, 0x7c, 0x38, 0xfb, 0xf6, 0x5c, 0x88, + 0xb0, 0x1c, 0xd2, 0x73, 0xba, 0x2c, 0x55, 0xc3, 0xb4, 0x77, 0xe4, 0x26, + 0xae, 0x02, 0x5a, 0x2c, 0xff, 0xc4, 0xa0, 0x95, 0xf2, 0xba, 0x4e, 0x07, + 0x79, 0xa2, 0x4b, 0x76, 0x5b, 0x85, 0x48, 0x9f, 0x2a, 0x0e, 0x79, 0xb9, + 0x5f, 0xc0, 0xc3, 0x8e, 0x2a, 0x91, 0xf1, 0x2e, 0xf6, 0x5c, 0xa7, 0x49, + 0xce, 0x36, 0x94, 0x31, 0x02, 0x82, 0x01, 0x00, 0x2a, 0xa4, 0x8e, 0x0c, + 0x95, 0xe3, 0x3b, 0xab, 0x66, 0xd4, 0x63, 0x70, 0x48, 0x86, 0x33, 0x14, + 0xde, 0xec, 0x98, 0x19, 0x62, 0x9b, 0xe3, 0x04, 0x99, 0x55, 0x2c, 0x56, + 0xa9, 0x51, 0xe4, 0xfb, 0x64, 0xf3, 0x09, 0xed, 0x9c, 0x79, 0xd2, 0xa4, + 0xaa, 0x28, 0xac, 0x9a, 0x6e, 0x7b, 0xe9, 0x7f, 0xda, 0x12, 0x90, 0xfa, + 0xc4, 0xe9, 0x4d, 0x11, 0xcd, 0xb4, 0xc8, 0xea, 0xbf, 0x5f, 0x45, 0x0e, + 0x72, 0xf4, 0x41, 0x8a, 0x29, 0xe2, 0xfe, 0x49, 0x32, 0x21, 0xe3, 0x84, + 0x0d, 0xcf, 0x84, 0x47, 0xa3, 0x53, 0xb4, 0x40, 0xae, 0x63, 0xe9, 0x3b, + 0x83, 0x71, 0x8e, 0x5c, 0xed, 0x31, 0xef, 0x4e, 0xc9, 0x1a, 0xf7, 0xd5, + 0xcd, 0xf3, 0x42, 0x04, 0x78, 0xf2, 0x7b, 0xe0, 0x19, 0x27, 0x8b, 0xe7, + 0x51, 0x5b, 0x66, 0x5f, 0x30, 0x5f, 0x10, 0xd3, 0xb5, 0x5d, 0xdb, 0xfa, + 0xd6, 0x41, 0x16, 0xdc, 0x4e, 0x44, 0x15, 0xae, 0xf3, 0xb2, 0x34, 0xe4, + 0xa5, 0xd6, 0xb5, 0xba, 0xb4, 0xc7, 0x7a, 0x26, 0xc9, 0xf2, 0x5f, 0x53, + 0x6b, 0xd4, 0xf0, 0xb4, 0xa4, 0x78, 0xfc, 0x18, 0x4f, 0x12, 0x6c, 0x80, + 0xd5, 0x37, 0x42, 0xac, 0x62, 0xc2, 0x70, 0xe6, 0xb2, 0x58, 0xa6, 0xb5, + 0x6b, 0x33, 0x65, 0xec, 0xc2, 0x87, 0x97, 0xa9, 0xed, 0x12, 0xc1, 0xb9, + 0x1b, 0x26, 0x56, 0x03, 0xef, 0x75, 0x18, 0x07, 0xbc, 0xc1, 0x74, 0x73, + 0x13, 0xf2, 0x27, 0x29, 0xe1, 0xe3, 0xfe, 0x79, 0xf7, 0x5c, 0xc3, 0xfb, + 0x5d, 0xc7, 0xcc, 0xb8, 0x1e, 0xfa, 0xcf, 0x9b, 0x84, 0x79, 0x45, 0xa6, + 0x10, 0x9e, 0xcf, 0x9c, 0xf1, 0x56, 0x50, 0x5c, 0xbb, 0x55, 0xa3, 0xd3, + 0x17, 0xeb, 0x32, 0x56, 0x61, 0xd1, 0x8f, 0xe6, 0xbb, 0x41, 0x60, 0x46, + 0x83, 0x73, 0x18, 0x05, 0x3b, 0x36, 0x51, 0x99, 0x33, 0x4c, 0x03, 0xa1, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xee, 0x63, 0x70, 0x60, 0x30, 0xa4, 0xec, + 0xe9, 0xfe, 0x3b, 0xdd, 0xcf, 0xc4, 0x9f, 0x5a, 0x83, 0xf3, 0x7f, 0x63, + 0xeb, 0xcb, 0x29, 0xdb, 0xdc, 0x99, 0x9f, 0x6f, 0xf5, 0x4b, 0x59, 0x6f, + 0x11, 0x5c, 0xf1, 0xec, 0xa0, 0x99, 0x90, 0x10, 0x8a, 0x43, 0x95, 0x18, + 0xe9, 0x96, 0xf6, 0x89, 0xfd, 0xde, 0x89, 0xb2, 0xc6, 0x7e, 0xdc, 0x04, + 0xbf, 0x8e, 0x36, 0x67, 0x34, 0xc2, 0xae, 0x30, 0x17, 0xec, 0x14, 0xe0, + 0x42, 0x05, 0x0e, 0x7c, 0x65, 0x68, 0x40, 0x14, 0x6c, 0xa0, 0x48, 0x39, + 0x4d, 0xce, 0xbe, 0x90, 0xdd, 0x21, 0x95, 0x34, 0x9b, 0xba, 0xd3, 0x06, + 0x56, 0x90, 0x31, 0xb2, 0xef, 0x6e, 0x91, 0x71, 0xd2, 0xae, 0x77, 0x97, + 0xc8, 0x84, 0x4e, 0x54, 0x83, 0x94, 0xca, 0x3b, 0x76, 0x8d, 0x84, 0x96, + 0xe9, 0x9e, 0xf6, 0x3a, 0xbb, 0x59, 0xb0, 0xff, 0x7f, 0xc7, 0x0e, 0xb5, + 0x31, 0x53, 0xdd, 0x0f, 0x59, 0x01, 0x8a, 0x27, 0x5a, 0xcb, 0xa7, 0x01, + 0xf2, 0xc7, 0x6a, 0x15, 0xc8, 0x94, 0xf5, 0x34, 0x61, 0xfe, 0xdf, 0x65, + 0xbc, 0x25, 0xc2, 0xc5, 0xce, 0xc3, 0x96, 0xe5, 0x56, 0xa1, 0xa9, 0x19, + 0xbc, 0x7a, 0x05, 0x63, 0x93, 0xd5, 0x06, 0x44, 0x12, 0x6d, 0xcd, 0xef, + 0x92, 0x56, 0x64, 0x2e, 0x65, 0xa6, 0x04, 0x3c, 0xbc, 0xe9, 0x49, 0x7e, + 0x19, 0x2c, 0xf2, 0xcb, 0x33, 0x64, 0x8e, 0x11, 0x7f, 0x41, 0xdb, 0xf0, + 0x19, 0x00, 0xac, 0xb9, 0x3b, 0x0c, 0x78, 0xdd, 0xf3, 0x1f, 0x38, 0x1f, + 0x4d, 0xb3, 0xf9, 0xcc, 0xbb, 0xb6, 0x90, 0x93, 0xda, 0xbf, 0x2e, 0x89, + 0xdb, 0xbc, 0x0c, 0xb7, 0x2f, 0x20, 0xc0, 0x05, 0xa2, 0x51, 0x9e, 0x3a, + 0x87, 0x41, 0x46, 0x49, 0x5d, 0x7a, 0xac, 0xf3, 0x41, 0x6a, 0x42, 0x2e, + 0x56, 0x09, 0x86, 0xf2, 0x2f, 0x39, 0x45, 0x6e, 0x7f, }; -const unsigned char test_ec_secp192r1[] = { - 0x30, 0x5f, 0x02, 0x01, 0x01, 0x04, 0x18, 0xeb, 0x6a, 0x83, 0xe7, 0x5b, - 0xa1, 0x5e, 0x13, 0x8b, 0xea, 0x23, 0x89, 0x4a, 0xf9, 0xa6, 0xd9, 0x9e, - 0x1b, 0xba, 0x51, 0xf7, 0xa9, 0xf3, 0xa8, 0xa0, 0x0a, 0x06, 0x08, 0x2a, - 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x01, 0xa1, 0x34, 0x03, 0x32, 0x00, - 0x04, 0xb4, 0x64, 0x38, 0xcb, 0xf9, 0x1b, 0x96, 0x35, 0x67, 0xbd, 0x99, - 0x1b, 0xc0, 0x57, 0xf8, 0xb8, 0xc9, 0x53, 0xa5, 0x81, 0x04, 0xe4, 0x69, - 0xec, 0x55, 0xdd, 0x0e, 0x25, 0x90, 0xa4, 0xe7, 0x47, 0x66, 0x94, 0x3b, - 0x98, 0x68, 0xb8, 0x1b, 0xd9, 0x8e, 0x92, 0x2f, 0x48, 0x56, 0x60, 0x07, - 0xea, +const unsigned char test_ec_secp192r1_priv[] = { + 0xd8, 0x3b, 0x57, 0xa5, 0x9c, 0x51, 0x35, 0x8d, 0x9c, 0x8b, 0xbb, 0x89, + 0x8a, 0xff, 0x50, 0x7f, 0x44, 0xdd, 0x14, 0xcf, 0x16, 0x91, 0x71, 0x90, }; -const unsigned char test_ec_secp224r1[] = { - 0x30, 0x68, 0x02, 0x01, 0x01, 0x04, 0x1c, 0x1e, 0xec, 0x90, 0x48, 0xba, - 0x1e, 0x64, 0xf1, 0x21, 0x61, 0x28, 0xb7, 0x96, 0xa5, 0xd8, 0x5a, 0x4e, - 0x1c, 0x99, 0x6b, 0xd8, 0x2a, 0xcd, 0x8d, 0x04, 0x52, 0x08, 0xcc, 0xa0, - 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x21, 0xa1, 0x3c, 0x03, 0x3a, - 0x00, 0x04, 0xc2, 0xf0, 0x4f, 0x21, 0x05, 0xb4, 0x59, 0xa2, 0xba, 0x90, - 0x37, 0x4f, 0x7b, 0x1d, 0x63, 0x96, 0xb4, 0x39, 0xa0, 0x6f, 0x00, 0x44, - 0xdc, 0xc5, 0xe1, 0x85, 0x05, 0x3b, 0x58, 0xde, 0xbf, 0x9e, 0xb6, 0xe4, - 0x1e, 0x25, 0x96, 0xef, 0x90, 0x53, 0x1e, 0x86, 0x42, 0xa0, 0x64, 0x55, - 0x42, 0x3a, 0x76, 0x05, 0xfc, 0x6c, 0x01, 0xc3, 0x98, 0xbb, +const unsigned char test_ec_secp192r1_pub[] = { + 0x04, 0xe3, 0x5f, 0xcb, 0xee, 0x11, 0xce, 0xc3, 0x15, 0x4f, 0x80, 0xa1, + 0xa6, 0x1d, 0xf7, 0xd7, 0x61, 0x2d, 0xe4, 0xf2, 0xfd, 0x70, 0xc5, 0x60, + 0x8d, 0x0e, 0xe3, 0xa4, 0xa1, 0xa5, 0x71, 0x94, 0x71, 0xad, 0xb3, 0x39, + 0x66, 0xdd, 0x9b, 0x03, 0x5f, 0xdb, 0x77, 0x4f, 0xee, 0xba, 0x94, 0xb0, + 0x4c, }; -const unsigned char test_ec_secp256r1[] = { - 0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0xed, 0x96, 0xc5, 0x3c, 0x6c, - 0xde, 0x36, 0x87, 0x3c, 0xfa, 0x5c, 0xe5, 0xa7, 0x0d, 0x52, 0x05, 0x66, - 0x9d, 0xf5, 0xf0, 0x59, 0x40, 0x68, 0x9a, 0x6a, 0xe6, 0x6e, 0x04, 0xa9, - 0x15, 0x30, 0x36, 0xa0, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, - 0x03, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x2c, 0x8d, 0x41, - 0xbf, 0x8b, 0xfc, 0xde, 0x64, 0xd9, 0xa7, 0x06, 0x4c, 0xe9, 0xe0, 0xe8, - 0xe7, 0x50, 0x62, 0x51, 0x9c, 0x68, 0xc3, 0x26, 0x2e, 0xd4, 0x86, 0xc2, - 0xbc, 0xc2, 0xa8, 0x44, 0x4b, 0x4e, 0xcb, 0xde, 0x33, 0xe1, 0xd3, 0x72, - 0x87, 0xe1, 0x18, 0xaa, 0x32, 0x36, 0xa3, 0x05, 0x4f, 0x2c, 0x47, 0x27, - 0x17, 0x60, 0x37, 0x31, 0x60, 0x28, 0x19, 0x8a, 0xeb, 0x05, 0x1e, 0x7b, - 0x60, +const unsigned char test_ec_secp224r1_priv[] = { + 0x87, 0x2f, 0x20, 0x3b, 0x3a, 0xd3, 0x5b, 0x7f, 0x2e, 0xcc, 0x80, 0x3c, + 0x3a, 0x0e, 0x1e, 0x0b, 0x1e, 0xd6, 0x1c, 0xc1, 0xaf, 0xe7, 0x1b, 0x18, + 0x9c, 0xd4, 0xc9, 0x95, }; -const unsigned char test_ec_secp384r1[] = { - 0x30, 0x81, 0xa4, 0x02, 0x01, 0x01, 0x04, 0x30, 0xa8, 0x88, 0x45, 0xb7, - 0x52, 0x1d, 0x21, 0x2c, 0x2c, 0x20, 0x48, 0x48, 0x51, 0x19, 0xf1, 0x09, - 0x5d, 0x1a, 0x55, 0x78, 0x06, 0x59, 0x71, 0xea, 0xfd, 0x17, 0x41, 0x82, - 0x49, 0x63, 0x9e, 0x62, 0xe1, 0x9c, 0xcc, 0x22, 0x69, 0xeb, 0xbb, 0x90, - 0x7e, 0xa0, 0x50, 0x65, 0xfd, 0x4b, 0xa1, 0x0c, 0xa0, 0x07, 0x06, 0x05, - 0x2b, 0x81, 0x04, 0x00, 0x22, 0xa1, 0x64, 0x03, 0x62, 0x00, 0x04, 0x74, - 0xa4, 0x5a, 0xa5, 0xb2, 0xfb, 0xb9, 0x21, 0x79, 0x0f, 0xa5, 0x91, 0xe5, - 0x31, 0x36, 0x28, 0x9d, 0xbf, 0x7e, 0x10, 0xae, 0x1b, 0x71, 0xd5, 0x84, - 0xd4, 0x5b, 0xb4, 0xca, 0x84, 0xa3, 0x7d, 0xbd, 0x0a, 0xa5, 0x71, 0xda, - 0x24, 0xad, 0x87, 0xa9, 0xaf, 0x72, 0x3c, 0xb7, 0x8e, 0x51, 0xa5, 0x15, - 0x8d, 0x9b, 0x92, 0xa8, 0xd1, 0x86, 0x86, 0xd2, 0x1a, 0x5a, 0x68, 0x4c, - 0x0a, 0x9c, 0x36, 0x04, 0x9e, 0xba, 0xa1, 0xc5, 0x98, 0x86, 0x07, 0x59, - 0xec, 0x63, 0xbe, 0x8f, 0x2a, 0x3a, 0xde, 0x15, 0x59, 0xfa, 0x55, 0xc7, - 0x92, 0xcd, 0x4f, 0xa4, 0x8a, 0xcc, 0x1e, 0xa7, 0x14, 0x9b, 0x73, +const unsigned char test_ec_secp224r1_pub[] = { + 0x04, 0x6f, 0x00, 0xea, 0xda, 0xa9, 0x49, 0xfe, 0xe3, 0xe9, 0xe1, 0xc7, + 0xfa, 0x12, 0x47, 0xee, 0xce, 0xc8, 0x6a, 0x0d, 0xce, 0x46, 0x41, 0x8b, + 0x9b, 0xd3, 0x11, 0x7b, 0x98, 0x1d, 0x4b, 0xd0, 0xae, 0x7a, 0x99, 0x0d, + 0xe9, 0x12, 0xf9, 0xd0, 0x60, 0xd6, 0xcb, 0x53, 0x1a, 0x42, 0xd2, 0x2e, + 0x39, 0x4a, 0xc2, 0x9e, 0x81, 0x80, 0x4b, 0xf1, 0x60, }; -const unsigned char test_ec_secp521r1[] = { - 0x30, 0x81, 0xdc, 0x02, 0x01, 0x01, 0x04, 0x42, 0x00, 0x13, 0x96, 0x0c, - 0x56, 0xec, 0x80, 0x5d, 0x78, 0x63, 0x67, 0x4c, 0xbd, 0xdc, 0xef, 0x69, - 0xc8, 0x74, 0xd6, 0xbe, 0x94, 0xb4, 0x36, 0x2f, 0xe5, 0x7b, 0x67, 0x1e, - 0x09, 0x74, 0xc4, 0x2b, 0xfd, 0x5a, 0xd7, 0xca, 0xec, 0xb7, 0x8e, 0xb1, - 0x09, 0xb8, 0xe1, 0xcf, 0x57, 0xd7, 0xe3, 0x6a, 0x57, 0xef, 0x84, 0xd7, - 0xf7, 0x4d, 0xaa, 0xf4, 0xd3, 0x53, 0x78, 0x1c, 0x95, 0xf7, 0x63, 0x1f, - 0xb1, 0x98, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x23, 0xa1, - 0x81, 0x89, 0x03, 0x81, 0x86, 0x00, 0x04, 0x01, 0x20, 0xa9, 0xc9, 0x35, - 0x18, 0x71, 0x4b, 0x54, 0xb0, 0xd7, 0x2f, 0xcc, 0xdd, 0x7d, 0xec, 0x25, - 0x04, 0xa7, 0x2e, 0xda, 0x76, 0x8f, 0xb3, 0x77, 0xd6, 0xa5, 0xf8, 0x9e, - 0xea, 0x10, 0x58, 0xc4, 0x2c, 0xdb, 0xae, 0x78, 0xc3, 0x79, 0x04, 0x91, - 0xb4, 0x35, 0xa5, 0x26, 0xa5, 0x93, 0x2b, 0xda, 0x7a, 0xb1, 0xcf, 0x2f, - 0xc9, 0x66, 0xc7, 0xad, 0x89, 0x22, 0x49, 0xc6, 0x95, 0xcd, 0x66, 0xea, - 0x36, 0x01, 0xc5, 0x06, 0x75, 0xb0, 0xc7, 0x27, 0xa7, 0xa7, 0x89, 0xdc, - 0x97, 0x53, 0xa3, 0x74, 0xf8, 0xb7, 0xa7, 0xba, 0x25, 0x0d, 0x45, 0xa7, - 0x82, 0x5d, 0x8a, 0xb9, 0x3e, 0x43, 0x22, 0x34, 0xdf, 0x49, 0x23, 0x06, - 0xc3, 0xa5, 0x55, 0x45, 0xef, 0xdf, 0xaf, 0x68, 0x70, 0x69, 0x4f, 0x65, - 0x0a, 0xfb, 0xe8, 0xa8, 0xd9, 0xd1, 0x4c, 0x8b, 0x13, 0x7d, 0x43, 0xc5, - 0x8a, 0x87, 0x3d, 0x93, 0x5a, 0x66, 0xd5, +const unsigned char test_ec_secp256r1_priv[] = { + 0x49, 0xc9, 0xa8, 0xc1, 0x8c, 0x4b, 0x88, 0x56, 0x38, 0xc4, 0x31, 0xcf, + 0x1d, 0xf1, 0xc9, 0x94, 0x13, 0x16, 0x09, 0xb5, 0x80, 0xd4, 0xfd, 0x43, + 0xa0, 0xca, 0xb1, 0x7d, 0xb2, 0xf1, 0x3e, 0xee, }; -const unsigned char test_ec_bp256r1[] = { - 0x30, 0x78, 0x02, 0x01, 0x01, 0x04, 0x20, 0x4c, 0xb1, 0x0d, 0x0f, 0x90, - 0xe3, 0xae, 0x71, 0x43, 0x7a, 0xc8, 0x3a, 0x6d, 0x6f, 0x51, 0x35, 0x19, - 0xa4, 0x42, 0xe2, 0x47, 0x61, 0x4d, 0xfe, 0x1f, 0xe8, 0xf9, 0x61, 0x56, - 0x88, 0x87, 0x82, 0xa0, 0x0b, 0x06, 0x09, 0x2b, 0x24, 0x03, 0x03, 0x02, - 0x08, 0x01, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x04, 0x7e, - 0xaa, 0x53, 0x65, 0x4c, 0x1b, 0x46, 0x7c, 0x10, 0x89, 0x58, 0xb8, 0xd8, - 0xd7, 0xaa, 0x09, 0x4f, 0xe4, 0x65, 0xc8, 0x03, 0xa0, 0x6f, 0x1a, 0xf0, - 0x4e, 0x95, 0xa4, 0xe0, 0x6c, 0xaf, 0x82, 0x8f, 0x2b, 0xa7, 0x32, 0xca, - 0x77, 0x7c, 0x60, 0xed, 0xc1, 0x02, 0x33, 0x35, 0xec, 0x0f, 0x7b, 0x92, - 0x0b, 0xfa, 0x8e, 0x4f, 0x25, 0xd4, 0x6d, 0xd9, 0x5c, 0xa9, 0x65, 0x22, - 0x3d, 0x38, +const unsigned char test_ec_secp256r1_pub[] = { + 0x04, 0x77, 0x72, 0x65, 0x6f, 0x81, 0x4b, 0x39, 0x92, 0x79, 0xd5, 0xe1, + 0xf1, 0x78, 0x1f, 0xac, 0x6f, 0x09, 0x9a, 0x3c, 0x5c, 0xa1, 0xb0, 0xe3, + 0x53, 0x51, 0x83, 0x4b, 0x08, 0xb6, 0x5e, 0x0b, 0x57, 0x25, 0x90, 0xcd, + 0xaf, 0x8f, 0x76, 0x93, 0x61, 0xbc, 0xf3, 0x4a, 0xcf, 0xc1, 0x1e, 0x5e, + 0x07, 0x4e, 0x84, 0x26, 0xbd, 0xde, 0x04, 0xbe, 0x6e, 0x65, 0x39, 0x45, + 0x44, 0x96, 0x17, 0xde, 0x45, }; -const unsigned char test_ec_bp384r1[] = { - 0x30, 0x81, 0xa8, 0x02, 0x01, 0x01, 0x04, 0x30, 0x25, 0xe5, 0x2b, 0x86, - 0xfe, 0xd0, 0x4b, 0xac, 0x1e, 0x91, 0x10, 0x8e, 0xe4, 0xb7, 0x22, 0xe5, - 0xa8, 0xcc, 0x9a, 0x3a, 0xe7, 0x54, 0x04, 0x08, 0xda, 0x45, 0x0b, 0xf4, - 0x2f, 0x7a, 0x9b, 0x04, 0xa9, 0xcf, 0x37, 0x1b, 0xf4, 0x6c, 0x98, 0x79, - 0xd6, 0x8e, 0x8c, 0x8e, 0x39, 0x9d, 0x09, 0x31, 0xa0, 0x0b, 0x06, 0x09, - 0x2b, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x0b, 0xa1, 0x64, 0x03, - 0x62, 0x00, 0x04, 0x1f, 0xf8, 0x30, 0xb5, 0x6e, 0x08, 0xa2, 0xf8, 0xc1, - 0x19, 0x86, 0xb1, 0x64, 0x9b, 0xd0, 0x68, 0x84, 0x3c, 0x7a, 0x40, 0xe3, - 0x56, 0x95, 0xa1, 0x24, 0x49, 0x7a, 0x36, 0xb8, 0x6a, 0x4d, 0x55, 0x61, - 0x04, 0x82, 0x5b, 0xfd, 0xe0, 0xf1, 0x2c, 0x88, 0x84, 0xed, 0xfb, 0x37, - 0x8a, 0x07, 0xf7, 0x89, 0xfa, 0x95, 0x07, 0x21, 0xbb, 0x66, 0x44, 0x46, - 0x63, 0x80, 0x61, 0x09, 0x06, 0xfd, 0x7e, 0xfd, 0x41, 0xae, 0x86, 0x98, - 0xa9, 0x05, 0xb2, 0x31, 0x49, 0xca, 0xad, 0x14, 0x8b, 0xb5, 0x8c, 0x7c, - 0x2b, 0x16, 0x66, 0x1e, 0x18, 0x7b, 0xa3, 0x52, 0xbc, 0x5d, 0x26, 0x1e, - 0x70, 0xdb, 0x11, +const unsigned char test_ec_secp384r1_priv[] = { + 0x3f, 0x5d, 0x8d, 0x9b, 0xe2, 0x80, 0xb5, 0x69, 0x6c, 0xc5, 0xcc, 0x9f, + 0x94, 0xcf, 0x8a, 0xf7, 0xe6, 0xb6, 0x1d, 0xd6, 0x59, 0x2b, 0x2a, 0xb2, + 0xb3, 0xa4, 0xc6, 0x07, 0x45, 0x04, 0x17, 0xec, 0x32, 0x7d, 0xcd, 0xca, + 0xed, 0x7c, 0x10, 0x05, 0x3d, 0x71, 0x9a, 0x05, 0x74, 0xf0, 0xa7, 0x6a, }; -const unsigned char test_ec_bp512r1[] = { - 0x30, 0x81, 0xda, 0x02, 0x01, 0x01, 0x04, 0x40, 0x92, 0xcd, 0x27, 0xe6, - 0x7a, 0xdc, 0x76, 0x4e, 0xb0, 0x70, 0xb5, 0xae, 0x1e, 0xf2, 0x2a, 0x0e, - 0x8b, 0xc0, 0xa6, 0x42, 0x2e, 0x23, 0xd8, 0xc1, 0x65, 0x3b, 0x45, 0x95, - 0xf2, 0xd0, 0xed, 0xeb, 0x48, 0x8a, 0x9c, 0x32, 0xcf, 0xb0, 0x03, 0x66, - 0x65, 0xf9, 0xed, 0x60, 0x39, 0x06, 0xff, 0x8e, 0x9d, 0xd3, 0x39, 0xa7, - 0x49, 0x7e, 0xf7, 0xd1, 0xe2, 0xb9, 0xb0, 0x6c, 0x48, 0x76, 0x01, 0xb8, - 0xa0, 0x0b, 0x06, 0x09, 0x2b, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, - 0x0d, 0xa1, 0x81, 0x85, 0x03, 0x81, 0x82, 0x00, 0x04, 0x30, 0xb4, 0xb1, - 0x4d, 0xea, 0xed, 0xf9, 0x32, 0xff, 0xe1, 0xdb, 0x96, 0xd7, 0x34, 0xd4, - 0x6b, 0x3e, 0xad, 0xf5, 0xfa, 0x0b, 0xdd, 0x5d, 0x41, 0x56, 0xfd, 0x2d, - 0x8e, 0x2b, 0x84, 0x2f, 0xc0, 0xe4, 0xba, 0xed, 0x53, 0x2c, 0x4c, 0xeb, - 0x14, 0xe3, 0x89, 0x92, 0x66, 0xdc, 0x61, 0x3a, 0xda, 0xb9, 0xb9, 0x8c, - 0xc7, 0x41, 0x74, 0xba, 0x40, 0x54, 0xef, 0xce, 0x38, 0xc9, 0x0a, 0xeb, - 0x70, 0x01, 0x30, 0xf8, 0x18, 0x7e, 0x8c, 0x39, 0x16, 0xfc, 0xef, 0x10, - 0x7f, 0x16, 0xe2, 0x52, 0xba, 0x8f, 0x37, 0xdf, 0x23, 0x72, 0xe2, 0xd9, - 0x90, 0x7a, 0x51, 0xc3, 0x44, 0x8a, 0x6e, 0x92, 0x79, 0x7b, 0x66, 0x22, - 0xa9, 0x7e, 0xef, 0xef, 0x8d, 0x10, 0x23, 0x95, 0x97, 0xd7, 0x28, 0x28, - 0x4c, 0x89, 0xcb, 0x14, 0xe2, 0x89, 0x09, 0xe8, 0x05, 0x07, 0x0f, 0x6a, - 0x3f, 0xad, 0x84, 0xb3, 0x0b, +const unsigned char test_ec_secp384r1_pub[] = { + 0x04, 0xd9, 0xc6, 0x62, 0xb5, 0x0b, 0xa2, 0x9c, 0xa4, 0x79, 0x90, 0x45, + 0x0e, 0x04, 0x3a, 0xea, 0xf4, 0xf0, 0xc6, 0x9b, 0x15, 0x67, 0x6d, 0x11, + 0x2f, 0x62, 0x2a, 0x71, 0xc9, 0x30, 0x59, 0xaf, 0x99, 0x96, 0x91, 0xc5, + 0x68, 0x0d, 0x2b, 0x44, 0xd1, 0x11, 0x57, 0x9d, 0xb1, 0x2f, 0x4a, 0x41, + 0x3a, 0x2e, 0xd5, 0xc4, 0x5f, 0xcf, 0xb6, 0x7b, 0x5b, 0x63, 0xe0, 0x0b, + 0x91, 0xeb, 0xe5, 0x9d, 0x09, 0xa6, 0xb1, 0xac, 0x2c, 0x0c, 0x42, 0x82, + 0xaa, 0x12, 0x31, 0x7e, 0xd5, 0x91, 0x4f, 0x99, 0x9b, 0xc4, 0x88, 0xbb, + 0x13, 0x2e, 0x83, 0x42, 0xcc, 0x36, 0xf2, 0xca, 0x5e, 0x33, 0x79, 0xc7, + 0x47, }; -const unsigned char test_ec_curve25519[] = { - 0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x6e, - 0x04, 0x22, 0x04, 0x20, 0xf0, 0x29, 0x67, 0x44, 0x79, 0x87, 0xc0, 0x63, - 0xe1, 0x20, 0xd5, 0x6f, 0x45, 0xc5, 0x94, 0x3a, 0xd1, 0x75, 0x2a, 0x77, - 0xa1, 0x86, 0x98, 0x65, 0xdd, 0xab, 0x63, 0x88, 0xe1, 0x2a, 0x66, 0x6e, +const unsigned char test_ec_secp521r1_priv[] = { + 0x01, 0xb1, 0xb6, 0xad, 0x07, 0xbb, 0x79, 0xe7, 0x32, 0x0d, 0xa5, 0x98, + 0x60, 0xea, 0x28, 0xe0, 0x55, 0x28, 0x4f, 0x60, 0x58, 0xf2, 0x79, 0xde, + 0x66, 0x6e, 0x06, 0xd4, 0x35, 0xd2, 0xaf, 0x7b, 0xda, 0x28, 0xd9, 0x9f, + 0xa4, 0x7b, 0x7d, 0xd0, 0x96, 0x3e, 0x16, 0xb0, 0x07, 0x30, 0x78, 0xee, + 0x8b, 0x8a, 0x38, 0xd9, 0x66, 0xa5, 0x82, 0xf4, 0x6d, 0x19, 0xff, 0x95, + 0xdf, 0x3a, 0xd9, 0x68, 0x5a, 0xae, }; -const unsigned char test_ec_secp192k1[] = { - 0x30, 0x5c, 0x02, 0x01, 0x01, 0x04, 0x18, 0x30, 0xaa, 0xb8, 0xb2, 0x51, - 0x9e, 0xf6, 0x8e, 0xf5, 0xbe, 0x41, 0xbc, 0x2d, 0x2d, 0x1f, 0x96, 0x30, - 0xd8, 0x5f, 0x62, 0x9c, 0xca, 0x51, 0xca, 0xa0, 0x07, 0x06, 0x05, 0x2b, - 0x81, 0x04, 0x00, 0x1f, 0xa1, 0x34, 0x03, 0x32, 0x00, 0x04, 0xf5, 0x88, - 0xa8, 0x31, 0x0c, 0x1f, 0xf2, 0xdf, 0xeb, 0x70, 0x69, 0xd7, 0x8c, 0x42, - 0xe1, 0xaa, 0x20, 0x66, 0x5e, 0x49, 0x74, 0x7f, 0xb5, 0xa5, 0x6b, 0x96, - 0x75, 0xc6, 0xa2, 0xda, 0xf0, 0x5d, 0xa2, 0x8e, 0xbd, 0x54, 0x94, 0xf5, - 0x4d, 0x31, 0x1e, 0x6c, 0x70, 0xa3, 0xd2, 0x29, 0xda, 0x4d, +const unsigned char test_ec_secp521r1_pub[] = { + 0x04, 0x00, 0x1d, 0xe1, 0x42, 0xd5, 0x4f, 0x69, 0xeb, 0x03, 0x8e, 0xe4, + 0xb7, 0xaf, 0x9d, 0x3c, 0xa0, 0x77, 0x36, 0xfd, 0x9c, 0xf7, 0x19, 0xeb, + 0x35, 0x4d, 0x69, 0x87, 0x9e, 0xe7, 0xf3, 0xc1, 0x36, 0xfb, 0x0f, 0xbf, + 0x9f, 0x08, 0xf8, 0x6b, 0xe5, 0xfa, 0x12, 0x8e, 0xc1, 0xa0, 0x51, 0xd3, + 0xe6, 0xc6, 0x43, 0xe8, 0x5a, 0xda, 0x8f, 0xfa, 0xcf, 0x36, 0x63, 0xc2, + 0x60, 0xbd, 0x2c, 0x84, 0x4b, 0x6f, 0x56, 0x00, 0xce, 0xe8, 0xe4, 0x8a, + 0x9e, 0x65, 0xd0, 0x9c, 0xad, 0xd8, 0x9f, 0x23, 0x5d, 0xee, 0x05, 0xf3, + 0xb8, 0xa6, 0x46, 0xbe, 0x71, 0x5f, 0x1f, 0x67, 0xd5, 0xb4, 0x34, 0xe0, + 0xff, 0x23, 0xa1, 0xfc, 0x07, 0xef, 0x77, 0x40, 0x19, 0x3e, 0x40, 0xee, + 0xff, 0x6f, 0x3b, 0xcd, 0xfd, 0x76, 0x5a, 0xa9, 0x15, 0x50, 0x33, 0x52, + 0x4f, 0xe4, 0xf2, 0x05, 0xf5, 0x44, 0x4e, 0x29, 0x2c, 0x4c, 0x2f, 0x6a, + 0xc1, }; -const unsigned char test_ec_secp256k1[] = { - 0x30, 0x74, 0x02, 0x01, 0x01, 0x04, 0x20, 0xda, 0x1f, 0xf8, 0xe8, 0xb9, - 0x1f, 0x45, 0xd8, 0xc3, 0xfe, 0x3e, 0x5d, 0x50, 0x56, 0xc3, 0xe8, 0xad, - 0x87, 0xb0, 0x91, 0x71, 0xcd, 0xca, 0x80, 0xa7, 0xdf, 0x49, 0xd6, 0xa5, - 0xc6, 0x9f, 0x97, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x0a, - 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0xef, 0x76, 0x2f, 0x4f, 0x6a, 0x7d, - 0x0a, 0xec, 0xef, 0x78, 0x0b, 0xa1, 0xba, 0x57, 0x0f, 0x41, 0x76, 0x76, - 0xf1, 0x4f, 0x7e, 0x91, 0x8b, 0x18, 0xba, 0xab, 0xd9, 0xd7, 0xcc, 0x2c, - 0xe2, 0x1e, 0x92, 0x6d, 0xfd, 0x53, 0xcc, 0xa4, 0x62, 0xab, 0xe4, 0xc0, - 0xaf, 0xaf, 0xc9, 0xd0, 0x10, 0x1a, 0x89, 0x86, 0x6d, 0x6f, 0x24, 0x71, - 0xa3, 0xe2, 0x70, 0xe2, 0x02, 0xe5, 0x96, 0x48, 0xd5, 0x03, +const unsigned char test_ec_bp256r1_priv[] = { + 0x21, 0x61, 0xd6, 0xf2, 0xdb, 0x76, 0x52, 0x6f, 0xa6, 0x2c, 0x16, 0xf3, + 0x56, 0xa8, 0x0f, 0x01, 0xf3, 0x2f, 0x77, 0x67, 0x84, 0xb3, 0x6a, 0xa9, + 0x97, 0x99, 0xa8, 0xb7, 0x66, 0x20, 0x80, 0xff, }; -const unsigned char test_ec_curve448[] = { - 0x30, 0x46, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x6f, - 0x04, 0x3a, 0x04, 0x38, 0xe4, 0xd9, 0x04, 0xba, 0x83, 0x93, 0xa5, 0x69, - 0x14, 0x17, 0xab, 0x9d, 0xfd, 0xc9, 0xf2, 0x0d, 0x57, 0x6f, 0xe7, 0x1a, - 0xe6, 0xac, 0xb7, 0x76, 0xdc, 0xe2, 0x76, 0x68, 0x34, 0xd9, 0x45, 0x11, - 0xff, 0x73, 0x24, 0x03, 0xe1, 0x49, 0x6a, 0x65, 0x1d, 0x89, 0xd3, 0x2f, - 0xbc, 0xfe, 0x49, 0xa8, 0xc1, 0xba, 0xbf, 0x46, 0x4b, 0x4c, 0x25, 0xef, +const unsigned char test_ec_bp256r1_pub[] = { + 0x04, 0x76, 0x8c, 0x8c, 0xae, 0x4a, 0xbc, 0xa6, 0x30, 0x6d, 0xb0, 0xed, + 0x81, 0xb0, 0xc4, 0xa6, 0x21, 0x5c, 0x37, 0x80, 0x66, 0xec, 0x6d, 0x61, + 0x6c, 0x14, 0x6e, 0x13, 0xf1, 0xc7, 0xdf, 0x80, 0x9b, 0x96, 0xab, 0x69, + 0x11, 0xc2, 0x7d, 0x8a, 0x02, 0x33, 0x9f, 0x09, 0x26, 0x84, 0x0e, 0x55, + 0x23, 0x6d, 0x3d, 0x1e, 0xfb, 0xe2, 0x66, 0x9d, 0x09, 0x0e, 0x4c, 0x4c, + 0x66, 0x0f, 0xad, 0xa9, 0x1d, +}; + +const unsigned char test_ec_bp384r1_priv[] = { + 0x3d, 0xd9, 0x2e, 0x75, 0x0d, 0x90, 0xd7, 0xd3, 0x9f, 0xc1, 0x88, 0x5c, + 0xd8, 0xad, 0x12, 0xea, 0x94, 0x41, 0xf2, 0x2b, 0x93, 0x34, 0xb4, 0xd9, + 0x65, 0x20, 0x2a, 0xdb, 0x14, 0x48, 0xce, 0x24, 0xc5, 0x80, 0x8a, 0x85, + 0xdd, 0x9a, 0xfc, 0x22, 0x9a, 0xf0, 0xa3, 0x12, 0x4f, 0x75, 0x5b, 0xcb, +}; + +const unsigned char test_ec_bp384r1_pub[] = { + 0x04, 0x71, 0x9f, 0x9d, 0x09, 0x3a, 0x62, 0x7e, 0x0d, 0x35, 0x03, 0x85, + 0xc6, 0x61, 0xce, 0xbf, 0x00, 0xc6, 0x19, 0x23, 0x56, 0x6f, 0xe9, 0x00, + 0x6a, 0x31, 0x07, 0xaf, 0x1d, 0x87, 0x1b, 0xc6, 0xbb, 0x68, 0x98, 0x5f, + 0xd7, 0x22, 0xea, 0x32, 0xbe, 0x31, 0x6f, 0x8e, 0x78, 0x3b, 0x7c, 0xd1, + 0x95, 0x77, 0x85, 0xf6, 0x6c, 0xfc, 0x0c, 0xb1, 0x95, 0xdd, 0x5c, 0x99, + 0xa8, 0xe7, 0xab, 0xaa, 0x84, 0x85, 0x53, 0xa5, 0x84, 0xdf, 0xd2, 0xb4, + 0x8e, 0x76, 0xd4, 0x45, 0xfe, 0x00, 0xdd, 0x8b, 0xe5, 0x90, 0x96, 0xd8, + 0x77, 0xd4, 0x69, 0x6d, 0x23, 0xb4, 0xbc, 0x8d, 0xb1, 0x47, 0x24, 0xe6, + 0x6a, +}; + +const unsigned char test_ec_bp512r1_priv[] = { + 0x37, 0x2c, 0x97, 0x78, 0xf6, 0x9f, 0x72, 0x6c, 0xbc, 0xa3, 0xf4, 0xa2, + 0x68, 0xf1, 0x6b, 0x4d, 0x61, 0x7d, 0x10, 0x28, 0x0d, 0x79, 0xa6, 0xa0, + 0x29, 0xcd, 0x51, 0x87, 0x9f, 0xe1, 0x01, 0x29, 0x34, 0xdf, 0xe5, 0x39, + 0x54, 0x55, 0x33, 0x7d, 0xf6, 0x90, 0x6d, 0xc7, 0xd6, 0xd2, 0xee, 0xa4, + 0xdb, 0xb2, 0x06, 0x5c, 0x02, 0x28, 0xf7, 0x3b, 0x3e, 0xd7, 0x16, 0x48, + 0x0e, 0x7d, 0x71, 0xd2, +}; + +const unsigned char test_ec_bp512r1_pub[] = { + 0x04, 0x38, 0xb7, 0xec, 0x92, 0xb6, 0x1c, 0x5c, 0x6c, 0x7f, 0xbc, 0x28, + 0xa4, 0xec, 0x75, 0x9d, 0x48, 0xfc, 0xd4, 0xe2, 0xe3, 0x74, 0xde, 0xfd, + 0x5c, 0x49, 0x68, 0xa5, 0x4d, 0xbe, 0xf7, 0x51, 0x0e, 0x51, 0x78, 0x86, + 0xfb, 0xfc, 0x38, 0xea, 0x39, 0xaa, 0x52, 0x93, 0x59, 0xd7, 0x0a, 0x71, + 0x56, 0xc3, 0x5d, 0x3c, 0xba, 0xc7, 0xce, 0x77, 0x6b, 0xdb, 0x25, 0x1d, + 0xd6, 0x4b, 0xce, 0x71, 0x23, 0x44, 0x24, 0xee, 0x70, 0x49, 0xee, 0xd0, + 0x72, 0xf0, 0xdb, 0xc4, 0xd7, 0x99, 0x96, 0xe1, 0x75, 0xd5, 0x57, 0xe2, + 0x63, 0x76, 0x3a, 0xe9, 0x70, 0x95, 0xc0, 0x81, 0xe7, 0x3e, 0x7d, 0xb2, + 0xe3, 0x8a, 0xdc, 0x3d, 0x4c, 0x9a, 0x04, 0x87, 0xb1, 0xed, 0xe8, 0x76, + 0xdc, 0x1f, 0xca, 0x61, 0xc9, 0x02, 0xe9, 0xa1, 0xd8, 0x72, 0x2b, 0x86, + 0x12, 0x92, 0x8f, 0x18, 0xa2, 0x48, 0x45, 0x59, 0x1a, +}; + +const unsigned char test_ec_secp192k1_priv[] = { + 0x29, 0x7a, 0xc1, 0x72, 0x2c, 0xca, 0xc7, 0x58, 0x9e, 0xcb, 0x24, 0x0d, + 0xc7, 0x19, 0x84, 0x25, 0x38, 0xca, 0x97, 0x4b, 0xeb, 0x79, 0xf2, 0x28, +}; + +const unsigned char test_ec_secp192k1_pub[] = { + 0x04, 0x26, 0xb7, 0xbb, 0x38, 0xda, 0x64, 0x9a, 0xc2, 0x13, 0x8f, 0xc0, + 0x50, 0xc6, 0x54, 0x8b, 0x32, 0x55, 0x3d, 0xab, 0x68, 0xaf, 0xeb, 0xc3, + 0x61, 0x05, 0xd3, 0x25, 0xb7, 0x55, 0x38, 0xc1, 0x23, 0x23, 0xcb, 0x07, + 0x64, 0x78, 0x9e, 0xcb, 0x99, 0x26, 0x71, 0xbe, 0xb2, 0xb6, 0xbe, 0xf2, + 0xf5, +}; + +const unsigned char test_ec_secp256k1_priv[] = { + 0x7f, 0xa0, 0x6f, 0xa0, 0x2d, 0x0e, 0x91, 0x1b, 0x9a, 0x47, 0xfd, 0xc1, + 0x7d, 0x2d, 0x96, 0x2c, 0xa0, 0x1e, 0x2f, 0x31, 0xd6, 0x0c, 0x62, 0x12, + 0xd0, 0xed, 0x7e, 0x3b, 0xba, 0x23, 0xa7, 0xb9, +}; + +const unsigned char test_ec_secp256k1_pub[] = { + 0x04, 0x5c, 0x39, 0x15, 0x45, 0x79, 0xef, 0xd6, 0x67, 0xad, 0xc7, 0x3a, + 0x81, 0x01, 0x5a, 0x79, 0x7d, 0x2c, 0x86, 0x82, 0xcd, 0xfb, 0xd3, 0xc3, + 0x55, 0x3c, 0x4a, 0x18, 0x5d, 0x48, 0x1c, 0xdc, 0x50, 0xe4, 0x2a, 0x0e, + 0x1c, 0xbc, 0x3c, 0xa2, 0x9a, 0x32, 0xa6, 0x45, 0xe9, 0x27, 0xf5, 0x4b, + 0xea, 0xed, 0x14, 0xc9, 0xdb, 0xbf, 0x82, 0x79, 0xd7, 0x25, 0xf5, 0x49, + 0x5c, 0xa9, 0x24, 0xb2, 0x4d, +}; + +const unsigned char test_ec_curve25519_priv[] = { + 0x70, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, 0x72, + 0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a, + 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x6a, +}; + +const unsigned char test_ec_curve25519_pub[] = { + 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, 0xdc, + 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a, 0xf4, + 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a, +}; + +const unsigned char test_ec_curve448_priv[] = { + 0xe4, 0xe4, 0x9f, 0x52, 0x68, 0x6f, 0x9e, 0xe3, 0xb6, 0x38, 0x52, 0x8f, + 0x72, 0x1f, 0x15, 0x96, 0x19, 0x6f, 0xfd, 0x0a, 0x1c, 0xdd, 0xb6, 0x4c, + 0x3f, 0x21, 0x6f, 0x06, 0x54, 0x18, 0x05, 0xcf, 0xeb, 0x1a, 0x28, 0x6d, + 0xc7, 0x80, 0x18, 0x09, 0x5c, 0xdf, 0xec, 0x05, 0x0e, 0x80, 0x07, 0xb5, + 0xf4, 0x90, 0x89, 0x62, 0xba, 0x20, 0xd6, 0xc1, +}; + +const unsigned char test_ec_curve448_pub[] = { + 0xc0, 0xd3, 0xa5, 0xa2, 0xb4, 0x16, 0xa5, 0x73, 0xdc, 0x99, 0x09, 0xf9, + 0x2f, 0x13, 0x4a, 0xc0, 0x13, 0x23, 0xab, 0x8f, 0x8e, 0x36, 0x80, 0x4e, + 0x57, 0x85, 0x88, 0xba, 0x2d, 0x09, 0xfe, 0x7c, 0x3e, 0x73, 0x7f, 0x77, + 0x1c, 0xa1, 0x12, 0x82, 0x5b, 0x54, 0x8a, 0x0f, 0xfd, 0xed, 0x6d, 0x6a, + 0x2f, 0xd0, 0x9a, 0x3e, 0x77, 0xde, 0xc3, 0x0e, }; diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 5e9e4d6d2f..5e63214d33 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -189,37 +189,56 @@ struct key_lut_element { int curve_or_keybits; const unsigned char *key; size_t key_len; + const unsigned char *pub_key; + size_t pub_key_len; }; struct key_lut_element keys_lut[] = { - { 1024, test_rsa_1024, sizeof(test_rsa_1024) }, - { 1026, test_rsa_1026, sizeof(test_rsa_1026) }, - { 1028, test_rsa_1028, sizeof(test_rsa_1028) }, - { 1030, test_rsa_1030, sizeof(test_rsa_1030) }, - { 2048, test_rsa_2048, sizeof(test_rsa_2048) }, - { 4096, test_rsa_4096, sizeof(test_rsa_4096) }, - { MBEDTLS_ECP_DP_SECP192R1, test_ec_secp192r1, sizeof(test_ec_secp192r1) }, - { MBEDTLS_ECP_DP_SECP224R1, test_ec_secp224r1, sizeof(test_ec_secp224r1) }, - { MBEDTLS_ECP_DP_SECP256R1, test_ec_secp256r1, sizeof(test_ec_secp256r1) }, - { MBEDTLS_ECP_DP_SECP384R1, test_ec_secp384r1, sizeof(test_ec_secp384r1) }, - { MBEDTLS_ECP_DP_SECP521R1, test_ec_secp521r1, sizeof(test_ec_secp521r1) }, - { MBEDTLS_ECP_DP_BP256R1, test_ec_bp256r1, sizeof(test_ec_bp256r1) }, - { MBEDTLS_ECP_DP_BP384R1, test_ec_bp384r1, sizeof(test_ec_bp384r1) }, - { MBEDTLS_ECP_DP_BP512R1, test_ec_bp512r1, sizeof(test_ec_bp512r1) }, - { MBEDTLS_ECP_DP_CURVE25519, test_ec_curve25519, sizeof(test_ec_curve25519) }, - { MBEDTLS_ECP_DP_SECP192K1, test_ec_secp192k1, sizeof(test_ec_secp192k1) }, - { MBEDTLS_ECP_DP_SECP256K1, test_ec_secp256k1, sizeof(test_ec_secp256k1) }, - { MBEDTLS_ECP_DP_CURVE448, test_ec_curve448, sizeof(test_ec_curve448) }, + { 1024, test_rsa_1024, sizeof(test_rsa_1024), NULL, 0 }, + { 1026, test_rsa_1026, sizeof(test_rsa_1026), NULL, 0 }, + { 1028, test_rsa_1028, sizeof(test_rsa_1028), NULL, 0 }, + { 1030, test_rsa_1030, sizeof(test_rsa_1030), NULL, 0 }, + { 2048, test_rsa_2048, sizeof(test_rsa_2048), NULL, 0 }, + { 4096, test_rsa_4096, sizeof(test_rsa_4096), NULL, 0 }, + { MBEDTLS_ECP_DP_SECP192R1, test_ec_secp192r1_priv, sizeof(test_ec_secp192r1_priv), + test_ec_secp192r1_pub, sizeof(test_ec_secp192r1_pub) }, + { MBEDTLS_ECP_DP_SECP224R1, test_ec_secp224r1_priv, sizeof(test_ec_secp224r1_priv), + test_ec_secp224r1_pub, sizeof(test_ec_secp224r1_pub) }, + { MBEDTLS_ECP_DP_SECP256R1, test_ec_secp256r1_priv, sizeof(test_ec_secp256r1_priv), + test_ec_secp256r1_pub, sizeof(test_ec_secp256r1_pub) }, + { MBEDTLS_ECP_DP_SECP384R1, test_ec_secp384r1_priv, sizeof(test_ec_secp384r1_priv), + test_ec_secp384r1_pub, sizeof(test_ec_secp384r1_pub) }, + { MBEDTLS_ECP_DP_SECP521R1, test_ec_secp521r1_priv, sizeof(test_ec_secp521r1_priv), + test_ec_secp521r1_pub, sizeof(test_ec_secp521r1_pub) }, + { MBEDTLS_ECP_DP_BP256R1, test_ec_bp256r1_priv, sizeof(test_ec_bp256r1_priv), + test_ec_bp256r1_pub, sizeof(test_ec_bp256r1_pub) }, + { MBEDTLS_ECP_DP_BP384R1, test_ec_bp384r1_priv, sizeof(test_ec_bp384r1_priv), + test_ec_bp384r1_pub, sizeof(test_ec_bp384r1_pub) }, + { MBEDTLS_ECP_DP_BP512R1, test_ec_bp512r1_priv, sizeof(test_ec_bp512r1_priv), + test_ec_bp512r1_pub, sizeof(test_ec_bp512r1_pub) }, + { MBEDTLS_ECP_DP_CURVE25519, test_ec_curve25519_priv, sizeof(test_ec_curve25519_priv), + test_ec_curve25519_pub, sizeof(test_ec_curve25519_pub) }, + { MBEDTLS_ECP_DP_SECP192K1, test_ec_secp192k1_priv, sizeof(test_ec_secp192k1_priv), + test_ec_secp192k1_pub, sizeof(test_ec_secp192k1_pub) }, + { MBEDTLS_ECP_DP_SECP256K1, test_ec_secp256k1_priv, sizeof(test_ec_secp256k1_priv), + test_ec_secp256k1_pub, sizeof(test_ec_secp256k1_pub) }, + { MBEDTLS_ECP_DP_CURVE448, test_ec_curve448_priv, sizeof(test_ec_curve448_priv), + test_ec_curve448_pub, sizeof(test_ec_curve448_pub) }, }; static int get_predefined_key_data(int curve_or_keybits, - const unsigned char **key, size_t *key_len) + const unsigned char **key, size_t *key_len, + const unsigned char **pub_key, size_t *pub_key_len) { size_t i; for (i = 0; i < ARRAY_LENGTH(keys_lut); i++) { if (curve_or_keybits == keys_lut[i].curve_or_keybits) { *key = keys_lut[i].key; *key_len = keys_lut[i].key_len; + if (pub_key != NULL) { + *pub_key = keys_lut[i].pub_key; + *pub_key_len = keys_lut[i].pub_key_len; + } return 0; } } @@ -227,6 +246,27 @@ static int get_predefined_key_data(int curve_or_keybits, return MBEDTLS_ERR_PK_BAD_INPUT_DATA; } +#if defined(MBEDTLS_PSA_CRYPTO_C) +psa_status_t pk_psa_import_key(const unsigned char *key_data, size_t key_len, + psa_key_type_t type, psa_key_usage_t usage, + psa_algorithm_t alg, mbedtls_svc_key_id_t *key) +{ + psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + psa_status_t status; + + *key = MBEDTLS_SVC_KEY_ID_INIT; + + /* Note: psa_import_key() automatically determines the key's bit length + * from the provided key data. That's why psa_set_key_bits() is not used below. */ + psa_set_key_usage_flags(&attributes, usage); + psa_set_key_algorithm(&attributes, alg); + psa_set_key_type(&attributes, type); + status = psa_import_key(&attributes, key_data, key_len, key); + + return status; +} +#endif /* MBEDTLS_PSA_CRYPTO_C */ + #if defined(MBEDTLS_PK_PARSE_C) /** Fill the provided PK context with a proper key. * @@ -249,12 +289,42 @@ static int get_predefined_key_data(int curve_or_keybits, static int pk_genkey(mbedtls_pk_context *pk, mbedtls_pk_type_t pk_type, int curve_or_keybits) { const unsigned char *key_data = NULL; + const unsigned char *pub_key_data = NULL; size_t key_data_len = 0; + size_t pub_key_data_len = 0; int ret = MBEDTLS_ERR_PK_BAD_INPUT_DATA; - TEST_EQUAL(get_predefined_key_data(curve_or_keybits, &key_data, &key_data_len), 0); - TEST_EQUAL(mbedtls_pk_parse_key(pk, key_data, key_data_len, NULL, 0, - mbedtls_test_rnd_std_rand, NULL), 0); + if (pk_type == MBEDTLS_PK_RSA) { + TEST_EQUAL(get_predefined_key_data(curve_or_keybits, &key_data, &key_data_len, + NULL, 0), 0); + TEST_EQUAL(mbedtls_pk_parse_key(pk, key_data, key_data_len, NULL, 0, + mbedtls_test_rnd_std_rand, NULL), 0); + } else { + TEST_EQUAL(get_predefined_key_data(curve_or_keybits, &key_data, &key_data_len, + &pub_key_data, &pub_key_data_len), 0); + TEST_EQUAL(mbedtls_pk_setup(pk, mbedtls_pk_info_from_type(pk_type)), 0); +#if defined(MBEDTLS_PK_USE_PSA_EC_DATA) + pk->ec_family = mbedtls_ecc_group_to_psa(curve_or_keybits, &pk->ec_bits); + TEST_EQUAL(pk_psa_import_key(key_data, key_data_len, + PSA_KEY_TYPE_ECC_KEY_PAIR(pk->ec_family), + PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH | + PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | + PSA_KEY_USAGE_DERIVE | PSA_KEY_USAGE_COPY | + PSA_KEY_USAGE_EXPORT, + MBEDTLS_PK_PSA_ALG_ECDSA_MAYBE_DET(PSA_ALG_ANY_HASH), + &pk->priv_id), 0); + memcpy(pk->pub_raw, pub_key_data, pub_key_data_len); + pk->pub_raw_len = pub_key_data_len; +#elif defined(MBEDTLS_ECP_C) + TEST_EQUAL(mbedtls_ecp_read_key(curve_or_keybits, mbedtls_pk_ec_rw(*pk), + key_data, key_data_len), 0); + TEST_EQUAL(mbedtls_ecp_point_read_binary(&(mbedtls_pk_ec_rw(*pk)->grp), + &(mbedtls_pk_ec_rw(*pk)->Q), + pub_key_data, pub_key_data_len), 0); +#else /* MBEDTLS_PK_USE_PSA_EC_DATA || MBEDTLS_ECP_C */ + TEST_FAIL("EC keys not supported."); +#endif /* MBEDTLS_PK_USE_PSA_EC_DATA || MBEDTLS_ECP_C */ + } /* Override pk_info. */ pk->pk_info = mbedtls_pk_info_from_type(pk_type); ret = 0; @@ -289,44 +359,17 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; psa_status_t status = PSA_ERROR_GENERIC_ERROR; const unsigned char *key_data = NULL; - size_t key_data_size = 0; /* Overall size of key_data in bytes. It includes leading - * zeros (if any). */ - size_t key_data_len = 0; /* Length of valid bytes in key_data. */ - const unsigned char *key_data_start; + size_t key_data_size = 0; - /* Get the predefined key: - * - RSA keys are already in a valid format to be imported into PSA. - * - EC ones instead would require some adaptation. However instead of going - * through the PK module for import/export, we can directly skip the - * unrelevant data and go directly to the private key. - */ if (PSA_KEY_TYPE_IS_RSA(type)) { - TEST_EQUAL(get_predefined_key_data(bits, &key_data, &key_data_size), 0); - key_data_start = (unsigned char *) key_data; - key_data_len = key_data_size; + TEST_EQUAL(get_predefined_key_data(bits, &key_data, &key_data_size, NULL, 0), 0); } else { #if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) mbedtls_ecp_group_id grp_id; grp_id = mbedtls_ecc_group_from_psa(PSA_KEY_TYPE_ECC_GET_FAMILY(type), bits); - TEST_EQUAL(get_predefined_key_data(grp_id, &key_data, &key_data_size), 0); - - unsigned char *p = (unsigned char *) key_data; - const unsigned char *end = key_data + key_data_size; - size_t len; - int version; - - TEST_EQUAL(mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_SEQUENCE | - MBEDTLS_ASN1_CONSTRUCTED), 0); - TEST_EQUAL(mbedtls_asn1_get_int(&p, end, &version), 0); - if ((grp_id == MBEDTLS_ECP_DP_CURVE25519) || (grp_id == MBEDTLS_ECP_DP_CURVE448)) { - TEST_EQUAL(mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_SEQUENCE | - MBEDTLS_ASN1_CONSTRUCTED), 0); - p += len; - TEST_EQUAL(mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_OCTET_STRING), 0); - } - TEST_EQUAL(mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_OCTET_STRING), 0); - key_data_start = p; - key_data_len = len; + TEST_EQUAL(get_predefined_key_data(grp_id, &key_data, &key_data_size, NULL, 0), 0); +#else /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */ + TEST_FAIL("EC keys are not supported"); #endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */ } @@ -340,7 +383,7 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, if (!mbedtls_svc_key_id_is_null(persistent_key_id)) { psa_set_key_id(&attributes, persistent_key_id); } - status = psa_import_key(&attributes, key_data_start, key_data_len, key); + status = psa_import_key(&attributes, key_data, key_data_size, key); exit: return status; @@ -628,25 +671,6 @@ exit: psa_reset_key_attributes(&new_attr); return new_key_id; } - -psa_status_t pk_psa_import_key(unsigned char *key_data, size_t key_len, - psa_key_type_t type, psa_key_usage_t usage, - psa_algorithm_t alg, mbedtls_svc_key_id_t *key) -{ - psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; - psa_status_t status; - - *key = MBEDTLS_SVC_KEY_ID_INIT; - - /* Note: psa_import_key() automatically determines the key's bit length - * from the provided key data. That's why psa_set_key_bits() is not used below. */ - psa_set_key_usage_flags(&attributes, usage); - psa_set_key_algorithm(&attributes, alg); - psa_set_key_type(&attributes, type); - status = psa_import_key(&attributes, key_data, key_len, key); - - return status; -} #endif /* MBEDTLS_PSA_CRYPTO_C */ /* END_HEADER */ From 2b0242b6fc88fbb0c1f1cad1bdadee58a0be9b45 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Mon, 15 Apr 2024 15:09:10 +0200 Subject: [PATCH 16/32] generate_test_keys: fix mypy issue for imported path Signed-off-by: Valerio Setti --- tests/scripts/check-python-files.sh | 1 - tests/scripts/generate_test_keys.py | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/scripts/check-python-files.sh b/tests/scripts/check-python-files.sh index cf1f87ab12..51e80792b0 100755 --- a/tests/scripts/check-python-files.sh +++ b/tests/scripts/check-python-files.sh @@ -62,7 +62,6 @@ $PYTHON -m pylint scripts/mbedtls_dev/*.py scripts/*.py tests/scripts/*.py || { echo echo 'Running mypy ...' -export MYPYPATH="../../scripts" $PYTHON -m mypy scripts/*.py tests/scripts/*.py || ret=1 diff --git a/tests/scripts/generate_test_keys.py b/tests/scripts/generate_test_keys.py index 630ab05ac1..0e5137ff52 100755 --- a/tests/scripts/generate_test_keys.py +++ b/tests/scripts/generate_test_keys.py @@ -12,6 +12,7 @@ import sys SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + "/" sys.path.append(SCRIPT_DIR + "../../scripts/") from mbedtls_dev.asymmetric_key_data import ASYMMETRIC_KEY_DATA +import scripts_path # pylint: disable=unused-import OUTPUT_HEADER_FILE = SCRIPT_DIR + "../src/test_keys.h" BYTES_PER_LINE = 12 From eba7f8c3641bc0f35f00ecb358d6784d048b582c Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Mon, 15 Apr 2024 17:41:21 +0200 Subject: [PATCH 17/32] asymmetric_key_data: fix public RSA-2048 key Signed-off-by: Valerio Setti --- scripts/mbedtls_dev/asymmetric_key_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mbedtls_dev/asymmetric_key_data.py b/scripts/mbedtls_dev/asymmetric_key_data.py index 4287be2d49..175bc9f03f 100644 --- a/scripts/mbedtls_dev/asymmetric_key_data.py +++ b/scripts/mbedtls_dev/asymmetric_key_data.py @@ -213,7 +213,7 @@ ASYMMETRIC_KEY_DATA = construct_asymmetric_key_data({ 02818100b29b34590bddb308afecb4c3ab78abf1114add755e7b956aa0677b6896a933c937db7dabaad2b565fd1df7caa5ef9629e5eb100fd6d7c9f372d846fee6cfb6025e25e934df57a4ca3c5e5637d9d6235ac80428852f6c92acae0a937e38e731fde0521d3e4c70d653ae9edc89c8b623e4379fbf606f4b6db8068528f7c70f2921 0281800ed47ae05b275a23a7dfe3ffb727e3a268e626a59d401d2d846de26954ff54fc9ed93a9af33fac2c967a18e0f86145083e39923454bc10da5f4937e836b99851956bffb301ce9e06789786693213fcde6d5f2933d52bb29dc340ea011257788d3c5775eb6569230aafbf08752d40a8419de71b01d4927e27c1079caada0568b1 """, """ -3081010a +3082010a 0282010100f7bb6b8eab40491cd64455ec04d4ed8db5051a9738fc7af73ff3b097511cce40aaf76537b1353504427986b7b2b53a964a6937b558ec0d1dea274af2b8fff2f094c243fa577266a79db0c26ffe30416d23ef05dd5fecab413ebbb4f8526ae720a94584226b37d92ef463fc736cb38e530e7488d9162f5726807bc543138a2d258adb4d680221c2532381ccfa81bc89bc3d7b84039c2df41ce3ec8db91c2380e781ba3aa9e23b74ed9973d4908efca47aa8d9b7b0a4423297a404427c3f3cd6e0782e4553880f06ba39a64f4a7b0eef921a6050a207cefadcf07394a3e18ea915dc8497e7ae61fc3162f62f5065a692af077266f7360c2076cebeaf14cb22c1ed 0203010001 """), From ea9c8bdb5caba6e4de916dc02d940ad35597c55f Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Mon, 15 Apr 2024 17:58:43 +0200 Subject: [PATCH 18/32] generate_test_keys: minor improvements Signed-off-by: Valerio Setti --- tests/scripts/generate_test_keys.py | 32 +- tests/src/test_keys.h | 1088 ++++++++++++--------------- 2 files changed, 484 insertions(+), 636 deletions(-) diff --git a/tests/scripts/generate_test_keys.py b/tests/scripts/generate_test_keys.py index 0e5137ff52..d48b0268f3 100755 --- a/tests/scripts/generate_test_keys.py +++ b/tests/scripts/generate_test_keys.py @@ -8,6 +8,7 @@ generating the required key at run time. This helps speeding up testing.""" import os import sys +from typing import Iterator # pylint: disable=wrong-import-position SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + "/" sys.path.append(SCRIPT_DIR + "../../scripts/") @@ -15,7 +16,7 @@ from mbedtls_dev.asymmetric_key_data import ASYMMETRIC_KEY_DATA import scripts_path # pylint: disable=unused-import OUTPUT_HEADER_FILE = SCRIPT_DIR + "../src/test_keys.h" -BYTES_PER_LINE = 12 +BYTES_PER_LINE = 16 KEYS = { # RSA keys @@ -52,23 +53,20 @@ KEYS = { 'test_ec_curve448_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_MONTGOMERY)', 448], } +def c_byte_array_literal_content(array_name: str, key_data: bytes) -> Iterator[str]: + yield 'const unsigned char ' + yield array_name + yield '[] = {' + for index in range(0, len(key_data), BYTES_PER_LINE): + yield '\n ' + for b in key_data[index:index + BYTES_PER_LINE]: + yield ' {:#04x},'.format(b) + yield '\n};' + def convert_der_to_c(array_name: str, key_data: bytearray) -> str: - """Convert a DER content to a C array.""" - output_text = "const unsigned char {}[] = {{\n".format(array_name) + return ''.join(c_byte_array_literal_content(array_name, key_data)) - def get_data_chunk(data): - for index in range(0, len(data), BYTES_PER_LINE): - yield data[index : index + BYTES_PER_LINE] - - for bytes_chunk in get_data_chunk(key_data): - new_line = ' ' + ', '.join(['{:#04x}'.format(b) for b in bytes_chunk]) - output_text = output_text + new_line + ",\n" - - output_text = output_text + "};" - - return output_text - -def main(): +def main() -> None: # Remove output file if already existing. if os.path.exists(OUTPUT_HEADER_FILE): os.remove(OUTPUT_HEADER_FILE) @@ -90,4 +88,4 @@ def main(): output_file.write("\n") if __name__ == '__main__': - sys.exit(main()) + main() diff --git a/tests/src/test_keys.h b/tests/src/test_keys.h index 694bee55fb..63b5251309 100644 --- a/tests/src/test_keys.h +++ b/tests/src/test_keys.h @@ -4,717 +4,567 @@ *********************************************************************************/ const unsigned char test_rsa_1024[] = { - 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xaf, - 0x05, 0x7d, 0x39, 0x6e, 0xe8, 0x4f, 0xb7, 0x5f, 0xdb, 0xb5, 0xc2, 0xb1, - 0x3c, 0x7f, 0xe5, 0xa6, 0x54, 0xaa, 0x8a, 0xa2, 0x47, 0x0b, 0x54, 0x1e, - 0xe1, 0xfe, 0xb0, 0xb1, 0x2d, 0x25, 0xc7, 0x97, 0x11, 0x53, 0x12, 0x49, - 0xe1, 0x12, 0x96, 0x28, 0x04, 0x2d, 0xbb, 0xb6, 0xc1, 0x20, 0xd1, 0x44, - 0x35, 0x24, 0xef, 0x4c, 0x0e, 0x6e, 0x1d, 0x89, 0x56, 0xee, 0xb2, 0x07, - 0x7a, 0xf1, 0x23, 0x49, 0xdd, 0xee, 0xe5, 0x44, 0x83, 0xbc, 0x06, 0xc2, - 0xc6, 0x19, 0x48, 0xcd, 0x02, 0xb2, 0x02, 0xe7, 0x96, 0xae, 0xbd, 0x94, - 0xd3, 0xa7, 0xcb, 0xf8, 0x59, 0xc2, 0xc1, 0x81, 0x9c, 0x32, 0x4c, 0xb8, - 0x2b, 0x9c, 0xd3, 0x4e, 0xde, 0x26, 0x3a, 0x2a, 0xbf, 0xfe, 0x47, 0x33, - 0xf0, 0x77, 0x86, 0x9e, 0x86, 0x60, 0xf7, 0xd6, 0x83, 0x4d, 0xa5, 0x3d, - 0x69, 0x0e, 0xf7, 0x98, 0x5f, 0x6b, 0xc3, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x00, 0x87, 0x4b, 0xf0, 0xff, 0xc2, 0xf2, 0xa7, 0x1d, - 0x14, 0x67, 0x1d, 0xdd, 0x01, 0x71, 0xc9, 0x54, 0xd7, 0xfd, 0xbf, 0x50, - 0x28, 0x1e, 0x4f, 0x6d, 0x99, 0xea, 0x0e, 0x1e, 0xbc, 0xf8, 0x2f, 0xaa, - 0x58, 0xe7, 0xb5, 0x95, 0xff, 0xb2, 0x93, 0xd1, 0xab, 0xe1, 0x7f, 0x11, - 0x0b, 0x37, 0xc4, 0x8c, 0xc0, 0xf3, 0x6c, 0x37, 0xe8, 0x4d, 0x87, 0x66, - 0x21, 0xd3, 0x27, 0xf6, 0x4b, 0xbe, 0x08, 0x45, 0x7d, 0x3e, 0xc4, 0x09, - 0x8b, 0xa2, 0xfa, 0x0a, 0x31, 0x9f, 0xba, 0x41, 0x1c, 0x28, 0x41, 0xed, - 0x7b, 0xe8, 0x31, 0x96, 0xa8, 0xcd, 0xf9, 0xda, 0xa5, 0xd0, 0x06, 0x94, - 0xbc, 0x33, 0x5f, 0xc4, 0xc3, 0x22, 0x17, 0xfe, 0x04, 0x88, 0xbc, 0xe9, - 0xcb, 0x72, 0x02, 0xe5, 0x94, 0x68, 0xb1, 0xea, 0xd1, 0x19, 0x00, 0x04, - 0x77, 0xdb, 0x2c, 0xa7, 0x97, 0xfa, 0xc1, 0x9e, 0xda, 0x3f, 0x58, 0xc1, - 0x02, 0x41, 0x00, 0xe2, 0xab, 0x76, 0x08, 0x41, 0xbb, 0x9d, 0x30, 0xa8, - 0x1d, 0x22, 0x2d, 0xe1, 0xeb, 0x73, 0x81, 0xd8, 0x22, 0x14, 0x40, 0x7f, - 0x1b, 0x97, 0x5c, 0xbb, 0xfe, 0x4e, 0x1a, 0x94, 0x67, 0xfd, 0x98, 0xad, - 0xbd, 0x78, 0xf6, 0x07, 0x83, 0x6c, 0xa5, 0xbe, 0x19, 0x28, 0xb9, 0xd1, - 0x60, 0xd9, 0x7f, 0xd4, 0x5c, 0x12, 0xd6, 0xb5, 0x2e, 0x2c, 0x98, 0x71, - 0xa1, 0x74, 0xc6, 0x6b, 0x48, 0x81, 0x13, 0x02, 0x41, 0x00, 0xc5, 0xab, - 0x27, 0x60, 0x21, 0x59, 0xae, 0x7d, 0x6f, 0x20, 0xc3, 0xc2, 0xee, 0x85, - 0x1e, 0x46, 0xdc, 0x11, 0x2e, 0x68, 0x9e, 0x28, 0xd5, 0xfc, 0xbb, 0xf9, - 0x90, 0xa9, 0x9e, 0xf8, 0xa9, 0x0b, 0x8b, 0xb4, 0x4f, 0xd3, 0x64, 0x67, - 0xe7, 0xfc, 0x17, 0x89, 0xce, 0xb6, 0x63, 0xab, 0xda, 0x33, 0x86, 0x52, - 0xc3, 0xc7, 0x3f, 0x11, 0x17, 0x74, 0x90, 0x2e, 0x84, 0x05, 0x65, 0x92, - 0x70, 0x91, 0x02, 0x41, 0x00, 0xb6, 0xcd, 0xbd, 0x35, 0x4f, 0x7d, 0xf5, - 0x79, 0xa6, 0x3b, 0x48, 0xb3, 0x64, 0x3e, 0x35, 0x3b, 0x84, 0x89, 0x87, - 0x77, 0xb4, 0x8b, 0x15, 0xf9, 0x4e, 0x0b, 0xfc, 0x05, 0x67, 0xa6, 0xae, - 0x59, 0x11, 0xd5, 0x7a, 0xd6, 0x40, 0x9c, 0xf7, 0x64, 0x7b, 0xf9, 0x62, - 0x64, 0xe9, 0xbd, 0x87, 0xeb, 0x95, 0xe2, 0x63, 0xb7, 0x11, 0x0b, 0x9a, - 0x1f, 0x9f, 0x94, 0xac, 0xce, 0xd0, 0xfa, 0xfa, 0x4d, 0x02, 0x40, 0x71, - 0x19, 0x5e, 0xec, 0x37, 0xe8, 0xd2, 0x57, 0xde, 0xcf, 0xc6, 0x72, 0xb0, - 0x7a, 0xe6, 0x39, 0xf1, 0x0c, 0xbb, 0x9b, 0x0c, 0x73, 0x9d, 0x0c, 0x80, - 0x99, 0x68, 0xd6, 0x44, 0xa9, 0x4e, 0x3f, 0xd6, 0xed, 0x92, 0x87, 0x07, - 0x7a, 0x14, 0x58, 0x3f, 0x37, 0x90, 0x58, 0xf7, 0x6a, 0x8a, 0xec, 0xd4, - 0x3c, 0x62, 0xdc, 0x8c, 0x0f, 0x41, 0x76, 0x66, 0x50, 0xd7, 0x25, 0x27, - 0x5a, 0xc4, 0xa1, 0x02, 0x41, 0x00, 0xbb, 0x32, 0xd1, 0x33, 0xed, 0xc2, - 0xe0, 0x48, 0xd4, 0x63, 0x38, 0x8b, 0x7b, 0xe9, 0xcb, 0x4b, 0xe2, 0x9f, - 0x4b, 0x62, 0x50, 0xbe, 0x60, 0x3e, 0x70, 0xe3, 0x64, 0x75, 0x01, 0xc9, - 0x7d, 0xdd, 0xe2, 0x0a, 0x4e, 0x71, 0xbe, 0x95, 0xfd, 0x5e, 0x71, 0x78, - 0x4e, 0x25, 0xac, 0xa4, 0xba, 0xf2, 0x5b, 0xe5, 0x73, 0x8a, 0xae, 0x59, - 0xbb, 0xfe, 0x1c, 0x99, 0x77, 0x81, 0x44, 0x7a, 0x2b, 0x24, + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05, 0x7d, 0x39, 0x6e, + 0xe8, 0x4f, 0xb7, 0x5f, 0xdb, 0xb5, 0xc2, 0xb1, 0x3c, 0x7f, 0xe5, 0xa6, 0x54, 0xaa, 0x8a, 0xa2, + 0x47, 0x0b, 0x54, 0x1e, 0xe1, 0xfe, 0xb0, 0xb1, 0x2d, 0x25, 0xc7, 0x97, 0x11, 0x53, 0x12, 0x49, + 0xe1, 0x12, 0x96, 0x28, 0x04, 0x2d, 0xbb, 0xb6, 0xc1, 0x20, 0xd1, 0x44, 0x35, 0x24, 0xef, 0x4c, + 0x0e, 0x6e, 0x1d, 0x89, 0x56, 0xee, 0xb2, 0x07, 0x7a, 0xf1, 0x23, 0x49, 0xdd, 0xee, 0xe5, 0x44, + 0x83, 0xbc, 0x06, 0xc2, 0xc6, 0x19, 0x48, 0xcd, 0x02, 0xb2, 0x02, 0xe7, 0x96, 0xae, 0xbd, 0x94, + 0xd3, 0xa7, 0xcb, 0xf8, 0x59, 0xc2, 0xc1, 0x81, 0x9c, 0x32, 0x4c, 0xb8, 0x2b, 0x9c, 0xd3, 0x4e, + 0xde, 0x26, 0x3a, 0x2a, 0xbf, 0xfe, 0x47, 0x33, 0xf0, 0x77, 0x86, 0x9e, 0x86, 0x60, 0xf7, 0xd6, + 0x83, 0x4d, 0xa5, 0x3d, 0x69, 0x0e, 0xf7, 0x98, 0x5f, 0x6b, 0xc3, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x00, 0x87, 0x4b, 0xf0, 0xff, 0xc2, 0xf2, 0xa7, 0x1d, 0x14, 0x67, 0x1d, 0xdd, + 0x01, 0x71, 0xc9, 0x54, 0xd7, 0xfd, 0xbf, 0x50, 0x28, 0x1e, 0x4f, 0x6d, 0x99, 0xea, 0x0e, 0x1e, + 0xbc, 0xf8, 0x2f, 0xaa, 0x58, 0xe7, 0xb5, 0x95, 0xff, 0xb2, 0x93, 0xd1, 0xab, 0xe1, 0x7f, 0x11, + 0x0b, 0x37, 0xc4, 0x8c, 0xc0, 0xf3, 0x6c, 0x37, 0xe8, 0x4d, 0x87, 0x66, 0x21, 0xd3, 0x27, 0xf6, + 0x4b, 0xbe, 0x08, 0x45, 0x7d, 0x3e, 0xc4, 0x09, 0x8b, 0xa2, 0xfa, 0x0a, 0x31, 0x9f, 0xba, 0x41, + 0x1c, 0x28, 0x41, 0xed, 0x7b, 0xe8, 0x31, 0x96, 0xa8, 0xcd, 0xf9, 0xda, 0xa5, 0xd0, 0x06, 0x94, + 0xbc, 0x33, 0x5f, 0xc4, 0xc3, 0x22, 0x17, 0xfe, 0x04, 0x88, 0xbc, 0xe9, 0xcb, 0x72, 0x02, 0xe5, + 0x94, 0x68, 0xb1, 0xea, 0xd1, 0x19, 0x00, 0x04, 0x77, 0xdb, 0x2c, 0xa7, 0x97, 0xfa, 0xc1, 0x9e, + 0xda, 0x3f, 0x58, 0xc1, 0x02, 0x41, 0x00, 0xe2, 0xab, 0x76, 0x08, 0x41, 0xbb, 0x9d, 0x30, 0xa8, + 0x1d, 0x22, 0x2d, 0xe1, 0xeb, 0x73, 0x81, 0xd8, 0x22, 0x14, 0x40, 0x7f, 0x1b, 0x97, 0x5c, 0xbb, + 0xfe, 0x4e, 0x1a, 0x94, 0x67, 0xfd, 0x98, 0xad, 0xbd, 0x78, 0xf6, 0x07, 0x83, 0x6c, 0xa5, 0xbe, + 0x19, 0x28, 0xb9, 0xd1, 0x60, 0xd9, 0x7f, 0xd4, 0x5c, 0x12, 0xd6, 0xb5, 0x2e, 0x2c, 0x98, 0x71, + 0xa1, 0x74, 0xc6, 0x6b, 0x48, 0x81, 0x13, 0x02, 0x41, 0x00, 0xc5, 0xab, 0x27, 0x60, 0x21, 0x59, + 0xae, 0x7d, 0x6f, 0x20, 0xc3, 0xc2, 0xee, 0x85, 0x1e, 0x46, 0xdc, 0x11, 0x2e, 0x68, 0x9e, 0x28, + 0xd5, 0xfc, 0xbb, 0xf9, 0x90, 0xa9, 0x9e, 0xf8, 0xa9, 0x0b, 0x8b, 0xb4, 0x4f, 0xd3, 0x64, 0x67, + 0xe7, 0xfc, 0x17, 0x89, 0xce, 0xb6, 0x63, 0xab, 0xda, 0x33, 0x86, 0x52, 0xc3, 0xc7, 0x3f, 0x11, + 0x17, 0x74, 0x90, 0x2e, 0x84, 0x05, 0x65, 0x92, 0x70, 0x91, 0x02, 0x41, 0x00, 0xb6, 0xcd, 0xbd, + 0x35, 0x4f, 0x7d, 0xf5, 0x79, 0xa6, 0x3b, 0x48, 0xb3, 0x64, 0x3e, 0x35, 0x3b, 0x84, 0x89, 0x87, + 0x77, 0xb4, 0x8b, 0x15, 0xf9, 0x4e, 0x0b, 0xfc, 0x05, 0x67, 0xa6, 0xae, 0x59, 0x11, 0xd5, 0x7a, + 0xd6, 0x40, 0x9c, 0xf7, 0x64, 0x7b, 0xf9, 0x62, 0x64, 0xe9, 0xbd, 0x87, 0xeb, 0x95, 0xe2, 0x63, + 0xb7, 0x11, 0x0b, 0x9a, 0x1f, 0x9f, 0x94, 0xac, 0xce, 0xd0, 0xfa, 0xfa, 0x4d, 0x02, 0x40, 0x71, + 0x19, 0x5e, 0xec, 0x37, 0xe8, 0xd2, 0x57, 0xde, 0xcf, 0xc6, 0x72, 0xb0, 0x7a, 0xe6, 0x39, 0xf1, + 0x0c, 0xbb, 0x9b, 0x0c, 0x73, 0x9d, 0x0c, 0x80, 0x99, 0x68, 0xd6, 0x44, 0xa9, 0x4e, 0x3f, 0xd6, + 0xed, 0x92, 0x87, 0x07, 0x7a, 0x14, 0x58, 0x3f, 0x37, 0x90, 0x58, 0xf7, 0x6a, 0x8a, 0xec, 0xd4, + 0x3c, 0x62, 0xdc, 0x8c, 0x0f, 0x41, 0x76, 0x66, 0x50, 0xd7, 0x25, 0x27, 0x5a, 0xc4, 0xa1, 0x02, + 0x41, 0x00, 0xbb, 0x32, 0xd1, 0x33, 0xed, 0xc2, 0xe0, 0x48, 0xd4, 0x63, 0x38, 0x8b, 0x7b, 0xe9, + 0xcb, 0x4b, 0xe2, 0x9f, 0x4b, 0x62, 0x50, 0xbe, 0x60, 0x3e, 0x70, 0xe3, 0x64, 0x75, 0x01, 0xc9, + 0x7d, 0xdd, 0xe2, 0x0a, 0x4e, 0x71, 0xbe, 0x95, 0xfd, 0x5e, 0x71, 0x78, 0x4e, 0x25, 0xac, 0xa4, + 0xba, 0xf2, 0x5b, 0xe5, 0x73, 0x8a, 0xae, 0x59, 0xbb, 0xfe, 0x1c, 0x99, 0x77, 0x81, 0x44, 0x7a, + 0x2b, 0x24, }; const unsigned char test_rsa_1026[] = { - 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x02, 0xd0, - 0x96, 0x61, 0xfc, 0x74, 0x22, 0x4b, 0xa7, 0xbe, 0x79, 0x07, 0xab, 0xef, - 0x4f, 0x5e, 0x8b, 0xcc, 0x26, 0x4a, 0x80, 0x2c, 0x97, 0x8f, 0x7e, 0xaa, - 0x58, 0x55, 0xad, 0xa0, 0x54, 0x36, 0xd7, 0x5d, 0xb7, 0x68, 0xd2, 0x0f, - 0x68, 0x59, 0x5d, 0xbc, 0xc3, 0xd7, 0x25, 0xb1, 0x38, 0xe8, 0x0b, 0x24, - 0x7e, 0x44, 0xa4, 0x16, 0x3a, 0x05, 0x42, 0xfa, 0xb6, 0x12, 0xac, 0xbb, - 0xde, 0x45, 0xf2, 0xe9, 0x38, 0x94, 0xaa, 0x25, 0x3b, 0xdd, 0xef, 0x6a, - 0x7b, 0xec, 0xdc, 0x9c, 0xc2, 0x9a, 0x99, 0xba, 0xcf, 0x48, 0xdc, 0x6e, - 0x38, 0xdb, 0x7a, 0x33, 0xe9, 0xac, 0x92, 0x4c, 0x52, 0x0f, 0xc6, 0xbe, - 0x7d, 0x6e, 0x56, 0x46, 0xc1, 0xd6, 0x7f, 0xb8, 0xb2, 0xb9, 0x7a, 0xc6, - 0x0b, 0xee, 0xcc, 0x3b, 0xb8, 0xe7, 0x5b, 0xed, 0x83, 0x15, 0xaa, 0x3f, - 0xe4, 0x6f, 0x74, 0x8a, 0x66, 0xd6, 0xef, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x80, 0x6a, 0x4a, 0x34, 0x6b, 0xeb, 0xa9, 0x7f, 0x65, 0x5f, - 0xe8, 0x34, 0x64, 0x7d, 0x29, 0x44, 0xf5, 0xf4, 0x08, 0x15, 0xe7, 0x30, - 0x2c, 0xaf, 0x02, 0xed, 0x17, 0x98, 0x93, 0xc2, 0xd9, 0x89, 0x39, 0x5d, - 0x5e, 0x87, 0x7c, 0xac, 0xbf, 0x24, 0xa7, 0x7a, 0x07, 0x9d, 0x3d, 0xb7, - 0x15, 0x80, 0xcc, 0xdb, 0xf6, 0x30, 0x23, 0xd0, 0x0f, 0x80, 0xe5, 0x2f, - 0x5c, 0x1a, 0x07, 0x16, 0xb3, 0x23, 0xb7, 0xbf, 0xcb, 0xdc, 0x8a, 0x17, - 0x81, 0xc4, 0x4c, 0x41, 0x53, 0xe3, 0xda, 0x22, 0x8d, 0x17, 0xb2, 0xdc, - 0x78, 0xeb, 0x1f, 0x44, 0xcf, 0xf6, 0x0f, 0xe1, 0x15, 0x08, 0x08, 0xa6, - 0xe3, 0x8b, 0xa2, 0x47, 0x0a, 0xee, 0x2e, 0x94, 0x8a, 0x68, 0x98, 0xdd, - 0xad, 0xea, 0x56, 0xd9, 0x47, 0x09, 0x27, 0xac, 0xa8, 0xd9, 0x4a, 0x03, - 0x38, 0xc1, 0x1a, 0x8e, 0x95, 0x71, 0x5b, 0x5f, 0x94, 0xe0, 0x11, 0x02, - 0x41, 0x01, 0xf5, 0x41, 0x85, 0x34, 0xc3, 0x62, 0x36, 0xfc, 0x9f, 0xd3, - 0x89, 0x34, 0xd7, 0xc0, 0x6d, 0xfe, 0xd3, 0x82, 0x91, 0x51, 0xcc, 0xab, - 0x56, 0xb6, 0x33, 0x0c, 0x64, 0x1f, 0x77, 0x96, 0xa7, 0x19, 0x24, 0xcf, - 0x81, 0x19, 0xca, 0x26, 0xe1, 0x86, 0xec, 0xd3, 0x06, 0x8d, 0x66, 0x07, - 0xa0, 0x52, 0x60, 0xdb, 0x48, 0x57, 0x65, 0x19, 0x80, 0x43, 0x68, 0x91, - 0xad, 0xde, 0x9e, 0xb9, 0x2a, 0xb7, 0x02, 0x41, 0x01, 0x70, 0x04, 0x2f, - 0xbd, 0xba, 0xba, 0x1e, 0x10, 0x2b, 0x7f, 0x7f, 0x1d, 0xc9, 0xd9, 0x40, - 0xcf, 0xdc, 0xd8, 0x5d, 0xd0, 0xea, 0x65, 0xf5, 0x43, 0xc6, 0x43, 0x2e, - 0x9c, 0x54, 0x80, 0x72, 0x4b, 0xb4, 0x9b, 0x1e, 0x5f, 0x80, 0xca, 0x2b, - 0x9f, 0x84, 0xcd, 0x66, 0x44, 0xbf, 0xb2, 0xe3, 0xd0, 0x96, 0x80, 0x90, - 0xb8, 0x9f, 0x53, 0x4d, 0xc2, 0x95, 0x1e, 0x60, 0x6d, 0xb9, 0x09, 0xdd, - 0x89, 0x02, 0x41, 0x01, 0x4b, 0x6c, 0x1a, 0xeb, 0x1c, 0x14, 0xa0, 0x4e, - 0xc0, 0x4e, 0x59, 0x75, 0xfb, 0x01, 0x5c, 0xb9, 0x14, 0x98, 0x4c, 0x05, - 0x4d, 0xd2, 0x2b, 0xef, 0x24, 0x29, 0x99, 0x39, 0xc5, 0x14, 0x73, 0x3f, - 0x88, 0xbb, 0x3a, 0x9d, 0x16, 0xb0, 0x46, 0x85, 0xb3, 0xa8, 0x83, 0xb8, - 0x92, 0x31, 0x90, 0xab, 0x67, 0x27, 0x15, 0xd9, 0xd3, 0x1a, 0xdd, 0x57, - 0xb4, 0x98, 0x3d, 0xe1, 0xe8, 0x08, 0x7e, 0x59, 0x02, 0x41, 0x01, 0x17, - 0xbf, 0x76, 0xf3, 0x08, 0xb0, 0x56, 0x0e, 0x00, 0xa2, 0xc8, 0x64, 0x42, - 0x7d, 0xcd, 0x50, 0xb5, 0x16, 0x1c, 0x2a, 0xa5, 0x23, 0xa0, 0x0f, 0x46, - 0xf4, 0xe6, 0xc7, 0x9b, 0x4c, 0x90, 0x95, 0x8f, 0xd2, 0xa2, 0x82, 0x02, - 0x8a, 0xac, 0x22, 0x74, 0x77, 0x16, 0x98, 0x88, 0x08, 0x5a, 0x38, 0xc3, - 0x4f, 0x33, 0xb3, 0xc4, 0x19, 0x34, 0xf1, 0x07, 0x1d, 0xb2, 0x3b, 0x75, - 0xff, 0x53, 0xd1, 0x02, 0x41, 0x01, 0x20, 0xa4, 0x28, 0xb4, 0xe0, 0xc4, - 0xa6, 0xf2, 0x02, 0x92, 0x0f, 0xd4, 0x9c, 0xc9, 0x88, 0x6e, 0x6b, 0x67, - 0x19, 0xd4, 0x0a, 0x3a, 0xd0, 0x60, 0x4f, 0x5d, 0x5e, 0xfd, 0x5e, 0xf6, - 0x97, 0x3a, 0x57, 0x3a, 0xb3, 0x24, 0xf3, 0x8e, 0xcb, 0x8e, 0x66, 0x9a, - 0x69, 0x34, 0x15, 0x97, 0x08, 0x1e, 0x24, 0x0b, 0x6a, 0xe4, 0xe2, 0x71, - 0x48, 0x87, 0xdd, 0x78, 0xda, 0xda, 0xeb, 0x0b, 0x92, 0x16, + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x02, 0xd0, 0x96, 0x61, 0xfc, 0x74, + 0x22, 0x4b, 0xa7, 0xbe, 0x79, 0x07, 0xab, 0xef, 0x4f, 0x5e, 0x8b, 0xcc, 0x26, 0x4a, 0x80, 0x2c, + 0x97, 0x8f, 0x7e, 0xaa, 0x58, 0x55, 0xad, 0xa0, 0x54, 0x36, 0xd7, 0x5d, 0xb7, 0x68, 0xd2, 0x0f, + 0x68, 0x59, 0x5d, 0xbc, 0xc3, 0xd7, 0x25, 0xb1, 0x38, 0xe8, 0x0b, 0x24, 0x7e, 0x44, 0xa4, 0x16, + 0x3a, 0x05, 0x42, 0xfa, 0xb6, 0x12, 0xac, 0xbb, 0xde, 0x45, 0xf2, 0xe9, 0x38, 0x94, 0xaa, 0x25, + 0x3b, 0xdd, 0xef, 0x6a, 0x7b, 0xec, 0xdc, 0x9c, 0xc2, 0x9a, 0x99, 0xba, 0xcf, 0x48, 0xdc, 0x6e, + 0x38, 0xdb, 0x7a, 0x33, 0xe9, 0xac, 0x92, 0x4c, 0x52, 0x0f, 0xc6, 0xbe, 0x7d, 0x6e, 0x56, 0x46, + 0xc1, 0xd6, 0x7f, 0xb8, 0xb2, 0xb9, 0x7a, 0xc6, 0x0b, 0xee, 0xcc, 0x3b, 0xb8, 0xe7, 0x5b, 0xed, + 0x83, 0x15, 0xaa, 0x3f, 0xe4, 0x6f, 0x74, 0x8a, 0x66, 0xd6, 0xef, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x6a, 0x4a, 0x34, 0x6b, 0xeb, 0xa9, 0x7f, 0x65, 0x5f, 0xe8, 0x34, 0x64, 0x7d, + 0x29, 0x44, 0xf5, 0xf4, 0x08, 0x15, 0xe7, 0x30, 0x2c, 0xaf, 0x02, 0xed, 0x17, 0x98, 0x93, 0xc2, + 0xd9, 0x89, 0x39, 0x5d, 0x5e, 0x87, 0x7c, 0xac, 0xbf, 0x24, 0xa7, 0x7a, 0x07, 0x9d, 0x3d, 0xb7, + 0x15, 0x80, 0xcc, 0xdb, 0xf6, 0x30, 0x23, 0xd0, 0x0f, 0x80, 0xe5, 0x2f, 0x5c, 0x1a, 0x07, 0x16, + 0xb3, 0x23, 0xb7, 0xbf, 0xcb, 0xdc, 0x8a, 0x17, 0x81, 0xc4, 0x4c, 0x41, 0x53, 0xe3, 0xda, 0x22, + 0x8d, 0x17, 0xb2, 0xdc, 0x78, 0xeb, 0x1f, 0x44, 0xcf, 0xf6, 0x0f, 0xe1, 0x15, 0x08, 0x08, 0xa6, + 0xe3, 0x8b, 0xa2, 0x47, 0x0a, 0xee, 0x2e, 0x94, 0x8a, 0x68, 0x98, 0xdd, 0xad, 0xea, 0x56, 0xd9, + 0x47, 0x09, 0x27, 0xac, 0xa8, 0xd9, 0x4a, 0x03, 0x38, 0xc1, 0x1a, 0x8e, 0x95, 0x71, 0x5b, 0x5f, + 0x94, 0xe0, 0x11, 0x02, 0x41, 0x01, 0xf5, 0x41, 0x85, 0x34, 0xc3, 0x62, 0x36, 0xfc, 0x9f, 0xd3, + 0x89, 0x34, 0xd7, 0xc0, 0x6d, 0xfe, 0xd3, 0x82, 0x91, 0x51, 0xcc, 0xab, 0x56, 0xb6, 0x33, 0x0c, + 0x64, 0x1f, 0x77, 0x96, 0xa7, 0x19, 0x24, 0xcf, 0x81, 0x19, 0xca, 0x26, 0xe1, 0x86, 0xec, 0xd3, + 0x06, 0x8d, 0x66, 0x07, 0xa0, 0x52, 0x60, 0xdb, 0x48, 0x57, 0x65, 0x19, 0x80, 0x43, 0x68, 0x91, + 0xad, 0xde, 0x9e, 0xb9, 0x2a, 0xb7, 0x02, 0x41, 0x01, 0x70, 0x04, 0x2f, 0xbd, 0xba, 0xba, 0x1e, + 0x10, 0x2b, 0x7f, 0x7f, 0x1d, 0xc9, 0xd9, 0x40, 0xcf, 0xdc, 0xd8, 0x5d, 0xd0, 0xea, 0x65, 0xf5, + 0x43, 0xc6, 0x43, 0x2e, 0x9c, 0x54, 0x80, 0x72, 0x4b, 0xb4, 0x9b, 0x1e, 0x5f, 0x80, 0xca, 0x2b, + 0x9f, 0x84, 0xcd, 0x66, 0x44, 0xbf, 0xb2, 0xe3, 0xd0, 0x96, 0x80, 0x90, 0xb8, 0x9f, 0x53, 0x4d, + 0xc2, 0x95, 0x1e, 0x60, 0x6d, 0xb9, 0x09, 0xdd, 0x89, 0x02, 0x41, 0x01, 0x4b, 0x6c, 0x1a, 0xeb, + 0x1c, 0x14, 0xa0, 0x4e, 0xc0, 0x4e, 0x59, 0x75, 0xfb, 0x01, 0x5c, 0xb9, 0x14, 0x98, 0x4c, 0x05, + 0x4d, 0xd2, 0x2b, 0xef, 0x24, 0x29, 0x99, 0x39, 0xc5, 0x14, 0x73, 0x3f, 0x88, 0xbb, 0x3a, 0x9d, + 0x16, 0xb0, 0x46, 0x85, 0xb3, 0xa8, 0x83, 0xb8, 0x92, 0x31, 0x90, 0xab, 0x67, 0x27, 0x15, 0xd9, + 0xd3, 0x1a, 0xdd, 0x57, 0xb4, 0x98, 0x3d, 0xe1, 0xe8, 0x08, 0x7e, 0x59, 0x02, 0x41, 0x01, 0x17, + 0xbf, 0x76, 0xf3, 0x08, 0xb0, 0x56, 0x0e, 0x00, 0xa2, 0xc8, 0x64, 0x42, 0x7d, 0xcd, 0x50, 0xb5, + 0x16, 0x1c, 0x2a, 0xa5, 0x23, 0xa0, 0x0f, 0x46, 0xf4, 0xe6, 0xc7, 0x9b, 0x4c, 0x90, 0x95, 0x8f, + 0xd2, 0xa2, 0x82, 0x02, 0x8a, 0xac, 0x22, 0x74, 0x77, 0x16, 0x98, 0x88, 0x08, 0x5a, 0x38, 0xc3, + 0x4f, 0x33, 0xb3, 0xc4, 0x19, 0x34, 0xf1, 0x07, 0x1d, 0xb2, 0x3b, 0x75, 0xff, 0x53, 0xd1, 0x02, + 0x41, 0x01, 0x20, 0xa4, 0x28, 0xb4, 0xe0, 0xc4, 0xa6, 0xf2, 0x02, 0x92, 0x0f, 0xd4, 0x9c, 0xc9, + 0x88, 0x6e, 0x6b, 0x67, 0x19, 0xd4, 0x0a, 0x3a, 0xd0, 0x60, 0x4f, 0x5d, 0x5e, 0xfd, 0x5e, 0xf6, + 0x97, 0x3a, 0x57, 0x3a, 0xb3, 0x24, 0xf3, 0x8e, 0xcb, 0x8e, 0x66, 0x9a, 0x69, 0x34, 0x15, 0x97, + 0x08, 0x1e, 0x24, 0x0b, 0x6a, 0xe4, 0xe2, 0x71, 0x48, 0x87, 0xdd, 0x78, 0xda, 0xda, 0xeb, 0x0b, + 0x92, 0x16, }; const unsigned char test_rsa_1028[] = { - 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x0e, 0x62, - 0xa7, 0x6f, 0x0e, 0x0b, 0x59, 0x68, 0x3a, 0x7e, 0xbf, 0x7c, 0xbf, 0xd3, - 0x7b, 0x1d, 0x17, 0x81, 0xd8, 0xf1, 0xb9, 0x00, 0x60, 0x4b, 0x50, 0x7f, - 0x0f, 0x04, 0xc7, 0x2a, 0x3d, 0x34, 0x0d, 0x06, 0x7b, 0xcd, 0x53, 0xbe, - 0xa3, 0xca, 0xff, 0x4e, 0x4a, 0xe6, 0x94, 0xf0, 0xb6, 0xd8, 0xf5, 0x91, - 0xa4, 0x16, 0x7f, 0xbf, 0x7f, 0x37, 0x2a, 0xb5, 0x7e, 0x83, 0xa6, 0x9a, - 0x3f, 0x26, 0xf4, 0x47, 0xbc, 0xf5, 0x82, 0xbc, 0x96, 0x21, 0xa3, 0x0a, - 0x3b, 0x44, 0xd6, 0xb4, 0x3e, 0x98, 0x6d, 0x1a, 0x86, 0x7b, 0x07, 0x48, - 0x9e, 0x4f, 0x9b, 0xfc, 0xad, 0xaa, 0x82, 0xa2, 0x78, 0x2d, 0xc2, 0x72, - 0x9a, 0x63, 0x1f, 0xb1, 0xfb, 0x9f, 0xfb, 0x79, 0x4b, 0x4e, 0x53, 0xc7, - 0x62, 0x39, 0xe0, 0x4d, 0x4a, 0x8f, 0x80, 0x35, 0x25, 0x88, 0xdb, 0x29, - 0x46, 0x2d, 0xde, 0x18, 0x23, 0x7c, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x01, 0xcf, 0xa0, 0x42, 0x2e, 0x3b, 0xb6, 0x0c, 0x15, - 0xef, 0x2e, 0x96, 0xdb, 0x44, 0x99, 0xe7, 0x89, 0xf5, 0xd6, 0x34, 0xea, - 0x64, 0x56, 0x7b, 0x2c, 0xdd, 0x6e, 0x2b, 0xdd, 0x12, 0x1f, 0x85, 0xed, - 0xcc, 0xde, 0xe9, 0xb4, 0xed, 0x17, 0x8c, 0x5f, 0x33, 0x81, 0x61, 0x01, - 0xa7, 0xc3, 0x71, 0x51, 0x8b, 0x3e, 0x23, 0xf9, 0xfd, 0xc7, 0x1b, 0x90, - 0x24, 0x2c, 0xd3, 0x10, 0xb6, 0xb3, 0x14, 0x28, 0xb0, 0xb6, 0x4e, 0xb9, - 0x59, 0x6b, 0xe0, 0xcc, 0x04, 0x4c, 0xc8, 0x50, 0x48, 0x98, 0x2f, 0x90, - 0xb7, 0x06, 0xe6, 0x6c, 0xcd, 0xd3, 0x9a, 0xd5, 0xa1, 0xa7, 0xb6, 0x4c, - 0xf0, 0x34, 0xea, 0xc0, 0xc3, 0x5d, 0x7a, 0xce, 0x93, 0xf2, 0xbc, 0xd3, - 0xce, 0x24, 0x3b, 0xd8, 0xf8, 0x3b, 0x46, 0xf5, 0x09, 0xca, 0x2f, 0x80, - 0x50, 0x63, 0x00, 0x2a, 0xf2, 0xbb, 0x2d, 0x88, 0xb6, 0xee, 0x36, 0xa9, - 0x02, 0x41, 0x03, 0xf0, 0x88, 0x6d, 0x29, 0x77, 0x52, 0x6f, 0x3f, 0x3f, - 0x6a, 0x07, 0x56, 0x00, 0x23, 0x2c, 0xe3, 0x00, 0x85, 0x17, 0x27, 0x6d, - 0xd3, 0x72, 0x1d, 0xee, 0x08, 0xfd, 0x6c, 0x99, 0x9f, 0xc9, 0x76, 0xb9, - 0xe8, 0xdd, 0x2b, 0xc1, 0x43, 0x38, 0x5f, 0xa4, 0xb4, 0x87, 0x35, 0xce, - 0x81, 0xc6, 0x6b, 0x50, 0x1d, 0x71, 0x29, 0xee, 0x78, 0x60, 0xcf, 0xbe, - 0xf2, 0x3b, 0x5d, 0xa9, 0x1e, 0x6c, 0x2d, 0x02, 0x41, 0x03, 0xa6, 0xc8, - 0x73, 0x4a, 0xac, 0xe5, 0x9d, 0x5f, 0x38, 0x6f, 0x97, 0xde, 0x45, 0x0f, - 0x8a, 0x12, 0xd6, 0x3a, 0xe6, 0xac, 0x15, 0xd3, 0x36, 0xe0, 0x10, 0xc9, - 0xfc, 0xf0, 0x3a, 0x32, 0xf0, 0x61, 0x18, 0x81, 0xac, 0x6c, 0xd8, 0xb3, - 0xf9, 0x89, 0x92, 0x5c, 0x0f, 0x02, 0x5a, 0xf2, 0x6c, 0xf2, 0x6a, 0xeb, - 0xd7, 0xd9, 0xb0, 0x4e, 0xb5, 0x03, 0x04, 0x8d, 0xca, 0x2f, 0x50, 0x3c, - 0x28, 0xe9, 0x02, 0x41, 0x01, 0x9b, 0x30, 0x04, 0x51, 0xc3, 0xb4, 0x78, - 0x66, 0xf1, 0x13, 0xe9, 0xa9, 0xc6, 0xa4, 0x90, 0xc8, 0x7c, 0x8d, 0xc6, - 0xc2, 0xec, 0xa4, 0x29, 0x02, 0xca, 0xea, 0x1f, 0x69, 0x07, 0xb9, 0x7e, - 0x0a, 0x4a, 0x02, 0x07, 0x2a, 0xaf, 0xc1, 0x18, 0x5a, 0xe6, 0x6c, 0x34, - 0x34, 0x5b, 0xdd, 0xcd, 0x68, 0x33, 0x61, 0xcd, 0xa1, 0xaa, 0xf8, 0xa9, - 0x80, 0x09, 0xf9, 0xf8, 0xfa, 0x56, 0xd9, 0x70, 0x81, 0x02, 0x40, 0x1b, - 0xcc, 0xa8, 0x49, 0x17, 0x3d, 0x38, 0xe1, 0xe5, 0x0e, 0xc4, 0x88, 0x72, - 0xab, 0x54, 0xa2, 0xdc, 0xc6, 0x21, 0xa8, 0x0a, 0x7a, 0x1e, 0x8e, 0xa9, - 0x51, 0x28, 0x79, 0x88, 0x71, 0x8d, 0x5e, 0x85, 0xd9, 0x0d, 0x64, 0xab, - 0x49, 0x26, 0xe9, 0xa5, 0x75, 0xa1, 0x68, 0xa3, 0x85, 0xc4, 0x21, 0xad, - 0x76, 0x58, 0x13, 0xfc, 0x3f, 0x4a, 0xf8, 0xcd, 0x00, 0xde, 0x7b, 0x6b, - 0xba, 0x6e, 0x49, 0x02, 0x41, 0x03, 0x6d, 0xcf, 0x69, 0xf6, 0xe5, 0x48, - 0xc8, 0xac, 0xfb, 0x53, 0x6f, 0xb6, 0xcd, 0x18, 0x6f, 0x8b, 0x8f, 0x20, - 0xd3, 0x13, 0x36, 0x1d, 0x04, 0x47, 0xc1, 0xb5, 0xe3, 0x80, 0xf4, 0x11, - 0x3e, 0x57, 0x8b, 0x31, 0xe8, 0x67, 0xdd, 0xa4, 0x7d, 0x44, 0xad, 0x37, - 0x61, 0xe7, 0x93, 0xf7, 0x25, 0x03, 0x1b, 0x8d, 0x37, 0x9f, 0x38, 0x9d, - 0xe2, 0x77, 0xa9, 0xa0, 0x13, 0x76, 0x51, 0xdf, 0x54, 0x8a, + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x0e, 0x62, 0xa7, 0x6f, 0x0e, 0x0b, + 0x59, 0x68, 0x3a, 0x7e, 0xbf, 0x7c, 0xbf, 0xd3, 0x7b, 0x1d, 0x17, 0x81, 0xd8, 0xf1, 0xb9, 0x00, + 0x60, 0x4b, 0x50, 0x7f, 0x0f, 0x04, 0xc7, 0x2a, 0x3d, 0x34, 0x0d, 0x06, 0x7b, 0xcd, 0x53, 0xbe, + 0xa3, 0xca, 0xff, 0x4e, 0x4a, 0xe6, 0x94, 0xf0, 0xb6, 0xd8, 0xf5, 0x91, 0xa4, 0x16, 0x7f, 0xbf, + 0x7f, 0x37, 0x2a, 0xb5, 0x7e, 0x83, 0xa6, 0x9a, 0x3f, 0x26, 0xf4, 0x47, 0xbc, 0xf5, 0x82, 0xbc, + 0x96, 0x21, 0xa3, 0x0a, 0x3b, 0x44, 0xd6, 0xb4, 0x3e, 0x98, 0x6d, 0x1a, 0x86, 0x7b, 0x07, 0x48, + 0x9e, 0x4f, 0x9b, 0xfc, 0xad, 0xaa, 0x82, 0xa2, 0x78, 0x2d, 0xc2, 0x72, 0x9a, 0x63, 0x1f, 0xb1, + 0xfb, 0x9f, 0xfb, 0x79, 0x4b, 0x4e, 0x53, 0xc7, 0x62, 0x39, 0xe0, 0x4d, 0x4a, 0x8f, 0x80, 0x35, + 0x25, 0x88, 0xdb, 0x29, 0x46, 0x2d, 0xde, 0x18, 0x23, 0x7c, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x01, 0xcf, 0xa0, 0x42, 0x2e, 0x3b, 0xb6, 0x0c, 0x15, 0xef, 0x2e, 0x96, 0xdb, + 0x44, 0x99, 0xe7, 0x89, 0xf5, 0xd6, 0x34, 0xea, 0x64, 0x56, 0x7b, 0x2c, 0xdd, 0x6e, 0x2b, 0xdd, + 0x12, 0x1f, 0x85, 0xed, 0xcc, 0xde, 0xe9, 0xb4, 0xed, 0x17, 0x8c, 0x5f, 0x33, 0x81, 0x61, 0x01, + 0xa7, 0xc3, 0x71, 0x51, 0x8b, 0x3e, 0x23, 0xf9, 0xfd, 0xc7, 0x1b, 0x90, 0x24, 0x2c, 0xd3, 0x10, + 0xb6, 0xb3, 0x14, 0x28, 0xb0, 0xb6, 0x4e, 0xb9, 0x59, 0x6b, 0xe0, 0xcc, 0x04, 0x4c, 0xc8, 0x50, + 0x48, 0x98, 0x2f, 0x90, 0xb7, 0x06, 0xe6, 0x6c, 0xcd, 0xd3, 0x9a, 0xd5, 0xa1, 0xa7, 0xb6, 0x4c, + 0xf0, 0x34, 0xea, 0xc0, 0xc3, 0x5d, 0x7a, 0xce, 0x93, 0xf2, 0xbc, 0xd3, 0xce, 0x24, 0x3b, 0xd8, + 0xf8, 0x3b, 0x46, 0xf5, 0x09, 0xca, 0x2f, 0x80, 0x50, 0x63, 0x00, 0x2a, 0xf2, 0xbb, 0x2d, 0x88, + 0xb6, 0xee, 0x36, 0xa9, 0x02, 0x41, 0x03, 0xf0, 0x88, 0x6d, 0x29, 0x77, 0x52, 0x6f, 0x3f, 0x3f, + 0x6a, 0x07, 0x56, 0x00, 0x23, 0x2c, 0xe3, 0x00, 0x85, 0x17, 0x27, 0x6d, 0xd3, 0x72, 0x1d, 0xee, + 0x08, 0xfd, 0x6c, 0x99, 0x9f, 0xc9, 0x76, 0xb9, 0xe8, 0xdd, 0x2b, 0xc1, 0x43, 0x38, 0x5f, 0xa4, + 0xb4, 0x87, 0x35, 0xce, 0x81, 0xc6, 0x6b, 0x50, 0x1d, 0x71, 0x29, 0xee, 0x78, 0x60, 0xcf, 0xbe, + 0xf2, 0x3b, 0x5d, 0xa9, 0x1e, 0x6c, 0x2d, 0x02, 0x41, 0x03, 0xa6, 0xc8, 0x73, 0x4a, 0xac, 0xe5, + 0x9d, 0x5f, 0x38, 0x6f, 0x97, 0xde, 0x45, 0x0f, 0x8a, 0x12, 0xd6, 0x3a, 0xe6, 0xac, 0x15, 0xd3, + 0x36, 0xe0, 0x10, 0xc9, 0xfc, 0xf0, 0x3a, 0x32, 0xf0, 0x61, 0x18, 0x81, 0xac, 0x6c, 0xd8, 0xb3, + 0xf9, 0x89, 0x92, 0x5c, 0x0f, 0x02, 0x5a, 0xf2, 0x6c, 0xf2, 0x6a, 0xeb, 0xd7, 0xd9, 0xb0, 0x4e, + 0xb5, 0x03, 0x04, 0x8d, 0xca, 0x2f, 0x50, 0x3c, 0x28, 0xe9, 0x02, 0x41, 0x01, 0x9b, 0x30, 0x04, + 0x51, 0xc3, 0xb4, 0x78, 0x66, 0xf1, 0x13, 0xe9, 0xa9, 0xc6, 0xa4, 0x90, 0xc8, 0x7c, 0x8d, 0xc6, + 0xc2, 0xec, 0xa4, 0x29, 0x02, 0xca, 0xea, 0x1f, 0x69, 0x07, 0xb9, 0x7e, 0x0a, 0x4a, 0x02, 0x07, + 0x2a, 0xaf, 0xc1, 0x18, 0x5a, 0xe6, 0x6c, 0x34, 0x34, 0x5b, 0xdd, 0xcd, 0x68, 0x33, 0x61, 0xcd, + 0xa1, 0xaa, 0xf8, 0xa9, 0x80, 0x09, 0xf9, 0xf8, 0xfa, 0x56, 0xd9, 0x70, 0x81, 0x02, 0x40, 0x1b, + 0xcc, 0xa8, 0x49, 0x17, 0x3d, 0x38, 0xe1, 0xe5, 0x0e, 0xc4, 0x88, 0x72, 0xab, 0x54, 0xa2, 0xdc, + 0xc6, 0x21, 0xa8, 0x0a, 0x7a, 0x1e, 0x8e, 0xa9, 0x51, 0x28, 0x79, 0x88, 0x71, 0x8d, 0x5e, 0x85, + 0xd9, 0x0d, 0x64, 0xab, 0x49, 0x26, 0xe9, 0xa5, 0x75, 0xa1, 0x68, 0xa3, 0x85, 0xc4, 0x21, 0xad, + 0x76, 0x58, 0x13, 0xfc, 0x3f, 0x4a, 0xf8, 0xcd, 0x00, 0xde, 0x7b, 0x6b, 0xba, 0x6e, 0x49, 0x02, + 0x41, 0x03, 0x6d, 0xcf, 0x69, 0xf6, 0xe5, 0x48, 0xc8, 0xac, 0xfb, 0x53, 0x6f, 0xb6, 0xcd, 0x18, + 0x6f, 0x8b, 0x8f, 0x20, 0xd3, 0x13, 0x36, 0x1d, 0x04, 0x47, 0xc1, 0xb5, 0xe3, 0x80, 0xf4, 0x11, + 0x3e, 0x57, 0x8b, 0x31, 0xe8, 0x67, 0xdd, 0xa4, 0x7d, 0x44, 0xad, 0x37, 0x61, 0xe7, 0x93, 0xf7, + 0x25, 0x03, 0x1b, 0x8d, 0x37, 0x9f, 0x38, 0x9d, 0xe2, 0x77, 0xa9, 0xa0, 0x13, 0x76, 0x51, 0xdf, + 0x54, 0x8a, }; const unsigned char test_rsa_1030[] = { - 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x2b, 0x7c, - 0xd1, 0x97, 0xf5, 0x79, 0x6d, 0x1f, 0x8e, 0x57, 0x6b, 0x2b, 0x37, 0x72, - 0x3f, 0xd9, 0x21, 0x08, 0x14, 0xef, 0x1c, 0x19, 0x95, 0xf9, 0x89, 0x9d, - 0x50, 0x05, 0x8f, 0x37, 0x9d, 0x23, 0x9c, 0x66, 0x87, 0x8e, 0x92, 0x2f, - 0x34, 0xc6, 0xae, 0x36, 0x72, 0xc8, 0x59, 0x8f, 0xcd, 0x5d, 0x47, 0xb7, - 0x64, 0xd2, 0xec, 0x15, 0x6e, 0x13, 0x4d, 0x03, 0xcf, 0x6a, 0x94, 0xd3, - 0x8d, 0x2e, 0xa8, 0xbc, 0x76, 0xdb, 0xbc, 0x60, 0xc4, 0xb9, 0x74, 0x21, - 0x90, 0x90, 0xea, 0xf2, 0x87, 0x49, 0x7d, 0x7d, 0xcf, 0x7f, 0x11, 0x9c, - 0xfa, 0x86, 0x74, 0x96, 0xf7, 0xe9, 0x1c, 0x12, 0xb5, 0xd5, 0x52, 0xe1, - 0xd1, 0x46, 0x1a, 0x80, 0xdb, 0xe9, 0xa5, 0x9d, 0xb3, 0xb0, 0x16, 0xc6, - 0xc0, 0x14, 0x1c, 0x3b, 0x2a, 0x0e, 0x22, 0x60, 0x89, 0xb8, 0x55, 0xcb, - 0x88, 0xef, 0x65, 0x64, 0x08, 0xbd, 0x89, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x02, 0x10, 0xd5, 0xff, 0x53, 0x1c, 0xac, 0xb2, 0x2f, - 0x8c, 0xf7, 0xdd, 0x1f, 0xd9, 0xfb, 0x03, 0x76, 0xf3, 0x64, 0x7f, 0x2e, - 0x9a, 0xb3, 0xdf, 0x9c, 0x89, 0xb9, 0xad, 0x3c, 0x98, 0xe6, 0x8b, 0x89, - 0xad, 0xeb, 0x29, 0x90, 0x1d, 0xd2, 0xf2, 0xcf, 0x2a, 0xc1, 0xf8, 0x17, - 0x72, 0x62, 0x78, 0x83, 0x0e, 0xc8, 0xa8, 0xd0, 0xfd, 0xd1, 0x9d, 0x49, - 0x6e, 0xc6, 0xbc, 0x68, 0x36, 0x71, 0x17, 0x47, 0x86, 0xb7, 0xd6, 0xa8, - 0xe8, 0x22, 0xfa, 0x71, 0xd6, 0x5a, 0xd3, 0x5a, 0xbb, 0xdf, 0x0e, 0x6e, - 0x55, 0xff, 0x2c, 0x18, 0x21, 0xb6, 0x2b, 0xc6, 0x30, 0x19, 0x21, 0x60, - 0xe5, 0xc9, 0xb3, 0xdc, 0xaf, 0xc6, 0x5a, 0xe6, 0xb2, 0xa0, 0x88, 0xfb, - 0xc5, 0x59, 0x1d, 0xa5, 0x8a, 0x45, 0xdd, 0x7a, 0x30, 0x96, 0x0f, 0x7d, - 0x3d, 0xef, 0x75, 0xb8, 0x0c, 0xdf, 0x73, 0x24, 0x73, 0x60, 0xe8, 0xfb, - 0x02, 0x41, 0x07, 0x2e, 0x37, 0x1a, 0x3b, 0xa8, 0x61, 0xe7, 0x8e, 0x3e, - 0xb9, 0x31, 0x30, 0x65, 0xfa, 0xab, 0x0a, 0x97, 0x21, 0x6e, 0x95, 0x44, - 0xbf, 0xc2, 0xd5, 0xb4, 0x03, 0x84, 0x4b, 0x43, 0x27, 0x37, 0x05, 0x75, - 0x5a, 0x85, 0xaa, 0x0b, 0xaf, 0x71, 0x14, 0x77, 0x0c, 0xfe, 0xca, 0x20, - 0xbc, 0xa1, 0x7a, 0xc1, 0x9b, 0xc4, 0xcb, 0xba, 0x10, 0x6a, 0x33, 0xb3, - 0xdd, 0xdc, 0xa0, 0xfb, 0x53, 0x5f, 0x33, 0x02, 0x41, 0x06, 0x0e, 0x6a, - 0xf3, 0x7a, 0xb4, 0xea, 0x11, 0xf5, 0x2b, 0x93, 0x44, 0xe7, 0x16, 0x0e, - 0xb2, 0xa5, 0x3f, 0x10, 0x75, 0xe1, 0x22, 0x9a, 0x7f, 0x10, 0xa3, 0x01, - 0xde, 0x33, 0x59, 0xf5, 0x3e, 0x98, 0x1e, 0xa0, 0xe1, 0x7d, 0xf0, 0xfb, - 0x38, 0x0f, 0x08, 0x9e, 0x5c, 0x37, 0xdd, 0x40, 0xda, 0xa2, 0x9e, 0xef, - 0xd2, 0x05, 0xf5, 0xc8, 0x7b, 0x38, 0xf8, 0xfe, 0xf6, 0x36, 0xb5, 0x7b, - 0xa0, 0x53, 0x02, 0x41, 0x02, 0x3a, 0x5d, 0xd0, 0x9e, 0xf8, 0x35, 0x40, - 0xb3, 0x0b, 0x55, 0x4d, 0x24, 0xf6, 0x4f, 0x9c, 0x28, 0xd2, 0x12, 0x06, - 0x8c, 0xfc, 0x62, 0xff, 0xe2, 0x6d, 0x53, 0xb6, 0x05, 0xe0, 0x55, 0x57, - 0xa6, 0x32, 0xee, 0x9e, 0x90, 0xcf, 0xc5, 0x65, 0x31, 0xf3, 0x6a, 0xad, - 0xd8, 0x2b, 0xe6, 0x3b, 0xb8, 0xaa, 0x40, 0x5a, 0x04, 0xd8, 0xbb, 0xe5, - 0x28, 0x1b, 0xc4, 0x58, 0x83, 0xfe, 0xd7, 0xb4, 0xaf, 0x02, 0x41, 0x04, - 0x1d, 0xe6, 0xdb, 0xad, 0x4c, 0xaf, 0x54, 0x17, 0xa9, 0x50, 0x49, 0x65, - 0x20, 0x1c, 0x4b, 0x99, 0x82, 0x7d, 0xe8, 0xf3, 0x69, 0xf7, 0x45, 0x6a, - 0x84, 0xb3, 0xef, 0x5c, 0x4e, 0xc9, 0x23, 0x8c, 0x7a, 0x3d, 0x78, 0x2a, - 0x89, 0x15, 0xeb, 0xec, 0x64, 0x3a, 0x69, 0x8b, 0x5b, 0xee, 0x0a, 0xf0, - 0xc2, 0x43, 0x59, 0x2b, 0xce, 0x00, 0x42, 0xaa, 0xde, 0xaf, 0x49, 0xa4, - 0xb4, 0xc6, 0xdd, 0x9b, 0x02, 0x41, 0x05, 0xd3, 0x2d, 0xee, 0x95, 0x2b, - 0x50, 0x3b, 0x53, 0x6f, 0xce, 0xcf, 0x19, 0xec, 0x08, 0x23, 0x6a, 0x9c, - 0xd9, 0x45, 0xc4, 0x95, 0x51, 0xbf, 0x99, 0xf1, 0x5b, 0x67, 0x4f, 0xc2, - 0x1a, 0xa1, 0x99, 0xf4, 0xc4, 0x21, 0x1f, 0x0f, 0x00, 0x07, 0xc4, 0x17, - 0xc1, 0xfb, 0x41, 0x55, 0x32, 0x6a, 0x21, 0x42, 0xfc, 0xa4, 0x54, 0xbb, - 0xd3, 0x8d, 0x6d, 0xbc, 0x6c, 0xaa, 0x7a, 0xc3, 0x35, 0xa1, 0x7c, + 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x2b, 0x7c, 0xd1, 0x97, 0xf5, 0x79, + 0x6d, 0x1f, 0x8e, 0x57, 0x6b, 0x2b, 0x37, 0x72, 0x3f, 0xd9, 0x21, 0x08, 0x14, 0xef, 0x1c, 0x19, + 0x95, 0xf9, 0x89, 0x9d, 0x50, 0x05, 0x8f, 0x37, 0x9d, 0x23, 0x9c, 0x66, 0x87, 0x8e, 0x92, 0x2f, + 0x34, 0xc6, 0xae, 0x36, 0x72, 0xc8, 0x59, 0x8f, 0xcd, 0x5d, 0x47, 0xb7, 0x64, 0xd2, 0xec, 0x15, + 0x6e, 0x13, 0x4d, 0x03, 0xcf, 0x6a, 0x94, 0xd3, 0x8d, 0x2e, 0xa8, 0xbc, 0x76, 0xdb, 0xbc, 0x60, + 0xc4, 0xb9, 0x74, 0x21, 0x90, 0x90, 0xea, 0xf2, 0x87, 0x49, 0x7d, 0x7d, 0xcf, 0x7f, 0x11, 0x9c, + 0xfa, 0x86, 0x74, 0x96, 0xf7, 0xe9, 0x1c, 0x12, 0xb5, 0xd5, 0x52, 0xe1, 0xd1, 0x46, 0x1a, 0x80, + 0xdb, 0xe9, 0xa5, 0x9d, 0xb3, 0xb0, 0x16, 0xc6, 0xc0, 0x14, 0x1c, 0x3b, 0x2a, 0x0e, 0x22, 0x60, + 0x89, 0xb8, 0x55, 0xcb, 0x88, 0xef, 0x65, 0x64, 0x08, 0xbd, 0x89, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x02, 0x10, 0xd5, 0xff, 0x53, 0x1c, 0xac, 0xb2, 0x2f, 0x8c, 0xf7, 0xdd, 0x1f, + 0xd9, 0xfb, 0x03, 0x76, 0xf3, 0x64, 0x7f, 0x2e, 0x9a, 0xb3, 0xdf, 0x9c, 0x89, 0xb9, 0xad, 0x3c, + 0x98, 0xe6, 0x8b, 0x89, 0xad, 0xeb, 0x29, 0x90, 0x1d, 0xd2, 0xf2, 0xcf, 0x2a, 0xc1, 0xf8, 0x17, + 0x72, 0x62, 0x78, 0x83, 0x0e, 0xc8, 0xa8, 0xd0, 0xfd, 0xd1, 0x9d, 0x49, 0x6e, 0xc6, 0xbc, 0x68, + 0x36, 0x71, 0x17, 0x47, 0x86, 0xb7, 0xd6, 0xa8, 0xe8, 0x22, 0xfa, 0x71, 0xd6, 0x5a, 0xd3, 0x5a, + 0xbb, 0xdf, 0x0e, 0x6e, 0x55, 0xff, 0x2c, 0x18, 0x21, 0xb6, 0x2b, 0xc6, 0x30, 0x19, 0x21, 0x60, + 0xe5, 0xc9, 0xb3, 0xdc, 0xaf, 0xc6, 0x5a, 0xe6, 0xb2, 0xa0, 0x88, 0xfb, 0xc5, 0x59, 0x1d, 0xa5, + 0x8a, 0x45, 0xdd, 0x7a, 0x30, 0x96, 0x0f, 0x7d, 0x3d, 0xef, 0x75, 0xb8, 0x0c, 0xdf, 0x73, 0x24, + 0x73, 0x60, 0xe8, 0xfb, 0x02, 0x41, 0x07, 0x2e, 0x37, 0x1a, 0x3b, 0xa8, 0x61, 0xe7, 0x8e, 0x3e, + 0xb9, 0x31, 0x30, 0x65, 0xfa, 0xab, 0x0a, 0x97, 0x21, 0x6e, 0x95, 0x44, 0xbf, 0xc2, 0xd5, 0xb4, + 0x03, 0x84, 0x4b, 0x43, 0x27, 0x37, 0x05, 0x75, 0x5a, 0x85, 0xaa, 0x0b, 0xaf, 0x71, 0x14, 0x77, + 0x0c, 0xfe, 0xca, 0x20, 0xbc, 0xa1, 0x7a, 0xc1, 0x9b, 0xc4, 0xcb, 0xba, 0x10, 0x6a, 0x33, 0xb3, + 0xdd, 0xdc, 0xa0, 0xfb, 0x53, 0x5f, 0x33, 0x02, 0x41, 0x06, 0x0e, 0x6a, 0xf3, 0x7a, 0xb4, 0xea, + 0x11, 0xf5, 0x2b, 0x93, 0x44, 0xe7, 0x16, 0x0e, 0xb2, 0xa5, 0x3f, 0x10, 0x75, 0xe1, 0x22, 0x9a, + 0x7f, 0x10, 0xa3, 0x01, 0xde, 0x33, 0x59, 0xf5, 0x3e, 0x98, 0x1e, 0xa0, 0xe1, 0x7d, 0xf0, 0xfb, + 0x38, 0x0f, 0x08, 0x9e, 0x5c, 0x37, 0xdd, 0x40, 0xda, 0xa2, 0x9e, 0xef, 0xd2, 0x05, 0xf5, 0xc8, + 0x7b, 0x38, 0xf8, 0xfe, 0xf6, 0x36, 0xb5, 0x7b, 0xa0, 0x53, 0x02, 0x41, 0x02, 0x3a, 0x5d, 0xd0, + 0x9e, 0xf8, 0x35, 0x40, 0xb3, 0x0b, 0x55, 0x4d, 0x24, 0xf6, 0x4f, 0x9c, 0x28, 0xd2, 0x12, 0x06, + 0x8c, 0xfc, 0x62, 0xff, 0xe2, 0x6d, 0x53, 0xb6, 0x05, 0xe0, 0x55, 0x57, 0xa6, 0x32, 0xee, 0x9e, + 0x90, 0xcf, 0xc5, 0x65, 0x31, 0xf3, 0x6a, 0xad, 0xd8, 0x2b, 0xe6, 0x3b, 0xb8, 0xaa, 0x40, 0x5a, + 0x04, 0xd8, 0xbb, 0xe5, 0x28, 0x1b, 0xc4, 0x58, 0x83, 0xfe, 0xd7, 0xb4, 0xaf, 0x02, 0x41, 0x04, + 0x1d, 0xe6, 0xdb, 0xad, 0x4c, 0xaf, 0x54, 0x17, 0xa9, 0x50, 0x49, 0x65, 0x20, 0x1c, 0x4b, 0x99, + 0x82, 0x7d, 0xe8, 0xf3, 0x69, 0xf7, 0x45, 0x6a, 0x84, 0xb3, 0xef, 0x5c, 0x4e, 0xc9, 0x23, 0x8c, + 0x7a, 0x3d, 0x78, 0x2a, 0x89, 0x15, 0xeb, 0xec, 0x64, 0x3a, 0x69, 0x8b, 0x5b, 0xee, 0x0a, 0xf0, + 0xc2, 0x43, 0x59, 0x2b, 0xce, 0x00, 0x42, 0xaa, 0xde, 0xaf, 0x49, 0xa4, 0xb4, 0xc6, 0xdd, 0x9b, + 0x02, 0x41, 0x05, 0xd3, 0x2d, 0xee, 0x95, 0x2b, 0x50, 0x3b, 0x53, 0x6f, 0xce, 0xcf, 0x19, 0xec, + 0x08, 0x23, 0x6a, 0x9c, 0xd9, 0x45, 0xc4, 0x95, 0x51, 0xbf, 0x99, 0xf1, 0x5b, 0x67, 0x4f, 0xc2, + 0x1a, 0xa1, 0x99, 0xf4, 0xc4, 0x21, 0x1f, 0x0f, 0x00, 0x07, 0xc4, 0x17, 0xc1, 0xfb, 0x41, 0x55, + 0x32, 0x6a, 0x21, 0x42, 0xfc, 0xa4, 0x54, 0xbb, 0xd3, 0x8d, 0x6d, 0xbc, 0x6c, 0xaa, 0x7a, 0xc3, + 0x35, 0xa1, 0x7c, }; const unsigned char test_rsa_2048[] = { - 0x30, 0x82, 0x04, 0xa3, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, - 0xf7, 0xbb, 0x6b, 0x8e, 0xab, 0x40, 0x49, 0x1c, 0xd6, 0x44, 0x55, 0xec, - 0x04, 0xd4, 0xed, 0x8d, 0xb5, 0x05, 0x1a, 0x97, 0x38, 0xfc, 0x7a, 0xf7, - 0x3f, 0xf3, 0xb0, 0x97, 0x51, 0x1c, 0xce, 0x40, 0xaa, 0xf7, 0x65, 0x37, - 0xb1, 0x35, 0x35, 0x04, 0x42, 0x79, 0x86, 0xb7, 0xb2, 0xb5, 0x3a, 0x96, - 0x4a, 0x69, 0x37, 0xb5, 0x58, 0xec, 0x0d, 0x1d, 0xea, 0x27, 0x4a, 0xf2, - 0xb8, 0xff, 0xf2, 0xf0, 0x94, 0xc2, 0x43, 0xfa, 0x57, 0x72, 0x66, 0xa7, - 0x9d, 0xb0, 0xc2, 0x6f, 0xfe, 0x30, 0x41, 0x6d, 0x23, 0xef, 0x05, 0xdd, - 0x5f, 0xec, 0xab, 0x41, 0x3e, 0xbb, 0xb4, 0xf8, 0x52, 0x6a, 0xe7, 0x20, - 0xa9, 0x45, 0x84, 0x22, 0x6b, 0x37, 0xd9, 0x2e, 0xf4, 0x63, 0xfc, 0x73, - 0x6c, 0xb3, 0x8e, 0x53, 0x0e, 0x74, 0x88, 0xd9, 0x16, 0x2f, 0x57, 0x26, - 0x80, 0x7b, 0xc5, 0x43, 0x13, 0x8a, 0x2d, 0x25, 0x8a, 0xdb, 0x4d, 0x68, - 0x02, 0x21, 0xc2, 0x53, 0x23, 0x81, 0xcc, 0xfa, 0x81, 0xbc, 0x89, 0xbc, - 0x3d, 0x7b, 0x84, 0x03, 0x9c, 0x2d, 0xf4, 0x1c, 0xe3, 0xec, 0x8d, 0xb9, - 0x1c, 0x23, 0x80, 0xe7, 0x81, 0xba, 0x3a, 0xa9, 0xe2, 0x3b, 0x74, 0xed, - 0x99, 0x73, 0xd4, 0x90, 0x8e, 0xfc, 0xa4, 0x7a, 0xa8, 0xd9, 0xb7, 0xb0, - 0xa4, 0x42, 0x32, 0x97, 0xa4, 0x04, 0x42, 0x7c, 0x3f, 0x3c, 0xd6, 0xe0, - 0x78, 0x2e, 0x45, 0x53, 0x88, 0x0f, 0x06, 0xba, 0x39, 0xa6, 0x4f, 0x4a, - 0x7b, 0x0e, 0xef, 0x92, 0x1a, 0x60, 0x50, 0xa2, 0x07, 0xce, 0xfa, 0xdc, - 0xf0, 0x73, 0x94, 0xa3, 0xe1, 0x8e, 0xa9, 0x15, 0xdc, 0x84, 0x97, 0xe7, - 0xae, 0x61, 0xfc, 0x31, 0x62, 0xf6, 0x2f, 0x50, 0x65, 0xa6, 0x92, 0xaf, - 0x07, 0x72, 0x66, 0xf7, 0x36, 0x0c, 0x20, 0x76, 0xce, 0xbe, 0xaf, 0x14, - 0xcb, 0x22, 0xc1, 0xed, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, - 0x00, 0x00, 0xb8, 0x96, 0x2d, 0xce, 0x60, 0x4b, 0xc6, 0x2e, 0x76, 0x78, - 0xf4, 0x8c, 0xa8, 0x0c, 0xff, 0xf4, 0x56, 0xad, 0x36, 0xe2, 0xf6, 0xd3, - 0x29, 0xcc, 0x91, 0x1a, 0x42, 0xba, 0x7c, 0xf5, 0xb9, 0xb8, 0xf5, 0xaa, - 0xe1, 0x00, 0x5e, 0x4a, 0x06, 0xf6, 0xe5, 0x91, 0x27, 0x90, 0x38, 0xd8, - 0x50, 0x8f, 0x2b, 0x62, 0xba, 0xdf, 0xa5, 0x22, 0x3d, 0xa3, 0xcc, 0x94, - 0xfa, 0x83, 0x60, 0xd5, 0x55, 0x6f, 0x6d, 0x68, 0x52, 0xbe, 0x75, 0xea, - 0x08, 0x13, 0x5c, 0xac, 0x18, 0x34, 0xda, 0x71, 0x9a, 0x4e, 0x78, 0x37, - 0xe1, 0x66, 0xd1, 0xd2, 0xc6, 0xc8, 0x16, 0xb6, 0x46, 0x61, 0xc1, 0x07, - 0x66, 0xb0, 0x2f, 0x70, 0x5c, 0xc4, 0x48, 0x9f, 0x94, 0x74, 0x28, 0x25, - 0x58, 0x35, 0xa9, 0x09, 0x21, 0x43, 0x41, 0xc2, 0x13, 0x35, 0xae, 0x12, - 0x18, 0x1d, 0xd8, 0x1e, 0x61, 0x1d, 0x59, 0xb1, 0xdb, 0x70, 0x66, 0x7b, - 0xeb, 0xd7, 0xe9, 0x2b, 0x71, 0xe1, 0xd3, 0x88, 0x31, 0x8d, 0x3e, 0xc1, - 0x4d, 0x61, 0x6f, 0x72, 0xc2, 0x31, 0xf6, 0x72, 0x7a, 0x18, 0x3e, 0x68, - 0x18, 0x28, 0x5b, 0xd6, 0x5f, 0x65, 0x72, 0xca, 0xdc, 0x90, 0x12, 0x24, - 0x88, 0x21, 0xb2, 0xd0, 0xae, 0x6c, 0xed, 0xd3, 0x0c, 0xa4, 0x40, 0xd4, - 0xd3, 0x4c, 0xd7, 0x7e, 0x2c, 0xf6, 0xb4, 0x0e, 0xd2, 0xc7, 0xd8, 0x56, - 0xb3, 0x0d, 0x47, 0x47, 0x33, 0xfc, 0xe0, 0xfb, 0x69, 0x5c, 0x3e, 0x65, - 0x30, 0xc0, 0x79, 0xae, 0xd9, 0x55, 0xe4, 0x07, 0x30, 0x55, 0xf2, 0x65, - 0x5d, 0x4b, 0x67, 0x1e, 0x29, 0x1f, 0xde, 0x40, 0x0f, 0x2f, 0x06, 0xd0, - 0xb3, 0x3f, 0x87, 0xd2, 0x61, 0xe0, 0xad, 0x3d, 0xae, 0x48, 0xa9, 0x13, - 0x84, 0x1b, 0x34, 0xcf, 0xed, 0x03, 0x79, 0x0f, 0xca, 0xee, 0x00, 0xde, - 0x2e, 0x90, 0xfb, 0x96, 0x21, 0x02, 0x81, 0x81, 0x00, 0xfc, 0xbe, 0x89, - 0xcd, 0x1a, 0xa3, 0x19, 0xe4, 0x9e, 0xf4, 0xf7, 0x21, 0x49, 0xbf, 0x06, - 0xda, 0x57, 0xdc, 0xc6, 0x4d, 0x3d, 0xe6, 0x05, 0xe9, 0xff, 0x3e, 0x76, - 0xfc, 0x66, 0xf4, 0xb1, 0xe2, 0x87, 0x82, 0x45, 0xff, 0xd7, 0x19, 0x90, - 0x51, 0x1b, 0x17, 0xe9, 0x7f, 0x33, 0x81, 0x88, 0x89, 0xa8, 0xc2, 0x1b, - 0x55, 0x27, 0xfd, 0x18, 0x13, 0x27, 0xaf, 0xfe, 0x88, 0xf9, 0xbb, 0xa6, - 0x70, 0xc4, 0xe6, 0xf1, 0xe6, 0x30, 0x9b, 0xd0, 0x32, 0x30, 0x74, 0xe4, - 0xcb, 0xcf, 0x23, 0xdc, 0xe3, 0xc1, 0x9b, 0x8d, 0x54, 0x95, 0xf5, 0x6a, - 0x93, 0x05, 0x9b, 0xa7, 0x41, 0x4f, 0x28, 0xed, 0x1e, 0xc9, 0x06, 0xad, - 0x18, 0xc6, 0x3d, 0xe1, 0x14, 0x8a, 0xbc, 0xfe, 0x9b, 0xe7, 0x98, 0x60, - 0x00, 0xf4, 0x25, 0xe5, 0x80, 0xb7, 0x0e, 0x43, 0xe4, 0x8e, 0x24, 0xfa, - 0x9d, 0x51, 0xaa, 0xae, 0x4d, 0x02, 0x81, 0x81, 0x00, 0xfa, 0xec, 0x5a, - 0x7b, 0xed, 0x2e, 0x53, 0xcf, 0xca, 0x1e, 0x16, 0x7d, 0xb4, 0x64, 0x1d, - 0xb5, 0xa0, 0x0f, 0xe2, 0xc3, 0x28, 0x12, 0x54, 0x23, 0xd5, 0x94, 0x78, - 0x9f, 0x3e, 0xc0, 0x72, 0xc6, 0x23, 0xe7, 0xaf, 0xbd, 0xee, 0x00, 0x89, - 0xfd, 0x26, 0x30, 0x76, 0x51, 0xf6, 0xd3, 0x61, 0x1a, 0x88, 0xaf, 0x28, - 0xc3, 0x45, 0x85, 0xd5, 0xcb, 0x71, 0x3a, 0x65, 0x0c, 0x35, 0x93, 0x3f, - 0x58, 0x94, 0x4d, 0xb9, 0xbd, 0x15, 0xba, 0x9f, 0xc2, 0x8b, 0x07, 0xe6, - 0x70, 0x5b, 0x7b, 0x3e, 0xf1, 0xcc, 0xb4, 0x8d, 0x21, 0xa5, 0x35, 0x69, - 0xc8, 0xb8, 0x4c, 0x44, 0x4b, 0x61, 0xea, 0x5c, 0x6e, 0x67, 0xb5, 0x4f, - 0x0a, 0xfd, 0x85, 0x2f, 0xfb, 0x8c, 0x92, 0xa1, 0x11, 0xfa, 0xb8, 0x67, - 0x72, 0x63, 0xee, 0xb8, 0x0c, 0xf1, 0xa3, 0x40, 0x3b, 0x4a, 0x9a, 0x20, - 0x97, 0x76, 0x94, 0x72, 0x21, 0x02, 0x81, 0x80, 0x2f, 0xf9, 0x9a, 0xfe, - 0xab, 0xc7, 0xb9, 0xea, 0x83, 0xa1, 0xcc, 0x27, 0x2d, 0x70, 0x6d, 0x44, - 0x94, 0xd8, 0xfb, 0x6b, 0x3e, 0x0c, 0xa3, 0xa2, 0xbf, 0x28, 0x84, 0x3d, - 0x74, 0xed, 0x8d, 0xb6, 0x8a, 0x32, 0x58, 0x47, 0x2f, 0xf5, 0x52, 0x47, - 0x92, 0xf4, 0xff, 0x05, 0x7e, 0x29, 0x60, 0x59, 0x81, 0x07, 0x17, 0x59, - 0x1a, 0xb6, 0x18, 0x13, 0xca, 0xbc, 0xc5, 0x7c, 0x0a, 0xab, 0x6b, 0xf4, - 0x8b, 0xeb, 0xaa, 0x8f, 0x1f, 0x3a, 0xf4, 0x52, 0x12, 0x90, 0x9d, 0xbd, - 0x72, 0x1c, 0x44, 0x99, 0x96, 0xee, 0x87, 0xed, 0x3e, 0x69, 0xcf, 0x49, - 0x09, 0x0f, 0x7a, 0xb8, 0x12, 0xe6, 0x99, 0xdb, 0xf6, 0x1c, 0xa6, 0x4e, - 0xc5, 0x92, 0x89, 0x5e, 0xf4, 0xd6, 0xdb, 0x1d, 0x8c, 0xe0, 0x87, 0x98, - 0xa6, 0xbf, 0x6a, 0xc8, 0xfb, 0xf6, 0x61, 0x3c, 0xc9, 0x1e, 0x8b, 0xd3, - 0xc0, 0xe4, 0xbd, 0x21, 0x02, 0x81, 0x81, 0x00, 0xb2, 0x9b, 0x34, 0x59, - 0x0b, 0xdd, 0xb3, 0x08, 0xaf, 0xec, 0xb4, 0xc3, 0xab, 0x78, 0xab, 0xf1, - 0x11, 0x4a, 0xdd, 0x75, 0x5e, 0x7b, 0x95, 0x6a, 0xa0, 0x67, 0x7b, 0x68, - 0x96, 0xa9, 0x33, 0xc9, 0x37, 0xdb, 0x7d, 0xab, 0xaa, 0xd2, 0xb5, 0x65, - 0xfd, 0x1d, 0xf7, 0xca, 0xa5, 0xef, 0x96, 0x29, 0xe5, 0xeb, 0x10, 0x0f, - 0xd6, 0xd7, 0xc9, 0xf3, 0x72, 0xd8, 0x46, 0xfe, 0xe6, 0xcf, 0xb6, 0x02, - 0x5e, 0x25, 0xe9, 0x34, 0xdf, 0x57, 0xa4, 0xca, 0x3c, 0x5e, 0x56, 0x37, - 0xd9, 0xd6, 0x23, 0x5a, 0xc8, 0x04, 0x28, 0x85, 0x2f, 0x6c, 0x92, 0xac, - 0xae, 0x0a, 0x93, 0x7e, 0x38, 0xe7, 0x31, 0xfd, 0xe0, 0x52, 0x1d, 0x3e, - 0x4c, 0x70, 0xd6, 0x53, 0xae, 0x9e, 0xdc, 0x89, 0xc8, 0xb6, 0x23, 0xe4, - 0x37, 0x9f, 0xbf, 0x60, 0x6f, 0x4b, 0x6d, 0xb8, 0x06, 0x85, 0x28, 0xf7, - 0xc7, 0x0f, 0x29, 0x21, 0x02, 0x81, 0x80, 0x0e, 0xd4, 0x7a, 0xe0, 0x5b, - 0x27, 0x5a, 0x23, 0xa7, 0xdf, 0xe3, 0xff, 0xb7, 0x27, 0xe3, 0xa2, 0x68, - 0xe6, 0x26, 0xa5, 0x9d, 0x40, 0x1d, 0x2d, 0x84, 0x6d, 0xe2, 0x69, 0x54, - 0xff, 0x54, 0xfc, 0x9e, 0xd9, 0x3a, 0x9a, 0xf3, 0x3f, 0xac, 0x2c, 0x96, - 0x7a, 0x18, 0xe0, 0xf8, 0x61, 0x45, 0x08, 0x3e, 0x39, 0x92, 0x34, 0x54, - 0xbc, 0x10, 0xda, 0x5f, 0x49, 0x37, 0xe8, 0x36, 0xb9, 0x98, 0x51, 0x95, - 0x6b, 0xff, 0xb3, 0x01, 0xce, 0x9e, 0x06, 0x78, 0x97, 0x86, 0x69, 0x32, - 0x13, 0xfc, 0xde, 0x6d, 0x5f, 0x29, 0x33, 0xd5, 0x2b, 0xb2, 0x9d, 0xc3, - 0x40, 0xea, 0x01, 0x12, 0x57, 0x78, 0x8d, 0x3c, 0x57, 0x75, 0xeb, 0x65, - 0x69, 0x23, 0x0a, 0xaf, 0xbf, 0x08, 0x75, 0x2d, 0x40, 0xa8, 0x41, 0x9d, - 0xe7, 0x1b, 0x01, 0xd4, 0x92, 0x7e, 0x27, 0xc1, 0x07, 0x9c, 0xaa, 0xda, - 0x05, 0x68, 0xb1, + 0x30, 0x82, 0x04, 0xa3, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf7, 0xbb, 0x6b, 0x8e, + 0xab, 0x40, 0x49, 0x1c, 0xd6, 0x44, 0x55, 0xec, 0x04, 0xd4, 0xed, 0x8d, 0xb5, 0x05, 0x1a, 0x97, + 0x38, 0xfc, 0x7a, 0xf7, 0x3f, 0xf3, 0xb0, 0x97, 0x51, 0x1c, 0xce, 0x40, 0xaa, 0xf7, 0x65, 0x37, + 0xb1, 0x35, 0x35, 0x04, 0x42, 0x79, 0x86, 0xb7, 0xb2, 0xb5, 0x3a, 0x96, 0x4a, 0x69, 0x37, 0xb5, + 0x58, 0xec, 0x0d, 0x1d, 0xea, 0x27, 0x4a, 0xf2, 0xb8, 0xff, 0xf2, 0xf0, 0x94, 0xc2, 0x43, 0xfa, + 0x57, 0x72, 0x66, 0xa7, 0x9d, 0xb0, 0xc2, 0x6f, 0xfe, 0x30, 0x41, 0x6d, 0x23, 0xef, 0x05, 0xdd, + 0x5f, 0xec, 0xab, 0x41, 0x3e, 0xbb, 0xb4, 0xf8, 0x52, 0x6a, 0xe7, 0x20, 0xa9, 0x45, 0x84, 0x22, + 0x6b, 0x37, 0xd9, 0x2e, 0xf4, 0x63, 0xfc, 0x73, 0x6c, 0xb3, 0x8e, 0x53, 0x0e, 0x74, 0x88, 0xd9, + 0x16, 0x2f, 0x57, 0x26, 0x80, 0x7b, 0xc5, 0x43, 0x13, 0x8a, 0x2d, 0x25, 0x8a, 0xdb, 0x4d, 0x68, + 0x02, 0x21, 0xc2, 0x53, 0x23, 0x81, 0xcc, 0xfa, 0x81, 0xbc, 0x89, 0xbc, 0x3d, 0x7b, 0x84, 0x03, + 0x9c, 0x2d, 0xf4, 0x1c, 0xe3, 0xec, 0x8d, 0xb9, 0x1c, 0x23, 0x80, 0xe7, 0x81, 0xba, 0x3a, 0xa9, + 0xe2, 0x3b, 0x74, 0xed, 0x99, 0x73, 0xd4, 0x90, 0x8e, 0xfc, 0xa4, 0x7a, 0xa8, 0xd9, 0xb7, 0xb0, + 0xa4, 0x42, 0x32, 0x97, 0xa4, 0x04, 0x42, 0x7c, 0x3f, 0x3c, 0xd6, 0xe0, 0x78, 0x2e, 0x45, 0x53, + 0x88, 0x0f, 0x06, 0xba, 0x39, 0xa6, 0x4f, 0x4a, 0x7b, 0x0e, 0xef, 0x92, 0x1a, 0x60, 0x50, 0xa2, + 0x07, 0xce, 0xfa, 0xdc, 0xf0, 0x73, 0x94, 0xa3, 0xe1, 0x8e, 0xa9, 0x15, 0xdc, 0x84, 0x97, 0xe7, + 0xae, 0x61, 0xfc, 0x31, 0x62, 0xf6, 0x2f, 0x50, 0x65, 0xa6, 0x92, 0xaf, 0x07, 0x72, 0x66, 0xf7, + 0x36, 0x0c, 0x20, 0x76, 0xce, 0xbe, 0xaf, 0x14, 0xcb, 0x22, 0xc1, 0xed, 0x02, 0x03, 0x01, 0x00, + 0x01, 0x02, 0x82, 0x01, 0x00, 0x00, 0xb8, 0x96, 0x2d, 0xce, 0x60, 0x4b, 0xc6, 0x2e, 0x76, 0x78, + 0xf4, 0x8c, 0xa8, 0x0c, 0xff, 0xf4, 0x56, 0xad, 0x36, 0xe2, 0xf6, 0xd3, 0x29, 0xcc, 0x91, 0x1a, + 0x42, 0xba, 0x7c, 0xf5, 0xb9, 0xb8, 0xf5, 0xaa, 0xe1, 0x00, 0x5e, 0x4a, 0x06, 0xf6, 0xe5, 0x91, + 0x27, 0x90, 0x38, 0xd8, 0x50, 0x8f, 0x2b, 0x62, 0xba, 0xdf, 0xa5, 0x22, 0x3d, 0xa3, 0xcc, 0x94, + 0xfa, 0x83, 0x60, 0xd5, 0x55, 0x6f, 0x6d, 0x68, 0x52, 0xbe, 0x75, 0xea, 0x08, 0x13, 0x5c, 0xac, + 0x18, 0x34, 0xda, 0x71, 0x9a, 0x4e, 0x78, 0x37, 0xe1, 0x66, 0xd1, 0xd2, 0xc6, 0xc8, 0x16, 0xb6, + 0x46, 0x61, 0xc1, 0x07, 0x66, 0xb0, 0x2f, 0x70, 0x5c, 0xc4, 0x48, 0x9f, 0x94, 0x74, 0x28, 0x25, + 0x58, 0x35, 0xa9, 0x09, 0x21, 0x43, 0x41, 0xc2, 0x13, 0x35, 0xae, 0x12, 0x18, 0x1d, 0xd8, 0x1e, + 0x61, 0x1d, 0x59, 0xb1, 0xdb, 0x70, 0x66, 0x7b, 0xeb, 0xd7, 0xe9, 0x2b, 0x71, 0xe1, 0xd3, 0x88, + 0x31, 0x8d, 0x3e, 0xc1, 0x4d, 0x61, 0x6f, 0x72, 0xc2, 0x31, 0xf6, 0x72, 0x7a, 0x18, 0x3e, 0x68, + 0x18, 0x28, 0x5b, 0xd6, 0x5f, 0x65, 0x72, 0xca, 0xdc, 0x90, 0x12, 0x24, 0x88, 0x21, 0xb2, 0xd0, + 0xae, 0x6c, 0xed, 0xd3, 0x0c, 0xa4, 0x40, 0xd4, 0xd3, 0x4c, 0xd7, 0x7e, 0x2c, 0xf6, 0xb4, 0x0e, + 0xd2, 0xc7, 0xd8, 0x56, 0xb3, 0x0d, 0x47, 0x47, 0x33, 0xfc, 0xe0, 0xfb, 0x69, 0x5c, 0x3e, 0x65, + 0x30, 0xc0, 0x79, 0xae, 0xd9, 0x55, 0xe4, 0x07, 0x30, 0x55, 0xf2, 0x65, 0x5d, 0x4b, 0x67, 0x1e, + 0x29, 0x1f, 0xde, 0x40, 0x0f, 0x2f, 0x06, 0xd0, 0xb3, 0x3f, 0x87, 0xd2, 0x61, 0xe0, 0xad, 0x3d, + 0xae, 0x48, 0xa9, 0x13, 0x84, 0x1b, 0x34, 0xcf, 0xed, 0x03, 0x79, 0x0f, 0xca, 0xee, 0x00, 0xde, + 0x2e, 0x90, 0xfb, 0x96, 0x21, 0x02, 0x81, 0x81, 0x00, 0xfc, 0xbe, 0x89, 0xcd, 0x1a, 0xa3, 0x19, + 0xe4, 0x9e, 0xf4, 0xf7, 0x21, 0x49, 0xbf, 0x06, 0xda, 0x57, 0xdc, 0xc6, 0x4d, 0x3d, 0xe6, 0x05, + 0xe9, 0xff, 0x3e, 0x76, 0xfc, 0x66, 0xf4, 0xb1, 0xe2, 0x87, 0x82, 0x45, 0xff, 0xd7, 0x19, 0x90, + 0x51, 0x1b, 0x17, 0xe9, 0x7f, 0x33, 0x81, 0x88, 0x89, 0xa8, 0xc2, 0x1b, 0x55, 0x27, 0xfd, 0x18, + 0x13, 0x27, 0xaf, 0xfe, 0x88, 0xf9, 0xbb, 0xa6, 0x70, 0xc4, 0xe6, 0xf1, 0xe6, 0x30, 0x9b, 0xd0, + 0x32, 0x30, 0x74, 0xe4, 0xcb, 0xcf, 0x23, 0xdc, 0xe3, 0xc1, 0x9b, 0x8d, 0x54, 0x95, 0xf5, 0x6a, + 0x93, 0x05, 0x9b, 0xa7, 0x41, 0x4f, 0x28, 0xed, 0x1e, 0xc9, 0x06, 0xad, 0x18, 0xc6, 0x3d, 0xe1, + 0x14, 0x8a, 0xbc, 0xfe, 0x9b, 0xe7, 0x98, 0x60, 0x00, 0xf4, 0x25, 0xe5, 0x80, 0xb7, 0x0e, 0x43, + 0xe4, 0x8e, 0x24, 0xfa, 0x9d, 0x51, 0xaa, 0xae, 0x4d, 0x02, 0x81, 0x81, 0x00, 0xfa, 0xec, 0x5a, + 0x7b, 0xed, 0x2e, 0x53, 0xcf, 0xca, 0x1e, 0x16, 0x7d, 0xb4, 0x64, 0x1d, 0xb5, 0xa0, 0x0f, 0xe2, + 0xc3, 0x28, 0x12, 0x54, 0x23, 0xd5, 0x94, 0x78, 0x9f, 0x3e, 0xc0, 0x72, 0xc6, 0x23, 0xe7, 0xaf, + 0xbd, 0xee, 0x00, 0x89, 0xfd, 0x26, 0x30, 0x76, 0x51, 0xf6, 0xd3, 0x61, 0x1a, 0x88, 0xaf, 0x28, + 0xc3, 0x45, 0x85, 0xd5, 0xcb, 0x71, 0x3a, 0x65, 0x0c, 0x35, 0x93, 0x3f, 0x58, 0x94, 0x4d, 0xb9, + 0xbd, 0x15, 0xba, 0x9f, 0xc2, 0x8b, 0x07, 0xe6, 0x70, 0x5b, 0x7b, 0x3e, 0xf1, 0xcc, 0xb4, 0x8d, + 0x21, 0xa5, 0x35, 0x69, 0xc8, 0xb8, 0x4c, 0x44, 0x4b, 0x61, 0xea, 0x5c, 0x6e, 0x67, 0xb5, 0x4f, + 0x0a, 0xfd, 0x85, 0x2f, 0xfb, 0x8c, 0x92, 0xa1, 0x11, 0xfa, 0xb8, 0x67, 0x72, 0x63, 0xee, 0xb8, + 0x0c, 0xf1, 0xa3, 0x40, 0x3b, 0x4a, 0x9a, 0x20, 0x97, 0x76, 0x94, 0x72, 0x21, 0x02, 0x81, 0x80, + 0x2f, 0xf9, 0x9a, 0xfe, 0xab, 0xc7, 0xb9, 0xea, 0x83, 0xa1, 0xcc, 0x27, 0x2d, 0x70, 0x6d, 0x44, + 0x94, 0xd8, 0xfb, 0x6b, 0x3e, 0x0c, 0xa3, 0xa2, 0xbf, 0x28, 0x84, 0x3d, 0x74, 0xed, 0x8d, 0xb6, + 0x8a, 0x32, 0x58, 0x47, 0x2f, 0xf5, 0x52, 0x47, 0x92, 0xf4, 0xff, 0x05, 0x7e, 0x29, 0x60, 0x59, + 0x81, 0x07, 0x17, 0x59, 0x1a, 0xb6, 0x18, 0x13, 0xca, 0xbc, 0xc5, 0x7c, 0x0a, 0xab, 0x6b, 0xf4, + 0x8b, 0xeb, 0xaa, 0x8f, 0x1f, 0x3a, 0xf4, 0x52, 0x12, 0x90, 0x9d, 0xbd, 0x72, 0x1c, 0x44, 0x99, + 0x96, 0xee, 0x87, 0xed, 0x3e, 0x69, 0xcf, 0x49, 0x09, 0x0f, 0x7a, 0xb8, 0x12, 0xe6, 0x99, 0xdb, + 0xf6, 0x1c, 0xa6, 0x4e, 0xc5, 0x92, 0x89, 0x5e, 0xf4, 0xd6, 0xdb, 0x1d, 0x8c, 0xe0, 0x87, 0x98, + 0xa6, 0xbf, 0x6a, 0xc8, 0xfb, 0xf6, 0x61, 0x3c, 0xc9, 0x1e, 0x8b, 0xd3, 0xc0, 0xe4, 0xbd, 0x21, + 0x02, 0x81, 0x81, 0x00, 0xb2, 0x9b, 0x34, 0x59, 0x0b, 0xdd, 0xb3, 0x08, 0xaf, 0xec, 0xb4, 0xc3, + 0xab, 0x78, 0xab, 0xf1, 0x11, 0x4a, 0xdd, 0x75, 0x5e, 0x7b, 0x95, 0x6a, 0xa0, 0x67, 0x7b, 0x68, + 0x96, 0xa9, 0x33, 0xc9, 0x37, 0xdb, 0x7d, 0xab, 0xaa, 0xd2, 0xb5, 0x65, 0xfd, 0x1d, 0xf7, 0xca, + 0xa5, 0xef, 0x96, 0x29, 0xe5, 0xeb, 0x10, 0x0f, 0xd6, 0xd7, 0xc9, 0xf3, 0x72, 0xd8, 0x46, 0xfe, + 0xe6, 0xcf, 0xb6, 0x02, 0x5e, 0x25, 0xe9, 0x34, 0xdf, 0x57, 0xa4, 0xca, 0x3c, 0x5e, 0x56, 0x37, + 0xd9, 0xd6, 0x23, 0x5a, 0xc8, 0x04, 0x28, 0x85, 0x2f, 0x6c, 0x92, 0xac, 0xae, 0x0a, 0x93, 0x7e, + 0x38, 0xe7, 0x31, 0xfd, 0xe0, 0x52, 0x1d, 0x3e, 0x4c, 0x70, 0xd6, 0x53, 0xae, 0x9e, 0xdc, 0x89, + 0xc8, 0xb6, 0x23, 0xe4, 0x37, 0x9f, 0xbf, 0x60, 0x6f, 0x4b, 0x6d, 0xb8, 0x06, 0x85, 0x28, 0xf7, + 0xc7, 0x0f, 0x29, 0x21, 0x02, 0x81, 0x80, 0x0e, 0xd4, 0x7a, 0xe0, 0x5b, 0x27, 0x5a, 0x23, 0xa7, + 0xdf, 0xe3, 0xff, 0xb7, 0x27, 0xe3, 0xa2, 0x68, 0xe6, 0x26, 0xa5, 0x9d, 0x40, 0x1d, 0x2d, 0x84, + 0x6d, 0xe2, 0x69, 0x54, 0xff, 0x54, 0xfc, 0x9e, 0xd9, 0x3a, 0x9a, 0xf3, 0x3f, 0xac, 0x2c, 0x96, + 0x7a, 0x18, 0xe0, 0xf8, 0x61, 0x45, 0x08, 0x3e, 0x39, 0x92, 0x34, 0x54, 0xbc, 0x10, 0xda, 0x5f, + 0x49, 0x37, 0xe8, 0x36, 0xb9, 0x98, 0x51, 0x95, 0x6b, 0xff, 0xb3, 0x01, 0xce, 0x9e, 0x06, 0x78, + 0x97, 0x86, 0x69, 0x32, 0x13, 0xfc, 0xde, 0x6d, 0x5f, 0x29, 0x33, 0xd5, 0x2b, 0xb2, 0x9d, 0xc3, + 0x40, 0xea, 0x01, 0x12, 0x57, 0x78, 0x8d, 0x3c, 0x57, 0x75, 0xeb, 0x65, 0x69, 0x23, 0x0a, 0xaf, + 0xbf, 0x08, 0x75, 0x2d, 0x40, 0xa8, 0x41, 0x9d, 0xe7, 0x1b, 0x01, 0xd4, 0x92, 0x7e, 0x27, 0xc1, + 0x07, 0x9c, 0xaa, 0xda, 0x05, 0x68, 0xb1, }; const unsigned char test_rsa_4096[] = { - 0x30, 0x82, 0x09, 0x29, 0x02, 0x01, 0x00, 0x02, 0x82, 0x02, 0x01, 0x00, - 0xcc, 0x87, 0x25, 0xf6, 0xb3, 0x8d, 0x5d, 0x01, 0xae, 0xeb, 0x07, 0xd3, - 0x6e, 0x03, 0xde, 0x4d, 0x31, 0xa0, 0x26, 0x1c, 0xe7, 0x4f, 0xe1, 0x1a, - 0x89, 0x5e, 0xcf, 0xd1, 0x3d, 0x16, 0x8a, 0xee, 0x93, 0x2a, 0xf1, 0x35, - 0xff, 0xbb, 0x84, 0x98, 0x77, 0x27, 0x38, 0x97, 0x08, 0x1f, 0x3f, 0x75, - 0x93, 0xc1, 0x4a, 0xe8, 0x2b, 0xc2, 0x66, 0xc1, 0x05, 0x44, 0xf7, 0x26, - 0xae, 0x1c, 0xcf, 0x13, 0x3d, 0x8a, 0x40, 0x18, 0xd3, 0x80, 0xdf, 0xa2, - 0x52, 0x51, 0xc0, 0x11, 0x10, 0x7b, 0x75, 0x13, 0xa9, 0x43, 0x34, 0x6a, - 0xa0, 0xe0, 0xde, 0xc1, 0x1d, 0x8d, 0x7f, 0xa2, 0x56, 0x44, 0x65, 0x3c, - 0x11, 0x8d, 0xaa, 0xbc, 0xe6, 0xd4, 0x1f, 0x06, 0x6f, 0x66, 0x21, 0x76, - 0x88, 0x01, 0x47, 0x80, 0x55, 0x78, 0x0e, 0x91, 0xb6, 0x8e, 0xa3, 0xc9, - 0x58, 0x56, 0xd1, 0x72, 0xa8, 0x90, 0x32, 0xb3, 0x9c, 0x82, 0x4e, 0x8b, - 0x7d, 0xc1, 0xa3, 0xf8, 0xae, 0xe4, 0xf6, 0xb3, 0x68, 0xba, 0xa3, 0xcd, - 0x68, 0xf5, 0x0d, 0x52, 0x68, 0x01, 0x17, 0xe9, 0xb9, 0x13, 0xd7, 0xf8, - 0xc8, 0x52, 0xa0, 0xd1, 0x00, 0x8e, 0x8b, 0x87, 0xa5, 0xc9, 0x7e, 0x37, - 0xaf, 0xc1, 0x1a, 0x08, 0x05, 0x50, 0x55, 0x7b, 0x8b, 0x4d, 0xcb, 0xd8, - 0xe1, 0x92, 0xed, 0x33, 0x66, 0xd8, 0x3a, 0x09, 0xd2, 0x7c, 0x77, 0xe1, - 0x50, 0xf6, 0x68, 0x55, 0xb5, 0xdc, 0xfd, 0xb2, 0xdf, 0x15, 0x1b, 0xd7, - 0xf4, 0x44, 0x25, 0x0e, 0xaf, 0x6f, 0xe3, 0xf2, 0x36, 0x82, 0x6c, 0x81, - 0xfa, 0x84, 0x81, 0x01, 0xbf, 0xaa, 0xd5, 0x35, 0xff, 0xb5, 0x22, 0xd6, - 0xff, 0x97, 0xc9, 0xdd, 0x1e, 0x43, 0xb8, 0x2c, 0xce, 0x29, 0x21, 0xd1, - 0x53, 0xc1, 0x54, 0x50, 0xc4, 0x72, 0x4f, 0xfd, 0x3e, 0xfd, 0xca, 0x57, - 0x8e, 0x01, 0x36, 0x50, 0xa0, 0x3a, 0x5c, 0xf5, 0x01, 0xfc, 0x58, 0x60, - 0x0f, 0xb5, 0xc8, 0x60, 0xc0, 0xef, 0x0c, 0xfe, 0x0a, 0xc0, 0x71, 0x2d, - 0x44, 0x13, 0x13, 0xdc, 0xa4, 0x1a, 0x4d, 0x7d, 0x41, 0x1e, 0x6c, 0x83, - 0xb2, 0x15, 0x17, 0x49, 0xd2, 0x8b, 0xe4, 0x69, 0x2f, 0x62, 0x37, 0x3d, - 0xb0, 0x7e, 0x4a, 0x79, 0x05, 0x1c, 0x56, 0x82, 0xec, 0x20, 0xd4, 0x91, - 0xc4, 0xcf, 0xc7, 0xbc, 0x14, 0x0f, 0x35, 0xfa, 0x15, 0xe5, 0xa1, 0xfa, - 0x75, 0x6d, 0x65, 0xb8, 0xef, 0x93, 0xad, 0xdf, 0x4c, 0x47, 0xc4, 0xa3, - 0x5b, 0x18, 0x4f, 0x22, 0xa1, 0xef, 0x08, 0x99, 0x48, 0xf9, 0x46, 0xf6, - 0xfa, 0xeb, 0x64, 0x70, 0xf2, 0x67, 0x46, 0xe6, 0x58, 0xcf, 0x9b, 0x41, - 0x77, 0x41, 0x78, 0x42, 0xe6, 0xd3, 0x73, 0x55, 0x80, 0x89, 0xaf, 0xf7, - 0x21, 0xb9, 0x30, 0xe9, 0xec, 0x61, 0xb4, 0xf6, 0xa0, 0x2c, 0x05, 0x2c, - 0x69, 0x24, 0xd3, 0x9a, 0x5b, 0xbb, 0x15, 0xed, 0x11, 0x06, 0xc4, 0x01, - 0x0f, 0x4d, 0xd6, 0x9c, 0x79, 0xd0, 0x42, 0xc8, 0xb3, 0x16, 0x61, 0xb1, - 0xee, 0x48, 0x6b, 0xc6, 0x9d, 0xb5, 0xf2, 0xf0, 0x7a, 0x50, 0xd8, 0x5b, - 0x20, 0x69, 0x9d, 0x60, 0x13, 0x15, 0x62, 0x5b, 0xb8, 0x69, 0x62, 0x9c, - 0x7f, 0x4c, 0x5d, 0x48, 0xb2, 0x11, 0xd0, 0x97, 0xf4, 0x38, 0xac, 0xec, - 0x95, 0x97, 0x3a, 0x38, 0xd4, 0x21, 0x09, 0x0a, 0xf0, 0xf1, 0x34, 0x84, - 0xe4, 0xe9, 0x4b, 0x8c, 0xb5, 0xef, 0xc1, 0x85, 0x07, 0xf4, 0xb9, 0x31, - 0xdf, 0x39, 0x98, 0x7f, 0xfb, 0x28, 0x30, 0x29, 0x3e, 0x4d, 0xa3, 0x81, - 0xaa, 0xf7, 0x0b, 0x32, 0x92, 0x95, 0x2e, 0xf9, 0x34, 0xe2, 0xb4, 0x0f, - 0xde, 0xbb, 0xa3, 0xd9, 0x70, 0x1b, 0x76, 0xe1, 0xbe, 0x54, 0x82, 0x74, - 0xb2, 0x60, 0x2d, 0x88, 0x85, 0x37, 0x48, 0x2d, 0x02, 0x03, 0x01, 0x00, - 0x01, 0x02, 0x82, 0x02, 0x00, 0x1a, 0x94, 0x3e, 0x9c, 0x00, 0x89, 0xf0, - 0xaa, 0x01, 0x16, 0x04, 0x8a, 0x96, 0xab, 0xb4, 0x86, 0x32, 0x1a, 0x86, - 0x91, 0x6f, 0x82, 0xfb, 0x35, 0x24, 0x60, 0x78, 0x9f, 0xcf, 0xb1, 0x40, - 0x05, 0x50, 0x85, 0x3e, 0x5a, 0xfe, 0xdc, 0x9a, 0xd6, 0xe8, 0x77, 0x25, - 0x9c, 0xc4, 0xfe, 0xb0, 0x93, 0xc2, 0x4b, 0x96, 0x85, 0x34, 0xf8, 0x9a, - 0xbb, 0x5f, 0x48, 0xae, 0xd8, 0xad, 0x3c, 0x4b, 0xb1, 0xcb, 0xa7, 0xcd, - 0x7c, 0x1c, 0x72, 0x4d, 0x3d, 0xae, 0x36, 0x77, 0x00, 0x10, 0xb5, 0x06, - 0x8a, 0x33, 0x4f, 0x2b, 0x3e, 0xe7, 0x20, 0xc9, 0xf9, 0xed, 0x32, 0x00, - 0x01, 0xf3, 0xf5, 0x87, 0xf5, 0x66, 0x2f, 0x93, 0x9e, 0x60, 0x5d, 0xf5, - 0x19, 0x34, 0x3d, 0x60, 0xc0, 0x63, 0x5c, 0xcd, 0x32, 0xb1, 0x88, 0xbc, - 0x55, 0xf5, 0xd4, 0x34, 0x17, 0x3c, 0x9e, 0x6d, 0xb2, 0x19, 0x93, 0x41, - 0xaf, 0x83, 0x39, 0x90, 0xe5, 0x02, 0x46, 0xf9, 0x9c, 0xdd, 0xf7, 0x9d, - 0xd2, 0xc3, 0x5b, 0xab, 0xe1, 0x4c, 0x10, 0x3a, 0x76, 0xb8, 0xd2, 0xd9, - 0x8d, 0x73, 0x52, 0x8f, 0x98, 0xc2, 0x49, 0xb0, 0xa1, 0xf0, 0x91, 0x55, - 0xb3, 0x1f, 0x59, 0x9f, 0xc8, 0x33, 0x54, 0x24, 0x22, 0xa2, 0x34, 0x26, - 0x23, 0xbb, 0xbe, 0xf4, 0xac, 0x7e, 0xe6, 0x05, 0xe2, 0xcd, 0xec, 0xf0, - 0x1f, 0xea, 0x25, 0x68, 0x3b, 0xd4, 0xf6, 0x6c, 0xa9, 0x24, 0xcc, 0xef, - 0x00, 0x41, 0x8a, 0xdf, 0xf7, 0x30, 0xc4, 0x71, 0x4f, 0x66, 0xff, 0xa2, - 0xaf, 0x0d, 0xa3, 0xe5, 0xdf, 0x7f, 0x53, 0x9c, 0x63, 0x42, 0x89, 0xfc, - 0x12, 0xbc, 0x24, 0x09, 0x3e, 0xc8, 0xf0, 0xec, 0x18, 0x0a, 0xf0, 0x90, - 0x7c, 0xec, 0x1e, 0xbe, 0xc9, 0x11, 0xfa, 0x18, 0x0f, 0xb5, 0xf3, 0xc8, - 0x0e, 0xd8, 0x52, 0x89, 0x6a, 0xd6, 0xe6, 0xb3, 0xec, 0xcb, 0x44, 0xde, - 0x62, 0x19, 0x3d, 0x52, 0x11, 0x8c, 0xab, 0x2b, 0x17, 0x10, 0x71, 0xd5, - 0xfd, 0xaa, 0x7c, 0x42, 0x88, 0xfc, 0x77, 0x66, 0xd5, 0x77, 0x74, 0xf4, - 0xbe, 0x46, 0x15, 0x1b, 0xb9, 0x0a, 0xce, 0x7c, 0x10, 0xc2, 0x15, 0xf6, - 0x2e, 0xd2, 0x6e, 0x52, 0xe6, 0x12, 0x24, 0x36, 0xf5, 0x32, 0xbd, 0x54, - 0xfc, 0x08, 0x27, 0x2a, 0xdb, 0x21, 0x6a, 0x2d, 0xb4, 0x33, 0xd5, 0x69, - 0x9c, 0x40, 0xad, 0x58, 0xfa, 0xa2, 0x66, 0x08, 0x98, 0xff, 0xcc, 0xfc, - 0x98, 0x00, 0x2f, 0x8b, 0xb0, 0x36, 0x1b, 0x4c, 0xf9, 0xed, 0x6e, 0x93, - 0xc1, 0xca, 0x96, 0xd3, 0x4a, 0x1e, 0xf4, 0x04, 0x60, 0xf8, 0x59, 0x18, - 0xcf, 0xde, 0x4a, 0x81, 0x93, 0xb5, 0x1e, 0xce, 0xa4, 0xb3, 0x90, 0x3c, - 0xae, 0x92, 0x4a, 0x8f, 0xad, 0x5f, 0x83, 0x08, 0x95, 0x4c, 0x9f, 0x19, - 0xa7, 0x59, 0x7b, 0xf0, 0xa7, 0x51, 0x26, 0xa5, 0x57, 0xe4, 0x9f, 0x8b, - 0xbd, 0x31, 0xfc, 0x4e, 0x85, 0x56, 0xf2, 0x30, 0x64, 0x0b, 0xf3, 0x62, - 0x04, 0xc6, 0xcf, 0x3d, 0x56, 0xdc, 0xa5, 0xa4, 0x1d, 0x86, 0x03, 0x07, - 0xba, 0x67, 0x05, 0xa6, 0x98, 0x68, 0x11, 0x00, 0xa3, 0x27, 0xf9, 0x17, - 0x39, 0xc4, 0x86, 0xc4, 0x70, 0xba, 0x71, 0xd0, 0x3d, 0x28, 0x53, 0x14, - 0xb0, 0xd7, 0xd0, 0x40, 0x08, 0xe0, 0x3f, 0x2a, 0x2b, 0x85, 0xe7, 0xc2, - 0x43, 0xd6, 0xfd, 0x9b, 0x97, 0xa0, 0x21, 0x68, 0xc0, 0x69, 0xec, 0x57, - 0x2d, 0x3f, 0x0c, 0xa1, 0x5e, 0xbc, 0xb1, 0x73, 0x9f, 0x3a, 0x0b, 0x3c, - 0x14, 0x7a, 0x88, 0xe0, 0xb7, 0x4f, 0x45, 0xa0, 0x07, 0xae, 0x92, 0x7d, - 0x6f, 0x82, 0x2b, 0xf5, 0x0b, 0x87, 0xb1, 0xe9, 0x3f, 0xe7, 0xd9, 0x18, - 0x0b, 0xc6, 0xbc, 0x12, 0xbd, 0xe6, 0xc8, 0x07, 0x0d, 0x10, 0xc9, 0x73, - 0x31, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf5, 0x0e, 0xbc, 0xea, 0xc9, 0xd3, - 0xc6, 0x44, 0x82, 0xa8, 0xc2, 0x65, 0xd6, 0x36, 0x54, 0x61, 0xaa, 0x4a, - 0x31, 0xa6, 0xa7, 0x63, 0x3a, 0x24, 0xc8, 0xe3, 0x47, 0x94, 0xec, 0xdf, - 0xca, 0xb1, 0xd6, 0xb5, 0x2f, 0xb6, 0xa5, 0xf3, 0x80, 0x55, 0xcc, 0x32, - 0xd6, 0xa6, 0x1b, 0x88, 0x95, 0x50, 0xde, 0x27, 0xb3, 0xd0, 0xbd, 0x68, - 0xb6, 0xd4, 0xfd, 0xa0, 0x41, 0x59, 0x8a, 0xb9, 0x88, 0x87, 0x14, 0x39, - 0x88, 0x57, 0x68, 0x06, 0xb1, 0xc4, 0x87, 0x20, 0x79, 0x49, 0x02, 0x95, - 0x2e, 0xbe, 0x1b, 0xf0, 0xde, 0xf6, 0x5a, 0x0e, 0x6f, 0x94, 0x06, 0x70, - 0x56, 0xe6, 0x86, 0x4f, 0xa2, 0x88, 0x2e, 0x3a, 0x16, 0xf2, 0x46, 0x28, - 0x20, 0x93, 0xd0, 0x37, 0x63, 0x90, 0x78, 0x18, 0x2d, 0xd0, 0xa6, 0xeb, - 0x21, 0xd3, 0xba, 0xd0, 0x63, 0x79, 0x01, 0xa2, 0x68, 0xb1, 0x4c, 0x63, - 0x2c, 0x9d, 0x0b, 0x16, 0x90, 0xed, 0x88, 0xab, 0xdd, 0xe0, 0x3f, 0x52, - 0x82, 0x47, 0xaa, 0x2e, 0x41, 0x55, 0x7d, 0x08, 0x65, 0xad, 0x34, 0xe5, - 0x3f, 0xf5, 0x3a, 0xe0, 0xe5, 0xde, 0xa1, 0x95, 0xd9, 0x3f, 0xe6, 0x5c, - 0x25, 0x87, 0x1f, 0x6f, 0x23, 0xad, 0xf3, 0x4b, 0x6e, 0x96, 0x0c, 0x29, - 0x78, 0xf2, 0xb7, 0x47, 0x5d, 0xaf, 0xce, 0x6c, 0xbb, 0x26, 0xa5, 0x39, - 0x34, 0xd2, 0x6c, 0x19, 0x3d, 0x67, 0xf3, 0x2d, 0xe9, 0x10, 0x35, 0xee, - 0xb8, 0x90, 0x22, 0xbe, 0xb7, 0xd5, 0xdf, 0x78, 0x4a, 0xc2, 0x0c, 0xa6, - 0xab, 0x91, 0xbf, 0x6b, 0x77, 0x5b, 0x6c, 0x94, 0x16, 0xf6, 0x05, 0xb4, - 0x84, 0x17, 0x36, 0xcb, 0xfb, 0xd2, 0x2a, 0xd9, 0x8a, 0xb2, 0xe8, 0x42, - 0x84, 0x57, 0xe0, 0x79, 0x3f, 0x5a, 0xf4, 0x0e, 0x55, 0x0b, 0x48, 0x76, - 0x5d, 0x59, 0xe6, 0xe1, 0xb4, 0xa4, 0xa1, 0xf5, 0x71, 0xf1, 0x02, 0x82, - 0x01, 0x01, 0x00, 0xd5, 0xa9, 0x1d, 0x4d, 0x44, 0xbb, 0x9b, 0x73, 0xc1, - 0xfe, 0x02, 0x48, 0x92, 0x5e, 0x2c, 0x0e, 0xc1, 0xde, 0x51, 0x39, 0x0b, - 0xd8, 0xa7, 0x3b, 0x45, 0x3d, 0xa5, 0x1a, 0xe2, 0x93, 0x25, 0xae, 0x76, - 0x57, 0x08, 0x9f, 0xd4, 0xee, 0x4a, 0x2f, 0xd9, 0x6e, 0x34, 0x5b, 0x57, - 0xf6, 0x72, 0xd7, 0xd4, 0x84, 0xfd, 0xe9, 0x91, 0x89, 0xab, 0x0a, 0x63, - 0x65, 0xbf, 0x2b, 0x38, 0x68, 0x0d, 0x6b, 0xb9, 0x47, 0xf4, 0xb2, 0x17, - 0xbe, 0x66, 0x03, 0x23, 0xc2, 0x6b, 0x86, 0xd6, 0x43, 0xae, 0x68, 0x6d, - 0x82, 0xe3, 0x6e, 0xc0, 0x0c, 0xfd, 0x03, 0x89, 0x42, 0x44, 0x3c, 0xaa, - 0x04, 0xa0, 0xf9, 0x1e, 0x68, 0xec, 0x71, 0x79, 0x35, 0xb4, 0x5e, 0x79, - 0x03, 0x11, 0xbe, 0x56, 0x44, 0x0d, 0x71, 0x76, 0x94, 0x95, 0x94, 0x68, - 0x8e, 0xd1, 0xdd, 0x5c, 0x91, 0x03, 0xc5, 0x7c, 0x15, 0x8d, 0x05, 0xe4, - 0xc3, 0x7b, 0x98, 0xd8, 0x18, 0x98, 0x03, 0x07, 0x44, 0xa6, 0x4f, 0x6e, - 0xbd, 0xbf, 0x75, 0x0a, 0xab, 0x79, 0x75, 0x7e, 0x34, 0xda, 0xc4, 0x22, - 0x16, 0x3e, 0xa7, 0xc0, 0xf4, 0x2b, 0x97, 0x71, 0x0c, 0x86, 0x19, 0x78, - 0xb2, 0x41, 0x00, 0x38, 0x5a, 0xad, 0x72, 0x7e, 0x5f, 0x38, 0x36, 0xa7, - 0x4e, 0xa4, 0xbf, 0x1d, 0x36, 0xef, 0x2a, 0x5e, 0xdf, 0x9c, 0x9e, 0x8f, - 0x99, 0x6e, 0xf3, 0x19, 0x13, 0x48, 0x45, 0x0e, 0xa9, 0xf1, 0xd4, 0xa6, - 0x3d, 0xb2, 0x9c, 0xb0, 0x6f, 0x63, 0xe5, 0xba, 0xdb, 0x18, 0xe4, 0xd4, - 0x0f, 0x51, 0x12, 0xb6, 0x58, 0xd1, 0xcc, 0x23, 0xcb, 0x65, 0x38, 0x8a, - 0xca, 0x03, 0xd1, 0x41, 0xa6, 0xbc, 0x5f, 0xbd, 0x94, 0x29, 0xfe, 0x33, - 0xd3, 0x40, 0xd3, 0xe8, 0x5b, 0xfa, 0x84, 0x89, 0x08, 0xd6, 0x0b, 0x56, - 0x2f, 0x89, 0x4e, 0x8a, 0x33, 0x7d, 0xfd, 0x02, 0x82, 0x01, 0x01, 0x00, - 0xc4, 0x95, 0x0f, 0x0d, 0x95, 0xdc, 0x51, 0xd7, 0x91, 0xad, 0x09, 0x4d, - 0x22, 0x3b, 0x31, 0x13, 0xab, 0xc4, 0x9a, 0xf1, 0xe2, 0xa3, 0x61, 0xf8, - 0x32, 0x42, 0xc8, 0xa0, 0x7a, 0x28, 0xc8, 0x74, 0x43, 0x15, 0xd3, 0xf1, - 0xc4, 0x4c, 0x82, 0xed, 0xd0, 0xc2, 0x13, 0x98, 0xea, 0xcb, 0x75, 0x64, - 0x8a, 0xe1, 0xf4, 0x88, 0x85, 0xf9, 0x23, 0x79, 0xd6, 0xff, 0xa0, 0x8c, - 0xd1, 0x11, 0x26, 0xa9, 0x9d, 0x9a, 0xcd, 0x79, 0xb8, 0x94, 0x6e, 0x34, - 0x86, 0x65, 0x91, 0x85, 0xf5, 0x11, 0x71, 0x8e, 0xc5, 0xe1, 0x43, 0x2b, - 0x02, 0x71, 0x44, 0x26, 0xcd, 0xc7, 0x7e, 0x9e, 0xac, 0xad, 0xe3, 0x67, - 0x35, 0x16, 0x1a, 0x64, 0x3d, 0xcd, 0x60, 0xdc, 0xd2, 0x92, 0x2c, 0x47, - 0xaf, 0x5f, 0x4e, 0x19, 0x6c, 0x5d, 0x81, 0x24, 0x55, 0x5f, 0x67, 0xfc, - 0xa1, 0x48, 0x04, 0x8d, 0xfe, 0x06, 0x2c, 0xba, 0xca, 0x33, 0x4f, 0x0d, - 0x8d, 0xae, 0xb9, 0x6d, 0x73, 0xbe, 0x9f, 0x8e, 0x17, 0xc1, 0xc5, 0x5d, - 0x6b, 0xd0, 0xb9, 0xa7, 0xe9, 0x9f, 0xe1, 0xdf, 0xba, 0x5c, 0xc1, 0x6a, - 0x07, 0xdb, 0xaa, 0x8c, 0x6d, 0x22, 0x0c, 0x64, 0xc9, 0xdd, 0xa1, 0x14, - 0xa0, 0xf0, 0x29, 0x05, 0x2b, 0x3a, 0x75, 0xb0, 0xd7, 0x3f, 0xe3, 0xb2, - 0xed, 0x78, 0x21, 0xe5, 0xcd, 0x73, 0x07, 0xa1, 0xa9, 0x5f, 0xd1, 0xf7, - 0xba, 0x87, 0x60, 0xc8, 0x45, 0x4b, 0x7c, 0x38, 0xfb, 0xf6, 0x5c, 0x88, - 0xb0, 0x1c, 0xd2, 0x73, 0xba, 0x2c, 0x55, 0xc3, 0xb4, 0x77, 0xe4, 0x26, - 0xae, 0x02, 0x5a, 0x2c, 0xff, 0xc4, 0xa0, 0x95, 0xf2, 0xba, 0x4e, 0x07, - 0x79, 0xa2, 0x4b, 0x76, 0x5b, 0x85, 0x48, 0x9f, 0x2a, 0x0e, 0x79, 0xb9, - 0x5f, 0xc0, 0xc3, 0x8e, 0x2a, 0x91, 0xf1, 0x2e, 0xf6, 0x5c, 0xa7, 0x49, - 0xce, 0x36, 0x94, 0x31, 0x02, 0x82, 0x01, 0x00, 0x2a, 0xa4, 0x8e, 0x0c, - 0x95, 0xe3, 0x3b, 0xab, 0x66, 0xd4, 0x63, 0x70, 0x48, 0x86, 0x33, 0x14, - 0xde, 0xec, 0x98, 0x19, 0x62, 0x9b, 0xe3, 0x04, 0x99, 0x55, 0x2c, 0x56, - 0xa9, 0x51, 0xe4, 0xfb, 0x64, 0xf3, 0x09, 0xed, 0x9c, 0x79, 0xd2, 0xa4, - 0xaa, 0x28, 0xac, 0x9a, 0x6e, 0x7b, 0xe9, 0x7f, 0xda, 0x12, 0x90, 0xfa, - 0xc4, 0xe9, 0x4d, 0x11, 0xcd, 0xb4, 0xc8, 0xea, 0xbf, 0x5f, 0x45, 0x0e, - 0x72, 0xf4, 0x41, 0x8a, 0x29, 0xe2, 0xfe, 0x49, 0x32, 0x21, 0xe3, 0x84, - 0x0d, 0xcf, 0x84, 0x47, 0xa3, 0x53, 0xb4, 0x40, 0xae, 0x63, 0xe9, 0x3b, - 0x83, 0x71, 0x8e, 0x5c, 0xed, 0x31, 0xef, 0x4e, 0xc9, 0x1a, 0xf7, 0xd5, - 0xcd, 0xf3, 0x42, 0x04, 0x78, 0xf2, 0x7b, 0xe0, 0x19, 0x27, 0x8b, 0xe7, - 0x51, 0x5b, 0x66, 0x5f, 0x30, 0x5f, 0x10, 0xd3, 0xb5, 0x5d, 0xdb, 0xfa, - 0xd6, 0x41, 0x16, 0xdc, 0x4e, 0x44, 0x15, 0xae, 0xf3, 0xb2, 0x34, 0xe4, - 0xa5, 0xd6, 0xb5, 0xba, 0xb4, 0xc7, 0x7a, 0x26, 0xc9, 0xf2, 0x5f, 0x53, - 0x6b, 0xd4, 0xf0, 0xb4, 0xa4, 0x78, 0xfc, 0x18, 0x4f, 0x12, 0x6c, 0x80, - 0xd5, 0x37, 0x42, 0xac, 0x62, 0xc2, 0x70, 0xe6, 0xb2, 0x58, 0xa6, 0xb5, - 0x6b, 0x33, 0x65, 0xec, 0xc2, 0x87, 0x97, 0xa9, 0xed, 0x12, 0xc1, 0xb9, - 0x1b, 0x26, 0x56, 0x03, 0xef, 0x75, 0x18, 0x07, 0xbc, 0xc1, 0x74, 0x73, - 0x13, 0xf2, 0x27, 0x29, 0xe1, 0xe3, 0xfe, 0x79, 0xf7, 0x5c, 0xc3, 0xfb, - 0x5d, 0xc7, 0xcc, 0xb8, 0x1e, 0xfa, 0xcf, 0x9b, 0x84, 0x79, 0x45, 0xa6, - 0x10, 0x9e, 0xcf, 0x9c, 0xf1, 0x56, 0x50, 0x5c, 0xbb, 0x55, 0xa3, 0xd3, - 0x17, 0xeb, 0x32, 0x56, 0x61, 0xd1, 0x8f, 0xe6, 0xbb, 0x41, 0x60, 0x46, - 0x83, 0x73, 0x18, 0x05, 0x3b, 0x36, 0x51, 0x99, 0x33, 0x4c, 0x03, 0xa1, - 0x02, 0x82, 0x01, 0x01, 0x00, 0xee, 0x63, 0x70, 0x60, 0x30, 0xa4, 0xec, - 0xe9, 0xfe, 0x3b, 0xdd, 0xcf, 0xc4, 0x9f, 0x5a, 0x83, 0xf3, 0x7f, 0x63, - 0xeb, 0xcb, 0x29, 0xdb, 0xdc, 0x99, 0x9f, 0x6f, 0xf5, 0x4b, 0x59, 0x6f, - 0x11, 0x5c, 0xf1, 0xec, 0xa0, 0x99, 0x90, 0x10, 0x8a, 0x43, 0x95, 0x18, - 0xe9, 0x96, 0xf6, 0x89, 0xfd, 0xde, 0x89, 0xb2, 0xc6, 0x7e, 0xdc, 0x04, - 0xbf, 0x8e, 0x36, 0x67, 0x34, 0xc2, 0xae, 0x30, 0x17, 0xec, 0x14, 0xe0, - 0x42, 0x05, 0x0e, 0x7c, 0x65, 0x68, 0x40, 0x14, 0x6c, 0xa0, 0x48, 0x39, - 0x4d, 0xce, 0xbe, 0x90, 0xdd, 0x21, 0x95, 0x34, 0x9b, 0xba, 0xd3, 0x06, - 0x56, 0x90, 0x31, 0xb2, 0xef, 0x6e, 0x91, 0x71, 0xd2, 0xae, 0x77, 0x97, - 0xc8, 0x84, 0x4e, 0x54, 0x83, 0x94, 0xca, 0x3b, 0x76, 0x8d, 0x84, 0x96, - 0xe9, 0x9e, 0xf6, 0x3a, 0xbb, 0x59, 0xb0, 0xff, 0x7f, 0xc7, 0x0e, 0xb5, - 0x31, 0x53, 0xdd, 0x0f, 0x59, 0x01, 0x8a, 0x27, 0x5a, 0xcb, 0xa7, 0x01, - 0xf2, 0xc7, 0x6a, 0x15, 0xc8, 0x94, 0xf5, 0x34, 0x61, 0xfe, 0xdf, 0x65, - 0xbc, 0x25, 0xc2, 0xc5, 0xce, 0xc3, 0x96, 0xe5, 0x56, 0xa1, 0xa9, 0x19, - 0xbc, 0x7a, 0x05, 0x63, 0x93, 0xd5, 0x06, 0x44, 0x12, 0x6d, 0xcd, 0xef, - 0x92, 0x56, 0x64, 0x2e, 0x65, 0xa6, 0x04, 0x3c, 0xbc, 0xe9, 0x49, 0x7e, - 0x19, 0x2c, 0xf2, 0xcb, 0x33, 0x64, 0x8e, 0x11, 0x7f, 0x41, 0xdb, 0xf0, - 0x19, 0x00, 0xac, 0xb9, 0x3b, 0x0c, 0x78, 0xdd, 0xf3, 0x1f, 0x38, 0x1f, - 0x4d, 0xb3, 0xf9, 0xcc, 0xbb, 0xb6, 0x90, 0x93, 0xda, 0xbf, 0x2e, 0x89, - 0xdb, 0xbc, 0x0c, 0xb7, 0x2f, 0x20, 0xc0, 0x05, 0xa2, 0x51, 0x9e, 0x3a, - 0x87, 0x41, 0x46, 0x49, 0x5d, 0x7a, 0xac, 0xf3, 0x41, 0x6a, 0x42, 0x2e, - 0x56, 0x09, 0x86, 0xf2, 0x2f, 0x39, 0x45, 0x6e, 0x7f, + 0x30, 0x82, 0x09, 0x29, 0x02, 0x01, 0x00, 0x02, 0x82, 0x02, 0x01, 0x00, 0xcc, 0x87, 0x25, 0xf6, + 0xb3, 0x8d, 0x5d, 0x01, 0xae, 0xeb, 0x07, 0xd3, 0x6e, 0x03, 0xde, 0x4d, 0x31, 0xa0, 0x26, 0x1c, + 0xe7, 0x4f, 0xe1, 0x1a, 0x89, 0x5e, 0xcf, 0xd1, 0x3d, 0x16, 0x8a, 0xee, 0x93, 0x2a, 0xf1, 0x35, + 0xff, 0xbb, 0x84, 0x98, 0x77, 0x27, 0x38, 0x97, 0x08, 0x1f, 0x3f, 0x75, 0x93, 0xc1, 0x4a, 0xe8, + 0x2b, 0xc2, 0x66, 0xc1, 0x05, 0x44, 0xf7, 0x26, 0xae, 0x1c, 0xcf, 0x13, 0x3d, 0x8a, 0x40, 0x18, + 0xd3, 0x80, 0xdf, 0xa2, 0x52, 0x51, 0xc0, 0x11, 0x10, 0x7b, 0x75, 0x13, 0xa9, 0x43, 0x34, 0x6a, + 0xa0, 0xe0, 0xde, 0xc1, 0x1d, 0x8d, 0x7f, 0xa2, 0x56, 0x44, 0x65, 0x3c, 0x11, 0x8d, 0xaa, 0xbc, + 0xe6, 0xd4, 0x1f, 0x06, 0x6f, 0x66, 0x21, 0x76, 0x88, 0x01, 0x47, 0x80, 0x55, 0x78, 0x0e, 0x91, + 0xb6, 0x8e, 0xa3, 0xc9, 0x58, 0x56, 0xd1, 0x72, 0xa8, 0x90, 0x32, 0xb3, 0x9c, 0x82, 0x4e, 0x8b, + 0x7d, 0xc1, 0xa3, 0xf8, 0xae, 0xe4, 0xf6, 0xb3, 0x68, 0xba, 0xa3, 0xcd, 0x68, 0xf5, 0x0d, 0x52, + 0x68, 0x01, 0x17, 0xe9, 0xb9, 0x13, 0xd7, 0xf8, 0xc8, 0x52, 0xa0, 0xd1, 0x00, 0x8e, 0x8b, 0x87, + 0xa5, 0xc9, 0x7e, 0x37, 0xaf, 0xc1, 0x1a, 0x08, 0x05, 0x50, 0x55, 0x7b, 0x8b, 0x4d, 0xcb, 0xd8, + 0xe1, 0x92, 0xed, 0x33, 0x66, 0xd8, 0x3a, 0x09, 0xd2, 0x7c, 0x77, 0xe1, 0x50, 0xf6, 0x68, 0x55, + 0xb5, 0xdc, 0xfd, 0xb2, 0xdf, 0x15, 0x1b, 0xd7, 0xf4, 0x44, 0x25, 0x0e, 0xaf, 0x6f, 0xe3, 0xf2, + 0x36, 0x82, 0x6c, 0x81, 0xfa, 0x84, 0x81, 0x01, 0xbf, 0xaa, 0xd5, 0x35, 0xff, 0xb5, 0x22, 0xd6, + 0xff, 0x97, 0xc9, 0xdd, 0x1e, 0x43, 0xb8, 0x2c, 0xce, 0x29, 0x21, 0xd1, 0x53, 0xc1, 0x54, 0x50, + 0xc4, 0x72, 0x4f, 0xfd, 0x3e, 0xfd, 0xca, 0x57, 0x8e, 0x01, 0x36, 0x50, 0xa0, 0x3a, 0x5c, 0xf5, + 0x01, 0xfc, 0x58, 0x60, 0x0f, 0xb5, 0xc8, 0x60, 0xc0, 0xef, 0x0c, 0xfe, 0x0a, 0xc0, 0x71, 0x2d, + 0x44, 0x13, 0x13, 0xdc, 0xa4, 0x1a, 0x4d, 0x7d, 0x41, 0x1e, 0x6c, 0x83, 0xb2, 0x15, 0x17, 0x49, + 0xd2, 0x8b, 0xe4, 0x69, 0x2f, 0x62, 0x37, 0x3d, 0xb0, 0x7e, 0x4a, 0x79, 0x05, 0x1c, 0x56, 0x82, + 0xec, 0x20, 0xd4, 0x91, 0xc4, 0xcf, 0xc7, 0xbc, 0x14, 0x0f, 0x35, 0xfa, 0x15, 0xe5, 0xa1, 0xfa, + 0x75, 0x6d, 0x65, 0xb8, 0xef, 0x93, 0xad, 0xdf, 0x4c, 0x47, 0xc4, 0xa3, 0x5b, 0x18, 0x4f, 0x22, + 0xa1, 0xef, 0x08, 0x99, 0x48, 0xf9, 0x46, 0xf6, 0xfa, 0xeb, 0x64, 0x70, 0xf2, 0x67, 0x46, 0xe6, + 0x58, 0xcf, 0x9b, 0x41, 0x77, 0x41, 0x78, 0x42, 0xe6, 0xd3, 0x73, 0x55, 0x80, 0x89, 0xaf, 0xf7, + 0x21, 0xb9, 0x30, 0xe9, 0xec, 0x61, 0xb4, 0xf6, 0xa0, 0x2c, 0x05, 0x2c, 0x69, 0x24, 0xd3, 0x9a, + 0x5b, 0xbb, 0x15, 0xed, 0x11, 0x06, 0xc4, 0x01, 0x0f, 0x4d, 0xd6, 0x9c, 0x79, 0xd0, 0x42, 0xc8, + 0xb3, 0x16, 0x61, 0xb1, 0xee, 0x48, 0x6b, 0xc6, 0x9d, 0xb5, 0xf2, 0xf0, 0x7a, 0x50, 0xd8, 0x5b, + 0x20, 0x69, 0x9d, 0x60, 0x13, 0x15, 0x62, 0x5b, 0xb8, 0x69, 0x62, 0x9c, 0x7f, 0x4c, 0x5d, 0x48, + 0xb2, 0x11, 0xd0, 0x97, 0xf4, 0x38, 0xac, 0xec, 0x95, 0x97, 0x3a, 0x38, 0xd4, 0x21, 0x09, 0x0a, + 0xf0, 0xf1, 0x34, 0x84, 0xe4, 0xe9, 0x4b, 0x8c, 0xb5, 0xef, 0xc1, 0x85, 0x07, 0xf4, 0xb9, 0x31, + 0xdf, 0x39, 0x98, 0x7f, 0xfb, 0x28, 0x30, 0x29, 0x3e, 0x4d, 0xa3, 0x81, 0xaa, 0xf7, 0x0b, 0x32, + 0x92, 0x95, 0x2e, 0xf9, 0x34, 0xe2, 0xb4, 0x0f, 0xde, 0xbb, 0xa3, 0xd9, 0x70, 0x1b, 0x76, 0xe1, + 0xbe, 0x54, 0x82, 0x74, 0xb2, 0x60, 0x2d, 0x88, 0x85, 0x37, 0x48, 0x2d, 0x02, 0x03, 0x01, 0x00, + 0x01, 0x02, 0x82, 0x02, 0x00, 0x1a, 0x94, 0x3e, 0x9c, 0x00, 0x89, 0xf0, 0xaa, 0x01, 0x16, 0x04, + 0x8a, 0x96, 0xab, 0xb4, 0x86, 0x32, 0x1a, 0x86, 0x91, 0x6f, 0x82, 0xfb, 0x35, 0x24, 0x60, 0x78, + 0x9f, 0xcf, 0xb1, 0x40, 0x05, 0x50, 0x85, 0x3e, 0x5a, 0xfe, 0xdc, 0x9a, 0xd6, 0xe8, 0x77, 0x25, + 0x9c, 0xc4, 0xfe, 0xb0, 0x93, 0xc2, 0x4b, 0x96, 0x85, 0x34, 0xf8, 0x9a, 0xbb, 0x5f, 0x48, 0xae, + 0xd8, 0xad, 0x3c, 0x4b, 0xb1, 0xcb, 0xa7, 0xcd, 0x7c, 0x1c, 0x72, 0x4d, 0x3d, 0xae, 0x36, 0x77, + 0x00, 0x10, 0xb5, 0x06, 0x8a, 0x33, 0x4f, 0x2b, 0x3e, 0xe7, 0x20, 0xc9, 0xf9, 0xed, 0x32, 0x00, + 0x01, 0xf3, 0xf5, 0x87, 0xf5, 0x66, 0x2f, 0x93, 0x9e, 0x60, 0x5d, 0xf5, 0x19, 0x34, 0x3d, 0x60, + 0xc0, 0x63, 0x5c, 0xcd, 0x32, 0xb1, 0x88, 0xbc, 0x55, 0xf5, 0xd4, 0x34, 0x17, 0x3c, 0x9e, 0x6d, + 0xb2, 0x19, 0x93, 0x41, 0xaf, 0x83, 0x39, 0x90, 0xe5, 0x02, 0x46, 0xf9, 0x9c, 0xdd, 0xf7, 0x9d, + 0xd2, 0xc3, 0x5b, 0xab, 0xe1, 0x4c, 0x10, 0x3a, 0x76, 0xb8, 0xd2, 0xd9, 0x8d, 0x73, 0x52, 0x8f, + 0x98, 0xc2, 0x49, 0xb0, 0xa1, 0xf0, 0x91, 0x55, 0xb3, 0x1f, 0x59, 0x9f, 0xc8, 0x33, 0x54, 0x24, + 0x22, 0xa2, 0x34, 0x26, 0x23, 0xbb, 0xbe, 0xf4, 0xac, 0x7e, 0xe6, 0x05, 0xe2, 0xcd, 0xec, 0xf0, + 0x1f, 0xea, 0x25, 0x68, 0x3b, 0xd4, 0xf6, 0x6c, 0xa9, 0x24, 0xcc, 0xef, 0x00, 0x41, 0x8a, 0xdf, + 0xf7, 0x30, 0xc4, 0x71, 0x4f, 0x66, 0xff, 0xa2, 0xaf, 0x0d, 0xa3, 0xe5, 0xdf, 0x7f, 0x53, 0x9c, + 0x63, 0x42, 0x89, 0xfc, 0x12, 0xbc, 0x24, 0x09, 0x3e, 0xc8, 0xf0, 0xec, 0x18, 0x0a, 0xf0, 0x90, + 0x7c, 0xec, 0x1e, 0xbe, 0xc9, 0x11, 0xfa, 0x18, 0x0f, 0xb5, 0xf3, 0xc8, 0x0e, 0xd8, 0x52, 0x89, + 0x6a, 0xd6, 0xe6, 0xb3, 0xec, 0xcb, 0x44, 0xde, 0x62, 0x19, 0x3d, 0x52, 0x11, 0x8c, 0xab, 0x2b, + 0x17, 0x10, 0x71, 0xd5, 0xfd, 0xaa, 0x7c, 0x42, 0x88, 0xfc, 0x77, 0x66, 0xd5, 0x77, 0x74, 0xf4, + 0xbe, 0x46, 0x15, 0x1b, 0xb9, 0x0a, 0xce, 0x7c, 0x10, 0xc2, 0x15, 0xf6, 0x2e, 0xd2, 0x6e, 0x52, + 0xe6, 0x12, 0x24, 0x36, 0xf5, 0x32, 0xbd, 0x54, 0xfc, 0x08, 0x27, 0x2a, 0xdb, 0x21, 0x6a, 0x2d, + 0xb4, 0x33, 0xd5, 0x69, 0x9c, 0x40, 0xad, 0x58, 0xfa, 0xa2, 0x66, 0x08, 0x98, 0xff, 0xcc, 0xfc, + 0x98, 0x00, 0x2f, 0x8b, 0xb0, 0x36, 0x1b, 0x4c, 0xf9, 0xed, 0x6e, 0x93, 0xc1, 0xca, 0x96, 0xd3, + 0x4a, 0x1e, 0xf4, 0x04, 0x60, 0xf8, 0x59, 0x18, 0xcf, 0xde, 0x4a, 0x81, 0x93, 0xb5, 0x1e, 0xce, + 0xa4, 0xb3, 0x90, 0x3c, 0xae, 0x92, 0x4a, 0x8f, 0xad, 0x5f, 0x83, 0x08, 0x95, 0x4c, 0x9f, 0x19, + 0xa7, 0x59, 0x7b, 0xf0, 0xa7, 0x51, 0x26, 0xa5, 0x57, 0xe4, 0x9f, 0x8b, 0xbd, 0x31, 0xfc, 0x4e, + 0x85, 0x56, 0xf2, 0x30, 0x64, 0x0b, 0xf3, 0x62, 0x04, 0xc6, 0xcf, 0x3d, 0x56, 0xdc, 0xa5, 0xa4, + 0x1d, 0x86, 0x03, 0x07, 0xba, 0x67, 0x05, 0xa6, 0x98, 0x68, 0x11, 0x00, 0xa3, 0x27, 0xf9, 0x17, + 0x39, 0xc4, 0x86, 0xc4, 0x70, 0xba, 0x71, 0xd0, 0x3d, 0x28, 0x53, 0x14, 0xb0, 0xd7, 0xd0, 0x40, + 0x08, 0xe0, 0x3f, 0x2a, 0x2b, 0x85, 0xe7, 0xc2, 0x43, 0xd6, 0xfd, 0x9b, 0x97, 0xa0, 0x21, 0x68, + 0xc0, 0x69, 0xec, 0x57, 0x2d, 0x3f, 0x0c, 0xa1, 0x5e, 0xbc, 0xb1, 0x73, 0x9f, 0x3a, 0x0b, 0x3c, + 0x14, 0x7a, 0x88, 0xe0, 0xb7, 0x4f, 0x45, 0xa0, 0x07, 0xae, 0x92, 0x7d, 0x6f, 0x82, 0x2b, 0xf5, + 0x0b, 0x87, 0xb1, 0xe9, 0x3f, 0xe7, 0xd9, 0x18, 0x0b, 0xc6, 0xbc, 0x12, 0xbd, 0xe6, 0xc8, 0x07, + 0x0d, 0x10, 0xc9, 0x73, 0x31, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf5, 0x0e, 0xbc, 0xea, 0xc9, 0xd3, + 0xc6, 0x44, 0x82, 0xa8, 0xc2, 0x65, 0xd6, 0x36, 0x54, 0x61, 0xaa, 0x4a, 0x31, 0xa6, 0xa7, 0x63, + 0x3a, 0x24, 0xc8, 0xe3, 0x47, 0x94, 0xec, 0xdf, 0xca, 0xb1, 0xd6, 0xb5, 0x2f, 0xb6, 0xa5, 0xf3, + 0x80, 0x55, 0xcc, 0x32, 0xd6, 0xa6, 0x1b, 0x88, 0x95, 0x50, 0xde, 0x27, 0xb3, 0xd0, 0xbd, 0x68, + 0xb6, 0xd4, 0xfd, 0xa0, 0x41, 0x59, 0x8a, 0xb9, 0x88, 0x87, 0x14, 0x39, 0x88, 0x57, 0x68, 0x06, + 0xb1, 0xc4, 0x87, 0x20, 0x79, 0x49, 0x02, 0x95, 0x2e, 0xbe, 0x1b, 0xf0, 0xde, 0xf6, 0x5a, 0x0e, + 0x6f, 0x94, 0x06, 0x70, 0x56, 0xe6, 0x86, 0x4f, 0xa2, 0x88, 0x2e, 0x3a, 0x16, 0xf2, 0x46, 0x28, + 0x20, 0x93, 0xd0, 0x37, 0x63, 0x90, 0x78, 0x18, 0x2d, 0xd0, 0xa6, 0xeb, 0x21, 0xd3, 0xba, 0xd0, + 0x63, 0x79, 0x01, 0xa2, 0x68, 0xb1, 0x4c, 0x63, 0x2c, 0x9d, 0x0b, 0x16, 0x90, 0xed, 0x88, 0xab, + 0xdd, 0xe0, 0x3f, 0x52, 0x82, 0x47, 0xaa, 0x2e, 0x41, 0x55, 0x7d, 0x08, 0x65, 0xad, 0x34, 0xe5, + 0x3f, 0xf5, 0x3a, 0xe0, 0xe5, 0xde, 0xa1, 0x95, 0xd9, 0x3f, 0xe6, 0x5c, 0x25, 0x87, 0x1f, 0x6f, + 0x23, 0xad, 0xf3, 0x4b, 0x6e, 0x96, 0x0c, 0x29, 0x78, 0xf2, 0xb7, 0x47, 0x5d, 0xaf, 0xce, 0x6c, + 0xbb, 0x26, 0xa5, 0x39, 0x34, 0xd2, 0x6c, 0x19, 0x3d, 0x67, 0xf3, 0x2d, 0xe9, 0x10, 0x35, 0xee, + 0xb8, 0x90, 0x22, 0xbe, 0xb7, 0xd5, 0xdf, 0x78, 0x4a, 0xc2, 0x0c, 0xa6, 0xab, 0x91, 0xbf, 0x6b, + 0x77, 0x5b, 0x6c, 0x94, 0x16, 0xf6, 0x05, 0xb4, 0x84, 0x17, 0x36, 0xcb, 0xfb, 0xd2, 0x2a, 0xd9, + 0x8a, 0xb2, 0xe8, 0x42, 0x84, 0x57, 0xe0, 0x79, 0x3f, 0x5a, 0xf4, 0x0e, 0x55, 0x0b, 0x48, 0x76, + 0x5d, 0x59, 0xe6, 0xe1, 0xb4, 0xa4, 0xa1, 0xf5, 0x71, 0xf1, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd5, + 0xa9, 0x1d, 0x4d, 0x44, 0xbb, 0x9b, 0x73, 0xc1, 0xfe, 0x02, 0x48, 0x92, 0x5e, 0x2c, 0x0e, 0xc1, + 0xde, 0x51, 0x39, 0x0b, 0xd8, 0xa7, 0x3b, 0x45, 0x3d, 0xa5, 0x1a, 0xe2, 0x93, 0x25, 0xae, 0x76, + 0x57, 0x08, 0x9f, 0xd4, 0xee, 0x4a, 0x2f, 0xd9, 0x6e, 0x34, 0x5b, 0x57, 0xf6, 0x72, 0xd7, 0xd4, + 0x84, 0xfd, 0xe9, 0x91, 0x89, 0xab, 0x0a, 0x63, 0x65, 0xbf, 0x2b, 0x38, 0x68, 0x0d, 0x6b, 0xb9, + 0x47, 0xf4, 0xb2, 0x17, 0xbe, 0x66, 0x03, 0x23, 0xc2, 0x6b, 0x86, 0xd6, 0x43, 0xae, 0x68, 0x6d, + 0x82, 0xe3, 0x6e, 0xc0, 0x0c, 0xfd, 0x03, 0x89, 0x42, 0x44, 0x3c, 0xaa, 0x04, 0xa0, 0xf9, 0x1e, + 0x68, 0xec, 0x71, 0x79, 0x35, 0xb4, 0x5e, 0x79, 0x03, 0x11, 0xbe, 0x56, 0x44, 0x0d, 0x71, 0x76, + 0x94, 0x95, 0x94, 0x68, 0x8e, 0xd1, 0xdd, 0x5c, 0x91, 0x03, 0xc5, 0x7c, 0x15, 0x8d, 0x05, 0xe4, + 0xc3, 0x7b, 0x98, 0xd8, 0x18, 0x98, 0x03, 0x07, 0x44, 0xa6, 0x4f, 0x6e, 0xbd, 0xbf, 0x75, 0x0a, + 0xab, 0x79, 0x75, 0x7e, 0x34, 0xda, 0xc4, 0x22, 0x16, 0x3e, 0xa7, 0xc0, 0xf4, 0x2b, 0x97, 0x71, + 0x0c, 0x86, 0x19, 0x78, 0xb2, 0x41, 0x00, 0x38, 0x5a, 0xad, 0x72, 0x7e, 0x5f, 0x38, 0x36, 0xa7, + 0x4e, 0xa4, 0xbf, 0x1d, 0x36, 0xef, 0x2a, 0x5e, 0xdf, 0x9c, 0x9e, 0x8f, 0x99, 0x6e, 0xf3, 0x19, + 0x13, 0x48, 0x45, 0x0e, 0xa9, 0xf1, 0xd4, 0xa6, 0x3d, 0xb2, 0x9c, 0xb0, 0x6f, 0x63, 0xe5, 0xba, + 0xdb, 0x18, 0xe4, 0xd4, 0x0f, 0x51, 0x12, 0xb6, 0x58, 0xd1, 0xcc, 0x23, 0xcb, 0x65, 0x38, 0x8a, + 0xca, 0x03, 0xd1, 0x41, 0xa6, 0xbc, 0x5f, 0xbd, 0x94, 0x29, 0xfe, 0x33, 0xd3, 0x40, 0xd3, 0xe8, + 0x5b, 0xfa, 0x84, 0x89, 0x08, 0xd6, 0x0b, 0x56, 0x2f, 0x89, 0x4e, 0x8a, 0x33, 0x7d, 0xfd, 0x02, + 0x82, 0x01, 0x01, 0x00, 0xc4, 0x95, 0x0f, 0x0d, 0x95, 0xdc, 0x51, 0xd7, 0x91, 0xad, 0x09, 0x4d, + 0x22, 0x3b, 0x31, 0x13, 0xab, 0xc4, 0x9a, 0xf1, 0xe2, 0xa3, 0x61, 0xf8, 0x32, 0x42, 0xc8, 0xa0, + 0x7a, 0x28, 0xc8, 0x74, 0x43, 0x15, 0xd3, 0xf1, 0xc4, 0x4c, 0x82, 0xed, 0xd0, 0xc2, 0x13, 0x98, + 0xea, 0xcb, 0x75, 0x64, 0x8a, 0xe1, 0xf4, 0x88, 0x85, 0xf9, 0x23, 0x79, 0xd6, 0xff, 0xa0, 0x8c, + 0xd1, 0x11, 0x26, 0xa9, 0x9d, 0x9a, 0xcd, 0x79, 0xb8, 0x94, 0x6e, 0x34, 0x86, 0x65, 0x91, 0x85, + 0xf5, 0x11, 0x71, 0x8e, 0xc5, 0xe1, 0x43, 0x2b, 0x02, 0x71, 0x44, 0x26, 0xcd, 0xc7, 0x7e, 0x9e, + 0xac, 0xad, 0xe3, 0x67, 0x35, 0x16, 0x1a, 0x64, 0x3d, 0xcd, 0x60, 0xdc, 0xd2, 0x92, 0x2c, 0x47, + 0xaf, 0x5f, 0x4e, 0x19, 0x6c, 0x5d, 0x81, 0x24, 0x55, 0x5f, 0x67, 0xfc, 0xa1, 0x48, 0x04, 0x8d, + 0xfe, 0x06, 0x2c, 0xba, 0xca, 0x33, 0x4f, 0x0d, 0x8d, 0xae, 0xb9, 0x6d, 0x73, 0xbe, 0x9f, 0x8e, + 0x17, 0xc1, 0xc5, 0x5d, 0x6b, 0xd0, 0xb9, 0xa7, 0xe9, 0x9f, 0xe1, 0xdf, 0xba, 0x5c, 0xc1, 0x6a, + 0x07, 0xdb, 0xaa, 0x8c, 0x6d, 0x22, 0x0c, 0x64, 0xc9, 0xdd, 0xa1, 0x14, 0xa0, 0xf0, 0x29, 0x05, + 0x2b, 0x3a, 0x75, 0xb0, 0xd7, 0x3f, 0xe3, 0xb2, 0xed, 0x78, 0x21, 0xe5, 0xcd, 0x73, 0x07, 0xa1, + 0xa9, 0x5f, 0xd1, 0xf7, 0xba, 0x87, 0x60, 0xc8, 0x45, 0x4b, 0x7c, 0x38, 0xfb, 0xf6, 0x5c, 0x88, + 0xb0, 0x1c, 0xd2, 0x73, 0xba, 0x2c, 0x55, 0xc3, 0xb4, 0x77, 0xe4, 0x26, 0xae, 0x02, 0x5a, 0x2c, + 0xff, 0xc4, 0xa0, 0x95, 0xf2, 0xba, 0x4e, 0x07, 0x79, 0xa2, 0x4b, 0x76, 0x5b, 0x85, 0x48, 0x9f, + 0x2a, 0x0e, 0x79, 0xb9, 0x5f, 0xc0, 0xc3, 0x8e, 0x2a, 0x91, 0xf1, 0x2e, 0xf6, 0x5c, 0xa7, 0x49, + 0xce, 0x36, 0x94, 0x31, 0x02, 0x82, 0x01, 0x00, 0x2a, 0xa4, 0x8e, 0x0c, 0x95, 0xe3, 0x3b, 0xab, + 0x66, 0xd4, 0x63, 0x70, 0x48, 0x86, 0x33, 0x14, 0xde, 0xec, 0x98, 0x19, 0x62, 0x9b, 0xe3, 0x04, + 0x99, 0x55, 0x2c, 0x56, 0xa9, 0x51, 0xe4, 0xfb, 0x64, 0xf3, 0x09, 0xed, 0x9c, 0x79, 0xd2, 0xa4, + 0xaa, 0x28, 0xac, 0x9a, 0x6e, 0x7b, 0xe9, 0x7f, 0xda, 0x12, 0x90, 0xfa, 0xc4, 0xe9, 0x4d, 0x11, + 0xcd, 0xb4, 0xc8, 0xea, 0xbf, 0x5f, 0x45, 0x0e, 0x72, 0xf4, 0x41, 0x8a, 0x29, 0xe2, 0xfe, 0x49, + 0x32, 0x21, 0xe3, 0x84, 0x0d, 0xcf, 0x84, 0x47, 0xa3, 0x53, 0xb4, 0x40, 0xae, 0x63, 0xe9, 0x3b, + 0x83, 0x71, 0x8e, 0x5c, 0xed, 0x31, 0xef, 0x4e, 0xc9, 0x1a, 0xf7, 0xd5, 0xcd, 0xf3, 0x42, 0x04, + 0x78, 0xf2, 0x7b, 0xe0, 0x19, 0x27, 0x8b, 0xe7, 0x51, 0x5b, 0x66, 0x5f, 0x30, 0x5f, 0x10, 0xd3, + 0xb5, 0x5d, 0xdb, 0xfa, 0xd6, 0x41, 0x16, 0xdc, 0x4e, 0x44, 0x15, 0xae, 0xf3, 0xb2, 0x34, 0xe4, + 0xa5, 0xd6, 0xb5, 0xba, 0xb4, 0xc7, 0x7a, 0x26, 0xc9, 0xf2, 0x5f, 0x53, 0x6b, 0xd4, 0xf0, 0xb4, + 0xa4, 0x78, 0xfc, 0x18, 0x4f, 0x12, 0x6c, 0x80, 0xd5, 0x37, 0x42, 0xac, 0x62, 0xc2, 0x70, 0xe6, + 0xb2, 0x58, 0xa6, 0xb5, 0x6b, 0x33, 0x65, 0xec, 0xc2, 0x87, 0x97, 0xa9, 0xed, 0x12, 0xc1, 0xb9, + 0x1b, 0x26, 0x56, 0x03, 0xef, 0x75, 0x18, 0x07, 0xbc, 0xc1, 0x74, 0x73, 0x13, 0xf2, 0x27, 0x29, + 0xe1, 0xe3, 0xfe, 0x79, 0xf7, 0x5c, 0xc3, 0xfb, 0x5d, 0xc7, 0xcc, 0xb8, 0x1e, 0xfa, 0xcf, 0x9b, + 0x84, 0x79, 0x45, 0xa6, 0x10, 0x9e, 0xcf, 0x9c, 0xf1, 0x56, 0x50, 0x5c, 0xbb, 0x55, 0xa3, 0xd3, + 0x17, 0xeb, 0x32, 0x56, 0x61, 0xd1, 0x8f, 0xe6, 0xbb, 0x41, 0x60, 0x46, 0x83, 0x73, 0x18, 0x05, + 0x3b, 0x36, 0x51, 0x99, 0x33, 0x4c, 0x03, 0xa1, 0x02, 0x82, 0x01, 0x01, 0x00, 0xee, 0x63, 0x70, + 0x60, 0x30, 0xa4, 0xec, 0xe9, 0xfe, 0x3b, 0xdd, 0xcf, 0xc4, 0x9f, 0x5a, 0x83, 0xf3, 0x7f, 0x63, + 0xeb, 0xcb, 0x29, 0xdb, 0xdc, 0x99, 0x9f, 0x6f, 0xf5, 0x4b, 0x59, 0x6f, 0x11, 0x5c, 0xf1, 0xec, + 0xa0, 0x99, 0x90, 0x10, 0x8a, 0x43, 0x95, 0x18, 0xe9, 0x96, 0xf6, 0x89, 0xfd, 0xde, 0x89, 0xb2, + 0xc6, 0x7e, 0xdc, 0x04, 0xbf, 0x8e, 0x36, 0x67, 0x34, 0xc2, 0xae, 0x30, 0x17, 0xec, 0x14, 0xe0, + 0x42, 0x05, 0x0e, 0x7c, 0x65, 0x68, 0x40, 0x14, 0x6c, 0xa0, 0x48, 0x39, 0x4d, 0xce, 0xbe, 0x90, + 0xdd, 0x21, 0x95, 0x34, 0x9b, 0xba, 0xd3, 0x06, 0x56, 0x90, 0x31, 0xb2, 0xef, 0x6e, 0x91, 0x71, + 0xd2, 0xae, 0x77, 0x97, 0xc8, 0x84, 0x4e, 0x54, 0x83, 0x94, 0xca, 0x3b, 0x76, 0x8d, 0x84, 0x96, + 0xe9, 0x9e, 0xf6, 0x3a, 0xbb, 0x59, 0xb0, 0xff, 0x7f, 0xc7, 0x0e, 0xb5, 0x31, 0x53, 0xdd, 0x0f, + 0x59, 0x01, 0x8a, 0x27, 0x5a, 0xcb, 0xa7, 0x01, 0xf2, 0xc7, 0x6a, 0x15, 0xc8, 0x94, 0xf5, 0x34, + 0x61, 0xfe, 0xdf, 0x65, 0xbc, 0x25, 0xc2, 0xc5, 0xce, 0xc3, 0x96, 0xe5, 0x56, 0xa1, 0xa9, 0x19, + 0xbc, 0x7a, 0x05, 0x63, 0x93, 0xd5, 0x06, 0x44, 0x12, 0x6d, 0xcd, 0xef, 0x92, 0x56, 0x64, 0x2e, + 0x65, 0xa6, 0x04, 0x3c, 0xbc, 0xe9, 0x49, 0x7e, 0x19, 0x2c, 0xf2, 0xcb, 0x33, 0x64, 0x8e, 0x11, + 0x7f, 0x41, 0xdb, 0xf0, 0x19, 0x00, 0xac, 0xb9, 0x3b, 0x0c, 0x78, 0xdd, 0xf3, 0x1f, 0x38, 0x1f, + 0x4d, 0xb3, 0xf9, 0xcc, 0xbb, 0xb6, 0x90, 0x93, 0xda, 0xbf, 0x2e, 0x89, 0xdb, 0xbc, 0x0c, 0xb7, + 0x2f, 0x20, 0xc0, 0x05, 0xa2, 0x51, 0x9e, 0x3a, 0x87, 0x41, 0x46, 0x49, 0x5d, 0x7a, 0xac, 0xf3, + 0x41, 0x6a, 0x42, 0x2e, 0x56, 0x09, 0x86, 0xf2, 0x2f, 0x39, 0x45, 0x6e, 0x7f, }; const unsigned char test_ec_secp192r1_priv[] = { - 0xd8, 0x3b, 0x57, 0xa5, 0x9c, 0x51, 0x35, 0x8d, 0x9c, 0x8b, 0xbb, 0x89, - 0x8a, 0xff, 0x50, 0x7f, 0x44, 0xdd, 0x14, 0xcf, 0x16, 0x91, 0x71, 0x90, + 0xd8, 0x3b, 0x57, 0xa5, 0x9c, 0x51, 0x35, 0x8d, 0x9c, 0x8b, 0xbb, 0x89, 0x8a, 0xff, 0x50, 0x7f, + 0x44, 0xdd, 0x14, 0xcf, 0x16, 0x91, 0x71, 0x90, }; const unsigned char test_ec_secp192r1_pub[] = { - 0x04, 0xe3, 0x5f, 0xcb, 0xee, 0x11, 0xce, 0xc3, 0x15, 0x4f, 0x80, 0xa1, - 0xa6, 0x1d, 0xf7, 0xd7, 0x61, 0x2d, 0xe4, 0xf2, 0xfd, 0x70, 0xc5, 0x60, - 0x8d, 0x0e, 0xe3, 0xa4, 0xa1, 0xa5, 0x71, 0x94, 0x71, 0xad, 0xb3, 0x39, - 0x66, 0xdd, 0x9b, 0x03, 0x5f, 0xdb, 0x77, 0x4f, 0xee, 0xba, 0x94, 0xb0, + 0x04, 0xe3, 0x5f, 0xcb, 0xee, 0x11, 0xce, 0xc3, 0x15, 0x4f, 0x80, 0xa1, 0xa6, 0x1d, 0xf7, 0xd7, + 0x61, 0x2d, 0xe4, 0xf2, 0xfd, 0x70, 0xc5, 0x60, 0x8d, 0x0e, 0xe3, 0xa4, 0xa1, 0xa5, 0x71, 0x94, + 0x71, 0xad, 0xb3, 0x39, 0x66, 0xdd, 0x9b, 0x03, 0x5f, 0xdb, 0x77, 0x4f, 0xee, 0xba, 0x94, 0xb0, 0x4c, }; const unsigned char test_ec_secp224r1_priv[] = { - 0x87, 0x2f, 0x20, 0x3b, 0x3a, 0xd3, 0x5b, 0x7f, 0x2e, 0xcc, 0x80, 0x3c, - 0x3a, 0x0e, 0x1e, 0x0b, 0x1e, 0xd6, 0x1c, 0xc1, 0xaf, 0xe7, 0x1b, 0x18, - 0x9c, 0xd4, 0xc9, 0x95, + 0x87, 0x2f, 0x20, 0x3b, 0x3a, 0xd3, 0x5b, 0x7f, 0x2e, 0xcc, 0x80, 0x3c, 0x3a, 0x0e, 0x1e, 0x0b, + 0x1e, 0xd6, 0x1c, 0xc1, 0xaf, 0xe7, 0x1b, 0x18, 0x9c, 0xd4, 0xc9, 0x95, }; const unsigned char test_ec_secp224r1_pub[] = { - 0x04, 0x6f, 0x00, 0xea, 0xda, 0xa9, 0x49, 0xfe, 0xe3, 0xe9, 0xe1, 0xc7, - 0xfa, 0x12, 0x47, 0xee, 0xce, 0xc8, 0x6a, 0x0d, 0xce, 0x46, 0x41, 0x8b, - 0x9b, 0xd3, 0x11, 0x7b, 0x98, 0x1d, 0x4b, 0xd0, 0xae, 0x7a, 0x99, 0x0d, - 0xe9, 0x12, 0xf9, 0xd0, 0x60, 0xd6, 0xcb, 0x53, 0x1a, 0x42, 0xd2, 0x2e, + 0x04, 0x6f, 0x00, 0xea, 0xda, 0xa9, 0x49, 0xfe, 0xe3, 0xe9, 0xe1, 0xc7, 0xfa, 0x12, 0x47, 0xee, + 0xce, 0xc8, 0x6a, 0x0d, 0xce, 0x46, 0x41, 0x8b, 0x9b, 0xd3, 0x11, 0x7b, 0x98, 0x1d, 0x4b, 0xd0, + 0xae, 0x7a, 0x99, 0x0d, 0xe9, 0x12, 0xf9, 0xd0, 0x60, 0xd6, 0xcb, 0x53, 0x1a, 0x42, 0xd2, 0x2e, 0x39, 0x4a, 0xc2, 0x9e, 0x81, 0x80, 0x4b, 0xf1, 0x60, }; const unsigned char test_ec_secp256r1_priv[] = { - 0x49, 0xc9, 0xa8, 0xc1, 0x8c, 0x4b, 0x88, 0x56, 0x38, 0xc4, 0x31, 0xcf, - 0x1d, 0xf1, 0xc9, 0x94, 0x13, 0x16, 0x09, 0xb5, 0x80, 0xd4, 0xfd, 0x43, - 0xa0, 0xca, 0xb1, 0x7d, 0xb2, 0xf1, 0x3e, 0xee, + 0x49, 0xc9, 0xa8, 0xc1, 0x8c, 0x4b, 0x88, 0x56, 0x38, 0xc4, 0x31, 0xcf, 0x1d, 0xf1, 0xc9, 0x94, + 0x13, 0x16, 0x09, 0xb5, 0x80, 0xd4, 0xfd, 0x43, 0xa0, 0xca, 0xb1, 0x7d, 0xb2, 0xf1, 0x3e, 0xee, }; const unsigned char test_ec_secp256r1_pub[] = { - 0x04, 0x77, 0x72, 0x65, 0x6f, 0x81, 0x4b, 0x39, 0x92, 0x79, 0xd5, 0xe1, - 0xf1, 0x78, 0x1f, 0xac, 0x6f, 0x09, 0x9a, 0x3c, 0x5c, 0xa1, 0xb0, 0xe3, - 0x53, 0x51, 0x83, 0x4b, 0x08, 0xb6, 0x5e, 0x0b, 0x57, 0x25, 0x90, 0xcd, - 0xaf, 0x8f, 0x76, 0x93, 0x61, 0xbc, 0xf3, 0x4a, 0xcf, 0xc1, 0x1e, 0x5e, - 0x07, 0x4e, 0x84, 0x26, 0xbd, 0xde, 0x04, 0xbe, 0x6e, 0x65, 0x39, 0x45, - 0x44, 0x96, 0x17, 0xde, 0x45, + 0x04, 0x77, 0x72, 0x65, 0x6f, 0x81, 0x4b, 0x39, 0x92, 0x79, 0xd5, 0xe1, 0xf1, 0x78, 0x1f, 0xac, + 0x6f, 0x09, 0x9a, 0x3c, 0x5c, 0xa1, 0xb0, 0xe3, 0x53, 0x51, 0x83, 0x4b, 0x08, 0xb6, 0x5e, 0x0b, + 0x57, 0x25, 0x90, 0xcd, 0xaf, 0x8f, 0x76, 0x93, 0x61, 0xbc, 0xf3, 0x4a, 0xcf, 0xc1, 0x1e, 0x5e, + 0x07, 0x4e, 0x84, 0x26, 0xbd, 0xde, 0x04, 0xbe, 0x6e, 0x65, 0x39, 0x45, 0x44, 0x96, 0x17, 0xde, + 0x45, }; const unsigned char test_ec_secp384r1_priv[] = { - 0x3f, 0x5d, 0x8d, 0x9b, 0xe2, 0x80, 0xb5, 0x69, 0x6c, 0xc5, 0xcc, 0x9f, - 0x94, 0xcf, 0x8a, 0xf7, 0xe6, 0xb6, 0x1d, 0xd6, 0x59, 0x2b, 0x2a, 0xb2, - 0xb3, 0xa4, 0xc6, 0x07, 0x45, 0x04, 0x17, 0xec, 0x32, 0x7d, 0xcd, 0xca, - 0xed, 0x7c, 0x10, 0x05, 0x3d, 0x71, 0x9a, 0x05, 0x74, 0xf0, 0xa7, 0x6a, + 0x3f, 0x5d, 0x8d, 0x9b, 0xe2, 0x80, 0xb5, 0x69, 0x6c, 0xc5, 0xcc, 0x9f, 0x94, 0xcf, 0x8a, 0xf7, + 0xe6, 0xb6, 0x1d, 0xd6, 0x59, 0x2b, 0x2a, 0xb2, 0xb3, 0xa4, 0xc6, 0x07, 0x45, 0x04, 0x17, 0xec, + 0x32, 0x7d, 0xcd, 0xca, 0xed, 0x7c, 0x10, 0x05, 0x3d, 0x71, 0x9a, 0x05, 0x74, 0xf0, 0xa7, 0x6a, }; const unsigned char test_ec_secp384r1_pub[] = { - 0x04, 0xd9, 0xc6, 0x62, 0xb5, 0x0b, 0xa2, 0x9c, 0xa4, 0x79, 0x90, 0x45, - 0x0e, 0x04, 0x3a, 0xea, 0xf4, 0xf0, 0xc6, 0x9b, 0x15, 0x67, 0x6d, 0x11, - 0x2f, 0x62, 0x2a, 0x71, 0xc9, 0x30, 0x59, 0xaf, 0x99, 0x96, 0x91, 0xc5, - 0x68, 0x0d, 0x2b, 0x44, 0xd1, 0x11, 0x57, 0x9d, 0xb1, 0x2f, 0x4a, 0x41, - 0x3a, 0x2e, 0xd5, 0xc4, 0x5f, 0xcf, 0xb6, 0x7b, 0x5b, 0x63, 0xe0, 0x0b, - 0x91, 0xeb, 0xe5, 0x9d, 0x09, 0xa6, 0xb1, 0xac, 0x2c, 0x0c, 0x42, 0x82, - 0xaa, 0x12, 0x31, 0x7e, 0xd5, 0x91, 0x4f, 0x99, 0x9b, 0xc4, 0x88, 0xbb, - 0x13, 0x2e, 0x83, 0x42, 0xcc, 0x36, 0xf2, 0xca, 0x5e, 0x33, 0x79, 0xc7, + 0x04, 0xd9, 0xc6, 0x62, 0xb5, 0x0b, 0xa2, 0x9c, 0xa4, 0x79, 0x90, 0x45, 0x0e, 0x04, 0x3a, 0xea, + 0xf4, 0xf0, 0xc6, 0x9b, 0x15, 0x67, 0x6d, 0x11, 0x2f, 0x62, 0x2a, 0x71, 0xc9, 0x30, 0x59, 0xaf, + 0x99, 0x96, 0x91, 0xc5, 0x68, 0x0d, 0x2b, 0x44, 0xd1, 0x11, 0x57, 0x9d, 0xb1, 0x2f, 0x4a, 0x41, + 0x3a, 0x2e, 0xd5, 0xc4, 0x5f, 0xcf, 0xb6, 0x7b, 0x5b, 0x63, 0xe0, 0x0b, 0x91, 0xeb, 0xe5, 0x9d, + 0x09, 0xa6, 0xb1, 0xac, 0x2c, 0x0c, 0x42, 0x82, 0xaa, 0x12, 0x31, 0x7e, 0xd5, 0x91, 0x4f, 0x99, + 0x9b, 0xc4, 0x88, 0xbb, 0x13, 0x2e, 0x83, 0x42, 0xcc, 0x36, 0xf2, 0xca, 0x5e, 0x33, 0x79, 0xc7, 0x47, }; const unsigned char test_ec_secp521r1_priv[] = { - 0x01, 0xb1, 0xb6, 0xad, 0x07, 0xbb, 0x79, 0xe7, 0x32, 0x0d, 0xa5, 0x98, - 0x60, 0xea, 0x28, 0xe0, 0x55, 0x28, 0x4f, 0x60, 0x58, 0xf2, 0x79, 0xde, - 0x66, 0x6e, 0x06, 0xd4, 0x35, 0xd2, 0xaf, 0x7b, 0xda, 0x28, 0xd9, 0x9f, - 0xa4, 0x7b, 0x7d, 0xd0, 0x96, 0x3e, 0x16, 0xb0, 0x07, 0x30, 0x78, 0xee, - 0x8b, 0x8a, 0x38, 0xd9, 0x66, 0xa5, 0x82, 0xf4, 0x6d, 0x19, 0xff, 0x95, - 0xdf, 0x3a, 0xd9, 0x68, 0x5a, 0xae, + 0x01, 0xb1, 0xb6, 0xad, 0x07, 0xbb, 0x79, 0xe7, 0x32, 0x0d, 0xa5, 0x98, 0x60, 0xea, 0x28, 0xe0, + 0x55, 0x28, 0x4f, 0x60, 0x58, 0xf2, 0x79, 0xde, 0x66, 0x6e, 0x06, 0xd4, 0x35, 0xd2, 0xaf, 0x7b, + 0xda, 0x28, 0xd9, 0x9f, 0xa4, 0x7b, 0x7d, 0xd0, 0x96, 0x3e, 0x16, 0xb0, 0x07, 0x30, 0x78, 0xee, + 0x8b, 0x8a, 0x38, 0xd9, 0x66, 0xa5, 0x82, 0xf4, 0x6d, 0x19, 0xff, 0x95, 0xdf, 0x3a, 0xd9, 0x68, + 0x5a, 0xae, }; const unsigned char test_ec_secp521r1_pub[] = { - 0x04, 0x00, 0x1d, 0xe1, 0x42, 0xd5, 0x4f, 0x69, 0xeb, 0x03, 0x8e, 0xe4, - 0xb7, 0xaf, 0x9d, 0x3c, 0xa0, 0x77, 0x36, 0xfd, 0x9c, 0xf7, 0x19, 0xeb, - 0x35, 0x4d, 0x69, 0x87, 0x9e, 0xe7, 0xf3, 0xc1, 0x36, 0xfb, 0x0f, 0xbf, - 0x9f, 0x08, 0xf8, 0x6b, 0xe5, 0xfa, 0x12, 0x8e, 0xc1, 0xa0, 0x51, 0xd3, - 0xe6, 0xc6, 0x43, 0xe8, 0x5a, 0xda, 0x8f, 0xfa, 0xcf, 0x36, 0x63, 0xc2, - 0x60, 0xbd, 0x2c, 0x84, 0x4b, 0x6f, 0x56, 0x00, 0xce, 0xe8, 0xe4, 0x8a, - 0x9e, 0x65, 0xd0, 0x9c, 0xad, 0xd8, 0x9f, 0x23, 0x5d, 0xee, 0x05, 0xf3, - 0xb8, 0xa6, 0x46, 0xbe, 0x71, 0x5f, 0x1f, 0x67, 0xd5, 0xb4, 0x34, 0xe0, - 0xff, 0x23, 0xa1, 0xfc, 0x07, 0xef, 0x77, 0x40, 0x19, 0x3e, 0x40, 0xee, - 0xff, 0x6f, 0x3b, 0xcd, 0xfd, 0x76, 0x5a, 0xa9, 0x15, 0x50, 0x33, 0x52, - 0x4f, 0xe4, 0xf2, 0x05, 0xf5, 0x44, 0x4e, 0x29, 0x2c, 0x4c, 0x2f, 0x6a, - 0xc1, + 0x04, 0x00, 0x1d, 0xe1, 0x42, 0xd5, 0x4f, 0x69, 0xeb, 0x03, 0x8e, 0xe4, 0xb7, 0xaf, 0x9d, 0x3c, + 0xa0, 0x77, 0x36, 0xfd, 0x9c, 0xf7, 0x19, 0xeb, 0x35, 0x4d, 0x69, 0x87, 0x9e, 0xe7, 0xf3, 0xc1, + 0x36, 0xfb, 0x0f, 0xbf, 0x9f, 0x08, 0xf8, 0x6b, 0xe5, 0xfa, 0x12, 0x8e, 0xc1, 0xa0, 0x51, 0xd3, + 0xe6, 0xc6, 0x43, 0xe8, 0x5a, 0xda, 0x8f, 0xfa, 0xcf, 0x36, 0x63, 0xc2, 0x60, 0xbd, 0x2c, 0x84, + 0x4b, 0x6f, 0x56, 0x00, 0xce, 0xe8, 0xe4, 0x8a, 0x9e, 0x65, 0xd0, 0x9c, 0xad, 0xd8, 0x9f, 0x23, + 0x5d, 0xee, 0x05, 0xf3, 0xb8, 0xa6, 0x46, 0xbe, 0x71, 0x5f, 0x1f, 0x67, 0xd5, 0xb4, 0x34, 0xe0, + 0xff, 0x23, 0xa1, 0xfc, 0x07, 0xef, 0x77, 0x40, 0x19, 0x3e, 0x40, 0xee, 0xff, 0x6f, 0x3b, 0xcd, + 0xfd, 0x76, 0x5a, 0xa9, 0x15, 0x50, 0x33, 0x52, 0x4f, 0xe4, 0xf2, 0x05, 0xf5, 0x44, 0x4e, 0x29, + 0x2c, 0x4c, 0x2f, 0x6a, 0xc1, }; const unsigned char test_ec_bp256r1_priv[] = { - 0x21, 0x61, 0xd6, 0xf2, 0xdb, 0x76, 0x52, 0x6f, 0xa6, 0x2c, 0x16, 0xf3, - 0x56, 0xa8, 0x0f, 0x01, 0xf3, 0x2f, 0x77, 0x67, 0x84, 0xb3, 0x6a, 0xa9, - 0x97, 0x99, 0xa8, 0xb7, 0x66, 0x20, 0x80, 0xff, + 0x21, 0x61, 0xd6, 0xf2, 0xdb, 0x76, 0x52, 0x6f, 0xa6, 0x2c, 0x16, 0xf3, 0x56, 0xa8, 0x0f, 0x01, + 0xf3, 0x2f, 0x77, 0x67, 0x84, 0xb3, 0x6a, 0xa9, 0x97, 0x99, 0xa8, 0xb7, 0x66, 0x20, 0x80, 0xff, }; const unsigned char test_ec_bp256r1_pub[] = { - 0x04, 0x76, 0x8c, 0x8c, 0xae, 0x4a, 0xbc, 0xa6, 0x30, 0x6d, 0xb0, 0xed, - 0x81, 0xb0, 0xc4, 0xa6, 0x21, 0x5c, 0x37, 0x80, 0x66, 0xec, 0x6d, 0x61, - 0x6c, 0x14, 0x6e, 0x13, 0xf1, 0xc7, 0xdf, 0x80, 0x9b, 0x96, 0xab, 0x69, - 0x11, 0xc2, 0x7d, 0x8a, 0x02, 0x33, 0x9f, 0x09, 0x26, 0x84, 0x0e, 0x55, - 0x23, 0x6d, 0x3d, 0x1e, 0xfb, 0xe2, 0x66, 0x9d, 0x09, 0x0e, 0x4c, 0x4c, - 0x66, 0x0f, 0xad, 0xa9, 0x1d, + 0x04, 0x76, 0x8c, 0x8c, 0xae, 0x4a, 0xbc, 0xa6, 0x30, 0x6d, 0xb0, 0xed, 0x81, 0xb0, 0xc4, 0xa6, + 0x21, 0x5c, 0x37, 0x80, 0x66, 0xec, 0x6d, 0x61, 0x6c, 0x14, 0x6e, 0x13, 0xf1, 0xc7, 0xdf, 0x80, + 0x9b, 0x96, 0xab, 0x69, 0x11, 0xc2, 0x7d, 0x8a, 0x02, 0x33, 0x9f, 0x09, 0x26, 0x84, 0x0e, 0x55, + 0x23, 0x6d, 0x3d, 0x1e, 0xfb, 0xe2, 0x66, 0x9d, 0x09, 0x0e, 0x4c, 0x4c, 0x66, 0x0f, 0xad, 0xa9, + 0x1d, }; const unsigned char test_ec_bp384r1_priv[] = { - 0x3d, 0xd9, 0x2e, 0x75, 0x0d, 0x90, 0xd7, 0xd3, 0x9f, 0xc1, 0x88, 0x5c, - 0xd8, 0xad, 0x12, 0xea, 0x94, 0x41, 0xf2, 0x2b, 0x93, 0x34, 0xb4, 0xd9, - 0x65, 0x20, 0x2a, 0xdb, 0x14, 0x48, 0xce, 0x24, 0xc5, 0x80, 0x8a, 0x85, - 0xdd, 0x9a, 0xfc, 0x22, 0x9a, 0xf0, 0xa3, 0x12, 0x4f, 0x75, 0x5b, 0xcb, + 0x3d, 0xd9, 0x2e, 0x75, 0x0d, 0x90, 0xd7, 0xd3, 0x9f, 0xc1, 0x88, 0x5c, 0xd8, 0xad, 0x12, 0xea, + 0x94, 0x41, 0xf2, 0x2b, 0x93, 0x34, 0xb4, 0xd9, 0x65, 0x20, 0x2a, 0xdb, 0x14, 0x48, 0xce, 0x24, + 0xc5, 0x80, 0x8a, 0x85, 0xdd, 0x9a, 0xfc, 0x22, 0x9a, 0xf0, 0xa3, 0x12, 0x4f, 0x75, 0x5b, 0xcb, }; const unsigned char test_ec_bp384r1_pub[] = { - 0x04, 0x71, 0x9f, 0x9d, 0x09, 0x3a, 0x62, 0x7e, 0x0d, 0x35, 0x03, 0x85, - 0xc6, 0x61, 0xce, 0xbf, 0x00, 0xc6, 0x19, 0x23, 0x56, 0x6f, 0xe9, 0x00, - 0x6a, 0x31, 0x07, 0xaf, 0x1d, 0x87, 0x1b, 0xc6, 0xbb, 0x68, 0x98, 0x5f, - 0xd7, 0x22, 0xea, 0x32, 0xbe, 0x31, 0x6f, 0x8e, 0x78, 0x3b, 0x7c, 0xd1, - 0x95, 0x77, 0x85, 0xf6, 0x6c, 0xfc, 0x0c, 0xb1, 0x95, 0xdd, 0x5c, 0x99, - 0xa8, 0xe7, 0xab, 0xaa, 0x84, 0x85, 0x53, 0xa5, 0x84, 0xdf, 0xd2, 0xb4, - 0x8e, 0x76, 0xd4, 0x45, 0xfe, 0x00, 0xdd, 0x8b, 0xe5, 0x90, 0x96, 0xd8, - 0x77, 0xd4, 0x69, 0x6d, 0x23, 0xb4, 0xbc, 0x8d, 0xb1, 0x47, 0x24, 0xe6, + 0x04, 0x71, 0x9f, 0x9d, 0x09, 0x3a, 0x62, 0x7e, 0x0d, 0x35, 0x03, 0x85, 0xc6, 0x61, 0xce, 0xbf, + 0x00, 0xc6, 0x19, 0x23, 0x56, 0x6f, 0xe9, 0x00, 0x6a, 0x31, 0x07, 0xaf, 0x1d, 0x87, 0x1b, 0xc6, + 0xbb, 0x68, 0x98, 0x5f, 0xd7, 0x22, 0xea, 0x32, 0xbe, 0x31, 0x6f, 0x8e, 0x78, 0x3b, 0x7c, 0xd1, + 0x95, 0x77, 0x85, 0xf6, 0x6c, 0xfc, 0x0c, 0xb1, 0x95, 0xdd, 0x5c, 0x99, 0xa8, 0xe7, 0xab, 0xaa, + 0x84, 0x85, 0x53, 0xa5, 0x84, 0xdf, 0xd2, 0xb4, 0x8e, 0x76, 0xd4, 0x45, 0xfe, 0x00, 0xdd, 0x8b, + 0xe5, 0x90, 0x96, 0xd8, 0x77, 0xd4, 0x69, 0x6d, 0x23, 0xb4, 0xbc, 0x8d, 0xb1, 0x47, 0x24, 0xe6, 0x6a, }; const unsigned char test_ec_bp512r1_priv[] = { - 0x37, 0x2c, 0x97, 0x78, 0xf6, 0x9f, 0x72, 0x6c, 0xbc, 0xa3, 0xf4, 0xa2, - 0x68, 0xf1, 0x6b, 0x4d, 0x61, 0x7d, 0x10, 0x28, 0x0d, 0x79, 0xa6, 0xa0, - 0x29, 0xcd, 0x51, 0x87, 0x9f, 0xe1, 0x01, 0x29, 0x34, 0xdf, 0xe5, 0x39, - 0x54, 0x55, 0x33, 0x7d, 0xf6, 0x90, 0x6d, 0xc7, 0xd6, 0xd2, 0xee, 0xa4, - 0xdb, 0xb2, 0x06, 0x5c, 0x02, 0x28, 0xf7, 0x3b, 0x3e, 0xd7, 0x16, 0x48, - 0x0e, 0x7d, 0x71, 0xd2, + 0x37, 0x2c, 0x97, 0x78, 0xf6, 0x9f, 0x72, 0x6c, 0xbc, 0xa3, 0xf4, 0xa2, 0x68, 0xf1, 0x6b, 0x4d, + 0x61, 0x7d, 0x10, 0x28, 0x0d, 0x79, 0xa6, 0xa0, 0x29, 0xcd, 0x51, 0x87, 0x9f, 0xe1, 0x01, 0x29, + 0x34, 0xdf, 0xe5, 0x39, 0x54, 0x55, 0x33, 0x7d, 0xf6, 0x90, 0x6d, 0xc7, 0xd6, 0xd2, 0xee, 0xa4, + 0xdb, 0xb2, 0x06, 0x5c, 0x02, 0x28, 0xf7, 0x3b, 0x3e, 0xd7, 0x16, 0x48, 0x0e, 0x7d, 0x71, 0xd2, }; const unsigned char test_ec_bp512r1_pub[] = { - 0x04, 0x38, 0xb7, 0xec, 0x92, 0xb6, 0x1c, 0x5c, 0x6c, 0x7f, 0xbc, 0x28, - 0xa4, 0xec, 0x75, 0x9d, 0x48, 0xfc, 0xd4, 0xe2, 0xe3, 0x74, 0xde, 0xfd, - 0x5c, 0x49, 0x68, 0xa5, 0x4d, 0xbe, 0xf7, 0x51, 0x0e, 0x51, 0x78, 0x86, - 0xfb, 0xfc, 0x38, 0xea, 0x39, 0xaa, 0x52, 0x93, 0x59, 0xd7, 0x0a, 0x71, - 0x56, 0xc3, 0x5d, 0x3c, 0xba, 0xc7, 0xce, 0x77, 0x6b, 0xdb, 0x25, 0x1d, - 0xd6, 0x4b, 0xce, 0x71, 0x23, 0x44, 0x24, 0xee, 0x70, 0x49, 0xee, 0xd0, - 0x72, 0xf0, 0xdb, 0xc4, 0xd7, 0x99, 0x96, 0xe1, 0x75, 0xd5, 0x57, 0xe2, - 0x63, 0x76, 0x3a, 0xe9, 0x70, 0x95, 0xc0, 0x81, 0xe7, 0x3e, 0x7d, 0xb2, - 0xe3, 0x8a, 0xdc, 0x3d, 0x4c, 0x9a, 0x04, 0x87, 0xb1, 0xed, 0xe8, 0x76, - 0xdc, 0x1f, 0xca, 0x61, 0xc9, 0x02, 0xe9, 0xa1, 0xd8, 0x72, 0x2b, 0x86, - 0x12, 0x92, 0x8f, 0x18, 0xa2, 0x48, 0x45, 0x59, 0x1a, + 0x04, 0x38, 0xb7, 0xec, 0x92, 0xb6, 0x1c, 0x5c, 0x6c, 0x7f, 0xbc, 0x28, 0xa4, 0xec, 0x75, 0x9d, + 0x48, 0xfc, 0xd4, 0xe2, 0xe3, 0x74, 0xde, 0xfd, 0x5c, 0x49, 0x68, 0xa5, 0x4d, 0xbe, 0xf7, 0x51, + 0x0e, 0x51, 0x78, 0x86, 0xfb, 0xfc, 0x38, 0xea, 0x39, 0xaa, 0x52, 0x93, 0x59, 0xd7, 0x0a, 0x71, + 0x56, 0xc3, 0x5d, 0x3c, 0xba, 0xc7, 0xce, 0x77, 0x6b, 0xdb, 0x25, 0x1d, 0xd6, 0x4b, 0xce, 0x71, + 0x23, 0x44, 0x24, 0xee, 0x70, 0x49, 0xee, 0xd0, 0x72, 0xf0, 0xdb, 0xc4, 0xd7, 0x99, 0x96, 0xe1, + 0x75, 0xd5, 0x57, 0xe2, 0x63, 0x76, 0x3a, 0xe9, 0x70, 0x95, 0xc0, 0x81, 0xe7, 0x3e, 0x7d, 0xb2, + 0xe3, 0x8a, 0xdc, 0x3d, 0x4c, 0x9a, 0x04, 0x87, 0xb1, 0xed, 0xe8, 0x76, 0xdc, 0x1f, 0xca, 0x61, + 0xc9, 0x02, 0xe9, 0xa1, 0xd8, 0x72, 0x2b, 0x86, 0x12, 0x92, 0x8f, 0x18, 0xa2, 0x48, 0x45, 0x59, + 0x1a, }; const unsigned char test_ec_secp192k1_priv[] = { - 0x29, 0x7a, 0xc1, 0x72, 0x2c, 0xca, 0xc7, 0x58, 0x9e, 0xcb, 0x24, 0x0d, - 0xc7, 0x19, 0x84, 0x25, 0x38, 0xca, 0x97, 0x4b, 0xeb, 0x79, 0xf2, 0x28, + 0x29, 0x7a, 0xc1, 0x72, 0x2c, 0xca, 0xc7, 0x58, 0x9e, 0xcb, 0x24, 0x0d, 0xc7, 0x19, 0x84, 0x25, + 0x38, 0xca, 0x97, 0x4b, 0xeb, 0x79, 0xf2, 0x28, }; const unsigned char test_ec_secp192k1_pub[] = { - 0x04, 0x26, 0xb7, 0xbb, 0x38, 0xda, 0x64, 0x9a, 0xc2, 0x13, 0x8f, 0xc0, - 0x50, 0xc6, 0x54, 0x8b, 0x32, 0x55, 0x3d, 0xab, 0x68, 0xaf, 0xeb, 0xc3, - 0x61, 0x05, 0xd3, 0x25, 0xb7, 0x55, 0x38, 0xc1, 0x23, 0x23, 0xcb, 0x07, - 0x64, 0x78, 0x9e, 0xcb, 0x99, 0x26, 0x71, 0xbe, 0xb2, 0xb6, 0xbe, 0xf2, + 0x04, 0x26, 0xb7, 0xbb, 0x38, 0xda, 0x64, 0x9a, 0xc2, 0x13, 0x8f, 0xc0, 0x50, 0xc6, 0x54, 0x8b, + 0x32, 0x55, 0x3d, 0xab, 0x68, 0xaf, 0xeb, 0xc3, 0x61, 0x05, 0xd3, 0x25, 0xb7, 0x55, 0x38, 0xc1, + 0x23, 0x23, 0xcb, 0x07, 0x64, 0x78, 0x9e, 0xcb, 0x99, 0x26, 0x71, 0xbe, 0xb2, 0xb6, 0xbe, 0xf2, 0xf5, }; const unsigned char test_ec_secp256k1_priv[] = { - 0x7f, 0xa0, 0x6f, 0xa0, 0x2d, 0x0e, 0x91, 0x1b, 0x9a, 0x47, 0xfd, 0xc1, - 0x7d, 0x2d, 0x96, 0x2c, 0xa0, 0x1e, 0x2f, 0x31, 0xd6, 0x0c, 0x62, 0x12, - 0xd0, 0xed, 0x7e, 0x3b, 0xba, 0x23, 0xa7, 0xb9, + 0x7f, 0xa0, 0x6f, 0xa0, 0x2d, 0x0e, 0x91, 0x1b, 0x9a, 0x47, 0xfd, 0xc1, 0x7d, 0x2d, 0x96, 0x2c, + 0xa0, 0x1e, 0x2f, 0x31, 0xd6, 0x0c, 0x62, 0x12, 0xd0, 0xed, 0x7e, 0x3b, 0xba, 0x23, 0xa7, 0xb9, }; const unsigned char test_ec_secp256k1_pub[] = { - 0x04, 0x5c, 0x39, 0x15, 0x45, 0x79, 0xef, 0xd6, 0x67, 0xad, 0xc7, 0x3a, - 0x81, 0x01, 0x5a, 0x79, 0x7d, 0x2c, 0x86, 0x82, 0xcd, 0xfb, 0xd3, 0xc3, - 0x55, 0x3c, 0x4a, 0x18, 0x5d, 0x48, 0x1c, 0xdc, 0x50, 0xe4, 0x2a, 0x0e, - 0x1c, 0xbc, 0x3c, 0xa2, 0x9a, 0x32, 0xa6, 0x45, 0xe9, 0x27, 0xf5, 0x4b, - 0xea, 0xed, 0x14, 0xc9, 0xdb, 0xbf, 0x82, 0x79, 0xd7, 0x25, 0xf5, 0x49, - 0x5c, 0xa9, 0x24, 0xb2, 0x4d, + 0x04, 0x5c, 0x39, 0x15, 0x45, 0x79, 0xef, 0xd6, 0x67, 0xad, 0xc7, 0x3a, 0x81, 0x01, 0x5a, 0x79, + 0x7d, 0x2c, 0x86, 0x82, 0xcd, 0xfb, 0xd3, 0xc3, 0x55, 0x3c, 0x4a, 0x18, 0x5d, 0x48, 0x1c, 0xdc, + 0x50, 0xe4, 0x2a, 0x0e, 0x1c, 0xbc, 0x3c, 0xa2, 0x9a, 0x32, 0xa6, 0x45, 0xe9, 0x27, 0xf5, 0x4b, + 0xea, 0xed, 0x14, 0xc9, 0xdb, 0xbf, 0x82, 0x79, 0xd7, 0x25, 0xf5, 0x49, 0x5c, 0xa9, 0x24, 0xb2, + 0x4d, }; const unsigned char test_ec_curve25519_priv[] = { - 0x70, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, 0x72, - 0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a, - 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x6a, + 0x70, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, 0x72, 0x51, 0xb2, 0x66, 0x45, + 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x6a, }; const unsigned char test_ec_curve25519_pub[] = { - 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, 0xdc, - 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a, 0xf4, - 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a, + 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, + 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a, }; const unsigned char test_ec_curve448_priv[] = { - 0xe4, 0xe4, 0x9f, 0x52, 0x68, 0x6f, 0x9e, 0xe3, 0xb6, 0x38, 0x52, 0x8f, - 0x72, 0x1f, 0x15, 0x96, 0x19, 0x6f, 0xfd, 0x0a, 0x1c, 0xdd, 0xb6, 0x4c, - 0x3f, 0x21, 0x6f, 0x06, 0x54, 0x18, 0x05, 0xcf, 0xeb, 0x1a, 0x28, 0x6d, - 0xc7, 0x80, 0x18, 0x09, 0x5c, 0xdf, 0xec, 0x05, 0x0e, 0x80, 0x07, 0xb5, + 0xe4, 0xe4, 0x9f, 0x52, 0x68, 0x6f, 0x9e, 0xe3, 0xb6, 0x38, 0x52, 0x8f, 0x72, 0x1f, 0x15, 0x96, + 0x19, 0x6f, 0xfd, 0x0a, 0x1c, 0xdd, 0xb6, 0x4c, 0x3f, 0x21, 0x6f, 0x06, 0x54, 0x18, 0x05, 0xcf, + 0xeb, 0x1a, 0x28, 0x6d, 0xc7, 0x80, 0x18, 0x09, 0x5c, 0xdf, 0xec, 0x05, 0x0e, 0x80, 0x07, 0xb5, 0xf4, 0x90, 0x89, 0x62, 0xba, 0x20, 0xd6, 0xc1, }; const unsigned char test_ec_curve448_pub[] = { - 0xc0, 0xd3, 0xa5, 0xa2, 0xb4, 0x16, 0xa5, 0x73, 0xdc, 0x99, 0x09, 0xf9, - 0x2f, 0x13, 0x4a, 0xc0, 0x13, 0x23, 0xab, 0x8f, 0x8e, 0x36, 0x80, 0x4e, - 0x57, 0x85, 0x88, 0xba, 0x2d, 0x09, 0xfe, 0x7c, 0x3e, 0x73, 0x7f, 0x77, - 0x1c, 0xa1, 0x12, 0x82, 0x5b, 0x54, 0x8a, 0x0f, 0xfd, 0xed, 0x6d, 0x6a, + 0xc0, 0xd3, 0xa5, 0xa2, 0xb4, 0x16, 0xa5, 0x73, 0xdc, 0x99, 0x09, 0xf9, 0x2f, 0x13, 0x4a, 0xc0, + 0x13, 0x23, 0xab, 0x8f, 0x8e, 0x36, 0x80, 0x4e, 0x57, 0x85, 0x88, 0xba, 0x2d, 0x09, 0xfe, 0x7c, + 0x3e, 0x73, 0x7f, 0x77, 0x1c, 0xa1, 0x12, 0x82, 0x5b, 0x54, 0x8a, 0x0f, 0xfd, 0xed, 0x6d, 0x6a, 0x2f, 0xd0, 0x9a, 0x3e, 0x77, 0xde, 0xc3, 0x0e, }; From f38640d07d21aeebf6701f469d0aa4069615713e Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Mon, 15 Apr 2024 18:44:39 +0200 Subject: [PATCH 19/32] generate_test_keys: generate also RSA public key arrays This is to manage RSA and EC keys in the same way in order to prepare for the following commits. Signed-off-by: Valerio Setti --- tests/scripts/generate_test_keys.py | 18 +++-- tests/src/test_keys.h | 116 ++++++++++++++++++++++++++-- tests/suites/test_suite_pk.function | 18 +++-- 3 files changed, 134 insertions(+), 18 deletions(-) diff --git a/tests/scripts/generate_test_keys.py b/tests/scripts/generate_test_keys.py index d48b0268f3..a1cb35677c 100755 --- a/tests/scripts/generate_test_keys.py +++ b/tests/scripts/generate_test_keys.py @@ -20,12 +20,18 @@ BYTES_PER_LINE = 16 KEYS = { # RSA keys - 'test_rsa_1024': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1024], - 'test_rsa_1026': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1026], - 'test_rsa_1028': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1028], - 'test_rsa_1030': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1030], - 'test_rsa_2048': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 2048], - 'test_rsa_4096': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 4096], + 'test_rsa_1024_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1024], + 'test_rsa_1024_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 1024], + 'test_rsa_1026_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1026], + 'test_rsa_1026_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 1026], + 'test_rsa_1028_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1028], + 'test_rsa_1028_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 1028], + 'test_rsa_1030_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1030], + 'test_rsa_1030_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 1030], + 'test_rsa_2048_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 2048], + 'test_rsa_2048_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 2048], + 'test_rsa_4096_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 4096], + 'test_rsa_4096_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 4096], # EC keys 'test_ec_secp192r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)', 192], 'test_ec_secp192r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)', 192], diff --git a/tests/src/test_keys.h b/tests/src/test_keys.h index 63b5251309..67e6e1e13a 100644 --- a/tests/src/test_keys.h +++ b/tests/src/test_keys.h @@ -3,7 +3,7 @@ * Please do not edit it manually. *********************************************************************************/ -const unsigned char test_rsa_1024[] = { +const unsigned char test_rsa_1024_priv[] = { 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05, 0x7d, 0x39, 0x6e, 0xe8, 0x4f, 0xb7, 0x5f, 0xdb, 0xb5, 0xc2, 0xb1, 0x3c, 0x7f, 0xe5, 0xa6, 0x54, 0xaa, 0x8a, 0xa2, 0x47, 0x0b, 0x54, 0x1e, 0xe1, 0xfe, 0xb0, 0xb1, 0x2d, 0x25, 0xc7, 0x97, 0x11, 0x53, 0x12, 0x49, @@ -45,7 +45,19 @@ const unsigned char test_rsa_1024[] = { 0x2b, 0x24, }; -const unsigned char test_rsa_1026[] = { +const unsigned char test_rsa_1024_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05, 0x7d, 0x39, 0x6e, 0xe8, 0x4f, 0xb7, 0x5f, + 0xdb, 0xb5, 0xc2, 0xb1, 0x3c, 0x7f, 0xe5, 0xa6, 0x54, 0xaa, 0x8a, 0xa2, 0x47, 0x0b, 0x54, 0x1e, + 0xe1, 0xfe, 0xb0, 0xb1, 0x2d, 0x25, 0xc7, 0x97, 0x11, 0x53, 0x12, 0x49, 0xe1, 0x12, 0x96, 0x28, + 0x04, 0x2d, 0xbb, 0xb6, 0xc1, 0x20, 0xd1, 0x44, 0x35, 0x24, 0xef, 0x4c, 0x0e, 0x6e, 0x1d, 0x89, + 0x56, 0xee, 0xb2, 0x07, 0x7a, 0xf1, 0x23, 0x49, 0xdd, 0xee, 0xe5, 0x44, 0x83, 0xbc, 0x06, 0xc2, + 0xc6, 0x19, 0x48, 0xcd, 0x02, 0xb2, 0x02, 0xe7, 0x96, 0xae, 0xbd, 0x94, 0xd3, 0xa7, 0xcb, 0xf8, + 0x59, 0xc2, 0xc1, 0x81, 0x9c, 0x32, 0x4c, 0xb8, 0x2b, 0x9c, 0xd3, 0x4e, 0xde, 0x26, 0x3a, 0x2a, + 0xbf, 0xfe, 0x47, 0x33, 0xf0, 0x77, 0x86, 0x9e, 0x86, 0x60, 0xf7, 0xd6, 0x83, 0x4d, 0xa5, 0x3d, + 0x69, 0x0e, 0xf7, 0x98, 0x5f, 0x6b, 0xc3, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + +const unsigned char test_rsa_1026_priv[] = { 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x02, 0xd0, 0x96, 0x61, 0xfc, 0x74, 0x22, 0x4b, 0xa7, 0xbe, 0x79, 0x07, 0xab, 0xef, 0x4f, 0x5e, 0x8b, 0xcc, 0x26, 0x4a, 0x80, 0x2c, 0x97, 0x8f, 0x7e, 0xaa, 0x58, 0x55, 0xad, 0xa0, 0x54, 0x36, 0xd7, 0x5d, 0xb7, 0x68, 0xd2, 0x0f, @@ -87,7 +99,19 @@ const unsigned char test_rsa_1026[] = { 0x92, 0x16, }; -const unsigned char test_rsa_1028[] = { +const unsigned char test_rsa_1026_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x02, 0xd0, 0x96, 0x61, 0xfc, 0x74, 0x22, 0x4b, 0xa7, 0xbe, + 0x79, 0x07, 0xab, 0xef, 0x4f, 0x5e, 0x8b, 0xcc, 0x26, 0x4a, 0x80, 0x2c, 0x97, 0x8f, 0x7e, 0xaa, + 0x58, 0x55, 0xad, 0xa0, 0x54, 0x36, 0xd7, 0x5d, 0xb7, 0x68, 0xd2, 0x0f, 0x68, 0x59, 0x5d, 0xbc, + 0xc3, 0xd7, 0x25, 0xb1, 0x38, 0xe8, 0x0b, 0x24, 0x7e, 0x44, 0xa4, 0x16, 0x3a, 0x05, 0x42, 0xfa, + 0xb6, 0x12, 0xac, 0xbb, 0xde, 0x45, 0xf2, 0xe9, 0x38, 0x94, 0xaa, 0x25, 0x3b, 0xdd, 0xef, 0x6a, + 0x7b, 0xec, 0xdc, 0x9c, 0xc2, 0x9a, 0x99, 0xba, 0xcf, 0x48, 0xdc, 0x6e, 0x38, 0xdb, 0x7a, 0x33, + 0xe9, 0xac, 0x92, 0x4c, 0x52, 0x0f, 0xc6, 0xbe, 0x7d, 0x6e, 0x56, 0x46, 0xc1, 0xd6, 0x7f, 0xb8, + 0xb2, 0xb9, 0x7a, 0xc6, 0x0b, 0xee, 0xcc, 0x3b, 0xb8, 0xe7, 0x5b, 0xed, 0x83, 0x15, 0xaa, 0x3f, + 0xe4, 0x6f, 0x74, 0x8a, 0x66, 0xd6, 0xef, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + +const unsigned char test_rsa_1028_priv[] = { 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x0e, 0x62, 0xa7, 0x6f, 0x0e, 0x0b, 0x59, 0x68, 0x3a, 0x7e, 0xbf, 0x7c, 0xbf, 0xd3, 0x7b, 0x1d, 0x17, 0x81, 0xd8, 0xf1, 0xb9, 0x00, 0x60, 0x4b, 0x50, 0x7f, 0x0f, 0x04, 0xc7, 0x2a, 0x3d, 0x34, 0x0d, 0x06, 0x7b, 0xcd, 0x53, 0xbe, @@ -129,7 +153,19 @@ const unsigned char test_rsa_1028[] = { 0x54, 0x8a, }; -const unsigned char test_rsa_1030[] = { +const unsigned char test_rsa_1028_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x0e, 0x62, 0xa7, 0x6f, 0x0e, 0x0b, 0x59, 0x68, 0x3a, 0x7e, + 0xbf, 0x7c, 0xbf, 0xd3, 0x7b, 0x1d, 0x17, 0x81, 0xd8, 0xf1, 0xb9, 0x00, 0x60, 0x4b, 0x50, 0x7f, + 0x0f, 0x04, 0xc7, 0x2a, 0x3d, 0x34, 0x0d, 0x06, 0x7b, 0xcd, 0x53, 0xbe, 0xa3, 0xca, 0xff, 0x4e, + 0x4a, 0xe6, 0x94, 0xf0, 0xb6, 0xd8, 0xf5, 0x91, 0xa4, 0x16, 0x7f, 0xbf, 0x7f, 0x37, 0x2a, 0xb5, + 0x7e, 0x83, 0xa6, 0x9a, 0x3f, 0x26, 0xf4, 0x47, 0xbc, 0xf5, 0x82, 0xbc, 0x96, 0x21, 0xa3, 0x0a, + 0x3b, 0x44, 0xd6, 0xb4, 0x3e, 0x98, 0x6d, 0x1a, 0x86, 0x7b, 0x07, 0x48, 0x9e, 0x4f, 0x9b, 0xfc, + 0xad, 0xaa, 0x82, 0xa2, 0x78, 0x2d, 0xc2, 0x72, 0x9a, 0x63, 0x1f, 0xb1, 0xfb, 0x9f, 0xfb, 0x79, + 0x4b, 0x4e, 0x53, 0xc7, 0x62, 0x39, 0xe0, 0x4d, 0x4a, 0x8f, 0x80, 0x35, 0x25, 0x88, 0xdb, 0x29, + 0x46, 0x2d, 0xde, 0x18, 0x23, 0x7c, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + +const unsigned char test_rsa_1030_priv[] = { 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x2b, 0x7c, 0xd1, 0x97, 0xf5, 0x79, 0x6d, 0x1f, 0x8e, 0x57, 0x6b, 0x2b, 0x37, 0x72, 0x3f, 0xd9, 0x21, 0x08, 0x14, 0xef, 0x1c, 0x19, 0x95, 0xf9, 0x89, 0x9d, 0x50, 0x05, 0x8f, 0x37, 0x9d, 0x23, 0x9c, 0x66, 0x87, 0x8e, 0x92, 0x2f, @@ -171,7 +207,19 @@ const unsigned char test_rsa_1030[] = { 0x35, 0xa1, 0x7c, }; -const unsigned char test_rsa_2048[] = { +const unsigned char test_rsa_1030_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x2b, 0x7c, 0xd1, 0x97, 0xf5, 0x79, 0x6d, 0x1f, 0x8e, 0x57, + 0x6b, 0x2b, 0x37, 0x72, 0x3f, 0xd9, 0x21, 0x08, 0x14, 0xef, 0x1c, 0x19, 0x95, 0xf9, 0x89, 0x9d, + 0x50, 0x05, 0x8f, 0x37, 0x9d, 0x23, 0x9c, 0x66, 0x87, 0x8e, 0x92, 0x2f, 0x34, 0xc6, 0xae, 0x36, + 0x72, 0xc8, 0x59, 0x8f, 0xcd, 0x5d, 0x47, 0xb7, 0x64, 0xd2, 0xec, 0x15, 0x6e, 0x13, 0x4d, 0x03, + 0xcf, 0x6a, 0x94, 0xd3, 0x8d, 0x2e, 0xa8, 0xbc, 0x76, 0xdb, 0xbc, 0x60, 0xc4, 0xb9, 0x74, 0x21, + 0x90, 0x90, 0xea, 0xf2, 0x87, 0x49, 0x7d, 0x7d, 0xcf, 0x7f, 0x11, 0x9c, 0xfa, 0x86, 0x74, 0x96, + 0xf7, 0xe9, 0x1c, 0x12, 0xb5, 0xd5, 0x52, 0xe1, 0xd1, 0x46, 0x1a, 0x80, 0xdb, 0xe9, 0xa5, 0x9d, + 0xb3, 0xb0, 0x16, 0xc6, 0xc0, 0x14, 0x1c, 0x3b, 0x2a, 0x0e, 0x22, 0x60, 0x89, 0xb8, 0x55, 0xcb, + 0x88, 0xef, 0x65, 0x64, 0x08, 0xbd, 0x89, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + +const unsigned char test_rsa_2048_priv[] = { 0x30, 0x82, 0x04, 0xa3, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf7, 0xbb, 0x6b, 0x8e, 0xab, 0x40, 0x49, 0x1c, 0xd6, 0x44, 0x55, 0xec, 0x04, 0xd4, 0xed, 0x8d, 0xb5, 0x05, 0x1a, 0x97, 0x38, 0xfc, 0x7a, 0xf7, 0x3f, 0xf3, 0xb0, 0x97, 0x51, 0x1c, 0xce, 0x40, 0xaa, 0xf7, 0x65, 0x37, @@ -249,7 +297,27 @@ const unsigned char test_rsa_2048[] = { 0x07, 0x9c, 0xaa, 0xda, 0x05, 0x68, 0xb1, }; -const unsigned char test_rsa_4096[] = { +const unsigned char test_rsa_2048_pub[] = { + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf7, 0xbb, 0x6b, 0x8e, 0xab, 0x40, 0x49, + 0x1c, 0xd6, 0x44, 0x55, 0xec, 0x04, 0xd4, 0xed, 0x8d, 0xb5, 0x05, 0x1a, 0x97, 0x38, 0xfc, 0x7a, + 0xf7, 0x3f, 0xf3, 0xb0, 0x97, 0x51, 0x1c, 0xce, 0x40, 0xaa, 0xf7, 0x65, 0x37, 0xb1, 0x35, 0x35, + 0x04, 0x42, 0x79, 0x86, 0xb7, 0xb2, 0xb5, 0x3a, 0x96, 0x4a, 0x69, 0x37, 0xb5, 0x58, 0xec, 0x0d, + 0x1d, 0xea, 0x27, 0x4a, 0xf2, 0xb8, 0xff, 0xf2, 0xf0, 0x94, 0xc2, 0x43, 0xfa, 0x57, 0x72, 0x66, + 0xa7, 0x9d, 0xb0, 0xc2, 0x6f, 0xfe, 0x30, 0x41, 0x6d, 0x23, 0xef, 0x05, 0xdd, 0x5f, 0xec, 0xab, + 0x41, 0x3e, 0xbb, 0xb4, 0xf8, 0x52, 0x6a, 0xe7, 0x20, 0xa9, 0x45, 0x84, 0x22, 0x6b, 0x37, 0xd9, + 0x2e, 0xf4, 0x63, 0xfc, 0x73, 0x6c, 0xb3, 0x8e, 0x53, 0x0e, 0x74, 0x88, 0xd9, 0x16, 0x2f, 0x57, + 0x26, 0x80, 0x7b, 0xc5, 0x43, 0x13, 0x8a, 0x2d, 0x25, 0x8a, 0xdb, 0x4d, 0x68, 0x02, 0x21, 0xc2, + 0x53, 0x23, 0x81, 0xcc, 0xfa, 0x81, 0xbc, 0x89, 0xbc, 0x3d, 0x7b, 0x84, 0x03, 0x9c, 0x2d, 0xf4, + 0x1c, 0xe3, 0xec, 0x8d, 0xb9, 0x1c, 0x23, 0x80, 0xe7, 0x81, 0xba, 0x3a, 0xa9, 0xe2, 0x3b, 0x74, + 0xed, 0x99, 0x73, 0xd4, 0x90, 0x8e, 0xfc, 0xa4, 0x7a, 0xa8, 0xd9, 0xb7, 0xb0, 0xa4, 0x42, 0x32, + 0x97, 0xa4, 0x04, 0x42, 0x7c, 0x3f, 0x3c, 0xd6, 0xe0, 0x78, 0x2e, 0x45, 0x53, 0x88, 0x0f, 0x06, + 0xba, 0x39, 0xa6, 0x4f, 0x4a, 0x7b, 0x0e, 0xef, 0x92, 0x1a, 0x60, 0x50, 0xa2, 0x07, 0xce, 0xfa, + 0xdc, 0xf0, 0x73, 0x94, 0xa3, 0xe1, 0x8e, 0xa9, 0x15, 0xdc, 0x84, 0x97, 0xe7, 0xae, 0x61, 0xfc, + 0x31, 0x62, 0xf6, 0x2f, 0x50, 0x65, 0xa6, 0x92, 0xaf, 0x07, 0x72, 0x66, 0xf7, 0x36, 0x0c, 0x20, + 0x76, 0xce, 0xbe, 0xaf, 0x14, 0xcb, 0x22, 0xc1, 0xed, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + +const unsigned char test_rsa_4096_priv[] = { 0x30, 0x82, 0x09, 0x29, 0x02, 0x01, 0x00, 0x02, 0x82, 0x02, 0x01, 0x00, 0xcc, 0x87, 0x25, 0xf6, 0xb3, 0x8d, 0x5d, 0x01, 0xae, 0xeb, 0x07, 0xd3, 0x6e, 0x03, 0xde, 0x4d, 0x31, 0xa0, 0x26, 0x1c, 0xe7, 0x4f, 0xe1, 0x1a, 0x89, 0x5e, 0xcf, 0xd1, 0x3d, 0x16, 0x8a, 0xee, 0x93, 0x2a, 0xf1, 0x35, @@ -399,6 +467,42 @@ const unsigned char test_rsa_4096[] = { 0x41, 0x6a, 0x42, 0x2e, 0x56, 0x09, 0x86, 0xf2, 0x2f, 0x39, 0x45, 0x6e, 0x7f, }; +const unsigned char test_rsa_4096_pub[] = { + 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xcc, 0x87, 0x25, 0xf6, 0xb3, 0x8d, 0x5d, + 0x01, 0xae, 0xeb, 0x07, 0xd3, 0x6e, 0x03, 0xde, 0x4d, 0x31, 0xa0, 0x26, 0x1c, 0xe7, 0x4f, 0xe1, + 0x1a, 0x89, 0x5e, 0xcf, 0xd1, 0x3d, 0x16, 0x8a, 0xee, 0x93, 0x2a, 0xf1, 0x35, 0xff, 0xbb, 0x84, + 0x98, 0x77, 0x27, 0x38, 0x97, 0x08, 0x1f, 0x3f, 0x75, 0x93, 0xc1, 0x4a, 0xe8, 0x2b, 0xc2, 0x66, + 0xc1, 0x05, 0x44, 0xf7, 0x26, 0xae, 0x1c, 0xcf, 0x13, 0x3d, 0x8a, 0x40, 0x18, 0xd3, 0x80, 0xdf, + 0xa2, 0x52, 0x51, 0xc0, 0x11, 0x10, 0x7b, 0x75, 0x13, 0xa9, 0x43, 0x34, 0x6a, 0xa0, 0xe0, 0xde, + 0xc1, 0x1d, 0x8d, 0x7f, 0xa2, 0x56, 0x44, 0x65, 0x3c, 0x11, 0x8d, 0xaa, 0xbc, 0xe6, 0xd4, 0x1f, + 0x06, 0x6f, 0x66, 0x21, 0x76, 0x88, 0x01, 0x47, 0x80, 0x55, 0x78, 0x0e, 0x91, 0xb6, 0x8e, 0xa3, + 0xc9, 0x58, 0x56, 0xd1, 0x72, 0xa8, 0x90, 0x32, 0xb3, 0x9c, 0x82, 0x4e, 0x8b, 0x7d, 0xc1, 0xa3, + 0xf8, 0xae, 0xe4, 0xf6, 0xb3, 0x68, 0xba, 0xa3, 0xcd, 0x68, 0xf5, 0x0d, 0x52, 0x68, 0x01, 0x17, + 0xe9, 0xb9, 0x13, 0xd7, 0xf8, 0xc8, 0x52, 0xa0, 0xd1, 0x00, 0x8e, 0x8b, 0x87, 0xa5, 0xc9, 0x7e, + 0x37, 0xaf, 0xc1, 0x1a, 0x08, 0x05, 0x50, 0x55, 0x7b, 0x8b, 0x4d, 0xcb, 0xd8, 0xe1, 0x92, 0xed, + 0x33, 0x66, 0xd8, 0x3a, 0x09, 0xd2, 0x7c, 0x77, 0xe1, 0x50, 0xf6, 0x68, 0x55, 0xb5, 0xdc, 0xfd, + 0xb2, 0xdf, 0x15, 0x1b, 0xd7, 0xf4, 0x44, 0x25, 0x0e, 0xaf, 0x6f, 0xe3, 0xf2, 0x36, 0x82, 0x6c, + 0x81, 0xfa, 0x84, 0x81, 0x01, 0xbf, 0xaa, 0xd5, 0x35, 0xff, 0xb5, 0x22, 0xd6, 0xff, 0x97, 0xc9, + 0xdd, 0x1e, 0x43, 0xb8, 0x2c, 0xce, 0x29, 0x21, 0xd1, 0x53, 0xc1, 0x54, 0x50, 0xc4, 0x72, 0x4f, + 0xfd, 0x3e, 0xfd, 0xca, 0x57, 0x8e, 0x01, 0x36, 0x50, 0xa0, 0x3a, 0x5c, 0xf5, 0x01, 0xfc, 0x58, + 0x60, 0x0f, 0xb5, 0xc8, 0x60, 0xc0, 0xef, 0x0c, 0xfe, 0x0a, 0xc0, 0x71, 0x2d, 0x44, 0x13, 0x13, + 0xdc, 0xa4, 0x1a, 0x4d, 0x7d, 0x41, 0x1e, 0x6c, 0x83, 0xb2, 0x15, 0x17, 0x49, 0xd2, 0x8b, 0xe4, + 0x69, 0x2f, 0x62, 0x37, 0x3d, 0xb0, 0x7e, 0x4a, 0x79, 0x05, 0x1c, 0x56, 0x82, 0xec, 0x20, 0xd4, + 0x91, 0xc4, 0xcf, 0xc7, 0xbc, 0x14, 0x0f, 0x35, 0xfa, 0x15, 0xe5, 0xa1, 0xfa, 0x75, 0x6d, 0x65, + 0xb8, 0xef, 0x93, 0xad, 0xdf, 0x4c, 0x47, 0xc4, 0xa3, 0x5b, 0x18, 0x4f, 0x22, 0xa1, 0xef, 0x08, + 0x99, 0x48, 0xf9, 0x46, 0xf6, 0xfa, 0xeb, 0x64, 0x70, 0xf2, 0x67, 0x46, 0xe6, 0x58, 0xcf, 0x9b, + 0x41, 0x77, 0x41, 0x78, 0x42, 0xe6, 0xd3, 0x73, 0x55, 0x80, 0x89, 0xaf, 0xf7, 0x21, 0xb9, 0x30, + 0xe9, 0xec, 0x61, 0xb4, 0xf6, 0xa0, 0x2c, 0x05, 0x2c, 0x69, 0x24, 0xd3, 0x9a, 0x5b, 0xbb, 0x15, + 0xed, 0x11, 0x06, 0xc4, 0x01, 0x0f, 0x4d, 0xd6, 0x9c, 0x79, 0xd0, 0x42, 0xc8, 0xb3, 0x16, 0x61, + 0xb1, 0xee, 0x48, 0x6b, 0xc6, 0x9d, 0xb5, 0xf2, 0xf0, 0x7a, 0x50, 0xd8, 0x5b, 0x20, 0x69, 0x9d, + 0x60, 0x13, 0x15, 0x62, 0x5b, 0xb8, 0x69, 0x62, 0x9c, 0x7f, 0x4c, 0x5d, 0x48, 0xb2, 0x11, 0xd0, + 0x97, 0xf4, 0x38, 0xac, 0xec, 0x95, 0x97, 0x3a, 0x38, 0xd4, 0x21, 0x09, 0x0a, 0xf0, 0xf1, 0x34, + 0x84, 0xe4, 0xe9, 0x4b, 0x8c, 0xb5, 0xef, 0xc1, 0x85, 0x07, 0xf4, 0xb9, 0x31, 0xdf, 0x39, 0x98, + 0x7f, 0xfb, 0x28, 0x30, 0x29, 0x3e, 0x4d, 0xa3, 0x81, 0xaa, 0xf7, 0x0b, 0x32, 0x92, 0x95, 0x2e, + 0xf9, 0x34, 0xe2, 0xb4, 0x0f, 0xde, 0xbb, 0xa3, 0xd9, 0x70, 0x1b, 0x76, 0xe1, 0xbe, 0x54, 0x82, + 0x74, 0xb2, 0x60, 0x2d, 0x88, 0x85, 0x37, 0x48, 0x2d, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + const unsigned char test_ec_secp192r1_priv[] = { 0xd8, 0x3b, 0x57, 0xa5, 0x9c, 0x51, 0x35, 0x8d, 0x9c, 0x8b, 0xbb, 0x89, 0x8a, 0xff, 0x50, 0x7f, 0x44, 0xdd, 0x14, 0xcf, 0x16, 0x91, 0x71, 0x90, diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 5e63214d33..1e52ae6b1f 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -194,12 +194,18 @@ struct key_lut_element { }; struct key_lut_element keys_lut[] = { - { 1024, test_rsa_1024, sizeof(test_rsa_1024), NULL, 0 }, - { 1026, test_rsa_1026, sizeof(test_rsa_1026), NULL, 0 }, - { 1028, test_rsa_1028, sizeof(test_rsa_1028), NULL, 0 }, - { 1030, test_rsa_1030, sizeof(test_rsa_1030), NULL, 0 }, - { 2048, test_rsa_2048, sizeof(test_rsa_2048), NULL, 0 }, - { 4096, test_rsa_4096, sizeof(test_rsa_4096), NULL, 0 }, + { 1024, test_rsa_1024_priv, sizeof(test_rsa_1024_priv), + test_rsa_1024_pub, sizeof(test_rsa_1024_pub) }, + { 1026, test_rsa_1026_priv, sizeof(test_rsa_1026_priv), + test_rsa_1026_pub, sizeof(test_rsa_1026_pub) }, + { 1028, test_rsa_1028_priv, sizeof(test_rsa_1028_priv), + test_rsa_1028_pub, sizeof(test_rsa_1028_pub) }, + { 1030, test_rsa_1030_priv, sizeof(test_rsa_1030_priv), + test_rsa_1030_pub, sizeof(test_rsa_1030_pub) }, + { 2048, test_rsa_2048_priv, sizeof(test_rsa_2048_priv), + test_rsa_2048_pub, sizeof(test_rsa_2048_pub) }, + { 4096, test_rsa_4096_priv, sizeof(test_rsa_4096_priv), + test_rsa_4096_pub, sizeof(test_rsa_4096_pub) }, { MBEDTLS_ECP_DP_SECP192R1, test_ec_secp192r1_priv, sizeof(test_ec_secp192r1_priv), test_ec_secp192r1_pub, sizeof(test_ec_secp192r1_pub) }, { MBEDTLS_ECP_DP_SECP224R1, test_ec_secp224r1_priv, sizeof(test_ec_secp224r1_priv), From 65953e227a35596ea5dcad70c5437c4e523e48e6 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 16 Apr 2024 10:31:15 +0200 Subject: [PATCH 20/32] generate_test_keys: generate arrays for all keys in asymmetric_key_data.py Only unused (from test_suite_pk point of view) EC curves are skipped. Signed-off-by: Valerio Setti --- tests/scripts/generate_test_keys.py | 106 ++--- tests/src/test_keys.h | 609 +++++++++++++++++----------- tests/suites/test_suite_pk.function | 4 +- 3 files changed, 432 insertions(+), 287 deletions(-) diff --git a/tests/scripts/generate_test_keys.py b/tests/scripts/generate_test_keys.py index a1cb35677c..75e85cefcc 100755 --- a/tests/scripts/generate_test_keys.py +++ b/tests/scripts/generate_test_keys.py @@ -9,6 +9,7 @@ generating the required key at run time. This helps speeding up testing.""" import os import sys from typing import Iterator +import re # pylint: disable=wrong-import-position SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + "/" sys.path.append(SCRIPT_DIR + "../../scripts/") @@ -18,47 +19,6 @@ import scripts_path # pylint: disable=unused-import OUTPUT_HEADER_FILE = SCRIPT_DIR + "../src/test_keys.h" BYTES_PER_LINE = 16 -KEYS = { - # RSA keys - 'test_rsa_1024_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1024], - 'test_rsa_1024_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 1024], - 'test_rsa_1026_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1026], - 'test_rsa_1026_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 1026], - 'test_rsa_1028_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1028], - 'test_rsa_1028_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 1028], - 'test_rsa_1030_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 1030], - 'test_rsa_1030_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 1030], - 'test_rsa_2048_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 2048], - 'test_rsa_2048_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 2048], - 'test_rsa_4096_priv': ['PSA_KEY_TYPE_RSA_KEY_PAIR', 4096], - 'test_rsa_4096_pub': ['PSA_KEY_TYPE_RSA_PUBLIC_KEY', 4096], - # EC keys - 'test_ec_secp192r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)', 192], - 'test_ec_secp192r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)', 192], - 'test_ec_secp224r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)', 224], - 'test_ec_secp224r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)', 224], - 'test_ec_secp256r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)', 256], - 'test_ec_secp256r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)', 256], - 'test_ec_secp384r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)', 384], - 'test_ec_secp384r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)', 384], - 'test_ec_secp521r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)', 521], - 'test_ec_secp521r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1)', 521], - 'test_ec_bp256r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 256], - 'test_ec_bp256r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 256], - 'test_ec_bp384r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 384], - 'test_ec_bp384r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 384], - 'test_ec_bp512r1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 512], - 'test_ec_bp512r1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_BRAINPOOL_P_R1)', 512], - 'test_ec_secp192k1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_K1)', 192], - 'test_ec_secp192k1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_K1)', 192], - 'test_ec_secp256k1_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_K1)', 256], - 'test_ec_secp256k1_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_K1)', 256], - 'test_ec_curve25519_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY)', 255], - 'test_ec_curve25519_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_MONTGOMERY)', 255], - 'test_ec_curve448_priv': ['PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_MONTGOMERY)', 448], - 'test_ec_curve448_pub': ['PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_MONTGOMERY)', 448], -} - def c_byte_array_literal_content(array_name: str, key_data: bytes) -> Iterator[str]: yield 'const unsigned char ' yield array_name @@ -69,9 +29,37 @@ def c_byte_array_literal_content(array_name: str, key_data: bytes) -> Iterator[s yield ' {:#04x},'.format(b) yield '\n};' -def convert_der_to_c(array_name: str, key_data: bytearray) -> str: +def convert_der_to_c(array_name: str, key_data: bytes) -> str: return ''.join(c_byte_array_literal_content(array_name, key_data)) +EC_NAME_CONVERSION = { + 'PSA_ECC_FAMILY_SECP_K1': ['secp', 'k1'], + 'PSA_ECC_FAMILY_SECP_R1': ['secp', 'r1'], + 'PSA_ECC_FAMILY_BRAINPOOL_P_R1': ['bp', 'r1'], + 'PSA_ECC_FAMILY_MONTGOMERY': ['curve', ''], +} + +def get_key_type(key: str) -> str: + if re.match('PSA_KEY_TYPE_RSA_.*', key): + return "rsa" + elif re.match('PSA_KEY_TYPE_ECC_.*', key): + return "ec" + else: + print("Unhandled key type {}".format(key)) + return "unknown" + +def get_ec_key_family(key: str) -> str: + match = re.search(r'.*\((.*)\)', key) + if match is None: + raise Exception("Unable to get EC family from {}".format(key)) + return match.group(1) + +def get_key_role(key_type: str) -> str: + if re.match('PSA_KEY_TYPE_.*_KEY_PAIR', key_type): + return "priv" + else: + return "pub" + def main() -> None: # Remove output file if already existing. if os.path.exists(OUTPUT_HEADER_FILE): @@ -85,13 +73,33 @@ def main() -> None: " *********************************************************************************/\n" ) - for key in KEYS: - key_type = KEYS[key][0] - key_bitsize = KEYS[key][1] - c_array = convert_der_to_c(key, ASYMMETRIC_KEY_DATA[key_type][key_bitsize]) - output_file.write("\n") - output_file.write(c_array) - output_file.write("\n") + for key in ASYMMETRIC_KEY_DATA: + key_type = get_key_type(key) + # Ignore keys which are not EC or RSA + if key_type == "unknown": + continue + # Ignore undesired EC keys + if key_type == "ec": + ec_family = get_ec_key_family(key) + if not ec_family in EC_NAME_CONVERSION: + continue + role = get_key_role(key) + + for bits in ASYMMETRIC_KEY_DATA[key]: + # Create output array name + if key_type == "rsa": + array_name = "_".join(["test", key_type, str(bits), role]) + else: + prefix = EC_NAME_CONVERSION[ec_family][0] + suffix = EC_NAME_CONVERSION[ec_family][1] + curve = "".join([prefix, str(bits), suffix]) + array_name = "_".join(["test", key_type, curve, role]) + # Convert bytearray to C array + c_array = convert_der_to_c(array_name, ASYMMETRIC_KEY_DATA[key][bits]) + # Write the C array to the output file + output_file.write("\n") + output_file.write(c_array) + output_file.write("\n") if __name__ == '__main__': main() diff --git a/tests/src/test_keys.h b/tests/src/test_keys.h index 67e6e1e13a..ca3416be90 100644 --- a/tests/src/test_keys.h +++ b/tests/src/test_keys.h @@ -3,6 +3,238 @@ * Please do not edit it manually. *********************************************************************************/ +const unsigned char test_ec_secp192k1_priv[] = { + 0x29, 0x7a, 0xc1, 0x72, 0x2c, 0xca, 0xc7, 0x58, 0x9e, 0xcb, 0x24, 0x0d, 0xc7, 0x19, 0x84, 0x25, + 0x38, 0xca, 0x97, 0x4b, 0xeb, 0x79, 0xf2, 0x28, +}; + +const unsigned char test_ec_secp225k1_priv[] = { + 0x00, 0x24, 0x12, 0x2b, 0xf0, 0x20, 0xfa, 0x11, 0x3f, 0x6c, 0x0a, 0xc9, 0x78, 0xdf, 0xbd, 0x41, + 0xf7, 0x49, 0x25, 0x7a, 0x94, 0x68, 0xfe, 0xbd, 0xbe, 0x0d, 0xc9, 0xf7, 0xe8, +}; + +const unsigned char test_ec_secp256k1_priv[] = { + 0x7f, 0xa0, 0x6f, 0xa0, 0x2d, 0x0e, 0x91, 0x1b, 0x9a, 0x47, 0xfd, 0xc1, 0x7d, 0x2d, 0x96, 0x2c, + 0xa0, 0x1e, 0x2f, 0x31, 0xd6, 0x0c, 0x62, 0x12, 0xd0, 0xed, 0x7e, 0x3b, 0xba, 0x23, 0xa7, 0xb9, +}; + +const unsigned char test_ec_secp192k1_pub[] = { + 0x04, 0x26, 0xb7, 0xbb, 0x38, 0xda, 0x64, 0x9a, 0xc2, 0x13, 0x8f, 0xc0, 0x50, 0xc6, 0x54, 0x8b, + 0x32, 0x55, 0x3d, 0xab, 0x68, 0xaf, 0xeb, 0xc3, 0x61, 0x05, 0xd3, 0x25, 0xb7, 0x55, 0x38, 0xc1, + 0x23, 0x23, 0xcb, 0x07, 0x64, 0x78, 0x9e, 0xcb, 0x99, 0x26, 0x71, 0xbe, 0xb2, 0xb6, 0xbe, 0xf2, + 0xf5, +}; + +const unsigned char test_ec_secp225k1_pub[] = { + 0x04, 0x2c, 0xc7, 0x33, 0x5f, 0x4b, 0x76, 0x04, 0x2b, 0xed, 0x44, 0xef, 0x45, 0x95, 0x9a, 0x62, + 0xaa, 0x21, 0x5f, 0x7a, 0x5f, 0xf0, 0xc8, 0x11, 0x1b, 0x8c, 0x44, 0xed, 0x65, 0x4e, 0xe7, 0x1c, + 0x19, 0x18, 0x32, 0x6a, 0xd4, 0x85, 0xb2, 0xd5, 0x99, 0xfe, 0x2a, 0x6e, 0xab, 0x09, 0x6e, 0xe2, + 0x6d, 0x97, 0x73, 0x34, 0xd2, 0xba, 0xc6, 0xd6, 0x1d, +}; + +const unsigned char test_ec_secp256k1_pub[] = { + 0x04, 0x5c, 0x39, 0x15, 0x45, 0x79, 0xef, 0xd6, 0x67, 0xad, 0xc7, 0x3a, 0x81, 0x01, 0x5a, 0x79, + 0x7d, 0x2c, 0x86, 0x82, 0xcd, 0xfb, 0xd3, 0xc3, 0x55, 0x3c, 0x4a, 0x18, 0x5d, 0x48, 0x1c, 0xdc, + 0x50, 0xe4, 0x2a, 0x0e, 0x1c, 0xbc, 0x3c, 0xa2, 0x9a, 0x32, 0xa6, 0x45, 0xe9, 0x27, 0xf5, 0x4b, + 0xea, 0xed, 0x14, 0xc9, 0xdb, 0xbf, 0x82, 0x79, 0xd7, 0x25, 0xf5, 0x49, 0x5c, 0xa9, 0x24, 0xb2, + 0x4d, +}; + +const unsigned char test_ec_secp192r1_priv[] = { + 0xd8, 0x3b, 0x57, 0xa5, 0x9c, 0x51, 0x35, 0x8d, 0x9c, 0x8b, 0xbb, 0x89, 0x8a, 0xff, 0x50, 0x7f, + 0x44, 0xdd, 0x14, 0xcf, 0x16, 0x91, 0x71, 0x90, +}; + +const unsigned char test_ec_secp224r1_priv[] = { + 0x87, 0x2f, 0x20, 0x3b, 0x3a, 0xd3, 0x5b, 0x7f, 0x2e, 0xcc, 0x80, 0x3c, 0x3a, 0x0e, 0x1e, 0x0b, + 0x1e, 0xd6, 0x1c, 0xc1, 0xaf, 0xe7, 0x1b, 0x18, 0x9c, 0xd4, 0xc9, 0x95, +}; + +const unsigned char test_ec_secp256r1_priv[] = { + 0x49, 0xc9, 0xa8, 0xc1, 0x8c, 0x4b, 0x88, 0x56, 0x38, 0xc4, 0x31, 0xcf, 0x1d, 0xf1, 0xc9, 0x94, + 0x13, 0x16, 0x09, 0xb5, 0x80, 0xd4, 0xfd, 0x43, 0xa0, 0xca, 0xb1, 0x7d, 0xb2, 0xf1, 0x3e, 0xee, +}; + +const unsigned char test_ec_secp384r1_priv[] = { + 0x3f, 0x5d, 0x8d, 0x9b, 0xe2, 0x80, 0xb5, 0x69, 0x6c, 0xc5, 0xcc, 0x9f, 0x94, 0xcf, 0x8a, 0xf7, + 0xe6, 0xb6, 0x1d, 0xd6, 0x59, 0x2b, 0x2a, 0xb2, 0xb3, 0xa4, 0xc6, 0x07, 0x45, 0x04, 0x17, 0xec, + 0x32, 0x7d, 0xcd, 0xca, 0xed, 0x7c, 0x10, 0x05, 0x3d, 0x71, 0x9a, 0x05, 0x74, 0xf0, 0xa7, 0x6a, +}; + +const unsigned char test_ec_secp521r1_priv[] = { + 0x01, 0xb1, 0xb6, 0xad, 0x07, 0xbb, 0x79, 0xe7, 0x32, 0x0d, 0xa5, 0x98, 0x60, 0xea, 0x28, 0xe0, + 0x55, 0x28, 0x4f, 0x60, 0x58, 0xf2, 0x79, 0xde, 0x66, 0x6e, 0x06, 0xd4, 0x35, 0xd2, 0xaf, 0x7b, + 0xda, 0x28, 0xd9, 0x9f, 0xa4, 0x7b, 0x7d, 0xd0, 0x96, 0x3e, 0x16, 0xb0, 0x07, 0x30, 0x78, 0xee, + 0x8b, 0x8a, 0x38, 0xd9, 0x66, 0xa5, 0x82, 0xf4, 0x6d, 0x19, 0xff, 0x95, 0xdf, 0x3a, 0xd9, 0x68, + 0x5a, 0xae, +}; + +const unsigned char test_ec_secp192r1_pub[] = { + 0x04, 0xe3, 0x5f, 0xcb, 0xee, 0x11, 0xce, 0xc3, 0x15, 0x4f, 0x80, 0xa1, 0xa6, 0x1d, 0xf7, 0xd7, + 0x61, 0x2d, 0xe4, 0xf2, 0xfd, 0x70, 0xc5, 0x60, 0x8d, 0x0e, 0xe3, 0xa4, 0xa1, 0xa5, 0x71, 0x94, + 0x71, 0xad, 0xb3, 0x39, 0x66, 0xdd, 0x9b, 0x03, 0x5f, 0xdb, 0x77, 0x4f, 0xee, 0xba, 0x94, 0xb0, + 0x4c, +}; + +const unsigned char test_ec_secp224r1_pub[] = { + 0x04, 0x6f, 0x00, 0xea, 0xda, 0xa9, 0x49, 0xfe, 0xe3, 0xe9, 0xe1, 0xc7, 0xfa, 0x12, 0x47, 0xee, + 0xce, 0xc8, 0x6a, 0x0d, 0xce, 0x46, 0x41, 0x8b, 0x9b, 0xd3, 0x11, 0x7b, 0x98, 0x1d, 0x4b, 0xd0, + 0xae, 0x7a, 0x99, 0x0d, 0xe9, 0x12, 0xf9, 0xd0, 0x60, 0xd6, 0xcb, 0x53, 0x1a, 0x42, 0xd2, 0x2e, + 0x39, 0x4a, 0xc2, 0x9e, 0x81, 0x80, 0x4b, 0xf1, 0x60, +}; + +const unsigned char test_ec_secp256r1_pub[] = { + 0x04, 0x77, 0x72, 0x65, 0x6f, 0x81, 0x4b, 0x39, 0x92, 0x79, 0xd5, 0xe1, 0xf1, 0x78, 0x1f, 0xac, + 0x6f, 0x09, 0x9a, 0x3c, 0x5c, 0xa1, 0xb0, 0xe3, 0x53, 0x51, 0x83, 0x4b, 0x08, 0xb6, 0x5e, 0x0b, + 0x57, 0x25, 0x90, 0xcd, 0xaf, 0x8f, 0x76, 0x93, 0x61, 0xbc, 0xf3, 0x4a, 0xcf, 0xc1, 0x1e, 0x5e, + 0x07, 0x4e, 0x84, 0x26, 0xbd, 0xde, 0x04, 0xbe, 0x6e, 0x65, 0x39, 0x45, 0x44, 0x96, 0x17, 0xde, + 0x45, +}; + +const unsigned char test_ec_secp384r1_pub[] = { + 0x04, 0xd9, 0xc6, 0x62, 0xb5, 0x0b, 0xa2, 0x9c, 0xa4, 0x79, 0x90, 0x45, 0x0e, 0x04, 0x3a, 0xea, + 0xf4, 0xf0, 0xc6, 0x9b, 0x15, 0x67, 0x6d, 0x11, 0x2f, 0x62, 0x2a, 0x71, 0xc9, 0x30, 0x59, 0xaf, + 0x99, 0x96, 0x91, 0xc5, 0x68, 0x0d, 0x2b, 0x44, 0xd1, 0x11, 0x57, 0x9d, 0xb1, 0x2f, 0x4a, 0x41, + 0x3a, 0x2e, 0xd5, 0xc4, 0x5f, 0xcf, 0xb6, 0x7b, 0x5b, 0x63, 0xe0, 0x0b, 0x91, 0xeb, 0xe5, 0x9d, + 0x09, 0xa6, 0xb1, 0xac, 0x2c, 0x0c, 0x42, 0x82, 0xaa, 0x12, 0x31, 0x7e, 0xd5, 0x91, 0x4f, 0x99, + 0x9b, 0xc4, 0x88, 0xbb, 0x13, 0x2e, 0x83, 0x42, 0xcc, 0x36, 0xf2, 0xca, 0x5e, 0x33, 0x79, 0xc7, + 0x47, +}; + +const unsigned char test_ec_secp521r1_pub[] = { + 0x04, 0x00, 0x1d, 0xe1, 0x42, 0xd5, 0x4f, 0x69, 0xeb, 0x03, 0x8e, 0xe4, 0xb7, 0xaf, 0x9d, 0x3c, + 0xa0, 0x77, 0x36, 0xfd, 0x9c, 0xf7, 0x19, 0xeb, 0x35, 0x4d, 0x69, 0x87, 0x9e, 0xe7, 0xf3, 0xc1, + 0x36, 0xfb, 0x0f, 0xbf, 0x9f, 0x08, 0xf8, 0x6b, 0xe5, 0xfa, 0x12, 0x8e, 0xc1, 0xa0, 0x51, 0xd3, + 0xe6, 0xc6, 0x43, 0xe8, 0x5a, 0xda, 0x8f, 0xfa, 0xcf, 0x36, 0x63, 0xc2, 0x60, 0xbd, 0x2c, 0x84, + 0x4b, 0x6f, 0x56, 0x00, 0xce, 0xe8, 0xe4, 0x8a, 0x9e, 0x65, 0xd0, 0x9c, 0xad, 0xd8, 0x9f, 0x23, + 0x5d, 0xee, 0x05, 0xf3, 0xb8, 0xa6, 0x46, 0xbe, 0x71, 0x5f, 0x1f, 0x67, 0xd5, 0xb4, 0x34, 0xe0, + 0xff, 0x23, 0xa1, 0xfc, 0x07, 0xef, 0x77, 0x40, 0x19, 0x3e, 0x40, 0xee, 0xff, 0x6f, 0x3b, 0xcd, + 0xfd, 0x76, 0x5a, 0xa9, 0x15, 0x50, 0x33, 0x52, 0x4f, 0xe4, 0xf2, 0x05, 0xf5, 0x44, 0x4e, 0x29, + 0x2c, 0x4c, 0x2f, 0x6a, 0xc1, +}; + +const unsigned char test_ec_bp160r1_priv[] = { + 0x69, 0x50, 0x2c, 0x4f, 0xda, 0xf4, 0x8d, 0x4f, 0xa6, 0x17, 0xbd, 0xd2, 0x44, 0x98, 0xb0, 0x40, + 0x6d, 0x0e, 0xea, 0xac, +}; + +const unsigned char test_ec_bp192r1_priv[] = { + 0x16, 0x88, 0xa2, 0xc5, 0xfb, 0xf4, 0xa3, 0xc8, 0x51, 0xd7, 0x6a, 0x98, 0xc3, 0xec, 0x88, 0xf4, + 0x45, 0xa9, 0x79, 0x96, 0x28, 0x3d, 0xb5, 0x9f, +}; + +const unsigned char test_ec_bp224r1_priv[] = { + 0xa6, 0x98, 0x35, 0xda, 0xfe, 0xb5, 0xda, 0x5a, 0xb8, 0x9c, 0x59, 0x86, 0x0d, 0xdd, 0xeb, 0xcf, + 0xd8, 0x0b, 0x52, 0x9a, 0x99, 0xf5, 0x9b, 0x88, 0x08, 0x82, 0x92, 0x3c, +}; + +const unsigned char test_ec_bp256r1_priv[] = { + 0x21, 0x61, 0xd6, 0xf2, 0xdb, 0x76, 0x52, 0x6f, 0xa6, 0x2c, 0x16, 0xf3, 0x56, 0xa8, 0x0f, 0x01, + 0xf3, 0x2f, 0x77, 0x67, 0x84, 0xb3, 0x6a, 0xa9, 0x97, 0x99, 0xa8, 0xb7, 0x66, 0x20, 0x80, 0xff, +}; + +const unsigned char test_ec_bp320r1_priv[] = { + 0x61, 0xb8, 0xda, 0xa7, 0xa6, 0xe5, 0xaa, 0x9f, 0xcc, 0xf1, 0xef, 0x50, 0x42, 0x20, 0xb2, 0xe5, + 0xa5, 0xb8, 0xc6, 0xdc, 0x74, 0x75, 0xd1, 0x6d, 0x31, 0x72, 0xd7, 0xdb, 0x0b, 0x27, 0x78, 0x41, + 0x4e, 0x4f, 0x6e, 0x8f, 0xa2, 0x03, 0x2e, 0xad, +}; + +const unsigned char test_ec_bp384r1_priv[] = { + 0x3d, 0xd9, 0x2e, 0x75, 0x0d, 0x90, 0xd7, 0xd3, 0x9f, 0xc1, 0x88, 0x5c, 0xd8, 0xad, 0x12, 0xea, + 0x94, 0x41, 0xf2, 0x2b, 0x93, 0x34, 0xb4, 0xd9, 0x65, 0x20, 0x2a, 0xdb, 0x14, 0x48, 0xce, 0x24, + 0xc5, 0x80, 0x8a, 0x85, 0xdd, 0x9a, 0xfc, 0x22, 0x9a, 0xf0, 0xa3, 0x12, 0x4f, 0x75, 0x5b, 0xcb, +}; + +const unsigned char test_ec_bp512r1_priv[] = { + 0x37, 0x2c, 0x97, 0x78, 0xf6, 0x9f, 0x72, 0x6c, 0xbc, 0xa3, 0xf4, 0xa2, 0x68, 0xf1, 0x6b, 0x4d, + 0x61, 0x7d, 0x10, 0x28, 0x0d, 0x79, 0xa6, 0xa0, 0x29, 0xcd, 0x51, 0x87, 0x9f, 0xe1, 0x01, 0x29, + 0x34, 0xdf, 0xe5, 0x39, 0x54, 0x55, 0x33, 0x7d, 0xf6, 0x90, 0x6d, 0xc7, 0xd6, 0xd2, 0xee, 0xa4, + 0xdb, 0xb2, 0x06, 0x5c, 0x02, 0x28, 0xf7, 0x3b, 0x3e, 0xd7, 0x16, 0x48, 0x0e, 0x7d, 0x71, 0xd2, +}; + +const unsigned char test_ec_bp160r1_pub[] = { + 0x04, 0xd4, 0xb9, 0x18, 0x68, 0x16, 0x35, 0x8e, 0x2f, 0x9c, 0x59, 0xcf, 0x70, 0x74, 0x8c, 0xb7, + 0x06, 0x41, 0xb2, 0x2f, 0xba, 0xb6, 0x54, 0x73, 0xdb, 0x4b, 0x4e, 0x22, 0xa3, 0x61, 0xed, 0x7e, + 0x3d, 0xe7, 0xe8, 0xa8, 0xdd, 0xc4, 0x13, 0x0c, 0x5c, +}; + +const unsigned char test_ec_bp192r1_pub[] = { + 0x04, 0x3f, 0xdd, 0x16, 0x8c, 0x17, 0x9f, 0xf5, 0x36, 0x3d, 0xd7, 0x1d, 0xcd, 0x58, 0xde, 0x96, + 0x17, 0xca, 0xad, 0x79, 0x1a, 0xe0, 0xc3, 0x73, 0x28, 0xbe, 0x9c, 0xa0, 0xbf, 0xc7, 0x9c, 0xeb, + 0xab, 0xf6, 0xa9, 0x5d, 0x1c, 0x52, 0xdf, 0x5b, 0x5f, 0x3c, 0x8b, 0x1a, 0x24, 0x41, 0xcf, 0x6c, + 0x88, +}; + +const unsigned char test_ec_bp224r1_pub[] = { + 0x04, 0x5f, 0xbe, 0xa3, 0x78, 0xfc, 0x85, 0x83, 0xb3, 0x83, 0x7e, 0x3f, 0x21, 0xa4, 0x57, 0xc3, + 0x1e, 0xaf, 0x20, 0xa5, 0x4e, 0x18, 0xeb, 0x11, 0xd1, 0x04, 0xb3, 0xad, 0xc4, 0x7f, 0x9d, 0x1c, + 0x97, 0xeb, 0x9e, 0xa4, 0xac, 0x21, 0x74, 0x0d, 0x70, 0xd8, 0x85, 0x14, 0xb9, 0x8b, 0xf0, 0xbc, + 0x31, 0xad, 0xda, 0xc1, 0xd1, 0x9c, 0x4a, 0xb3, 0xcc, +}; + +const unsigned char test_ec_bp256r1_pub[] = { + 0x04, 0x76, 0x8c, 0x8c, 0xae, 0x4a, 0xbc, 0xa6, 0x30, 0x6d, 0xb0, 0xed, 0x81, 0xb0, 0xc4, 0xa6, + 0x21, 0x5c, 0x37, 0x80, 0x66, 0xec, 0x6d, 0x61, 0x6c, 0x14, 0x6e, 0x13, 0xf1, 0xc7, 0xdf, 0x80, + 0x9b, 0x96, 0xab, 0x69, 0x11, 0xc2, 0x7d, 0x8a, 0x02, 0x33, 0x9f, 0x09, 0x26, 0x84, 0x0e, 0x55, + 0x23, 0x6d, 0x3d, 0x1e, 0xfb, 0xe2, 0x66, 0x9d, 0x09, 0x0e, 0x4c, 0x4c, 0x66, 0x0f, 0xad, 0xa9, + 0x1d, +}; + +const unsigned char test_ec_bp320r1_pub[] = { + 0x04, 0x9c, 0xae, 0xd8, 0xfb, 0x47, 0x42, 0x95, 0x6c, 0xc2, 0xad, 0x12, 0xa9, 0xa1, 0xc9, 0x95, + 0xe2, 0x17, 0x59, 0xef, 0x26, 0xa0, 0x7b, 0xc2, 0x05, 0x41, 0x36, 0xd3, 0xd2, 0xf2, 0x8b, 0xb3, + 0x31, 0xa7, 0x0e, 0x26, 0xc4, 0xc6, 0x87, 0x27, 0x5a, 0xb1, 0xf4, 0x34, 0xbe, 0x78, 0x71, 0xe1, + 0x15, 0xd2, 0x35, 0x0c, 0x0c, 0x5f, 0x61, 0xd4, 0xd0, 0x6d, 0x2b, 0xcd, 0xb6, 0x7f, 0x5c, 0xb6, + 0x3f, 0xdb, 0x79, 0x4e, 0x59, 0x47, 0xc8, 0x7d, 0xc6, 0x84, 0x9a, 0x58, 0x69, 0x4e, 0x37, 0xe6, + 0xcd, +}; + +const unsigned char test_ec_bp384r1_pub[] = { + 0x04, 0x71, 0x9f, 0x9d, 0x09, 0x3a, 0x62, 0x7e, 0x0d, 0x35, 0x03, 0x85, 0xc6, 0x61, 0xce, 0xbf, + 0x00, 0xc6, 0x19, 0x23, 0x56, 0x6f, 0xe9, 0x00, 0x6a, 0x31, 0x07, 0xaf, 0x1d, 0x87, 0x1b, 0xc6, + 0xbb, 0x68, 0x98, 0x5f, 0xd7, 0x22, 0xea, 0x32, 0xbe, 0x31, 0x6f, 0x8e, 0x78, 0x3b, 0x7c, 0xd1, + 0x95, 0x77, 0x85, 0xf6, 0x6c, 0xfc, 0x0c, 0xb1, 0x95, 0xdd, 0x5c, 0x99, 0xa8, 0xe7, 0xab, 0xaa, + 0x84, 0x85, 0x53, 0xa5, 0x84, 0xdf, 0xd2, 0xb4, 0x8e, 0x76, 0xd4, 0x45, 0xfe, 0x00, 0xdd, 0x8b, + 0xe5, 0x90, 0x96, 0xd8, 0x77, 0xd4, 0x69, 0x6d, 0x23, 0xb4, 0xbc, 0x8d, 0xb1, 0x47, 0x24, 0xe6, + 0x6a, +}; + +const unsigned char test_ec_bp512r1_pub[] = { + 0x04, 0x38, 0xb7, 0xec, 0x92, 0xb6, 0x1c, 0x5c, 0x6c, 0x7f, 0xbc, 0x28, 0xa4, 0xec, 0x75, 0x9d, + 0x48, 0xfc, 0xd4, 0xe2, 0xe3, 0x74, 0xde, 0xfd, 0x5c, 0x49, 0x68, 0xa5, 0x4d, 0xbe, 0xf7, 0x51, + 0x0e, 0x51, 0x78, 0x86, 0xfb, 0xfc, 0x38, 0xea, 0x39, 0xaa, 0x52, 0x93, 0x59, 0xd7, 0x0a, 0x71, + 0x56, 0xc3, 0x5d, 0x3c, 0xba, 0xc7, 0xce, 0x77, 0x6b, 0xdb, 0x25, 0x1d, 0xd6, 0x4b, 0xce, 0x71, + 0x23, 0x44, 0x24, 0xee, 0x70, 0x49, 0xee, 0xd0, 0x72, 0xf0, 0xdb, 0xc4, 0xd7, 0x99, 0x96, 0xe1, + 0x75, 0xd5, 0x57, 0xe2, 0x63, 0x76, 0x3a, 0xe9, 0x70, 0x95, 0xc0, 0x81, 0xe7, 0x3e, 0x7d, 0xb2, + 0xe3, 0x8a, 0xdc, 0x3d, 0x4c, 0x9a, 0x04, 0x87, 0xb1, 0xed, 0xe8, 0x76, 0xdc, 0x1f, 0xca, 0x61, + 0xc9, 0x02, 0xe9, 0xa1, 0xd8, 0x72, 0x2b, 0x86, 0x12, 0x92, 0x8f, 0x18, 0xa2, 0x48, 0x45, 0x59, + 0x1a, +}; + +const unsigned char test_ec_curve255_priv[] = { + 0x70, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, 0x72, 0x51, 0xb2, 0x66, 0x45, + 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x6a, +}; + +const unsigned char test_ec_curve448_priv[] = { + 0xe4, 0xe4, 0x9f, 0x52, 0x68, 0x6f, 0x9e, 0xe3, 0xb6, 0x38, 0x52, 0x8f, 0x72, 0x1f, 0x15, 0x96, + 0x19, 0x6f, 0xfd, 0x0a, 0x1c, 0xdd, 0xb6, 0x4c, 0x3f, 0x21, 0x6f, 0x06, 0x54, 0x18, 0x05, 0xcf, + 0xeb, 0x1a, 0x28, 0x6d, 0xc7, 0x80, 0x18, 0x09, 0x5c, 0xdf, 0xec, 0x05, 0x0e, 0x80, 0x07, 0xb5, + 0xf4, 0x90, 0x89, 0x62, 0xba, 0x20, 0xd6, 0xc1, +}; + +const unsigned char test_ec_curve255_pub[] = { + 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, + 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a, +}; + +const unsigned char test_ec_curve448_pub[] = { + 0xc0, 0xd3, 0xa5, 0xa2, 0xb4, 0x16, 0xa5, 0x73, 0xdc, 0x99, 0x09, 0xf9, 0x2f, 0x13, 0x4a, 0xc0, + 0x13, 0x23, 0xab, 0x8f, 0x8e, 0x36, 0x80, 0x4e, 0x57, 0x85, 0x88, 0xba, 0x2d, 0x09, 0xfe, 0x7c, + 0x3e, 0x73, 0x7f, 0x77, 0x1c, 0xa1, 0x12, 0x82, 0x5b, 0x54, 0x8a, 0x0f, 0xfd, 0xed, 0x6d, 0x6a, + 0x2f, 0xd0, 0x9a, 0x3e, 0x77, 0xde, 0xc3, 0x0e, +}; + const unsigned char test_rsa_1024_priv[] = { 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05, 0x7d, 0x39, 0x6e, 0xe8, 0x4f, 0xb7, 0x5f, 0xdb, 0xb5, 0xc2, 0xb1, 0x3c, 0x7f, 0xe5, 0xa6, 0x54, 0xaa, 0x8a, 0xa2, @@ -45,18 +277,6 @@ const unsigned char test_rsa_1024_priv[] = { 0x2b, 0x24, }; -const unsigned char test_rsa_1024_pub[] = { - 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05, 0x7d, 0x39, 0x6e, 0xe8, 0x4f, 0xb7, 0x5f, - 0xdb, 0xb5, 0xc2, 0xb1, 0x3c, 0x7f, 0xe5, 0xa6, 0x54, 0xaa, 0x8a, 0xa2, 0x47, 0x0b, 0x54, 0x1e, - 0xe1, 0xfe, 0xb0, 0xb1, 0x2d, 0x25, 0xc7, 0x97, 0x11, 0x53, 0x12, 0x49, 0xe1, 0x12, 0x96, 0x28, - 0x04, 0x2d, 0xbb, 0xb6, 0xc1, 0x20, 0xd1, 0x44, 0x35, 0x24, 0xef, 0x4c, 0x0e, 0x6e, 0x1d, 0x89, - 0x56, 0xee, 0xb2, 0x07, 0x7a, 0xf1, 0x23, 0x49, 0xdd, 0xee, 0xe5, 0x44, 0x83, 0xbc, 0x06, 0xc2, - 0xc6, 0x19, 0x48, 0xcd, 0x02, 0xb2, 0x02, 0xe7, 0x96, 0xae, 0xbd, 0x94, 0xd3, 0xa7, 0xcb, 0xf8, - 0x59, 0xc2, 0xc1, 0x81, 0x9c, 0x32, 0x4c, 0xb8, 0x2b, 0x9c, 0xd3, 0x4e, 0xde, 0x26, 0x3a, 0x2a, - 0xbf, 0xfe, 0x47, 0x33, 0xf0, 0x77, 0x86, 0x9e, 0x86, 0x60, 0xf7, 0xd6, 0x83, 0x4d, 0xa5, 0x3d, - 0x69, 0x0e, 0xf7, 0x98, 0x5f, 0x6b, 0xc3, 0x02, 0x03, 0x01, 0x00, 0x01, -}; - const unsigned char test_rsa_1026_priv[] = { 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x02, 0xd0, 0x96, 0x61, 0xfc, 0x74, 0x22, 0x4b, 0xa7, 0xbe, 0x79, 0x07, 0xab, 0xef, 0x4f, 0x5e, 0x8b, 0xcc, 0x26, 0x4a, 0x80, 0x2c, @@ -99,18 +319,6 @@ const unsigned char test_rsa_1026_priv[] = { 0x92, 0x16, }; -const unsigned char test_rsa_1026_pub[] = { - 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x02, 0xd0, 0x96, 0x61, 0xfc, 0x74, 0x22, 0x4b, 0xa7, 0xbe, - 0x79, 0x07, 0xab, 0xef, 0x4f, 0x5e, 0x8b, 0xcc, 0x26, 0x4a, 0x80, 0x2c, 0x97, 0x8f, 0x7e, 0xaa, - 0x58, 0x55, 0xad, 0xa0, 0x54, 0x36, 0xd7, 0x5d, 0xb7, 0x68, 0xd2, 0x0f, 0x68, 0x59, 0x5d, 0xbc, - 0xc3, 0xd7, 0x25, 0xb1, 0x38, 0xe8, 0x0b, 0x24, 0x7e, 0x44, 0xa4, 0x16, 0x3a, 0x05, 0x42, 0xfa, - 0xb6, 0x12, 0xac, 0xbb, 0xde, 0x45, 0xf2, 0xe9, 0x38, 0x94, 0xaa, 0x25, 0x3b, 0xdd, 0xef, 0x6a, - 0x7b, 0xec, 0xdc, 0x9c, 0xc2, 0x9a, 0x99, 0xba, 0xcf, 0x48, 0xdc, 0x6e, 0x38, 0xdb, 0x7a, 0x33, - 0xe9, 0xac, 0x92, 0x4c, 0x52, 0x0f, 0xc6, 0xbe, 0x7d, 0x6e, 0x56, 0x46, 0xc1, 0xd6, 0x7f, 0xb8, - 0xb2, 0xb9, 0x7a, 0xc6, 0x0b, 0xee, 0xcc, 0x3b, 0xb8, 0xe7, 0x5b, 0xed, 0x83, 0x15, 0xaa, 0x3f, - 0xe4, 0x6f, 0x74, 0x8a, 0x66, 0xd6, 0xef, 0x02, 0x03, 0x01, 0x00, 0x01, -}; - const unsigned char test_rsa_1028_priv[] = { 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x0e, 0x62, 0xa7, 0x6f, 0x0e, 0x0b, 0x59, 0x68, 0x3a, 0x7e, 0xbf, 0x7c, 0xbf, 0xd3, 0x7b, 0x1d, 0x17, 0x81, 0xd8, 0xf1, 0xb9, 0x00, @@ -153,18 +361,6 @@ const unsigned char test_rsa_1028_priv[] = { 0x54, 0x8a, }; -const unsigned char test_rsa_1028_pub[] = { - 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x0e, 0x62, 0xa7, 0x6f, 0x0e, 0x0b, 0x59, 0x68, 0x3a, 0x7e, - 0xbf, 0x7c, 0xbf, 0xd3, 0x7b, 0x1d, 0x17, 0x81, 0xd8, 0xf1, 0xb9, 0x00, 0x60, 0x4b, 0x50, 0x7f, - 0x0f, 0x04, 0xc7, 0x2a, 0x3d, 0x34, 0x0d, 0x06, 0x7b, 0xcd, 0x53, 0xbe, 0xa3, 0xca, 0xff, 0x4e, - 0x4a, 0xe6, 0x94, 0xf0, 0xb6, 0xd8, 0xf5, 0x91, 0xa4, 0x16, 0x7f, 0xbf, 0x7f, 0x37, 0x2a, 0xb5, - 0x7e, 0x83, 0xa6, 0x9a, 0x3f, 0x26, 0xf4, 0x47, 0xbc, 0xf5, 0x82, 0xbc, 0x96, 0x21, 0xa3, 0x0a, - 0x3b, 0x44, 0xd6, 0xb4, 0x3e, 0x98, 0x6d, 0x1a, 0x86, 0x7b, 0x07, 0x48, 0x9e, 0x4f, 0x9b, 0xfc, - 0xad, 0xaa, 0x82, 0xa2, 0x78, 0x2d, 0xc2, 0x72, 0x9a, 0x63, 0x1f, 0xb1, 0xfb, 0x9f, 0xfb, 0x79, - 0x4b, 0x4e, 0x53, 0xc7, 0x62, 0x39, 0xe0, 0x4d, 0x4a, 0x8f, 0x80, 0x35, 0x25, 0x88, 0xdb, 0x29, - 0x46, 0x2d, 0xde, 0x18, 0x23, 0x7c, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, -}; - const unsigned char test_rsa_1030_priv[] = { 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x2b, 0x7c, 0xd1, 0x97, 0xf5, 0x79, 0x6d, 0x1f, 0x8e, 0x57, 0x6b, 0x2b, 0x37, 0x72, 0x3f, 0xd9, 0x21, 0x08, 0x14, 0xef, 0x1c, 0x19, @@ -207,16 +403,63 @@ const unsigned char test_rsa_1030_priv[] = { 0x35, 0xa1, 0x7c, }; -const unsigned char test_rsa_1030_pub[] = { - 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x2b, 0x7c, 0xd1, 0x97, 0xf5, 0x79, 0x6d, 0x1f, 0x8e, 0x57, - 0x6b, 0x2b, 0x37, 0x72, 0x3f, 0xd9, 0x21, 0x08, 0x14, 0xef, 0x1c, 0x19, 0x95, 0xf9, 0x89, 0x9d, - 0x50, 0x05, 0x8f, 0x37, 0x9d, 0x23, 0x9c, 0x66, 0x87, 0x8e, 0x92, 0x2f, 0x34, 0xc6, 0xae, 0x36, - 0x72, 0xc8, 0x59, 0x8f, 0xcd, 0x5d, 0x47, 0xb7, 0x64, 0xd2, 0xec, 0x15, 0x6e, 0x13, 0x4d, 0x03, - 0xcf, 0x6a, 0x94, 0xd3, 0x8d, 0x2e, 0xa8, 0xbc, 0x76, 0xdb, 0xbc, 0x60, 0xc4, 0xb9, 0x74, 0x21, - 0x90, 0x90, 0xea, 0xf2, 0x87, 0x49, 0x7d, 0x7d, 0xcf, 0x7f, 0x11, 0x9c, 0xfa, 0x86, 0x74, 0x96, - 0xf7, 0xe9, 0x1c, 0x12, 0xb5, 0xd5, 0x52, 0xe1, 0xd1, 0x46, 0x1a, 0x80, 0xdb, 0xe9, 0xa5, 0x9d, - 0xb3, 0xb0, 0x16, 0xc6, 0xc0, 0x14, 0x1c, 0x3b, 0x2a, 0x0e, 0x22, 0x60, 0x89, 0xb8, 0x55, 0xcb, - 0x88, 0xef, 0x65, 0x64, 0x08, 0xbd, 0x89, 0x02, 0x03, 0x01, 0x00, 0x01, +const unsigned char test_rsa_1536_priv[] = { + 0x30, 0x82, 0x03, 0x7b, 0x02, 0x01, 0x00, 0x02, 0x81, 0xc1, 0x00, 0xc8, 0x70, 0xfe, 0xb6, 0xca, + 0x6b, 0x1d, 0x2b, 0xd9, 0xf2, 0xdd, 0x99, 0xe2, 0x0f, 0x1f, 0xe2, 0xd7, 0xe5, 0x19, 0x2d, 0xe6, + 0x62, 0x22, 0x9d, 0xbe, 0x16, 0x2b, 0xd1, 0xba, 0x66, 0x33, 0x6a, 0x71, 0x82, 0x90, 0x3c, 0xa0, + 0xb7, 0x27, 0x96, 0xcd, 0x44, 0x1c, 0x83, 0xd2, 0x4b, 0xcd, 0xc3, 0xe9, 0xa2, 0xf5, 0xe4, 0x39, + 0x9c, 0x8a, 0x04, 0x3f, 0x1c, 0x3d, 0xdf, 0x04, 0x75, 0x4a, 0x66, 0xd4, 0xcf, 0xe7, 0xb3, 0x67, + 0x1a, 0x37, 0xdd, 0x31, 0xa9, 0xb4, 0xc1, 0x3b, 0xfe, 0x06, 0xee, 0x90, 0xf9, 0xd9, 0x4d, 0xda, + 0xa0, 0x6d, 0xe6, 0x7a, 0x52, 0xac, 0x86, 0x3e, 0x68, 0xf7, 0x56, 0x73, 0x6c, 0xeb, 0x01, 0x44, + 0x05, 0xa6, 0x16, 0x05, 0x79, 0x64, 0x0f, 0x83, 0x1d, 0xdd, 0xcc, 0xc3, 0x4a, 0xd0, 0xb0, 0x50, + 0x70, 0xe3, 0xf9, 0x95, 0x4a, 0x58, 0xd1, 0x81, 0x58, 0x13, 0xe1, 0xb8, 0x3b, 0xca, 0xdb, 0xa8, + 0x14, 0x78, 0x9c, 0x87, 0xf1, 0xef, 0x2b, 0xa5, 0xd7, 0x38, 0xb7, 0x93, 0xec, 0x45, 0x6a, 0x67, + 0x36, 0x0e, 0xea, 0x1b, 0x5f, 0xaf, 0x1c, 0x7c, 0xc7, 0xbf, 0x24, 0xf3, 0xb2, 0xa9, 0xd0, 0xf8, + 0x95, 0x8b, 0x10, 0x96, 0xe0, 0xf0, 0xc3, 0x35, 0xf8, 0x88, 0x8d, 0x0c, 0x63, 0xa5, 0x1c, 0x3c, + 0x03, 0x37, 0x21, 0x4f, 0xa3, 0xf5, 0xef, 0xdf, 0x6d, 0xcc, 0x35, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0xc0, 0x6d, 0x2d, 0x67, 0x00, 0x47, 0x97, 0x3a, 0x87, 0x75, 0x2a, 0x9d, 0x5b, 0xc1, + 0x4f, 0x3d, 0xae, 0x00, 0xac, 0xb0, 0x1f, 0x59, 0x3a, 0xa0, 0xe2, 0x4c, 0xf4, 0xa4, 0x9f, 0x93, + 0x29, 0x31, 0xde, 0x4b, 0xbf, 0xb3, 0x32, 0xe2, 0xd3, 0x80, 0x83, 0xda, 0x80, 0xbc, 0x0b, 0x6d, + 0x53, 0x8e, 0xdb, 0xa4, 0x79, 0xf7, 0xf7, 0x7d, 0x0d, 0xef, 0xfb, 0x4a, 0x28, 0xe6, 0xe6, 0x7f, + 0xf6, 0x27, 0x35, 0x85, 0xbb, 0x4c, 0xd8, 0x62, 0x53, 0x5c, 0x94, 0x66, 0x05, 0xab, 0x08, 0x09, + 0xd6, 0x5f, 0x0e, 0x38, 0xf7, 0x6e, 0x4e, 0xc2, 0xc3, 0xd9, 0xb8, 0xcd, 0x6e, 0x14, 0xbc, 0xf6, + 0x67, 0x94, 0x38, 0x92, 0xcd, 0x4b, 0x34, 0xcc, 0x64, 0x20, 0xa4, 0x39, 0xab, 0xbf, 0x3d, 0x7d, + 0x35, 0xef, 0x73, 0x97, 0x6d, 0xd6, 0xf9, 0xcb, 0xde, 0x35, 0xa5, 0x1f, 0xa5, 0x21, 0x3f, 0x01, + 0x07, 0xf8, 0x3e, 0x34, 0x25, 0x83, 0x5d, 0x16, 0xd3, 0xc9, 0x14, 0x6f, 0xc9, 0xe3, 0x6c, 0xe7, + 0x5a, 0x09, 0xbb, 0x66, 0xcd, 0xff, 0x21, 0xdd, 0x5a, 0x77, 0x68, 0x99, 0xf1, 0xcb, 0x07, 0xe2, + 0x82, 0xcc, 0xa2, 0x7b, 0xe4, 0x65, 0x10, 0xe9, 0xc7, 0x99, 0xf0, 0xd8, 0xdb, 0x27, 0x5a, 0x6b, + 0xe0, 0x85, 0xd9, 0xf3, 0xf8, 0x03, 0x21, 0x8e, 0xe3, 0x38, 0x42, 0x65, 0xbf, 0xb1, 0xa3, 0x64, + 0x0e, 0x8c, 0xa1, 0x02, 0x61, 0x00, 0xe6, 0x84, 0x8c, 0x31, 0xd4, 0x66, 0xff, 0xfe, 0xfc, 0x54, + 0x7e, 0x3a, 0x3b, 0x0d, 0x37, 0x85, 0xde, 0x6f, 0x78, 0xb0, 0xdd, 0x12, 0x61, 0x08, 0x43, 0x51, + 0x2e, 0x49, 0x56, 0x11, 0xa0, 0x67, 0x55, 0x09, 0xb1, 0x65, 0x0b, 0x27, 0x41, 0x50, 0x09, 0x83, + 0x8d, 0xd8, 0xe6, 0x8e, 0xec, 0x6e, 0x75, 0x30, 0x55, 0x3b, 0x63, 0x7d, 0x60, 0x24, 0x24, 0x64, + 0x3b, 0x33, 0xe8, 0xbc, 0x5b, 0x76, 0x2e, 0x17, 0x99, 0xbc, 0x79, 0xd5, 0x6b, 0x13, 0x25, 0x1d, + 0x36, 0xd4, 0xf2, 0x01, 0xda, 0x21, 0x82, 0x41, 0x6c, 0xe1, 0x35, 0x74, 0xe8, 0x82, 0x78, 0xff, + 0x04, 0x46, 0x7a, 0xd6, 0x02, 0xd9, 0x02, 0x61, 0x00, 0xde, 0x99, 0x4f, 0xdf, 0x18, 0x1f, 0x02, + 0xbe, 0x2b, 0xf9, 0xe5, 0xf5, 0xe4, 0xe5, 0x17, 0xa9, 0x49, 0x93, 0xb8, 0x27, 0xd1, 0xea, 0xf6, + 0x09, 0x03, 0x3e, 0x3a, 0x6a, 0x6f, 0x23, 0x96, 0xae, 0x7c, 0x44, 0xe9, 0xeb, 0x59, 0x4c, 0xf1, + 0x04, 0x4c, 0xb3, 0xad, 0x32, 0xea, 0x25, 0x8f, 0x0c, 0x82, 0x96, 0x3b, 0x27, 0xbb, 0x65, 0x0e, + 0xd2, 0x00, 0xcd, 0xe8, 0x2c, 0xb9, 0x93, 0x37, 0x4b, 0xe3, 0x4b, 0xe5, 0xb1, 0xc7, 0xea, 0xd5, + 0x44, 0x6a, 0x2b, 0x82, 0xa4, 0x48, 0x6e, 0x8c, 0x18, 0x10, 0xa0, 0xb0, 0x15, 0x51, 0x60, 0x9f, + 0xb0, 0x84, 0x1d, 0x47, 0x4b, 0xad, 0xa8, 0x02, 0xbd, 0x02, 0x60, 0x76, 0xdd, 0xae, 0x75, 0x1b, + 0x73, 0xa9, 0x59, 0xd0, 0xbf, 0xb8, 0xff, 0x49, 0xe7, 0xfc, 0xd3, 0x78, 0xe9, 0xbe, 0x30, 0x65, + 0x2e, 0xce, 0xfe, 0x35, 0xc8, 0x2c, 0xb8, 0x00, 0x3b, 0xc2, 0x9c, 0xc6, 0x0a, 0xe3, 0x80, 0x99, + 0x09, 0xba, 0xf2, 0x0c, 0x95, 0xdb, 0x95, 0x16, 0xfe, 0x68, 0x08, 0x65, 0x41, 0x71, 0x11, 0xd8, + 0xb1, 0x93, 0xdb, 0xcf, 0x30, 0x28, 0x1f, 0x12, 0x49, 0xde, 0x57, 0xc8, 0x58, 0xbf, 0x1b, 0xa3, + 0x2f, 0x5b, 0xb1, 0x59, 0x98, 0x00, 0xe8, 0x39, 0x8a, 0x9e, 0xf2, 0x5c, 0x7a, 0x64, 0x2c, 0x95, + 0x26, 0x1d, 0xa6, 0xf9, 0xc1, 0x76, 0x70, 0xe9, 0x72, 0x65, 0xb1, 0x02, 0x60, 0x73, 0x24, 0x82, + 0xb8, 0x37, 0xd5, 0xf2, 0xa9, 0x44, 0x3e, 0x23, 0xc1, 0xaa, 0x01, 0x06, 0xd8, 0x3e, 0x82, 0xf6, + 0xc3, 0x42, 0x46, 0x73, 0xb5, 0xfd, 0xc3, 0x76, 0x9c, 0x0f, 0x99, 0x2d, 0x1c, 0x5c, 0x93, 0x99, + 0x1c, 0x70, 0x38, 0xe8, 0x82, 0xfc, 0xda, 0x04, 0x41, 0x4d, 0xf4, 0xd7, 0xa5, 0xf4, 0xf6, 0x98, + 0xea, 0xd8, 0x78, 0x51, 0xce, 0x37, 0x34, 0x4b, 0x60, 0xb7, 0x2d, 0x7b, 0x70, 0xf9, 0xc6, 0x0c, + 0xae, 0x85, 0x66, 0xe7, 0xa2, 0x57, 0xf8, 0xe1, 0xbe, 0xf0, 0xe8, 0x9d, 0xf6, 0xe4, 0xc2, 0xf9, + 0xd2, 0x4d, 0x21, 0xd9, 0xf8, 0x88, 0x9e, 0x4c, 0x7e, 0xcc, 0xf9, 0x17, 0x51, 0x02, 0x60, 0x09, + 0x05, 0x0d, 0x94, 0x49, 0x3d, 0xa8, 0xf0, 0x0a, 0x4d, 0xdb, 0xe9, 0xc8, 0x00, 0xaf, 0xe3, 0xd4, + 0x4b, 0x43, 0xf7, 0x8a, 0x48, 0x94, 0x1a, 0x79, 0xb2, 0x81, 0x4a, 0x1f, 0x0b, 0x81, 0xa1, 0x8a, + 0x8b, 0x23, 0x47, 0x64, 0x2a, 0x03, 0xb2, 0x79, 0x98, 0xf5, 0xa1, 0x8d, 0xe9, 0xab, 0xc9, 0xae, + 0x0e, 0x54, 0xab, 0x82, 0x94, 0xfe, 0xac, 0x66, 0xdc, 0x87, 0xe8, 0x54, 0xcc, 0xe6, 0xf7, 0x27, + 0x8a, 0xc2, 0x71, 0x0c, 0xb5, 0x87, 0x8b, 0x59, 0x2f, 0xfe, 0xb1, 0xf4, 0xf0, 0xa1, 0x85, 0x3e, + 0x4e, 0x8d, 0x1d, 0x05, 0x61, 0xb6, 0xef, 0xcc, 0x83, 0x1a, 0x29, 0x6c, 0xf7, 0xee, 0xaf, }; const unsigned char test_rsa_2048_priv[] = { @@ -297,26 +540,6 @@ const unsigned char test_rsa_2048_priv[] = { 0x07, 0x9c, 0xaa, 0xda, 0x05, 0x68, 0xb1, }; -const unsigned char test_rsa_2048_pub[] = { - 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf7, 0xbb, 0x6b, 0x8e, 0xab, 0x40, 0x49, - 0x1c, 0xd6, 0x44, 0x55, 0xec, 0x04, 0xd4, 0xed, 0x8d, 0xb5, 0x05, 0x1a, 0x97, 0x38, 0xfc, 0x7a, - 0xf7, 0x3f, 0xf3, 0xb0, 0x97, 0x51, 0x1c, 0xce, 0x40, 0xaa, 0xf7, 0x65, 0x37, 0xb1, 0x35, 0x35, - 0x04, 0x42, 0x79, 0x86, 0xb7, 0xb2, 0xb5, 0x3a, 0x96, 0x4a, 0x69, 0x37, 0xb5, 0x58, 0xec, 0x0d, - 0x1d, 0xea, 0x27, 0x4a, 0xf2, 0xb8, 0xff, 0xf2, 0xf0, 0x94, 0xc2, 0x43, 0xfa, 0x57, 0x72, 0x66, - 0xa7, 0x9d, 0xb0, 0xc2, 0x6f, 0xfe, 0x30, 0x41, 0x6d, 0x23, 0xef, 0x05, 0xdd, 0x5f, 0xec, 0xab, - 0x41, 0x3e, 0xbb, 0xb4, 0xf8, 0x52, 0x6a, 0xe7, 0x20, 0xa9, 0x45, 0x84, 0x22, 0x6b, 0x37, 0xd9, - 0x2e, 0xf4, 0x63, 0xfc, 0x73, 0x6c, 0xb3, 0x8e, 0x53, 0x0e, 0x74, 0x88, 0xd9, 0x16, 0x2f, 0x57, - 0x26, 0x80, 0x7b, 0xc5, 0x43, 0x13, 0x8a, 0x2d, 0x25, 0x8a, 0xdb, 0x4d, 0x68, 0x02, 0x21, 0xc2, - 0x53, 0x23, 0x81, 0xcc, 0xfa, 0x81, 0xbc, 0x89, 0xbc, 0x3d, 0x7b, 0x84, 0x03, 0x9c, 0x2d, 0xf4, - 0x1c, 0xe3, 0xec, 0x8d, 0xb9, 0x1c, 0x23, 0x80, 0xe7, 0x81, 0xba, 0x3a, 0xa9, 0xe2, 0x3b, 0x74, - 0xed, 0x99, 0x73, 0xd4, 0x90, 0x8e, 0xfc, 0xa4, 0x7a, 0xa8, 0xd9, 0xb7, 0xb0, 0xa4, 0x42, 0x32, - 0x97, 0xa4, 0x04, 0x42, 0x7c, 0x3f, 0x3c, 0xd6, 0xe0, 0x78, 0x2e, 0x45, 0x53, 0x88, 0x0f, 0x06, - 0xba, 0x39, 0xa6, 0x4f, 0x4a, 0x7b, 0x0e, 0xef, 0x92, 0x1a, 0x60, 0x50, 0xa2, 0x07, 0xce, 0xfa, - 0xdc, 0xf0, 0x73, 0x94, 0xa3, 0xe1, 0x8e, 0xa9, 0x15, 0xdc, 0x84, 0x97, 0xe7, 0xae, 0x61, 0xfc, - 0x31, 0x62, 0xf6, 0x2f, 0x50, 0x65, 0xa6, 0x92, 0xaf, 0x07, 0x72, 0x66, 0xf7, 0x36, 0x0c, 0x20, - 0x76, 0xce, 0xbe, 0xaf, 0x14, 0xcb, 0x22, 0xc1, 0xed, 0x02, 0x03, 0x01, 0x00, 0x01, -}; - const unsigned char test_rsa_4096_priv[] = { 0x30, 0x82, 0x09, 0x29, 0x02, 0x01, 0x00, 0x02, 0x82, 0x02, 0x01, 0x00, 0xcc, 0x87, 0x25, 0xf6, 0xb3, 0x8d, 0x5d, 0x01, 0xae, 0xeb, 0x07, 0xd3, 0x6e, 0x03, 0xde, 0x4d, 0x31, 0xa0, 0x26, 0x1c, @@ -467,6 +690,90 @@ const unsigned char test_rsa_4096_priv[] = { 0x41, 0x6a, 0x42, 0x2e, 0x56, 0x09, 0x86, 0xf2, 0x2f, 0x39, 0x45, 0x6e, 0x7f, }; +const unsigned char test_rsa_1024_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05, 0x7d, 0x39, 0x6e, 0xe8, 0x4f, 0xb7, 0x5f, + 0xdb, 0xb5, 0xc2, 0xb1, 0x3c, 0x7f, 0xe5, 0xa6, 0x54, 0xaa, 0x8a, 0xa2, 0x47, 0x0b, 0x54, 0x1e, + 0xe1, 0xfe, 0xb0, 0xb1, 0x2d, 0x25, 0xc7, 0x97, 0x11, 0x53, 0x12, 0x49, 0xe1, 0x12, 0x96, 0x28, + 0x04, 0x2d, 0xbb, 0xb6, 0xc1, 0x20, 0xd1, 0x44, 0x35, 0x24, 0xef, 0x4c, 0x0e, 0x6e, 0x1d, 0x89, + 0x56, 0xee, 0xb2, 0x07, 0x7a, 0xf1, 0x23, 0x49, 0xdd, 0xee, 0xe5, 0x44, 0x83, 0xbc, 0x06, 0xc2, + 0xc6, 0x19, 0x48, 0xcd, 0x02, 0xb2, 0x02, 0xe7, 0x96, 0xae, 0xbd, 0x94, 0xd3, 0xa7, 0xcb, 0xf8, + 0x59, 0xc2, 0xc1, 0x81, 0x9c, 0x32, 0x4c, 0xb8, 0x2b, 0x9c, 0xd3, 0x4e, 0xde, 0x26, 0x3a, 0x2a, + 0xbf, 0xfe, 0x47, 0x33, 0xf0, 0x77, 0x86, 0x9e, 0x86, 0x60, 0xf7, 0xd6, 0x83, 0x4d, 0xa5, 0x3d, + 0x69, 0x0e, 0xf7, 0x98, 0x5f, 0x6b, 0xc3, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + +const unsigned char test_rsa_1026_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x02, 0xd0, 0x96, 0x61, 0xfc, 0x74, 0x22, 0x4b, 0xa7, 0xbe, + 0x79, 0x07, 0xab, 0xef, 0x4f, 0x5e, 0x8b, 0xcc, 0x26, 0x4a, 0x80, 0x2c, 0x97, 0x8f, 0x7e, 0xaa, + 0x58, 0x55, 0xad, 0xa0, 0x54, 0x36, 0xd7, 0x5d, 0xb7, 0x68, 0xd2, 0x0f, 0x68, 0x59, 0x5d, 0xbc, + 0xc3, 0xd7, 0x25, 0xb1, 0x38, 0xe8, 0x0b, 0x24, 0x7e, 0x44, 0xa4, 0x16, 0x3a, 0x05, 0x42, 0xfa, + 0xb6, 0x12, 0xac, 0xbb, 0xde, 0x45, 0xf2, 0xe9, 0x38, 0x94, 0xaa, 0x25, 0x3b, 0xdd, 0xef, 0x6a, + 0x7b, 0xec, 0xdc, 0x9c, 0xc2, 0x9a, 0x99, 0xba, 0xcf, 0x48, 0xdc, 0x6e, 0x38, 0xdb, 0x7a, 0x33, + 0xe9, 0xac, 0x92, 0x4c, 0x52, 0x0f, 0xc6, 0xbe, 0x7d, 0x6e, 0x56, 0x46, 0xc1, 0xd6, 0x7f, 0xb8, + 0xb2, 0xb9, 0x7a, 0xc6, 0x0b, 0xee, 0xcc, 0x3b, 0xb8, 0xe7, 0x5b, 0xed, 0x83, 0x15, 0xaa, 0x3f, + 0xe4, 0x6f, 0x74, 0x8a, 0x66, 0xd6, 0xef, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + +const unsigned char test_rsa_1028_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x0e, 0x62, 0xa7, 0x6f, 0x0e, 0x0b, 0x59, 0x68, 0x3a, 0x7e, + 0xbf, 0x7c, 0xbf, 0xd3, 0x7b, 0x1d, 0x17, 0x81, 0xd8, 0xf1, 0xb9, 0x00, 0x60, 0x4b, 0x50, 0x7f, + 0x0f, 0x04, 0xc7, 0x2a, 0x3d, 0x34, 0x0d, 0x06, 0x7b, 0xcd, 0x53, 0xbe, 0xa3, 0xca, 0xff, 0x4e, + 0x4a, 0xe6, 0x94, 0xf0, 0xb6, 0xd8, 0xf5, 0x91, 0xa4, 0x16, 0x7f, 0xbf, 0x7f, 0x37, 0x2a, 0xb5, + 0x7e, 0x83, 0xa6, 0x9a, 0x3f, 0x26, 0xf4, 0x47, 0xbc, 0xf5, 0x82, 0xbc, 0x96, 0x21, 0xa3, 0x0a, + 0x3b, 0x44, 0xd6, 0xb4, 0x3e, 0x98, 0x6d, 0x1a, 0x86, 0x7b, 0x07, 0x48, 0x9e, 0x4f, 0x9b, 0xfc, + 0xad, 0xaa, 0x82, 0xa2, 0x78, 0x2d, 0xc2, 0x72, 0x9a, 0x63, 0x1f, 0xb1, 0xfb, 0x9f, 0xfb, 0x79, + 0x4b, 0x4e, 0x53, 0xc7, 0x62, 0x39, 0xe0, 0x4d, 0x4a, 0x8f, 0x80, 0x35, 0x25, 0x88, 0xdb, 0x29, + 0x46, 0x2d, 0xde, 0x18, 0x23, 0x7c, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + +const unsigned char test_rsa_1030_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x2b, 0x7c, 0xd1, 0x97, 0xf5, 0x79, 0x6d, 0x1f, 0x8e, 0x57, + 0x6b, 0x2b, 0x37, 0x72, 0x3f, 0xd9, 0x21, 0x08, 0x14, 0xef, 0x1c, 0x19, 0x95, 0xf9, 0x89, 0x9d, + 0x50, 0x05, 0x8f, 0x37, 0x9d, 0x23, 0x9c, 0x66, 0x87, 0x8e, 0x92, 0x2f, 0x34, 0xc6, 0xae, 0x36, + 0x72, 0xc8, 0x59, 0x8f, 0xcd, 0x5d, 0x47, 0xb7, 0x64, 0xd2, 0xec, 0x15, 0x6e, 0x13, 0x4d, 0x03, + 0xcf, 0x6a, 0x94, 0xd3, 0x8d, 0x2e, 0xa8, 0xbc, 0x76, 0xdb, 0xbc, 0x60, 0xc4, 0xb9, 0x74, 0x21, + 0x90, 0x90, 0xea, 0xf2, 0x87, 0x49, 0x7d, 0x7d, 0xcf, 0x7f, 0x11, 0x9c, 0xfa, 0x86, 0x74, 0x96, + 0xf7, 0xe9, 0x1c, 0x12, 0xb5, 0xd5, 0x52, 0xe1, 0xd1, 0x46, 0x1a, 0x80, 0xdb, 0xe9, 0xa5, 0x9d, + 0xb3, 0xb0, 0x16, 0xc6, 0xc0, 0x14, 0x1c, 0x3b, 0x2a, 0x0e, 0x22, 0x60, 0x89, 0xb8, 0x55, 0xcb, + 0x88, 0xef, 0x65, 0x64, 0x08, 0xbd, 0x89, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + +const unsigned char test_rsa_1536_pub[] = { + 0x30, 0x81, 0xc9, 0x02, 0x81, 0xc1, 0x00, 0xc8, 0x70, 0xfe, 0xb6, 0xca, 0x6b, 0x1d, 0x2b, 0xd9, + 0xf2, 0xdd, 0x99, 0xe2, 0x0f, 0x1f, 0xe2, 0xd7, 0xe5, 0x19, 0x2d, 0xe6, 0x62, 0x22, 0x9d, 0xbe, + 0x16, 0x2b, 0xd1, 0xba, 0x66, 0x33, 0x6a, 0x71, 0x82, 0x90, 0x3c, 0xa0, 0xb7, 0x27, 0x96, 0xcd, + 0x44, 0x1c, 0x83, 0xd2, 0x4b, 0xcd, 0xc3, 0xe9, 0xa2, 0xf5, 0xe4, 0x39, 0x9c, 0x8a, 0x04, 0x3f, + 0x1c, 0x3d, 0xdf, 0x04, 0x75, 0x4a, 0x66, 0xd4, 0xcf, 0xe7, 0xb3, 0x67, 0x1a, 0x37, 0xdd, 0x31, + 0xa9, 0xb4, 0xc1, 0x3b, 0xfe, 0x06, 0xee, 0x90, 0xf9, 0xd9, 0x4d, 0xda, 0xa0, 0x6d, 0xe6, 0x7a, + 0x52, 0xac, 0x86, 0x3e, 0x68, 0xf7, 0x56, 0x73, 0x6c, 0xeb, 0x01, 0x44, 0x05, 0xa6, 0x16, 0x05, + 0x79, 0x64, 0x0f, 0x83, 0x1d, 0xdd, 0xcc, 0xc3, 0x4a, 0xd0, 0xb0, 0x50, 0x70, 0xe3, 0xf9, 0x95, + 0x4a, 0x58, 0xd1, 0x81, 0x58, 0x13, 0xe1, 0xb8, 0x3b, 0xca, 0xdb, 0xa8, 0x14, 0x78, 0x9c, 0x87, + 0xf1, 0xef, 0x2b, 0xa5, 0xd7, 0x38, 0xb7, 0x93, 0xec, 0x45, 0x6a, 0x67, 0x36, 0x0e, 0xea, 0x1b, + 0x5f, 0xaf, 0x1c, 0x7c, 0xc7, 0xbf, 0x24, 0xf3, 0xb2, 0xa9, 0xd0, 0xf8, 0x95, 0x8b, 0x10, 0x96, + 0xe0, 0xf0, 0xc3, 0x35, 0xf8, 0x88, 0x8d, 0x0c, 0x63, 0xa5, 0x1c, 0x3c, 0x03, 0x37, 0x21, 0x4f, + 0xa3, 0xf5, 0xef, 0xdf, 0x6d, 0xcc, 0x35, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + +const unsigned char test_rsa_2048_pub[] = { + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf7, 0xbb, 0x6b, 0x8e, 0xab, 0x40, 0x49, + 0x1c, 0xd6, 0x44, 0x55, 0xec, 0x04, 0xd4, 0xed, 0x8d, 0xb5, 0x05, 0x1a, 0x97, 0x38, 0xfc, 0x7a, + 0xf7, 0x3f, 0xf3, 0xb0, 0x97, 0x51, 0x1c, 0xce, 0x40, 0xaa, 0xf7, 0x65, 0x37, 0xb1, 0x35, 0x35, + 0x04, 0x42, 0x79, 0x86, 0xb7, 0xb2, 0xb5, 0x3a, 0x96, 0x4a, 0x69, 0x37, 0xb5, 0x58, 0xec, 0x0d, + 0x1d, 0xea, 0x27, 0x4a, 0xf2, 0xb8, 0xff, 0xf2, 0xf0, 0x94, 0xc2, 0x43, 0xfa, 0x57, 0x72, 0x66, + 0xa7, 0x9d, 0xb0, 0xc2, 0x6f, 0xfe, 0x30, 0x41, 0x6d, 0x23, 0xef, 0x05, 0xdd, 0x5f, 0xec, 0xab, + 0x41, 0x3e, 0xbb, 0xb4, 0xf8, 0x52, 0x6a, 0xe7, 0x20, 0xa9, 0x45, 0x84, 0x22, 0x6b, 0x37, 0xd9, + 0x2e, 0xf4, 0x63, 0xfc, 0x73, 0x6c, 0xb3, 0x8e, 0x53, 0x0e, 0x74, 0x88, 0xd9, 0x16, 0x2f, 0x57, + 0x26, 0x80, 0x7b, 0xc5, 0x43, 0x13, 0x8a, 0x2d, 0x25, 0x8a, 0xdb, 0x4d, 0x68, 0x02, 0x21, 0xc2, + 0x53, 0x23, 0x81, 0xcc, 0xfa, 0x81, 0xbc, 0x89, 0xbc, 0x3d, 0x7b, 0x84, 0x03, 0x9c, 0x2d, 0xf4, + 0x1c, 0xe3, 0xec, 0x8d, 0xb9, 0x1c, 0x23, 0x80, 0xe7, 0x81, 0xba, 0x3a, 0xa9, 0xe2, 0x3b, 0x74, + 0xed, 0x99, 0x73, 0xd4, 0x90, 0x8e, 0xfc, 0xa4, 0x7a, 0xa8, 0xd9, 0xb7, 0xb0, 0xa4, 0x42, 0x32, + 0x97, 0xa4, 0x04, 0x42, 0x7c, 0x3f, 0x3c, 0xd6, 0xe0, 0x78, 0x2e, 0x45, 0x53, 0x88, 0x0f, 0x06, + 0xba, 0x39, 0xa6, 0x4f, 0x4a, 0x7b, 0x0e, 0xef, 0x92, 0x1a, 0x60, 0x50, 0xa2, 0x07, 0xce, 0xfa, + 0xdc, 0xf0, 0x73, 0x94, 0xa3, 0xe1, 0x8e, 0xa9, 0x15, 0xdc, 0x84, 0x97, 0xe7, 0xae, 0x61, 0xfc, + 0x31, 0x62, 0xf6, 0x2f, 0x50, 0x65, 0xa6, 0x92, 0xaf, 0x07, 0x72, 0x66, 0xf7, 0x36, 0x0c, 0x20, + 0x76, 0xce, 0xbe, 0xaf, 0x14, 0xcb, 0x22, 0xc1, 0xed, 0x02, 0x03, 0x01, 0x00, 0x01, +}; + const unsigned char test_rsa_4096_pub[] = { 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xcc, 0x87, 0x25, 0xf6, 0xb3, 0x8d, 0x5d, 0x01, 0xae, 0xeb, 0x07, 0xd3, 0x6e, 0x03, 0xde, 0x4d, 0x31, 0xa0, 0x26, 0x1c, 0xe7, 0x4f, 0xe1, @@ -502,173 +809,3 @@ const unsigned char test_rsa_4096_pub[] = { 0xf9, 0x34, 0xe2, 0xb4, 0x0f, 0xde, 0xbb, 0xa3, 0xd9, 0x70, 0x1b, 0x76, 0xe1, 0xbe, 0x54, 0x82, 0x74, 0xb2, 0x60, 0x2d, 0x88, 0x85, 0x37, 0x48, 0x2d, 0x02, 0x03, 0x01, 0x00, 0x01, }; - -const unsigned char test_ec_secp192r1_priv[] = { - 0xd8, 0x3b, 0x57, 0xa5, 0x9c, 0x51, 0x35, 0x8d, 0x9c, 0x8b, 0xbb, 0x89, 0x8a, 0xff, 0x50, 0x7f, - 0x44, 0xdd, 0x14, 0xcf, 0x16, 0x91, 0x71, 0x90, -}; - -const unsigned char test_ec_secp192r1_pub[] = { - 0x04, 0xe3, 0x5f, 0xcb, 0xee, 0x11, 0xce, 0xc3, 0x15, 0x4f, 0x80, 0xa1, 0xa6, 0x1d, 0xf7, 0xd7, - 0x61, 0x2d, 0xe4, 0xf2, 0xfd, 0x70, 0xc5, 0x60, 0x8d, 0x0e, 0xe3, 0xa4, 0xa1, 0xa5, 0x71, 0x94, - 0x71, 0xad, 0xb3, 0x39, 0x66, 0xdd, 0x9b, 0x03, 0x5f, 0xdb, 0x77, 0x4f, 0xee, 0xba, 0x94, 0xb0, - 0x4c, -}; - -const unsigned char test_ec_secp224r1_priv[] = { - 0x87, 0x2f, 0x20, 0x3b, 0x3a, 0xd3, 0x5b, 0x7f, 0x2e, 0xcc, 0x80, 0x3c, 0x3a, 0x0e, 0x1e, 0x0b, - 0x1e, 0xd6, 0x1c, 0xc1, 0xaf, 0xe7, 0x1b, 0x18, 0x9c, 0xd4, 0xc9, 0x95, -}; - -const unsigned char test_ec_secp224r1_pub[] = { - 0x04, 0x6f, 0x00, 0xea, 0xda, 0xa9, 0x49, 0xfe, 0xe3, 0xe9, 0xe1, 0xc7, 0xfa, 0x12, 0x47, 0xee, - 0xce, 0xc8, 0x6a, 0x0d, 0xce, 0x46, 0x41, 0x8b, 0x9b, 0xd3, 0x11, 0x7b, 0x98, 0x1d, 0x4b, 0xd0, - 0xae, 0x7a, 0x99, 0x0d, 0xe9, 0x12, 0xf9, 0xd0, 0x60, 0xd6, 0xcb, 0x53, 0x1a, 0x42, 0xd2, 0x2e, - 0x39, 0x4a, 0xc2, 0x9e, 0x81, 0x80, 0x4b, 0xf1, 0x60, -}; - -const unsigned char test_ec_secp256r1_priv[] = { - 0x49, 0xc9, 0xa8, 0xc1, 0x8c, 0x4b, 0x88, 0x56, 0x38, 0xc4, 0x31, 0xcf, 0x1d, 0xf1, 0xc9, 0x94, - 0x13, 0x16, 0x09, 0xb5, 0x80, 0xd4, 0xfd, 0x43, 0xa0, 0xca, 0xb1, 0x7d, 0xb2, 0xf1, 0x3e, 0xee, -}; - -const unsigned char test_ec_secp256r1_pub[] = { - 0x04, 0x77, 0x72, 0x65, 0x6f, 0x81, 0x4b, 0x39, 0x92, 0x79, 0xd5, 0xe1, 0xf1, 0x78, 0x1f, 0xac, - 0x6f, 0x09, 0x9a, 0x3c, 0x5c, 0xa1, 0xb0, 0xe3, 0x53, 0x51, 0x83, 0x4b, 0x08, 0xb6, 0x5e, 0x0b, - 0x57, 0x25, 0x90, 0xcd, 0xaf, 0x8f, 0x76, 0x93, 0x61, 0xbc, 0xf3, 0x4a, 0xcf, 0xc1, 0x1e, 0x5e, - 0x07, 0x4e, 0x84, 0x26, 0xbd, 0xde, 0x04, 0xbe, 0x6e, 0x65, 0x39, 0x45, 0x44, 0x96, 0x17, 0xde, - 0x45, -}; - -const unsigned char test_ec_secp384r1_priv[] = { - 0x3f, 0x5d, 0x8d, 0x9b, 0xe2, 0x80, 0xb5, 0x69, 0x6c, 0xc5, 0xcc, 0x9f, 0x94, 0xcf, 0x8a, 0xf7, - 0xe6, 0xb6, 0x1d, 0xd6, 0x59, 0x2b, 0x2a, 0xb2, 0xb3, 0xa4, 0xc6, 0x07, 0x45, 0x04, 0x17, 0xec, - 0x32, 0x7d, 0xcd, 0xca, 0xed, 0x7c, 0x10, 0x05, 0x3d, 0x71, 0x9a, 0x05, 0x74, 0xf0, 0xa7, 0x6a, -}; - -const unsigned char test_ec_secp384r1_pub[] = { - 0x04, 0xd9, 0xc6, 0x62, 0xb5, 0x0b, 0xa2, 0x9c, 0xa4, 0x79, 0x90, 0x45, 0x0e, 0x04, 0x3a, 0xea, - 0xf4, 0xf0, 0xc6, 0x9b, 0x15, 0x67, 0x6d, 0x11, 0x2f, 0x62, 0x2a, 0x71, 0xc9, 0x30, 0x59, 0xaf, - 0x99, 0x96, 0x91, 0xc5, 0x68, 0x0d, 0x2b, 0x44, 0xd1, 0x11, 0x57, 0x9d, 0xb1, 0x2f, 0x4a, 0x41, - 0x3a, 0x2e, 0xd5, 0xc4, 0x5f, 0xcf, 0xb6, 0x7b, 0x5b, 0x63, 0xe0, 0x0b, 0x91, 0xeb, 0xe5, 0x9d, - 0x09, 0xa6, 0xb1, 0xac, 0x2c, 0x0c, 0x42, 0x82, 0xaa, 0x12, 0x31, 0x7e, 0xd5, 0x91, 0x4f, 0x99, - 0x9b, 0xc4, 0x88, 0xbb, 0x13, 0x2e, 0x83, 0x42, 0xcc, 0x36, 0xf2, 0xca, 0x5e, 0x33, 0x79, 0xc7, - 0x47, -}; - -const unsigned char test_ec_secp521r1_priv[] = { - 0x01, 0xb1, 0xb6, 0xad, 0x07, 0xbb, 0x79, 0xe7, 0x32, 0x0d, 0xa5, 0x98, 0x60, 0xea, 0x28, 0xe0, - 0x55, 0x28, 0x4f, 0x60, 0x58, 0xf2, 0x79, 0xde, 0x66, 0x6e, 0x06, 0xd4, 0x35, 0xd2, 0xaf, 0x7b, - 0xda, 0x28, 0xd9, 0x9f, 0xa4, 0x7b, 0x7d, 0xd0, 0x96, 0x3e, 0x16, 0xb0, 0x07, 0x30, 0x78, 0xee, - 0x8b, 0x8a, 0x38, 0xd9, 0x66, 0xa5, 0x82, 0xf4, 0x6d, 0x19, 0xff, 0x95, 0xdf, 0x3a, 0xd9, 0x68, - 0x5a, 0xae, -}; - -const unsigned char test_ec_secp521r1_pub[] = { - 0x04, 0x00, 0x1d, 0xe1, 0x42, 0xd5, 0x4f, 0x69, 0xeb, 0x03, 0x8e, 0xe4, 0xb7, 0xaf, 0x9d, 0x3c, - 0xa0, 0x77, 0x36, 0xfd, 0x9c, 0xf7, 0x19, 0xeb, 0x35, 0x4d, 0x69, 0x87, 0x9e, 0xe7, 0xf3, 0xc1, - 0x36, 0xfb, 0x0f, 0xbf, 0x9f, 0x08, 0xf8, 0x6b, 0xe5, 0xfa, 0x12, 0x8e, 0xc1, 0xa0, 0x51, 0xd3, - 0xe6, 0xc6, 0x43, 0xe8, 0x5a, 0xda, 0x8f, 0xfa, 0xcf, 0x36, 0x63, 0xc2, 0x60, 0xbd, 0x2c, 0x84, - 0x4b, 0x6f, 0x56, 0x00, 0xce, 0xe8, 0xe4, 0x8a, 0x9e, 0x65, 0xd0, 0x9c, 0xad, 0xd8, 0x9f, 0x23, - 0x5d, 0xee, 0x05, 0xf3, 0xb8, 0xa6, 0x46, 0xbe, 0x71, 0x5f, 0x1f, 0x67, 0xd5, 0xb4, 0x34, 0xe0, - 0xff, 0x23, 0xa1, 0xfc, 0x07, 0xef, 0x77, 0x40, 0x19, 0x3e, 0x40, 0xee, 0xff, 0x6f, 0x3b, 0xcd, - 0xfd, 0x76, 0x5a, 0xa9, 0x15, 0x50, 0x33, 0x52, 0x4f, 0xe4, 0xf2, 0x05, 0xf5, 0x44, 0x4e, 0x29, - 0x2c, 0x4c, 0x2f, 0x6a, 0xc1, -}; - -const unsigned char test_ec_bp256r1_priv[] = { - 0x21, 0x61, 0xd6, 0xf2, 0xdb, 0x76, 0x52, 0x6f, 0xa6, 0x2c, 0x16, 0xf3, 0x56, 0xa8, 0x0f, 0x01, - 0xf3, 0x2f, 0x77, 0x67, 0x84, 0xb3, 0x6a, 0xa9, 0x97, 0x99, 0xa8, 0xb7, 0x66, 0x20, 0x80, 0xff, -}; - -const unsigned char test_ec_bp256r1_pub[] = { - 0x04, 0x76, 0x8c, 0x8c, 0xae, 0x4a, 0xbc, 0xa6, 0x30, 0x6d, 0xb0, 0xed, 0x81, 0xb0, 0xc4, 0xa6, - 0x21, 0x5c, 0x37, 0x80, 0x66, 0xec, 0x6d, 0x61, 0x6c, 0x14, 0x6e, 0x13, 0xf1, 0xc7, 0xdf, 0x80, - 0x9b, 0x96, 0xab, 0x69, 0x11, 0xc2, 0x7d, 0x8a, 0x02, 0x33, 0x9f, 0x09, 0x26, 0x84, 0x0e, 0x55, - 0x23, 0x6d, 0x3d, 0x1e, 0xfb, 0xe2, 0x66, 0x9d, 0x09, 0x0e, 0x4c, 0x4c, 0x66, 0x0f, 0xad, 0xa9, - 0x1d, -}; - -const unsigned char test_ec_bp384r1_priv[] = { - 0x3d, 0xd9, 0x2e, 0x75, 0x0d, 0x90, 0xd7, 0xd3, 0x9f, 0xc1, 0x88, 0x5c, 0xd8, 0xad, 0x12, 0xea, - 0x94, 0x41, 0xf2, 0x2b, 0x93, 0x34, 0xb4, 0xd9, 0x65, 0x20, 0x2a, 0xdb, 0x14, 0x48, 0xce, 0x24, - 0xc5, 0x80, 0x8a, 0x85, 0xdd, 0x9a, 0xfc, 0x22, 0x9a, 0xf0, 0xa3, 0x12, 0x4f, 0x75, 0x5b, 0xcb, -}; - -const unsigned char test_ec_bp384r1_pub[] = { - 0x04, 0x71, 0x9f, 0x9d, 0x09, 0x3a, 0x62, 0x7e, 0x0d, 0x35, 0x03, 0x85, 0xc6, 0x61, 0xce, 0xbf, - 0x00, 0xc6, 0x19, 0x23, 0x56, 0x6f, 0xe9, 0x00, 0x6a, 0x31, 0x07, 0xaf, 0x1d, 0x87, 0x1b, 0xc6, - 0xbb, 0x68, 0x98, 0x5f, 0xd7, 0x22, 0xea, 0x32, 0xbe, 0x31, 0x6f, 0x8e, 0x78, 0x3b, 0x7c, 0xd1, - 0x95, 0x77, 0x85, 0xf6, 0x6c, 0xfc, 0x0c, 0xb1, 0x95, 0xdd, 0x5c, 0x99, 0xa8, 0xe7, 0xab, 0xaa, - 0x84, 0x85, 0x53, 0xa5, 0x84, 0xdf, 0xd2, 0xb4, 0x8e, 0x76, 0xd4, 0x45, 0xfe, 0x00, 0xdd, 0x8b, - 0xe5, 0x90, 0x96, 0xd8, 0x77, 0xd4, 0x69, 0x6d, 0x23, 0xb4, 0xbc, 0x8d, 0xb1, 0x47, 0x24, 0xe6, - 0x6a, -}; - -const unsigned char test_ec_bp512r1_priv[] = { - 0x37, 0x2c, 0x97, 0x78, 0xf6, 0x9f, 0x72, 0x6c, 0xbc, 0xa3, 0xf4, 0xa2, 0x68, 0xf1, 0x6b, 0x4d, - 0x61, 0x7d, 0x10, 0x28, 0x0d, 0x79, 0xa6, 0xa0, 0x29, 0xcd, 0x51, 0x87, 0x9f, 0xe1, 0x01, 0x29, - 0x34, 0xdf, 0xe5, 0x39, 0x54, 0x55, 0x33, 0x7d, 0xf6, 0x90, 0x6d, 0xc7, 0xd6, 0xd2, 0xee, 0xa4, - 0xdb, 0xb2, 0x06, 0x5c, 0x02, 0x28, 0xf7, 0x3b, 0x3e, 0xd7, 0x16, 0x48, 0x0e, 0x7d, 0x71, 0xd2, -}; - -const unsigned char test_ec_bp512r1_pub[] = { - 0x04, 0x38, 0xb7, 0xec, 0x92, 0xb6, 0x1c, 0x5c, 0x6c, 0x7f, 0xbc, 0x28, 0xa4, 0xec, 0x75, 0x9d, - 0x48, 0xfc, 0xd4, 0xe2, 0xe3, 0x74, 0xde, 0xfd, 0x5c, 0x49, 0x68, 0xa5, 0x4d, 0xbe, 0xf7, 0x51, - 0x0e, 0x51, 0x78, 0x86, 0xfb, 0xfc, 0x38, 0xea, 0x39, 0xaa, 0x52, 0x93, 0x59, 0xd7, 0x0a, 0x71, - 0x56, 0xc3, 0x5d, 0x3c, 0xba, 0xc7, 0xce, 0x77, 0x6b, 0xdb, 0x25, 0x1d, 0xd6, 0x4b, 0xce, 0x71, - 0x23, 0x44, 0x24, 0xee, 0x70, 0x49, 0xee, 0xd0, 0x72, 0xf0, 0xdb, 0xc4, 0xd7, 0x99, 0x96, 0xe1, - 0x75, 0xd5, 0x57, 0xe2, 0x63, 0x76, 0x3a, 0xe9, 0x70, 0x95, 0xc0, 0x81, 0xe7, 0x3e, 0x7d, 0xb2, - 0xe3, 0x8a, 0xdc, 0x3d, 0x4c, 0x9a, 0x04, 0x87, 0xb1, 0xed, 0xe8, 0x76, 0xdc, 0x1f, 0xca, 0x61, - 0xc9, 0x02, 0xe9, 0xa1, 0xd8, 0x72, 0x2b, 0x86, 0x12, 0x92, 0x8f, 0x18, 0xa2, 0x48, 0x45, 0x59, - 0x1a, -}; - -const unsigned char test_ec_secp192k1_priv[] = { - 0x29, 0x7a, 0xc1, 0x72, 0x2c, 0xca, 0xc7, 0x58, 0x9e, 0xcb, 0x24, 0x0d, 0xc7, 0x19, 0x84, 0x25, - 0x38, 0xca, 0x97, 0x4b, 0xeb, 0x79, 0xf2, 0x28, -}; - -const unsigned char test_ec_secp192k1_pub[] = { - 0x04, 0x26, 0xb7, 0xbb, 0x38, 0xda, 0x64, 0x9a, 0xc2, 0x13, 0x8f, 0xc0, 0x50, 0xc6, 0x54, 0x8b, - 0x32, 0x55, 0x3d, 0xab, 0x68, 0xaf, 0xeb, 0xc3, 0x61, 0x05, 0xd3, 0x25, 0xb7, 0x55, 0x38, 0xc1, - 0x23, 0x23, 0xcb, 0x07, 0x64, 0x78, 0x9e, 0xcb, 0x99, 0x26, 0x71, 0xbe, 0xb2, 0xb6, 0xbe, 0xf2, - 0xf5, -}; - -const unsigned char test_ec_secp256k1_priv[] = { - 0x7f, 0xa0, 0x6f, 0xa0, 0x2d, 0x0e, 0x91, 0x1b, 0x9a, 0x47, 0xfd, 0xc1, 0x7d, 0x2d, 0x96, 0x2c, - 0xa0, 0x1e, 0x2f, 0x31, 0xd6, 0x0c, 0x62, 0x12, 0xd0, 0xed, 0x7e, 0x3b, 0xba, 0x23, 0xa7, 0xb9, -}; - -const unsigned char test_ec_secp256k1_pub[] = { - 0x04, 0x5c, 0x39, 0x15, 0x45, 0x79, 0xef, 0xd6, 0x67, 0xad, 0xc7, 0x3a, 0x81, 0x01, 0x5a, 0x79, - 0x7d, 0x2c, 0x86, 0x82, 0xcd, 0xfb, 0xd3, 0xc3, 0x55, 0x3c, 0x4a, 0x18, 0x5d, 0x48, 0x1c, 0xdc, - 0x50, 0xe4, 0x2a, 0x0e, 0x1c, 0xbc, 0x3c, 0xa2, 0x9a, 0x32, 0xa6, 0x45, 0xe9, 0x27, 0xf5, 0x4b, - 0xea, 0xed, 0x14, 0xc9, 0xdb, 0xbf, 0x82, 0x79, 0xd7, 0x25, 0xf5, 0x49, 0x5c, 0xa9, 0x24, 0xb2, - 0x4d, -}; - -const unsigned char test_ec_curve25519_priv[] = { - 0x70, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, 0x72, 0x51, 0xb2, 0x66, 0x45, - 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x6a, -}; - -const unsigned char test_ec_curve25519_pub[] = { - 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, - 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a, -}; - -const unsigned char test_ec_curve448_priv[] = { - 0xe4, 0xe4, 0x9f, 0x52, 0x68, 0x6f, 0x9e, 0xe3, 0xb6, 0x38, 0x52, 0x8f, 0x72, 0x1f, 0x15, 0x96, - 0x19, 0x6f, 0xfd, 0x0a, 0x1c, 0xdd, 0xb6, 0x4c, 0x3f, 0x21, 0x6f, 0x06, 0x54, 0x18, 0x05, 0xcf, - 0xeb, 0x1a, 0x28, 0x6d, 0xc7, 0x80, 0x18, 0x09, 0x5c, 0xdf, 0xec, 0x05, 0x0e, 0x80, 0x07, 0xb5, - 0xf4, 0x90, 0x89, 0x62, 0xba, 0x20, 0xd6, 0xc1, -}; - -const unsigned char test_ec_curve448_pub[] = { - 0xc0, 0xd3, 0xa5, 0xa2, 0xb4, 0x16, 0xa5, 0x73, 0xdc, 0x99, 0x09, 0xf9, 0x2f, 0x13, 0x4a, 0xc0, - 0x13, 0x23, 0xab, 0x8f, 0x8e, 0x36, 0x80, 0x4e, 0x57, 0x85, 0x88, 0xba, 0x2d, 0x09, 0xfe, 0x7c, - 0x3e, 0x73, 0x7f, 0x77, 0x1c, 0xa1, 0x12, 0x82, 0x5b, 0x54, 0x8a, 0x0f, 0xfd, 0xed, 0x6d, 0x6a, - 0x2f, 0xd0, 0x9a, 0x3e, 0x77, 0xde, 0xc3, 0x0e, -}; diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 1e52ae6b1f..36f447f426 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -222,8 +222,8 @@ struct key_lut_element keys_lut[] = { test_ec_bp384r1_pub, sizeof(test_ec_bp384r1_pub) }, { MBEDTLS_ECP_DP_BP512R1, test_ec_bp512r1_priv, sizeof(test_ec_bp512r1_priv), test_ec_bp512r1_pub, sizeof(test_ec_bp512r1_pub) }, - { MBEDTLS_ECP_DP_CURVE25519, test_ec_curve25519_priv, sizeof(test_ec_curve25519_priv), - test_ec_curve25519_pub, sizeof(test_ec_curve25519_pub) }, + { MBEDTLS_ECP_DP_CURVE25519, test_ec_curve255_priv, sizeof(test_ec_curve255_priv), + test_ec_curve255_pub, sizeof(test_ec_curve255_pub) }, { MBEDTLS_ECP_DP_SECP192K1, test_ec_secp192k1_priv, sizeof(test_ec_secp192k1_priv), test_ec_secp192k1_pub, sizeof(test_ec_secp192k1_pub) }, { MBEDTLS_ECP_DP_SECP256K1, test_ec_secp256k1_priv, sizeof(test_ec_secp256k1_priv), From 04ee26404b6e7a9a95f2a7098322010a716c97ce Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 16 Apr 2024 10:54:23 +0200 Subject: [PATCH 21/32] generate_test_keys: generate also look-up table in script Remove static declaration of look-up table from test_suite_pk and generate it automatically with Python. Signed-off-by: Valerio Setti --- tests/scripts/generate_test_keys.py | 118 ++++++--- tests/src/test_keys.h | 382 ++++++++++++++-------------- tests/suites/test_suite_pk.function | 69 +---- 3 files changed, 285 insertions(+), 284 deletions(-) diff --git a/tests/scripts/generate_test_keys.py b/tests/scripts/generate_test_keys.py index 75e85cefcc..9c5786d82e 100755 --- a/tests/scripts/generate_test_keys.py +++ b/tests/scripts/generate_test_keys.py @@ -32,13 +32,6 @@ def c_byte_array_literal_content(array_name: str, key_data: bytes) -> Iterator[s def convert_der_to_c(array_name: str, key_data: bytes) -> str: return ''.join(c_byte_array_literal_content(array_name, key_data)) -EC_NAME_CONVERSION = { - 'PSA_ECC_FAMILY_SECP_K1': ['secp', 'k1'], - 'PSA_ECC_FAMILY_SECP_R1': ['secp', 'r1'], - 'PSA_ECC_FAMILY_BRAINPOOL_P_R1': ['bp', 'r1'], - 'PSA_ECC_FAMILY_MONTGOMERY': ['curve', ''], -} - def get_key_type(key: str) -> str: if re.match('PSA_KEY_TYPE_RSA_.*', key): return "rsa" @@ -54,11 +47,49 @@ def get_ec_key_family(key: str) -> str: raise Exception("Unable to get EC family from {}".format(key)) return match.group(1) -def get_key_role(key_type: str) -> str: - if re.match('PSA_KEY_TYPE_.*_KEY_PAIR', key_type): - return "priv" - else: - return "pub" +# Legacy EC group ID do not support all the key types that PSA does, so the +# following dictionaries are used for: +# - getting prefix/suffix for legacy curve names +# - understand if the curve is supported in legacy symbols (MBEDTLS_ECP_DP_...) +EC_NAME_CONVERSION = { + 'PSA_ECC_FAMILY_SECP_K1': { + 192: ['secp', 'k1'], + 224: ['secp', 'k1'], + 256: ['secp', 'k1'] + }, + 'PSA_ECC_FAMILY_SECP_R1': { + 192: ['secp', 'r1'], + 224: ['secp', 'r1'], + 256: ['secp', 'r1'], + 384: ['secp', 'r1'], + 521: ['secp', 'r1'] + }, + 'PSA_ECC_FAMILY_BRAINPOOL_P_R1': { + 256: ['bp', 'r1'], + 384: ['bp', 'r1'], + 512: ['bp', 'r1'] + }, + 'PSA_ECC_FAMILY_MONTGOMERY': { + 255: ['curve', '19'], + 448: ['curve', ''] + } +} + +def get_ec_curve_name(priv_key: str, bits: int) -> str: + ec_family = get_ec_key_family(priv_key) + try: + prefix = EC_NAME_CONVERSION[ec_family][bits][0] + suffix = EC_NAME_CONVERSION[ec_family][bits][1] + except: # pylint: disable=bare-except + return "" + return prefix + str(bits) + suffix + +def get_look_up_table_entry(key_type: str, curve_or_keybits: str, + priv_array_name: str, pub_array_name: str) -> Iterator[str]: + yield "\n {{ {}, ".format("1" if key_type == "ec" else "0") + yield "{},\n".format(curve_or_keybits) + yield " {0}, sizeof({0}),\n".format(priv_array_name) + yield " {0}, sizeof({0}) }},".format(pub_array_name) def main() -> None: # Remove output file if already existing. @@ -73,33 +104,60 @@ def main() -> None: " *********************************************************************************/\n" ) - for key in ASYMMETRIC_KEY_DATA: - key_type = get_key_type(key) + look_up_table = "" + + # Get a list of private keys only in order to get a single item for every + # (key type, key bits) pair. We know that ASYMMETRIC_KEY_DATA + # contains also the public counterpart. + priv_keys = [key for key in ASYMMETRIC_KEY_DATA if re.match(r'.*_KEY_PAIR', key)] + + for priv_key in priv_keys: + key_type = get_key_type(priv_key) # Ignore keys which are not EC or RSA if key_type == "unknown": continue - # Ignore undesired EC keys - if key_type == "ec": - ec_family = get_ec_key_family(key) - if not ec_family in EC_NAME_CONVERSION: - continue - role = get_key_role(key) - for bits in ASYMMETRIC_KEY_DATA[key]: + pub_key = re.sub('_KEY_PAIR', '_PUBLIC_KEY', priv_key) + + for bits in ASYMMETRIC_KEY_DATA[priv_key]: + if key_type == "ec": + curve = get_ec_curve_name(priv_key, bits) + # Ignore EC curves unsupported in legacy symbols + if curve == "": + continue # Create output array name if key_type == "rsa": - array_name = "_".join(["test", key_type, str(bits), role]) + array_name_base = "_".join(["test", key_type, str(bits)]) else: - prefix = EC_NAME_CONVERSION[ec_family][0] - suffix = EC_NAME_CONVERSION[ec_family][1] - curve = "".join([prefix, str(bits), suffix]) - array_name = "_".join(["test", key_type, curve, role]) + array_name_base = "_".join(["test", key_type, curve]) + array_name_priv = array_name_base + "_priv" + array_name_pub = array_name_base + "_pub" # Convert bytearray to C array - c_array = convert_der_to_c(array_name, ASYMMETRIC_KEY_DATA[key][bits]) + c_array_priv = convert_der_to_c(array_name_priv, ASYMMETRIC_KEY_DATA[priv_key][bits]) + c_array_pub = convert_der_to_c(array_name_pub, ASYMMETRIC_KEY_DATA[pub_key][bits]) # Write the C array to the output file - output_file.write("\n") - output_file.write(c_array) - output_file.write("\n") + output_file.write(''.join(["\n", c_array_priv, "\n", c_array_pub, "\n"])) + # Update the lookup table + if key_type == "ec": + curve_or_keybits = "MBEDTLS_ECP_DP_" + curve.upper() + else: + curve_or_keybits = str(bits) + look_up_table = look_up_table + \ + ''.join(get_look_up_table_entry(key_type, curve_or_keybits, + array_name_priv, array_name_pub)) + # Write the lookup table: the struct containing pointers to all the arrays we created above. + output_file.write(""" +struct predefined_key_element { + int is_ec; // 1 for EC keys; 0 for RSA + int curve_or_keybits; + const unsigned char *priv_key; + size_t priv_key_len; + const unsigned char *pub_key; + size_t pub_key_len; +}; + +struct predefined_key_element predefined_keys[] = {""") + output_file.write("{}\n}};\n".format(look_up_table)) if __name__ == '__main__': main() diff --git a/tests/src/test_keys.h b/tests/src/test_keys.h index ca3416be90..7e8f773b66 100644 --- a/tests/src/test_keys.h +++ b/tests/src/test_keys.h @@ -7,17 +7,6 @@ const unsigned char test_ec_secp192k1_priv[] = { 0x29, 0x7a, 0xc1, 0x72, 0x2c, 0xca, 0xc7, 0x58, 0x9e, 0xcb, 0x24, 0x0d, 0xc7, 0x19, 0x84, 0x25, 0x38, 0xca, 0x97, 0x4b, 0xeb, 0x79, 0xf2, 0x28, }; - -const unsigned char test_ec_secp225k1_priv[] = { - 0x00, 0x24, 0x12, 0x2b, 0xf0, 0x20, 0xfa, 0x11, 0x3f, 0x6c, 0x0a, 0xc9, 0x78, 0xdf, 0xbd, 0x41, - 0xf7, 0x49, 0x25, 0x7a, 0x94, 0x68, 0xfe, 0xbd, 0xbe, 0x0d, 0xc9, 0xf7, 0xe8, -}; - -const unsigned char test_ec_secp256k1_priv[] = { - 0x7f, 0xa0, 0x6f, 0xa0, 0x2d, 0x0e, 0x91, 0x1b, 0x9a, 0x47, 0xfd, 0xc1, 0x7d, 0x2d, 0x96, 0x2c, - 0xa0, 0x1e, 0x2f, 0x31, 0xd6, 0x0c, 0x62, 0x12, 0xd0, 0xed, 0x7e, 0x3b, 0xba, 0x23, 0xa7, 0xb9, -}; - const unsigned char test_ec_secp192k1_pub[] = { 0x04, 0x26, 0xb7, 0xbb, 0x38, 0xda, 0x64, 0x9a, 0xc2, 0x13, 0x8f, 0xc0, 0x50, 0xc6, 0x54, 0x8b, 0x32, 0x55, 0x3d, 0xab, 0x68, 0xaf, 0xeb, 0xc3, 0x61, 0x05, 0xd3, 0x25, 0xb7, 0x55, 0x38, 0xc1, @@ -25,13 +14,10 @@ const unsigned char test_ec_secp192k1_pub[] = { 0xf5, }; -const unsigned char test_ec_secp225k1_pub[] = { - 0x04, 0x2c, 0xc7, 0x33, 0x5f, 0x4b, 0x76, 0x04, 0x2b, 0xed, 0x44, 0xef, 0x45, 0x95, 0x9a, 0x62, - 0xaa, 0x21, 0x5f, 0x7a, 0x5f, 0xf0, 0xc8, 0x11, 0x1b, 0x8c, 0x44, 0xed, 0x65, 0x4e, 0xe7, 0x1c, - 0x19, 0x18, 0x32, 0x6a, 0xd4, 0x85, 0xb2, 0xd5, 0x99, 0xfe, 0x2a, 0x6e, 0xab, 0x09, 0x6e, 0xe2, - 0x6d, 0x97, 0x73, 0x34, 0xd2, 0xba, 0xc6, 0xd6, 0x1d, +const unsigned char test_ec_secp256k1_priv[] = { + 0x7f, 0xa0, 0x6f, 0xa0, 0x2d, 0x0e, 0x91, 0x1b, 0x9a, 0x47, 0xfd, 0xc1, 0x7d, 0x2d, 0x96, 0x2c, + 0xa0, 0x1e, 0x2f, 0x31, 0xd6, 0x0c, 0x62, 0x12, 0xd0, 0xed, 0x7e, 0x3b, 0xba, 0x23, 0xa7, 0xb9, }; - const unsigned char test_ec_secp256k1_pub[] = { 0x04, 0x5c, 0x39, 0x15, 0x45, 0x79, 0xef, 0xd6, 0x67, 0xad, 0xc7, 0x3a, 0x81, 0x01, 0x5a, 0x79, 0x7d, 0x2c, 0x86, 0x82, 0xcd, 0xfb, 0xd3, 0xc3, 0x55, 0x3c, 0x4a, 0x18, 0x5d, 0x48, 0x1c, 0xdc, @@ -44,31 +30,6 @@ const unsigned char test_ec_secp192r1_priv[] = { 0xd8, 0x3b, 0x57, 0xa5, 0x9c, 0x51, 0x35, 0x8d, 0x9c, 0x8b, 0xbb, 0x89, 0x8a, 0xff, 0x50, 0x7f, 0x44, 0xdd, 0x14, 0xcf, 0x16, 0x91, 0x71, 0x90, }; - -const unsigned char test_ec_secp224r1_priv[] = { - 0x87, 0x2f, 0x20, 0x3b, 0x3a, 0xd3, 0x5b, 0x7f, 0x2e, 0xcc, 0x80, 0x3c, 0x3a, 0x0e, 0x1e, 0x0b, - 0x1e, 0xd6, 0x1c, 0xc1, 0xaf, 0xe7, 0x1b, 0x18, 0x9c, 0xd4, 0xc9, 0x95, -}; - -const unsigned char test_ec_secp256r1_priv[] = { - 0x49, 0xc9, 0xa8, 0xc1, 0x8c, 0x4b, 0x88, 0x56, 0x38, 0xc4, 0x31, 0xcf, 0x1d, 0xf1, 0xc9, 0x94, - 0x13, 0x16, 0x09, 0xb5, 0x80, 0xd4, 0xfd, 0x43, 0xa0, 0xca, 0xb1, 0x7d, 0xb2, 0xf1, 0x3e, 0xee, -}; - -const unsigned char test_ec_secp384r1_priv[] = { - 0x3f, 0x5d, 0x8d, 0x9b, 0xe2, 0x80, 0xb5, 0x69, 0x6c, 0xc5, 0xcc, 0x9f, 0x94, 0xcf, 0x8a, 0xf7, - 0xe6, 0xb6, 0x1d, 0xd6, 0x59, 0x2b, 0x2a, 0xb2, 0xb3, 0xa4, 0xc6, 0x07, 0x45, 0x04, 0x17, 0xec, - 0x32, 0x7d, 0xcd, 0xca, 0xed, 0x7c, 0x10, 0x05, 0x3d, 0x71, 0x9a, 0x05, 0x74, 0xf0, 0xa7, 0x6a, -}; - -const unsigned char test_ec_secp521r1_priv[] = { - 0x01, 0xb1, 0xb6, 0xad, 0x07, 0xbb, 0x79, 0xe7, 0x32, 0x0d, 0xa5, 0x98, 0x60, 0xea, 0x28, 0xe0, - 0x55, 0x28, 0x4f, 0x60, 0x58, 0xf2, 0x79, 0xde, 0x66, 0x6e, 0x06, 0xd4, 0x35, 0xd2, 0xaf, 0x7b, - 0xda, 0x28, 0xd9, 0x9f, 0xa4, 0x7b, 0x7d, 0xd0, 0x96, 0x3e, 0x16, 0xb0, 0x07, 0x30, 0x78, 0xee, - 0x8b, 0x8a, 0x38, 0xd9, 0x66, 0xa5, 0x82, 0xf4, 0x6d, 0x19, 0xff, 0x95, 0xdf, 0x3a, 0xd9, 0x68, - 0x5a, 0xae, -}; - const unsigned char test_ec_secp192r1_pub[] = { 0x04, 0xe3, 0x5f, 0xcb, 0xee, 0x11, 0xce, 0xc3, 0x15, 0x4f, 0x80, 0xa1, 0xa6, 0x1d, 0xf7, 0xd7, 0x61, 0x2d, 0xe4, 0xf2, 0xfd, 0x70, 0xc5, 0x60, 0x8d, 0x0e, 0xe3, 0xa4, 0xa1, 0xa5, 0x71, 0x94, @@ -76,6 +37,10 @@ const unsigned char test_ec_secp192r1_pub[] = { 0x4c, }; +const unsigned char test_ec_secp224r1_priv[] = { + 0x87, 0x2f, 0x20, 0x3b, 0x3a, 0xd3, 0x5b, 0x7f, 0x2e, 0xcc, 0x80, 0x3c, 0x3a, 0x0e, 0x1e, 0x0b, + 0x1e, 0xd6, 0x1c, 0xc1, 0xaf, 0xe7, 0x1b, 0x18, 0x9c, 0xd4, 0xc9, 0x95, +}; const unsigned char test_ec_secp224r1_pub[] = { 0x04, 0x6f, 0x00, 0xea, 0xda, 0xa9, 0x49, 0xfe, 0xe3, 0xe9, 0xe1, 0xc7, 0xfa, 0x12, 0x47, 0xee, 0xce, 0xc8, 0x6a, 0x0d, 0xce, 0x46, 0x41, 0x8b, 0x9b, 0xd3, 0x11, 0x7b, 0x98, 0x1d, 0x4b, 0xd0, @@ -83,6 +48,10 @@ const unsigned char test_ec_secp224r1_pub[] = { 0x39, 0x4a, 0xc2, 0x9e, 0x81, 0x80, 0x4b, 0xf1, 0x60, }; +const unsigned char test_ec_secp256r1_priv[] = { + 0x49, 0xc9, 0xa8, 0xc1, 0x8c, 0x4b, 0x88, 0x56, 0x38, 0xc4, 0x31, 0xcf, 0x1d, 0xf1, 0xc9, 0x94, + 0x13, 0x16, 0x09, 0xb5, 0x80, 0xd4, 0xfd, 0x43, 0xa0, 0xca, 0xb1, 0x7d, 0xb2, 0xf1, 0x3e, 0xee, +}; const unsigned char test_ec_secp256r1_pub[] = { 0x04, 0x77, 0x72, 0x65, 0x6f, 0x81, 0x4b, 0x39, 0x92, 0x79, 0xd5, 0xe1, 0xf1, 0x78, 0x1f, 0xac, 0x6f, 0x09, 0x9a, 0x3c, 0x5c, 0xa1, 0xb0, 0xe3, 0x53, 0x51, 0x83, 0x4b, 0x08, 0xb6, 0x5e, 0x0b, @@ -91,6 +60,11 @@ const unsigned char test_ec_secp256r1_pub[] = { 0x45, }; +const unsigned char test_ec_secp384r1_priv[] = { + 0x3f, 0x5d, 0x8d, 0x9b, 0xe2, 0x80, 0xb5, 0x69, 0x6c, 0xc5, 0xcc, 0x9f, 0x94, 0xcf, 0x8a, 0xf7, + 0xe6, 0xb6, 0x1d, 0xd6, 0x59, 0x2b, 0x2a, 0xb2, 0xb3, 0xa4, 0xc6, 0x07, 0x45, 0x04, 0x17, 0xec, + 0x32, 0x7d, 0xcd, 0xca, 0xed, 0x7c, 0x10, 0x05, 0x3d, 0x71, 0x9a, 0x05, 0x74, 0xf0, 0xa7, 0x6a, +}; const unsigned char test_ec_secp384r1_pub[] = { 0x04, 0xd9, 0xc6, 0x62, 0xb5, 0x0b, 0xa2, 0x9c, 0xa4, 0x79, 0x90, 0x45, 0x0e, 0x04, 0x3a, 0xea, 0xf4, 0xf0, 0xc6, 0x9b, 0x15, 0x67, 0x6d, 0x11, 0x2f, 0x62, 0x2a, 0x71, 0xc9, 0x30, 0x59, 0xaf, @@ -101,6 +75,13 @@ const unsigned char test_ec_secp384r1_pub[] = { 0x47, }; +const unsigned char test_ec_secp521r1_priv[] = { + 0x01, 0xb1, 0xb6, 0xad, 0x07, 0xbb, 0x79, 0xe7, 0x32, 0x0d, 0xa5, 0x98, 0x60, 0xea, 0x28, 0xe0, + 0x55, 0x28, 0x4f, 0x60, 0x58, 0xf2, 0x79, 0xde, 0x66, 0x6e, 0x06, 0xd4, 0x35, 0xd2, 0xaf, 0x7b, + 0xda, 0x28, 0xd9, 0x9f, 0xa4, 0x7b, 0x7d, 0xd0, 0x96, 0x3e, 0x16, 0xb0, 0x07, 0x30, 0x78, 0xee, + 0x8b, 0x8a, 0x38, 0xd9, 0x66, 0xa5, 0x82, 0xf4, 0x6d, 0x19, 0xff, 0x95, 0xdf, 0x3a, 0xd9, 0x68, + 0x5a, 0xae, +}; const unsigned char test_ec_secp521r1_pub[] = { 0x04, 0x00, 0x1d, 0xe1, 0x42, 0xd5, 0x4f, 0x69, 0xeb, 0x03, 0x8e, 0xe4, 0xb7, 0xaf, 0x9d, 0x3c, 0xa0, 0x77, 0x36, 0xfd, 0x9c, 0xf7, 0x19, 0xeb, 0x35, 0x4d, 0x69, 0x87, 0x9e, 0xe7, 0xf3, 0xc1, @@ -113,65 +94,10 @@ const unsigned char test_ec_secp521r1_pub[] = { 0x2c, 0x4c, 0x2f, 0x6a, 0xc1, }; -const unsigned char test_ec_bp160r1_priv[] = { - 0x69, 0x50, 0x2c, 0x4f, 0xda, 0xf4, 0x8d, 0x4f, 0xa6, 0x17, 0xbd, 0xd2, 0x44, 0x98, 0xb0, 0x40, - 0x6d, 0x0e, 0xea, 0xac, -}; - -const unsigned char test_ec_bp192r1_priv[] = { - 0x16, 0x88, 0xa2, 0xc5, 0xfb, 0xf4, 0xa3, 0xc8, 0x51, 0xd7, 0x6a, 0x98, 0xc3, 0xec, 0x88, 0xf4, - 0x45, 0xa9, 0x79, 0x96, 0x28, 0x3d, 0xb5, 0x9f, -}; - -const unsigned char test_ec_bp224r1_priv[] = { - 0xa6, 0x98, 0x35, 0xda, 0xfe, 0xb5, 0xda, 0x5a, 0xb8, 0x9c, 0x59, 0x86, 0x0d, 0xdd, 0xeb, 0xcf, - 0xd8, 0x0b, 0x52, 0x9a, 0x99, 0xf5, 0x9b, 0x88, 0x08, 0x82, 0x92, 0x3c, -}; - const unsigned char test_ec_bp256r1_priv[] = { 0x21, 0x61, 0xd6, 0xf2, 0xdb, 0x76, 0x52, 0x6f, 0xa6, 0x2c, 0x16, 0xf3, 0x56, 0xa8, 0x0f, 0x01, 0xf3, 0x2f, 0x77, 0x67, 0x84, 0xb3, 0x6a, 0xa9, 0x97, 0x99, 0xa8, 0xb7, 0x66, 0x20, 0x80, 0xff, }; - -const unsigned char test_ec_bp320r1_priv[] = { - 0x61, 0xb8, 0xda, 0xa7, 0xa6, 0xe5, 0xaa, 0x9f, 0xcc, 0xf1, 0xef, 0x50, 0x42, 0x20, 0xb2, 0xe5, - 0xa5, 0xb8, 0xc6, 0xdc, 0x74, 0x75, 0xd1, 0x6d, 0x31, 0x72, 0xd7, 0xdb, 0x0b, 0x27, 0x78, 0x41, - 0x4e, 0x4f, 0x6e, 0x8f, 0xa2, 0x03, 0x2e, 0xad, -}; - -const unsigned char test_ec_bp384r1_priv[] = { - 0x3d, 0xd9, 0x2e, 0x75, 0x0d, 0x90, 0xd7, 0xd3, 0x9f, 0xc1, 0x88, 0x5c, 0xd8, 0xad, 0x12, 0xea, - 0x94, 0x41, 0xf2, 0x2b, 0x93, 0x34, 0xb4, 0xd9, 0x65, 0x20, 0x2a, 0xdb, 0x14, 0x48, 0xce, 0x24, - 0xc5, 0x80, 0x8a, 0x85, 0xdd, 0x9a, 0xfc, 0x22, 0x9a, 0xf0, 0xa3, 0x12, 0x4f, 0x75, 0x5b, 0xcb, -}; - -const unsigned char test_ec_bp512r1_priv[] = { - 0x37, 0x2c, 0x97, 0x78, 0xf6, 0x9f, 0x72, 0x6c, 0xbc, 0xa3, 0xf4, 0xa2, 0x68, 0xf1, 0x6b, 0x4d, - 0x61, 0x7d, 0x10, 0x28, 0x0d, 0x79, 0xa6, 0xa0, 0x29, 0xcd, 0x51, 0x87, 0x9f, 0xe1, 0x01, 0x29, - 0x34, 0xdf, 0xe5, 0x39, 0x54, 0x55, 0x33, 0x7d, 0xf6, 0x90, 0x6d, 0xc7, 0xd6, 0xd2, 0xee, 0xa4, - 0xdb, 0xb2, 0x06, 0x5c, 0x02, 0x28, 0xf7, 0x3b, 0x3e, 0xd7, 0x16, 0x48, 0x0e, 0x7d, 0x71, 0xd2, -}; - -const unsigned char test_ec_bp160r1_pub[] = { - 0x04, 0xd4, 0xb9, 0x18, 0x68, 0x16, 0x35, 0x8e, 0x2f, 0x9c, 0x59, 0xcf, 0x70, 0x74, 0x8c, 0xb7, - 0x06, 0x41, 0xb2, 0x2f, 0xba, 0xb6, 0x54, 0x73, 0xdb, 0x4b, 0x4e, 0x22, 0xa3, 0x61, 0xed, 0x7e, - 0x3d, 0xe7, 0xe8, 0xa8, 0xdd, 0xc4, 0x13, 0x0c, 0x5c, -}; - -const unsigned char test_ec_bp192r1_pub[] = { - 0x04, 0x3f, 0xdd, 0x16, 0x8c, 0x17, 0x9f, 0xf5, 0x36, 0x3d, 0xd7, 0x1d, 0xcd, 0x58, 0xde, 0x96, - 0x17, 0xca, 0xad, 0x79, 0x1a, 0xe0, 0xc3, 0x73, 0x28, 0xbe, 0x9c, 0xa0, 0xbf, 0xc7, 0x9c, 0xeb, - 0xab, 0xf6, 0xa9, 0x5d, 0x1c, 0x52, 0xdf, 0x5b, 0x5f, 0x3c, 0x8b, 0x1a, 0x24, 0x41, 0xcf, 0x6c, - 0x88, -}; - -const unsigned char test_ec_bp224r1_pub[] = { - 0x04, 0x5f, 0xbe, 0xa3, 0x78, 0xfc, 0x85, 0x83, 0xb3, 0x83, 0x7e, 0x3f, 0x21, 0xa4, 0x57, 0xc3, - 0x1e, 0xaf, 0x20, 0xa5, 0x4e, 0x18, 0xeb, 0x11, 0xd1, 0x04, 0xb3, 0xad, 0xc4, 0x7f, 0x9d, 0x1c, - 0x97, 0xeb, 0x9e, 0xa4, 0xac, 0x21, 0x74, 0x0d, 0x70, 0xd8, 0x85, 0x14, 0xb9, 0x8b, 0xf0, 0xbc, - 0x31, 0xad, 0xda, 0xc1, 0xd1, 0x9c, 0x4a, 0xb3, 0xcc, -}; - const unsigned char test_ec_bp256r1_pub[] = { 0x04, 0x76, 0x8c, 0x8c, 0xae, 0x4a, 0xbc, 0xa6, 0x30, 0x6d, 0xb0, 0xed, 0x81, 0xb0, 0xc4, 0xa6, 0x21, 0x5c, 0x37, 0x80, 0x66, 0xec, 0x6d, 0x61, 0x6c, 0x14, 0x6e, 0x13, 0xf1, 0xc7, 0xdf, 0x80, @@ -180,15 +106,11 @@ const unsigned char test_ec_bp256r1_pub[] = { 0x1d, }; -const unsigned char test_ec_bp320r1_pub[] = { - 0x04, 0x9c, 0xae, 0xd8, 0xfb, 0x47, 0x42, 0x95, 0x6c, 0xc2, 0xad, 0x12, 0xa9, 0xa1, 0xc9, 0x95, - 0xe2, 0x17, 0x59, 0xef, 0x26, 0xa0, 0x7b, 0xc2, 0x05, 0x41, 0x36, 0xd3, 0xd2, 0xf2, 0x8b, 0xb3, - 0x31, 0xa7, 0x0e, 0x26, 0xc4, 0xc6, 0x87, 0x27, 0x5a, 0xb1, 0xf4, 0x34, 0xbe, 0x78, 0x71, 0xe1, - 0x15, 0xd2, 0x35, 0x0c, 0x0c, 0x5f, 0x61, 0xd4, 0xd0, 0x6d, 0x2b, 0xcd, 0xb6, 0x7f, 0x5c, 0xb6, - 0x3f, 0xdb, 0x79, 0x4e, 0x59, 0x47, 0xc8, 0x7d, 0xc6, 0x84, 0x9a, 0x58, 0x69, 0x4e, 0x37, 0xe6, - 0xcd, +const unsigned char test_ec_bp384r1_priv[] = { + 0x3d, 0xd9, 0x2e, 0x75, 0x0d, 0x90, 0xd7, 0xd3, 0x9f, 0xc1, 0x88, 0x5c, 0xd8, 0xad, 0x12, 0xea, + 0x94, 0x41, 0xf2, 0x2b, 0x93, 0x34, 0xb4, 0xd9, 0x65, 0x20, 0x2a, 0xdb, 0x14, 0x48, 0xce, 0x24, + 0xc5, 0x80, 0x8a, 0x85, 0xdd, 0x9a, 0xfc, 0x22, 0x9a, 0xf0, 0xa3, 0x12, 0x4f, 0x75, 0x5b, 0xcb, }; - const unsigned char test_ec_bp384r1_pub[] = { 0x04, 0x71, 0x9f, 0x9d, 0x09, 0x3a, 0x62, 0x7e, 0x0d, 0x35, 0x03, 0x85, 0xc6, 0x61, 0xce, 0xbf, 0x00, 0xc6, 0x19, 0x23, 0x56, 0x6f, 0xe9, 0x00, 0x6a, 0x31, 0x07, 0xaf, 0x1d, 0x87, 0x1b, 0xc6, @@ -199,6 +121,12 @@ const unsigned char test_ec_bp384r1_pub[] = { 0x6a, }; +const unsigned char test_ec_bp512r1_priv[] = { + 0x37, 0x2c, 0x97, 0x78, 0xf6, 0x9f, 0x72, 0x6c, 0xbc, 0xa3, 0xf4, 0xa2, 0x68, 0xf1, 0x6b, 0x4d, + 0x61, 0x7d, 0x10, 0x28, 0x0d, 0x79, 0xa6, 0xa0, 0x29, 0xcd, 0x51, 0x87, 0x9f, 0xe1, 0x01, 0x29, + 0x34, 0xdf, 0xe5, 0x39, 0x54, 0x55, 0x33, 0x7d, 0xf6, 0x90, 0x6d, 0xc7, 0xd6, 0xd2, 0xee, 0xa4, + 0xdb, 0xb2, 0x06, 0x5c, 0x02, 0x28, 0xf7, 0x3b, 0x3e, 0xd7, 0x16, 0x48, 0x0e, 0x7d, 0x71, 0xd2, +}; const unsigned char test_ec_bp512r1_pub[] = { 0x04, 0x38, 0xb7, 0xec, 0x92, 0xb6, 0x1c, 0x5c, 0x6c, 0x7f, 0xbc, 0x28, 0xa4, 0xec, 0x75, 0x9d, 0x48, 0xfc, 0xd4, 0xe2, 0xe3, 0x74, 0xde, 0xfd, 0x5c, 0x49, 0x68, 0xa5, 0x4d, 0xbe, 0xf7, 0x51, @@ -211,10 +139,14 @@ const unsigned char test_ec_bp512r1_pub[] = { 0x1a, }; -const unsigned char test_ec_curve255_priv[] = { +const unsigned char test_ec_curve25519_priv[] = { 0x70, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1, 0x72, 0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0, 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x6a, }; +const unsigned char test_ec_curve25519_pub[] = { + 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, + 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a, +}; const unsigned char test_ec_curve448_priv[] = { 0xe4, 0xe4, 0x9f, 0x52, 0x68, 0x6f, 0x9e, 0xe3, 0xb6, 0x38, 0x52, 0x8f, 0x72, 0x1f, 0x15, 0x96, @@ -222,12 +154,6 @@ const unsigned char test_ec_curve448_priv[] = { 0xeb, 0x1a, 0x28, 0x6d, 0xc7, 0x80, 0x18, 0x09, 0x5c, 0xdf, 0xec, 0x05, 0x0e, 0x80, 0x07, 0xb5, 0xf4, 0x90, 0x89, 0x62, 0xba, 0x20, 0xd6, 0xc1, }; - -const unsigned char test_ec_curve255_pub[] = { - 0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b, 0x7d, 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, - 0x0d, 0xbf, 0x3a, 0x0d, 0x26, 0x38, 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b, 0x4e, 0x6a, -}; - const unsigned char test_ec_curve448_pub[] = { 0xc0, 0xd3, 0xa5, 0xa2, 0xb4, 0x16, 0xa5, 0x73, 0xdc, 0x99, 0x09, 0xf9, 0x2f, 0x13, 0x4a, 0xc0, 0x13, 0x23, 0xab, 0x8f, 0x8e, 0x36, 0x80, 0x4e, 0x57, 0x85, 0x88, 0xba, 0x2d, 0x09, 0xfe, 0x7c, @@ -276,6 +202,17 @@ const unsigned char test_rsa_1024_priv[] = { 0xba, 0xf2, 0x5b, 0xe5, 0x73, 0x8a, 0xae, 0x59, 0xbb, 0xfe, 0x1c, 0x99, 0x77, 0x81, 0x44, 0x7a, 0x2b, 0x24, }; +const unsigned char test_rsa_1024_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05, 0x7d, 0x39, 0x6e, 0xe8, 0x4f, 0xb7, 0x5f, + 0xdb, 0xb5, 0xc2, 0xb1, 0x3c, 0x7f, 0xe5, 0xa6, 0x54, 0xaa, 0x8a, 0xa2, 0x47, 0x0b, 0x54, 0x1e, + 0xe1, 0xfe, 0xb0, 0xb1, 0x2d, 0x25, 0xc7, 0x97, 0x11, 0x53, 0x12, 0x49, 0xe1, 0x12, 0x96, 0x28, + 0x04, 0x2d, 0xbb, 0xb6, 0xc1, 0x20, 0xd1, 0x44, 0x35, 0x24, 0xef, 0x4c, 0x0e, 0x6e, 0x1d, 0x89, + 0x56, 0xee, 0xb2, 0x07, 0x7a, 0xf1, 0x23, 0x49, 0xdd, 0xee, 0xe5, 0x44, 0x83, 0xbc, 0x06, 0xc2, + 0xc6, 0x19, 0x48, 0xcd, 0x02, 0xb2, 0x02, 0xe7, 0x96, 0xae, 0xbd, 0x94, 0xd3, 0xa7, 0xcb, 0xf8, + 0x59, 0xc2, 0xc1, 0x81, 0x9c, 0x32, 0x4c, 0xb8, 0x2b, 0x9c, 0xd3, 0x4e, 0xde, 0x26, 0x3a, 0x2a, + 0xbf, 0xfe, 0x47, 0x33, 0xf0, 0x77, 0x86, 0x9e, 0x86, 0x60, 0xf7, 0xd6, 0x83, 0x4d, 0xa5, 0x3d, + 0x69, 0x0e, 0xf7, 0x98, 0x5f, 0x6b, 0xc3, 0x02, 0x03, 0x01, 0x00, 0x01, +}; const unsigned char test_rsa_1026_priv[] = { 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x02, 0xd0, 0x96, 0x61, 0xfc, 0x74, @@ -318,6 +255,17 @@ const unsigned char test_rsa_1026_priv[] = { 0x08, 0x1e, 0x24, 0x0b, 0x6a, 0xe4, 0xe2, 0x71, 0x48, 0x87, 0xdd, 0x78, 0xda, 0xda, 0xeb, 0x0b, 0x92, 0x16, }; +const unsigned char test_rsa_1026_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x02, 0xd0, 0x96, 0x61, 0xfc, 0x74, 0x22, 0x4b, 0xa7, 0xbe, + 0x79, 0x07, 0xab, 0xef, 0x4f, 0x5e, 0x8b, 0xcc, 0x26, 0x4a, 0x80, 0x2c, 0x97, 0x8f, 0x7e, 0xaa, + 0x58, 0x55, 0xad, 0xa0, 0x54, 0x36, 0xd7, 0x5d, 0xb7, 0x68, 0xd2, 0x0f, 0x68, 0x59, 0x5d, 0xbc, + 0xc3, 0xd7, 0x25, 0xb1, 0x38, 0xe8, 0x0b, 0x24, 0x7e, 0x44, 0xa4, 0x16, 0x3a, 0x05, 0x42, 0xfa, + 0xb6, 0x12, 0xac, 0xbb, 0xde, 0x45, 0xf2, 0xe9, 0x38, 0x94, 0xaa, 0x25, 0x3b, 0xdd, 0xef, 0x6a, + 0x7b, 0xec, 0xdc, 0x9c, 0xc2, 0x9a, 0x99, 0xba, 0xcf, 0x48, 0xdc, 0x6e, 0x38, 0xdb, 0x7a, 0x33, + 0xe9, 0xac, 0x92, 0x4c, 0x52, 0x0f, 0xc6, 0xbe, 0x7d, 0x6e, 0x56, 0x46, 0xc1, 0xd6, 0x7f, 0xb8, + 0xb2, 0xb9, 0x7a, 0xc6, 0x0b, 0xee, 0xcc, 0x3b, 0xb8, 0xe7, 0x5b, 0xed, 0x83, 0x15, 0xaa, 0x3f, + 0xe4, 0x6f, 0x74, 0x8a, 0x66, 0xd6, 0xef, 0x02, 0x03, 0x01, 0x00, 0x01, +}; const unsigned char test_rsa_1028_priv[] = { 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x0e, 0x62, 0xa7, 0x6f, 0x0e, 0x0b, @@ -360,6 +308,17 @@ const unsigned char test_rsa_1028_priv[] = { 0x25, 0x03, 0x1b, 0x8d, 0x37, 0x9f, 0x38, 0x9d, 0xe2, 0x77, 0xa9, 0xa0, 0x13, 0x76, 0x51, 0xdf, 0x54, 0x8a, }; +const unsigned char test_rsa_1028_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x0e, 0x62, 0xa7, 0x6f, 0x0e, 0x0b, 0x59, 0x68, 0x3a, 0x7e, + 0xbf, 0x7c, 0xbf, 0xd3, 0x7b, 0x1d, 0x17, 0x81, 0xd8, 0xf1, 0xb9, 0x00, 0x60, 0x4b, 0x50, 0x7f, + 0x0f, 0x04, 0xc7, 0x2a, 0x3d, 0x34, 0x0d, 0x06, 0x7b, 0xcd, 0x53, 0xbe, 0xa3, 0xca, 0xff, 0x4e, + 0x4a, 0xe6, 0x94, 0xf0, 0xb6, 0xd8, 0xf5, 0x91, 0xa4, 0x16, 0x7f, 0xbf, 0x7f, 0x37, 0x2a, 0xb5, + 0x7e, 0x83, 0xa6, 0x9a, 0x3f, 0x26, 0xf4, 0x47, 0xbc, 0xf5, 0x82, 0xbc, 0x96, 0x21, 0xa3, 0x0a, + 0x3b, 0x44, 0xd6, 0xb4, 0x3e, 0x98, 0x6d, 0x1a, 0x86, 0x7b, 0x07, 0x48, 0x9e, 0x4f, 0x9b, 0xfc, + 0xad, 0xaa, 0x82, 0xa2, 0x78, 0x2d, 0xc2, 0x72, 0x9a, 0x63, 0x1f, 0xb1, 0xfb, 0x9f, 0xfb, 0x79, + 0x4b, 0x4e, 0x53, 0xc7, 0x62, 0x39, 0xe0, 0x4d, 0x4a, 0x8f, 0x80, 0x35, 0x25, 0x88, 0xdb, 0x29, + 0x46, 0x2d, 0xde, 0x18, 0x23, 0x7c, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, +}; const unsigned char test_rsa_1030_priv[] = { 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x2b, 0x7c, 0xd1, 0x97, 0xf5, 0x79, @@ -402,6 +361,17 @@ const unsigned char test_rsa_1030_priv[] = { 0x32, 0x6a, 0x21, 0x42, 0xfc, 0xa4, 0x54, 0xbb, 0xd3, 0x8d, 0x6d, 0xbc, 0x6c, 0xaa, 0x7a, 0xc3, 0x35, 0xa1, 0x7c, }; +const unsigned char test_rsa_1030_pub[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x2b, 0x7c, 0xd1, 0x97, 0xf5, 0x79, 0x6d, 0x1f, 0x8e, 0x57, + 0x6b, 0x2b, 0x37, 0x72, 0x3f, 0xd9, 0x21, 0x08, 0x14, 0xef, 0x1c, 0x19, 0x95, 0xf9, 0x89, 0x9d, + 0x50, 0x05, 0x8f, 0x37, 0x9d, 0x23, 0x9c, 0x66, 0x87, 0x8e, 0x92, 0x2f, 0x34, 0xc6, 0xae, 0x36, + 0x72, 0xc8, 0x59, 0x8f, 0xcd, 0x5d, 0x47, 0xb7, 0x64, 0xd2, 0xec, 0x15, 0x6e, 0x13, 0x4d, 0x03, + 0xcf, 0x6a, 0x94, 0xd3, 0x8d, 0x2e, 0xa8, 0xbc, 0x76, 0xdb, 0xbc, 0x60, 0xc4, 0xb9, 0x74, 0x21, + 0x90, 0x90, 0xea, 0xf2, 0x87, 0x49, 0x7d, 0x7d, 0xcf, 0x7f, 0x11, 0x9c, 0xfa, 0x86, 0x74, 0x96, + 0xf7, 0xe9, 0x1c, 0x12, 0xb5, 0xd5, 0x52, 0xe1, 0xd1, 0x46, 0x1a, 0x80, 0xdb, 0xe9, 0xa5, 0x9d, + 0xb3, 0xb0, 0x16, 0xc6, 0xc0, 0x14, 0x1c, 0x3b, 0x2a, 0x0e, 0x22, 0x60, 0x89, 0xb8, 0x55, 0xcb, + 0x88, 0xef, 0x65, 0x64, 0x08, 0xbd, 0x89, 0x02, 0x03, 0x01, 0x00, 0x01, +}; const unsigned char test_rsa_1536_priv[] = { 0x30, 0x82, 0x03, 0x7b, 0x02, 0x01, 0x00, 0x02, 0x81, 0xc1, 0x00, 0xc8, 0x70, 0xfe, 0xb6, 0xca, @@ -461,6 +431,21 @@ const unsigned char test_rsa_1536_priv[] = { 0x8a, 0xc2, 0x71, 0x0c, 0xb5, 0x87, 0x8b, 0x59, 0x2f, 0xfe, 0xb1, 0xf4, 0xf0, 0xa1, 0x85, 0x3e, 0x4e, 0x8d, 0x1d, 0x05, 0x61, 0xb6, 0xef, 0xcc, 0x83, 0x1a, 0x29, 0x6c, 0xf7, 0xee, 0xaf, }; +const unsigned char test_rsa_1536_pub[] = { + 0x30, 0x81, 0xc9, 0x02, 0x81, 0xc1, 0x00, 0xc8, 0x70, 0xfe, 0xb6, 0xca, 0x6b, 0x1d, 0x2b, 0xd9, + 0xf2, 0xdd, 0x99, 0xe2, 0x0f, 0x1f, 0xe2, 0xd7, 0xe5, 0x19, 0x2d, 0xe6, 0x62, 0x22, 0x9d, 0xbe, + 0x16, 0x2b, 0xd1, 0xba, 0x66, 0x33, 0x6a, 0x71, 0x82, 0x90, 0x3c, 0xa0, 0xb7, 0x27, 0x96, 0xcd, + 0x44, 0x1c, 0x83, 0xd2, 0x4b, 0xcd, 0xc3, 0xe9, 0xa2, 0xf5, 0xe4, 0x39, 0x9c, 0x8a, 0x04, 0x3f, + 0x1c, 0x3d, 0xdf, 0x04, 0x75, 0x4a, 0x66, 0xd4, 0xcf, 0xe7, 0xb3, 0x67, 0x1a, 0x37, 0xdd, 0x31, + 0xa9, 0xb4, 0xc1, 0x3b, 0xfe, 0x06, 0xee, 0x90, 0xf9, 0xd9, 0x4d, 0xda, 0xa0, 0x6d, 0xe6, 0x7a, + 0x52, 0xac, 0x86, 0x3e, 0x68, 0xf7, 0x56, 0x73, 0x6c, 0xeb, 0x01, 0x44, 0x05, 0xa6, 0x16, 0x05, + 0x79, 0x64, 0x0f, 0x83, 0x1d, 0xdd, 0xcc, 0xc3, 0x4a, 0xd0, 0xb0, 0x50, 0x70, 0xe3, 0xf9, 0x95, + 0x4a, 0x58, 0xd1, 0x81, 0x58, 0x13, 0xe1, 0xb8, 0x3b, 0xca, 0xdb, 0xa8, 0x14, 0x78, 0x9c, 0x87, + 0xf1, 0xef, 0x2b, 0xa5, 0xd7, 0x38, 0xb7, 0x93, 0xec, 0x45, 0x6a, 0x67, 0x36, 0x0e, 0xea, 0x1b, + 0x5f, 0xaf, 0x1c, 0x7c, 0xc7, 0xbf, 0x24, 0xf3, 0xb2, 0xa9, 0xd0, 0xf8, 0x95, 0x8b, 0x10, 0x96, + 0xe0, 0xf0, 0xc3, 0x35, 0xf8, 0x88, 0x8d, 0x0c, 0x63, 0xa5, 0x1c, 0x3c, 0x03, 0x37, 0x21, 0x4f, + 0xa3, 0xf5, 0xef, 0xdf, 0x6d, 0xcc, 0x35, 0x02, 0x03, 0x01, 0x00, 0x01, +}; const unsigned char test_rsa_2048_priv[] = { 0x30, 0x82, 0x04, 0xa3, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf7, 0xbb, 0x6b, 0x8e, @@ -539,6 +524,25 @@ const unsigned char test_rsa_2048_priv[] = { 0xbf, 0x08, 0x75, 0x2d, 0x40, 0xa8, 0x41, 0x9d, 0xe7, 0x1b, 0x01, 0xd4, 0x92, 0x7e, 0x27, 0xc1, 0x07, 0x9c, 0xaa, 0xda, 0x05, 0x68, 0xb1, }; +const unsigned char test_rsa_2048_pub[] = { + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf7, 0xbb, 0x6b, 0x8e, 0xab, 0x40, 0x49, + 0x1c, 0xd6, 0x44, 0x55, 0xec, 0x04, 0xd4, 0xed, 0x8d, 0xb5, 0x05, 0x1a, 0x97, 0x38, 0xfc, 0x7a, + 0xf7, 0x3f, 0xf3, 0xb0, 0x97, 0x51, 0x1c, 0xce, 0x40, 0xaa, 0xf7, 0x65, 0x37, 0xb1, 0x35, 0x35, + 0x04, 0x42, 0x79, 0x86, 0xb7, 0xb2, 0xb5, 0x3a, 0x96, 0x4a, 0x69, 0x37, 0xb5, 0x58, 0xec, 0x0d, + 0x1d, 0xea, 0x27, 0x4a, 0xf2, 0xb8, 0xff, 0xf2, 0xf0, 0x94, 0xc2, 0x43, 0xfa, 0x57, 0x72, 0x66, + 0xa7, 0x9d, 0xb0, 0xc2, 0x6f, 0xfe, 0x30, 0x41, 0x6d, 0x23, 0xef, 0x05, 0xdd, 0x5f, 0xec, 0xab, + 0x41, 0x3e, 0xbb, 0xb4, 0xf8, 0x52, 0x6a, 0xe7, 0x20, 0xa9, 0x45, 0x84, 0x22, 0x6b, 0x37, 0xd9, + 0x2e, 0xf4, 0x63, 0xfc, 0x73, 0x6c, 0xb3, 0x8e, 0x53, 0x0e, 0x74, 0x88, 0xd9, 0x16, 0x2f, 0x57, + 0x26, 0x80, 0x7b, 0xc5, 0x43, 0x13, 0x8a, 0x2d, 0x25, 0x8a, 0xdb, 0x4d, 0x68, 0x02, 0x21, 0xc2, + 0x53, 0x23, 0x81, 0xcc, 0xfa, 0x81, 0xbc, 0x89, 0xbc, 0x3d, 0x7b, 0x84, 0x03, 0x9c, 0x2d, 0xf4, + 0x1c, 0xe3, 0xec, 0x8d, 0xb9, 0x1c, 0x23, 0x80, 0xe7, 0x81, 0xba, 0x3a, 0xa9, 0xe2, 0x3b, 0x74, + 0xed, 0x99, 0x73, 0xd4, 0x90, 0x8e, 0xfc, 0xa4, 0x7a, 0xa8, 0xd9, 0xb7, 0xb0, 0xa4, 0x42, 0x32, + 0x97, 0xa4, 0x04, 0x42, 0x7c, 0x3f, 0x3c, 0xd6, 0xe0, 0x78, 0x2e, 0x45, 0x53, 0x88, 0x0f, 0x06, + 0xba, 0x39, 0xa6, 0x4f, 0x4a, 0x7b, 0x0e, 0xef, 0x92, 0x1a, 0x60, 0x50, 0xa2, 0x07, 0xce, 0xfa, + 0xdc, 0xf0, 0x73, 0x94, 0xa3, 0xe1, 0x8e, 0xa9, 0x15, 0xdc, 0x84, 0x97, 0xe7, 0xae, 0x61, 0xfc, + 0x31, 0x62, 0xf6, 0x2f, 0x50, 0x65, 0xa6, 0x92, 0xaf, 0x07, 0x72, 0x66, 0xf7, 0x36, 0x0c, 0x20, + 0x76, 0xce, 0xbe, 0xaf, 0x14, 0xcb, 0x22, 0xc1, 0xed, 0x02, 0x03, 0x01, 0x00, 0x01, +}; const unsigned char test_rsa_4096_priv[] = { 0x30, 0x82, 0x09, 0x29, 0x02, 0x01, 0x00, 0x02, 0x82, 0x02, 0x01, 0x00, 0xcc, 0x87, 0x25, 0xf6, @@ -689,91 +693,6 @@ const unsigned char test_rsa_4096_priv[] = { 0x2f, 0x20, 0xc0, 0x05, 0xa2, 0x51, 0x9e, 0x3a, 0x87, 0x41, 0x46, 0x49, 0x5d, 0x7a, 0xac, 0xf3, 0x41, 0x6a, 0x42, 0x2e, 0x56, 0x09, 0x86, 0xf2, 0x2f, 0x39, 0x45, 0x6e, 0x7f, }; - -const unsigned char test_rsa_1024_pub[] = { - 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05, 0x7d, 0x39, 0x6e, 0xe8, 0x4f, 0xb7, 0x5f, - 0xdb, 0xb5, 0xc2, 0xb1, 0x3c, 0x7f, 0xe5, 0xa6, 0x54, 0xaa, 0x8a, 0xa2, 0x47, 0x0b, 0x54, 0x1e, - 0xe1, 0xfe, 0xb0, 0xb1, 0x2d, 0x25, 0xc7, 0x97, 0x11, 0x53, 0x12, 0x49, 0xe1, 0x12, 0x96, 0x28, - 0x04, 0x2d, 0xbb, 0xb6, 0xc1, 0x20, 0xd1, 0x44, 0x35, 0x24, 0xef, 0x4c, 0x0e, 0x6e, 0x1d, 0x89, - 0x56, 0xee, 0xb2, 0x07, 0x7a, 0xf1, 0x23, 0x49, 0xdd, 0xee, 0xe5, 0x44, 0x83, 0xbc, 0x06, 0xc2, - 0xc6, 0x19, 0x48, 0xcd, 0x02, 0xb2, 0x02, 0xe7, 0x96, 0xae, 0xbd, 0x94, 0xd3, 0xa7, 0xcb, 0xf8, - 0x59, 0xc2, 0xc1, 0x81, 0x9c, 0x32, 0x4c, 0xb8, 0x2b, 0x9c, 0xd3, 0x4e, 0xde, 0x26, 0x3a, 0x2a, - 0xbf, 0xfe, 0x47, 0x33, 0xf0, 0x77, 0x86, 0x9e, 0x86, 0x60, 0xf7, 0xd6, 0x83, 0x4d, 0xa5, 0x3d, - 0x69, 0x0e, 0xf7, 0x98, 0x5f, 0x6b, 0xc3, 0x02, 0x03, 0x01, 0x00, 0x01, -}; - -const unsigned char test_rsa_1026_pub[] = { - 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x02, 0xd0, 0x96, 0x61, 0xfc, 0x74, 0x22, 0x4b, 0xa7, 0xbe, - 0x79, 0x07, 0xab, 0xef, 0x4f, 0x5e, 0x8b, 0xcc, 0x26, 0x4a, 0x80, 0x2c, 0x97, 0x8f, 0x7e, 0xaa, - 0x58, 0x55, 0xad, 0xa0, 0x54, 0x36, 0xd7, 0x5d, 0xb7, 0x68, 0xd2, 0x0f, 0x68, 0x59, 0x5d, 0xbc, - 0xc3, 0xd7, 0x25, 0xb1, 0x38, 0xe8, 0x0b, 0x24, 0x7e, 0x44, 0xa4, 0x16, 0x3a, 0x05, 0x42, 0xfa, - 0xb6, 0x12, 0xac, 0xbb, 0xde, 0x45, 0xf2, 0xe9, 0x38, 0x94, 0xaa, 0x25, 0x3b, 0xdd, 0xef, 0x6a, - 0x7b, 0xec, 0xdc, 0x9c, 0xc2, 0x9a, 0x99, 0xba, 0xcf, 0x48, 0xdc, 0x6e, 0x38, 0xdb, 0x7a, 0x33, - 0xe9, 0xac, 0x92, 0x4c, 0x52, 0x0f, 0xc6, 0xbe, 0x7d, 0x6e, 0x56, 0x46, 0xc1, 0xd6, 0x7f, 0xb8, - 0xb2, 0xb9, 0x7a, 0xc6, 0x0b, 0xee, 0xcc, 0x3b, 0xb8, 0xe7, 0x5b, 0xed, 0x83, 0x15, 0xaa, 0x3f, - 0xe4, 0x6f, 0x74, 0x8a, 0x66, 0xd6, 0xef, 0x02, 0x03, 0x01, 0x00, 0x01, -}; - -const unsigned char test_rsa_1028_pub[] = { - 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x0e, 0x62, 0xa7, 0x6f, 0x0e, 0x0b, 0x59, 0x68, 0x3a, 0x7e, - 0xbf, 0x7c, 0xbf, 0xd3, 0x7b, 0x1d, 0x17, 0x81, 0xd8, 0xf1, 0xb9, 0x00, 0x60, 0x4b, 0x50, 0x7f, - 0x0f, 0x04, 0xc7, 0x2a, 0x3d, 0x34, 0x0d, 0x06, 0x7b, 0xcd, 0x53, 0xbe, 0xa3, 0xca, 0xff, 0x4e, - 0x4a, 0xe6, 0x94, 0xf0, 0xb6, 0xd8, 0xf5, 0x91, 0xa4, 0x16, 0x7f, 0xbf, 0x7f, 0x37, 0x2a, 0xb5, - 0x7e, 0x83, 0xa6, 0x9a, 0x3f, 0x26, 0xf4, 0x47, 0xbc, 0xf5, 0x82, 0xbc, 0x96, 0x21, 0xa3, 0x0a, - 0x3b, 0x44, 0xd6, 0xb4, 0x3e, 0x98, 0x6d, 0x1a, 0x86, 0x7b, 0x07, 0x48, 0x9e, 0x4f, 0x9b, 0xfc, - 0xad, 0xaa, 0x82, 0xa2, 0x78, 0x2d, 0xc2, 0x72, 0x9a, 0x63, 0x1f, 0xb1, 0xfb, 0x9f, 0xfb, 0x79, - 0x4b, 0x4e, 0x53, 0xc7, 0x62, 0x39, 0xe0, 0x4d, 0x4a, 0x8f, 0x80, 0x35, 0x25, 0x88, 0xdb, 0x29, - 0x46, 0x2d, 0xde, 0x18, 0x23, 0x7c, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, -}; - -const unsigned char test_rsa_1030_pub[] = { - 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x2b, 0x7c, 0xd1, 0x97, 0xf5, 0x79, 0x6d, 0x1f, 0x8e, 0x57, - 0x6b, 0x2b, 0x37, 0x72, 0x3f, 0xd9, 0x21, 0x08, 0x14, 0xef, 0x1c, 0x19, 0x95, 0xf9, 0x89, 0x9d, - 0x50, 0x05, 0x8f, 0x37, 0x9d, 0x23, 0x9c, 0x66, 0x87, 0x8e, 0x92, 0x2f, 0x34, 0xc6, 0xae, 0x36, - 0x72, 0xc8, 0x59, 0x8f, 0xcd, 0x5d, 0x47, 0xb7, 0x64, 0xd2, 0xec, 0x15, 0x6e, 0x13, 0x4d, 0x03, - 0xcf, 0x6a, 0x94, 0xd3, 0x8d, 0x2e, 0xa8, 0xbc, 0x76, 0xdb, 0xbc, 0x60, 0xc4, 0xb9, 0x74, 0x21, - 0x90, 0x90, 0xea, 0xf2, 0x87, 0x49, 0x7d, 0x7d, 0xcf, 0x7f, 0x11, 0x9c, 0xfa, 0x86, 0x74, 0x96, - 0xf7, 0xe9, 0x1c, 0x12, 0xb5, 0xd5, 0x52, 0xe1, 0xd1, 0x46, 0x1a, 0x80, 0xdb, 0xe9, 0xa5, 0x9d, - 0xb3, 0xb0, 0x16, 0xc6, 0xc0, 0x14, 0x1c, 0x3b, 0x2a, 0x0e, 0x22, 0x60, 0x89, 0xb8, 0x55, 0xcb, - 0x88, 0xef, 0x65, 0x64, 0x08, 0xbd, 0x89, 0x02, 0x03, 0x01, 0x00, 0x01, -}; - -const unsigned char test_rsa_1536_pub[] = { - 0x30, 0x81, 0xc9, 0x02, 0x81, 0xc1, 0x00, 0xc8, 0x70, 0xfe, 0xb6, 0xca, 0x6b, 0x1d, 0x2b, 0xd9, - 0xf2, 0xdd, 0x99, 0xe2, 0x0f, 0x1f, 0xe2, 0xd7, 0xe5, 0x19, 0x2d, 0xe6, 0x62, 0x22, 0x9d, 0xbe, - 0x16, 0x2b, 0xd1, 0xba, 0x66, 0x33, 0x6a, 0x71, 0x82, 0x90, 0x3c, 0xa0, 0xb7, 0x27, 0x96, 0xcd, - 0x44, 0x1c, 0x83, 0xd2, 0x4b, 0xcd, 0xc3, 0xe9, 0xa2, 0xf5, 0xe4, 0x39, 0x9c, 0x8a, 0x04, 0x3f, - 0x1c, 0x3d, 0xdf, 0x04, 0x75, 0x4a, 0x66, 0xd4, 0xcf, 0xe7, 0xb3, 0x67, 0x1a, 0x37, 0xdd, 0x31, - 0xa9, 0xb4, 0xc1, 0x3b, 0xfe, 0x06, 0xee, 0x90, 0xf9, 0xd9, 0x4d, 0xda, 0xa0, 0x6d, 0xe6, 0x7a, - 0x52, 0xac, 0x86, 0x3e, 0x68, 0xf7, 0x56, 0x73, 0x6c, 0xeb, 0x01, 0x44, 0x05, 0xa6, 0x16, 0x05, - 0x79, 0x64, 0x0f, 0x83, 0x1d, 0xdd, 0xcc, 0xc3, 0x4a, 0xd0, 0xb0, 0x50, 0x70, 0xe3, 0xf9, 0x95, - 0x4a, 0x58, 0xd1, 0x81, 0x58, 0x13, 0xe1, 0xb8, 0x3b, 0xca, 0xdb, 0xa8, 0x14, 0x78, 0x9c, 0x87, - 0xf1, 0xef, 0x2b, 0xa5, 0xd7, 0x38, 0xb7, 0x93, 0xec, 0x45, 0x6a, 0x67, 0x36, 0x0e, 0xea, 0x1b, - 0x5f, 0xaf, 0x1c, 0x7c, 0xc7, 0xbf, 0x24, 0xf3, 0xb2, 0xa9, 0xd0, 0xf8, 0x95, 0x8b, 0x10, 0x96, - 0xe0, 0xf0, 0xc3, 0x35, 0xf8, 0x88, 0x8d, 0x0c, 0x63, 0xa5, 0x1c, 0x3c, 0x03, 0x37, 0x21, 0x4f, - 0xa3, 0xf5, 0xef, 0xdf, 0x6d, 0xcc, 0x35, 0x02, 0x03, 0x01, 0x00, 0x01, -}; - -const unsigned char test_rsa_2048_pub[] = { - 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf7, 0xbb, 0x6b, 0x8e, 0xab, 0x40, 0x49, - 0x1c, 0xd6, 0x44, 0x55, 0xec, 0x04, 0xd4, 0xed, 0x8d, 0xb5, 0x05, 0x1a, 0x97, 0x38, 0xfc, 0x7a, - 0xf7, 0x3f, 0xf3, 0xb0, 0x97, 0x51, 0x1c, 0xce, 0x40, 0xaa, 0xf7, 0x65, 0x37, 0xb1, 0x35, 0x35, - 0x04, 0x42, 0x79, 0x86, 0xb7, 0xb2, 0xb5, 0x3a, 0x96, 0x4a, 0x69, 0x37, 0xb5, 0x58, 0xec, 0x0d, - 0x1d, 0xea, 0x27, 0x4a, 0xf2, 0xb8, 0xff, 0xf2, 0xf0, 0x94, 0xc2, 0x43, 0xfa, 0x57, 0x72, 0x66, - 0xa7, 0x9d, 0xb0, 0xc2, 0x6f, 0xfe, 0x30, 0x41, 0x6d, 0x23, 0xef, 0x05, 0xdd, 0x5f, 0xec, 0xab, - 0x41, 0x3e, 0xbb, 0xb4, 0xf8, 0x52, 0x6a, 0xe7, 0x20, 0xa9, 0x45, 0x84, 0x22, 0x6b, 0x37, 0xd9, - 0x2e, 0xf4, 0x63, 0xfc, 0x73, 0x6c, 0xb3, 0x8e, 0x53, 0x0e, 0x74, 0x88, 0xd9, 0x16, 0x2f, 0x57, - 0x26, 0x80, 0x7b, 0xc5, 0x43, 0x13, 0x8a, 0x2d, 0x25, 0x8a, 0xdb, 0x4d, 0x68, 0x02, 0x21, 0xc2, - 0x53, 0x23, 0x81, 0xcc, 0xfa, 0x81, 0xbc, 0x89, 0xbc, 0x3d, 0x7b, 0x84, 0x03, 0x9c, 0x2d, 0xf4, - 0x1c, 0xe3, 0xec, 0x8d, 0xb9, 0x1c, 0x23, 0x80, 0xe7, 0x81, 0xba, 0x3a, 0xa9, 0xe2, 0x3b, 0x74, - 0xed, 0x99, 0x73, 0xd4, 0x90, 0x8e, 0xfc, 0xa4, 0x7a, 0xa8, 0xd9, 0xb7, 0xb0, 0xa4, 0x42, 0x32, - 0x97, 0xa4, 0x04, 0x42, 0x7c, 0x3f, 0x3c, 0xd6, 0xe0, 0x78, 0x2e, 0x45, 0x53, 0x88, 0x0f, 0x06, - 0xba, 0x39, 0xa6, 0x4f, 0x4a, 0x7b, 0x0e, 0xef, 0x92, 0x1a, 0x60, 0x50, 0xa2, 0x07, 0xce, 0xfa, - 0xdc, 0xf0, 0x73, 0x94, 0xa3, 0xe1, 0x8e, 0xa9, 0x15, 0xdc, 0x84, 0x97, 0xe7, 0xae, 0x61, 0xfc, - 0x31, 0x62, 0xf6, 0x2f, 0x50, 0x65, 0xa6, 0x92, 0xaf, 0x07, 0x72, 0x66, 0xf7, 0x36, 0x0c, 0x20, - 0x76, 0xce, 0xbe, 0xaf, 0x14, 0xcb, 0x22, 0xc1, 0xed, 0x02, 0x03, 0x01, 0x00, 0x01, -}; - const unsigned char test_rsa_4096_pub[] = { 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xcc, 0x87, 0x25, 0xf6, 0xb3, 0x8d, 0x5d, 0x01, 0xae, 0xeb, 0x07, 0xd3, 0x6e, 0x03, 0xde, 0x4d, 0x31, 0xa0, 0x26, 0x1c, 0xe7, 0x4f, 0xe1, @@ -809,3 +728,72 @@ const unsigned char test_rsa_4096_pub[] = { 0xf9, 0x34, 0xe2, 0xb4, 0x0f, 0xde, 0xbb, 0xa3, 0xd9, 0x70, 0x1b, 0x76, 0xe1, 0xbe, 0x54, 0x82, 0x74, 0xb2, 0x60, 0x2d, 0x88, 0x85, 0x37, 0x48, 0x2d, 0x02, 0x03, 0x01, 0x00, 0x01, }; + +struct predefined_key_element { + int is_ec; // 1 for EC keys; 0 for RSA + int curve_or_keybits; + const unsigned char *priv_key; + size_t priv_key_len; + const unsigned char *pub_key; + size_t pub_key_len; +}; + +struct predefined_key_element predefined_keys[] = { + { 1, MBEDTLS_ECP_DP_SECP192K1, + test_ec_secp192k1_priv, sizeof(test_ec_secp192k1_priv), + test_ec_secp192k1_pub, sizeof(test_ec_secp192k1_pub) }, + { 1, MBEDTLS_ECP_DP_SECP256K1, + test_ec_secp256k1_priv, sizeof(test_ec_secp256k1_priv), + test_ec_secp256k1_pub, sizeof(test_ec_secp256k1_pub) }, + { 1, MBEDTLS_ECP_DP_SECP192R1, + test_ec_secp192r1_priv, sizeof(test_ec_secp192r1_priv), + test_ec_secp192r1_pub, sizeof(test_ec_secp192r1_pub) }, + { 1, MBEDTLS_ECP_DP_SECP224R1, + test_ec_secp224r1_priv, sizeof(test_ec_secp224r1_priv), + test_ec_secp224r1_pub, sizeof(test_ec_secp224r1_pub) }, + { 1, MBEDTLS_ECP_DP_SECP256R1, + test_ec_secp256r1_priv, sizeof(test_ec_secp256r1_priv), + test_ec_secp256r1_pub, sizeof(test_ec_secp256r1_pub) }, + { 1, MBEDTLS_ECP_DP_SECP384R1, + test_ec_secp384r1_priv, sizeof(test_ec_secp384r1_priv), + test_ec_secp384r1_pub, sizeof(test_ec_secp384r1_pub) }, + { 1, MBEDTLS_ECP_DP_SECP521R1, + test_ec_secp521r1_priv, sizeof(test_ec_secp521r1_priv), + test_ec_secp521r1_pub, sizeof(test_ec_secp521r1_pub) }, + { 1, MBEDTLS_ECP_DP_BP256R1, + test_ec_bp256r1_priv, sizeof(test_ec_bp256r1_priv), + test_ec_bp256r1_pub, sizeof(test_ec_bp256r1_pub) }, + { 1, MBEDTLS_ECP_DP_BP384R1, + test_ec_bp384r1_priv, sizeof(test_ec_bp384r1_priv), + test_ec_bp384r1_pub, sizeof(test_ec_bp384r1_pub) }, + { 1, MBEDTLS_ECP_DP_BP512R1, + test_ec_bp512r1_priv, sizeof(test_ec_bp512r1_priv), + test_ec_bp512r1_pub, sizeof(test_ec_bp512r1_pub) }, + { 1, MBEDTLS_ECP_DP_CURVE25519, + test_ec_curve25519_priv, sizeof(test_ec_curve25519_priv), + test_ec_curve25519_pub, sizeof(test_ec_curve25519_pub) }, + { 1, MBEDTLS_ECP_DP_CURVE448, + test_ec_curve448_priv, sizeof(test_ec_curve448_priv), + test_ec_curve448_pub, sizeof(test_ec_curve448_pub) }, + { 0, 1024, + test_rsa_1024_priv, sizeof(test_rsa_1024_priv), + test_rsa_1024_pub, sizeof(test_rsa_1024_pub) }, + { 0, 1026, + test_rsa_1026_priv, sizeof(test_rsa_1026_priv), + test_rsa_1026_pub, sizeof(test_rsa_1026_pub) }, + { 0, 1028, + test_rsa_1028_priv, sizeof(test_rsa_1028_priv), + test_rsa_1028_pub, sizeof(test_rsa_1028_pub) }, + { 0, 1030, + test_rsa_1030_priv, sizeof(test_rsa_1030_priv), + test_rsa_1030_pub, sizeof(test_rsa_1030_pub) }, + { 0, 1536, + test_rsa_1536_priv, sizeof(test_rsa_1536_priv), + test_rsa_1536_pub, sizeof(test_rsa_1536_pub) }, + { 0, 2048, + test_rsa_2048_priv, sizeof(test_rsa_2048_priv), + test_rsa_2048_pub, sizeof(test_rsa_2048_pub) }, + { 0, 4096, + test_rsa_4096_priv, sizeof(test_rsa_4096_priv), + test_rsa_4096_pub, sizeof(test_rsa_4096_pub) }, +}; diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 36f447f426..968f4dd160 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -185,65 +185,20 @@ #endif #include <../src/test_keys.h> -struct key_lut_element { - int curve_or_keybits; - const unsigned char *key; - size_t key_len; - const unsigned char *pub_key; - size_t pub_key_len; -}; -struct key_lut_element keys_lut[] = { - { 1024, test_rsa_1024_priv, sizeof(test_rsa_1024_priv), - test_rsa_1024_pub, sizeof(test_rsa_1024_pub) }, - { 1026, test_rsa_1026_priv, sizeof(test_rsa_1026_priv), - test_rsa_1026_pub, sizeof(test_rsa_1026_pub) }, - { 1028, test_rsa_1028_priv, sizeof(test_rsa_1028_priv), - test_rsa_1028_pub, sizeof(test_rsa_1028_pub) }, - { 1030, test_rsa_1030_priv, sizeof(test_rsa_1030_priv), - test_rsa_1030_pub, sizeof(test_rsa_1030_pub) }, - { 2048, test_rsa_2048_priv, sizeof(test_rsa_2048_priv), - test_rsa_2048_pub, sizeof(test_rsa_2048_pub) }, - { 4096, test_rsa_4096_priv, sizeof(test_rsa_4096_priv), - test_rsa_4096_pub, sizeof(test_rsa_4096_pub) }, - { MBEDTLS_ECP_DP_SECP192R1, test_ec_secp192r1_priv, sizeof(test_ec_secp192r1_priv), - test_ec_secp192r1_pub, sizeof(test_ec_secp192r1_pub) }, - { MBEDTLS_ECP_DP_SECP224R1, test_ec_secp224r1_priv, sizeof(test_ec_secp224r1_priv), - test_ec_secp224r1_pub, sizeof(test_ec_secp224r1_pub) }, - { MBEDTLS_ECP_DP_SECP256R1, test_ec_secp256r1_priv, sizeof(test_ec_secp256r1_priv), - test_ec_secp256r1_pub, sizeof(test_ec_secp256r1_pub) }, - { MBEDTLS_ECP_DP_SECP384R1, test_ec_secp384r1_priv, sizeof(test_ec_secp384r1_priv), - test_ec_secp384r1_pub, sizeof(test_ec_secp384r1_pub) }, - { MBEDTLS_ECP_DP_SECP521R1, test_ec_secp521r1_priv, sizeof(test_ec_secp521r1_priv), - test_ec_secp521r1_pub, sizeof(test_ec_secp521r1_pub) }, - { MBEDTLS_ECP_DP_BP256R1, test_ec_bp256r1_priv, sizeof(test_ec_bp256r1_priv), - test_ec_bp256r1_pub, sizeof(test_ec_bp256r1_pub) }, - { MBEDTLS_ECP_DP_BP384R1, test_ec_bp384r1_priv, sizeof(test_ec_bp384r1_priv), - test_ec_bp384r1_pub, sizeof(test_ec_bp384r1_pub) }, - { MBEDTLS_ECP_DP_BP512R1, test_ec_bp512r1_priv, sizeof(test_ec_bp512r1_priv), - test_ec_bp512r1_pub, sizeof(test_ec_bp512r1_pub) }, - { MBEDTLS_ECP_DP_CURVE25519, test_ec_curve255_priv, sizeof(test_ec_curve255_priv), - test_ec_curve255_pub, sizeof(test_ec_curve255_pub) }, - { MBEDTLS_ECP_DP_SECP192K1, test_ec_secp192k1_priv, sizeof(test_ec_secp192k1_priv), - test_ec_secp192k1_pub, sizeof(test_ec_secp192k1_pub) }, - { MBEDTLS_ECP_DP_SECP256K1, test_ec_secp256k1_priv, sizeof(test_ec_secp256k1_priv), - test_ec_secp256k1_pub, sizeof(test_ec_secp256k1_pub) }, - { MBEDTLS_ECP_DP_CURVE448, test_ec_curve448_priv, sizeof(test_ec_curve448_priv), - test_ec_curve448_pub, sizeof(test_ec_curve448_pub) }, -}; - -static int get_predefined_key_data(int curve_or_keybits, +static int get_predefined_key_data(int is_ec, int curve_or_keybits, const unsigned char **key, size_t *key_len, const unsigned char **pub_key, size_t *pub_key_len) { size_t i; - for (i = 0; i < ARRAY_LENGTH(keys_lut); i++) { - if (curve_or_keybits == keys_lut[i].curve_or_keybits) { - *key = keys_lut[i].key; - *key_len = keys_lut[i].key_len; + for (i = 0; i < ARRAY_LENGTH(predefined_keys); i++) { + if ((is_ec == predefined_keys[i].is_ec) && + (curve_or_keybits == predefined_keys[i].curve_or_keybits)) { + *key = predefined_keys[i].priv_key; + *key_len = predefined_keys[i].priv_key_len; if (pub_key != NULL) { - *pub_key = keys_lut[i].pub_key; - *pub_key_len = keys_lut[i].pub_key_len; + *pub_key = predefined_keys[i].pub_key; + *pub_key_len = predefined_keys[i].pub_key_len; } return 0; } @@ -301,12 +256,12 @@ static int pk_genkey(mbedtls_pk_context *pk, mbedtls_pk_type_t pk_type, int curv int ret = MBEDTLS_ERR_PK_BAD_INPUT_DATA; if (pk_type == MBEDTLS_PK_RSA) { - TEST_EQUAL(get_predefined_key_data(curve_or_keybits, &key_data, &key_data_len, + TEST_EQUAL(get_predefined_key_data(0, curve_or_keybits, &key_data, &key_data_len, NULL, 0), 0); TEST_EQUAL(mbedtls_pk_parse_key(pk, key_data, key_data_len, NULL, 0, mbedtls_test_rnd_std_rand, NULL), 0); } else { - TEST_EQUAL(get_predefined_key_data(curve_or_keybits, &key_data, &key_data_len, + TEST_EQUAL(get_predefined_key_data(1, curve_or_keybits, &key_data, &key_data_len, &pub_key_data, &pub_key_data_len), 0); TEST_EQUAL(mbedtls_pk_setup(pk, mbedtls_pk_info_from_type(pk_type)), 0); #if defined(MBEDTLS_PK_USE_PSA_EC_DATA) @@ -368,12 +323,12 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, size_t key_data_size = 0; if (PSA_KEY_TYPE_IS_RSA(type)) { - TEST_EQUAL(get_predefined_key_data(bits, &key_data, &key_data_size, NULL, 0), 0); + TEST_EQUAL(get_predefined_key_data(0, bits, &key_data, &key_data_size, NULL, 0), 0); } else { #if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) mbedtls_ecp_group_id grp_id; grp_id = mbedtls_ecc_group_from_psa(PSA_KEY_TYPE_ECC_GET_FAMILY(type), bits); - TEST_EQUAL(get_predefined_key_data(grp_id, &key_data, &key_data_size, NULL, 0), 0); + TEST_EQUAL(get_predefined_key_data(1, grp_id, &key_data, &key_data_size, NULL, 0), 0); #else /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */ TEST_FAIL("EC keys are not supported"); #endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */ From 83ddd43e86c4f49f73d989765d88d465ff9257ba Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 16 Apr 2024 14:22:31 +0200 Subject: [PATCH 22/32] test_suite_pk: fix get_predefined_key_data() return value Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 968f4dd160..4d51c9e605 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -204,7 +204,10 @@ static int get_predefined_key_data(int is_ec, int curve_or_keybits, } } - return MBEDTLS_ERR_PK_BAD_INPUT_DATA; + TEST_FAIL("Unsupported key"); + /* "exit" label is to make the compiler happy. */ +exit: + return MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE; } #if defined(MBEDTLS_PSA_CRYPTO_C) From 5a07cff5759cfe1f04e090f7ac00c4da6dce226c Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 16 Apr 2024 14:44:36 +0200 Subject: [PATCH 23/32] test_suite_pk: rename pk_genkey() and pk_psa_genkey() - pk_genkey -> pk_setup - pk_psa_genkey -> pk_psa_setup Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 95 ++++++++++++++--------------- 1 file changed, 45 insertions(+), 50 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 4d51c9e605..898c3b6ee5 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -232,15 +232,10 @@ psa_status_t pk_psa_import_key(const unsigned char *key_data, size_t key_len, #endif /* MBEDTLS_PSA_CRYPTO_C */ #if defined(MBEDTLS_PK_PARSE_C) -/** Fill the provided PK context with a proper key. +/** Setup the provided PK context. * - * This is a fake implementation of key generation because instead of generating - * a new key every time, we use predefined ones to speed up testing. - * - * These keys are taken from "test/src/test_keys.h" which is automatically - * generated using "tests/scripts/generate_test_keys.py". Therefore if new - * EC curves or RSA key bits need to be tested, please update "test_keys.h" - * using this script. + * Predefined keys used for the setup are taken from "test/src/test_keys.h" + * which is automatically generated using "tests/scripts/generate_test_keys.py". * * \param pk The PK object to fill. It must have been initialized * (mbedtls_pk_init()), but not setup (mbedtls_pk_setup()). @@ -250,7 +245,7 @@ psa_status_t pk_psa_import_key(const unsigned char *key_data, size_t key_len, * * \return 0 on success or a negative value otherwise. */ -static int pk_genkey(mbedtls_pk_context *pk, mbedtls_pk_type_t pk_type, int curve_or_keybits) +static int pk_setup(mbedtls_pk_context *pk, mbedtls_pk_type_t pk_type, int curve_or_keybits) { const unsigned char *key_data = NULL; const unsigned char *pub_key_data = NULL; @@ -301,9 +296,9 @@ exit: #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) /** Create a PSA key of the desired type and properties. * - * This is similar to pk_genkey() above in the sense that it does not really - * generates a key every time, but it takes the key from a file instead in - * order to speedup testing. + * This is similar to pk_setup() above in the sense that it uses predefined + * keys, but in this case instead of setting up a PK context, the key is + * imported into PSA. * * \param type PSA key type. Only RSA and EC keys are supported. * \param bits PSA key bit size. @@ -314,11 +309,11 @@ exit: * for volatile keys. * \param[out] key Identifier of the "generated" (actually imported) PSA key. */ -psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, - psa_key_usage_t usage, psa_algorithm_t alg, - psa_algorithm_t enrollment_alg, - mbedtls_svc_key_id_t persistent_key_id, - mbedtls_svc_key_id_t *key) +psa_status_t pk_psa_setup(psa_key_type_t type, size_t bits, + psa_key_usage_t usage, psa_algorithm_t alg, + psa_algorithm_t enrollment_alg, + mbedtls_svc_key_id_t persistent_key_id, + mbedtls_svc_key_id_t *key) { psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; psa_status_t status = PSA_ERROR_GENERIC_ERROR; @@ -506,7 +501,7 @@ static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, TEST_EQUAL(mbedtls_pk_setup(pk, mbedtls_pk_info_from_type(pk_type)), 0); *psa_type = PSA_KEY_TYPE_RSA_KEY_PAIR; if (want_pair) { - TEST_EQUAL(pk_genkey(pk, pk_type, MBEDTLS_RSA_GEN_KEY_MIN_BITS), 0); + TEST_EQUAL(pk_setup(pk, pk_type, MBEDTLS_RSA_GEN_KEY_MIN_BITS), 0); } else { unsigned char N[PSA_BITS_TO_BYTES(MBEDTLS_RSA_GEN_KEY_MIN_BITS)] = { 0xff }; N[sizeof(N) - 1] = 0x03; @@ -530,7 +525,7 @@ static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, mbedtls_ecp_group_id grp_id = MBEDTLS_TEST_ECP_DP_ONE_CURVE; size_t bits; *psa_type = PSA_KEY_TYPE_ECC_KEY_PAIR(mbedtls_ecc_group_to_psa(grp_id, &bits)); - TEST_EQUAL(pk_genkey(pk, pk_type, grp_id), 0); + TEST_EQUAL(pk_setup(pk, pk_type, grp_id), 0); if (!want_pair) { #if defined(MBEDTLS_PK_USE_PSA_EC_DATA) psa_key_attributes_t pub_attributes = PSA_KEY_ATTRIBUTES_INIT; @@ -670,14 +665,14 @@ void pk_psa_utils(int key_is_rsa) if (key_is_rsa) { bitlen = 1024; - PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_RSA_KEY_PAIR, 1024, PSA_KEY_USAGE_SIGN_HASH, - PSA_ALG_RSA_PKCS1V15_SIGN_RAW, PSA_ALG_NONE, - MBEDTLS_SVC_KEY_ID_INIT, &key)); + PSA_ASSERT(pk_psa_setup(PSA_KEY_TYPE_RSA_KEY_PAIR, 1024, PSA_KEY_USAGE_SIGN_HASH, + PSA_ALG_RSA_PKCS1V15_SIGN_RAW, PSA_ALG_NONE, + MBEDTLS_SVC_KEY_ID_INIT, &key)); } else { bitlen = 256; - PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, - PSA_KEY_USAGE_SIGN_HASH, PSA_ALG_ECDSA(PSA_ALG_SHA_256), - PSA_ALG_NONE, MBEDTLS_SVC_KEY_ID_INIT, &key)); + PSA_ASSERT(pk_psa_setup(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, + PSA_KEY_USAGE_SIGN_HASH, PSA_ALG_ECDSA(PSA_ALG_SHA_256), + PSA_ALG_NONE, MBEDTLS_SVC_KEY_ID_INIT, &key)); } if (mbedtls_svc_key_id_is_null(key)) { goto exit; @@ -762,8 +757,8 @@ void pk_can_do_ext(int opaque_key, int key_type, int key_usage, int key_alg, USE_PSA_INIT(); if (opaque_key == 1) { - PSA_ASSERT(pk_psa_genkey(key_type, curve_or_keybits, key_usage, - key_alg, key_alg2, MBEDTLS_SVC_KEY_ID_INIT, &key)); + PSA_ASSERT(pk_psa_setup(key_type, curve_or_keybits, key_usage, + key_alg, key_alg2, MBEDTLS_SVC_KEY_ID_INIT, &key)); if (mbedtls_svc_key_id_is_null(key)) { goto exit; } @@ -772,7 +767,7 @@ void pk_can_do_ext(int opaque_key, int key_type, int key_usage, int key_alg, TEST_EQUAL(mbedtls_pk_get_type(&pk), MBEDTLS_PK_OPAQUE); } else { - TEST_EQUAL(pk_genkey(&pk, key_type, curve_or_keybits), 0); + TEST_EQUAL(pk_setup(&pk, key_type, curve_or_keybits), 0); TEST_EQUAL(mbedtls_pk_get_type(&pk), key_type); } @@ -974,7 +969,7 @@ void pk_utils(int type, int curve_or_keybits, int bitlen, int len, char *name) mbedtls_pk_init(&pk); USE_PSA_INIT(); - TEST_ASSERT(pk_genkey(&pk, type, curve_or_keybits) == 0); + TEST_ASSERT(pk_setup(&pk, type, curve_or_keybits) == 0); TEST_ASSERT((int) mbedtls_pk_get_type(&pk) == type); TEST_ASSERT(mbedtls_pk_can_do(&pk, type)); @@ -1342,7 +1337,7 @@ void pk_sign_verify(int type, int curve_or_keybits, int rsa_padding, int rsa_md_ memset(hash, 0x2a, sizeof(hash)); memset(sig, 0, sizeof(sig)); - TEST_ASSERT(pk_genkey(&pk, type, curve_or_keybits) == 0); + TEST_ASSERT(pk_setup(&pk, type, curve_or_keybits) == 0); #if defined(MBEDTLS_RSA_C) if (type == MBEDTLS_PK_RSA) { @@ -1735,7 +1730,7 @@ void pk_rsa_alt() memset(test, 0, sizeof(test)); /* Initialize PK RSA context with random key */ - TEST_ASSERT(pk_genkey(&rsa, MBEDTLS_PK_RSA, RSA_KEY_SIZE) == 0); + TEST_ASSERT(pk_setup(&rsa, MBEDTLS_PK_RSA, RSA_KEY_SIZE) == 0); /* Extract key to the raw rsa context */ TEST_ASSERT(mbedtls_rsa_copy(&raw, mbedtls_pk_rsa(rsa)) == 0); @@ -1836,7 +1831,7 @@ void pk_psa_sign(int psa_type, int bits, int rsa_padding) /* Create the legacy EC/RSA PK context. */ #if defined(MBEDTLS_RSA_C) if (PSA_KEY_TYPE_IS_RSA(psa_type)) { - TEST_EQUAL(pk_genkey(&pk, MBEDTLS_PK_RSA, bits), 0); + TEST_EQUAL(pk_setup(&pk, MBEDTLS_PK_RSA, bits), 0); TEST_EQUAL(mbedtls_rsa_set_padding(mbedtls_pk_rsa(pk), rsa_padding, MBEDTLS_MD_NONE), 0); } #else /* MBEDTLS_RSA_C */ @@ -1845,7 +1840,7 @@ void pk_psa_sign(int psa_type, int bits, int rsa_padding) #if defined(MBEDTLS_PK_CAN_ECDSA_SIGN) if (PSA_KEY_TYPE_IS_ECC_KEY_PAIR(psa_type)) { ecp_grp_id = mbedtls_ecc_group_from_psa(psa_type, bits); - TEST_ASSERT(pk_genkey(&pk, MBEDTLS_PK_ECKEY, ecp_grp_id) == 0); + TEST_ASSERT(pk_setup(&pk, MBEDTLS_PK_ECKEY, ecp_grp_id) == 0); } #endif /* MBEDTLS_PK_CAN_ECDSA_SIGN */ @@ -1983,7 +1978,7 @@ void pk_sign_ext(int pk_type, int curve_or_keybits, int key_pk_type, int md_alg) mbedtls_pk_init(&pk); MD_OR_USE_PSA_INIT(); - TEST_EQUAL(pk_genkey(&pk, pk_type, curve_or_keybits), 0); + TEST_EQUAL(pk_setup(&pk, pk_type, curve_or_keybits), 0); TEST_EQUAL(mbedtls_pk_sign_ext(key_pk_type, &pk, md_alg, hash, hash_len, sig, sizeof(sig), &sig_len, @@ -2277,9 +2272,9 @@ void pk_import_into_psa_lifetime(int from_opaque, persistent_key_id = mbedtls_svc_key_id_make(0, 1); } - PSA_ASSERT(pk_psa_genkey(from_psa_type, MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS, - psa_key_usage, PSA_ALG_ECDH, PSA_ALG_NONE, - persistent_key_id, &old_key_id)); + PSA_ASSERT(pk_psa_setup(from_psa_type, MBEDTLS_TEST_PSA_ECC_ONE_CURVE_BITS, + psa_key_usage, PSA_ALG_ECDH, PSA_ALG_NONE, + persistent_key_id, &old_key_id)); TEST_EQUAL(mbedtls_pk_setup_opaque(&pk, old_key_id), 0); psa_reset_key_attributes(&attributes); #else @@ -2355,8 +2350,8 @@ void pk_get_psa_attributes_opaque(int from_type_arg, int from_bits_arg, PSA_INIT(); - PSA_ASSERT(pk_psa_genkey(from_type, bits, from_usage, alg, 42, - MBEDTLS_SVC_KEY_ID_INIT, &old_key_id)); + PSA_ASSERT(pk_psa_setup(from_type, bits, from_usage, alg, 42, + MBEDTLS_SVC_KEY_ID_INIT, &old_key_id)); TEST_EQUAL(mbedtls_pk_setup_opaque(&pk, old_key_id), 0); psa_key_type_t expected_psa_type = @@ -2448,8 +2443,8 @@ void pk_import_into_psa_opaque(int from_type, int from_bits, PSA_INIT(); - PSA_ASSERT(pk_psa_genkey(from_type, from_bits, from_usage, from_alg, PSA_ALG_NONE, - MBEDTLS_SVC_KEY_ID_INIT, &from_key_id)); + PSA_ASSERT(pk_psa_setup(from_type, from_bits, from_usage, from_alg, PSA_ALG_NONE, + MBEDTLS_SVC_KEY_ID_INIT, &from_key_id)); TEST_EQUAL(mbedtls_pk_setup_opaque(&pk, from_key_id), 0); psa_set_key_type(&to_attributes, to_type); @@ -2516,7 +2511,7 @@ void pk_copy_from_psa_fail(void) #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE) /* Generate a key type that is not handled by the PK module. - * Note: we cannot use pk_psa_genkey() in this case because that function relies + * Note: we cannot use pk_psa_setup() in this case because that function relies * on PK module functionality and PK module does not support DH keys. */ psa_key_attributes_t key_attr = PSA_KEY_ATTRIBUTES_INIT; @@ -2531,8 +2526,8 @@ void pk_copy_from_psa_fail(void) #if defined(MBEDTLS_PK_HAVE_ECC_KEYS) && defined(PSA_WANT_ECC_SECP_R1_256) /* Generate an EC key which cannot be exported. */ - PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, - 0, PSA_ALG_NONE, PSA_ALG_NONE, MBEDTLS_SVC_KEY_ID_INIT, &key_id)); + PSA_ASSERT(pk_psa_setup(PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1), 256, + 0, PSA_ALG_NONE, PSA_ALG_NONE, MBEDTLS_SVC_KEY_ID_INIT, &key_id)); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_TYPE_MISMATCH); psa_destroy_key(key_id); #endif /* MBEDTLS_PK_HAVE_ECC_KEYS && PSA_WANT_ECC_SECP_R1_256 */ @@ -2553,12 +2548,12 @@ void pk_copy_from_psa_builtin_fail() mbedtls_pk_init(&pk_ctx); PSA_INIT(); - PSA_ASSERT(pk_psa_genkey(PSA_KEY_TYPE_RSA_KEY_PAIR, - PSA_VENDOR_RSA_GENERATE_MIN_KEY_BITS, - PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT, - PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256), - PSA_ALG_NONE, - MBEDTLS_SVC_KEY_ID_INIT, &key_id)); + PSA_ASSERT(pk_psa_setup(PSA_KEY_TYPE_RSA_KEY_PAIR, + PSA_VENDOR_RSA_GENERATE_MIN_KEY_BITS, + PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT, + PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256), + PSA_ALG_NONE, + MBEDTLS_SVC_KEY_ID_INIT, &key_id)); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_BAD_INPUT_DATA); exit: mbedtls_pk_free(&pk_ctx); From 73932e3b83b998e115f9f2553083e3876fc631a7 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 16 Apr 2024 15:00:52 +0200 Subject: [PATCH 24/32] test_suite_pk: use predefined RSA keys in pk_setup_for_type() Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 898c3b6ee5..3664b8ed50 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -498,20 +498,13 @@ static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, #if defined(MBEDTLS_RSA_C) case MBEDTLS_PK_RSA: { - TEST_EQUAL(mbedtls_pk_setup(pk, mbedtls_pk_info_from_type(pk_type)), 0); *psa_type = PSA_KEY_TYPE_RSA_KEY_PAIR; - if (want_pair) { - TEST_EQUAL(pk_setup(pk, pk_type, MBEDTLS_RSA_GEN_KEY_MIN_BITS), 0); - } else { - unsigned char N[PSA_BITS_TO_BYTES(MBEDTLS_RSA_GEN_KEY_MIN_BITS)] = { 0xff }; - N[sizeof(N) - 1] = 0x03; - const unsigned char E[1] = { 0x03 }; + TEST_EQUAL(pk_setup(pk, pk_type, MBEDTLS_RSA_GEN_KEY_MIN_BITS), 0); + if (!want_pair) { mbedtls_rsa_context *rsa = mbedtls_pk_rsa(*pk); - TEST_EQUAL(mbedtls_rsa_import_raw(rsa, - N, sizeof(N), - NULL, 0, NULL, 0, NULL, 0, - E, sizeof(E)), 0); - TEST_EQUAL(mbedtls_rsa_complete(rsa), 0); + mbedtls_mpi_free(&rsa->D); + mbedtls_mpi_free(&rsa->P); + mbedtls_mpi_free(&rsa->Q); } break; } From 7ee12b76696735337f1bb1cadf42155e219355a1 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 16 Apr 2024 15:03:42 +0200 Subject: [PATCH 25/32] test_suite_pk: use pk_setup() instead of mbedtls_rsa_gen_key() in pk_psa_wrap_sign_ext() Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 3664b8ed50..78369e615c 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -2013,11 +2013,7 @@ void pk_psa_wrap_sign_ext(int pk_type, int key_bits, int key_pk_type, int md_alg /* Create legacy RSA public/private key in PK context. */ mbedtls_pk_init(&pk); - TEST_EQUAL(mbedtls_pk_setup(&pk, - mbedtls_pk_info_from_type(pk_type)), 0); - TEST_EQUAL(mbedtls_rsa_gen_key(mbedtls_pk_rsa(pk), - mbedtls_test_rnd_std_rand, NULL, - key_bits, 3), 0); + TEST_EQUAL(pk_setup(&pk, pk_type, key_bits), 0); if (key_pk_type == MBEDTLS_PK_RSASSA_PSS) { mbedtls_rsa_set_padding(mbedtls_pk_rsa(pk), MBEDTLS_RSA_PKCS_V21, MBEDTLS_MD_NONE); From ab4b01bbbe77c4783bd4ba0a42b979f577bb9057 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 16 Apr 2024 15:37:47 +0200 Subject: [PATCH 26/32] test_suite_pk: enhance pk_psa_setup() to support all key types Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 51 ++++++++++++++--------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 78369e615c..21e31cbd41 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -296,11 +296,10 @@ exit: #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) /** Create a PSA key of the desired type and properties. * - * This is similar to pk_setup() above in the sense that it uses predefined - * keys, but in this case instead of setting up a PK context, the key is - * imported into PSA. + * - For RSA and EC keys predefined key data is used (as in the pk_setup() above). + * - Other key types (ex: DH) are generated at runtime. * - * \param type PSA key type. Only RSA and EC keys are supported. + * \param type PSA key type. * \param bits PSA key bit size. * \param usage PSA key usage flags. * \param alg PSA key primary algorithm. @@ -320,19 +319,6 @@ psa_status_t pk_psa_setup(psa_key_type_t type, size_t bits, const unsigned char *key_data = NULL; size_t key_data_size = 0; - if (PSA_KEY_TYPE_IS_RSA(type)) { - TEST_EQUAL(get_predefined_key_data(0, bits, &key_data, &key_data_size, NULL, 0), 0); - } else { -#if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) - mbedtls_ecp_group_id grp_id; - grp_id = mbedtls_ecc_group_from_psa(PSA_KEY_TYPE_ECC_GET_FAMILY(type), bits); - TEST_EQUAL(get_predefined_key_data(1, grp_id, &key_data, &key_data_size, NULL, 0), 0); -#else /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */ - TEST_FAIL("EC keys are not supported"); -#endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */ - } - - /* Import the key into PSA. */ *key = MBEDTLS_SVC_KEY_ID_INIT; psa_set_key_usage_flags(&attributes, usage); psa_set_key_algorithm(&attributes, alg); @@ -342,6 +328,25 @@ psa_status_t pk_psa_setup(psa_key_type_t type, size_t bits, if (!mbedtls_svc_key_id_is_null(persistent_key_id)) { psa_set_key_id(&attributes, persistent_key_id); } + + /* For EC and RSA keys we use predefined keys in order to: + * - speed up testing and + * - ease requirements/dependencies on test cases. + * For other keys (ex: DH) psa_generate_key() is used instead. */ + if (PSA_KEY_TYPE_IS_RSA(type)) { + TEST_EQUAL(get_predefined_key_data(0, bits, &key_data, &key_data_size, NULL, 0), 0); + } else if (PSA_KEY_TYPE_IS_ECC(type)) { +#if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) + mbedtls_ecp_group_id grp_id; + grp_id = mbedtls_ecc_group_from_psa(PSA_KEY_TYPE_ECC_GET_FAMILY(type), bits); + TEST_EQUAL(get_predefined_key_data(1, grp_id, &key_data, &key_data_size, NULL, 0), 0); +#else /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */ + TEST_FAIL("EC keys are not supported"); +#endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */ + } else { + return psa_generate_key(&attributes, key); + } + status = psa_import_key(&attributes, key_data, key_data_size, key); exit: @@ -2499,15 +2504,9 @@ void pk_copy_from_psa_fail(void) MBEDTLS_ERR_PK_BAD_INPUT_DATA); #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE) - /* Generate a key type that is not handled by the PK module. - * Note: we cannot use pk_psa_setup() in this case because that function relies - * on PK module functionality and PK module does not support DH keys. */ - psa_key_attributes_t key_attr = PSA_KEY_ATTRIBUTES_INIT; - - psa_set_key_type(&key_attr, PSA_KEY_TYPE_DH_KEY_PAIR(PSA_DH_FAMILY_RFC7919)); - psa_set_key_bits(&key_attr, 2048); - psa_set_key_usage_flags(&key_attr, PSA_KEY_USAGE_EXPORT); - psa_generate_key(&key_attr, &key_id); + pk_psa_setup(PSA_KEY_TYPE_DH_KEY_PAIR(PSA_DH_FAMILY_RFC7919), 2048, + PSA_KEY_USAGE_EXPORT, PSA_ALG_NONE, PSA_ALG_NONE, + MBEDTLS_SVC_KEY_ID_INIT, &key_id); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_BAD_INPUT_DATA); TEST_EQUAL(mbedtls_pk_copy_public_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_BAD_INPUT_DATA); psa_destroy_key(key_id); From 7903385e0fd6eb0063447f21d4c77e940dce0cd9 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 16 Apr 2024 16:00:35 +0200 Subject: [PATCH 27/32] test_suite_pk: remove RSA key generation/size dependencies - MBEDTLS_GENPRIME is removed because now we rely on predefined RSA keys. - MBEDTLS_RSA_GEN_KEY_MIN_BITS is replaced with RSA_KEY_SIZE which is set on top of test_suite_pk to a value which is supported in the predefined_keys[] array. Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.data | 116 ++++++++++++++-------------- tests/suites/test_suite_pk.function | 14 ++-- 2 files changed, 65 insertions(+), 65 deletions(-) diff --git a/tests/suites/test_suite_pk.data b/tests/suites/test_suite_pk.data index e93c764542..2ab36aa822 100644 --- a/tests/suites/test_suite_pk.data +++ b/tests/suites/test_suite_pk.data @@ -10,21 +10,21 @@ valid_parameters_pkwrite:"308204a20201000282010100a9021f3d406ad555538bfd36ee8265 PK utils: RSA Minimum key depends_on:MBEDTLS_RSA_C -pk_utils:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS:MBEDTLS_RSA_GEN_KEY_MIN_BITS:(MBEDTLS_RSA_GEN_KEY_MIN_BITS + 7) / 8:"RSA" +pk_utils:MBEDTLS_PK_RSA:RSA_KEY_SIZE:RSA_KEY_SIZE:(RSA_KEY_SIZE + 7) / 8:"RSA" # mbedtls_rsa_gen_key() only supports even sizes, so we don't test min+1, # min+3, etc. PK utils: RSA Minimum key + 2 bits depends_on:MBEDTLS_RSA_C -pk_utils:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 2:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 2:(MBEDTLS_RSA_GEN_KEY_MIN_BITS + 2 + 7) / 8:"RSA" +pk_utils:MBEDTLS_PK_RSA:RSA_KEY_SIZE + 2:RSA_KEY_SIZE + 2:(RSA_KEY_SIZE + 2 + 7) / 8:"RSA" PK utils: RSA Minimum key + 4 bits depends_on:MBEDTLS_RSA_C -pk_utils:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 4:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 4:(MBEDTLS_RSA_GEN_KEY_MIN_BITS + 4 + 7) / 8:"RSA" +pk_utils:MBEDTLS_PK_RSA:RSA_KEY_SIZE + 4:RSA_KEY_SIZE + 4:(RSA_KEY_SIZE + 4 + 7) / 8:"RSA" PK utils: RSA Minimum key + 6 bits depends_on:MBEDTLS_RSA_C -pk_utils:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 6:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 6:(MBEDTLS_RSA_GEN_KEY_MIN_BITS + 6 + 7) / 8:"RSA" +pk_utils:MBEDTLS_PK_RSA:RSA_KEY_SIZE + 6:RSA_KEY_SIZE + 6:(RSA_KEY_SIZE + 6 + 7) / 8:"RSA" PK utils: ECKEY SECP192R1 depends_on:MBEDTLS_PK_HAVE_ECC_KEYS:MBEDTLS_ECP_HAVE_SECP192R1 @@ -435,20 +435,20 @@ depends_on:MBEDTLS_PK_HAVE_ECC_KEYS:MBEDTLS_ECP_HAVE_SECP192R1 pk_sign_verify:MBEDTLS_PK_ECKEY_DH:MBEDTLS_ECP_DP_SECP192R1:0:0:MBEDTLS_ERR_PK_TYPE_MISMATCH:MBEDTLS_ERR_PK_TYPE_MISMATCH RSA sign-verify, PKCS1v1.5, SHA1 -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA1 -pk_sign_verify:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS:MBEDTLS_RSA_PKCS_V15:MBEDTLS_MD_SHA1:0:0 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_MD_CAN_SHA1 +pk_sign_verify:MBEDTLS_PK_RSA:RSA_KEY_SIZE:MBEDTLS_RSA_PKCS_V15:MBEDTLS_MD_SHA1:0:0 RSA sign-verify, PKCS1v2.1, SHA1 -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA1 -pk_sign_verify:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS:MBEDTLS_RSA_PKCS_V21:MBEDTLS_MD_SHA1:0:0 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA1 +pk_sign_verify:MBEDTLS_PK_RSA:RSA_KEY_SIZE:MBEDTLS_RSA_PKCS_V21:MBEDTLS_MD_SHA1:0:0 RSA sign-verify, PKCS1v1.5, SHA256 -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA256 -pk_sign_verify:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS:MBEDTLS_RSA_PKCS_V15:MBEDTLS_MD_SHA256:0:0 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_MD_CAN_SHA256 +pk_sign_verify:MBEDTLS_PK_RSA:RSA_KEY_SIZE:MBEDTLS_RSA_PKCS_V15:MBEDTLS_MD_SHA256:0:0 RSA sign-verify, PKCS1v2.1, SHA256 -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512:MBEDTLS_MD_CAN_SHA256 -pk_sign_verify:MBEDTLS_PK_RSA:MBEDTLS_RSA_GEN_KEY_MIN_BITS:MBEDTLS_RSA_PKCS_V21:MBEDTLS_MD_SHA256:0:0 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA256 +pk_sign_verify:MBEDTLS_PK_RSA:RSA_KEY_SIZE:MBEDTLS_RSA_PKCS_V21:MBEDTLS_MD_SHA256:0:0 RSA encrypt-decrypt test PKCS1 v1.5 depends_on:MBEDTLS_PKCS1_V15 @@ -507,7 +507,7 @@ depends_on:MBEDTLS_PK_CAN_ECDSA_VERIFY:MBEDTLS_PK_CAN_ECDSA_SIGN pk_ec_nocrypt:MBEDTLS_PK_ECDSA RSA_ALT consistency -depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_RSA_GEN_KEY_MIN_BITS >= 512 +depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15 pk_rsa_alt: Verify ext RSA #1 (PKCS1 v2.1, salt_len = ANY, OK) @@ -696,27 +696,27 @@ depends_on:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21 pk_psa_sign:PSA_KEY_TYPE_RSA_KEY_PAIR:1024:MBEDTLS_RSA_PKCS_V21 PK sign ext: RSA2048, PK_RSA, MD_SHA256 -depends_on:MBEDTLS_PKCS1_V15:MBEDTLS_MD_CAN_SHA256:MBEDTLS_RSA_C:MBEDTLS_RSA_GEN_KEY_MIN_BITS <= 2048 +depends_on:MBEDTLS_PKCS1_V15:MBEDTLS_MD_CAN_SHA256:MBEDTLS_RSA_C pk_sign_ext:MBEDTLS_PK_RSA:2048:MBEDTLS_PK_RSA:MBEDTLS_MD_SHA256 PK sign ext: RSA2048, PK_RSASSA_PSS, MD_SHA256 -depends_on:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA256:MBEDTLS_RSA_C:MBEDTLS_RSA_GEN_KEY_MIN_BITS <= 2048 +depends_on:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA256:MBEDTLS_RSA_C pk_sign_ext:MBEDTLS_PK_RSA:2048:MBEDTLS_PK_RSASSA_PSS:MBEDTLS_MD_SHA256 PK sign ext: RSA2048, PK_RSA, MD_SHA384 -depends_on:MBEDTLS_PKCS1_V15:MBEDTLS_MD_CAN_SHA384:MBEDTLS_RSA_C:MBEDTLS_RSA_GEN_KEY_MIN_BITS <= 2048 +depends_on:MBEDTLS_PKCS1_V15:MBEDTLS_MD_CAN_SHA384:MBEDTLS_RSA_C pk_sign_ext:MBEDTLS_PK_RSA:2048:MBEDTLS_PK_RSA:MBEDTLS_MD_SHA384 PK sign ext: RSA2048, PK_RSASSA_PSS, MD_SHA384 -depends_on:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA384:MBEDTLS_RSA_C:MBEDTLS_RSA_GEN_KEY_MIN_BITS <= 2048 +depends_on:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA384:MBEDTLS_RSA_C pk_sign_ext:MBEDTLS_PK_RSA:2048:MBEDTLS_PK_RSASSA_PSS:MBEDTLS_MD_SHA384 PK sign ext: RSA2048, PK_RSA, MD_SHA512 -depends_on:MBEDTLS_PKCS1_V15:MBEDTLS_MD_CAN_SHA512:MBEDTLS_RSA_C:MBEDTLS_RSA_GEN_KEY_MIN_BITS <= 2048 +depends_on:MBEDTLS_PKCS1_V15:MBEDTLS_MD_CAN_SHA512:MBEDTLS_RSA_C pk_sign_ext:MBEDTLS_PK_RSA:2048:MBEDTLS_PK_RSA:MBEDTLS_MD_SHA512 PK sign ext: RSA2048, PK_RSASSA_PSS, MD_SHA512 -depends_on:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA512:MBEDTLS_RSA_C:MBEDTLS_RSA_GEN_KEY_MIN_BITS <= 2048 +depends_on:MBEDTLS_PKCS1_V21:MBEDTLS_MD_CAN_SHA512:MBEDTLS_RSA_C pk_sign_ext:MBEDTLS_PK_RSA:2048:MBEDTLS_PK_RSASSA_PSS:MBEDTLS_MD_SHA512 PK sign ext: SECP256R1, PK_ECDSA, MD_SHA256 @@ -1064,92 +1064,92 @@ pk_get_psa_attributes_fail:MBEDTLS_PK_ECKEY_DH:FROM_PUBLIC:PSA_KEY_USAGE_VERIFY_ PSA attributes for pk: opaque RSA pair, 0 & SIGN_MESSAGE (bad policy) depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:0:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque RSA pair, SIGN_MESSAGE & SIGN_MESSAGE depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque RSA pair, SIGN|VERIFY & SIGN_MESSAGE depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque RSA pair, SIGN|DECRYPT & SIGN_MESSAGE depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_DECRYPT # For a PK_OPAQUE key with a key pair type output, # mbedtls_pk_import_into_psa() requires the key to be copyable or exportable. # Try all combinations of COPY/not, EXPORT/not. PSA attributes for pk: opaque RSA pair, SIGN|... & SIGN_MESSAGE depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque RSA pair, SIGN|EXPORT|... & SIGN_MESSAGE depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque RSA pair, SIGN|COPY|... & SIGN_MESSAGE depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque RSA pair, SIGN|COPY|EXPORT... & SIGN_MESSAGE depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_MESSAGE:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque RSA pair, SIGN_MESSAGE & SIGN_HASH (bad policy) depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 # For a PK_OPAQUE key, mbedtls_pk_get_psa_attributes() ignores the input # key's algorithm policy. Just this time, test with a few different algorithms. PSA attributes for pk: opaque RSA pair, SIGN_HASH & SIGN_HASH [0] depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_NONE:PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_NONE:PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque RSA pair, SIGN_HASH & SIGN_HASH [raw] depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque RSA pair, SIGN_HASH & SIGN_HASH [v15] depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque RSA pair, SIGN_HASH & SIGN_HASH [PSS] depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PSS_ANY_SALT(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_HASH:PSA_ALG_RSA_PSS_ANY_SALT(PSA_ALG_SHA_256):PSA_KEY_USAGE_SIGN_HASH:0:1:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE PSA attributes for pk: opaque RSA pair, 0 & DECRYPT (bad policy) depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:0:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:0:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque RSA pair, DECRYPT & DECRYPT depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:0:1:PSA_KEY_USAGE_DECRYPT +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_DECRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:0:1:PSA_KEY_USAGE_DECRYPT PSA attributes for pk: opaque RSA pair, DECRYPT|... & DECRYPT depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DECRYPT:0:1:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque RSA pair, ... & DERIVE (bad) depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DERIVE:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_DERIVE:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque RSA pair, ... & EXPORT (bad) depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_EXPORT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_DECRYPT | PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_EXPORT:MBEDTLS_ERR_PK_TYPE_MISMATCH:1:0 PSA attributes for pk: opaque RSA pair->public, VERIFY_MESSAGE & VERIFY_MESSAGE depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_VERIFY_MESSAGE:0:0:PSA_KEY_USAGE_VERIFY_MESSAGE +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_VERIFY_MESSAGE:0:0:PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque RSA pair->public, VERIFY_HASH & VERIFY_HASH depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_VERIFY_HASH:0:0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_VERIFY_HASH:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_USAGE_VERIFY_HASH:0:0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE PSA attributes for pk: opaque RSA pair->public, ENCRYPT & ENCRYPT depends_on:MBEDTLS_RSA_C -pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_ENCRYPT:0:0:PSA_KEY_USAGE_ENCRYPT +pk_get_psa_attributes_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_ENCRYPT:PSA_ALG_RSA_PKCS1V15_CRYPT:PSA_KEY_USAGE_ENCRYPT:0:0:PSA_KEY_USAGE_ENCRYPT PSA attributes for pk: opaque ECC pair, 0 & SIGN_MESSAGE (bad policy) depends_on:PSA_WANT_ECC_SECP_R1_256:MBEDTLS_PK_HAVE_ECC_KEYS @@ -1212,15 +1212,15 @@ pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_TYPE_RSA_KEY_PAIR:0:M # be more appropriate. (Applies to all the RSA "different bits" test cases.) PSA import into PSA: RSA pair to different bits (bad) depends_on:MBEDTLS_RSA_C -pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 8:MBEDTLS_ERR_PK_INVALID_ALG +pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE + 8:MBEDTLS_ERR_PK_INVALID_ALG PSA import into PSA: RSA public to different bits (bad) depends_on:MBEDTLS_RSA_C -pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_TYPE_RSA_PUBLIC_KEY:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 8:MBEDTLS_ERR_PK_INVALID_ALG +pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PUBLIC:PSA_KEY_TYPE_RSA_PUBLIC_KEY:RSA_KEY_SIZE + 8:MBEDTLS_ERR_PK_INVALID_ALG PSA import into PSA: RSA private to public, different bits (bad) depends_on:MBEDTLS_RSA_C -pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_TYPE_RSA_PUBLIC_KEY:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 8:MBEDTLS_ERR_PK_INVALID_ALG +pk_import_into_psa_fail:MBEDTLS_PK_RSA:FROM_PAIR:PSA_KEY_TYPE_RSA_PUBLIC_KEY:RSA_KEY_SIZE + 8:MBEDTLS_ERR_PK_INVALID_ALG PSA import into PSA: ECKEY pair to RSA (bad) depends_on:MBEDTLS_PK_HAVE_ECC_KEYS:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE @@ -1396,72 +1396,72 @@ pk_import_into_psa_lifetime:1:1:0:1:1 PSA import into PSA: opaque RSA, COPY (ok) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 PSA import into PSA: opaque RSA, EXPORT (ok) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 PSA import into PSA: opaque RSA, no COPY/EXPORT (bad) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:MBEDTLS_ERR_PK_TYPE_MISMATCH +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:MBEDTLS_ERR_PK_TYPE_MISMATCH # Detail that isn't precisely documented: since this copies the key, # the new key has the intersection of the usage flags. PSA import into PSA: opaque RSA, COPY|EXPORT, different usage (restricted) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 # Detail that isn't precisely documented: since this copies the key, # the new key has the intersection of the usage flags. PSA import into PSA: opaque RSA, COPY, different usage (restricted) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 # Detail that isn't precisely documented: since this exports the key, # the new key has all the requested usage flags. PSA import into PSA: opaque RSA, EXPORT, different usage (ok) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 PSA import into PSA: opaque RSA, COPY|EXPORT, different algorithm (ok) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0 +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0 PSA import into PSA: opaque RSA, COPY, different algorithm (bad) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):MBEDTLS_ERR_PK_TYPE_MISMATCH +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):MBEDTLS_ERR_PK_TYPE_MISMATCH PSA import into PSA: opaque RSA, EXPORT, different algorithm (ok) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0 +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256):0 PSA import into PSA: opaque RSA, implicit bits (ok) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:0:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:0:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 PSA import into PSA: opaque RSA, different bits (bad) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 8:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:MBEDTLS_ERR_PK_TYPE_MISMATCH +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE + 8:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA import into PSA: opaque RSA, different type (bad) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:PSA_KEY_TYPE_HMAC:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:MBEDTLS_ERR_PK_TYPE_MISMATCH +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:PSA_KEY_TYPE_HMAC:RSA_KEY_SIZE:PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:0:MBEDTLS_ERR_PK_TYPE_MISMATCH PSA import into PSA: opaque RSA to public (ok) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_PUBLIC_KEY:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_PUBLIC_KEY:RSA_KEY_SIZE:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 PSA import into PSA: opaque RSA to public, implicit bits (ok) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_PUBLIC_KEY:0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_PUBLIC_KEY:0:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:0 # MBEDTLS_ERR_PK_INVALID_ALG is the error that results from our translation # of PSA errors. In this case MBEDTLS_ERR_PK_TYPE_MISMATCH would probably # be more appropriate. PSA import into PSA: opaque RSA to public, different bits (bad) depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN -pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:MBEDTLS_RSA_GEN_KEY_MIN_BITS:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_PUBLIC_KEY:MBEDTLS_RSA_GEN_KEY_MIN_BITS + 8:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:MBEDTLS_ERR_PK_INVALID_ALG +pk_import_into_psa_opaque:PSA_KEY_TYPE_RSA_KEY_PAIR:RSA_KEY_SIZE:PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_SIGN_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:PSA_KEY_TYPE_RSA_PUBLIC_KEY:RSA_KEY_SIZE + 8:PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_VERIFY_MESSAGE:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:MBEDTLS_ERR_PK_INVALID_ALG PSA import into PSA: opaque ECC, COPY (ok) depends_on:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:PSA_WANT_ALG_ECDSA diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 21e31cbd41..62bdaf9c71 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -28,9 +28,6 @@ /* Needed for the definition of MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE. */ #include "pkwrite.h" -#define RSA_KEY_SIZE MBEDTLS_RSA_GEN_KEY_MIN_BITS -#define RSA_KEY_LEN (MBEDTLS_RSA_GEN_KEY_MIN_BITS/8) - #if defined(MBEDTLS_RSA_C) || \ defined(MBEDTLS_PK_RSA_ALT_SUPPORT) || \ defined(MBEDTLS_ECDSA_C) || \ @@ -43,8 +40,7 @@ * - The build has built-in ECC and ECDSA signature. */ #if (defined(MBEDTLS_PK_PARSE_C) && defined(MBEDTLS_PK_WRITE_C) && \ - ((defined(MBEDTLS_RSA_C) && defined(MBEDTLS_GENPRIME)) || \ - defined(MBEDTLS_PK_CAN_ECDSA_SIGN))) || \ + (defined(MBEDTLS_RSA_C) || defined(MBEDTLS_PK_CAN_ECDSA_SIGN))) || \ (defined(MBEDTLS_ECP_C) && defined(MBEDTLS_PK_CAN_ECDSA_SIGN)) #define MBEDTLS_TEST_PK_PSA_SIGN #endif @@ -186,6 +182,10 @@ #include <../src/test_keys.h> +/* Define an RSA key size we know it's present in predefined_key[] array. */ +#define RSA_KEY_SIZE 1024 +#define RSA_KEY_LEN (RSA_KEY_SIZE/8) + static int get_predefined_key_data(int is_ec, int curve_or_keybits, const unsigned char **key, size_t *key_len, const unsigned char **pub_key, size_t *pub_key_len) @@ -504,7 +504,7 @@ static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, case MBEDTLS_PK_RSA: { *psa_type = PSA_KEY_TYPE_RSA_KEY_PAIR; - TEST_EQUAL(pk_setup(pk, pk_type, MBEDTLS_RSA_GEN_KEY_MIN_BITS), 0); + TEST_EQUAL(pk_setup(pk, pk_type, RSA_KEY_SIZE), 0); if (!want_pair) { mbedtls_rsa_context *rsa = mbedtls_pk_rsa(*pk); mbedtls_mpi_free(&rsa->D); @@ -1996,7 +1996,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_RSA_C:MBEDTLS_GENPRIME:MBEDTLS_USE_PSA_CRYPTO */ +/* BEGIN_CASE depends_on:MBEDTLS_RSA_C:MBEDTLS_USE_PSA_CRYPTO */ void pk_psa_wrap_sign_ext(int pk_type, int key_bits, int key_pk_type, int md_alg) { mbedtls_pk_context pk; From e98c37877b55f0ef065fee234311527cff8f44b4 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Tue, 16 Apr 2024 16:10:05 +0200 Subject: [PATCH 28/32] test_suite_pk: remove PK_PARSE_C unnecessary dependencies Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 38 ++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 62bdaf9c71..7d143ee9a4 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -231,7 +231,6 @@ psa_status_t pk_psa_import_key(const unsigned char *key_data, size_t key_len, } #endif /* MBEDTLS_PSA_CRYPTO_C */ -#if defined(MBEDTLS_PK_PARSE_C) /** Setup the provided PK context. * * Predefined keys used for the setup are taken from "test/src/test_keys.h" @@ -253,15 +252,19 @@ static int pk_setup(mbedtls_pk_context *pk, mbedtls_pk_type_t pk_type, int curve size_t pub_key_data_len = 0; int ret = MBEDTLS_ERR_PK_BAD_INPUT_DATA; + TEST_EQUAL(mbedtls_pk_setup(pk, mbedtls_pk_info_from_type(pk_type)), 0); + if (pk_type == MBEDTLS_PK_RSA) { +#if defined(MBEDTLS_RSA_C) TEST_EQUAL(get_predefined_key_data(0, curve_or_keybits, &key_data, &key_data_len, NULL, 0), 0); - TEST_EQUAL(mbedtls_pk_parse_key(pk, key_data, key_data_len, NULL, 0, - mbedtls_test_rnd_std_rand, NULL), 0); + TEST_EQUAL(mbedtls_rsa_parse_key(mbedtls_pk_rsa(*pk), key_data, key_data_len), 0); +#else /* MBEDTLS_RSA_C */ + TEST_FAIL("RSA keys not supported."); +#endif /* MBEDTLS_RSA_C */ } else { TEST_EQUAL(get_predefined_key_data(1, curve_or_keybits, &key_data, &key_data_len, &pub_key_data, &pub_key_data_len), 0); - TEST_EQUAL(mbedtls_pk_setup(pk, mbedtls_pk_info_from_type(pk_type)), 0); #if defined(MBEDTLS_PK_USE_PSA_EC_DATA) pk->ec_family = mbedtls_ecc_group_to_psa(curve_or_keybits, &pk->ec_bits); TEST_EQUAL(pk_psa_import_key(key_data, key_data_len, @@ -291,7 +294,6 @@ static int pk_setup(mbedtls_pk_context *pk, mbedtls_pk_type_t pk_type, int curve exit: return ret; } -#endif /* MBEDTLS_PK_PARSE_C */ #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) /** Create a PSA key of the desired type and properties. @@ -355,7 +357,6 @@ exit: #endif /* MBEDTLS_PSA_CRYPTO_CLIENT */ #if defined(MBEDTLS_PSA_CRYPTO_C) -#if defined(MBEDTLS_PK_PARSE_C) static psa_key_usage_t pk_get_psa_attributes_implied_usage( psa_key_usage_t expected_usage) { @@ -379,7 +380,6 @@ static psa_key_usage_t pk_get_psa_attributes_implied_usage( expected_usage |= PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_COPY; return expected_usage; } -#endif /* MBEDTLS_PK_PARSE_C */ #define RSA_WRITE_PUBKEY_MAX_SIZE \ PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) @@ -491,7 +491,7 @@ typedef enum { FROM_PAIR = 1 } from_pair_t; -#if defined(MBEDTLS_PSA_CRYPTO_C) && defined(MBEDTLS_PK_PARSE_C) +#if defined(MBEDTLS_PSA_CRYPTO_C) static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, mbedtls_pk_context *pk, psa_key_type_t *psa_type) { @@ -559,7 +559,7 @@ static int pk_setup_for_type(mbedtls_pk_type_t pk_type, int want_pair, exit: return MBEDTLS_ERR_ERROR_GENERIC_ERROR; } -#endif /* MBEDTLS_PSA_CRYPTO_C && MBEDTLS_PK_PARSE_C */ +#endif /* MBEDTLS_PSA_CRYPTO_C */ #if defined(MBEDTLS_PSA_CRYPTO_C) /* Create a new PSA key which will contain only the public part of the private @@ -742,7 +742,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_USE_PSA_CRYPTO:MBEDTLS_PK_PARSE_C */ +/* BEGIN_CASE depends_on:MBEDTLS_USE_PSA_CRYPTO */ void pk_can_do_ext(int opaque_key, int key_type, int key_usage, int key_alg, int key_alg2, int curve_or_keybits, int alg_check, int usage_check, int result) @@ -959,7 +959,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PK_PARSE_C */ +/* BEGIN_CASE */ void pk_utils(int type, int curve_or_keybits, int bitlen, int len, char *name) { mbedtls_pk_context pk; @@ -1308,7 +1308,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_MD_CAN_SHA256:PK_CAN_SIGN_SOME */ +/* BEGIN_CASE depends_on:MBEDTLS_MD_CAN_SHA256:PK_CAN_SIGN_SOME */ void pk_sign_verify(int type, int curve_or_keybits, int rsa_padding, int rsa_md_alg, int sign_ret, int verify_ret) { @@ -1700,7 +1700,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_RSA_C:MBEDTLS_PK_RSA_ALT_SUPPORT */ +/* BEGIN_CASE depends_on:MBEDTLS_RSA_C:MBEDTLS_PK_RSA_ALT_SUPPORT */ void pk_rsa_alt() { /* @@ -1960,7 +1960,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PK_PARSE_C */ +/* BEGIN_CASE */ void pk_sign_ext(int pk_type, int curve_or_keybits, int key_pk_type, int md_alg) { mbedtls_pk_context pk; @@ -2099,7 +2099,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_PK_PARSE_C */ +/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C */ void pk_get_psa_attributes(int pk_type, int from_pair, int usage_arg, int to_pair, int expected_alg) @@ -2162,7 +2162,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21:MBEDTLS_PK_PARSE_C */ +/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V21 */ void pk_rsa_v21_get_psa_attributes(int md_type, int from_pair, int usage_arg, int to_pair, int expected_alg) @@ -2210,7 +2210,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_PK_PARSE_C */ +/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C */ void pk_get_psa_attributes_fail(int pk_type, int from_pair, int usage_arg, int expected_ret) @@ -2236,7 +2236,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_PK_PARSE_C:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:MBEDTLS_PSA_CRYPTO_STORAGE_C */ +/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_TEST_PSA_ECC_AT_LEAST_ONE_CURVE:MBEDTLS_PSA_CRYPTO_STORAGE_C */ void pk_import_into_psa_lifetime(int from_opaque, int from_persistent, /* when from opaque */ int from_exportable, /* when from opaque */ @@ -2387,7 +2387,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C:MBEDTLS_PK_PARSE_C */ +/* BEGIN_CASE depends_on:MBEDTLS_PSA_CRYPTO_C */ void pk_import_into_psa_fail(int pk_type, int from_pair, int type_arg, int bits_arg, int expected_ret) From 690ab4548c6b8d6d89f704cb54eef4ff13e8fe6e Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Wed, 17 Apr 2024 05:25:40 +0200 Subject: [PATCH 29/32] test_suite_pk: fix guards for pk_psa_setup() Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.function | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 7d143ee9a4..bee3273db9 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -295,7 +295,7 @@ exit: return ret; } -#if defined(MBEDTLS_PSA_CRYPTO_CLIENT) +#if defined(MBEDTLS_PSA_CRYPTO_C) /** Create a PSA key of the desired type and properties. * * - For RSA and EC keys predefined key data is used (as in the pk_setup() above). @@ -354,9 +354,7 @@ psa_status_t pk_psa_setup(psa_key_type_t type, size_t bits, exit: return status; } -#endif /* MBEDTLS_PSA_CRYPTO_CLIENT */ -#if defined(MBEDTLS_PSA_CRYPTO_C) static psa_key_usage_t pk_get_psa_attributes_implied_usage( psa_key_usage_t expected_usage) { From 5868548b9a409a80134883cf19712e864af1e69f Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Wed, 17 Apr 2024 15:12:49 +0200 Subject: [PATCH 30/32] generate_test_keys: minor improvements Signed-off-by: Valerio Setti --- tests/scripts/generate_test_keys.py | 53 ++++++++++++++--------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/tests/scripts/generate_test_keys.py b/tests/scripts/generate_test_keys.py index 9c5786d82e..1236baa49f 100755 --- a/tests/scripts/generate_test_keys.py +++ b/tests/scripts/generate_test_keys.py @@ -7,16 +7,12 @@ generating the required key at run time. This helps speeding up testing.""" import os -import sys from typing import Iterator import re -# pylint: disable=wrong-import-position -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + "/" -sys.path.append(SCRIPT_DIR + "../../scripts/") -from mbedtls_dev.asymmetric_key_data import ASYMMETRIC_KEY_DATA import scripts_path # pylint: disable=unused-import +from mbedtls_dev.asymmetric_key_data import ASYMMETRIC_KEY_DATA -OUTPUT_HEADER_FILE = SCRIPT_DIR + "../src/test_keys.h" +OUTPUT_HEADER_FILE = os.path.dirname(os.path.abspath(__file__)) + "/../src/test_keys.h" BYTES_PER_LINE = 16 def c_byte_array_literal_content(array_name: str, key_data: bytes) -> Iterator[str]: @@ -53,25 +49,25 @@ def get_ec_key_family(key: str) -> str: # - understand if the curve is supported in legacy symbols (MBEDTLS_ECP_DP_...) EC_NAME_CONVERSION = { 'PSA_ECC_FAMILY_SECP_K1': { - 192: ['secp', 'k1'], - 224: ['secp', 'k1'], - 256: ['secp', 'k1'] + 192: ('secp', 'k1'), + 224: ('secp', 'k1'), + 256: ('secp', 'k1') }, 'PSA_ECC_FAMILY_SECP_R1': { - 192: ['secp', 'r1'], - 224: ['secp', 'r1'], - 256: ['secp', 'r1'], - 384: ['secp', 'r1'], - 521: ['secp', 'r1'] + 192: ('secp', 'r1'), + 224: ('secp', 'r1'), + 256: ('secp', 'r1'), + 384: ('secp', 'r1'), + 521: ('secp', 'r1') }, 'PSA_ECC_FAMILY_BRAINPOOL_P_R1': { - 256: ['bp', 'r1'], - 384: ['bp', 'r1'], - 512: ['bp', 'r1'] + 256: ('bp', 'r1'), + 384: ('bp', 'r1'), + 512: ('bp', 'r1') }, 'PSA_ECC_FAMILY_MONTGOMERY': { - 255: ['curve', '19'], - 448: ['curve', ''] + 255: ('curve', '19'), + 448: ('curve', '') } } @@ -80,13 +76,13 @@ def get_ec_curve_name(priv_key: str, bits: int) -> str: try: prefix = EC_NAME_CONVERSION[ec_family][bits][0] suffix = EC_NAME_CONVERSION[ec_family][bits][1] - except: # pylint: disable=bare-except + except KeyError: return "" return prefix + str(bits) + suffix def get_look_up_table_entry(key_type: str, curve_or_keybits: str, priv_array_name: str, pub_array_name: str) -> Iterator[str]: - yield "\n {{ {}, ".format("1" if key_type == "ec" else "0") + yield " {{ {}, ".format("1" if key_type == "ec" else "0") yield "{},\n".format(curve_or_keybits) yield " {0}, sizeof({0}),\n".format(priv_array_name) yield " {0}, sizeof({0}) }},".format(pub_array_name) @@ -104,12 +100,12 @@ def main() -> None: " *********************************************************************************/\n" ) - look_up_table = "" + look_up_table = [] # Get a list of private keys only in order to get a single item for every # (key type, key bits) pair. We know that ASYMMETRIC_KEY_DATA # contains also the public counterpart. - priv_keys = [key for key in ASYMMETRIC_KEY_DATA if re.match(r'.*_KEY_PAIR', key)] + priv_keys = [key for key in ASYMMETRIC_KEY_DATA if '_KEY_PAIR' in key] for priv_key in priv_keys: key_type = get_key_type(priv_key) @@ -142,9 +138,8 @@ def main() -> None: curve_or_keybits = "MBEDTLS_ECP_DP_" + curve.upper() else: curve_or_keybits = str(bits) - look_up_table = look_up_table + \ - ''.join(get_look_up_table_entry(key_type, curve_or_keybits, - array_name_priv, array_name_pub)) + look_up_table.append(''.join(get_look_up_table_entry(key_type, curve_or_keybits, + array_name_priv, array_name_pub))) # Write the lookup table: the struct containing pointers to all the arrays we created above. output_file.write(""" struct predefined_key_element { @@ -156,8 +151,10 @@ struct predefined_key_element { size_t pub_key_len; }; -struct predefined_key_element predefined_keys[] = {""") - output_file.write("{}\n}};\n".format(look_up_table)) +struct predefined_key_element predefined_keys[] = { +""") + output_file.write("\n".join(look_up_table)) + output_file.write("\n};\n") if __name__ == '__main__': main() From e53701852b638b048635aa9eca6c384ed6f2c59f Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Wed, 17 Apr 2024 15:27:44 +0200 Subject: [PATCH 31/32] test_suite_pk: fix some descriptions in data file Signed-off-by: Valerio Setti --- tests/suites/test_suite_pk.data | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/suites/test_suite_pk.data b/tests/suites/test_suite_pk.data index 2ab36aa822..9a3781f3a7 100644 --- a/tests/suites/test_suite_pk.data +++ b/tests/suites/test_suite_pk.data @@ -8,21 +8,21 @@ PK write valid parameters depends_on:MBEDTLS_RSA_C valid_parameters_pkwrite:"308204a20201000282010100a9021f3d406ad555538bfd36ee82652e15615e89bfb8e84590dbee881652d3f143504796125964876bfd2be046f973beddcf92e1915bed66a06f8929794580d0836ad54143775f397c09044782b0573970eda3ec15191ea8330847c10542a9fd4cc3b4dfdd061f4d1051406773130f40f86d81255f0ab153c6307e1539acf95aee7f929ea6055be7139785b52392d9d42406d50925897507dda61a8f3f0919bead652c64eb959bdcfe415e17a6da6c5b69cc02ba142c16249c4adccdd0f7526773f12da023fd7ef431ca2d70ca890b04db2ea64f706e9ecebd5889e253599e6e5a9265e2883f0c9419a3dde5e89d9513ed29dbab7012dc5aca6b17ab528254b10203010001028201001689f5e89142ae18a6ffb0513715a4b0b4a13b9e5b3729a2bd62d738c6e15cea7bf3a4d85ab2193a0628c9452bb1f0c1af8b132789df1c95e72778bf5330f5b0d915d242d5e0818e85001ed5fa93d1ce13455deb0a15438562e8e3c8d60ec1e4c9ebff9f2b36b9cde9332cc79f0d17a7ae79cc1353cd75409ad9b4b6d7ee3d82af6f3207656cf2ac98947c15c398db0cebf8dc3eef5398269480cdd09411b960273ae3f364da09af849f24aa87346c58618ea91d9d6cd1d3932c80dbfc1f0a4166a9036911999ca27761079f0ce02db02c1c909ff9b4278578d7bb1b54b2b7082fc9e864b6b394e331c0d11a9a68255565b6dd477f4119c5809839520700711102818100d7db987ad86de6a9b0749fb5da80bacde3bebd72dcc83f60a27db74f927ac3661386577bfce5b4a00ad024682401d6aad29713c8e223b53415305ca07559821099b187fdd1bad3dc4dec9da96f5fa6128331e8f7d89f1e1a788698d1a27256dc7cd392f04e531a9e38e7265bf4fd7eec01e7835e9b1a0dd8923e440381be1c2702818100c87025fff7a493c623404966fbc8b32ed164ca620ad1a0ad11ef42fd12118456017856a8b42e5d4ad36104e9dc9f8a2f3003c3957ffddb20e2f4e3fc3cf2cdddae01f57a56de4fd24b91ab6d3e5cc0e8af0473659594a6bbfdaacf958f19c8d508eac12d8977616af6877106288093d37904a139220c1bc278ea56edc086976702818043e708685c7cf5fa9b4f948e1856366d5e1f3a694f9a8e954f884c89f3823ac5798ee12657bfcaba2dac9c47464c6dc2fecc17a531be19da706fee336bb6e47b645dbc71d3eff9856bddeb1ac9b644ffbdd58d7ba9e1240f1faaf797ba8a4d58becbaf85789e1bd979fcfccc209d3db7f0416bc9eef09b3a6d86b8ce8199d4310281804f4b86ccffe49d0d8ace98fb63ea9f708b284ba483d130b6a75cb76cb4e4372d6b41774f20912319420ca4cbfc1b25a8cb5f01d6381f6ebc50ed3ef08010327f5ba2acc1ac7220b3fa6f7399314db2879b0db0b5647abd87abb01295815a5b086491b2c0d81c616ed67ef8a8ce0727f446711d7323d4147b5828a52143c43b4b028180540756beba83c20a0bda11d6dec706a71744ff28090cec079dffb507d82828038fe657f61496a20317f779cb683ce8196c29a6fe28839a282eef4de57773be56808b0c3e2ac7747e2b200b2fbf20b55258cd24622a1ce0099de098ab0855106ae087f08b0c8c346d81619400c1b4838e33ed9ff90f05db8fccf8fb7ab881ca12" -PK utils: RSA Minimum key +PK utils: RSA 1024-bit depends_on:MBEDTLS_RSA_C pk_utils:MBEDTLS_PK_RSA:RSA_KEY_SIZE:RSA_KEY_SIZE:(RSA_KEY_SIZE + 7) / 8:"RSA" -# mbedtls_rsa_gen_key() only supports even sizes, so we don't test min+1, -# min+3, etc. -PK utils: RSA Minimum key + 2 bits +# In the following 3 test cases we test a few different sizes that are not a +# multiple of 8 and for which we have test data. +PK utils: RSA 1026-bits depends_on:MBEDTLS_RSA_C pk_utils:MBEDTLS_PK_RSA:RSA_KEY_SIZE + 2:RSA_KEY_SIZE + 2:(RSA_KEY_SIZE + 2 + 7) / 8:"RSA" -PK utils: RSA Minimum key + 4 bits +PK utils: RSA 1028-bits depends_on:MBEDTLS_RSA_C pk_utils:MBEDTLS_PK_RSA:RSA_KEY_SIZE + 4:RSA_KEY_SIZE + 4:(RSA_KEY_SIZE + 4 + 7) / 8:"RSA" -PK utils: RSA Minimum key + 6 bits +PK utils: RSA 1030-bits depends_on:MBEDTLS_RSA_C pk_utils:MBEDTLS_PK_RSA:RSA_KEY_SIZE + 6:RSA_KEY_SIZE + 6:(RSA_KEY_SIZE + 6 + 7) / 8:"RSA" From 5e965845d6c10ccc07d8f08cbde94ca7e7fa6b9c Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Wed, 17 Apr 2024 16:12:12 +0200 Subject: [PATCH 32/32] generate_test_keys: split group_id and key bitsize in the generated structure - group_id is only used for EC keys; - key bitsize only for RSA. Signed-off-by: Valerio Setti --- tests/scripts/generate_test_keys.py | 18 ++++++++++-------- tests/src/test_keys.h | 28 ++++++++++++++-------------- tests/suites/test_suite_pk.function | 27 ++++++++++++++++++--------- 3 files changed, 42 insertions(+), 31 deletions(-) diff --git a/tests/scripts/generate_test_keys.py b/tests/scripts/generate_test_keys.py index 1236baa49f..0a67a784cb 100755 --- a/tests/scripts/generate_test_keys.py +++ b/tests/scripts/generate_test_keys.py @@ -80,10 +80,12 @@ def get_ec_curve_name(priv_key: str, bits: int) -> str: return "" return prefix + str(bits) + suffix -def get_look_up_table_entry(key_type: str, curve_or_keybits: str, +def get_look_up_table_entry(key_type: str, group_id_or_keybits: str, priv_array_name: str, pub_array_name: str) -> Iterator[str]: - yield " {{ {}, ".format("1" if key_type == "ec" else "0") - yield "{},\n".format(curve_or_keybits) + if key_type == "ec": + yield " {{ {}, 0,\n".format(group_id_or_keybits) + else: + yield " {{ 0, {},\n".format(group_id_or_keybits) yield " {0}, sizeof({0}),\n".format(priv_array_name) yield " {0}, sizeof({0}) }},".format(pub_array_name) @@ -135,16 +137,16 @@ def main() -> None: output_file.write(''.join(["\n", c_array_priv, "\n", c_array_pub, "\n"])) # Update the lookup table if key_type == "ec": - curve_or_keybits = "MBEDTLS_ECP_DP_" + curve.upper() + group_id_or_keybits = "MBEDTLS_ECP_DP_" + curve.upper() else: - curve_or_keybits = str(bits) - look_up_table.append(''.join(get_look_up_table_entry(key_type, curve_or_keybits, + group_id_or_keybits = str(bits) + look_up_table.append(''.join(get_look_up_table_entry(key_type, group_id_or_keybits, array_name_priv, array_name_pub))) # Write the lookup table: the struct containing pointers to all the arrays we created above. output_file.write(""" struct predefined_key_element { - int is_ec; // 1 for EC keys; 0 for RSA - int curve_or_keybits; + int group_id; // EC group ID; 0 for RSA keys + int keybits; // bits size of RSA key; 0 for EC keys const unsigned char *priv_key; size_t priv_key_len; const unsigned char *pub_key; diff --git a/tests/src/test_keys.h b/tests/src/test_keys.h index 7e8f773b66..ec54fe480c 100644 --- a/tests/src/test_keys.h +++ b/tests/src/test_keys.h @@ -730,8 +730,8 @@ const unsigned char test_rsa_4096_pub[] = { }; struct predefined_key_element { - int is_ec; // 1 for EC keys; 0 for RSA - int curve_or_keybits; + int group_id; // EC group ID; 0 for RSA keys + int keybits; // bits size of RSA key; 0 for EC keys const unsigned char *priv_key; size_t priv_key_len; const unsigned char *pub_key; @@ -739,40 +739,40 @@ struct predefined_key_element { }; struct predefined_key_element predefined_keys[] = { - { 1, MBEDTLS_ECP_DP_SECP192K1, + { MBEDTLS_ECP_DP_SECP192K1, 0, test_ec_secp192k1_priv, sizeof(test_ec_secp192k1_priv), test_ec_secp192k1_pub, sizeof(test_ec_secp192k1_pub) }, - { 1, MBEDTLS_ECP_DP_SECP256K1, + { MBEDTLS_ECP_DP_SECP256K1, 0, test_ec_secp256k1_priv, sizeof(test_ec_secp256k1_priv), test_ec_secp256k1_pub, sizeof(test_ec_secp256k1_pub) }, - { 1, MBEDTLS_ECP_DP_SECP192R1, + { MBEDTLS_ECP_DP_SECP192R1, 0, test_ec_secp192r1_priv, sizeof(test_ec_secp192r1_priv), test_ec_secp192r1_pub, sizeof(test_ec_secp192r1_pub) }, - { 1, MBEDTLS_ECP_DP_SECP224R1, + { MBEDTLS_ECP_DP_SECP224R1, 0, test_ec_secp224r1_priv, sizeof(test_ec_secp224r1_priv), test_ec_secp224r1_pub, sizeof(test_ec_secp224r1_pub) }, - { 1, MBEDTLS_ECP_DP_SECP256R1, + { MBEDTLS_ECP_DP_SECP256R1, 0, test_ec_secp256r1_priv, sizeof(test_ec_secp256r1_priv), test_ec_secp256r1_pub, sizeof(test_ec_secp256r1_pub) }, - { 1, MBEDTLS_ECP_DP_SECP384R1, + { MBEDTLS_ECP_DP_SECP384R1, 0, test_ec_secp384r1_priv, sizeof(test_ec_secp384r1_priv), test_ec_secp384r1_pub, sizeof(test_ec_secp384r1_pub) }, - { 1, MBEDTLS_ECP_DP_SECP521R1, + { MBEDTLS_ECP_DP_SECP521R1, 0, test_ec_secp521r1_priv, sizeof(test_ec_secp521r1_priv), test_ec_secp521r1_pub, sizeof(test_ec_secp521r1_pub) }, - { 1, MBEDTLS_ECP_DP_BP256R1, + { MBEDTLS_ECP_DP_BP256R1, 0, test_ec_bp256r1_priv, sizeof(test_ec_bp256r1_priv), test_ec_bp256r1_pub, sizeof(test_ec_bp256r1_pub) }, - { 1, MBEDTLS_ECP_DP_BP384R1, + { MBEDTLS_ECP_DP_BP384R1, 0, test_ec_bp384r1_priv, sizeof(test_ec_bp384r1_priv), test_ec_bp384r1_pub, sizeof(test_ec_bp384r1_pub) }, - { 1, MBEDTLS_ECP_DP_BP512R1, + { MBEDTLS_ECP_DP_BP512R1, 0, test_ec_bp512r1_priv, sizeof(test_ec_bp512r1_priv), test_ec_bp512r1_pub, sizeof(test_ec_bp512r1_pub) }, - { 1, MBEDTLS_ECP_DP_CURVE25519, + { MBEDTLS_ECP_DP_CURVE25519, 0, test_ec_curve25519_priv, sizeof(test_ec_curve25519_priv), test_ec_curve25519_pub, sizeof(test_ec_curve25519_pub) }, - { 1, MBEDTLS_ECP_DP_CURVE448, + { MBEDTLS_ECP_DP_CURVE448, 0, test_ec_curve448_priv, sizeof(test_ec_curve448_priv), test_ec_curve448_pub, sizeof(test_ec_curve448_pub) }, { 0, 1024, diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index bee3273db9..ad7da32222 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -186,24 +186,33 @@ #define RSA_KEY_SIZE 1024 #define RSA_KEY_LEN (RSA_KEY_SIZE/8) -static int get_predefined_key_data(int is_ec, int curve_or_keybits, +static int get_predefined_key_data(int is_ec, int group_id_or_keybits, const unsigned char **key, size_t *key_len, const unsigned char **pub_key, size_t *pub_key_len) { size_t i; + struct predefined_key_element *predefined_key = NULL; + for (i = 0; i < ARRAY_LENGTH(predefined_keys); i++) { - if ((is_ec == predefined_keys[i].is_ec) && - (curve_or_keybits == predefined_keys[i].curve_or_keybits)) { - *key = predefined_keys[i].priv_key; - *key_len = predefined_keys[i].priv_key_len; - if (pub_key != NULL) { - *pub_key = predefined_keys[i].pub_key; - *pub_key_len = predefined_keys[i].pub_key_len; + if (is_ec) { + if (group_id_or_keybits == predefined_keys[i].group_id) { + predefined_key = &predefined_keys[i]; } - return 0; + } else if (group_id_or_keybits == predefined_keys[i].keybits) { + predefined_key = &predefined_keys[i]; } } + if (predefined_key != NULL) { + *key = predefined_key->priv_key; + *key_len = predefined_key->priv_key_len; + if (pub_key != NULL) { + *pub_key = predefined_key->pub_key; + *pub_key_len = predefined_key->pub_key_len; + } + return 0; + } + TEST_FAIL("Unsupported key"); /* "exit" label is to make the compiler happy. */ exit: