diff --git a/.travis.yml b/.travis.yml index ef3b7f8..c5d887c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,10 +26,8 @@ script: - cargo test && cargo test --no-default-features && cargo test --no-default-features --features std && cargo test --no-default-features --features "std i128" && - cargo test --no-default-features --features "std core_hint_black_box" && cargo test --no-default-features --features "std const-generics" && - cargo test --no-default-features --features "std i128 core_hint_black_box" && - cargo test --no-default-features --features "std i128 core_hint_black_box const-generics" + cargo test --no-default-features --features "std i128 const-generics" notifications: slack: diff --git a/Cargo.toml b/Cargo.toml index 64532ed..3bbc305 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,6 +30,7 @@ rand = { version = "0.8" } [features] const-generics = [] +# DEPRECATED: As of 2.5.1, this feature does nothing. core_hint_black_box = [] default = ["std", "i128"] std = [] diff --git a/README.md b/README.md index de77575..0753be3 100644 --- a/README.md +++ b/README.md @@ -26,10 +26,6 @@ prevent this refinement, the crate tries to hide the value of a `Choice`'s inner `u8` by passing it through a volatile read. For more information, see the _About_ section below. -Rust versions from 1.66 or higher support a new best-effort optimization -barrier ([`core::hint::black_box`]). To use the new optimization barrier, -enable the `core_hint_black_box` feature. - Rust versions from 1.51 or higher have const generics support. You may enable `const-generics` feautre to have `subtle` traits implemented for arrays `[T; N]`. @@ -59,11 +55,8 @@ Old versions of the optimization barrier in `impl From for Choice` were based on Tim Maclean's [work on `rust-timing-shield`][rust-timing-shield], which attempts to provide a more comprehensive approach for preventing software side-channels in Rust code. - From version `2.2`, it was based on Diane Hosfelt and Amber Sprenkels' work on -"Secret Types in Rust". Version `2.5` adds the `core_hint_black_box` feature, -which uses the original method through the [`core::hint::black_box`] function -from the Rust standard library. +"Secret Types in Rust". `subtle` is authored by isis agora lovecruft and Henry de Valence. @@ -78,5 +71,4 @@ effort is fundamentally limited. **USE AT YOUR OWN RISK** [docs]: https://docs.rs/subtle -[`core::hint::black_box`]: https://doc.rust-lang.org/core/hint/fn.black_box.html [rust-timing-shield]: https://www.chosenplaintext.ca/open-source/rust-timing-shield/security diff --git a/src/lib.rs b/src/lib.rs index 795eade..63cf19f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -41,10 +41,6 @@ //! inner `u8` by passing it through a volatile read. For more information, see //! the _About_ section below. //! -//! Rust versions from 1.66 or higher support a new best-effort optimization -//! barrier ([`core::hint::black_box`]). To use the new optimization barrier, -//! enable the `core_hint_black_box` feature. -//! //! Rust versions from 1.51 or higher have const generics support. You may enable //! `const-generics` feautre to have `subtle` traits implemented for arrays `[T; N]`. //! @@ -74,11 +70,8 @@ //! based on Tim Maclean's [work on `rust-timing-shield`][rust-timing-shield], //! which attempts to provide a more comprehensive approach for preventing //! software side-channels in Rust code. -//! //! From version `2.2`, it was based on Diane Hosfelt and Amber Sprenkels' work on -//! "Secret Types in Rust". Version `2.5` adds the `core_hint_black_box` feature, -//! which uses the original method through the [`core::hint::black_box`] function -//! from the Rust standard library. +//! "Secret Types in Rust". //! //! `subtle` is authored by isis agora lovecruft and Henry de Valence. //! @@ -93,7 +86,6 @@ //! **USE AT YOUR OWN RISK** //! //! [docs]: https://docs.rs/subtle -//! [`core::hint::black_box`]: https://doc.rust-lang.org/core/hint/fn.black_box.html //! [rust-timing-shield]: https://www.chosenplaintext.ca/open-source/rust-timing-shield/security #[cfg(feature = "std")] @@ -224,7 +216,6 @@ impl Not for Choice { /// Note: Rust's notion of "volatile" is subject to change over time. While this /// code may break in a non-destructive way in the future, “constant-time” code /// is a continually moving target, and this is better than doing nothing. -#[cfg(not(feature = "core_hint_black_box"))] #[inline(never)] fn black_box(input: u8) -> u8 { debug_assert!((input == 0u8) | (input == 1u8)); @@ -242,13 +233,6 @@ fn black_box(input: u8) -> u8 { } } -#[cfg(feature = "core_hint_black_box")] -#[inline(never)] -fn black_box(input: u8) -> u8 { - debug_assert!((input == 0u8) | (input == 1u8)); - core::hint::black_box(input) -} - impl From for Choice { #[inline] fn from(input: u8) -> Choice {