kyber-pqcrystals-ref.h (7612B)
1 /* 2 * SPDX-License-Identifier: Apache-2.0 3 * 4 * This file was generated from 5 * https://github.com/pq-crystals/kyber/commit/e0d1c6ff 6 * 7 * Files from that repository are listed here surrounded by 8 * "* begin: [file] *" and "* end: [file] *" comments. 9 * 10 * The following changes have been made: 11 * - include guards have been removed, 12 * - include directives have been removed, 13 * - "#ifdef KYBER90S" blocks have been evaluated with "KYBER90S" undefined, 14 * - functions outside of kem.c have been made static. 15 */ 16 17 /** begin: ref/LICENSE ** 18 Public Domain (https://creativecommons.org/share-your-work/public-domain/cc0/); 19 or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html). 20 21 For Keccak and AES we are using public-domain 22 code from sources and by authors listed in 23 comments on top of the respective files. 24 ** end: ref/LICENSE **/ 25 26 /** begin: ref/AUTHORS ** 27 Joppe Bos, 28 Léo Ducas, 29 Eike Kiltz, 30 Tancrède Lepoint, 31 Vadim Lyubashevsky, 32 John Schanck, 33 Peter Schwabe, 34 Gregor Seiler, 35 Damien Stehlé 36 ** end: ref/AUTHORS **/ 37 38 #ifndef KYBER_PQCRYSTALS_REF_H 39 #define KYBER_PQCRYSTALS_REF_H 40 41 /** begin: ref/api.h **/ 42 #include <stdint.h> 43 44 #define pqcrystals_kyber512_SECRETKEYBYTES 1632 45 #define pqcrystals_kyber512_PUBLICKEYBYTES 800 46 #define pqcrystals_kyber512_CIPHERTEXTBYTES 768 47 #define pqcrystals_kyber512_KEYPAIRCOINBYTES 64 48 #define pqcrystals_kyber512_ENCCOINBYTES 32 49 #define pqcrystals_kyber512_BYTES 32 50 51 #define pqcrystals_kyber512_ref_SECRETKEYBYTES pqcrystals_kyber512_SECRETKEYBYTES 52 #define pqcrystals_kyber512_ref_PUBLICKEYBYTES pqcrystals_kyber512_PUBLICKEYBYTES 53 #define pqcrystals_kyber512_ref_CIPHERTEXTBYTES pqcrystals_kyber512_CIPHERTEXTBYTES 54 #define pqcrystals_kyber512_ref_KEYPAIRCOINBYTES pqcrystals_kyber512_KEYPAIRCOINBYTES 55 #define pqcrystals_kyber512_ref_ENCCOINBYTES pqcrystals_kyber512_ENCCOINBYTES 56 #define pqcrystals_kyber512_ref_BYTES pqcrystals_kyber512_BYTES 57 58 int pqcrystals_kyber512_ref_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins); 59 int pqcrystals_kyber512_ref_keypair(uint8_t *pk, uint8_t *sk); 60 int pqcrystals_kyber512_ref_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins); 61 int pqcrystals_kyber512_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); 62 int pqcrystals_kyber512_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); 63 64 #define pqcrystals_kyber512_90s_ref_SECRETKEYBYTES pqcrystals_kyber512_SECRETKEYBYTES 65 #define pqcrystals_kyber512_90s_ref_PUBLICKEYBYTES pqcrystals_kyber512_PUBLICKEYBYTES 66 #define pqcrystals_kyber512_90s_ref_CIPHERTEXTBYTES pqcrystals_kyber512_CIPHERTEXTBYTES 67 #define pqcrystals_kyber512_90s_ref_KEYPAIRCOINBYTES pqcrystals_kyber512_KEYPAIRCOINBYTES 68 #define pqcrystals_kyber512_90s_ref_ENCCOINBYTES pqcrystals_kyber512_ENCCOINBYTES 69 #define pqcrystals_kyber512_90s_ref_BYTES pqcrystals_kyber512_BYTES 70 71 int pqcrystals_kyber512_90s_ref_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins); 72 int pqcrystals_kyber512_90s_ref_keypair(uint8_t *pk, uint8_t *sk); 73 int pqcrystals_kyber512_90s_ref_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins); 74 int pqcrystals_kyber512_90s_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); 75 int pqcrystals_kyber512_90s_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); 76 77 #define pqcrystals_kyber768_SECRETKEYBYTES 2400 78 #define pqcrystals_kyber768_PUBLICKEYBYTES 1184 79 #define pqcrystals_kyber768_CIPHERTEXTBYTES 1088 80 #define pqcrystals_kyber768_KEYPAIRCOINBYTES 64 81 #define pqcrystals_kyber768_ENCCOINBYTES 32 82 #define pqcrystals_kyber768_BYTES 32 83 84 #define pqcrystals_kyber768_ref_SECRETKEYBYTES pqcrystals_kyber768_SECRETKEYBYTES 85 #define pqcrystals_kyber768_ref_PUBLICKEYBYTES pqcrystals_kyber768_PUBLICKEYBYTES 86 #define pqcrystals_kyber768_ref_CIPHERTEXTBYTES pqcrystals_kyber768_CIPHERTEXTBYTES 87 #define pqcrystals_kyber768_ref_KEYPAIRCOINBYTES pqcrystals_kyber768_KEYPAIRCOINBYTES 88 #define pqcrystals_kyber768_ref_ENCCOINBYTES pqcrystals_kyber768_ENCCOINBYTES 89 #define pqcrystals_kyber768_ref_BYTES pqcrystals_kyber768_BYTES 90 91 int pqcrystals_kyber768_ref_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins); 92 int pqcrystals_kyber768_ref_keypair(uint8_t *pk, uint8_t *sk); 93 int pqcrystals_kyber768_ref_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins); 94 int pqcrystals_kyber768_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); 95 int pqcrystals_kyber768_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); 96 97 #define pqcrystals_kyber768_90s_ref_SECRETKEYBYTES pqcrystals_kyber768_SECRETKEYBYTES 98 #define pqcrystals_kyber768_90s_ref_PUBLICKEYBYTES pqcrystals_kyber768_PUBLICKEYBYTES 99 #define pqcrystals_kyber768_90s_ref_CIPHERTEXTBYTES pqcrystals_kyber768_CIPHERTEXTBYTES 100 #define pqcrystals_kyber768_90s_ref_KEYPAIRCOINBYTES pqcrystals_kyber768_KEYPAIRCOINBYTES 101 #define pqcrystals_kyber768_90s_ref_ENCCOINBYTES pqcrystals_kyber768_ENCCOINBYTES 102 #define pqcrystals_kyber768_90s_ref_BYTES pqcrystals_kyber768_BYTES 103 104 int pqcrystals_kyber768_90s_ref_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins); 105 int pqcrystals_kyber768_90s_ref_keypair(uint8_t *pk, uint8_t *sk); 106 int pqcrystals_kyber768_90s_ref_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins); 107 int pqcrystals_kyber768_90s_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); 108 int pqcrystals_kyber768_90s_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); 109 110 #define pqcrystals_kyber1024_SECRETKEYBYTES 3168 111 #define pqcrystals_kyber1024_PUBLICKEYBYTES 1568 112 #define pqcrystals_kyber1024_CIPHERTEXTBYTES 1568 113 #define pqcrystals_kyber1024_KEYPAIRCOINBYTES 64 114 #define pqcrystals_kyber1024_ENCCOINBYTES 32 115 #define pqcrystals_kyber1024_BYTES 32 116 117 #define pqcrystals_kyber1024_ref_SECRETKEYBYTES pqcrystals_kyber1024_SECRETKEYBYTES 118 #define pqcrystals_kyber1024_ref_PUBLICKEYBYTES pqcrystals_kyber1024_PUBLICKEYBYTES 119 #define pqcrystals_kyber1024_ref_CIPHERTEXTBYTES pqcrystals_kyber1024_CIPHERTEXTBYTES 120 #define pqcrystals_kyber1024_ref_KEYPAIRCOINBYTES pqcrystals_kyber1024_KEYPAIRCOINBYTES 121 #define pqcrystals_kyber1024_ref_ENCCOINBYTES pqcrystals_kyber1024_ENCCOINBYTES 122 #define pqcrystals_kyber1024_ref_BYTES pqcrystals_kyber1024_BYTES 123 124 int pqcrystals_kyber1024_ref_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins); 125 int pqcrystals_kyber1024_ref_keypair(uint8_t *pk, uint8_t *sk); 126 int pqcrystals_kyber1024_ref_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins); 127 int pqcrystals_kyber1024_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); 128 int pqcrystals_kyber1024_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); 129 130 #define pqcrystals_kyber1024_90s_ref_SECRETKEYBYTES pqcrystals_kyber1024_SECRETKEYBYTES 131 #define pqcrystals_kyber1024_90s_ref_PUBLICKEYBYTES pqcrystals_kyber1024_PUBLICKEYBYTES 132 #define pqcrystals_kyber1024_90s_ref_CIPHERTEXTBYTES pqcrystals_kyber1024_CIPHERTEXTBYTES 133 #define pqcrystals_kyber1024_90s_ref_KEYPAIRCOINBYTES pqcrystals_kyber1024_KEYPAIRCOINBYTES 134 #define pqcrystals_kyber1024_90s_ref_ENCCOINBYTES pqcrystals_kyber1024_ENCCOINBYTES 135 #define pqcrystals_kyber1024_90s_ref_BYTES pqcrystals_kyber1024_BYTES 136 137 int pqcrystals_kyber1024_90s_ref_keypair_derand(uint8_t *pk, uint8_t *sk, const uint8_t *coins); 138 int pqcrystals_kyber1024_90s_ref_keypair(uint8_t *pk, uint8_t *sk); 139 int pqcrystals_kyber1024_90s_ref_enc_derand(uint8_t *ct, uint8_t *ss, const uint8_t *pk, const uint8_t *coins); 140 int pqcrystals_kyber1024_90s_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); 141 int pqcrystals_kyber1024_90s_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); 142 /** end: ref/api.h **/ 143 144 #endif // KYBER_PQCRYSTALS_REF_H