ISARA Radiate Security Solution Suite Toolkit Edition Version 1.5

Quantum-safe cryptographic primitives and algorithms.

iqr_rng.h
Go to the documentation of this file.
1 
20 #ifndef IQR_RNG_H
21 #define IQR_RNG_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #include "iqr_api.h"
28 #include "iqr_context.h"
29 #include "iqr_hash.h"
30 #include "iqr_retval.h"
31 
32 #include <stddef.h>
33 #include <stdint.h>
34 
35 // ---------------------------------------------------------------------------------------------------------------------------------
36 // Constants.
37 // ---------------------------------------------------------------------------------------------------------------------------------
38 
40 #define IQR_SHAKE_128_SIZE 16
41 
43 #define IQR_SHAKE_256_SIZE 32
44 
45 // ---------------------------------------------------------------------------------------------------------------------------------
46 // Opaque data type.
47 // ---------------------------------------------------------------------------------------------------------------------------------
48 
50 typedef struct iqr_RNG_struct iqr_RNG;
51 
52 // ---------------------------------------------------------------------------------------------------------------------------------
53 // Data structure.
54 // ---------------------------------------------------------------------------------------------------------------------------------
55 
57 typedef struct {
68  iqr_retval (*initialize)(void **state, const uint8_t *seed, size_t seed_size);
69 
81  iqr_retval (*reseed)(void *state, const uint8_t *entropy, size_t entropy_size);
82 
93  iqr_retval (*getbytes)(void *state, uint8_t *buf, size_t buf_size);
94 
104  iqr_retval (*cleanup)(void **state);
106 
107 // ---------------------------------------------------------------------------------------------------------------------------------
108 // Random Number Generator initialization and validation.
109 // ---------------------------------------------------------------------------------------------------------------------------------
110 
127 IQR_API
128 iqr_retval iqr_RNGCreate(const iqr_Context *ctx, const iqr_RNGCallbacks *cb, iqr_RNG **rng);
129 
145 IQR_API_UNENFORCED_RETURN
147 
148 // ---------------------------------------------------------------------------------------------------------------------------------
149 // HMAC DRBG Random Number Generator.
150 // ---------------------------------------------------------------------------------------------------------------------------------
151 
169 IQR_API
171 
172 // ---------------------------------------------------------------------------------------------------------------------------------
173 // SHAKE Random Number Generator.
174 // ---------------------------------------------------------------------------------------------------------------------------------
175 
191 IQR_API
192 iqr_retval iqr_RNGCreateSHAKE(const iqr_Context *ctx, size_t shake_size, iqr_RNG **rng);
193 
194 // ---------------------------------------------------------------------------------------------------------------------------------
195 // Random Number Generator usage.
196 // ---------------------------------------------------------------------------------------------------------------------------------
197 
223 IQR_API
224 iqr_retval iqr_RNGInitialize(iqr_RNG *rng, const uint8_t *buf, size_t buf_size);
225 
246 IQR_API
247 iqr_retval iqr_RNGReseed(const iqr_RNG *rng, const uint8_t *buf, size_t buf_size);
248 
266 IQR_API
267 iqr_retval iqr_RNGGetBytes(const iqr_RNG *rng, uint8_t *buf, size_t buf_size);
268 
269 #ifdef __cplusplus
270 }
271 #endif
272 
273 #endif /* IQR_RNG_H */
Definition: iqr_rng.h:58
ISARA Radiate Security Solution Suite&#39;s Hash object API.
IQR_API_UNENFORCED_RETURN iqr_retval iqr_RNGDestroy(iqr_RNG **rng)
IQR_API iqr_retval iqr_RNGReseed(const iqr_RNG *rng, const uint8_t *buf, size_t buf_size)
ISARA Radiate Security Solution Suite&#39;s Context object.
IQR_API iqr_retval iqr_RNGCreateHMACDRBG(const iqr_Context *ctx, iqr_HashAlgorithmType hash_algo, iqr_RNG **rng)
iqr_HashAlgorithmType
Definition: iqr_hash.h:53
ISARA Radiate Security Solution Suite&#39;s return values.
IQR_API iqr_retval iqr_RNGCreateSHAKE(const iqr_Context *ctx, size_t shake_size, iqr_RNG **rng)
IQR_API iqr_retval iqr_RNGInitialize(iqr_RNG *rng, const uint8_t *buf, size_t buf_size)
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:51
ISARA Radiate Security Solution Suite&#39;s API declarations.
IQR_API iqr_retval iqr_RNGCreate(const iqr_Context *ctx, const iqr_RNGCallbacks *cb, iqr_RNG **rng)
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:36
IQR_API iqr_retval iqr_RNGGetBytes(const iqr_RNG *rng, uint8_t *buf, size_t buf_size)
iqr_retval
Definition: iqr_retval.h:29