use super::emergency_system_time_entropy;
use std::fs::File;
use std::io::{BufReader, Read};
pub fn entropy_from_system(amt: usize) -> Vec<u8> {
match File::open("/dev/urandom") {
Ok(fd) => {
let mut entropy: Vec<u8> = vec![42; amt];
let mut reader = BufReader::new(fd);
match reader.read_exact(&mut entropy[..amt]) {
Ok(_) => entropy,
Err(_) => emergency_system_time_entropy(amt),
}
}
Err(_) => {
match File::open("/dev/random") {
Ok(fd) => {
let mut entropy: Vec<u8> = vec![42; amt];
let mut reader = BufReader::new(fd);
match reader.read_exact(&mut entropy[..amt]) {
Ok(_) => entropy,
Err(_) => emergency_system_time_entropy(amt),
}
}
Err(_) => {
emergency_system_time_entropy(amt)
}
}
}
}
}