Struct Trng

Source
pub struct Trng<'d> {
    pub rng: Rng,
    /* private fields */
}
Available on crate feature unstable only.
Expand description

True Random Number Generator (TRNG) driver

The Trng struct represents a true random number generator that combines the randomness from the hardware RNG and an ADC. This struct provides methods to generate random numbers and fill buffers with random bytes. Due to pulling the entropy source from the ADC, it uses the associated registers, so to use TRNG we need to “occupy” the ADC peripheral.

Fields§

§rng: Rng

The hardware random number generator instance.

Implementations§

Source§

impl<'d> Trng<'d>

Source

pub fn new( rng: impl Peripheral<P = RNG>, adc: impl Peripheral<P = ADC1> + 'd, ) -> Self

Creates a new True Random Number Generator (TRNG) instance.

§Arguments
  • rng - A peripheral instance implementing the RNG trait.
  • adc - A mutable reference to an Adc instance.
§Returns

Returns a new Trng instance.

Source

pub fn random(&mut self) -> u32

Reads currently available u32 integer from TRNG

Source

pub fn read(&mut self, buffer: &mut [u8])

Fills the provided buffer with random bytes.

Source

pub fn downgrade(self) -> Rng

Downgrades the Trng instance to a Rng instance and releases the ADC1.

Trait Implementations§

Source§

impl Drop for Trng<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Peripheral for Trng<'_>

Source§

type P = Trng<'_>

Peripheral singleton type
Source§

unsafe fn clone_unchecked(&self) -> Self::P

Unsafely clone (duplicate) a peripheral singleton. Read more
Source§

fn into_ref<'a>(self) -> PeripheralRef<'a, Self::P>
where Self: 'a,

Convert a value into a PeripheralRef. Read more
Source§

fn map_into<U>(self) -> U
where Self::P: Into<U>, U: Peripheral<P = U>,

Map the peripheral using Into. Read more
Source§

fn map<U>(self, transform: impl FnOnce(Self::P) -> U) -> U
where U: Peripheral<P = U>,

Map the peripheral using Into. Read more
Source§

impl RngCore for Trng<'_>

Implementing RngCore trait from rand_core for Trng structure

Source§

fn next_u32(&mut self) -> u32

Return the next random u32. Read more
Source§

fn next_u64(&mut self) -> u64

Return the next random u64. Read more
Source§

fn fill_bytes(&mut self, dest: &mut [u8])

Fill dest with random data. Read more
Source§

fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error>

Fill dest entirely with random data. Read more
Source§

impl CryptoRng for Trng<'_>

Implementing a CryptoRng marker trait that indicates that the generator is cryptographically secure.

Auto Trait Implementations§

§

impl<'d> Freeze for Trng<'d>

§

impl<'d> RefUnwindSafe for Trng<'d>

§

impl<'d> Send for Trng<'d>

§

impl<'d> Sync for Trng<'d>

§

impl<'d> Unpin for Trng<'d>

§

impl<'d> !UnwindSafe for Trng<'d>

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CryptoRngCore for T
where T: CryptoRng + RngCore,

Source§

fn as_rngcore(&mut self) -> &mut dyn RngCore

Upcast to an RngCore trait object.
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.