Skip to main content

TrngSource

Struct TrngSource 

Source
pub struct TrngSource<'d> { /* private fields */ }
Available on crate feature unstable only.
Expand description

Ensures random numbers are 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.

Implementations§

Source§

impl<'d> TrngSource<'d>

Source

pub fn new(_rng: RNG<'d>, _adc: ADC1<'d>) -> Self

Enables the SAR ADC entropy source.

§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

pub unsafe fn increase_entropy_source_counter()

Increases the internal entropy source counter.

§Panics

Panics if the internal counter overflows.

§Safety

Must only be called after a new entropy source has been enabled.

§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

pub fn decrease_entropy_source_counter(_private: Internal)

Decreases the internal entropy source counter.

Should only be called before disabling an entropy source (such as the radio).

Should only be called as many times as TrngSource::increase_entropy_source_counter was called.

§Panics

Panics if the internal counter underflows. Dropping the TrngSource panics if this method is called more times than TrngSource::increase_entropy_source_counter.

§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

pub fn is_enabled() -> bool

Returns whether the TRNG is currently enabled.

Entropy sources can be disabled at any time.

§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

pub fn try_disable(self) -> Result<(), Self>

Attempts to disable the TRNG.

§Panics

Panics if the TRNG is not enabled (i.e. it has been disabled by calling TrngSource::decrease_entropy_source_counter incorrectly).

§Errors

TrngSource when there are TRNG users.

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

Trait Implementations§

Source§

impl Drop for TrngSource<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

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

§

impl<'d> Freeze for TrngSource<'d>

§

impl<'d> RefUnwindSafe for TrngSource<'d>

§

impl<'d> Send for TrngSource<'d>

§

impl<'d> Sync for TrngSource<'d>

§

impl<'d> Unpin for TrngSource<'d>

§

impl<'d> UnsafeUnpin for TrngSource<'d>

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

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

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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

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

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

Performs the conversion.