ISARA Radiate Security Solution Suite Toolkit Edition Version 1.5

Quantum-safe cryptographic primitives and algorithms.

iqr_frododh.h
Go to the documentation of this file.
1 
22 #ifndef IQR_FRODODH_H
23 #define IQR_FRODODH_H
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 #include "iqr_api.h"
30 #include "iqr_context.h"
31 #include "iqr_retval.h"
32 #include "iqr_rng.h"
33 
34 #include <stddef.h>
35 #include <stdint.h>
36 
37 // ---------------------------------------------------------------------------------------------------------------------------------
38 // Constants.
39 // ---------------------------------------------------------------------------------------------------------------------------------
40 
42 #define IQR_FRODODH_INITIATOR_PUBLIC_KEY_SIZE 15632
43 
45 #define IQR_FRODODH_RESPONDER_PUBLIC_KEY_SIZE 15624
46 
48 #define IQR_FRODODH_SECRET_SIZE 32
49 
50 // ---------------------------------------------------------------------------------------------------------------------------------
51 // Opaque data types.
52 // ---------------------------------------------------------------------------------------------------------------------------------
53 
55 typedef struct iqr_FrodoDHParams_struct iqr_FrodoDHParams;
56 
58 typedef struct iqr_FrodoDHInitiatorPrivateKey_struct iqr_FrodoDHInitiatorPrivateKey;
59 
61 typedef struct iqr_FrodoDHResponderPrivateKey_struct iqr_FrodoDHResponderPrivateKey;
62 
64 typedef struct iqr_FrodoDHVariant_struct iqr_FrodoDHVariant;
65 
66 // ---------------------------------------------------------------------------------------------------------------------------------
67 // FrodoDH variants.
68 // ---------------------------------------------------------------------------------------------------------------------------------
69 
71 IQR_EXTERN
73 
75 IQR_EXTERN
77 
78 // ---------------------------------------------------------------------------------------------------------------------------------
79 // Domain parameter functions.
80 // ---------------------------------------------------------------------------------------------------------------------------------
81 
94 IQR_API
96 
110 IQR_API_UNENFORCED_RETURN
112 
113 // ---------------------------------------------------------------------------------------------------------------------------------
114 // Private key generation functions.
115 // ---------------------------------------------------------------------------------------------------------------------------------
116 
138 IQR_API
140  iqr_FrodoDHInitiatorPrivateKey **initiator_private_key);
141 
163 IQR_API
165  iqr_FrodoDHResponderPrivateKey **responder_private_key);
166 
180 IQR_API_UNENFORCED_RETURN
182 
196 IQR_API_UNENFORCED_RETURN
198 
199 // ---------------------------------------------------------------------------------------------------------------------------------
200 // Shared secret generation functions.
201 // ---------------------------------------------------------------------------------------------------------------------------------
202 
226 IQR_API
228  uint8_t *initiator_public_key, size_t initiator_public_key_size);
229 
254 IQR_API
256  const uint8_t *initiator_public_key, size_t initiator_public_key_size, uint8_t *responder_public_key,
257  size_t responder_public_key_size);
258 
289 IQR_API
291  const uint8_t *responder_public_key, size_t responder_public_key_size, uint8_t *secret, size_t secret_size);
292 
319 IQR_API
320 iqr_retval iqr_FrodoDHGetResponderSecret(const iqr_FrodoDHResponderPrivateKey *responder_private_key, uint8_t *secret,
321  size_t secret_size);
322 
323 #ifdef __cplusplus
324 }
325 #endif
326 
327 #endif /* IQR_FRODODH_H */
IQR_API_UNENFORCED_RETURN iqr_retval iqr_FrodoDHDestroyParams(iqr_FrodoDHParams **params)
ISARA Radiate Security Solution Suite&#39;s Context object.
IQR_API iqr_retval iqr_FrodoDHGetInitiatorSecret(const iqr_FrodoDHInitiatorPrivateKey *initiator_private_key, const uint8_t *responder_public_key, size_t responder_public_key_size, uint8_t *secret, size_t secret_size)
IQR_EXTERN const iqr_FrodoDHVariant IQR_FRODODH_976_AES
Definition: iqr_frododh.h:73
IQR_EXTERN const iqr_FrodoDHVariant IQR_FRODODH_976_CSHAKE
Definition: iqr_frododh.h:77
ISARA Radiate Security Solution Suite&#39;s Random Number Generator object APIs.
IQR_API_UNENFORCED_RETURN iqr_retval iqr_FrodoDHDestroyResponderPrivateKey(iqr_FrodoDHResponderPrivateKey **responder_private_key)
ISARA Radiate Security Solution Suite&#39;s return values.
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:51
IQR_API iqr_retval iqr_FrodoDHGetInitiatorPublicKey(iqr_FrodoDHInitiatorPrivateKey *initiator_private_key, const iqr_RNG *rng, uint8_t *initiator_public_key, size_t initiator_public_key_size)
ISARA Radiate Security Solution Suite&#39;s API declarations.
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:36
IQR_API_UNENFORCED_RETURN iqr_retval iqr_FrodoDHDestroyInitiatorPrivateKey(iqr_FrodoDHInitiatorPrivateKey **initiator_private_key)
struct iqr_FrodoDHInitiatorPrivateKey_struct iqr_FrodoDHInitiatorPrivateKey
Definition: iqr_frododh.h:59
struct iqr_FrodoDHResponderPrivateKey_struct iqr_FrodoDHResponderPrivateKey
Definition: iqr_frododh.h:62
IQR_API iqr_retval iqr_FrodoDHCreateParams(const iqr_Context *ctx, const iqr_FrodoDHVariant *variant, iqr_FrodoDHParams **params)
struct iqr_FrodoDHVariant_struct iqr_FrodoDHVariant
Definition: iqr_frododh.h:65
IQR_API iqr_retval iqr_FrodoDHCreateInitiatorPrivateKey(const iqr_FrodoDHParams *params, const iqr_RNG *rng, iqr_FrodoDHInitiatorPrivateKey **initiator_private_key)
IQR_API iqr_retval iqr_FrodoDHCreateResponderPrivateKey(const iqr_FrodoDHParams *params, const iqr_RNG *rng, iqr_FrodoDHResponderPrivateKey **responder_private_key)
struct iqr_FrodoDHParams_struct iqr_FrodoDHParams
Definition: iqr_frododh.h:56
IQR_API iqr_retval iqr_FrodoDHGetResponderPublicKey(iqr_FrodoDHResponderPrivateKey *responder_private_key, const iqr_RNG *rng, const uint8_t *initiator_public_key, size_t initiator_public_key_size, uint8_t *responder_public_key, size_t responder_public_key_size)
IQR_API iqr_retval iqr_FrodoDHGetResponderSecret(const iqr_FrodoDHResponderPrivateKey *responder_private_key, uint8_t *secret, size_t secret_size)
iqr_retval
Definition: iqr_retval.h:29