rand: add comments about getrandom() fallback
Add some comments so that people know why we are performing a fallback from getrandom() and what that fallback aims to achieve. Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
This commit is contained in:
@@ -66,6 +66,14 @@ mod imp {
|
|||||||
if err == libc::EINTR {
|
if err == libc::EINTR {
|
||||||
continue;
|
continue;
|
||||||
} else if err == libc::EAGAIN {
|
} else if err == libc::EAGAIN {
|
||||||
|
// if getrandom() returns EAGAIN it would have blocked
|
||||||
|
// because the non-blocking pool (urandom) has not
|
||||||
|
// initialized in the kernel yet due to a lack of entropy
|
||||||
|
// the fallback we do here is to avoid blocking applications
|
||||||
|
// which could depend on this call without ever knowing
|
||||||
|
// they do and don't have a work around. The PRNG of
|
||||||
|
// /dev/urandom will still be used but not over a completely
|
||||||
|
// full entropy pool
|
||||||
let reader = File::open("/dev/urandom").expect("Unable to open /dev/urandom");
|
let reader = File::open("/dev/urandom").expect("Unable to open /dev/urandom");
|
||||||
let mut reader_rng = ReaderRng::new(reader);
|
let mut reader_rng = ReaderRng::new(reader);
|
||||||
reader_rng.fill_bytes(& mut v[read..]);
|
reader_rng.fill_bytes(& mut v[read..]);
|
||||||
|
|||||||
Reference in New Issue
Block a user