From 8e2e07e0222851a7f071eee9ffaca4c17fb7872c Mon Sep 17 00:00:00 2001 From: Aaron Feickert <66188213+AaronFeickert@users.noreply.github.com> Date: Thu, 22 Aug 2024 13:15:24 -0500 Subject: Remove Miri equality workaround function --- Cargo.toml | 2 +- src/lib.rs | 24 ------------------------ 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 8531305..c5f8c99 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -97,7 +97,7 @@ features = ["mmap", "rayon", "serde", "zeroize"] [dependencies] arrayref = "0.3.5" arrayvec = { version = "0.7.4", default-features = false } -constant_time_eq = "0.3.0" +constant_time_eq = { version = "0.3.1", default-features = false } cfg-if = "1.0.0" digest = { version = "0.10.1", features = [ "mac" ], optional = true } memmap2 = { version = "0.9", optional = true } diff --git a/src/lib.rs b/src/lib.rs index 52a7b42..37c2c0b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -315,28 +315,10 @@ impl Zeroize for Hash { } } -// A proper implementation of constant time equality is tricky, and we get it from the -// constant_time_eq crate instead of rolling our own. However, that crate isn't compatible with -// Miri, so we roll our own just for that. -#[cfg(miri)] -fn constant_time_eq_miri(a: &[u8], b: &[u8]) -> bool { - if a.len() != b.len() { - return false; - } - let mut x = 0; - for i in 0..a.len() { - x |= a[i] ^ b[i]; - } - x == 0 -} - /// This implementation is constant-time. impl PartialEq for Hash { #[inline] fn eq(&self, other: &Hash) -> bool { - #[cfg(miri)] - return constant_time_eq_miri(&self.0, &other.0); - #[cfg(not(miri))] constant_time_eq::constant_time_eq_32(&self.0, &other.0) } } @@ -345,9 +327,6 @@ impl PartialEq for Hash { impl PartialEq<[u8; OUT_LEN]> for Hash { #[inline] fn eq(&self, other: &[u8; OUT_LEN]) -> bool { - #[cfg(miri)] - return constant_time_eq_miri(&self.0, other); - #[cfg(not(miri))] constant_time_eq::constant_time_eq_32(&self.0, other) } } @@ -356,9 +335,6 @@ impl PartialEq<[u8; OUT_LEN]> for Hash { impl PartialEq<[u8]> for Hash { #[inline] fn eq(&self, other: &[u8]) -> bool { - #[cfg(miri)] - return constant_time_eq_miri(&self.0, other); - #[cfg(not(miri))] constant_time_eq::constant_time_eq(&self.0, other) } } -- cgit v1.2.3-70-g09d2