ISARA Quantum Resistant Toolkit  Version 1.1
Quantum resistant cryptographic primitives and algorithms.
iqr_newhope.h
Go to the documentation of this file.
1 
24 #ifndef IQR_NEWHOPE_H
25 #define IQR_NEWHOPE_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 // ---------------------------------------------------------------------------------------------------------------------------------
37 // Constants.
38 // ---------------------------------------------------------------------------------------------------------------------------------
39 
41 #define IQR_NEWHOPE_SECRET_SIZE 32
42 
44 #define IQR_NEWHOPE_INITIATOR_KEY_SIZE 1824
45 #define IQR_NEWHOPE_RESPONDER_KEY_SIZE 2048
46 
47 // ---------------------------------------------------------------------------------------------------------------------------------
48 // Opaque data types.
49 // ---------------------------------------------------------------------------------------------------------------------------------
50 
52 typedef struct iqr_NewHopeParams_struct iqr_NewHopeParams;
53 
55 typedef struct iqr_NewHopePrivateKey_struct iqr_NewHopePrivateKey;
56 
58 typedef struct iqr_NewHopeVariant_struct iqr_NewHopeVariant;
59 
60 // ---------------------------------------------------------------------------------------------------------------------------------
61 // NewHope variants.
62 // ---------------------------------------------------------------------------------------------------------------------------------
63 
65 IQR_EXTERN
67 
69 IQR_EXTERN
71 
72 // ---------------------------------------------------------------------------------------------------------------------------------
73 // Domain parameter functions.
74 // ---------------------------------------------------------------------------------------------------------------------------------
75 
94 IQR_API
96 
106 IQR_API_UNENFORCED_RETURN
108 
109 // ---------------------------------------------------------------------------------------------------------------------------------
110 // Private key generation functions.
111 // ---------------------------------------------------------------------------------------------------------------------------------
112 
129 IQR_API
131 
142 IQR_API_UNENFORCED_RETURN
144 
145 // ---------------------------------------------------------------------------------------------------------------------------------
146 // Shared secret generation functions.
147 // ---------------------------------------------------------------------------------------------------------------------------------
148 
171 IQR_API
172 iqr_retval iqr_NewHopeGetInitiatorPublicKey(iqr_NewHopePrivateKey *private_key, const iqr_RNG *rng, uint8_t *initiator_public_key,
173  size_t initiator_public_key_size);
174 
203 IQR_API
204 iqr_retval iqr_NewHopeGetInitiatorSecret(const iqr_NewHopePrivateKey *private_key, const uint8_t *responder_public_key,
205  size_t responder_public_key_size, uint8_t *secret, size_t secret_size);
206 
239 IQR_API
241  const uint8_t *initiator_public_key, size_t initiator_public_key_size, uint8_t *responder_public_key,
242  size_t responder_public_key_size, uint8_t *secret, size_t secret_size);
243 
244 #ifdef __cplusplus
245 }
246 #endif
247 
248 #endif /* IQR_NEWHOPE_H */
struct iqr_NewHopePrivateKey_struct iqr_NewHopePrivateKey
Definition: iqr_newhope.h:55
IQR_API iqr_retval iqr_NewHopeCreatePrivateKey(const iqr_NewHopeParams *params, iqr_NewHopePrivateKey **private_key)
IQR_API iqr_retval iqr_NewHopeCreateParams(const iqr_Context *ctx, const iqr_NewHopeVariant *variant, iqr_NewHopeParams **params)
IQR_EXTERN const iqr_NewHopeVariant IQR_NEWHOPE_REFERENCE
Definition: iqr_newhope.h:66
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:48
struct iqr_NewHopeParams_struct iqr_NewHopeParams
Definition: iqr_newhope.h:52
IQR_EXTERN const iqr_NewHopeVariant IQR_NEWHOPE_BORINGSSL
Definition: iqr_newhope.h:70
IQR_API iqr_retval iqr_NewHopeGetInitiatorSecret(const iqr_NewHopePrivateKey *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_NewHopeDestroyParams(iqr_NewHopeParams **params)
struct iqr_NewHopeVariant_struct iqr_NewHopeVariant
Definition: iqr_newhope.h:58
IQR_API iqr_retval iqr_NewHopeGetResponderPublicKeyandSecret(const iqr_NewHopeParams *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_API iqr_retval iqr_NewHopeGetInitiatorPublicKey(iqr_NewHopePrivateKey *private_key, const iqr_RNG *rng, uint8_t *initiator_public_key, size_t initiator_public_key_size)
IQR_API_UNENFORCED_RETURN iqr_retval iqr_NewHopeDestroyPrivateKey(iqr_NewHopePrivateKey **private_key)
iqr_retval
Definition: iqr_retval.h:26