2121
2222ATTR_PURE static inline uint8_t * signature_c (uint8_t * base_ptr , unsigned int index ,
2323 const faest_paramset_t * params ) {
24- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
25- const size_t ell_bytes = params -> faest_param .l / 8 ;
26- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
24+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
25+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
26+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
2727
2828 return base_ptr + index * ell_hat_bytes ;
2929}
3030
3131ATTR_PURE static inline uint8_t * signature_u_tilde (uint8_t * base_ptr ,
3232 const faest_paramset_t * params ) {
33- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
34- const size_t ell_bytes = params -> faest_param .l / 8 ;
35- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
33+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
34+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
35+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
3636
3737 return base_ptr + (params -> faest_param .tau - 1 ) * ell_hat_bytes ;
3838}
3939
4040ATTR_PURE static inline uint8_t * signature_d (uint8_t * base_ptr , const faest_paramset_t * params ) {
41- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
42- const size_t ell_bytes = params -> faest_param .l / 8 ;
43- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
44- const size_t utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
41+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
42+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
43+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
44+ const unsigned int utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
4545
4646 return base_ptr + (params -> faest_param .tau - 1 ) * ell_hat_bytes + utilde_bytes ;
4747}
4848
4949ATTR_PURE static inline uint8_t * signature_a_tilde (uint8_t * base_ptr ,
5050 const faest_paramset_t * params ) {
51- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
52- const size_t ell_bytes = params -> faest_param .l / 8 ;
53- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
54- const size_t utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
51+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
52+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
53+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
54+ const unsigned int utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
5555
5656 return base_ptr + (params -> faest_param .tau - 1 ) * ell_hat_bytes + utilde_bytes + ell_bytes ;
5757}
5858
5959ATTR_PURE static inline uint8_t * signature_pdec (uint8_t * base_ptr , unsigned int index ,
6060 const faest_paramset_t * params ) {
61- const unsigned int tau0 = params -> faest_param .t0 ;
62- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
63- const size_t ell_bytes = params -> faest_param .l / 8 ;
64- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
65- const size_t utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
61+ const unsigned int tau0 = params -> faest_param .tau0 ;
62+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
63+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
64+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
65+ const unsigned int utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
66+ const unsigned int k0 = params -> faest_param .k ;
67+ const unsigned int k1 = (params -> faest_param .tau0 != 0 ) ? k0 - 1 : k0 ;
6668
6769 base_ptr +=
6870 (params -> faest_param .tau - 1 ) * ell_hat_bytes + utilde_bytes + ell_bytes + lambda_bytes ;
6971 if (index < tau0 ) {
70- return base_ptr + index * (params -> faest_param . k0 + 2 ) * lambda_bytes ;
72+ return base_ptr + index * (k0 + 2 ) * lambda_bytes ;
7173 } else {
7274 return base_ptr +
73- ((index - tau0 ) * (params -> faest_param . k1 + 2 ) + tau0 * (params -> faest_param . k0 + 2 )) *
75+ ((index - tau0 ) * (k1 + 2 ) + tau0 * (k0 + 2 )) *
7476 lambda_bytes ;
7577 }
7678}
7779
7880ATTR_PURE static inline uint8_t * signature_com (uint8_t * base_ptr , unsigned int index ,
7981 const faest_paramset_t * params ) {
80- const unsigned int tau0 = params -> faest_param .t0 ;
81- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
82- const size_t ell_bytes = params -> faest_param .l / 8 ;
83- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
84- const size_t utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
82+ const unsigned int tau0 = params -> faest_param .tau0 ;
83+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
84+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
85+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
86+ const unsigned int utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
87+ const unsigned int k0 = params -> faest_param .k ;
88+ const unsigned int k1 = (params -> faest_param .tau0 != 0 ) ? k0 - 1 : k0 ;
8589
8690 base_ptr +=
8791 (params -> faest_param .tau - 1 ) * ell_hat_bytes + utilde_bytes + ell_bytes + lambda_bytes ;
8892 if (index < tau0 ) {
8993 return base_ptr +
90- (index * (params -> faest_param . k0 + 2 ) + params -> faest_param . k0 ) * lambda_bytes ;
94+ (index * (k0 + 2 ) + k0 ) * lambda_bytes ;
9195 } else {
92- return base_ptr + ((index - tau0 ) * (params -> faest_param . k1 + 2 ) + params -> faest_param . k1 +
93- tau0 * (params -> faest_param . k0 + 2 )) *
96+ return base_ptr + ((index - tau0 ) * (k1 + 2 ) + k1 +
97+ tau0 * (k0 + 2 )) *
9498 lambda_bytes ;
9599 }
96100}
97101
98102ATTR_PURE static inline uint8_t * signature_chall_3 (uint8_t * base_ptr ,
99103 const faest_paramset_t * params ) {
100- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
104+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
101105 return base_ptr + params -> faest_param .sig_size - IV_SIZE - lambda_bytes ;
102106}
103107
@@ -109,84 +113,88 @@ ATTR_PURE static inline uint8_t* signature_iv(uint8_t* base_ptr, const faest_par
109113
110114ATTR_PURE static inline const uint8_t * dsignature_c (const uint8_t * base_ptr , unsigned int index ,
111115 const faest_paramset_t * params ) {
112- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
113- const size_t ell_bytes = params -> faest_param .l / 8 ;
114- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
116+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
117+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
118+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
115119
116120 return base_ptr + index * ell_hat_bytes ;
117121}
118122
119123ATTR_PURE static inline const uint8_t * dsignature_u_tilde (const uint8_t * base_ptr ,
120124 const faest_paramset_t * params ) {
121- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
122- const size_t ell_bytes = params -> faest_param .l / 8 ;
123- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
125+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
126+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
127+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
124128
125129 return base_ptr + (params -> faest_param .tau - 1 ) * ell_hat_bytes ;
126130}
127131
128132ATTR_PURE static inline const uint8_t * dsignature_d (const uint8_t * base_ptr ,
129133 const faest_paramset_t * params ) {
130- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
131- const size_t ell_bytes = params -> faest_param .l / 8 ;
132- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
133- const size_t utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
134+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
135+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
136+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
137+ const unsigned int utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
134138
135139 return base_ptr + (params -> faest_param .tau - 1 ) * ell_hat_bytes + utilde_bytes ;
136140}
137141
138142ATTR_PURE static inline const uint8_t * dsignature_a_tilde (const uint8_t * base_ptr ,
139143 const faest_paramset_t * params ) {
140- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
141- const size_t ell_bytes = params -> faest_param .l / 8 ;
142- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
143- const size_t utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
144+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
145+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
146+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
147+ const unsigned int utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
144148
145149 return base_ptr + (params -> faest_param .tau - 1 ) * ell_hat_bytes + utilde_bytes + ell_bytes ;
146150}
147151
148152ATTR_PURE static inline const uint8_t * dsignature_pdec (const uint8_t * base_ptr , unsigned int index ,
149153 const faest_paramset_t * params ) {
150- const unsigned int tau0 = params -> faest_param .t0 ;
151- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
152- const size_t ell_bytes = params -> faest_param .l / 8 ;
153- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
154- const size_t utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
154+ const unsigned int tau0 = params -> faest_param .tau0 ;
155+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
156+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
157+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
158+ const unsigned int utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
159+ const unsigned int k0 = params -> faest_param .k ;
160+ const unsigned int k1 = (params -> faest_param .tau0 != 0 ) ? k0 - 1 : k0 ;
155161
156162 base_ptr +=
157163 (params -> faest_param .tau - 1 ) * ell_hat_bytes + utilde_bytes + ell_bytes + lambda_bytes ;
158164 if (index < tau0 ) {
159- return base_ptr + index * (params -> faest_param . k0 + 2 ) * lambda_bytes ;
165+ return base_ptr + index * (k0 + 2 ) * lambda_bytes ;
160166 } else {
161167 return base_ptr +
162- ((index - tau0 ) * (params -> faest_param . k1 + 2 ) + tau0 * (params -> faest_param . k0 + 2 )) *
168+ ((index - tau0 ) * (k1 + 2 ) + tau0 * (k0 + 2 )) *
163169 lambda_bytes ;
164170 }
165171}
166172
167173ATTR_PURE static inline const uint8_t * dsignature_com (const uint8_t * base_ptr , unsigned int index ,
168174 const faest_paramset_t * params ) {
169- const unsigned int tau0 = params -> faest_param .t0 ;
170- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
171- const size_t ell_bytes = params -> faest_param .l / 8 ;
172- const size_t ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
173- const size_t utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
175+ const unsigned int tau0 = params -> faest_param .tau0 ;
176+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
177+ const unsigned int ell_bytes = params -> faest_param .l / 8 ;
178+ const unsigned int ell_hat_bytes = ell_bytes + 2 * lambda_bytes + UNIVERSAL_HASH_B ;
179+ const unsigned int utilde_bytes = lambda_bytes + UNIVERSAL_HASH_B ;
180+ const unsigned int k0 = params -> faest_param .k ;
181+ const unsigned int k1 = (params -> faest_param .tau0 != 0 ) ? k0 - 1 : k0 ;
174182
175183 base_ptr +=
176184 (params -> faest_param .tau - 1 ) * ell_hat_bytes + utilde_bytes + ell_bytes + lambda_bytes ;
177185 if (index < tau0 ) {
178186 return base_ptr +
179- (index * (params -> faest_param . k0 + 2 ) + params -> faest_param . k0 ) * lambda_bytes ;
187+ (index * (k0 + 2 ) + k0 ) * lambda_bytes ;
180188 } else {
181- return base_ptr + ((index - tau0 ) * (params -> faest_param . k1 + 2 ) + params -> faest_param . k1 +
182- tau0 * (params -> faest_param . k0 + 2 )) *
189+ return base_ptr + ((index - tau0 ) * (k1 + 2 ) + k1 +
190+ tau0 * (k0 + 2 )) *
183191 lambda_bytes ;
184192 }
185193}
186194
187195ATTR_PURE static inline const uint8_t * dsignature_chall_3 (const uint8_t * base_ptr ,
188196 const faest_paramset_t * params ) {
189- const size_t lambda_bytes = params -> faest_param .lambda / 8 ;
197+ const unsigned int lambda_bytes = params -> faest_param .lambda / 8 ;
190198 return base_ptr + params -> faest_param .sig_size - IV_SIZE - lambda_bytes ;
191199}
192200
@@ -257,8 +265,11 @@ void faest_sign(uint8_t* sig, const uint8_t* msg, size_t msglen, const uint8_t*
257265 const unsigned int lambdaBytes = lambda / 8 ;
258266 const unsigned int tau = params -> faest_param .tau ;
259267 const unsigned int tau0 = params -> faest_param .tau0 ;
268+ const unsigned int tau1 = params -> faest_param .tau1 ;
260269 const unsigned int ell_hat = l + lambda * 2 + UNIVERSAL_HASH_B_BITS ;
261270 const unsigned int ell_hat_bytes = ell_hat / 8 ;
271+ const unsigned int k0 = params -> faest_param .k ;
272+ const unsigned int k1 = (params -> faest_param .tau0 != 0 ) ? k0 - 1 : k0 ;
262273
263274 // Step: 2
264275 uint8_t mu [MAX_LAMBDA_BYTES * 2 ];
@@ -287,7 +298,7 @@ void faest_sign(uint8_t* sig, const uint8_t* msg, size_t msglen, const uint8_t*
287298 for (unsigned int i = 1 ; i < lambda ; ++ i ) {
288299 V [i ] = V [0 ] + i * ell_hat_bytes ;
289300 }
290- vole_commit (rootkey , signature_iv (sig , params ), ell_hat , params , hcom , vecCom ,
301+ vole_commit (rootkey , signature_iv (sig , params ), ell_hat , params , vecCom ,
291302 signature_c (sig , 0 , params ), u , V );
292303
293304 // Step: 4
@@ -347,12 +358,11 @@ void faest_sign(uint8_t* sig, const uint8_t* msg, size_t msglen, const uint8_t*
347358 for (unsigned int i = 0 ; i < tau ; i ++ ) {
348359 // Step 20
349360 uint8_t s_ [MAX_DEPTH ];
350- ChalDec (signature_chall_3 (sig , params ), i , params -> faest_param . k0 , params -> faest_param . t0 ,
351- params -> faest_param . k1 , params -> faest_param . t1 , s_ );
361+ ChalDec (signature_chall_3 (sig , params ), i , k0 , tau0 ,
362+ k1 , tau1 , s_ );
352363 // Step 21
353- const unsigned int depth = i < tau0 ? params -> faest_param .k0 : params -> faest_param .k1 ;
354- bavc_open (vecCom [i ].k , vecCom [i ].com , s_ , signature_pdec (sig , i , params ),
355- signature_com (sig , i , params ), depth , lambdaBytes );
364+ const unsigned int depth = i < tau0 ? k0 : k1 ;
365+ bavc_open (vecCom , i , signature_pdec (sig , i , params ), params ); // TODO: I think this is fine or ?
356366 vec_com_clear (& vecCom [i ]);
357367 }
358368 free (vecCom );
@@ -365,12 +375,13 @@ int faest_verify(const uint8_t* msg, size_t msglen, const uint8_t* sig, const ui
365375 const unsigned int lambda = params -> faest_param .lambda ;
366376 const unsigned int lambdaBytes = lambda / 8 ;
367377 const unsigned int tau = params -> faest_param .tau ;
368- const unsigned int tau0 = params -> faest_param .t0 ;
378+ const unsigned int tau0 = params -> faest_param .tau0 ;
379+ const unsigned int tau1 = params -> faest_param .tau1 ;
369380 const unsigned int ell_hat = l + lambda * 2 + UNIVERSAL_HASH_B_BITS ;
370381 const unsigned int ell_hat_bytes = ell_hat / 8 ;
371382 const unsigned int utilde_bytes = lambdaBytes + UNIVERSAL_HASH_B ;
372- const unsigned int k0 = params -> faest_param .k0 ;
373- const unsigned int k1 = params -> faest_param . k1 ;
383+ const unsigned int k0 = params -> faest_param .k ;
384+ const unsigned int k1 = ( params -> faest_param . tau0 != 0 ) ? k0 - 1 : k0 ;
374385
375386 // Step: 3
376387 uint8_t mu [MAX_LAMBDA_BYTES * 2 ];
@@ -421,8 +432,8 @@ int faest_verify(const uint8_t* msg, size_t msglen, const uint8_t* sig, const ui
421432
422433 // Step 11
423434 uint8_t delta [MAX_DEPTH ];
424- ChalDec (dsignature_chall_3 (sig , params ), i , params -> faest_param . k0 , params -> faest_param . t0 ,
425- params -> faest_param . k1 , params -> faest_param . t1 , delta );
435+ ChalDec (dsignature_chall_3 (sig , params ), i , k0 , tau0 ,
436+ k1 , tau1 , delta );
426437 // Step 16
427438 for (unsigned int j = 0 ; j != depth ; ++ j , ++ Dtilde_idx ) {
428439 // for scan-build
0 commit comments