ISARA Radiate™ Quantum-safe Library Version 3.1

Quantum-safe cryptographic primitives and algorithms.

iqr_rng.h
Go to the documentation of this file.
1 
21 #ifndef IQR_RNG_H
22 #define IQR_RNG_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 #include "iqr_api.h"
29 #include "iqr_context.h"
30 #include "iqr_hash.h"
31 #include "iqr_retval.h"
32 
33 #include <stddef.h>
34 #include <stdint.h>
35 
36 // ---------------------------------------------------------------------------------------------------------------------------------
37 // Opaque data type.
38 // ---------------------------------------------------------------------------------------------------------------------------------
39 
41 typedef struct iqr_RNG_struct iqr_RNG;
42 
43 // ---------------------------------------------------------------------------------------------------------------------------------
44 // Data structure.
45 // ---------------------------------------------------------------------------------------------------------------------------------
46 
48 typedef struct {
60  iqr_retval (*initialize)(void **state, const uint8_t *seed, size_t seed_size);
61 
74  iqr_retval (*reseed)(void *state, const uint8_t *entropy, size_t entropy_size);
75 
87  iqr_retval (*getbytes)(void *state, uint8_t *buf, size_t buf_size);
88 
99  iqr_retval (*cleanup)(void **state);
101 
102 // ---------------------------------------------------------------------------------------------------------------------------------
103 // Random Number Generator initialization and validation.
104 // ---------------------------------------------------------------------------------------------------------------------------------
105 
121 IQR_API
122 iqr_retval iqr_RNGCreate(const iqr_Context *ctx, const iqr_RNGCallbacks *cb, iqr_RNG **rng);
123 
139 IQR_API_UNENFORCED_RETURN
141 
142 // ---------------------------------------------------------------------------------------------------------------------------------
143 // HMAC DRBG Random Number Generator.
144 // ---------------------------------------------------------------------------------------------------------------------------------
145 
168 IQR_API
170 
171 // ---------------------------------------------------------------------------------------------------------------------------------
172 // Random Number Generator usage.
173 // ---------------------------------------------------------------------------------------------------------------------------------
174 
193 IQR_API
194 iqr_retval iqr_RNGInitialize(iqr_RNG *rng, const uint8_t *seed, size_t seed_size);
195 
213 IQR_API
214 iqr_retval iqr_RNGReseed(const iqr_RNG *rng, const uint8_t *entropy, size_t entropy_size);
215 
233 IQR_API
234 iqr_retval iqr_RNGGetBytes(const iqr_RNG *rng, uint8_t *buf, size_t buf_size);
235 
236 #ifdef __cplusplus
237 }
238 #endif
239 
240 #endif /* IQR_RNG_H */
IQR_API iqr_retval iqr_RNGReseed(const iqr_RNG *rng, const uint8_t *entropy, size_t entropy_size)
ISARA Radiate Quantum-Safe Library's Context object.
IQR_API iqr_retval iqr_RNGInitialize(iqr_RNG *rng, const uint8_t *seed, size_t seed_size)
IQR_API iqr_retval iqr_RNGCreateHMACDRBG(const iqr_Context *ctx, iqr_HashAlgorithmType hash_algo, iqr_RNG **rng)
iqr_HashAlgorithmType
Definition: iqr_hash.h:46
struct iqr_RNG_struct iqr_RNG
Definition: iqr_rng.h:41
struct iqr_Context_struct iqr_Context
Definition: iqr_context.h:35
ISARA Radiate Quantum-Safe Library's return values.
iqr_retval
Definition: iqr_retval.h:28
ISARA Radiate Quantum-Safe Library's API declarations.
Definition: iqr_rng.h:48
IQR_API iqr_retval iqr_RNGCreate(const iqr_Context *ctx, const iqr_RNGCallbacks *cb, iqr_RNG **rng)
ISARA Radiate Quantum-Safe Library's Hash object API.
IQR_API_UNENFORCED_RETURN iqr_retval iqr_RNGDestroy(iqr_RNG **rng)
IQR_API iqr_retval iqr_RNGGetBytes(const iqr_RNG *rng, uint8_t *buf, size_t buf_size)