diff --git a/Cargo.lock b/Cargo.lock index db2c979a..43691a0a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -96,9 +96,9 @@ dependencies = [ [[package]] name = "block-padding" -version = "0.4.0-rc.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e59c1aab3e6c5e56afe1b7e8650be9b5a791cb997bdea449194ae62e4bf8c73" +checksum = "41d28ed5f5f65056148fd25e1a596b5b6d9e772270abf9a9085d7cbfbf26c563" dependencies = [ "hybrid-array", ] @@ -118,11 +118,22 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +[[package]] +name = "chacha20" +version = "0.10.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3585020fc6766ef7ff5c58d69819dbca16a19008ae347bb5d3e4e145c495eb38" +dependencies = [ + "cfg-if", + "cpufeatures", + "rand_core 0.10.0-rc-2", +] + [[package]] name = "cipher" -version = "0.5.0-rc.1" +version = "0.5.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e12a13eb01ded5d32ee9658d94f553a19e804204f2dc811df69ab4d9e0cb8c7" +checksum = "155e4a260750fa4f7754649f049748aacc31db238a358d85fd721002f230f92f" dependencies = [ "block-buffer", "crypto-common", @@ -146,12 +157,12 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.7.0-rc.8" +version = "0.7.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4113edbc9f68c0a64d5b911f803eb245d04bb812680fd56776411f69c670f3e0" +checksum = "6715836b4946e8585016e80b79c7561476aff3b22f7b756778e7b109d86086c6" dependencies = [ "num-traits", - "rand_core", + "rand_core 0.10.0-rc-2", "serdect", "subtle", "zeroize", @@ -159,9 +170,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.2.0-rc.4" +version = "0.2.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8235645834fbc6832939736ce2f2d08192652269e11010a6240f61b908a1c6" +checksum = "919bd05924682a5480aec713596b9e2aabed3a0a6022fab6847f85a99e5f190a" dependencies = [ "hybrid-array", ] @@ -169,12 +180,11 @@ dependencies = [ [[package]] name = "crypto-primes" version = "0.7.0-pre.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f2523fbb68811c8710829417ad488086720a6349e337c38d12fa81e09e50bf" +source = "git+https://github.com/baloo/crypto-primes.git?branch=baloo%2Frand_core%2F0.10.0-rc.2#8c948c73ac8c4638048d1301fe93fb40977f7978" dependencies = [ "crypto-bigint", "libm", - "rand_core", + "rand_core 0.10.0-rc-2", ] [[package]] @@ -199,9 +209,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.11.0-rc.2" +version = "0.11.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6749b668519cd7149ee3d11286a442a8a8bdc3a9d529605f579777bfccc5a4bc" +checksum = "ea390c940e465846d64775e55e3115d5dc934acb953de6f6e6360bc232fe2bf7" dependencies = [ "block-buffer", "const-oid", @@ -358,9 +368,9 @@ dependencies = [ [[package]] name = "inout" -version = "0.2.0-rc.6" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1603f76010ff924b616c8f44815a42eb10fb0b93d308b41deaa8da6d4251fd4b" +checksum = "c7357b6e7aa75618c7864ebd0634b115a7218b0615f4cb1df33ac3eca23943d4" dependencies = [ "block-padding", "hybrid-array", @@ -478,7 +488,7 @@ dependencies = [ "cbc", "der", "pbkdf2", - "rand_core", + "rand_core 0.9.3", "scrypt", "sha2", "spki", @@ -492,7 +502,7 @@ checksum = "93eac55f10aceed84769df670ea4a32d2ffad7399400d41ee1c13b1cd8e1b478" dependencies = [ "der", "pkcs5", - "rand_core", + "rand_core 0.9.3", "spki", ] @@ -545,7 +555,7 @@ dependencies = [ "bitflags", "lazy_static", "num-traits", - "rand", + "rand 0.9.2", "rand_chacha", "rand_xorshift", "regex-syntax", @@ -582,7 +592,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha", - "rand_core", + "rand_core 0.9.3", +] + +[[package]] +name = "rand" +version = "0.10.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e7d245ced4538f0406b1579d3d4a6515a2ff1bdf20733492e2e4fc90a648769" +dependencies = [ + "chacha20", + "getrandom", + "rand_core 0.10.0-rc-2", ] [[package]] @@ -592,7 +613,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.9.3", ] [[package]] @@ -604,13 +625,19 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rand_core" +version = "0.10.0-rc-2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "104a23e4e8b77312a823b6b5613edbac78397e2f34320bc7ac4277013ec4478e" + [[package]] name = "rand_xorshift" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core", + "rand_core 0.9.3", ] [[package]] @@ -653,6 +680,7 @@ name = "rsa" version = "0.10.0-rc.9" dependencies = [ "base64ct", + "chacha20", "const-oid", "crypto-bigint", "crypto-primes", @@ -662,9 +690,8 @@ dependencies = [ "pkcs1", "pkcs8", "proptest", - "rand", - "rand_chacha", - "rand_core", + "rand 0.10.0-rc.1", + "rand_core 0.10.0-rc-2", "rand_xorshift", "rstest", "serde", @@ -872,12 +899,12 @@ dependencies = [ [[package]] name = "signature" -version = "3.0.0-rc.4" +version = "3.0.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc280a6ff65c79fbd6622f64d7127f32b85563bca8c53cd2e9141d6744a9056d" +checksum = "2a0251c9d6468f4ba853b6352b190fb7c1e405087779917c238445eb03993826" dependencies = [ "digest", - "rand_core", + "rand_core 0.10.0-rc-2", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 72904d09..a17e0740 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,11 +14,11 @@ rust-version = "1.85" [dependencies] const-oid = { version = "0.10", default-features = false } -crypto-bigint = { version = "0.7.0-rc.8", default-features = false, features = ["zeroize", "alloc"] } +crypto-bigint = { version = "0.7.0-rc.10", default-features = false, features = ["zeroize", "alloc"] } crypto-primes = { version = "0.7.0-pre.2", default-features = false } digest = { version = "0.11.0-rc.1", default-features = false, features = ["alloc", "oid"] } -rand_core = { version = "0.9", default-features = false } -signature = { version = "3.0.0-rc.4", default-features = false, features = ["alloc", "digest", "rand_core"] } +rand_core = { version = "0.10.0-rc.2", default-features = false } +signature = { version = "3.0.0-rc.5", default-features = false, features = ["alloc", "digest", "rand_core"] } subtle = { version = "2.6.1", default-features = false } zeroize = { version = "1.8", features = ["alloc"] } @@ -30,6 +30,7 @@ sha1 = { version = "0.11.0-rc.2", optional = true, default-features = false, fea spki = { version = "0.8.0-rc.4", optional = true, default-features = false, features = ["alloc"] } sha2 = { version = "0.11.0-rc.2", optional = true, default-features = false, features = ["oid"] } serde = { version = "1.0.184", optional = true, default-features = false, features = ["derive"] } +rand = { version = "0.10.0-rc.1", optional = true, default-features = false } [dev-dependencies] base64ct = { version = "1", features = ["alloc"] } @@ -37,9 +38,9 @@ hex-literal = "1" proptest = "1" serde_test = "1.0.89" rand_xorshift = "0.4" -rand_chacha = "0.9" -rand = "0.9" -rand_core = { version = "0.9.1", default-features = false } +chacha20 = { version = "0.10.0-rc.3", default-features = false, features = ["rng"] } +rand = "0.10.0-rc.1" +rand_core = { version = "0.10.0-rc.2", default-features = false } sha1 = { version = "0.11.0-rc.2", default-features = false, features = ["oid"] } sha2 = { version = "0.11.0-rc.2", default-features = false, features = ["oid"] } sha3 = { version = "0.11.0-rc.2", default-features = false, features = ["oid"] } @@ -55,10 +56,10 @@ name = "key" default = ["std", "encoding"] encoding = ["dep:pkcs1", "dep:pkcs8", "dep:spki"] hazmat = [] -os_rng = ["rand_core/os_rng", "crypto-bigint/rand_core"] +os_rng = ["crypto-bigint/rand_core", "rand/os_rng"] serde = ["encoding", "dep:serde", "dep:serdect", "crypto-bigint/serde"] pkcs5 = ["pkcs8/encryption"] -std = ["pkcs1?/std", "pkcs8?/std", "rand_core/std", "crypto-bigint/rand"] +std = ["pkcs1?/std", "pkcs8?/std", "crypto-bigint/rand"] [package.metadata.docs.rs] features = ["std", "serde", "hazmat", "sha2"] @@ -69,3 +70,6 @@ opt-level = 2 [profile.bench] debug = true + +[patch.crates-io] +crypto-primes = { git = "https://github.com/baloo/crypto-primes.git", branch = "baloo/rand_core/0.10.0-rc.2" } diff --git a/benches/key.rs b/benches/key.rs index e6a70a06..a687f657 100644 --- a/benches/key.rs +++ b/benches/key.rs @@ -3,9 +3,10 @@ extern crate test; use base64ct::{Base64, Encoding}; +use chacha20::ChaCha8Rng; use crypto_bigint::BoxedUint; use hex_literal::hex; -use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; +use rand_core::SeedableRng; use rsa::{Pkcs1v15Encrypt, Pkcs1v15Sign, RsaPrivateKey}; use sha2::{Digest, Sha256}; use test::Bencher; diff --git a/src/algorithms/generate.rs b/src/algorithms/generate.rs index 4c121e81..360202b4 100644 --- a/src/algorithms/generate.rs +++ b/src/algorithms/generate.rs @@ -134,7 +134,8 @@ fn generate_prime_with_rng(rng: &mut R, bit_length: u32) #[cfg(test)] mod tests { use super::*; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; const EXP: u64 = 65537; diff --git a/src/algorithms/pkcs1v15.rs b/src/algorithms/pkcs1v15.rs index 2a2f7d4e..9b3430f5 100644 --- a/src/algorithms/pkcs1v15.rs +++ b/src/algorithms/pkcs1v15.rs @@ -187,7 +187,8 @@ where #[cfg(test)] mod tests { use super::*; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; #[test] fn test_non_zero_bytes() { diff --git a/src/key.rs b/src/key.rs index 462a65cb..27411112 100644 --- a/src/key.rs +++ b/src/key.rs @@ -754,8 +754,9 @@ mod tests { use crate::algorithms::rsa::{rsa_decrypt_and_check, rsa_encrypt}; use crate::traits::{PrivateKeyParts, PublicKeyParts}; + use chacha20::ChaCha8Rng; use hex_literal::hex; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use rand_core::SeedableRng; #[cfg(feature = "encoding")] use pkcs8::DecodePrivateKey; @@ -875,7 +876,8 @@ mod tests { #[test] #[cfg(all(feature = "hazmat", feature = "serde"))] fn test_serde() { - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; use serde_test::{assert_tokens, Configure, Token}; let mut rng = ChaCha8Rng::from_seed([42; 32]); diff --git a/src/oaep.rs b/src/oaep.rs index c3bf49e5..e5bd3b7b 100644 --- a/src/oaep.rs +++ b/src/oaep.rs @@ -326,12 +326,10 @@ mod tests { use crate::traits::PublicKeyParts; use crate::traits::{Decryptor, RandomizedDecryptor, RandomizedEncryptor}; + use chacha20::ChaCha8Rng; use crypto_bigint::BoxedUint; use digest::{Digest, FixedOutputReset}; - use rand_chacha::{ - rand_core::{RngCore, SeedableRng}, - ChaCha8Rng, - }; + use rand_core::{RngCore, SeedableRng}; use sha1::Sha1; use sha2::{Sha224, Sha256, Sha384, Sha512}; use sha3::{Sha3_256, Sha3_384, Sha3_512}; diff --git a/src/oaep/decrypting_key.rs b/src/oaep/decrypting_key.rs index ba873899..41180239 100644 --- a/src/oaep/decrypting_key.rs +++ b/src/oaep/decrypting_key.rs @@ -101,7 +101,8 @@ mod tests { #[cfg(all(feature = "hazmat", feature = "serde"))] fn test_serde() { use super::*; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; use serde_test::{assert_tokens, Configure, Token}; use sha2::Sha256; diff --git a/src/oaep/encrypting_key.rs b/src/oaep/encrypting_key.rs index ee069029..5a8cf831 100644 --- a/src/oaep/encrypting_key.rs +++ b/src/oaep/encrypting_key.rs @@ -76,7 +76,8 @@ mod tests { #[cfg(all(feature = "hazmat", feature = "serde"))] fn test_serde() { use super::*; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; use serde_test::{assert_tokens, Configure, Token}; let mut rng = ChaCha8Rng::from_seed([42; 32]); diff --git a/src/pkcs1v15.rs b/src/pkcs1v15.rs index 1a9fff1e..7a1ba1d7 100644 --- a/src/pkcs1v15.rs +++ b/src/pkcs1v15.rs @@ -253,11 +253,9 @@ mod tests { SignatureEncoding, Signer, Verifier, }; use base64ct::{Base64, Encoding}; + use chacha20::ChaCha8Rng; use hex_literal::hex; - use rand_chacha::{ - rand_core::{RngCore, SeedableRng}, - ChaCha8Rng, - }; + use rand_core::{RngCore, SeedableRng}; use rstest::rstest; use sha1::{Digest, Sha1}; use sha2::Sha256; diff --git a/src/pkcs1v15/decrypting_key.rs b/src/pkcs1v15/decrypting_key.rs index 1f00d2c1..5f5045c3 100644 --- a/src/pkcs1v15/decrypting_key.rs +++ b/src/pkcs1v15/decrypting_key.rs @@ -59,7 +59,8 @@ mod tests { #[cfg(all(feature = "hazmat", feature = "serde"))] fn test_serde() { use super::*; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; use serde_test::{assert_tokens, Configure, Token}; let mut rng = ChaCha8Rng::from_seed([42; 32]); diff --git a/src/pkcs1v15/encrypting_key.rs b/src/pkcs1v15/encrypting_key.rs index f8eef213..705bc274 100644 --- a/src/pkcs1v15/encrypting_key.rs +++ b/src/pkcs1v15/encrypting_key.rs @@ -34,7 +34,8 @@ mod tests { fn test_serde() { use super::*; use crate::RsaPrivateKey; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; use serde_test::{assert_tokens, Configure, Token}; let mut rng = ChaCha8Rng::from_seed([42; 32]); diff --git a/src/pkcs1v15/signing_key.rs b/src/pkcs1v15/signing_key.rs index 0968e3f2..cfbaf190 100644 --- a/src/pkcs1v15/signing_key.rs +++ b/src/pkcs1v15/signing_key.rs @@ -338,7 +338,8 @@ mod tests { fn test_serde() { use super::*; use crate::RsaPrivateKey; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; use serde_test::{assert_tokens, Configure, Token}; use sha2::Sha256; diff --git a/src/pkcs1v15/verifying_key.rs b/src/pkcs1v15/verifying_key.rs index 6e1350e3..7742a1a2 100644 --- a/src/pkcs1v15/verifying_key.rs +++ b/src/pkcs1v15/verifying_key.rs @@ -251,7 +251,8 @@ mod tests { fn test_serde() { use super::*; use crate::RsaPrivateKey; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; use serde_test::{assert_tokens, Configure, Token}; use sha2::Sha256; diff --git a/src/pss.rs b/src/pss.rs index 3a967c9d..e64da10a 100644 --- a/src/pss.rs +++ b/src/pss.rs @@ -295,9 +295,10 @@ mod test { use crate::{RsaPrivateKey, RsaPublicKey}; use crate::traits::PublicKeyParts; + use chacha20::ChaCha8Rng; use hex_literal::hex; use pkcs1::DecodeRsaPrivateKey; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use rand_core::SeedableRng; use rstest::rstest; use sha1::{Digest, Sha1}; use signature::hazmat::{PrehashVerifier, RandomizedPrehashSigner}; @@ -441,11 +442,11 @@ tAboUGBxTDq3ZroNism3DaMIbKPyYrAqhKov1h5V fn test_sign_and_verify_roundtrip(#[case] test: &str) { let priv_key = get_private_key(); - let rng = ChaCha8Rng::from_seed([42; 32]); + let mut rng = ChaCha8Rng::from_seed([42; 32]); let digest = Sha1::digest(test.as_bytes()).to_vec(); let sig = priv_key - .sign_with_rng(&mut rng.clone(), Pss::::new(), &digest) + .sign_with_rng(&mut rng, Pss::::new(), &digest) .expect("failed to sign"); priv_key @@ -459,11 +460,11 @@ tAboUGBxTDq3ZroNism3DaMIbKPyYrAqhKov1h5V fn test_sign_blinded_and_verify_roundtrip(#[case] test: &str) { let priv_key = get_private_key(); - let rng = ChaCha8Rng::from_seed([42; 32]); + let mut rng = ChaCha8Rng::from_seed([42; 32]); let digest = Sha1::digest(test.as_bytes()).to_vec(); let sig = priv_key - .sign_with_rng(&mut rng.clone(), Pss::::new_blinded(), &digest) + .sign_with_rng(&mut rng, Pss::::new_blinded(), &digest) .expect("failed to sign"); priv_key diff --git a/src/pss/blinded_signing_key.rs b/src/pss/blinded_signing_key.rs index 6dd29aab..0e728741 100644 --- a/src/pss/blinded_signing_key.rs +++ b/src/pss/blinded_signing_key.rs @@ -287,7 +287,8 @@ mod tests { #[cfg(all(feature = "hazmat", feature = "serde"))] fn test_serde() { use super::*; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; use serde_test::{assert_tokens, Configure, Token}; use sha2::Sha256; diff --git a/src/pss/signing_key.rs b/src/pss/signing_key.rs index 32c28107..36fdf5e1 100644 --- a/src/pss/signing_key.rs +++ b/src/pss/signing_key.rs @@ -29,7 +29,7 @@ use { #[cfg(feature = "os_rng")] use { - rand_core::OsRng, + rand::rngs::OsRng, signature::{hazmat::PrehashSigner, MultipartSigner, Signer}, }; @@ -326,7 +326,8 @@ mod tests { fn test_serde() { use super::*; use crate::RsaPrivateKey; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; use serde_test::{assert_tokens, Configure, Token}; use sha2::Sha256; diff --git a/src/pss/verifying_key.rs b/src/pss/verifying_key.rs index 5bc5f26a..e0063000 100644 --- a/src/pss/verifying_key.rs +++ b/src/pss/verifying_key.rs @@ -246,7 +246,8 @@ mod tests { fn test_serde() { use super::*; use crate::RsaPrivateKey; - use rand_chacha::{rand_core::SeedableRng, ChaCha8Rng}; + use chacha20::ChaCha8Rng; + use rand_core::SeedableRng; use serde_test::{assert_tokens, Configure, Token}; use sha2::Sha256; diff --git a/tests/proptests.rs b/tests/proptests.rs index 17533ab4..17d101b3 100644 --- a/tests/proptests.rs +++ b/tests/proptests.rs @@ -2,8 +2,8 @@ #![cfg(feature = "hazmat")] +use chacha20::ChaCha8Rng; use proptest::prelude::*; -use rand_chacha::ChaCha8Rng; use rand_core::SeedableRng; use rsa::{ pkcs1v15,