return 0;
}
- if (drbg->pool != NULL) {
- pool = drbg->pool;
+ if (drbg->seed_pool != NULL) {
+ pool = drbg->seed_pool;
pool->entropy_requested = entropy;
} else {
pool = rand_pool_new(entropy, min_len, max_len);
}
err:
- if (drbg->pool == NULL)
+ if (drbg->seed_pool == NULL)
rand_pool_free(pool);
return ret;
}
void rand_drbg_cleanup_entropy(RAND_DRBG *drbg,
unsigned char *out, size_t outlen)
{
- if (drbg->pool == NULL)
+ if (drbg->seed_pool == NULL)
OPENSSL_secure_clear_free(out, outlen);
}
*/
void RAND_keep_random_devices_open(int keep)
{
- rand_pool_keep_random_devices_open(keep);
+ if (RUN_ONCE(&rand_init, do_rand_init))
+ rand_pool_keep_random_devices_open(keep);
}
/*