From 71da95c8b4a6f78ecc11ba6a107e215a117b04d5 Mon Sep 17 00:00:00 2001 From: Joost Rijneveld Date: Wed, 12 Aug 2015 15:30:01 +0200 Subject: [PATCH 1/2] Change 'uint' to standard 'unsigned int' --- prg.c | 4 ++-- prg.h | 4 ++-- wots.c | 10 +++++----- xmss.c | 50 +++++++++++++++++++++++++------------------------- xmss_commons.c | 2 +- xmss_commons.h | 2 +- 6 files changed, 36 insertions(+), 36 deletions(-) diff --git a/prg.c b/prg.c index 915df75..f39473f 100644 --- a/prg.c +++ b/prg.c @@ -12,7 +12,7 @@ const unsigned char zero_nonce[12] = {0}; /** * Generates rlen output bytes using ChaCha20 with a zero nonce and counter = 0 */ -void prg(unsigned char *r, unsigned long long rlen, const unsigned char *key, uint key_len) +void prg(unsigned char *r, unsigned long long rlen, const unsigned char *key, unsigned int key_len) { CRYPTO_chacha_20_keystream(r, rlen, key, zero_nonce, 0); } @@ -21,7 +21,7 @@ void prg(unsigned char *r, unsigned long long rlen, const unsigned char *key, ui * Generates rlen output bytes using ChaCha20. * Nonce and counter are set depending on the address addr. */ -void prg_with_counter(unsigned char *r, unsigned long long rlen, const unsigned char *key, uint key_len, const unsigned char addr[16]) +void prg_with_counter(unsigned char *r, unsigned long long rlen, const unsigned char *key, unsigned int key_len, const unsigned char addr[16]) { int i; unsigned char nonce[12]; diff --git a/prg.h b/prg.h index 88b17e1..d95c787 100644 --- a/prg.h +++ b/prg.h @@ -12,11 +12,11 @@ Public domain. * Generates rlen output bytes using key_len-byte key and places them in r. * */ -void prg(unsigned char *r, unsigned long long rlen, const unsigned char *key, uint key_len); +void prg(unsigned char *r, unsigned long long rlen, const unsigned char *key, unsigned int key_len); /** * Generates rlen output bytes using key_len-byte key and hash address addr and places them in r. * */ -void prg_with_counter(unsigned char *r, unsigned long long rlen, const unsigned char *key, uint key_len, const unsigned char addr[16]); +void prg_with_counter(unsigned char *r, unsigned long long rlen, const unsigned char *key, unsigned int key_len, const unsigned char addr[16]); #endif diff --git a/wots.c b/wots.c index bbc7f87..c513413 100644 --- a/wots.c +++ b/wots.c @@ -57,7 +57,7 @@ static void expand_seed(unsigned char *outseeds, const unsigned char *inseed, co */ static void gen_chain(unsigned char *out, const unsigned char *in, int start, int steps, const wots_params *params, const unsigned char *pub_seed, unsigned char addr[16]) { - uint i,j; + unsigned int i,j; for(j=0;jn;j++) out[j] = in[j]; @@ -101,7 +101,7 @@ static void base_w(int *output, const unsigned char *input, int in_len, const wo */ static void base_w_alternative(int *output, unsigned char *input, int in_len, const wots_params *params) { - uint i = 0; + unsigned int i = 0; for(i = 0; i < in_len; i += 2) { output[i] = input[in_len - 1 - (i / 2)] >> 4; @@ -111,7 +111,7 @@ static void base_w_alternative(int *output, unsigned char *input, int in_len, co void wots_pkgen(unsigned char *pk, const unsigned char *sk, const wots_params *params, const unsigned char *pub_seed, unsigned char addr[16]) { - uint i; + unsigned int i; expand_seed(pk, sk, params); for(i=0;ilen;i++){ SET_CHAIN_ADDRESS(addr,i); @@ -127,7 +127,7 @@ void wots_sign(unsigned char *sig, const unsigned char *msg, const unsigned char { int basew[params->len]; int csum = 0; - uint i=0; + unsigned int i=0; base_w(basew, msg, params->m, params); @@ -166,7 +166,7 @@ void wots_pkFromSig(unsigned char *pk, const unsigned char *sig, const unsigned { int basew[params->len]; int csum = 0; - uint i=0; + unsigned int i=0; base_w(basew, msg, params->m, params); diff --git a/xmss.c b/xmss.c index 48b0245..9384ca5 100644 --- a/xmss.c +++ b/xmss.c @@ -132,10 +132,10 @@ void xmssmt_set_params(xmssmt_params *params, int m, int n, int h, int d, int w) */ static void l_tree(unsigned char *leaf, unsigned char *wots_pk, const xmss_params *params, const unsigned char *pub_seed, unsigned char addr[16]) { - uint l = params->wots_par.len; - uint n = params->n; + unsigned int l = params->wots_par.len; + unsigned int n = params->n; unsigned long i = 0; - uint height = 0; + unsigned int height = 0; //ADRS.setTreeHeight(0); SET_LTREE_TREE_HEIGHT(addr,height); @@ -192,8 +192,8 @@ static void gen_leaf_wots(unsigned char *leaf, const unsigned char *sk_seed, con static void treehash(unsigned char *node, int height, int index, const unsigned char *sk_seed, const xmss_params *params, const unsigned char *pub_seed, const unsigned char addr[16]) { - uint idx = index; - uint n = params->n; + unsigned int idx = index; + unsigned int n = params->n; // use three different addresses because at this point we use all three formats in parallel unsigned char ots_addr[16]; unsigned char ltree_addr[16]; @@ -240,7 +240,7 @@ static void treehash(unsigned char *node, int height, int index, const unsigned */ static void validate_authpath(unsigned char *root, const unsigned char *leaf, unsigned long leafidx, const unsigned char *authpath, const xmss_params *params, const unsigned char *pub_seed, unsigned char addr[16]) { - uint n = params->n; + unsigned int n = params->n; int i,j; unsigned char buffer[2*n]; @@ -295,7 +295,7 @@ static void validate_authpath(unsigned char *root, const unsigned char *leaf, un */ static void compute_authpath_wots(unsigned char *root, unsigned char *authpath, unsigned long leaf_idx, const unsigned char *sk_seed, const xmss_params *params, unsigned char *pub_seed, unsigned char addr[16]) { - uint i, j, level; + unsigned int i, j, level; int n = params->n; int h = params->h; @@ -355,8 +355,8 @@ static void compute_authpath_wots(unsigned char *root, unsigned char *authpath, */ int xmss_keypair(unsigned char *pk, unsigned char *sk, xmss_params *params) { - uint n = params->n; - uint m = params->m; + unsigned int n = params->n; + unsigned int m = params->m; // Set idx = 0 sk[0] = 0; sk[1] = 0; @@ -382,8 +382,8 @@ int xmss_keypair(unsigned char *pk, unsigned char *sk, xmss_params *params) */ int xmss_sign(unsigned char *sk, unsigned char *sig_msg, unsigned long long *sig_msg_len, const unsigned char *msg, unsigned long long msglen, const xmss_params *params) { - uint n = params->n; - uint m = params->m; + unsigned int n = params->n; + unsigned int m = params->m; // Extract SK unsigned long idx = ((unsigned long)sk[0] << 24) | ((unsigned long)sk[1] << 16) | ((unsigned long)sk[2] << 8) | sk[3]; @@ -474,8 +474,8 @@ int xmss_sign(unsigned char *sk, unsigned char *sig_msg, unsigned long long *sig */ int xmss_sign_open(unsigned char *msg, unsigned long long *msglen, const unsigned char *sig_msg, unsigned long long sig_msg_len, const unsigned char *pk, const xmss_params *params) { - uint n = params->n; - uint m = params->m; + unsigned int n = params->n; + unsigned int m = params->m; unsigned long long i, m_len; unsigned long idx=0; @@ -564,9 +564,9 @@ fail: */ int xmssmt_keypair(unsigned char *pk, unsigned char *sk, xmssmt_params *params) { - uint n = params->n; - uint m = params->m; - uint i; + unsigned int n = params->n; + unsigned int m = params->m; + unsigned int i; // Set idx = 0 for (i = 0; i < params->index_len; i++){ sk[i] = 0; @@ -594,10 +594,10 @@ int xmssmt_keypair(unsigned char *pk, unsigned char *sk, xmssmt_params *params) */ int xmssmt_sign(unsigned char *sk, unsigned char *sig_msg, unsigned long long *sig_msg_len, const unsigned char *msg, unsigned long long msglen, const xmssmt_params *params) { - uint n = params->n; - uint m = params->m; - uint tree_h = params->xmss_par.h; - uint idx_len = params->index_len; + unsigned int n = params->n; + unsigned int m = params->m; + unsigned int tree_h = params->xmss_par.h; + unsigned int idx_len = params->index_len; unsigned long long idx_tree; unsigned long long idx_leaf; unsigned long long i; @@ -686,7 +686,7 @@ int xmssmt_sign(unsigned char *sk, unsigned char *sig_msg, unsigned long long *s *sig_msg_len += tree_h*n; // Now loop over remaining layers... - uint j; + unsigned int j; for(j = 1; j < params->d; j++){ // Prepare Address idx_leaf = (idx_tree & ((1 << tree_h)-1)); @@ -723,11 +723,11 @@ int xmssmt_sign(unsigned char *sk, unsigned char *sig_msg, unsigned long long *s */ int xmssmt_sign_open(unsigned char *msg, unsigned long long *msglen, const unsigned char *sig_msg, unsigned long long sig_msg_len, const unsigned char *pk, const xmssmt_params *params) { - uint n = params->n; - uint m = params->m; + unsigned int n = params->n; + unsigned int m = params->m; - uint tree_h = params->xmss_par.h; - uint idx_len = params->index_len; + unsigned int tree_h = params->xmss_par.h; + unsigned int idx_len = params->index_len; unsigned long long idx_tree; unsigned long long idx_leaf; diff --git a/xmss_commons.c b/xmss_commons.c index 834fa5e..745de5e 100644 --- a/xmss_commons.c +++ b/xmss_commons.c @@ -8,7 +8,7 @@ Public domain. #include #include -void to_byte(unsigned char *out, uint in, int bytes) +void to_byte(unsigned char *out, unsigned int in, int bytes) { int i; for(i = 0; i < bytes; i++){ diff --git a/xmss_commons.h b/xmss_commons.h index 4b780cf..c8f0ab4 100644 --- a/xmss_commons.h +++ b/xmss_commons.h @@ -8,6 +8,6 @@ Public domain. #include -void to_byte(unsigned char *output, uint in, int bytes); +void to_byte(unsigned char *output, unsigned int in, int bytes); void hexdump(const unsigned char *a, size_t len); #endif \ No newline at end of file From 5823bae42623367031db0cab370ac2c16079711d Mon Sep 17 00:00:00 2001 From: Joost Rijneveld Date: Wed, 12 Aug 2015 15:38:25 +0200 Subject: [PATCH 2/2] Add missing xmssmt test, ignore test binaries --- .gitignore | 7 ++++ Makefile | 4 +- test/test_chacha | Bin 26613 -> 0 bytes test/test_wots | Bin 62804 -> 0 bytes test/test_xmss | Bin 125776 -> 0 bytes test/test_xmssmt.c | 97 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 .gitignore delete mode 100755 test/test_chacha delete mode 100755 test/test_wots delete mode 100755 test/test_xmss create mode 100644 test/test_xmssmt.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..584d884 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +test/test_chacha +test/test_wots +test/test_horst +test/test_xmss +test/test_xmssmt +test/speed +test/gen_testvectors \ No newline at end of file diff --git a/Makefile b/Makefile index 5153eab..e8ba9db 100644 --- a/Makefile +++ b/Makefile @@ -22,8 +22,10 @@ test/test_xmssmt: chacha.c hash.c prg.c randombytes.c wots.c xmss.c xmss_commons clean: -rm *.o *.s - -rm test/test_sign + -rm test/test_chacha -rm test/test_wots -rm test/test_horst + -rm test/test_xmss + -rm test/test_xmssmt -rm test/speed -rm test/gen_testvectors \ No newline at end of file diff --git a/test/test_chacha b/test/test_chacha deleted file mode 100755 index 9a032af9818bbd30d18273b658322a4a537615a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26613 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 diff --git a/test/test_wots b/test/test_wots deleted file mode 100755 index a2032ae5c93413521f3529463a39511d001eca9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62804 zcmeFa3w%`7)i!?4+%l7dOn?9hHwO#~Dj|u8Ty+8oOdu$iM1!{wLPDY;iOD2@Re}a6 z^Tt@{P21WAFZIQ0E4}ejYc){|XshC-O1-pbs|K%l$7}x2v(H{*$NYp=cb+H3E<_T|h>S__KiJ51A%%VC^lkUEqcR4nUm7@M9~q~=XGd`8fiV2n3B z;JEQGs8aZ}kUWoR)$;UeIVYYj{G0Bu7}Fg=1>`x}VjJ=l3;ASu(JQE-^?d3KirHZf+8K{ z!^l_n=##R%mb@HZO}sZ-k$46bkmo%X+mNT^TZ(+N^Xp!zT5y>z?|6Pm)%MF%SJ#+Q zTeE7~)G4*AC)d{0HLst%e)_b@)23!M)o10ZdQ(4T7o1a~N)kV&gQCr8_{ToL^dDb5 z=}5z8_wM>6y>oh9kMo$Z=HNM$r>wM_0*0ZiA%DiZ?b0cS#&P&; zh5-Kczs?3D(4PtVZu}dl+(XCVhmXVGaUA{~$Kk(v9R5f+a3Fi={{a5=zm|g$=+6Y5 zb{suxkv5S2*5mN^ABXQfj{dF3k^kv&_@5ky?>~-yhQ7f@hH)sk5;-x>)g3qV?~29^ z4dHtB>71dMB-H8oA)%Escw^J?qsDvQfk)m9p1Woy>f*OfJe%NxUG zWk%V;ma=79ZeDG9Q&VM=m3_d>%R_l*+e2p*dVpUEXM{ ztz6qw88#X#%U46FDkck3DjGHzO<~lu(WqM2SQD-^>KiKSjHcSk$_7Z&HM*v2%WLY4 zbC(pHvwV3`ndPMgMTK+cmE~sTW}RUO&Y5b%C^|iBDxK{>9I&F83)qeSoOoJc$D%!o z?=%u@KH~!aGYrO=0RNqODZ-!IIE_qPO#MEdlHNSB#>a>=(@u98yLCF{zq{l6$e&=$ zM>_MQ)zl1P2uinj-9=dYSdgIF`2aVE6!PrTXLoA{+0lSHc2G~ zV)&L1tQ-?#_)bxRXLbxfw%qA4{MdOR7{h1Ta)n~}_836ok{CW5U|*#%{6w2;7%OA= zNiqED7=CgLzafV2kKwP6;j=yD+7!bdEKEGN#qeX}(e@br&=~m}V)%@Oa_x-a4-+Py zyJGmmWB9vc_#P1?}W{``%ef0 zk*=oDk;A>XCR{<9UF66?MK_XW*ErIp=u1gEN$*zlD$?uTP-v~*mxNtI9-`Dago#n`DBJ!gU{>QJgf9g8=GI=)Bq zLmj`RRYj4HdZxkFqK*z4RMb%bfeuUHdlU$DH17;WUhNr|F|bexQeP>Gyxp^DjA0aP z>D@Rz&%dX@$eZr*Z=qvyx^kX)eYF3CO{^=Diachht;@`tS>!hSTegAOcE6cFl_z9u$So^$nRf#ACr0yYya#eCGy?JoRAMi?hkdpc6P`-7<&9zGct2c zh|EtQb11UU%KwtiziG~j(*uUlJh%iodp4r^F5c&!50?4f1B?fuwmGHQ5D1U8O-L)b z&%iDO^1TNyKJpD@@tDT zZYzq^X6`LQrURi!QRcyd$lFDD9x95g&ODqSIZAasd6A>}kv~Nq%Lj93VfUMX!tS>M zA^a=sK7!{FJl_cH&(FM-t<3u6nfnXO56sUCa*pNayp{7>UiX32?nhI*A5P6TAILM` z$vISz^Jw>hw7l*|(=1s_5_0L?kEX{6Me;MZwdZHY?#I&1&vRbu zemLDcm}fp*V187P^JLEcyzW1xc0ZO;U_PH`ex9H6VnI$%_d_V-Kq`fDo&5({!Z zr6dK+2lLHC`8lt4Ka`P|vkz)%kWxnx*l`GKn6MKjY@-QKY(A3n7BuIX_oGHMI6vnJ z^F63S?Q;GKWqIb~C>Dm~=NvE}K`nFMQo@!XjL!M15@CAxfsD4=%v(+WmWL4L^3hD& z&>pu|`RmY5`DmwYfJKS{3-XZ$#;QMA=~nWp2dezF-AZg5T8q>)gwp&X%$E-kmGga zIP#vq-dpAWq8rapYL&nK5Quk31giYye*^I%iENs+3)B&a9KgRPtMdKzf2{J?JWB9L zRi3}`pqKZ@p`_+<D*Rlq!GuV|ad1<*!D@ z#%Ey9O6GdszsjW2z}|-}Ps6%uiZ>oaMOLzCl&}&dRO=GRgM`2SAjA(syzvQ2LZbf5iunwJ zPf_}rRLd9?xS#0bssevaH_dvCgQO z{()0kUU6aMGeqSNmWLuwV$HCf5o^ycHuE zdUGeQ+R*({DqwQBGH_Y{*x5s?Z7Zb)j0r7o3{AR>tnNrQ+l zMntJvnj|7A5J`u~pcs*4rNu8ILm)C5B7#;T+uAum++^B2C># zh^mp0&4g@5j4G=(qeNsZL?%LHOpM5ArR4-Af_23b2V_nI2$~`U0tGV7@(&RmG?h}e zhscGC_^^CLL?>|}6STcVF5JY2<)_e==O8rOzvW}J?~(6e4PCVz(WC&A>?dZG|Ly$D z;Cp%gR##@rTyPvr!cYQx3E60-@G0QC$VW5+f2G9_G!G#!Tk#q!UUq0kw|{dZ3i9tM zb{o0Hu3+A_G#3|Ap&1YOx0Xsus3T-DH8kT-6!337OQ)DfaUdm6r4+kN|JDD`e4XU+Z@p0`B_PR*qy;)D!N2uto#aK54@n`N*7?9r1iMhPeJ#t$P6Rs% z?1h@0*fN{!B(RggUZmMcEfdI2273_LMVg)5l0r6E$?$QpYfz#2e8_yEEk85cYZ8HV|~O5#gS7hpcys>l`0#fmy_Te9?ub*~-C!rGWB#DR)RdWZ$h$Jf!zli8iHFt1~NU9PU zszfk~1O7d85vm#ys?g31Rj*hQX-aN{sM4WoZbpnMt2U!VM2D)mV`4-QD3_h!J1Wsk zMJhxyJ5UW6#-~EU4pIoC1BCJE5U~RkL}J6Z4o}Vg*UyXYNkWm=bKbQ2YpCP0e*M+| zK6(o~sZHP|N@bZF#f#H}M@S1s#i>#p+lO^jv~$(XzQd zN00gw&N8y|+KvVMo3Dc`P*8R3a1zclvM3{&XgsRA>js43V4XLkHZa|m&>0456pm|$P*Xuv2;$`m%xh=~(Urr9%-k4Z0 z<3KnU_Wfu=z{rn0bocfc6U(4WxhB+ir;7bqVa1`s$RmXj?AMboD2#kq737;a4`L|w76#09o`)vfOV>(cUPtN(UAm<58RQ361 z7=_r)V>RT;4Yln{Et>Jnx>q?tZO(@&m^#C5gvYdu;I^rlbQ&;sz31OL$x6D?jVY?Z z0akF^m8qDX1`D5}PR+;M^f6owRabIyYH(>jCZ-pKkC~~#t@)Uh9uhvLr3R1YV@mp^ z@G&PfBxpY7qaO$#6H%UZ?5RMe2DdA^nviidfqAxZNRTM85p zlTbsl<|Vb{C>~~@hC!N_+%iV-27#BNd4pPf;N`nhwz+Z_Z~3Qx^DcO1UdL1;RPiCa znPauwzQT_AY`Oi?a{K+8AAw+D+h=IG2Y?nwUdrh$$axO?aaWNw&#=*4XBD%nB@-<*d$D0sFfxNSDtV7*y5<1_!(Q^76342ff$j`a?(^0yVUxrPeg z5i%dk-Uw{$26EnHJIkdG?+&|(uJ$-DCgfY z$n zVWsWx7i|X|+w%Os3m{9+H?YjzRN?=ei=04VsJY_m z2kA9ExmoM3Q2U@4Pr%F)LV}uE?mLJ8-qVZ>d$IPy@nPTiZ~K22GFbjU0!07A?aHZk zJLuC~w7_R=2TZ#K82-=#U-Wk`&uCvjn(g5r>yCrB*X~^jHhkd9qzi)}l!s|EJO`gs za3a%|NLnd@a=<143RP1mTe*y61Ig*iv6!OK9!i)V?FwRp)%v75;_exYLLlD!IP=p@Sov6|-#s5fFz3Vj!l*b_ zD%B7~*^&Jb_gd%;Kll13d;R~e|CH{$;=IWFC6Pzk-ZWv~r;(=Q$oZ*}MQJ^)Q1h<; zv;%WHTrb1l#t%OFII<`mS-N`Oe_17UMV$V-{-`+1l<+A`zofh8DJyFiqDy3+%jt~F z^ZM_aml~NjT3KqBug-@HBhTcWw>YvduLNrn6%bUAX?r6*RM9w^=htctmyP(9*S^4u ze&(V%*y3#d9iFT|mUb>Q(|O4`&qaoajfkq*z(-M4%bhWNTgt||GHyp@pXTDURpuNIlYCE zcQH8HFHg_u&3UM!6f*<;xaFbdVOT~^`nYYs8LD^)o!*uBJ1=xhdZ!?=&pev<3Huu!oKV{3B$H2ux?F5@k3ltZ#{!p9Cw|a_; zIX}VXrV1A`{->BREWLcGs$?ydk^QKzhg1PGt5sG9W9t~ zm}ke0JS#k8{=LfI^c;>{zrgVyj}e=mcY(m!;KqVGodtL1&v-996>pgK=0%R>MIM@e zYI0kC#{x6oJdiizVAIIF$iwqbO>1l0@5na~&UmKDN6}N0e~)DUUF%#Om!w4AZM#3g zU-)eIr_NBtlV~NZ=3m0AzNaGZc7Jk$nvDP1{n{Aw>9$uACcWFS&>MO7$-|L-J-6fK zE4pfW=!k@I2BL-`#Is`G4O zR`j1CczyFr@1*;=?x=VIqb4mae^NJI+L-&E{1gjBSN^#7B4y}1f4lPWy!KYtmfkR8 zZbA`yOi|=vbH5sQ?YWU|DnMVG0e4K@*8FB+#k$d<_L43YAVTd|?e00@69$Cyz55Hg zRN3f-4*;lma8(ydE=dlxH}6G2_|ysr1^olUVg!VOJ^`U18SeMrRhF9Hp1C#Tym)uP zmVbuJSZTa%J0FKNuluRLVAi^{rVxsN29)EU*WsF`0>j_1y-|SyrXGNDKVC)Uwe5?E z4M)JWV#AbUy}bo9UTOYSTS1rEUeIMl26g7rcf+=&tNCKAyD?I`j$DjGo%_`La=xj& z4_z5=zKJjZj3d*CIEId#M&u?M4}?LAp^kC7r4#`PYW6W1D>vhalgW_>j#MLId!P7& z;8Ucw+x_BC^DZm?B!5Nxd8lvvNrqj8c(oU?LQq{VEW)^9{K?k=NXMTeUlo4}B>o(* z)zZHKT|MK`V4}!7r=VQd5t>pEIKOZChoNjX^{(Ox1bF$5q`13L1&nTNK@#ka2 zAHU6&`13L1&*KBfpNIXMe}x87@#jFnq(^o9L7Z3d2Lmu%9$EZgQG1CBK!_Z607|~5 zPXOvx0jRKV0LuTe2=t({;K2e$AZoWF(1KHwuh9`Gf5!bSh(HgKr6SOQ8K1Nu0+k>F z-K`@~en*uRg7W=^FXeTA<}9puYQP}$N}nK)*7V!d@Mn#dn3p25szn8^l2~HwXkCPpMz&k7v9-dSo?+u!>fN! z@^GBj4$qslAhq$$f*CKjEG(F{2J00R$B2{}iu|=G@*zF~p&}9u+cpmY>2O}#gE}B# zf#f^LPzCGMdgVv&F($pdZckgmgNR8FS}|z?S1SX>q=!^YDr7KGF-gTA6_Zr_LHD=f zj}?>BDW_sm3WJUvlk%;Y^cyCtnDjOnd6DiT#dt=Yi}fviurVXb!WK4xTiEWmyff}^ zedoOg)OIPFUJ~j!?M$v})d!%qd>B5_@}Gat(44M&uf_sd6&S+mt!K$|sN{^-oBx4z znfJnr^?K~<=T99VKhEkR_@EC?*tod;OI~qN#{{pR`+<(hd@e7V^m5K~q3+L}G_a@S zS+42d43Cxl4wjc_!F=fGO?#eJ(!kd&1MQcEG5hoP9^gU{pY=i&0P$HqHU@b3xMrZf zIgHO+HU%cE4y@V`u58N6$_f-$mxlvQ)%DG_s{?iQ;XrkH13p`c6qU^gm8}hg%P*^J z3ap*HswNz`ta3xsX@PZ>fi;j_JBON@!+~=0Yb)#4gsTJfRnVU$pTP^2H&tg<%&f+v zEVr(#Zf0O!b7Ny=T{uv)wxPCiEl_#5roJw)x*lcFfTre#hWf^Epe`_OPT=(1(*heR z!?rpjR^R^tb*hq6R#&!6X>Kg9TV21_n2?>j-e|Zihov`MmW#S18tdvCFRNS~Sc6Ze zhQ}o$ac024BbSe+nl*SB<|yYZZ0HPr7Vp5J-d?`{N=IXE!<-j*zPI-f_~|e7_GW`$ z`ciN2dOW?@mv!M;jm6EE|M zWrn#v)f|?`x|AOe-r%*s&1IrsmCekUt_nF?_C8(Q`k~%*neW5>Top+OQ z_Q+YMoSr$JD)RNe!_YgO5n*mh>bD#PDe2ca=cWWYTys+S8OPSu5;2h^p z$<9leh_tyW>5!e9!YSF(b1j~S4)^xnfjUvobq>gMI72CcYhC#%6SunaQ?lDU3sbsG zXR9kw>B)=HlgAGW&c?r|@Gppc?K1e7dO94Tl=N$z`6+>|E|lHoRw^bt5>qB3f1cQ( z@}Gt*{7m{vwCTIRMqWy4n`1#ra7AKDYF>(Wev+fsLW|VLP$|zN?Q9%eG}CU#Z*|NY zRoWMZ{H8a0d-)dEvJdsV)(Km*eG5{yJDk(Ze)cVp z`uzs^x^Qqm{`mP1nvQ?=%U-AqV0*uhe7n&%2La2)woYc>1piVp;cLgr#1yaciea#x zry>0q(ywPa{CX|?lD^fsASKY|a=<_7s5{zI)s*rVLB1OAP1aFG1cqwH%I#$2V#B!g4o=q5Yt+DMf_gl^dY>s-alBtjne%#wTj)v>OTlLwTm1mz zppE{iRh32eQR6BMxrVQhqg^*bZrfiFgHRt!-?BlT^P~OB*=34ZY8?JqmtV>9(LQ<{ zD*qMGe<6;;5Xa%-lwj>Z?o;(kgC91*J{J4$>)#&uw+H_1fq#48-yZn42mbAW<9T4` zprA_Hq@NdeS#If_%uf$w+rwG!H*`bvc5#8;0zE*JwknRXp}yD%CJzzsp4y zmSENuT&bS2hB~bC%YKV*DtO@=IqF)U5L8d$hcqpAXIoE|B(+^3&U>*p)_`JsM#5`#+BaQ!?g3#J zMdfVFnVOY7b&|z3;skRi=giQOmQ1eNcvzjotI9YyD5#!uWdumc`pFG}!#Id`wd4aM zgDPdbMQW+&!;&A4FSuC(OU4IP;uTSmKFE@9!WZ7OJ>!EaU2XRINLqv?KLY0@mVCpB zmi#R;V*2H=kgyTMI9A8-(F{Jwrl1AyP~ z{|*oFf;zJSZQl58NTmJ|kXPzK-1gw#;OB7je8PL@kXLYb?%32i^lgAv$fs=rctQ7E zK*PLn*llLA#kkT+4nCgQ6)7RlJ6Zh-OhM`6nQ{}& zdIF?X;hR~*JWLQ)g>NBw1xZ!mTUp^>gS0AqTi*)*XWt6%qUJXs%nB>wOpM|&-5Ejf ztqQMzRRdOd%yU|54Xxg7KN~&xss095b2f#vx*T)XSKQm4M6O=NR>PZUW?Z?jHze!7UDJTyn@c z^+>hGw9^{QPKO%IPHQkbt)gtiPkFuc9rBWaCxr`J83 zrQQyc+&2_ka=!=1i0VWRzJz3x1~(-Bf?}zP2q$i) zWkXB`nDvSL@L$4kb1{fbi61i02=hV^*Cf8clytKlkG8}!s9?1DBM{pXw=rdc`3;C| zPdtx#vdj(;HzY1)$`nQHOkBm3Y(?x!tRa!3h~0_&G)Y3PIT?BOCjNuORApON;^$N_ z&AbVZ2aTi)>4YD8p8%Dfu#=VaEur*Hgof{O+!JnQb-liI#J91wsc1?5bd1N#HcV#I z)9gW80mx-*D()|ZI~3gi0+B*l$E!fztM>DL47FbG+qn&8`p$+ezMHM~pGkZRvCCHj zLEo*!ULS*~@2Bj^slI8Ar=O`Oh-ofbS&ocWnTk=sQAu`%i$geRopkXOy4r zdkPKd`#Hx&&{vGR?=G%=L%tm1UwMF+`1qp~zF)K4)xK|1&u@sUeQy!(nF^T(!!Zj& z-i_Y@%l|N7w$Eq24IPk_KmY&Fuk^553 z0^|uKsu~S3S*3}F;|dnD`4b4F261!vpwW9rA`(+i1MTt7M>#39&*Ke%n?l;-?M2#P za_P?@yn#t)d%UNDP)RI7B@Ov4l83O%AbGwd(~nlN9|$RxlEMRGD@7d@d%QmYBgN9* zDnfsz5G@!ol8Dh@2o()c3GCBQNv_9xtK?x*^v@H`t@9j$bTSnWhqUT?E~`Fl7|SeG zth(tu6!mz6xTo9$2YS40s-c{t9A%VqHX$i3ADSIy3SNzLM;W{EFi79S(p~_|%%HS{ zTJ>TCw0Yxx&Q5CX%3vMqF^j0FJA>9g0xCTKRb~c#e5y}oGL;$unVz9isryrq8CfJp z(K(JCD@QJZZQs{ZNIH1D%u{Eh$Wc{Dx)>|X(H8=Y`GppmmdrV;*vuJgF7-M2B@gR5 z;UXFqb&7Q6Qd&Vr7Dc!{QSK+O?gu*P_K<(sCi>D-KV@cjoyr)g36oI=*=EbmN%#U z0@8dNWUUKS>TMt`Z%!KqVKQq8|3%N&jz>~AoChV}qg}xU{ss-=zD75}fIXruCc_<825a~Z+#$wz#|LSKVYly5t9@7Y zXuBJ`9>zQ?fNI5(g4-T#ud0vhcdRC zWf-X;>c;YnQ`Mq$m}MY?y`|_DL58sc_PPvi1oSTIDnM3m$@n1d*ifoFc9P)h0}v+{ zjgF@%CC46mGu4g+=PU$x`&gv!SxKK$mA(fg(9JEAlUpX&4N8SK;rHOU8yeRbreEwq zRn=wQI0cfPMkEn*Vt6F1Me(NpM@T;e(xXP0pSy~|=}2u;soRmd5Ty6w@j*bt$YqP6 z!@p;i_{?HFihbr%JeK;*Wj-grV#3R3mYUh<4c;;kiC(UGlL(XPVKaT@_#g(Xgm8_QSLrPI25Kw8$N)4C6A>(XgmRtALCT%%IgfEpLdInjV%X@;#pN-(&B5_O+zsP; zbvKMP5c#rWwJ$x6vv%Mvulq4*cipMZ-t?i{T zIq7^PIRA`Wf)lnlCn@+>JIQPKyiXuCaRY9iUxM!#zX{MuXC(ZmqNyU`MFndKUsbRj z&`5d!*i7kPZSzJ3reqx1r4XcIjvsWVlKeh0tpJ&VhEJv9--7Tz12F8wAnw?-;h#C? z9u%MYIpFI^Pkk3){b+z!0e%56c$}6#7wU&#zHY&N>G&q&N}S4^xJfQ^Fg~7X5v`|L zM>U53R_Iu$vo`>nX^BuW^gci%?Kik3I{7suUY&zWwP2$v2P+RrLZKWt!=`9~9S|62 z37I*@U@3s?AvojAL3i^`hRWeps|{0~R$>(sT**?55l89K40?YPNS2jO-=x#s>B`X~ z_8`$Yifzgis!eB8Dmkx_@i`I_?lEVP#Tz;X0*cGH-edRCY(VzW{^!@Xf$#9TirGE% zd9cfMJ17?yRp`FfIj(jY}UY-=WJ|j-`@}$W1IdQs|Cq=F=hyz}p6uEkdC;GNC zuVIqN_VJ|1Wh!F2k0(Vgha!SLP7p4aB0@f%6uI1rSmNVJk;|iqQXfx>TwZe(3R~&p zNs%kjtOil-<4KV#*`&b@KAsf0QWX*Q@ubK##ANfW_wl62HQcNQvB}4iBG(AB1;jNz zo)o##%{n~Ve2g}((dI@F+kD%YGQs4K+3w>>kt@sG1>y$ZQl?B%#7-Yiid@->*yZC% zkt;_LyL~(!;C14`#I6*4VAt>rA@-)MH9SL!l2gD-BT7wKXLyDYrFqX` zE)~Jky&H%}kU!dRSCB~mHEizWY1#| U~flZl1@ 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�C~KhAwFmgPSmy(B-@M=+r$+pjRW2` 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 S)qctA%?}9KY=!Dm#Qy-f&<^AP diff --git a/test/test_xmssmt.c b/test/test_xmssmt.c new file mode 100644 index 0000000..b174b7f --- /dev/null +++ b/test/test_xmssmt.c @@ -0,0 +1,97 @@ +#include +#include + +#include "../xmss.h" + +#define MLEN 3491 +#define SIGNATURES 1024 + +unsigned char pk[64]; +unsigned char mi[MLEN]; +unsigned long long smlen; +unsigned long long mlen; + +int main() +{ + int r; + unsigned long long i,j; + int m = 32; + int n = 32; + int h = 10; + int d = 2; + int w = 16; + + xmssmt_params p; + xmssmt_params *params = &p; + xmssmt_set_params(params, m, n, h, d, w); + + unsigned char sk[(params->index_len+2*n+m)]; + + unsigned long long signature_length = params->index_len + m + (d*params->xmss_par.wots_par.keysize) + h*n; + unsigned char mo[MLEN+signature_length]; + unsigned char sm[MLEN+signature_length]; + + FILE *urandom = fopen("/dev/urandom", "r"); + for(i=0;iindex_len+m+n+i]) printf("pk.pub_seed != sk.pub_seed %llu",i); + } + printf("pk checked\n"); + + unsigned int idx_len = params->index_len; + // check index + unsigned long long idx = 0; + for(i = 0; i < idx_len; i++){ + idx |= ((unsigned long long)sk[i]) << 8*(idx_len - 1 - i); + } + + if(idx) printf("\nidx != 0: %llu\n",idx); + + for(i=0;i