You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

58 lines
2.6 KiB

  1. #ifndef PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_HARAKA_H
  2. #define PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_HARAKA_H
  3. #include <immintrin.h>
  4. #include <stddef.h>
  5. #include <stdint.h>
  6. typedef struct {
  7. __m128i rc[40];
  8. __m128i rc_sseed[40];
  9. } harakactx;
  10. /* Tweak constants with seed */
  11. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_tweak_constants(
  12. harakactx *state,
  13. const unsigned char *pk_seed, const unsigned char *sk_seed,
  14. unsigned long long seed_length);
  15. /* Haraka Sponge */
  16. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka_S_inc_init(uint8_t *s_inc);
  17. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka_S_inc_absorb(uint8_t *s_inc, const uint8_t *m, size_t mlen, const harakactx *state);
  18. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka_S_inc_finalize(uint8_t *s_inc);
  19. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka_S_inc_squeeze(uint8_t *out, size_t outlen, uint8_t *s_inc, const harakactx *state);
  20. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka_S(
  21. unsigned char *out, unsigned long long outlen,
  22. const unsigned char *in, unsigned long long inlen, const harakactx *state);
  23. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka_Sx4(
  24. unsigned char *out0,
  25. unsigned char *out1,
  26. unsigned char *out2,
  27. unsigned char *out3,
  28. unsigned long long outlen,
  29. const unsigned char *in0,
  30. const unsigned char *in1,
  31. const unsigned char *in2,
  32. const unsigned char *in3,
  33. unsigned long long inlen,
  34. const harakactx *state);
  35. /* Applies the 512-bit Haraka permutation to in. */
  36. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka512_perm(unsigned char *out, const unsigned char *in, const harakactx *state);
  37. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka512_perm_x4(unsigned char *out, const unsigned char *in, const harakactx *state);
  38. /* Implementation of Haraka-512 */
  39. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka512(unsigned char *out, const unsigned char *in, const harakactx *state);
  40. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka512x4(unsigned char *out, const unsigned char *in, const harakactx *state);
  41. /* Implementation of Haraka-256 */
  42. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka256(unsigned char *out, const unsigned char *in, const harakactx *state);
  43. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka256x4(unsigned char *out, const unsigned char *in, const harakactx *state);
  44. /* Implementation of Haraka-256 using sk.seed constants */
  45. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka256_sk(unsigned char *out, const unsigned char *in, const harakactx *state);
  46. void PQCLEAN_SPHINCSHARAKA128SROBUST_AESNI_haraka256_skx4(unsigned char *out, const unsigned char *in, const harakactx *state);
  47. #endif