25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

67 lines
2.2 KiB

  1. #ifndef PQCLEAN_DILITHIUM3_CLEAN_POLY_H
  2. #define PQCLEAN_DILITHIUM3_CLEAN_POLY_H
  3. #include <stddef.h>
  4. #include <stdint.h>
  5. #include "params.h"
  6. typedef struct {
  7. uint32_t coeffs[N];
  8. } poly;
  9. void PQCLEAN_DILITHIUM3_CLEAN_poly_reduce(poly *a);
  10. void PQCLEAN_DILITHIUM3_CLEAN_poly_csubq(poly *a);
  11. void PQCLEAN_DILITHIUM3_CLEAN_poly_freeze(poly *a);
  12. void PQCLEAN_DILITHIUM3_CLEAN_poly_add(
  13. poly *c, const poly *a, const poly *b);
  14. void PQCLEAN_DILITHIUM3_CLEAN_poly_sub(
  15. poly *c, const poly *a, const poly *b);
  16. void PQCLEAN_DILITHIUM3_CLEAN_poly_shiftl(poly *a);
  17. void PQCLEAN_DILITHIUM3_CLEAN_poly_ntt(poly *a);
  18. void PQCLEAN_DILITHIUM3_CLEAN_poly_invntt_montgomery(poly *a);
  19. void PQCLEAN_DILITHIUM3_CLEAN_poly_pointwise_invmontgomery(
  20. poly *c, const poly *a, const poly *b);
  21. void PQCLEAN_DILITHIUM3_CLEAN_poly_power2round(
  22. poly *a1, poly *a0, const poly *a);
  23. void PQCLEAN_DILITHIUM3_CLEAN_poly_decompose(
  24. poly *a1, poly *a0, const poly *a);
  25. uint32_t PQCLEAN_DILITHIUM3_CLEAN_poly_make_hint(
  26. poly *h, const poly *a0, const poly *a1);
  27. void PQCLEAN_DILITHIUM3_CLEAN_poly_use_hint(
  28. poly *a, const poly *b, const poly *h);
  29. int PQCLEAN_DILITHIUM3_CLEAN_poly_chknorm(
  30. const poly *a, uint32_t B);
  31. void PQCLEAN_DILITHIUM3_CLEAN_poly_uniform(
  32. poly *a,
  33. const uint8_t *seed,
  34. uint16_t nonce);
  35. void PQCLEAN_DILITHIUM3_CLEAN_poly_uniform_eta(
  36. poly *a,
  37. const uint8_t *seed,
  38. uint16_t nonce);
  39. void PQCLEAN_DILITHIUM3_CLEAN_poly_uniform_gamma1m1(
  40. poly *a,
  41. const uint8_t seed[CRHBYTES],
  42. uint16_t nonce);
  43. void PQCLEAN_DILITHIUM3_CLEAN_polyeta_pack(uint8_t *r, const poly *a);
  44. void PQCLEAN_DILITHIUM3_CLEAN_polyeta_unpack(poly *r, const uint8_t *a);
  45. void PQCLEAN_DILITHIUM3_CLEAN_polyt1_pack(uint8_t *r, const poly *a);
  46. void PQCLEAN_DILITHIUM3_CLEAN_polyt1_unpack(poly *r, const uint8_t *a);
  47. void PQCLEAN_DILITHIUM3_CLEAN_polyt0_pack(uint8_t *r, const poly *a);
  48. void PQCLEAN_DILITHIUM3_CLEAN_polyt0_unpack(poly *r, const uint8_t *a);
  49. void PQCLEAN_DILITHIUM3_CLEAN_polyz_pack(uint8_t *r, const poly *a);
  50. void PQCLEAN_DILITHIUM3_CLEAN_polyz_unpack(poly *r, const uint8_t *a);
  51. void PQCLEAN_DILITHIUM3_CLEAN_polyw1_pack(uint8_t *r, const poly *a);
  52. #endif