ISARA Radiate Security Solution Suite Toolkit Edition Version 1.5

Quantum-safe cryptographic primitives and algorithms.

iqr_sike.h
Go to the documentation of this file.
1 
20 #ifndef IQR_SIKE_H
21 #define IQR_SIKE_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #include "iqr_api.h"
28 #include "iqr_retval.h"
29 #include "iqr_rng.h"
30 
31 #include <stddef.h>
32 #include <stdint.h>
33 
34 // ---------------------------------------------------------------------------------------------------------------------------------
35 // Opaque data types.
36 // ---------------------------------------------------------------------------------------------------------------------------------
37 
39 typedef struct iqr_SIKEParams_struct iqr_SIKEParams;
40 
42 typedef struct iqr_SIKEPublicKey_struct iqr_SIKEPublicKey;
43 
45 typedef struct iqr_SIKEPrivateKey_struct iqr_SIKEPrivateKey;
46 
48 typedef struct iqr_SIKEVariant_struct iqr_SIKEVariant;
49 
50 // ---------------------------------------------------------------------------------------------------------------------------------
51 // SIKE variants.
52 // ---------------------------------------------------------------------------------------------------------------------------------
53 
55 IQR_EXTERN
57 
59 IQR_EXTERN
61 
62 // ---------------------------------------------------------------------------------------------------------------------------------
63 // SIKE parameter management functions.
64 // ---------------------------------------------------------------------------------------------------------------------------------
65 
78 IQR_API
79 iqr_retval iqr_SIKECreateParams(const iqr_Context *ctx, const iqr_SIKEVariant *variant, iqr_SIKEParams **params);
80 
95 IQR_API_UNENFORCED_RETURN
97 
98 // ---------------------------------------------------------------------------------------------------------------------------------
99 // SIKE key management functions.
100 // ---------------------------------------------------------------------------------------------------------------------------------
101 
118 IQR_API
119 iqr_retval iqr_SIKECreateKeyPair(const iqr_SIKEParams *params, const iqr_RNG *rng, iqr_SIKEPublicKey **public_key,
120  iqr_SIKEPrivateKey **private_key);
121 
137 IQR_API
138 iqr_retval iqr_SIKEImportPublicKey(const iqr_SIKEParams *params, const uint8_t *buf, size_t buf_size,
139  iqr_SIKEPublicKey **public_key);
140 
160 IQR_API
161 iqr_retval iqr_SIKEImportPrivateKey(const iqr_SIKEParams *params, const uint8_t *buf, size_t buf_size,
162  iqr_SIKEPrivateKey **private_key);
163 
175 IQR_API
176 iqr_retval iqr_SIKEExportPublicKey(const iqr_SIKEPublicKey *public_key, uint8_t *buf, size_t buf_size);
177 
191 IQR_API
192 iqr_retval iqr_SIKEExportPrivateKey(const iqr_SIKEPrivateKey *private_key, uint8_t *buf, size_t buf_size);
193 
203 IQR_API_UNENFORCED_RETURN
205 
218 IQR_API_UNENFORCED_RETURN
220 
221 // ---------------------------------------------------------------------------------------------------------------------------------
222 // SIKE size functions.
223 // ---------------------------------------------------------------------------------------------------------------------------------
224 
233 IQR_API
234 iqr_retval iqr_SIKEGetPublicKeySize(const iqr_SIKEParams *params, size_t *public_key_size);
235 
244 IQR_API
245 iqr_retval iqr_SIKEGetPrivateKeySize(const iqr_SIKEParams *params, size_t *private_key_size);
246 
255 IQR_API
256 iqr_retval iqr_SIKEGetCiphertextSize(const iqr_SIKEParams *params, size_t *ciphertext_size);
257 
266 IQR_API
267 iqr_retval iqr_SIKEGetSharedKeySize(const iqr_SIKEParams *params, size_t *shared_key_size);
268 
269 // ---------------------------------------------------------------------------------------------------------------------------------
270 // SIKE encapsulation/decapsulation functions.
271 // ---------------------------------------------------------------------------------------------------------------------------------
272 
300 IQR_API
301 iqr_retval iqr_SIKEEncapsulate(const iqr_SIKEPublicKey *public_key, const iqr_RNG *rng, uint8_t *ciphertext,
302  size_t ciphertext_size, uint8_t *shared_key, size_t shared_key_size);
303 
327 IQR_API
328 iqr_retval iqr_SIKEDecapsulate(const iqr_SIKEPrivateKey *private_key, const uint8_t *ciphertext, size_t ciphertext_size,
329  uint8_t *shared_key, size_t shared_key_size);
330 
331 #ifdef __cplusplus
332 }
333 #endif
334 
335 #endif /* IQR_SIKE_H */
IQR_API iqr_retval iqr_SIKEGetCiphertextSize(const iqr_SIKEParams *params, size_t *ciphertext_size)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_SIKEDestroyPublicKey(iqr_SIKEPublicKey **public_key)
struct iqr_SIKEPublicKey_struct iqr_SIKEPublicKey
Definition: iqr_sike.h:43
struct iqr_SIKEVariant_struct iqr_SIKEVariant
Definition: iqr_sike.h:49
IQR_API iqr_retval iqr_SIKEImportPrivateKey(const iqr_SIKEParams *params, const uint8_t *buf, size_t buf_size, iqr_SIKEPrivateKey **private_key)
IQR_API iqr_retval iqr_SIKEExportPrivateKey(const iqr_SIKEPrivateKey *private_key, uint8_t *buf, size_t buf_size)
ISARA Radiate Security Solution Suite&#39;s Random Number Generator object APIs.
IQR_API_UNENFORCED_RETURN iqr_retval iqr_SIKEDestroyPrivateKey(iqr_SIKEPrivateKey **private_key)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_SIKEDestroyParams(iqr_SIKEParams **params)
struct iqr_SIKEParams_struct iqr_SIKEParams
Definition: iqr_sike.h:40
IQR_API iqr_retval iqr_SIKEGetSharedKeySize(const iqr_SIKEParams *params, size_t *shared_key_size)
ISARA Radiate Security Solution Suite&#39;s return values.
IQR_API iqr_retval iqr_SIKEImportPublicKey(const iqr_SIKEParams *params, const uint8_t *buf, size_t buf_size, iqr_SIKEPublicKey **public_key)
IQR_API iqr_retval iqr_SIKEGetPrivateKeySize(const iqr_SIKEParams *params, size_t *private_key_size)
IQR_EXTERN const iqr_SIKEVariant IQR_SIKE_P503
Definition: iqr_sike.h:57
IQR_API iqr_retval iqr_SIKECreateKeyPair(const iqr_SIKEParams *params, const iqr_RNG *rng, iqr_SIKEPublicKey **public_key, iqr_SIKEPrivateKey **private_key)
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:51
IQR_API iqr_retval iqr_SIKEGetPublicKeySize(const iqr_SIKEParams *params, size_t *public_key_size)
ISARA Radiate Security Solution Suite&#39;s API declarations.
IQR_API iqr_retval iqr_SIKEEncapsulate(const iqr_SIKEPublicKey *public_key, const iqr_RNG *rng, uint8_t *ciphertext, size_t ciphertext_size, uint8_t *shared_key, size_t shared_key_size)
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:36
IQR_API iqr_retval iqr_SIKEExportPublicKey(const iqr_SIKEPublicKey *public_key, uint8_t *buf, size_t buf_size)
IQR_API iqr_retval iqr_SIKEDecapsulate(const iqr_SIKEPrivateKey *private_key, const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *shared_key, size_t shared_key_size)
IQR_API iqr_retval iqr_SIKECreateParams(const iqr_Context *ctx, const iqr_SIKEVariant *variant, iqr_SIKEParams **params)
struct iqr_SIKEPrivateKey_struct iqr_SIKEPrivateKey
Definition: iqr_sike.h:46
iqr_retval
Definition: iqr_retval.h:29
IQR_EXTERN const iqr_SIKEVariant IQR_SIKE_P751
Definition: iqr_sike.h:61