[][src]Struct sgx_rand::chacha::ChaChaRng

pub struct ChaChaRng { /* fields omitted */ }

A random number generator that uses the ChaCha20 algorithm [1].

The ChaCha algorithm is widely accepted as suitable for cryptographic purposes, but this implementation has not been verified as such. Prefer a generator like OsRng that defers to the operating system for cases that need high security.

[1]: D. J. Bernstein, ChaCha, a variant of Salsa20


impl ChaChaRng[src]

pub fn new_unseeded() -> ChaChaRng[src]

Create an ChaCha random number generator using the default fixed key of 8 zero words.


use sgx_rand::{Rng, ChaChaRng};

let mut ra = ChaChaRng::new_unseeded();
println!("{:?}", ra.next_u32());
println!("{:?}", ra.next_u32());

Since this equivalent to a RNG with a fixed seed, repeated executions of an unseeded RNG will produce the same result. This code sample will consistently produce:

  • 2917185654
  • 2419978656

pub fn set_counter(&mut self, counter_low: u64, counter_high: u64)[src]

Sets the internal 128-bit ChaCha counter to a user-provided value. This permits jumping arbitrarily ahead (or backwards) in the pseudorandom stream.

Since the nonce words are used to extend the counter to 128 bits, users wishing to obtain the conventional ChaCha pseudorandom stream associated with a particular nonce can call this function with arguments 0, desired_nonce.


use sgx_rand::{Rng, ChaChaRng};

let mut ra = ChaChaRng::new_unseeded();
ra.set_counter(0u64, 1234567890u64);
println!("{:?}", ra.next_u32());
println!("{:?}", ra.next_u32());

Trait Implementations

impl Clone for ChaChaRng[src]

impl Copy for ChaChaRng[src]

impl Debug for ChaChaRng[src]

impl Rand for ChaChaRng[src]

impl Rng for ChaChaRng[src]

impl<'a> SeedableRng<&'a [u32]> for ChaChaRng[src]

fn from_seed(seed: &'a [u32]) -> ChaChaRng[src]

Create a ChaCha generator from a seed, obtained from a variable-length u32 array. Only up to 8 words are used; if less than 8 words are used, the remaining are set to zero.

Auto Trait Implementations

impl RefUnwindSafe for ChaChaRng

impl Send for ChaChaRng

impl Sync for ChaChaRng

impl Unpin for ChaChaRng

impl UnwindSafe for ChaChaRng

Blanket Implementations

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

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

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

impl<T> From<T> for T[src]

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

impl<T> ToOwned for T where
    T: Clone

type Owned = T

The resulting type after obtaining ownership.

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

type Error = Infallible

The type returned in the event of a conversion error.

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.