25#ifndef BR_BEARSSL_RAND_H__ 
   26#define BR_BEARSSL_RAND_H__ 
  161        void (*
init)(
const br_prng_class **ctx, 
const void *params,
 
  162                const void *seed, 
size_t seed_len);
 
  174        void (*
generate)(
const br_prng_class **ctx, 
void *out, 
size_t len);
 
  186        void (*
update)(
const br_prng_class **ctx,
 
  187                const void *seed, 
size_t seed_len);
 
 
  203#ifndef BR_DOXYGEN_IGNORE 
  206        const br_hash_class *digest_class;
 
 
  238        const br_hash_class *digest_class, 
const void *seed, 
size_t seed_len);
 
  267        const void *seed, 
size_t seed_len);
 
  279static inline const br_hash_class *
 
  282        return ctx->digest_class;
 
 
  333#ifndef BR_DOXYGEN_IGNORE 
 
  363        const br_block_ctr_class *aesctr, 
const void *seed, 
size_t seed_len);
 
  376        void *out, 
size_t len);
 
  391        const void *seed, 
size_t seed_len);
 
const br_prng_class br_hmac_drbg_vtable
Statically allocated, constant vtable for HMAC_DRBG.
void br_aesctr_drbg_generate(br_aesctr_drbg_context *ctx, void *out, size_t len)
Random bytes generation with AESCTR_DRBG.
void br_hmac_drbg_update(br_hmac_drbg_context *ctx, const void *seed, size_t seed_len)
Inject additional seed bytes in HMAC_DRBG.
void br_hmac_drbg_generate(br_hmac_drbg_context *ctx, void *out, size_t len)
Random bytes generation with HMAC_DRBG.
void br_hmac_drbg_init(br_hmac_drbg_context *ctx, const br_hash_class *digest_class, const void *seed, size_t seed_len)
HMAC_DRBG initialisation.
const br_prng_class br_aesctr_drbg_vtable
Statically allocated, constant vtable for AESCTR_DRBG.
br_prng_seeder br_prng_seeder_system(const char **name)
Get a seeder backed by the operating system or hardware.
static const br_hash_class * br_hmac_drbg_get_hash(const br_hmac_drbg_context *ctx)
Get the hash function implementation used by a given instance of HMAC_DRBG.
Definition bearssl_rand.h:280
int(* br_prng_seeder)(const br_prng_class **ctx)
Type for a provider of entropy seeds.
Definition bearssl_rand.h:301
void br_aesctr_drbg_update(br_aesctr_drbg_context *ctx, const void *seed, size_t seed_len)
Inject additional seed bytes in AESCTR_DRBG.
void br_aesctr_drbg_init(br_aesctr_drbg_context *ctx, const br_block_ctr_class *aesctr, const void *seed, size_t seed_len)
AESCTR_DRBG initialisation.
Context for AESCTR_DRBG.
Definition bearssl_rand.h:326
const br_prng_class * vtable
Pointer to the vtable.
Definition bearssl_rand.h:332
Context for HMAC_DRBG.
Definition bearssl_rand.h:196
const br_prng_class * vtable
Pointer to the vtable.
Definition bearssl_rand.h:202
Class type for PRNG implementations.
Definition bearssl_rand.h:135
void(* init)(const br_prng_class **ctx, const void *params, const void *seed, size_t seed_len)
Initialisation method.
Definition bearssl_rand.h:161
size_t context_size
Size (in bytes) of the context structure appropriate for running this PRNG.
Definition bearssl_rand.h:140
void(* update)(const br_prng_class **ctx, const void *seed, size_t seed_len)
Inject additional seed bytes.
Definition bearssl_rand.h:186
void(* generate)(const br_prng_class **ctx, void *out, size_t len)
Random bytes generation.
Definition bearssl_rand.h:174
Aggregate structure large enough to be used as context for subkeys (CTR encryption and decryption) fo...
Definition bearssl_block.h:2186