@@ -70,8 +70,8 @@ ENSURES(RETURN_VALUE == (int32_t)c + (((int32_t)c < 0) * MLKEM_Q));
70
70
#define poly_compress MLKEM_NAMESPACE(poly_compress)
71
71
void poly_compress (uint8_t r [MLKEM_POLYCOMPRESSEDBYTES ], const poly * a )
72
72
// clang-format off
73
- REQUIRES (r != NULL && IS_FRESH (r , MLKEM_POLYCOMPRESSEDBYTES ))
74
- REQUIRES (a != NULL && IS_FRESH (a , sizeof (poly )))
73
+ REQUIRES (IS_FRESH (r , MLKEM_POLYCOMPRESSEDBYTES ))
74
+ REQUIRES (IS_FRESH (a , sizeof (poly )))
75
75
REQUIRES (ARRAY_IN_BOUNDS (int , k , 0 , (MLKEM_N - 1 ), a - > coeffs , 0 , (MLKEM_Q - 1 )))
76
76
ASSIGNS (OBJECT_WHOLE (r ));
77
77
// clang-format on
@@ -188,16 +188,17 @@ static inline uint16_t scalar_signed_to_unsigned_q_16(int16_t c) {
188
188
#define poly_decompress MLKEM_NAMESPACE(poly_decompress)
189
189
void poly_decompress (poly * r , const uint8_t a [MLKEM_POLYCOMPRESSEDBYTES ])
190
190
// clang-format off
191
- REQUIRES (a != NULL && IS_FRESH (a , MLKEM_POLYCOMPRESSEDBYTES ))
192
- REQUIRES (r != NULL && IS_FRESH (r , sizeof (poly )))
191
+ REQUIRES (IS_FRESH (a , MLKEM_POLYCOMPRESSEDBYTES ))
192
+ REQUIRES (IS_FRESH (r , sizeof (poly )))
193
193
ASSIGNS (OBJECT_WHOLE (r ))
194
194
ENSURES (ARRAY_IN_BOUNDS (int , k , 0 , (MLKEM_N - 1 ), r - > coeffs , 0 , (MLKEM_Q - 1 )));
195
195
// clang-format on
196
196
197
197
#define poly_tobytes MLKEM_NAMESPACE(poly_tobytes)
198
198
void poly_tobytes (uint8_t r [MLKEM_POLYBYTES ], const poly * a )
199
199
// clang-format off
200
- REQUIRES (a != NULL && IS_FRESH (a , sizeof (poly )))
200
+ REQUIRES (IS_FRESH (r , MLKEM_POLYBYTES ))
201
+ REQUIRES (IS_FRESH (a , sizeof (poly )))
201
202
REQUIRES (ARRAY_IN_BOUNDS (int , k , 0 , (MLKEM_N - 1 ), a - > coeffs , 0 , (MLKEM_Q - 1 )))
202
203
ASSIGNS (OBJECT_WHOLE (r ));
203
204
// clang-format on
@@ -206,8 +207,8 @@ ASSIGNS(OBJECT_WHOLE(r));
206
207
#define poly_frombytes MLKEM_NAMESPACE(poly_frombytes)
207
208
void poly_frombytes (poly * r , const uint8_t a [MLKEM_POLYBYTES ])
208
209
// clang-format off
209
- REQUIRES (a != NULL && IS_FRESH (a , MLKEM_POLYBYTES ))
210
- REQUIRES (r != NULL && IS_FRESH (r , sizeof (poly )))
210
+ REQUIRES (IS_FRESH (a , MLKEM_POLYBYTES ))
211
+ REQUIRES (IS_FRESH (r , sizeof (poly )))
211
212
ASSIGNS (OBJECT_WHOLE (r ))
212
213
ENSURES (ARRAY_IN_BOUNDS (int , k , 0 , (MLKEM_N - 1 ), r - > coeffs , 0 , 4095 ));
213
214
// clang-format on
@@ -234,11 +235,11 @@ void poly_getnoise_eta1_4x(poly *r0, poly *r1, poly *r2, poly *r3,
234
235
const uint8_t seed [MLKEM_SYMBYTES ], uint8_t nonce0 ,
235
236
uint8_t nonce1 , uint8_t nonce2 ,
236
237
uint8_t nonce3 ) // clang-format off
237
- REQUIRES (r0 != NULL && IS_FRESH (r0 , sizeof (poly )))
238
- REQUIRES (r1 != NULL && IS_FRESH (r1 , sizeof (poly )))
239
- REQUIRES (r2 != NULL && IS_FRESH (r2 , sizeof (poly )))
240
- REQUIRES (r3 != NULL && IS_FRESH (r3 , sizeof (poly )))
241
- REQUIRES (seed != NULL && IS_FRESH (seed , MLKEM_SYMBYTES ))
238
+ REQUIRES (IS_FRESH (r0 , sizeof (poly )))
239
+ REQUIRES (IS_FRESH (r1 , sizeof (poly )))
240
+ REQUIRES (IS_FRESH (r2 , sizeof (poly )))
241
+ REQUIRES (IS_FRESH (r3 , sizeof (poly )))
242
+ REQUIRES (IS_FRESH (seed , MLKEM_SYMBYTES ))
242
243
ASSIGNS (OBJECT_WHOLE (r0 ), OBJECT_WHOLE (r1 ), OBJECT_WHOLE (r2 ), OBJECT_WHOLE (r3 ))
243
244
ENSURES ( \
244
245
ARRAY_IN_BOUNDS (int , k0 , 0 , MLKEM_N - 1 , r0 - > coeffs , - MLKEM_ETA1 , MLKEM_ETA1 ) \
@@ -262,8 +263,8 @@ ENSURES(
262
263
**************************************************/
263
264
void poly_getnoise_eta2 (poly * r , const uint8_t seed [MLKEM_SYMBYTES ],
264
265
uint8_t nonce ) // clang-format off
265
- REQUIRES (r != NULL && IS_FRESH (r , sizeof (poly )))
266
- REQUIRES (seed != NULL && IS_FRESH (seed , MLKEM_SYMBYTES ))
266
+ REQUIRES (IS_FRESH (r , sizeof (poly )))
267
+ REQUIRES (IS_FRESH (seed , MLKEM_SYMBYTES ))
267
268
ASSIGNS (OBJECT_WHOLE (r ))
268
269
ENSURES (ARRAY_IN_BOUNDS (int , k0 , 0 , MLKEM_N - 1 , r - > coeffs , - MLKEM_ETA2 , MLKEM_ETA2 ));
269
270
// clang-format on
@@ -285,11 +286,11 @@ void poly_getnoise_eta2_4x(poly *r0, poly *r1, poly *r2, poly *r3,
285
286
const uint8_t seed [MLKEM_SYMBYTES ], uint8_t nonce0 ,
286
287
uint8_t nonce1 , uint8_t nonce2 ,
287
288
uint8_t nonce3 ) // clang-format off
288
- REQUIRES (r0 != NULL && IS_FRESH (r0 , sizeof (poly )))
289
- REQUIRES (r1 != NULL && IS_FRESH (r1 , sizeof (poly )))
290
- REQUIRES (r2 != NULL && IS_FRESH (r2 , sizeof (poly )))
291
- REQUIRES (r3 != NULL && IS_FRESH (r3 , sizeof (poly )))
292
- REQUIRES (seed != NULL && IS_FRESH (seed , MLKEM_SYMBYTES ))
289
+ REQUIRES (IS_FRESH (r0 , sizeof (poly )))
290
+ REQUIRES (IS_FRESH (r1 , sizeof (poly )))
291
+ REQUIRES (IS_FRESH (r2 , sizeof (poly )))
292
+ REQUIRES (IS_FRESH (r3 , sizeof (poly )))
293
+ REQUIRES (IS_FRESH (seed , MLKEM_SYMBYTES ))
293
294
ASSIGNS (OBJECT_WHOLE (r0 ), OBJECT_WHOLE (r1 ), OBJECT_WHOLE (r2 ), OBJECT_WHOLE (r3 ))
294
295
ENSURES ( \
295
296
ARRAY_IN_BOUNDS (int , k0 , 0 , MLKEM_N - 1 , r0 - > coeffs , - MLKEM_ETA2 , MLKEM_ETA2 ) \
@@ -315,11 +316,11 @@ void poly_getnoise_eta1122_4x(poly *r0, poly *r1, poly *r2, poly *r3,
315
316
const uint8_t seed [MLKEM_SYMBYTES ],
316
317
uint8_t nonce0 , uint8_t nonce1 , uint8_t nonce2 ,
317
318
uint8_t nonce3 ) // clang-format off
318
- REQUIRES (r0 != NULL && IS_FRESH (r0 , sizeof (poly )))
319
- REQUIRES (r1 != NULL && IS_FRESH (r1 , sizeof (poly )))
320
- REQUIRES (r2 != NULL && IS_FRESH (r2 , sizeof (poly )))
321
- REQUIRES (r3 != NULL && IS_FRESH (r3 , sizeof (poly )))
322
- REQUIRES (seed != NULL && IS_FRESH (seed , MLKEM_SYMBYTES ))
319
+ REQUIRES (IS_FRESH (r0 , sizeof (poly )))
320
+ REQUIRES (IS_FRESH (r1 , sizeof (poly )))
321
+ REQUIRES (IS_FRESH (r2 , sizeof (poly )))
322
+ REQUIRES (IS_FRESH (r3 , sizeof (poly )))
323
+ REQUIRES (IS_FRESH (seed , MLKEM_SYMBYTES ))
323
324
ASSIGNS (OBJECT_WHOLE (r0 ), OBJECT_WHOLE (r1 ), OBJECT_WHOLE (r2 ), OBJECT_WHOLE (r3 ))
324
325
ENSURES ( \
325
326
ARRAY_IN_BOUNDS (int , k0 , 0 , MLKEM_N - 1 , r0 - > coeffs , - MLKEM_ETA1 , MLKEM_ETA1 ) \
@@ -351,10 +352,10 @@ ENSURES(
351
352
void poly_basemul_montgomery_cached (poly * r , const poly * a , const poly * b ,
352
353
const poly_mulcache * b_cache )
353
354
// clang-format off
354
- REQUIRES (r != NULL && IS_FRESH (r , sizeof (poly )))
355
- REQUIRES (a != NULL && IS_FRESH (a , sizeof (poly )))
356
- REQUIRES (b != NULL && IS_FRESH (b , sizeof (poly )))
357
- REQUIRES (b_cache != NULL && IS_FRESH (b_cache , sizeof (poly_mulcache )))
355
+ REQUIRES (IS_FRESH (r , sizeof (poly )))
356
+ REQUIRES (IS_FRESH (a , sizeof (poly )))
357
+ REQUIRES (IS_FRESH (b , sizeof (poly )))
358
+ REQUIRES (IS_FRESH (b_cache , sizeof (poly_mulcache )))
358
359
REQUIRES (ARRAY_IN_BOUNDS (int , k , 0 , MLKEM_N - 1 , a - > coeffs , - (MLKEM_Q - 1 ), (MLKEM_Q - 1 )))
359
360
ASSIGNS (OBJECT_WHOLE (r ))
360
361
ENSURES (ARRAY_IN_BOUNDS (int , k , 0 , MLKEM_N - 1 , r - > coeffs , -3 * HALF_Q + 1 , 3 * HALF_Q - 1 ));
@@ -373,7 +374,7 @@ ENSURES(ARRAY_IN_BOUNDS(int, k, 0, MLKEM_N - 1, r->coeffs, -3 * HALF_Q + 1, 3 *
373
374
**************************************************/
374
375
void poly_tomont (poly * r )
375
376
// clang-format off
376
- REQUIRES (r != NULL && IS_FRESH (r , sizeof (poly )))
377
+ REQUIRES (IS_FRESH (r , sizeof (poly )))
377
378
ASSIGNS (OBJECT_WHOLE (r ))
378
379
ENSURES (ARRAY_IN_BOUNDS (int , k , 0 , MLKEM_N - 1 , r - > coeffs , - (MLKEM_Q - 1 ), (MLKEM_Q - 1 )));
379
380
// clang-format on
@@ -402,7 +403,8 @@ ENSURES(ARRAY_IN_BOUNDS(int, k, 0, MLKEM_N - 1, r->coeffs, -(MLKEM_Q - 1), (MLKE
402
403
// higher level safety proofs, and thus not part of the spec.
403
404
void poly_mulcache_compute (poly_mulcache * x , const poly * a )
404
405
// clang-format off
405
- REQUIRES (a != NULL && IS_FRESH (a , sizeof (poly )))
406
+ REQUIRES (IS_FRESH (x , sizeof (poly_mulcache )))
407
+ REQUIRES (IS_FRESH (a , sizeof (poly )))
406
408
ASSIGNS (OBJECT_WHOLE (x ));
407
409
// clang-format on
408
410
@@ -424,7 +426,7 @@ ASSIGNS(OBJECT_WHOLE(x));
424
426
// use of poly_reduce() in the context of (de)serialization.
425
427
void poly_reduce (poly * r )
426
428
// clang-format off
427
- REQUIRES (r != NULL && IS_FRESH (r , sizeof (poly )))
429
+ REQUIRES (IS_FRESH (r , sizeof (poly )))
428
430
ASSIGNS (OBJECT_WHOLE (r ))
429
431
ENSURES (ARRAY_IN_BOUNDS (int , k , 0 , MLKEM_N - 1 , r - > coeffs , 0 , MLKEM_Q - 1 ));
430
432
// clang-format on
0 commit comments