82 lines
3.1 KiB
Markdown
82 lines
3.1 KiB
Markdown
# getrandom
|
|
|
|
[![Build Status]][GitHub Actions] [![Crate]][crates.io] [![Documentation]][docs.rs] [![Dependency Status]][deps.rs] [![Downloads]][crates.io] [![License]][LICENSE-MIT]
|
|
|
|
[GitHub Actions]: https://github.com/rust-random/getrandom/actions?query=workflow:Tests+branch:master
|
|
[Build Status]: https://github.com/rust-random/getrandom/actions/workflows/tests.yml/badge.svg?branch=master
|
|
[crates.io]: https://crates.io/crates/getrandom
|
|
[Crate]: https://img.shields.io/crates/v/getrandom
|
|
[docs.rs]: https://docs.rs/getrandom
|
|
[Documentation]: https://docs.rs/getrandom/badge.svg
|
|
[deps.rs]: https://deps.rs/repo/github/rust-random/getrandom
|
|
[Dependency Status]: https://deps.rs/repo/github/rust-random/getrandom/status.svg
|
|
[Downloads]: https://img.shields.io/crates/d/getrandom
|
|
[LICENSE-MIT]: https://raw.githubusercontent.com/rust-random/getrandom/master/LICENSE-MIT
|
|
[License]: https://img.shields.io/crates/l/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`].
|
|
|
|
[`rand`]: https://crates.io/crates/rand
|
|
|
|
## Usage
|
|
|
|
Add this to your `Cargo.toml`:
|
|
|
|
```toml
|
|
[dependencies]
|
|
getrandom = "0.2"
|
|
```
|
|
|
|
Then invoke the `getrandom` function:
|
|
|
|
```rust
|
|
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](https://docs.rs/getrandom/latest) and
|
|
[`getrandom::Error` documentation](https://docs.rs/getrandom/latest/getrandom/struct.Error.html).
|
|
|
|
## Minimum Supported Rust Version
|
|
|
|
This crate requires Rust 1.36.0 or later.
|
|
|
|
## Platform Support
|
|
|
|
This crate generally supports the same operating system and platform versions that the Rust standard library does.
|
|
Additional targets may be supported using pluggable custom implementations.
|
|
|
|
This means that as Rust drops support for old versions of operating systems (such as old Linux kernel versions, Android API levels, etc)
|
|
in stable releases, `getrandom` may create new patch releases (`0.N.x`) that remove support for outdated platform versions.
|
|
|
|
## License
|
|
|
|
The `getrandom` library is distributed under either of
|
|
|
|
* [Apache License, Version 2.0][LICENSE-APACHE]
|
|
* [MIT license][LICENSE-MIT]
|
|
|
|
at your option.
|
|
|
|
### Contribution
|
|
|
|
Unless you explicitly state otherwise, any contribution intentionally submitted
|
|
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
|
|
dual licensed as above, without any additional terms or conditions.
|
|
|
|
[LICENSE-APACHE]: https://github.com/rust-random/getrandom/blob/master/LICENSE-APACHE
|
|
[LICENSE-MIT]: https://github.com/rust-random/getrandom/blob/master/LICENSE-MIT
|