diff options
author | fanquake <fanquake@gmail.com> | 2019-10-26 08:15:43 -0400 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2019-11-18 08:48:39 -0500 |
commit | 5624ab0b4f844dc7c17aeb1b009f002c33c38fb3 (patch) | |
tree | e3c2bb4b0d2dcfafdbf52d2e6dc908f2fd7c9850 | |
parent | 6fde676f647e3b43cf0f5b242a00896f361ea385 (diff) |
random: stop feeding RNG output back into OpenSSL
On the ::SLOW or ::SLEEP paths, we would feed our RNG output back into
OpenSSL using RAND_add. This commit removes that functionality.
RAND_add(): https://www.openssl.org/docs/manmaster/man3/RAND_add.html
RAND_add() mixes the num bytes at buf into the internal state of the
random generator. This function will not normally be needed, as
mentioned above. The randomness argument is an estimate of how much
randomness is contained in buf, in bytes, and should be a number
between zero and num.
-rw-r--r-- | src/random.cpp | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/src/random.cpp b/src/random.cpp index 3e6398f7b4..8bdf45ef67 100644 --- a/src/random.cpp +++ b/src/random.cpp @@ -586,14 +586,6 @@ static void ProcRand(unsigned char* out, int num, RNGLevel level) SeedStartup(startup_hasher, rng); rng.MixExtract(out, num, std::move(startup_hasher), true); } - - // For anything but the 'fast' level, feed the resulting RNG output (after an additional hashing step) back into OpenSSL. - if (level != RNGLevel::FAST) { - unsigned char buf[64]; - CSHA512().Write(out, num).Finalize(buf); - RAND_add(buf, sizeof(buf), num); - memory_cleanse(buf, 64); - } } void GetRandBytes(unsigned char* buf, int num) noexcept { ProcRand(buf, num, RNGLevel::FAST); } |