ISARA Radiate Security Solution Suite Toolkit Edition Version 1.5

Quantum-safe cryptographic primitives and algorithms.

iqr_ecdh.h
Go to the documentation of this file.
1 
16 #ifndef IQR_ECDH_H
17 #define IQR_ECDH_H
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 #include "iqr_api.h"
24 #include "iqr_context.h"
25 #include "iqr_retval.h"
26 #include "iqr_rng.h"
27 
28 #include <stddef.h>
29 #include <stdint.h>
30 
31 // ---------------------------------------------------------------------------------------------------------------------------------
32 // Opaque data types.
33 // ---------------------------------------------------------------------------------------------------------------------------------
34 
36 typedef struct iqr_ECDHParams_struct iqr_ECDHParams;
37 
39 typedef struct iqr_ECDHPrivateKey_struct iqr_ECDHPrivateKey;
40 
42 typedef struct iqr_ECDHCurve_struct iqr_ECDHCurve;
43 
44 // ---------------------------------------------------------------------------------------------------------------------------------
45 // Curves.
46 // ---------------------------------------------------------------------------------------------------------------------------------
47 
52 IQR_EXTERN
54 
56 IQR_EXTERN
58 
60 IQR_EXTERN
62 
66 IQR_EXTERN
68 
69 // ---------------------------------------------------------------------------------------------------------------------------------
70 // Domain parameter functions.
71 // ---------------------------------------------------------------------------------------------------------------------------------
72 
87 IQR_API
88 iqr_retval iqr_ECDHCreateParams(const iqr_Context *ctx, const iqr_ECDHCurve *curve, iqr_ECDHParams **params);
89 
103 IQR_API_UNENFORCED_RETURN
105 
114 IQR_API
115 iqr_retval iqr_ECDHGetPublicKeySize(const iqr_ECDHParams *params, size_t *public_key_size);
116 
125 IQR_API
126 iqr_retval iqr_ECDHGetSecretSize(const iqr_ECDHParams *params, size_t *secret_size);
127 
128 // ---------------------------------------------------------------------------------------------------------------------------------
129 // Private key generation functions.
130 // ---------------------------------------------------------------------------------------------------------------------------------
131 
152 IQR_API
153 iqr_retval iqr_ECDHCreatePrivateKey(const iqr_ECDHParams *params, const iqr_RNG *rng, iqr_ECDHPrivateKey **private_key);
154 
167 IQR_API_UNENFORCED_RETURN
169 
170 // ---------------------------------------------------------------------------------------------------------------------------------
171 // Public key generation function.
172 // ---------------------------------------------------------------------------------------------------------------------------------
173 
189 IQR_API
190 iqr_retval iqr_ECDHGetPublicKey(const iqr_ECDHPrivateKey *private_key, uint8_t *public_key, size_t public_key_size);
191 
192 // ---------------------------------------------------------------------------------------------------------------------------------
193 // Shared secret generation function.
194 // ---------------------------------------------------------------------------------------------------------------------------------
195 
217 IQR_API
218 iqr_retval iqr_ECDHGetSecret(const iqr_ECDHPrivateKey *private_key, const uint8_t *public_key, size_t public_key_size,
219  uint8_t *secret, size_t secret_size);
220 
221 #ifdef __cplusplus
222 }
223 #endif
224 
225 #endif /* IQR_ECDH_H */
IQR_EXTERN const iqr_ECDHCurve IQR_ECDH_NISTP256
Definition: iqr_ecdh.h:54
struct iqr_ECDHParams_struct iqr_ECDHParams
Definition: iqr_ecdh.h:37
struct iqr_ECDHPrivateKey_struct iqr_ECDHPrivateKey
Definition: iqr_ecdh.h:40
ISARA Radiate Security Solution Suite&#39;s Context object.
IQR_API iqr_retval iqr_ECDHGetPublicKeySize(const iqr_ECDHParams *params, size_t *public_key_size)
IQR_EXTERN const iqr_ECDHCurve IQR_ECDH_NISTP384
Definition: iqr_ecdh.h:58
ISARA Radiate Security Solution Suite&#39;s Random Number Generator object APIs.
IQR_EXTERN const iqr_ECDHCurve IQR_ECDH_X25519
Definition: iqr_ecdh.h:68
IQR_API_UNENFORCED_RETURN iqr_retval iqr_ECDHDestroyParams(iqr_ECDHParams **params)
IQR_API iqr_retval iqr_ECDHGetPublicKey(const iqr_ECDHPrivateKey *private_key, uint8_t *public_key, size_t public_key_size)
IQR_API iqr_retval iqr_ECDHCreateParams(const iqr_Context *ctx, const iqr_ECDHCurve *curve, iqr_ECDHParams **params)
ISARA Radiate Security Solution Suite&#39;s return values.
IQR_API iqr_retval iqr_ECDHGetSecret(const iqr_ECDHPrivateKey *private_key, const uint8_t *public_key, size_t public_key_size, uint8_t *secret, size_t secret_size)
IQR_API iqr_retval iqr_ECDHGetSecretSize(const iqr_ECDHParams *params, size_t *secret_size)
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:51
ISARA Radiate Security Solution Suite&#39;s API declarations.
IQR_EXTERN const iqr_ECDHCurve IQR_ECDH_NISTP521
Definition: iqr_ecdh.h:62
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:36
IQR_API_UNENFORCED_RETURN iqr_retval iqr_ECDHDestroyPrivateKey(iqr_ECDHPrivateKey **private_key)
IQR_API iqr_retval iqr_ECDHCreatePrivateKey(const iqr_ECDHParams *params, const iqr_RNG *rng, iqr_ECDHPrivateKey **private_key)
struct iqr_ECDHCurve_struct iqr_ECDHCurve
Definition: iqr_ecdh.h:43
iqr_retval
Definition: iqr_retval.h:29