diff options
Diffstat (limited to 'vendor/zeroize/README.md')
-rw-r--r-- | vendor/zeroize/README.md | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/vendor/zeroize/README.md b/vendor/zeroize/README.md new file mode 100644 index 0000000..03b93ab --- /dev/null +++ b/vendor/zeroize/README.md @@ -0,0 +1,80 @@ +# [RustCrypto]: zeroize + +[![Crate][crate-image]][crate-link] +[![Docs][docs-image]][docs-link] +![Apache 2.0/MIT Licensed][license-image] +![MSRV][rustc-image] +[![Build Status][build-image]][build-link] + +Securely zero memory (a.k.a. [zeroize]) while avoiding compiler optimizations. + +This crate implements a portable approach to securely zeroing memory using +techniques which guarantee they won't be "optimized away" by the compiler. + +The [`Zeroize` trait] is the crate's primary API. + +[Documentation] + +## About + +[Zeroing memory securely is hard] - compilers optimize for performance, and +in doing so they love to "optimize away" unnecessary zeroing calls. There are +many documented "tricks" to attempt to avoid these optimizations and ensure +that a zeroing routine is performed reliably. + +This crate isn't about tricks: it uses [core::ptr::write_volatile] +and [core::sync::atomic] memory fences to provide easy-to-use, portable +zeroing behavior which works on all of Rust's core number types and slices +thereof, implemented in pure Rust with no usage of FFI or assembly. + +- No insecure fallbacks! +- No dependencies! +- No FFI or inline assembly! **WASM friendly** (and tested)! +- `#![no_std]` i.e. **embedded-friendly**! +- No functionality besides securely zeroing memory! +- (Optional) Custom derive support for zeroing complex structures + +## Minimum Supported Rust Version + +Rust **1.60** or newer. + +In the future, we reserve the right to change MSRV (i.e. MSRV is out-of-scope +for this crate's SemVer guarantees), however when we do it will be accompanied by +a minor version bump. + +## License + +Licensed under either of: + +* [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) +* [MIT license](http://opensource.org/licenses/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. + +[//]: # (badges) + +[crate-image]: https://img.shields.io/crates/v/zeroize.svg +[crate-link]: https://crates.io/crates/zeroize +[docs-image]: https://docs.rs/zeroize/badge.svg +[docs-link]: https://docs.rs/zeroize/ +[license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg +[rustc-image]: https://img.shields.io/badge/rustc-1.60+-blue.svg +[build-image]: https://github.com/RustCrypto/utils/actions/workflows/zeroize.yml/badge.svg +[build-link]: https://github.com/RustCrypto/utils/actions/workflows/zeroize.yml + +[//]: # (general links) + +[RustCrypto]: https://github.com/RustCrypto +[zeroize]: https://en.wikipedia.org/wiki/Zeroisation +[`Zeroize` trait]: https://docs.rs/zeroize/latest/zeroize/trait.Zeroize.html +[Documentation]: https://docs.rs/zeroize/ +[Zeroing memory securely is hard]: http://www.daemonology.net/blog/2014-09-04-how-to-zero-a-buffer.html +[core::ptr::write_volatile]: https://doc.rust-lang.org/core/ptr/fn.write_volatile.html +[core::sync::atomic]: https://doc.rust-lang.org/stable/core/sync/atomic/index.html +[good cryptographic hygiene]: https://github.com/veorq/cryptocoding#clean-memory-of-secret-data |