tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

libcrux_mlkem768.h (3350B)


      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_mlkem768_H
     15 #define libcrux_mlkem768_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_MLKEM768_VECTOR_U_COMPRESSION_FACTOR ((size_t)10U)
     26 
     27 #define LIBCRUX_ML_KEM_MLKEM768_C1_BLOCK_SIZE                \
     28    (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * \
     29     LIBCRUX_ML_KEM_MLKEM768_VECTOR_U_COMPRESSION_FACTOR / (size_t)8U)
     30 
     31 #define LIBCRUX_ML_KEM_MLKEM768_RANK ((size_t)3U)
     32 
     33 #define LIBCRUX_ML_KEM_MLKEM768_C1_SIZE \
     34    (LIBCRUX_ML_KEM_MLKEM768_C1_BLOCK_SIZE * LIBCRUX_ML_KEM_MLKEM768_RANK)
     35 
     36 #define LIBCRUX_ML_KEM_MLKEM768_VECTOR_V_COMPRESSION_FACTOR ((size_t)4U)
     37 
     38 #define LIBCRUX_ML_KEM_MLKEM768_C2_SIZE                      \
     39    (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * \
     40     LIBCRUX_ML_KEM_MLKEM768_VECTOR_V_COMPRESSION_FACTOR / (size_t)8U)
     41 
     42 #define LIBCRUX_ML_KEM_MLKEM768_CPA_PKE_CIPHERTEXT_SIZE \
     43    (LIBCRUX_ML_KEM_MLKEM768_C1_SIZE + LIBCRUX_ML_KEM_MLKEM768_C2_SIZE)
     44 
     45 #define LIBCRUX_ML_KEM_MLKEM768_T_AS_NTT_ENCODED_SIZE        \
     46    (LIBCRUX_ML_KEM_MLKEM768_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_MLKEM768_CPA_PKE_PUBLIC_KEY_SIZE \
     51    (LIBCRUX_ML_KEM_MLKEM768_T_AS_NTT_ENCODED_SIZE + (size_t)32U)
     52 
     53 #define LIBCRUX_ML_KEM_MLKEM768_CPA_PKE_SECRET_KEY_SIZE      \
     54    (LIBCRUX_ML_KEM_MLKEM768_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_MLKEM768_ETA1 ((size_t)2U)
     59 
     60 #define LIBCRUX_ML_KEM_MLKEM768_ETA1_RANDOMNESS_SIZE \
     61    (LIBCRUX_ML_KEM_MLKEM768_ETA1 * (size_t)64U)
     62 
     63 #define LIBCRUX_ML_KEM_MLKEM768_ETA2 ((size_t)2U)
     64 
     65 #define LIBCRUX_ML_KEM_MLKEM768_ETA2_RANDOMNESS_SIZE \
     66    (LIBCRUX_ML_KEM_MLKEM768_ETA2 * (size_t)64U)
     67 
     68 #define LIBCRUX_ML_KEM_MLKEM768_IMPLICIT_REJECTION_HASH_INPUT_SIZE \
     69    (LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE +                 \
     70     LIBCRUX_ML_KEM_MLKEM768_CPA_PKE_CIPHERTEXT_SIZE)
     71 
     72 typedef libcrux_ml_kem_types_MlKemPrivateKey_d9
     73    libcrux_ml_kem_mlkem768_MlKem768PrivateKey;
     74 
     75 typedef libcrux_ml_kem_types_MlKemPublicKey_30
     76    libcrux_ml_kem_mlkem768_MlKem768PublicKey;
     77 
     78 #define LIBCRUX_ML_KEM_MLKEM768_RANKED_BYTES_PER_RING_ELEMENT \
     79    (LIBCRUX_ML_KEM_MLKEM768_RANK *                           \
     80     LIBCRUX_ML_KEM_CONSTANTS_BITS_PER_RING_ELEMENT / (size_t)8U)
     81 
     82 #define LIBCRUX_ML_KEM_MLKEM768_SECRET_KEY_SIZE        \
     83    (LIBCRUX_ML_KEM_MLKEM768_CPA_PKE_SECRET_KEY_SIZE + \
     84     LIBCRUX_ML_KEM_MLKEM768_CPA_PKE_PUBLIC_KEY_SIZE + \
     85     LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE +          \
     86     LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE)
     87 
     88 #if defined(__cplusplus)
     89 }
     90 #endif
     91 
     92 #define libcrux_mlkem768_H_DEFINED
     93 #endif /* libcrux_mlkem768_H */