diff --git a/Cargo.lock b/Cargo.lock index afdc81a..11d9a0c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,9 +111,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96eb4cdd6cf1b31d671e9efe75c5d1ec614776856cefbe109ca373554a6d514f" +checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" dependencies = [ "hybrid-array", ] @@ -149,7 +149,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c536927023d1c432e6e23a25ef45f6756094eac2ab460db5fb17a772acdfd312" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "rand_core 0.10.0", ] @@ -205,6 +205,12 @@ version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" +[[package]] +name = "cmov" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0758edba32d61d1fd9f4d69491b47604b91ee2f7e6b33de7e54ca4ebe55dc3" + [[package]] name = "const-oid" version = "0.10.2" @@ -220,6 +226,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "criterion" version = "0.5.1" @@ -289,20 +304,29 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" -version = "0.2.0-rc.15" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8441110cea75afde0b89a8d796e2bc67b23432f5a9566cb15d9d365d91a2b0" +checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710" dependencies = [ "hybrid-array", ] +[[package]] +name = "ctutils" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1005a6d4446f5120ef475ad3d2af2b30c49c2c9c6904258e3bb30219bebed5e4" +dependencies = [ + "cmov", +] + [[package]] name = "curve25519-dalek" -version = "5.0.0-pre.5" +version = "5.0.0-pre.6" dependencies = [ "bincode", "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "criterion", "curve25519-dalek-derive", "digest", @@ -342,14 +366,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.11.0-rc.11" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b42f1d9edf5207c137646b568a0168ca0ec25b7f9eaf7f9961da51a3d91cea" +checksum = "4850db49bf08e663084f7fb5c87d202ef91a3907271aff24a94eb97ff039153c" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -365,7 +389,7 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "3.0.0-pre.5" +version = "3.0.0-pre.6" dependencies = [ "bincode", "blake2", @@ -520,9 +544,9 @@ checksum = "e712f64ec3850b98572bffac52e2c6f282b29fe6c5fa6d42334b30be438d95c1" [[package]] name = "hybrid-array" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41fb3dc24fe72c2e3a4685eed55917c2fb228851257f4a8f2d985da9443c3e5" +checksum = "8655f91cd07f2b9d0c24137bd650fe69617773435ee5ec83022377777ce65ef1" dependencies = [ "typenum", ] @@ -583,11 +607,12 @@ dependencies = [ [[package]] name = "keccak" -version = "0.2.0-rc.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a412fe37705d515cba9dbf1448291a717e187e2351df908cfc0137cbec3d480" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "cpufeatures", + "cfg-if", + "cpufeatures 0.3.0", ] [[package]] @@ -1027,15 +1052,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c5f3b1e2dc8aad28310d8410bd4d7e180eca65fca176c52ab00d364475d0024" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] [[package]] name = "sha3" -version = "0.11.0-rc.7" +version = "0.11.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5bfe7820113e633d8886e839aae78c1184b8d7011000db6bc7eb61e34f28350" +checksum = "0b233a7d59d7bfc027208506a33ffc9532b2acb24ddc61fe7e758dc2250db431" dependencies = [ "digest", "keccak", @@ -1456,7 +1481,7 @@ dependencies = [ [[package]] name = "x25519-dalek" -version = "3.0.0-pre.5" +version = "3.0.0-pre.6" dependencies = [ "bincode", "criterion", diff --git a/ed25519-dalek/Cargo.toml b/ed25519-dalek/Cargo.toml index 2f9a0be..c48e874 100644 --- a/ed25519-dalek/Cargo.toml +++ b/ed25519-dalek/Cargo.toml @@ -37,7 +37,7 @@ sha2 = { version = "0.11.0-rc.5", default-features = false } subtle = { version = "2.3.0", default-features = false } # optional features -keccak = { version = "0.2.0-rc.1", default-features = false, optional = true } +keccak = { version = "0.2", default-features = false, optional = true } rand_core = { version = "0.10", default-features = false, optional = true } serde = { version = "1.0", default-features = false, optional = true } zeroize = { version = "1.5", default-features = false, optional = true } @@ -52,7 +52,7 @@ x25519-dalek = { version = "=3.0.0-pre.6", default-features = false, features = ] } blake2 = "0.11.0-rc.5" chacha20 = { version = "0.10.0-rc.10", default-features = false, features = ["rng"] } -sha3 = "0.11.0-rc.7" +sha3 = "0.11.0-rc.9" getrandom = { version = "0.4.0-rc.1", features = ["sys_rng"] } hex = "0.4" bincode = "1.0" diff --git a/ed25519-dalek/src/batch/strobe.rs b/ed25519-dalek/src/batch/strobe.rs index 6aa7302..b21b729 100644 --- a/ed25519-dalek/src/batch/strobe.rs +++ b/ed25519-dalek/src/batch/strobe.rs @@ -1,6 +1,7 @@ //! Minimal implementation of (parts of) Strobe. use core::ops::{Deref, DerefMut}; +use keccak::Keccak; #[cfg(feature = "zeroize")] use zeroize::Zeroize; @@ -57,7 +58,7 @@ impl Strobe128 { let mut st = AlignedKeccakState([0u8; 200]); st[0..6].copy_from_slice(&[1, STROBE_R + 2, 1, 0, 1, 96]); st[6..18].copy_from_slice(b"STROBEv1.0.2"); - keccak::f1600(transmute_state(&mut st)); + Keccak::new().with_f1600(|f1600| f1600(transmute_state(&mut st))); st }; @@ -100,7 +101,7 @@ impl Strobe128 { self.state[self.pos as usize] ^= self.pos_begin; self.state[(self.pos + 1) as usize] ^= 0x04; self.state[(STROBE_R + 1) as usize] ^= 0x80; - keccak::f1600(transmute_state(&mut self.state)); + Keccak::new().with_f1600(|f1600| f1600(transmute_state(&mut self.state))); self.pos = 0; self.pos_begin = 0; }