If the RNG seeding callback is missing or returns an error, the RNG instantiate fails.

This commit is contained in:
John Safranek
2021-03-17 12:18:21 -07:00
committed by Daniel Pouzzner
parent c6486d7392
commit 0c6d8cfc22

View File

@ -819,18 +819,19 @@ static int _InitRng(WC_RNG* rng, byte* nonce, word32 nonceSz,
rng->drbg = (struct DRBG*)&rng->drbg_data; rng->drbg = (struct DRBG*)&rng->drbg_data;
#endif #endif
if (ret == 0) { if (ret == 0) {
ret = -1;
#ifdef WC_RNG_SEED_CB #ifdef WC_RNG_SEED_CB
if (seedCb != NULL) { if (seedCb == NULL) {
ret = DRBG_FAILURE;
}
else {
ret = seedCb(seed, seedSz); ret = seedCb(seed, seedSz);
if (ret != 0) {
ret = DRBG_FAILURE;
}
} }
#else
ret = wc_GenerateSeed(&rng->seed, seed, seedSz);
#endif #endif
if (ret < 0) {
ret = wc_GenerateSeed(&rng->seed, seed, seedSz);
}
if (ret == 0) if (ret == 0)
ret = wc_RNG_TestSeed(seed, seedSz); ret = wc_RNG_TestSeed(seed, seedSz);
else { else {