ISARA Radiate Security Solution Suite Toolkit Edition Version 1.5

Quantum-safe cryptographic primitives and algorithms.

iqr_sidh.h
Go to the documentation of this file.
1 
21 #ifndef IQR_SIDH_H
22 #define IQR_SIDH_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 #include "iqr_api.h"
29 #include "iqr_context.h"
30 #include "iqr_retval.h"
31 #include "iqr_rng.h"
32 
33 #include <stddef.h>
34 #include <stdint.h>
35 
36 // ---------------------------------------------------------------------------------------------------------------------------------
37 // Opaque data types.
38 // ---------------------------------------------------------------------------------------------------------------------------------
39 
41 typedef struct iqr_SIDHParams_struct iqr_SIDHParams;
42 
44 typedef struct iqr_SIDHAlicePrivateKey_struct iqr_SIDHAlicePrivateKey;
45 
47 typedef struct iqr_SIDHBobPrivateKey_struct iqr_SIDHBobPrivateKey;
48 
50 typedef struct iqr_SIDHVariant_struct iqr_SIDHVariant;
51 
52 // ---------------------------------------------------------------------------------------------------------------------------------
53 // SIDH variants.
54 // ---------------------------------------------------------------------------------------------------------------------------------
55 
57 IQR_EXTERN
59 
61 IQR_EXTERN
63 
64 // ---------------------------------------------------------------------------------------------------------------------------------
65 // Domain parameter functions.
66 // ---------------------------------------------------------------------------------------------------------------------------------
67 
82 IQR_API
83 iqr_retval iqr_SIDHCreateParams(const iqr_Context *ctx, const iqr_SIDHVariant *variant, iqr_SIDHParams **params);
84 
98 IQR_API_UNENFORCED_RETURN
100 
109 IQR_API
110 iqr_retval iqr_SIDHGetPublicKeySize(const iqr_SIDHParams *params, size_t *public_key_size);
111 
120 IQR_API
121 iqr_retval iqr_SIDHGetSecretSize(const iqr_SIDHParams *params, size_t *secret_size);
122 
123 // ---------------------------------------------------------------------------------------------------------------------------------
124 // Private key generation functions.
125 // ---------------------------------------------------------------------------------------------------------------------------------
126 
144 IQR_API
146  iqr_SIDHAlicePrivateKey **alice_private_key);
147 
165 IQR_API
166 iqr_retval iqr_SIDHCreateBobPrivateKey(const iqr_SIDHParams *params, const iqr_RNG *rng, iqr_SIDHBobPrivateKey **bob_private_key);
167 
180 IQR_API_UNENFORCED_RETURN
182 
195 IQR_API_UNENFORCED_RETURN
197 
198 // ---------------------------------------------------------------------------------------------------------------------------------
199 // Public key functions.
200 // ---------------------------------------------------------------------------------------------------------------------------------
201 
215 IQR_API
216 iqr_retval iqr_SIDHGetAlicePublicKey(const iqr_SIDHAlicePrivateKey *alice_private_key, uint8_t *alice_public_key,
217  size_t alice_public_key_size);
218 
231 IQR_API
232 iqr_retval iqr_SIDHGetBobPublicKey(const iqr_SIDHBobPrivateKey *bob_private_key, uint8_t *bob_public_key,
233  size_t bob_public_key_size);
234 
235 // ---------------------------------------------------------------------------------------------------------------------------------
236 // Secret generation functions.
237 // ---------------------------------------------------------------------------------------------------------------------------------
238 
263 IQR_API
264 iqr_retval iqr_SIDHGetAliceSecret(const iqr_SIDHAlicePrivateKey *alice_private_key, const uint8_t *bob_public_key,
265  size_t bob_public_key_size, uint8_t *secret, size_t secret_size);
266 
291 IQR_API
292 iqr_retval iqr_SIDHGetBobSecret(const iqr_SIDHBobPrivateKey *bob_private_key, const uint8_t *alice_public_key,
293  size_t alice_public_key_size, uint8_t *secret, size_t secret_size);
294 
295 #ifdef __cplusplus
296 }
297 #endif
298 
299 #endif /* IQR_SIDH_H */
IQR_API_UNENFORCED_RETURN iqr_retval iqr_SIDHDestroyAlicePrivateKey(iqr_SIDHAlicePrivateKey **alice_private_key)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_SIDHDestroyParams(iqr_SIDHParams **params)
IQR_API iqr_retval iqr_SIDHGetSecretSize(const iqr_SIDHParams *params, size_t *secret_size)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_SIDHDestroyBobPrivateKey(iqr_SIDHBobPrivateKey **bob_private_key)
ISARA Radiate Security Solution Suite&#39;s Context object.
IQR_API iqr_retval iqr_SIDHGetBobPublicKey(const iqr_SIDHBobPrivateKey *bob_private_key, uint8_t *bob_public_key, size_t bob_public_key_size)
IQR_API iqr_retval iqr_SIDHCreateParams(const iqr_Context *ctx, const iqr_SIDHVariant *variant, iqr_SIDHParams **params)
struct iqr_SIDHParams_struct iqr_SIDHParams
Definition: iqr_sidh.h:42
IQR_EXTERN const iqr_SIDHVariant IQR_SIDH_P751
Definition: iqr_sidh.h:63
ISARA Radiate Security Solution Suite&#39;s Random Number Generator object APIs.
IQR_API iqr_retval iqr_SIDHGetPublicKeySize(const iqr_SIDHParams *params, size_t *public_key_size)
IQR_API iqr_retval iqr_SIDHGetAliceSecret(const iqr_SIDHAlicePrivateKey *alice_private_key, const uint8_t *bob_public_key, size_t bob_public_key_size, uint8_t *secret, size_t secret_size)
IQR_API iqr_retval iqr_SIDHGetBobSecret(const iqr_SIDHBobPrivateKey *bob_private_key, const uint8_t *alice_public_key, size_t alice_public_key_size, uint8_t *secret, size_t secret_size)
IQR_API iqr_retval iqr_SIDHGetAlicePublicKey(const iqr_SIDHAlicePrivateKey *alice_private_key, uint8_t *alice_public_key, size_t alice_public_key_size)
ISARA Radiate Security Solution Suite&#39;s return values.
struct iqr_SIDHBobPrivateKey_struct iqr_SIDHBobPrivateKey
Definition: iqr_sidh.h:48
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:51
IQR_API iqr_retval iqr_SIDHCreateBobPrivateKey(const iqr_SIDHParams *params, const iqr_RNG *rng, iqr_SIDHBobPrivateKey **bob_private_key)
ISARA Radiate Security Solution Suite&#39;s API declarations.
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:36
IQR_API iqr_retval iqr_SIDHCreateAlicePrivateKey(const iqr_SIDHParams *params, const iqr_RNG *rng, iqr_SIDHAlicePrivateKey **alice_private_key)
struct iqr_SIDHVariant_struct iqr_SIDHVariant
Definition: iqr_sidh.h:51
IQR_EXTERN const iqr_SIDHVariant IQR_SIDH_P503
Definition: iqr_sidh.h:59
struct iqr_SIDHAlicePrivateKey_struct iqr_SIDHAlicePrivateKey
Definition: iqr_sidh.h:45
iqr_retval
Definition: iqr_retval.h:29