#ifndef PQCLEAN_DILITHIUM3_CLEAN_POLY_H #define PQCLEAN_DILITHIUM3_CLEAN_POLY_H #include #include #include "params.h" typedef struct { uint32_t coeffs[N]; } poly; void PQCLEAN_DILITHIUM3_CLEAN_poly_reduce(poly *a); void PQCLEAN_DILITHIUM3_CLEAN_poly_csubq(poly *a); void PQCLEAN_DILITHIUM3_CLEAN_poly_freeze(poly *a); void PQCLEAN_DILITHIUM3_CLEAN_poly_add( poly *c, const poly *a, const poly *b); void PQCLEAN_DILITHIUM3_CLEAN_poly_sub( poly *c, const poly *a, const poly *b); void PQCLEAN_DILITHIUM3_CLEAN_poly_shiftl(poly *a); void PQCLEAN_DILITHIUM3_CLEAN_poly_ntt(poly *a); void PQCLEAN_DILITHIUM3_CLEAN_poly_invntt_montgomery(poly *a); void PQCLEAN_DILITHIUM3_CLEAN_poly_pointwise_invmontgomery( poly *c, const poly *a, const poly *b); void PQCLEAN_DILITHIUM3_CLEAN_poly_power2round( poly *a1, poly *a0, const poly *a); void PQCLEAN_DILITHIUM3_CLEAN_poly_decompose( poly *a1, poly *a0, const poly *a); uint32_t PQCLEAN_DILITHIUM3_CLEAN_poly_make_hint( poly *h, const poly *a0, const poly *a1); void PQCLEAN_DILITHIUM3_CLEAN_poly_use_hint( poly *a, const poly *b, const poly *h); int PQCLEAN_DILITHIUM3_CLEAN_poly_chknorm( const poly *a, uint32_t B); void PQCLEAN_DILITHIUM3_CLEAN_poly_uniform( poly *a, const uint8_t *seed, uint16_t nonce); void PQCLEAN_DILITHIUM3_CLEAN_poly_uniform_eta( poly *a, const uint8_t *seed, uint16_t nonce); void PQCLEAN_DILITHIUM3_CLEAN_poly_uniform_gamma1m1( poly *a, const uint8_t seed[CRHBYTES], uint16_t nonce); void PQCLEAN_DILITHIUM3_CLEAN_polyeta_pack(uint8_t *r, const poly *a); void PQCLEAN_DILITHIUM3_CLEAN_polyeta_unpack(poly *r, const uint8_t *a); void PQCLEAN_DILITHIUM3_CLEAN_polyt1_pack(uint8_t *r, const poly *a); void PQCLEAN_DILITHIUM3_CLEAN_polyt1_unpack(poly *r, const uint8_t *a); void PQCLEAN_DILITHIUM3_CLEAN_polyt0_pack(uint8_t *r, const poly *a); void PQCLEAN_DILITHIUM3_CLEAN_polyt0_unpack(poly *r, const uint8_t *a); void PQCLEAN_DILITHIUM3_CLEAN_polyz_pack(uint8_t *r, const poly *a); void PQCLEAN_DILITHIUM3_CLEAN_polyz_unpack(poly *r, const uint8_t *a); void PQCLEAN_DILITHIUM3_CLEAN_polyw1_pack(uint8_t *r, const poly *a); #endif