ISARA Radiate Security Solution Suite Toolkit Edition Version 1.5

Quantum-safe cryptographic primitives and algorithms.

iqr_newhopedh.h
Go to the documentation of this file.
1 
24 #ifndef IQR_NEWHOPEDH_H
25 #define IQR_NEWHOPEDH_H
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 #include "iqr_api.h"
32 #include "iqr_context.h"
33 #include "iqr_retval.h"
34 #include "iqr_rng.h"
35 
36 #include <stddef.h>
37 #include <stdint.h>
38 
39 // ---------------------------------------------------------------------------------------------------------------------------------
40 // Constants.
41 // ---------------------------------------------------------------------------------------------------------------------------------
42 
44 #define IQR_NEWHOPEDH_SECRET_SIZE 32
45 
47 #define IQR_NEWHOPEDH_INITIATOR_PUBLIC_KEY_SIZE 1824
48 
50 #define IQR_NEWHOPEDH_RESPONDER_PUBLIC_KEY_SIZE 2048
51 
52 // ---------------------------------------------------------------------------------------------------------------------------------
53 // Opaque data types.
54 // ---------------------------------------------------------------------------------------------------------------------------------
55 
57 typedef struct iqr_NewHopeDHParams_struct iqr_NewHopeDHParams;
58 
60 typedef struct iqr_NewHopeDHInitiatorPrivateKey_struct iqr_NewHopeDHInitiatorPrivateKey;
61 
63 typedef struct iqr_NewHopeDHResponderPrivateKey_struct iqr_NewHopeDHResponderPrivateKey;
64 
65 // ---------------------------------------------------------------------------------------------------------------------------------
66 // Domain parameter functions.
67 // ---------------------------------------------------------------------------------------------------------------------------------
68 
87 IQR_API
89 
103 IQR_API_UNENFORCED_RETURN
105 
106 // ---------------------------------------------------------------------------------------------------------------------------------
107 // Private key generation functions.
108 // ---------------------------------------------------------------------------------------------------------------------------------
109 
131 IQR_API
133  iqr_NewHopeDHInitiatorPrivateKey **initiator_private_key);
134 
156 IQR_API
158  iqr_NewHopeDHResponderPrivateKey **responder_private_key);
159 
173 IQR_API_UNENFORCED_RETURN
175 
189 IQR_API_UNENFORCED_RETURN
191 
192 // ---------------------------------------------------------------------------------------------------------------------------------
193 // Shared secret generation functions.
194 // ---------------------------------------------------------------------------------------------------------------------------------
195 
221 IQR_API
223  uint8_t *initiator_public_key, size_t initiator_public_key_size);
224 
252 IQR_API
254  const uint8_t *initiator_public_key, size_t initiator_public_key_size, uint8_t *responder_public_key,
255  size_t responder_public_key_size);
256 
291 IQR_API
293  const uint8_t *responder_public_key, size_t responder_public_key_size, uint8_t *secret, size_t secret_size);
294 
320 IQR_API
321 iqr_retval iqr_NewHopeDHGetResponderSecret(const iqr_NewHopeDHResponderPrivateKey *responder_private_key, uint8_t *secret,
322  size_t secret_size);
323 
324 #ifdef __cplusplus
325 }
326 #endif
327 
328 #endif /* IQR_NEWHOPEDH_H */
IQR_API iqr_retval iqr_NewHopeDHCreateParams(const iqr_Context *ctx, iqr_NewHopeDHParams **params)
ISARA Radiate Security Solution Suite&#39;s Context object.
IQR_API iqr_retval iqr_NewHopeDHGetResponderSecret(const iqr_NewHopeDHResponderPrivateKey *responder_private_key, uint8_t *secret, size_t secret_size)
IQR_API iqr_retval iqr_NewHopeDHCreateInitiatorPrivateKey(const iqr_NewHopeDHParams *params, const iqr_RNG *rng, iqr_NewHopeDHInitiatorPrivateKey **initiator_private_key)
ISARA Radiate Security Solution Suite&#39;s Random Number Generator object APIs.
ISARA Radiate Security Solution Suite&#39;s return values.
struct iqr_NewHopeDHResponderPrivateKey_struct iqr_NewHopeDHResponderPrivateKey
Definition: iqr_newhopedh.h:64
IQR_API_UNENFORCED_RETURN iqr_retval iqr_NewHopeDHDestroyParams(iqr_NewHopeDHParams **params)
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:51
struct iqr_NewHopeDHInitiatorPrivateKey_struct iqr_NewHopeDHInitiatorPrivateKey
Definition: iqr_newhopedh.h:61
ISARA Radiate Security Solution Suite&#39;s API declarations.
IQR_API_UNENFORCED_RETURN iqr_retval iqr_NewHopeDHDestroyInitiatorPrivateKey(iqr_NewHopeDHInitiatorPrivateKey **initiator_private_key)
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:36
struct iqr_NewHopeDHParams_struct iqr_NewHopeDHParams
Definition: iqr_newhopedh.h:58
IQR_API iqr_retval iqr_NewHopeDHCreateResponderPrivateKey(const iqr_NewHopeDHParams *params, const iqr_RNG *rng, iqr_NewHopeDHResponderPrivateKey **responder_private_key)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_NewHopeDHDestroyResponderPrivateKey(iqr_NewHopeDHResponderPrivateKey **responder_private_key)
IQR_API iqr_retval iqr_NewHopeDHGetInitiatorSecret(const iqr_NewHopeDHInitiatorPrivateKey *initiator_private_key, const uint8_t *responder_public_key, size_t responder_public_key_size, uint8_t *secret, size_t secret_size)
IQR_API iqr_retval iqr_NewHopeDHGetInitiatorPublicKey(iqr_NewHopeDHInitiatorPrivateKey *initiator_private_key, const iqr_RNG *rng, uint8_t *initiator_public_key, size_t initiator_public_key_size)
IQR_API iqr_retval iqr_NewHopeDHGetResponderPublicKey(iqr_NewHopeDHResponderPrivateKey *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_retval
Definition: iqr_retval.h:29