1 // SPDX-License-Identifier: MIT 2 3 #ifndef OQS_KEM_KYBER_H 4 #define OQS_KEM_KYBER_H 5 6 #include <oqs/oqs.h> 7 8 #ifdef OQS_ENABLE_KEM_kyber_512 9 #define OQS_KEM_kyber_512_length_public_key 800 10 #define OQS_KEM_kyber_512_length_secret_key 1632 11 #define OQS_KEM_kyber_512_length_ciphertext 768 12 #define OQS_KEM_kyber_512_length_shared_secret 32 13 OQS_KEM *OQS_KEM_kyber_512_new(void); 14 OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secret_key); 15 OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); 16 OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key); 17 #endif 18 19 #ifdef OQS_ENABLE_KEM_kyber_768 20 #define OQS_KEM_kyber_768_length_public_key 1184 21 #define OQS_KEM_kyber_768_length_secret_key 2400 22 #define OQS_KEM_kyber_768_length_ciphertext 1088 23 #define OQS_KEM_kyber_768_length_shared_secret 32 24 OQS_KEM *OQS_KEM_kyber_768_new(void); 25 OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secret_key); 26 OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); 27 OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key); 28 #endif 29 30 #ifdef OQS_ENABLE_KEM_kyber_1024 31 #define OQS_KEM_kyber_1024_length_public_key 1568 32 #define OQS_KEM_kyber_1024_length_secret_key 3168 33 #define OQS_KEM_kyber_1024_length_ciphertext 1568 34 #define OQS_KEM_kyber_1024_length_shared_secret 32 35 OQS_KEM *OQS_KEM_kyber_1024_new(void); 36 OQS_API OQS_STATUS OQS_KEM_kyber_1024_keypair(uint8_t *public_key, uint8_t *secret_key); 37 OQS_API OQS_STATUS OQS_KEM_kyber_1024_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); 38 OQS_API OQS_STATUS OQS_KEM_kyber_1024_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key); 39 #endif 40 41 #ifdef OQS_ENABLE_KEM_kyber_512_90s 42 #define OQS_KEM_kyber_512_90s_length_public_key 800 43 #define OQS_KEM_kyber_512_90s_length_secret_key 1632 44 #define OQS_KEM_kyber_512_90s_length_ciphertext 768 45 #define OQS_KEM_kyber_512_90s_length_shared_secret 32 46 OQS_KEM *OQS_KEM_kyber_512_90s_new(void); 47 OQS_API OQS_STATUS OQS_KEM_kyber_512_90s_keypair(uint8_t *public_key, uint8_t *secret_key); 48 OQS_API OQS_STATUS OQS_KEM_kyber_512_90s_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); 49 OQS_API OQS_STATUS OQS_KEM_kyber_512_90s_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key); 50 #endif 51 52 #ifdef OQS_ENABLE_KEM_kyber_768_90s 53 #define OQS_KEM_kyber_768_90s_length_public_key 1184 54 #define OQS_KEM_kyber_768_90s_length_secret_key 2400 55 #define OQS_KEM_kyber_768_90s_length_ciphertext 1088 56 #define OQS_KEM_kyber_768_90s_length_shared_secret 32 57 OQS_KEM *OQS_KEM_kyber_768_90s_new(void); 58 OQS_API OQS_STATUS OQS_KEM_kyber_768_90s_keypair(uint8_t *public_key, uint8_t *secret_key); 59 OQS_API OQS_STATUS OQS_KEM_kyber_768_90s_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); 60 OQS_API OQS_STATUS OQS_KEM_kyber_768_90s_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key); 61 #endif 62 63 #ifdef OQS_ENABLE_KEM_kyber_1024_90s 64 #define OQS_KEM_kyber_1024_90s_length_public_key 1568 65 #define OQS_KEM_kyber_1024_90s_length_secret_key 3168 66 #define OQS_KEM_kyber_1024_90s_length_ciphertext 1568 67 #define OQS_KEM_kyber_1024_90s_length_shared_secret 32 68 OQS_KEM *OQS_KEM_kyber_1024_90s_new(void); 69 OQS_API OQS_STATUS OQS_KEM_kyber_1024_90s_keypair(uint8_t *public_key, uint8_t *secret_key); 70 OQS_API OQS_STATUS OQS_KEM_kyber_1024_90s_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); 71 OQS_API OQS_STATUS OQS_KEM_kyber_1024_90s_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key); 72 #endif 73 74 #endif 75 76