ISARA Quantum Resistant Toolkit  Version 1.1
Quantum resistant cryptographic primitives and algorithms.
iqr_luke.h
Go to the documentation of this file.
1 
21 #ifndef IQR_LUKE_H
22 #define IQR_LUKE_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 // ---------------------------------------------------------------------------------------------------------------------------------
34 // Constants.
35 // ---------------------------------------------------------------------------------------------------------------------------------
36 
38 #define IQR_LUKE_SECRET_SIZE 32
39 
41 #define IQR_LUKE_INITIATOR_KEY_SIZE 1824
42 #define IQR_LUKE_RESPONDER_KEY_SIZE 2048
43 
44 // ---------------------------------------------------------------------------------------------------------------------------------
45 // Opaque data types.
46 // ---------------------------------------------------------------------------------------------------------------------------------
47 
49 typedef struct iqr_LUKEParams_struct iqr_LUKEParams;
50 
52 typedef struct iqr_LUKEPrivateKey_struct iqr_LUKEPrivateKey;
53 
54 // ---------------------------------------------------------------------------------------------------------------------------------
55 // Domain parameter functions.
56 // ---------------------------------------------------------------------------------------------------------------------------------
57 
69 IQR_API
71 
81 IQR_API_UNENFORCED_RETURN
83 
84 // ---------------------------------------------------------------------------------------------------------------------------------
85 // Private key generation functions.
86 // ---------------------------------------------------------------------------------------------------------------------------------
87 
103 IQR_API
105 
116 IQR_API_UNENFORCED_RETURN
118 
119 // ---------------------------------------------------------------------------------------------------------------------------------
120 // Shared secret generation functions.
121 // ---------------------------------------------------------------------------------------------------------------------------------
122 
146 IQR_API
147 iqr_retval iqr_LUKEGetInitiatorPublicKey(iqr_LUKEPrivateKey *private_key, const iqr_RNG *rng, uint8_t *initiator_public_key,
148  size_t initiator_public_key_size);
149 
178 IQR_API
179 iqr_retval iqr_LUKEGetInitiatorSecret(const iqr_LUKEPrivateKey *private_key, const uint8_t *responder_public_key,
180  size_t responder_public_key_size, uint8_t *secret, size_t secret_size);
181 
214 IQR_API
216  const uint8_t *initiator_public_key, size_t initiator_public_key_size, uint8_t *responder_public_key,
217  size_t responder_public_key_size, uint8_t *secret, size_t secret_size);
218 
219 #ifdef __cplusplus
220 }
221 #endif
222 
223 #endif /* IQR_LUKE_H */
struct iqr_LUKEParams_struct iqr_LUKEParams
Definition: iqr_luke.h:49
IQR_API_UNENFORCED_RETURN iqr_retval iqr_LUKEDestroyPrivateKey(iqr_LUKEPrivateKey **private_key)
struct iqr_LUKEPrivateKey_struct iqr_LUKEPrivateKey
Definition: iqr_luke.h:52
IQR_API iqr_retval iqr_LUKECreateParams(const iqr_Context *ctx, iqr_LUKEParams **params)
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:48
IQR_API iqr_retval iqr_LUKEGetInitiatorPublicKey(iqr_LUKEPrivateKey *private_key, const iqr_RNG *rng, uint8_t *initiator_public_key, size_t initiator_public_key_size)
IQR_API iqr_retval iqr_LUKEGetInitiatorSecret(const iqr_LUKEPrivateKey *private_key, const uint8_t *responder_public_key, size_t responder_public_key_size, uint8_t *secret, size_t secret_size)
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:33
IQR_API_UNENFORCED_RETURN iqr_retval iqr_LUKEDestroyParams(iqr_LUKEParams **params)
IQR_API iqr_retval iqr_LUKECreatePrivateKey(const iqr_LUKEParams *params, iqr_LUKEPrivateKey **private_key)
IQR_API iqr_retval iqr_LUKEGetResponderPublicKeyandSecret(const iqr_LUKEParams *params, 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, uint8_t *secret, size_t secret_size)
iqr_retval
Definition: iqr_retval.h:26