ISARA Radiate Security Solution Suite Toolkit Edition Version 1.5

Quantum-safe cryptographic primitives and algorithms.

iqr_luke.h
Go to the documentation of this file.
1 
24 #ifndef IQR_LUKE_H
25 #define IQR_LUKE_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_LUKE_SECRET_SIZE 32
45 
47 #define IQR_LUKE_INITIATOR_PUBLIC_KEY_SIZE 1824
48 
50 #define IQR_LUKE_RESPONDER_PUBLIC_KEY_SIZE 2048
51 
52 // ---------------------------------------------------------------------------------------------------------------------------------
53 // Opaque data types.
54 // ---------------------------------------------------------------------------------------------------------------------------------
55 
57 typedef struct iqr_LUKEParams_struct iqr_LUKEParams;
58 
60 typedef struct iqr_LUKEInitiatorPrivateKey_struct iqr_LUKEInitiatorPrivateKey;
61 
63 typedef struct iqr_LUKEResponderPrivateKey_struct iqr_LUKEResponderPrivateKey;
64 
65 // ---------------------------------------------------------------------------------------------------------------------------------
66 // Domain parameter functions.
67 // ---------------------------------------------------------------------------------------------------------------------------------
68 
82 IQR_API
84 
98 IQR_API_UNENFORCED_RETURN
100 
101 // ---------------------------------------------------------------------------------------------------------------------------------
102 // Private key generation functions.
103 // ---------------------------------------------------------------------------------------------------------------------------------
104 
125 IQR_API
127  iqr_LUKEInitiatorPrivateKey **initiator_private_key);
128 
149 IQR_API
151  iqr_LUKEResponderPrivateKey **responder_private_key);
152 
166 IQR_API_UNENFORCED_RETURN
168 
182 IQR_API_UNENFORCED_RETURN
184 
185 // ---------------------------------------------------------------------------------------------------------------------------------
186 // Shared secret generation functions.
187 // ---------------------------------------------------------------------------------------------------------------------------------
188 
213 IQR_API
215  uint8_t *initiator_public_key, size_t initiator_public_key_size);
216 
243 IQR_API
245  const uint8_t *initiator_public_key, size_t initiator_public_key_size, uint8_t *responder_public_key,
246  size_t responder_public_key_size);
247 
282 IQR_API
283 iqr_retval iqr_LUKEGetInitiatorSecret(const iqr_LUKEInitiatorPrivateKey *initiator_private_key, const uint8_t *responder_public_key,
284  size_t responder_public_key_size, uint8_t *secret, size_t secret_size);
285 
314 IQR_API
315 iqr_retval iqr_LUKEGetResponderSecret(const iqr_LUKEResponderPrivateKey *responder_private_key, uint8_t *secret,
316  size_t secret_size);
317 
318 #ifdef __cplusplus
319 }
320 #endif
321 
322 #endif /* IQR_LUKE_H */
struct iqr_LUKEParams_struct iqr_LUKEParams
Definition: iqr_luke.h:58
ISARA Radiate Security Solution Suite&#39;s Context object.
IQR_API_UNENFORCED_RETURN iqr_retval iqr_LUKEDestroyResponderPrivateKey(iqr_LUKEResponderPrivateKey **responder_private_key)
IQR_API iqr_retval iqr_LUKEGetInitiatorSecret(const iqr_LUKEInitiatorPrivateKey *initiator_private_key, const uint8_t *responder_public_key, size_t responder_public_key_size, uint8_t *secret, size_t secret_size)
ISARA Radiate Security Solution Suite&#39;s Random Number Generator object APIs.
struct iqr_LUKEInitiatorPrivateKey_struct iqr_LUKEInitiatorPrivateKey
Definition: iqr_luke.h:61
IQR_API iqr_retval iqr_LUKECreateResponderPrivateKey(const iqr_LUKEParams *params, const iqr_RNG *rng, iqr_LUKEResponderPrivateKey **responder_private_key)
ISARA Radiate Security Solution Suite&#39;s return values.
IQR_API iqr_retval iqr_LUKEGetResponderSecret(const iqr_LUKEResponderPrivateKey *responder_private_key, uint8_t *secret, size_t secret_size)
IQR_API iqr_retval iqr_LUKECreateParams(const iqr_Context *ctx, iqr_LUKEParams **params)
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:51
IQR_API iqr_retval iqr_LUKEGetResponderPublicKey(iqr_LUKEResponderPrivateKey *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)
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_LUKEDestroyParams(iqr_LUKEParams **params)
IQR_API iqr_retval iqr_LUKECreateInitiatorPrivateKey(const iqr_LUKEParams *params, const iqr_RNG *rng, iqr_LUKEInitiatorPrivateKey **initiator_private_key)
IQR_API iqr_retval iqr_LUKEGetInitiatorPublicKey(iqr_LUKEInitiatorPrivateKey *initiator_private_key, const iqr_RNG *rng, uint8_t *initiator_public_key, size_t initiator_public_key_size)
struct iqr_LUKEResponderPrivateKey_struct iqr_LUKEResponderPrivateKey
Definition: iqr_luke.h:64
iqr_retval
Definition: iqr_retval.h:29
IQR_API_UNENFORCED_RETURN iqr_retval iqr_LUKEDestroyInitiatorPrivateKey(iqr_LUKEInitiatorPrivateKey **initiator_private_key)