| Crates.io | vitaminc-random |
| lib.rs | vitaminc-random |
| version | 0.1.0-pre4 |
| created_at | 2024-09-17 01:38:52.068898+00 |
| updated_at | 2025-11-23 23:27:37.385778+00 |
| description | Secure Random Number Generation. Part of the Vitamin-C cryptographic suite. |
| homepage | https://cipherstash.com |
| repository | https://github.com/cipherstash/vitaminc |
| max_upload_size | |
| id | 1377068 |
| size | 26,338 |
A carefully designed random number generator that is safe to use for cryptographic purposes.
This crate is part of the Vitamin C framework to make cryptography code healthy.
Types implementing the [Generatable] trait can be generated randomly using [SafeRand].
use vitaminc_random::{Generatable, SafeRand, SeedableRng};
let mut rng = SafeRand::from_entropy();
let x: [u8; 32] = Generatable::random(&mut rng).unwrap();
You can implement Generatable for your own types using the derive macro:
use vitaminc_random::{Generatable, SafeRand, SeedableRng};
#[derive(Generatable)]
struct MyStruct {
id: u32,
key: [u8; 16],
}
// Create a random number generator and generate an instance of MyStruct.
let mut rng = vitaminc_random::SafeRand::from_entropy();
let instance: MyStruct = Generatable::random(&mut rng).unwrap();
println!("Generated id: {}", instance.id);
The BoundedRng trait provides a way to generate random numbers within a specific range.
use vitaminc_random::{BoundedRng, SafeRand, SeedableRng};
let mut rng = SafeRand::from_entropy();
let value: u32 = rng.next_bounded(10);
assert!(value <= 10);
Or using a Protected value:
use vitaminc_protected::{Controlled, Protected};
use vitaminc_random::{BoundedRng, SafeRand, SeedableRng};
let mut rng = SafeRand::from_entropy();
let value: Protected<u32> = rng.next_bounded(Protected::new(10));
assert!(value.risky_unwrap() <= 10);
Vitamin C is brought to you by the team at CipherStash.
License: MIT