This supersedes #341, and makes the following changes - All the code for implementing `__getrandom_custom` is now in an **named** `const` block (unnamed consts require Rust 1.37) - I found this approch [here](https://internals.rust-lang.org/t/anonymous-modules/15441) - Nothing inside the block can be referenced outside of it - `__getrandom_custom` is marked `unsafe` - It can't be accessed externally, but is "logically" unsafe as it dereferences raw pointers - The type of the function is moved to a typedef, so we can check that the defined type matches that of `getrandom:getrandom`. - Use `::core::result::Result` instead of `Result` - Similar to use use of `from_raw_parts_mut` this prevents compilation errors if `Result` is redefined. Signed-off-by: Joe Richey <joerichey@google.com>
getrandom
A Rust library for retrieving random data from (operating) system sources. It is
assumed that the system always provides high-quality cryptographically secure random
data, ideally backed by hardware entropy sources. This crate derives its name
from Linux's getrandom function, but is cross-platform, roughly supporting
the same set of platforms as Rust's std lib.
This is a low-level API. Most users should prefer using high-level random-number
library like rand.
Usage
Add this to your Cargo.toml:
[dependencies]
getrandom = "0.2"
Then invoke the getrandom function:
fn get_random_buf() -> Result<[u8; 32], getrandom::Error> {
let mut buf = [0u8; 32];
getrandom::getrandom(&mut buf)?;
Ok(buf)
}
For more information about supported targets, entropy sources, no_std targets,
crate features, WASM support and Custom RNGs see the
getrandom documentation and
getrandom::Error documentation.
Minimum Supported Rust Version
This crate requires Rust 1.36.0 or later.
License
The getrandom library is distributed under either of
at your option.