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