libcrux_mlkem1024.h (3485B)
1 /* 2 * SPDX-FileCopyrightText: 2025 Cryspen Sarl <info@cryspen.com> 3 * 4 * SPDX-License-Identifier: MIT or Apache-2.0 5 * 6 * This code was generated with the following revisions: 7 * Charon: 667d2fc98984ff7f3df989c2367e6c1fa4a000e7 8 * Eurydice: 2381cbc416ef2ad0b561c362c500bc84f36b6785 9 * Karamel: 80f5435f2fc505973c469a4afcc8d875cddd0d8b 10 * F*: 71d8221589d4d438af3706d89cb653cf53e18aab 11 * Libcrux: 68dfed5a4a9e40277f62828471c029afed1ecdcc 12 */ 13 14 #ifndef libcrux_mlkem1024_H 15 #define libcrux_mlkem1024_H 16 17 #include "eurydice_glue.h" 18 19 #if defined(__cplusplus) 20 extern "C" { 21 #endif 22 23 #include "libcrux_core.h" 24 25 #define LIBCRUX_ML_KEM_MLKEM1024_VECTOR_U_COMPRESSION_FACTOR ((size_t)11U) 26 27 #define LIBCRUX_ML_KEM_MLKEM1024_C1_BLOCK_SIZE \ 28 (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * \ 29 LIBCRUX_ML_KEM_MLKEM1024_VECTOR_U_COMPRESSION_FACTOR / (size_t)8U) 30 31 #define LIBCRUX_ML_KEM_MLKEM1024_RANK ((size_t)4U) 32 33 #define LIBCRUX_ML_KEM_MLKEM1024_C1_SIZE \ 34 (LIBCRUX_ML_KEM_MLKEM1024_C1_BLOCK_SIZE * LIBCRUX_ML_KEM_MLKEM1024_RANK) 35 36 #define LIBCRUX_ML_KEM_MLKEM1024_VECTOR_V_COMPRESSION_FACTOR ((size_t)5U) 37 38 #define LIBCRUX_ML_KEM_MLKEM1024_C2_SIZE \ 39 (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * \ 40 LIBCRUX_ML_KEM_MLKEM1024_VECTOR_V_COMPRESSION_FACTOR / (size_t)8U) 41 42 #define LIBCRUX_ML_KEM_MLKEM1024_CPA_PKE_CIPHERTEXT_SIZE \ 43 (LIBCRUX_ML_KEM_MLKEM1024_C1_SIZE + LIBCRUX_ML_KEM_MLKEM1024_C2_SIZE) 44 45 #define LIBCRUX_ML_KEM_MLKEM1024_T_AS_NTT_ENCODED_SIZE \ 46 (LIBCRUX_ML_KEM_MLKEM1024_RANK * \ 47 LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * \ 48 LIBCRUX_ML_KEM_CONSTANTS_BITS_PER_COEFFICIENT / (size_t)8U) 49 50 #define LIBCRUX_ML_KEM_MLKEM1024_CPA_PKE_PUBLIC_KEY_SIZE \ 51 (LIBCRUX_ML_KEM_MLKEM1024_T_AS_NTT_ENCODED_SIZE + (size_t)32U) 52 53 #define LIBCRUX_ML_KEM_MLKEM1024_CPA_PKE_SECRET_KEY_SIZE \ 54 (LIBCRUX_ML_KEM_MLKEM1024_RANK * \ 55 LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * \ 56 LIBCRUX_ML_KEM_CONSTANTS_BITS_PER_COEFFICIENT / (size_t)8U) 57 58 #define LIBCRUX_ML_KEM_MLKEM1024_ETA1 ((size_t)2U) 59 60 #define LIBCRUX_ML_KEM_MLKEM1024_ETA1_RANDOMNESS_SIZE \ 61 (LIBCRUX_ML_KEM_MLKEM1024_ETA1 * (size_t)64U) 62 63 #define LIBCRUX_ML_KEM_MLKEM1024_ETA2 ((size_t)2U) 64 65 #define LIBCRUX_ML_KEM_MLKEM1024_ETA2_RANDOMNESS_SIZE \ 66 (LIBCRUX_ML_KEM_MLKEM1024_ETA2 * (size_t)64U) 67 68 #define LIBCRUX_ML_KEM_MLKEM1024_IMPLICIT_REJECTION_HASH_INPUT_SIZE \ 69 (LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE + \ 70 LIBCRUX_ML_KEM_MLKEM1024_CPA_PKE_CIPHERTEXT_SIZE) 71 72 typedef libcrux_ml_kem_types_MlKemCiphertext_64 73 libcrux_ml_kem_mlkem1024_MlKem1024Ciphertext; 74 75 typedef libcrux_ml_kem_types_MlKemPrivateKey_83 76 libcrux_ml_kem_mlkem1024_MlKem1024PrivateKey; 77 78 typedef libcrux_ml_kem_types_MlKemPublicKey_64 79 libcrux_ml_kem_mlkem1024_MlKem1024PublicKey; 80 81 #define LIBCRUX_ML_KEM_MLKEM1024_RANKED_BYTES_PER_RING_ELEMENT \ 82 (LIBCRUX_ML_KEM_MLKEM1024_RANK * \ 83 LIBCRUX_ML_KEM_CONSTANTS_BITS_PER_RING_ELEMENT / (size_t)8U) 84 85 #define LIBCRUX_ML_KEM_MLKEM1024_SECRET_KEY_SIZE \ 86 (LIBCRUX_ML_KEM_MLKEM1024_CPA_PKE_SECRET_KEY_SIZE + \ 87 LIBCRUX_ML_KEM_MLKEM1024_CPA_PKE_PUBLIC_KEY_SIZE + \ 88 LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE + \ 89 LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE) 90 91 #if defined(__cplusplus) 92 } 93 #endif 94 95 #define libcrux_mlkem1024_H_DEFINED 96 #endif /* libcrux_mlkem1024_H */