DynamicRng

Struct DynamicRng 

Source
pub struct DynamicRng(/* private fields */);
Expand description

Heap-allocated cryptographically secure random bytes with encoding methods.

This is a newtype over Dynamic<Vec<u8>> for semantic clarity. Like FixedRng, guarantees freshness via RNG construction.

Requires the “rand” feature.

Supports direct encoding to Hex, Base64, Bech32, and Bech32m via convenience methods.

§Examples

use secure_gate::random::DynamicRng;
let random = DynamicRng::generate(64);
assert_eq!(random.len(), 64);

Implementations§

Source§

impl DynamicRng

Source

pub fn generate(len: usize) -> Self

Generate fresh random bytes of the specified length.

Panics if the RNG fails.

§Example
use secure_gate::random::DynamicRng;
let random = DynamicRng::generate(128);
Source

pub fn try_generate(len: usize) -> Result<Self, OsError>

Try to generate fresh random bytes of the specified length.

Returns an error if the RNG fails.

§Example
use secure_gate::random::DynamicRng;
let random: Result<DynamicRng, rand::rand_core::OsError> = DynamicRng::try_generate(64);
assert!(random.is_ok());
Source

pub fn expose_secret(&self) -> &[u8]

Expose the random bytes for read-only access.

Source

pub const fn len(&self) -> usize

Returns the length in bytes.

Source

pub const fn is_empty(&self) -> bool

Returns true if empty.

Source

pub fn into_inner(self) -> Dynamic<Vec<u8>>

Consume and return the inner Dynamic<Vec<u8>>.

Trait Implementations§

Source§

impl Debug for DynamicRng

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<DynamicRng> for Dynamic<Vec<u8>>

Source§

fn from(rng: DynamicRng) -> Self

Convert a DynamicRng to Dynamic, transferring ownership.

This preserves all security guarantees. The DynamicRng type ensures the value came from secure RNG, and this conversion transfers that value to Dynamic without exposing bytes.

§Example
use secure_gate::{Dynamic, random::DynamicRng};
let random: Dynamic<Vec<u8>> = DynamicRng::generate(64).into();

Auto Trait Implementations§

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

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

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V