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.
 
 
 

82 lines
2.4 KiB

  1. #ifndef PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_API_H
  2. #define PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_API_H
  3. #include <stddef.h>
  4. #include <stdint.h>
  5. #define PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_CRYPTO_ALGNAME "SPHINCS+"
  6. #define PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_CRYPTO_SECRETKEYBYTES 128
  7. #define PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_CRYPTO_PUBLICKEYBYTES 64
  8. #define PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_CRYPTO_BYTES 49216
  9. #define PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_CRYPTO_SEEDBYTES 96
  10. /*
  11. * Returns the length of a secret key, in bytes
  12. */
  13. size_t PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_crypto_sign_secretkeybytes(void);
  14. /*
  15. * Returns the length of a public key, in bytes
  16. */
  17. size_t PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_crypto_sign_publickeybytes(void);
  18. /*
  19. * Returns the length of a signature, in bytes
  20. */
  21. size_t PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_crypto_sign_bytes(void);
  22. /*
  23. * Returns the length of the seed required to generate a key pair, in bytes
  24. */
  25. size_t PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_crypto_sign_seedbytes(void);
  26. /*
  27. * Generates a SPHINCS+ key pair given a seed.
  28. * Format sk: [SK_SEED || SK_PRF || PUB_SEED || root]
  29. * Format pk: [root || PUB_SEED]
  30. */
  31. int PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_crypto_sign_seed_keypair(
  32. uint8_t *pk, uint8_t *sk, const uint8_t *seed);
  33. /*
  34. * Generates a SPHINCS+ key pair.
  35. * Format sk: [SK_SEED || SK_PRF || PUB_SEED || root]
  36. * Format pk: [root || PUB_SEED]
  37. */
  38. int PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_crypto_sign_keypair(
  39. uint8_t *pk, uint8_t *sk);
  40. /**
  41. * Returns an array containing a detached signature.
  42. */
  43. int PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_crypto_sign_signature(
  44. uint8_t *sig, size_t *siglen,
  45. const uint8_t *m, size_t mlen, const uint8_t *sk);
  46. /**
  47. * Verifies a detached signature and message under a given public key.
  48. */
  49. int PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_crypto_sign_verify(
  50. const uint8_t *sig, size_t siglen,
  51. const uint8_t *m, size_t mlen, const uint8_t *pk);
  52. /**
  53. * Returns an array containing the signature followed by the message.
  54. */
  55. int PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_crypto_sign(
  56. uint8_t *sm, size_t *smlen,
  57. const uint8_t *m, size_t mlen, const uint8_t *sk);
  58. /**
  59. * Verifies a given signature-message pair under a given public key.
  60. */
  61. int PQCLEAN_SPHINCSSHA256256FSIMPLE_AVX2_crypto_sign_open(
  62. uint8_t *m, size_t *mlen,
  63. const uint8_t *sm, size_t smlen, const uint8_t *pk);
  64. #endif