diff --git a/src/hwrng.rs b/src/hwrng.rs index 0e47a8e7..cbb20510 100644 --- a/src/hwrng.rs +++ b/src/hwrng.rs @@ -2,15 +2,13 @@ use embedded_hal::blocking::rng::Read; #[derive(Debug)] #[non_exhaustive] -pub enum HWRNGError { - Other, -} +pub enum HWRNGError {} /// Represents RIOTs hwrng module. It can be used via /// `embedded_hal`s [`embedded_hal::blocking::rng::Read`] trait. /// /// The main purpose of this module is to generate seeds for PRNGs like -/// [`rand::rngs::StdRng`] or [`crate::random::Random`] (see `prng` module). +/// [`rand::rngs::StdRng`] or [`crate::random::Random`] (see [`crate::prng`] module). /// /// # Security /// As stated in RIOTs hwrng module-description the quality of the generated diff --git a/src/prng.rs b/src/prng.rs index bbf89cc5..6194618d 100644 --- a/src/prng.rs +++ b/src/prng.rs @@ -32,8 +32,8 @@ pub fn riot_prng() -> Random<32> { /// See this modules description regarding quality of the used seeds. pub fn rand_prng() -> StdRng { let mut buffer = [0u8; 32]; - unsafe { - HWRNG.read(&mut buffer).unwrap_unchecked(); - } + + HWRNG.read(&mut buffer).unwrap(); + StdRng::from_seed(buffer) } diff --git a/src/random.rs b/src/random.rs index 5462ac29..3df9bb36 100644 --- a/src/random.rs +++ b/src/random.rs @@ -1,4 +1,4 @@ -use core::{marker::PhantomData, mem::size_of}; +use core::mem::size_of; use embedded_hal::blocking::rng::Read; @@ -27,7 +27,7 @@ use crate::hwrng::HWRNG; #[derive(Debug)] pub struct Random { // Make sure this gets not manually constructed - private: PhantomData<()>, + _private: (), } impl RngCore for Random { @@ -92,9 +92,7 @@ impl RandomSeed { pub fn new_from_hwrng() -> Self { let mut seed = RandomSeed::::default(); - unsafe { - HWRNG.read(&mut seed.buffer()).unwrap_unchecked(); - } + HWRNG.read(seed.buffer()).unwrap(); seed } @@ -129,8 +127,6 @@ impl SeedableRng for Random { (seed.seed.len() / size_of::()) as i32, ); } - Random { - private: PhantomData, - } + Random { _private: () } } }