libssh
0.12.2
The SSH library
Toggle main menu visibility
Loading...
Searching...
No Matches
mlkem_native.h
1
/*
2
* This file is part of the SSH Library
3
*
4
* Copyright (c) 2025 by Red Hat, Inc.
5
*
6
* Author: Jakub Jelen <jjelen@redhat.com>
7
*
8
* The SSH Library is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU Lesser General Public License as published by
10
* the Free Software Foundation, version 2.1 of the License.
11
*
12
* The SSH Library is distributed in the hope that it will be useful, but
13
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15
* License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public License
18
* along with the SSH Library; see the file COPYING. If not, write to
19
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
20
* MA 02111-1307, USA.
21
*/
22
23
#ifndef MLKEM_NATIVE_H_
24
#define MLKEM_NATIVE_H_
25
26
#include <stdbool.h>
27
#include <stddef.h>
28
#include <stdint.h>
29
#include <stdlib.h>
30
#include <string.h>
31
32
#include "config.h"
33
34
#ifdef __cplusplus
35
extern
"C"
{
36
#endif
37
43
typedef
struct
libcrux_ml_kem_types_MlKemPrivateKey_d9_s
{
44
uint8_t value[2400U];
45
} libcrux_ml_kem_types_MlKemPrivateKey_d9;
46
52
typedef
struct
libcrux_ml_kem_types_MlKemPublicKey_30_s
{
53
uint8_t value[1184U];
54
} libcrux_ml_kem_types_MlKemPublicKey_30;
55
56
typedef
struct
libcrux_ml_kem_mlkem768_MlKem768KeyPair_s
{
57
libcrux_ml_kem_types_MlKemPrivateKey_d9 sk;
58
libcrux_ml_kem_types_MlKemPublicKey_30 pk;
59
} libcrux_ml_kem_mlkem768_MlKem768KeyPair;
60
61
typedef
struct
libcrux_ml_kem_mlkem768_MlKem768Ciphertext_s
{
62
uint8_t value[1088U];
63
} libcrux_ml_kem_mlkem768_MlKem768Ciphertext;
64
71
typedef
struct
tuple_c2_s
{
72
libcrux_ml_kem_mlkem768_MlKem768Ciphertext fst;
73
uint8_t snd[32U];
74
} tuple_c2;
75
79
libcrux_ml_kem_mlkem768_MlKem768KeyPair
80
libcrux_ml_kem_mlkem768_portable_generate_key_pair(uint8_t randomness[64U]);
81
87
bool
libcrux_ml_kem_mlkem768_portable_validate_public_key(
88
libcrux_ml_kem_types_MlKemPublicKey_30 *public_key);
89
97
tuple_c2 libcrux_ml_kem_mlkem768_portable_encapsulate(
98
libcrux_ml_kem_types_MlKemPublicKey_30 *public_key,
99
uint8_t randomness[32U]);
100
108
void
libcrux_ml_kem_mlkem768_portable_decapsulate(
109
libcrux_ml_kem_types_MlKemPrivateKey_d9 *private_key,
110
libcrux_ml_kem_mlkem768_MlKem768Ciphertext *ciphertext,
111
uint8_t ret[32U]);
112
113
/* rename some types to be a bit more ergonomic */
114
#define libcrux_mlkem768_keypair libcrux_ml_kem_mlkem768_MlKem768KeyPair_s
115
#define libcrux_mlkem768_pk libcrux_ml_kem_types_MlKemPublicKey_30_s
116
#define libcrux_mlkem768_sk libcrux_ml_kem_types_MlKemPrivateKey_d9_s
117
#define libcrux_mlkem768_ciphertext libcrux_ml_kem_mlkem768_MlKem768Ciphertext_s
118
#define libcrux_mlkem768_enc_result tuple_c2_s
119
/* defines for PRNG inputs */
120
#define LIBCRUX_ML_KEM_KEY_PAIR_PRNG_LEN 64U
121
#define LIBCRUX_ML_KEM_ENC_PRNG_LEN 32
122
123
#ifdef __cplusplus
124
}
125
#endif
126
127
#endif
/* MLKEM_NATIVE_H_ */
libcrux_ml_kem_mlkem768_MlKem768Ciphertext_s
Definition
mlkem_native.h:61
libcrux_ml_kem_mlkem768_MlKem768KeyPair_s
Definition
mlkem_native.h:56
libcrux_ml_kem_types_MlKemPrivateKey_d9_s
Definition
mlkem_native.h:43
libcrux_ml_kem_types_MlKemPublicKey_30_s
Definition
mlkem_native.h:52
tuple_c2_s
Definition
mlkem_native.h:71
include
libssh
mlkem_native.h
Generated by
1.18.0