|
41 | 41 | //! inner `u8` by passing it through a volatile read. For more information, see
|
42 | 42 | //! the _About_ section below.
|
43 | 43 | //!
|
| 44 | +//! Rust versions from 1.66 or higher support a new best-effort optimization |
| 45 | +//! barrier ([`core::hint::black_box`]). To use the new optimization barrier, |
| 46 | +//! enable the `core_hint_black_box` feature. |
| 47 | +//! |
| 48 | +//! Rust versions from 1.51 or higher have const generics support. You may enable |
| 49 | +//! `const-generics` feautre to have `subtle` traits implemented for arrays `[T; N]`. |
| 50 | +//! |
44 | 51 | //! Versions prior to `2.2` recommended use of the `nightly` feature to enable an
|
45 | 52 | //! optimization barrier; this is not required in versions `2.2` and above.
|
46 | 53 | //!
|
|
55 | 62 | //!
|
56 | 63 | //! ## Minimum Supported Rust Version
|
57 | 64 | //!
|
58 |
| -//! Rust **1.51** or higher. |
| 65 | +//! Rust **1.41** or higher. |
59 | 66 | //!
|
60 | 67 | //! Minimum supported Rust version can be changed in the future, but it will be done with a minor version bump.
|
61 | 68 | //!
|
62 | 69 | //! ## About
|
63 | 70 | //!
|
64 | 71 | //! This library aims to be the Rust equivalent of Go’s `crypto/subtle` module.
|
65 | 72 | //!
|
66 |
| -//! The optimization barrier in `impl From<u8> for Choice` was based on Tim |
67 |
| -//! Maclean's [work on `rust-timing-shield`][rust-timing-shield], which attempts to |
68 |
| -//! provide a more comprehensive approach for preventing software side-channels in |
69 |
| -//! Rust code. |
| 73 | +//! Old versions of the optimization barrier in `impl From<u8> for Choice` were |
| 74 | +//! based on Tim Maclean's [work on `rust-timing-shield`][rust-timing-shield], |
| 75 | +//! which attempts to provide a more comprehensive approach for preventing |
| 76 | +//! software side-channels in Rust code. |
| 77 | +//! |
| 78 | +//! From version `2.2`, it was based on Diane Hosfelt and Amber Sprenkels' work on |
| 79 | +//! "Secret Types in Rust". Version `2.3` adds the `core_hint_black_box` feature, |
| 80 | +//! which uses the original method through the [`core::hint::black_box`] function |
| 81 | +//! from the Rust standard library. |
70 | 82 | //!
|
71 | 83 | //! `subtle` is authored by isis agora lovecruft and Henry de Valence.
|
72 | 84 | //!
|
|
81 | 93 | //! **USE AT YOUR OWN RISK**
|
82 | 94 | //!
|
83 | 95 | //! [docs]: https://docs.rs/subtle
|
| 96 | +//! [`core::hint::black_box`]: https://doc.rust-lang.org/core/hint/fn.black_box.html |
84 | 97 | //! [rust-timing-shield]: https://www.chosenplaintext.ca/open-source/rust-timing-shield/security
|
85 | 98 |
|
86 | 99 | #[cfg(feature = "std")]
|
@@ -856,7 +869,7 @@ macro_rules! generate_unsigned_integer_greater {
|
856 | 869 | Choice::from((bit & 1) as u8)
|
857 | 870 | }
|
858 | 871 | }
|
859 |
| - } |
| 872 | + }; |
860 | 873 | }
|
861 | 874 |
|
862 | 875 | generate_unsigned_integer_greater!(u8, 8);
|
|
0 commit comments