e56b2e5556
* fixes dynamic memory allocation test. previously a function called freeze() would trigger it * this adds DilithiumII. Preprocessor conditionals still need to be removed * fix ms Makefile * fix MS compiler warnings * clean-up * remove preprocessor conditionals * add dilithium3 * add dilithium4 * add duplicate consistency checks * SHA2 state constants in common * clean up symmetric.h * Port SPHINCS+-SHA256 to sha256ctx struct * Implement ctx struct for fips202 * Port Kyber{512,768,1024} to fips202 ctx struct * Port NewHope to fips202 structs * Port SPHINCS+-SHAKE256 to fips202 ctx structs * Use opaque fips202 structs in MQDSS * port dilithium to use fips202 ctx structs * include -Wredundant-decls * remove comment; format NTT constants * reduce casts in power2round
22 lines
453 B
C
22 lines
453 B
C
#ifndef REDUCE_H
|
|
#define REDUCE_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define MONT 4193792U // 2^32 % Q
|
|
#define QINV 4236238847U // -q^(-1) mod 2^32
|
|
|
|
/* a <= Q*2^32 => r < 2*Q */
|
|
uint32_t PQCLEAN_DILITHIUM2_CLEAN_montgomery_reduce(uint64_t a);
|
|
|
|
/* r < 2*Q */
|
|
uint32_t PQCLEAN_DILITHIUM2_CLEAN_reduce32(uint32_t a);
|
|
|
|
/* a < 2*Q => r < Q */
|
|
uint32_t PQCLEAN_DILITHIUM2_CLEAN_csubq(uint32_t a);
|
|
|
|
/* r < Q */
|
|
uint32_t PQCLEAN_DILITHIUM2_CLEAN_freeze(uint32_t a);
|
|
|
|
#endif
|