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: RNG<'_>, adc: 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 RngCore for Trng<'_>

Implementing RngCore trait from rand_core for Trng structure

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

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 RngCore for Trng<'_>

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

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§

impl CryptoRng for Trng<'_>

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

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

Source§

impl CryptoRng for Trng<'_>

§Stability

This API is marked as unstable and is only available when the unstable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.

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.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

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.
Source§

impl<R> TryRngCore for R
where R: RngCore + ?Sized,

Source§

type Error = Infallible

The type returned in the event of a RNG error.
Source§

fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>

Return the next random u32.
Source§

fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>

Return the next random u64.
Source§

fn try_fill_bytes( &mut self, dst: &mut [u8], ) -> Result<(), <R as TryRngCore>::Error>

Fill dest entirely with random data.
Source§

fn unwrap_err(self) -> UnwrapErr<Self>
where Self: Sized,

Wrap RNG with the UnwrapErr wrapper.
Source§

fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>

Wrap RNG with the UnwrapMut wrapper.
Source§

impl<R> TryCryptoRng for R
where R: CryptoRng + ?Sized,