diff --git a/Cargo.toml b/Cargo.toml index b0c788293..e9ab95e67 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,10 @@ std = [] # The "rayon" feature (defined below as an optional dependency) enables the # `Hasher::update_rayon` method, for multithreaded hashing. However, even if # this feature is enabled, all other APIs remain single-threaded. +rayon = ["dep:rayon", "std"] + +# Implement the zeroize::Zeroize trait for types in this crate. +zeroize = ["dep:zeroize", "arrayvec/zeroize"] # This crate implements traits from the RustCrypto project, exposed here as the # "traits-preview" feature. However, these traits aren't stable, and they're @@ -77,11 +81,9 @@ no_avx2 = [] no_avx512 = [] no_neon = [] -zeroize = ["zeroize_crate", "arrayvec/zeroize"] - [package.metadata.docs.rs] # Document Hasher::update_rayon on docs.rs. -features = ["rayon"] +features = ["rayon", "zeroize"] [dependencies] arrayref = "0.3.5" @@ -90,7 +92,7 @@ constant_time_eq = "0.3.0" rayon = { version = "1.2.1", optional = true } cfg-if = "1.0.0" digest = { version = "0.10.1", features = [ "mac" ], optional = true } -zeroize_crate = { package = "zeroize", version = "1", default-features = false, features = ["zeroize_derive"], optional = true } +zeroize = { version = "1", default-features = false, features = ["zeroize_derive"], optional = true } [dev-dependencies] hex = "0.4.2" diff --git a/src/lib.rs b/src/lib.rs index e2a4d9c7a..52971b727 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -43,6 +43,9 @@ //! the [`Hasher::update_rayon`] method, for multithreaded hashing. However, //! even if this feature is enabled, all other APIs remain single-threaded. //! +//! The `zeroize` feature (disabled by default, but enabled for [docs.rs]) implements +//! [`Zeroize`](https://docs.rs/zeroize/latest/zeroize/trait.Zeroize.html) for this crate's types. +//! //! The NEON implementation is enabled by default for AArch64 but requires the //! `neon` feature for other ARM targets. Not all ARMv7 CPUs support NEON, and //! enabling this feature will produce a binary that's not portable to CPUs @@ -67,10 +70,6 @@ #![cfg_attr(not(feature = "std"), no_std)] -#[cfg(feature = "zeroize")] -extern crate zeroize_crate as zeroize; // Needed because `zeroize::Zeroize` assumes the crate is named `zeroize`. - - #[cfg(test)] mod test;