From 09ae05f6f221fc338768a4b01cab8b0ea48d4b46 Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Sat, 24 Jan 2026 21:40:01 -0700 Subject: [PATCH] Bump `rand_core` to v0.10.0-rc-6 Also updates all required dependencies to complete the upgrade --- Cargo.lock | 300 ++++++++++++++++-- aucpace/Cargo.toml | 16 +- aucpace/examples/key_agreement.rs | 7 +- aucpace/examples/key_agreement_no_std.rs | 7 +- aucpace/examples/key_agreement_partial_aug.rs | 4 +- aucpace/examples/key_agreement_strong.rs | 8 +- aucpace/src/client.rs | 8 +- aucpace/src/server.rs | 8 +- aucpace/tests/test_key_agreement.rs | 6 +- .../tests/test_key_agreement_partial_aug.rs | 6 +- aucpace/tests/test_key_agreement_strong.rs | 6 +- .../test_key_agreement_strong_partial_aug.rs | 6 +- spake2/Cargo.toml | 10 +- spake2/src/ed25519.rs | 4 +- spake2/src/group.rs | 4 +- spake2/src/lib.rs | 11 +- srp/Cargo.toml | 12 +- srp/src/groups.rs | 6 +- srp/tests/srp.rs | 6 +- 19 files changed, 340 insertions(+), 95 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a5ef966..be0e928 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + [[package]] name = "atomic-polyfill" version = "1.0.3" @@ -51,6 +57,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dfdb4953a096c551ce9ace855a604d702e6e62d77fac690575ae347571717f5" +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + [[package]] name = "block-buffer" version = "0.11.0" @@ -121,9 +133,9 @@ checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crypto-bigint" -version = "0.7.0-rc.21" +version = "0.7.0-rc.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f9a78b88bb8255ec59a81423aa92ada22f96883f9ae59dcb68613907636ae5" +checksum = "053c3561863ce55e3226ecc48b08679f4b66cb1b92b9afb42c2c402dfe8b9b51" dependencies = [ "ctutils", "getrandom", @@ -134,9 +146,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.2.0-rc.11" +version = "0.2.0-rc.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d2bcc93d5cde6659e8649fc412894417ebc14dee54cfc6ee439c683a4a58342" +checksum = "c7722afd27468475c9b6063dc03a57ef2ca833816981619f8ebe64d38d207eef" dependencies = [ "getrandom", "hybrid-array", @@ -154,9 +166,9 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "5.0.0-pre.4" +version = "5.0.0-pre.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ae8b2fe5e4995d7fd08a7604e794dc569a65ed19659f5939d529813ed816d38" +checksum = "a434aec7908df6ca86cda069864d7686aea8afad979aadc9e30e50ac3e40b45a" dependencies = [ "cfg-if", "cpufeatures", @@ -183,9 +195,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.11.0-rc.7" +version = "0.11.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca14c221bd9052fd2da7c34a2eeb5ae54732db28be47c35937be71793d675422" +checksum = "bff8de092798697546237a3a701e4174fe021579faec9b854379af9bf1e31962" dependencies = [ "block-buffer", "const-oid", @@ -205,23 +217,36 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "fiat-crypto" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "getrandom" -version = "0.4.0-rc.0" +version = "0.4.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b99f0d993a2b9b97b9a201193aa8ad21305cde06a3be9a7e1f8f4201e5cc27e" +checksum = "74f70a332ddf75e5e5e43284304179ba02f391f82f692f030b08a8378adf3c99" dependencies = [ "cfg-if", "libc", "r-efi", "rand_core", "wasip2", + "wasip3", ] [[package]] @@ -233,6 +258,21 @@ dependencies = [ "byteorder", ] +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + [[package]] name = "heapless" version = "0.7.17" @@ -247,6 +287,12 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hex" version = "0.4.3" @@ -261,18 +307,18 @@ checksum = "e712f64ec3850b98572bffac52e2c6f282b29fe6c5fa6d42334b30be438d95c1" [[package]] name = "hkdf" -version = "0.13.0-rc.3" +version = "0.13.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfbb4225acf2b5cc4e12d384672cd6d1f0cb980ff5859ffcf144db25b593a24d" +checksum = "c1493605868fc7d216afa78a26956d56f5c0a12dbdb8ee4fe9e0b70a28ec7d57" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.13.0-rc.3" +version = "0.13.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c597ac7d6cc8143e30e83ef70915e7f883b18d8bec2e2b2bce47f5bbb06d57" +checksum = "d9956e202a691c5c86c60303a421f66f93f44b29433407b7c43cf2bebadc750e" dependencies = [ "digest", ] @@ -286,6 +332,24 @@ dependencies = [ "typenum", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + [[package]] name = "inout" version = "0.2.2" @@ -295,6 +359,18 @@ dependencies = [ "hybrid-array", ] +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" version = "0.2.180" @@ -310,6 +386,18 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + [[package]] name = "num-bigint" version = "0.4.6" @@ -340,9 +428,9 @@ dependencies = [ [[package]] name = "password-hash" -version = "0.6.0-rc.10" +version = "0.6.0-rc.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80b7795f59c339f0458e0213b31e01f45de7f061bdfc52857386f457d94c2cb8" +checksum = "856b64c3c87d737f723456e6e399adcb471e5446f42ba3d1e4f50a81d894b274" dependencies = [ "phc", "rand_core", @@ -382,6 +470,16 @@ dependencies = [ "serde", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + [[package]] name = "proc-macro2" version = "1.0.105" @@ -408,9 +506,9 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rand_core" -version = "0.10.0-rc-5" +version = "0.10.0-rc-6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a06e03bd1f2ae861ab9e7498b6c64ed3dadb9ce175c0464a2522a5f23c0045" +checksum = "70765ff7112b0fb2d272d24d9a2f907fc206211304328fe58b2db15a5649ef28" [[package]] name = "rustc_version" @@ -495,6 +593,19 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + [[package]] name = "serdect" version = "0.4.2" @@ -507,9 +618,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.11.0-rc.3" +version = "0.11.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa1ae819b9870cadc959a052363de870944a1646932d274a4e270f64bf79e5ef" +checksum = "9c777f0a122a53fddb0beb6e706771197000b8eb5c9f42b5b850f450ef48c788" dependencies = [ "cfg-if", "cpufeatures", @@ -518,9 +629,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.11.0-rc.3" +version = "0.11.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d43dc0354d88b791216bb5c1bfbb60c0814460cc653ae0ebd71f286d0bd927" +checksum = "7535f94fa3339fe9e5e9be6260a909e62af97f6e14b32345ccf79b92b8b81233" dependencies = [ "cfg-if", "cpufeatures", @@ -619,13 +730,62 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "wasip2" version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen", + "wit-bindgen 0.46.0", +] + +[[package]] +name = "wasip3" +version = "0.3.1+wasi-0.3.0-rc-2025-09-16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba4be47b1d11244670d11857eee0758a8f2c39aea64d80b78c1ce29b4642cd" +dependencies = [ + "wit-bindgen 0.48.1", +] + +[[package]] +name = "wasm-encoder" +version = "0.241.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01164c9dda68301e34fdae536c23ed6fe90ce6d97213ccc171eebbd3d02d6b8" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.241.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876fe286f2fa416386deedebe8407e6f19e0b5aeaef3d03161e77a15fa80f167" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.241.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46d90019b1afd4b808c263e428de644f3003691f243387d30d673211ee0cb8e8" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap", + "semver", ] [[package]] @@ -634,8 +794,102 @@ version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +[[package]] +name = "wit-bindgen" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f8c2adb5f74ac9395bc3121c99a1254bf9310482c27b13f97167aedb5887138" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b881a098cae03686d7a0587f8f306f8a58102ad8da8b5599100fbe0e7f5800b" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69667efa439a453e1d50dac939c6cab6d2c3ac724a9d232b6631dad2472a5b70" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae2e22cceb5d105d52326c07e3e67603a861cc7add70fc467f7cc7ec5265017" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.241.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0c57df25e7ee612d946d3b7646c1ddb2310f8280aa2c17e543b66e0812241" +dependencies = [ + "anyhow", + "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.241.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ef1c6ad67f35c831abd4039c02894de97034100899614d1c44e2268ad01c91" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + [[package]] name = "zeroize" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zmij" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65" diff --git a/aucpace/Cargo.toml b/aucpace/Cargo.toml index 59b6325..d8d4847 100644 --- a/aucpace/Cargo.toml +++ b/aucpace/Cargo.toml @@ -15,24 +15,24 @@ edition = "2024" rust-version = "1.85" [dependencies] -curve25519-dalek = { version = "5.0.0-pre.4", default-features = false, features = ["digest", "rand_core"] } -password-hash = { version = "0.6.0-rc.8", default-features = false, features = ["phc", "rand_core"] } -rand_core = { version = "0.10.0-rc-5", default-features = false } +curve25519-dalek = { version = "5.0.0-pre.5", default-features = false, features = ["digest", "rand_core"] } +password-hash = { version = "0.6.0-rc.11", default-features = false, features = ["phc", "rand_core"] } +rand_core = { version = "0.10.0-rc-6", default-features = false } subtle = { version = "2.4", default-features = false } # optional dependencies -getrandom = { version = "0.4.0-rc.0", optional = true, features = ["sys_rng"] } +getrandom = { version = "0.4.0-rc.1", optional = true, features = ["sys_rng"] } serde = { version = "1.0.184", default-features = false, optional = true, features = ["derive"] } serde-byte-array = { version = "0.1", optional = true } scrypt = { version = "0.12.0-rc.9", default-features = false, optional = true, features = ["phc"] } -sha2 = { version = "0.11.0-rc.3", default-features = false, optional = true } +sha2 = { version = "0.11.0-rc.4", default-features = false, optional = true } [dev-dependencies] -curve25519-dalek = { version = "5.0.0-pre.4", features = ["digest", "rand_core"] } -password-hash = { version = "0.6.0-rc.8", features = ["rand_core"] } +curve25519-dalek = { version = "5.0.0-pre.5", features = ["digest", "rand_core"] } +password-hash = { version = "0.6.0-rc.11", features = ["rand_core"] } postcard = { version = "1", features = ["use-std"] } scrypt = { version = "0.12.0-rc.9", features = ["phc"] } -sha2 = "0.11.0-rc.3" +sha2 = "0.11.0-rc.4" [features] default = ["getrandom", "scrypt", "sha2"] diff --git a/aucpace/examples/key_agreement.rs b/aucpace/examples/key_agreement.rs index bc7cc3e..80e9640 100644 --- a/aucpace/examples/key_agreement.rs +++ b/aucpace/examples/key_agreement.rs @@ -1,8 +1,7 @@ -use aucpace::{ - Client, ClientMessage, Database, Result, Server, ServerMessage, SysRng, rand_core::TryRngCore, -}; +use aucpace::{Client, ClientMessage, Database, Result, Server, ServerMessage, SysRng}; use curve25519_dalek::ristretto::RistrettoPoint; use password_hash::phc::{ParamsString, SaltString}; +use rand_core::UnwrapErr; use scrypt::{Params, Scrypt}; use sha2::{Sha512, digest::Output}; use std::{ @@ -40,7 +39,7 @@ fn main() -> Result<()> { let server_socket: SocketAddr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 25519); // random number generator from OS - let mut rng = SysRng.unwrap_err(); + let mut rng = UnwrapErr(SysRng); // register the user in the database let mut base_client = Client::new(rng); diff --git a/aucpace/examples/key_agreement_no_std.rs b/aucpace/examples/key_agreement_no_std.rs index f6414dd..0815a2d 100644 --- a/aucpace/examples/key_agreement_no_std.rs +++ b/aucpace/examples/key_agreement_no_std.rs @@ -3,11 +3,10 @@ // use println and Instant only from std extern crate std; -use aucpace::{ - Client, ClientMessage, Database, Result, Server, ServerMessage, SysRng, rand_core::TryRngCore, -}; +use aucpace::{Client, ClientMessage, Database, Result, Server, ServerMessage, SysRng}; use curve25519_dalek::ristretto::RistrettoPoint; use password_hash::phc::{ParamsString, SaltString}; +use rand_core::UnwrapErr; use scrypt::{Params, Scrypt}; use std::{println, time::Instant}; @@ -31,7 +30,7 @@ fn main() -> Result<()> { const PASSWORD: &[u8] = b"4d1rA_aND-Gr4Y_aRe_tH3-b3sT <3"; // get system random number generator - let mut rng = SysRng.unwrap_err(); + let mut rng = UnwrapErr(SysRng); // register the user in the database let mut base_server = Server::new(rng); diff --git a/aucpace/examples/key_agreement_partial_aug.rs b/aucpace/examples/key_agreement_partial_aug.rs index 5093701..cb7d936 100644 --- a/aucpace/examples/key_agreement_partial_aug.rs +++ b/aucpace/examples/key_agreement_partial_aug.rs @@ -1,10 +1,10 @@ -use aucpace::rand_core::TryRngCore; use aucpace::{ Client, ClientMessage, Database, Error, PartialAugDatabase, Result, Server, ServerMessage, SysRng, }; use curve25519_dalek::{ristretto::RistrettoPoint, scalar::Scalar}; use password_hash::phc::{ParamsString, SaltString}; +use rand_core::UnwrapErr; use scrypt::{Params, Scrypt}; use sha2::{Sha512, digest::Output}; use std::{ @@ -42,7 +42,7 @@ fn main() -> Result<()> { let server_socket: SocketAddr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 25519); // random number generator from OS - let mut rng = SysRng.unwrap_err(); + let mut rng = UnwrapErr(SysRng); // register the user in the database let mut base_client = Client::new(rng); diff --git a/aucpace/examples/key_agreement_strong.rs b/aucpace/examples/key_agreement_strong.rs index 44a8b2a..d4df8a3 100644 --- a/aucpace/examples/key_agreement_strong.rs +++ b/aucpace/examples/key_agreement_strong.rs @@ -1,9 +1,7 @@ -use aucpace::{ - Client, ClientMessage, Result, Server, ServerMessage, StrongDatabase, SysRng, - rand_core::TryRngCore, -}; +use aucpace::{Client, ClientMessage, Result, Server, ServerMessage, StrongDatabase, SysRng}; use curve25519_dalek::{ristretto::RistrettoPoint, scalar::Scalar}; use password_hash::phc::ParamsString; +use rand_core::UnwrapErr; use scrypt::{Params, Scrypt}; use sha2::{Sha512, digest::Output}; use std::{ @@ -41,7 +39,7 @@ fn main() -> Result<()> { let server_socket: SocketAddr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 25519); // random number generator from OS - let mut rng = SysRng.unwrap_err(); + let mut rng = UnwrapErr(SysRng); // register the user in the database let mut base_client = Client::new(rng); diff --git a/aucpace/src/client.rs b/aucpace/src/client.rs index 82ffa4d..905ff12 100644 --- a/aucpace/src/client.rs +++ b/aucpace/src/client.rs @@ -24,13 +24,10 @@ use subtle::ConstantTimeEq; #[cfg(feature = "strong_aucpace")] use crate::utils::H1; - #[cfg(feature = "alloc")] extern crate alloc; - #[cfg(feature = "serde")] use crate::utils::{serde_paramsstring, serde_saltstring}; - #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; @@ -1053,11 +1050,12 @@ mod tests { use super::*; #[cfg(all(feature = "getrandom", feature = "sha2"))] - use crate::{SysRng, rand_core::TryRngCore}; + use crate::{SysRng, rand_core::UnwrapErr}; #[test] #[cfg(all(feature = "alloc", feature = "getrandom", feature = "scrypt"))] fn test_hash_password_no_std_and_alloc_agree() { + use rand_core::TryRng; use scrypt::{Params, Scrypt}; let username = "worf@starship.enterprise"; @@ -1088,7 +1086,7 @@ mod tests { fn test_client_doesnt_accept_insecure_ssid() { use crate::Client; - let mut client = Client::new(SysRng.unwrap_err()); + let mut client = Client::new(UnwrapErr(SysRng)); let res = client.begin_prestablished_ssid("bad ssid"); assert!(matches!(res, Err(Error::InsecureSsid))); } diff --git a/aucpace/src/server.rs b/aucpace/src/server.rs index 314429c..0a8041f 100644 --- a/aucpace/src/server.rs +++ b/aucpace/src/server.rs @@ -734,13 +734,13 @@ mod tests { use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT; #[cfg(all(feature = "sha2", feature = "getrandom"))] - use crate::{SysRng, rand_core::TryRngCore}; + use crate::{SysRng, rand_core::UnwrapErr}; #[test] #[cfg(all(feature = "sha2", feature = "getrandom"))] fn test_server_doesnt_accept_insecure_ssid() { use crate::Server; - let mut server = Server::new(SysRng.unwrap_err()); + let mut server = Server::new(UnwrapErr(SysRng)); let res = server.begin_prestablished_ssid("bad ssid"); assert!(matches!(res, Err(Error::InsecureSsid))); } @@ -849,7 +849,7 @@ mod tests { b"bobbyyyy", RistrettoPoint::identity(), &FakeDatabase(), - SysRng.unwrap_err(), + UnwrapErr(SysRng), ); if let Err(e) = res { @@ -877,7 +877,7 @@ mod tests { b"bobbyyyy", RistrettoPoint::identity(), &FakeDatabase(), - SysRng.unwrap_err(), + UnwrapErr(SysRng), ); if let Err(e) = res { diff --git a/aucpace/tests/test_key_agreement.rs b/aucpace/tests/test_key_agreement.rs index 85e638b..5a5617a 100644 --- a/aucpace/tests/test_key_agreement.rs +++ b/aucpace/tests/test_key_agreement.rs @@ -3,11 +3,11 @@ use aucpace::{ Client, ClientMessage, Database, Result, Server, ServerMessage, SysRng, client::{AuCPaceClientPreAug, AuCPaceClientRecvServerKey}, - rand_core::TryRngCore, server::{AuCPaceServerAugLayer, AuCPaceServerRecvClientKey}, }; use curve25519_dalek::RistrettoPoint; use password_hash::phc::{ParamsString, SaltString}; +use rand_core::UnwrapErr; use scrypt::{Params, Scrypt}; use sha2::Sha512; @@ -234,7 +234,7 @@ fn test_key_agreement_prestablished_ssid_implicit_auth() -> Result<()> { /// Perform the initialisation step for all tests fn init() -> Result<(Client, Server, SingleUserDatabase)> { - let rng = SysRng.unwrap_err(); + let rng = UnwrapErr(SysRng); // Create the client, server and database let base_server = Server::new(rng); @@ -268,7 +268,7 @@ fn test_core( ClientMessage<'_, K1>, ServerMessage<'_, K1>, )> { - let mut rng = SysRng.unwrap_err(); + let mut rng = UnwrapErr(SysRng); // ===== Augmentation Layer ===== // client initiates the augmentation phase diff --git a/aucpace/tests/test_key_agreement_partial_aug.rs b/aucpace/tests/test_key_agreement_partial_aug.rs index c6b7dad..853524b 100644 --- a/aucpace/tests/test_key_agreement_partial_aug.rs +++ b/aucpace/tests/test_key_agreement_partial_aug.rs @@ -12,7 +12,7 @@ use aucpace::{ }; use curve25519_dalek::{RistrettoPoint, Scalar}; use password_hash::phc::{ParamsString, SaltString}; -use rand_core::TryRngCore; +use rand_core::UnwrapErr; use scrypt::{Params, Scrypt}; use sha2::Sha512; @@ -270,7 +270,7 @@ fn test_key_agreement_prestablished_ssid_implicit_auth() -> Result<()> { /// Perform the initialisation step for all tests fn init() -> Result<(Client, Server, SingleUserDatabase)> { - let rng = SysRng.unwrap_err(); + let rng = UnwrapErr(SysRng); // Create the client, server and database let mut base_server = Server::new(rng); @@ -306,7 +306,7 @@ fn test_core( ClientMessage<'_, K1>, ServerMessage<'_, K1>, )> { - let mut rng = SysRng.unwrap_err(); + let mut rng = UnwrapErr(SysRng); // ===== Augmentation Layer ===== // client initiates the augmentation phase diff --git a/aucpace/tests/test_key_agreement_strong.rs b/aucpace/tests/test_key_agreement_strong.rs index 79b990f..ef4215c 100644 --- a/aucpace/tests/test_key_agreement_strong.rs +++ b/aucpace/tests/test_key_agreement_strong.rs @@ -3,11 +3,11 @@ use aucpace::{ Client, ClientMessage, Result, Server, ServerMessage, StrongDatabase, SysRng, client::{AuCPaceClientPreAug, AuCPaceClientRecvServerKey}, - rand_core::TryRngCore, server::{AuCPaceServerAugLayer, AuCPaceServerRecvClientKey}, }; use curve25519_dalek::{RistrettoPoint, Scalar}; use password_hash::phc::ParamsString; +use rand_core::UnwrapErr; use scrypt::{Params, Scrypt}; use sha2::Sha512; @@ -235,7 +235,7 @@ fn test_key_agreement_prestablished_ssid_implicit_auth() -> Result<()> { /// Perform the initialisation step for all tests fn init() -> Result<(Client, Server, SingleUserDatabase)> { - let rng = SysRng.unwrap_err(); + let rng = UnwrapErr(SysRng); // Create the client, server and database let base_server = Server::new(rng); @@ -270,7 +270,7 @@ fn test_core( ClientMessage<'_, K1>, ServerMessage<'_, K1>, )> { - let mut rng = SysRng.unwrap_err(); + let mut rng = UnwrapErr(SysRng); // ===== Augmentation Layer ===== // client initiates the augmentation phase diff --git a/aucpace/tests/test_key_agreement_strong_partial_aug.rs b/aucpace/tests/test_key_agreement_strong_partial_aug.rs index 11ccead..2cb4ec0 100644 --- a/aucpace/tests/test_key_agreement_strong_partial_aug.rs +++ b/aucpace/tests/test_key_agreement_strong_partial_aug.rs @@ -9,11 +9,11 @@ use aucpace::{ Client, ClientMessage, Error, PartialAugDatabase, Result, Server, ServerMessage, StrongDatabase, SysRng, client::{AuCPaceClientPreAug, AuCPaceClientRecvServerKey}, - rand_core::TryRngCore, server::{AuCPaceServerAugLayer, AuCPaceServerRecvClientKey}, }; use curve25519_dalek::{RistrettoPoint, Scalar}; use password_hash::phc::ParamsString; +use rand_core::UnwrapErr; use scrypt::{Params, Scrypt}; use sha2::Sha512; @@ -272,7 +272,7 @@ fn test_key_agreement_prestablished_ssid_implicit_auth() -> Result<()> { /// Perform the initialisation step for all tests fn init() -> Result<(Client, Server, SingleUserDatabase)> { - let rng = SysRng.unwrap_err(); + let rng = UnwrapErr(SysRng); // Create the client, server and database let mut base_server = Server::new(rng); @@ -309,7 +309,7 @@ fn test_core( ClientMessage<'_, K1>, ServerMessage<'_, K1>, )> { - let mut rng = SysRng.unwrap_err(); + let mut rng = UnwrapErr(SysRng); // ===== Augmentation Layer ===== // client initiates the augmentation phase diff --git a/spake2/Cargo.toml b/spake2/Cargo.toml index 3b0c902..15fbe33 100644 --- a/spake2/Cargo.toml +++ b/spake2/Cargo.toml @@ -15,13 +15,13 @@ edition = "2024" rust-version = "1.85" [dependencies] -curve25519-dalek = { version = "5.0.0-pre.4", default-features = false, features = ["rand_core"] } -rand_core = { version = "0.10.0-rc-5", default-features = false } -sha2 = { version = "0.11.0-rc.3", default-features = false } -hkdf = { version = "0.13.0-rc.3", default-features = false } +curve25519-dalek = { version = "5.0.0-pre.5", default-features = false, features = ["rand_core"] } +rand_core = { version = "0.10.0-rc-6", default-features = false } +sha2 = { version = "0.11.0-rc.4", default-features = false } +hkdf = { version = "0.13.0-rc.4", default-features = false } # optional dependencies -getrandom = { version = "0.4.0-rc.0", optional = true, features = ["sys_rng"] } +getrandom = { version = "0.4.0-rc.1", optional = true, features = ["sys_rng"] } [dev-dependencies] bencher = "0.1" diff --git a/spake2/src/ed25519.rs b/spake2/src/ed25519.rs index 74caac9..6c7cd38 100644 --- a/spake2/src/ed25519.rs +++ b/spake2/src/ed25519.rs @@ -4,7 +4,7 @@ use crate::{Group, c2_Element, c2_Scalar}; use alloc::vec::Vec; use curve25519_dalek::{constants::ED25519_BASEPOINT_POINT, edwards::CompressedEdwardsY}; use hkdf::Hkdf; -use rand_core::{CryptoRng, RngCore}; +use rand_core::{CryptoRng, Rng}; use sha2::{Digest, Sha256}; /// Ed25519 elliptic curve group. @@ -62,7 +62,7 @@ impl Group for Ed25519Group { fn random_scalar(cspring: &mut T) -> c2_Scalar where - T: RngCore + CryptoRng, + T: Rng + CryptoRng, { c2_Scalar::random(cspring) } diff --git a/spake2/src/group.rs b/spake2/src/group.rs index 2379553..1c5b894 100644 --- a/spake2/src/group.rs +++ b/spake2/src/group.rs @@ -1,7 +1,7 @@ //! Group trait. use alloc::vec::Vec; -use rand_core::{CryptoRng, RngCore}; +use rand_core::{CryptoRng, Rng}; /// Group trait. // TODO(tarcieri): replace with `group` crate? @@ -33,7 +33,7 @@ pub trait Group { /// Generate a random scalar fn random_scalar(cspring: &mut T) -> Self::Scalar where - T: RngCore + CryptoRng; + T: Rng + CryptoRng; /// Scalar negation fn scalar_neg(s: &Self::Scalar) -> Self::Scalar; diff --git a/spake2/src/lib.rs b/spake2/src/lib.rs index e44c6f7..f90c3cb 100644 --- a/spake2/src/lib.rs +++ b/spake2/src/lib.rs @@ -251,10 +251,7 @@ use curve25519_dalek::{edwards::EdwardsPoint as c2_Element, scalar::Scalar as c2 use rand_core::CryptoRng; #[cfg(feature = "getrandom")] -pub use getrandom::SysRng; - -#[cfg(feature = "getrandom")] -use rand_core::TryRngCore; +pub use getrandom::{SysRng, rand_core::UnwrapErr}; /// Password type. // TODO(tarcieri): avoid allocation? @@ -323,7 +320,7 @@ impl Spake2 { #[cfg(feature = "getrandom")] #[must_use] pub fn start_a(password: &Password, id_a: &Identity, id_b: &Identity) -> (Self, Vec) { - Self::start_a_with_rng(password, id_a, id_b, &mut SysRng.unwrap_err()) + Self::start_a_with_rng(password, id_a, id_b, &mut UnwrapErr(SysRng)) } /// Start with identity `idB`. @@ -332,7 +329,7 @@ impl Spake2 { #[cfg(feature = "getrandom")] #[must_use] pub fn start_b(password: &Password, id_a: &Identity, id_b: &Identity) -> (Self, Vec) { - Self::start_b_with_rng(password, id_a, id_b, &mut SysRng.unwrap_err()) + Self::start_b_with_rng(password, id_a, id_b, &mut UnwrapErr(SysRng)) } /// Start with symmetric identity. @@ -341,7 +338,7 @@ impl Spake2 { #[cfg(feature = "getrandom")] #[must_use] pub fn start_symmetric(password: &Password, id_s: &Identity) -> (Self, Vec) { - Self::start_symmetric_with_rng(password, id_s, &mut SysRng.unwrap_err()) + Self::start_symmetric_with_rng(password, id_s, &mut UnwrapErr(SysRng)) } /// Start with identity `idA` and the provided cryptographically secure RNG. diff --git a/srp/Cargo.toml b/srp/Cargo.toml index f054845..0466e2d 100644 --- a/srp/Cargo.toml +++ b/srp/Cargo.toml @@ -17,16 +17,16 @@ edition = "2024" rust-version = "1.85" [dependencies] -bigint = { package = "crypto-bigint", version = "0.7.0-rc.21", features = ["alloc"] } -common = { package = "crypto-common", version = "0.2.0-rc.11" } -digest = "0.11.0-rc.7" +bigint = { package = "crypto-bigint", version = "0.7.0-rc.22", features = ["alloc"] } +common = { package = "crypto-common", version = "0.2.0-rc.13" } +digest = "0.11.0-rc.9" subtle = { version = "2.4", default-features = false } [dev-dependencies] -getrandom = { version = "0.4.0-rc.0", features = ["sys_rng"] } +getrandom = { version = "0.4.0-rc.1", features = ["sys_rng"] } hex-literal = "1" -sha1 = "0.11.0-rc.3" -sha2 = "0.11.0-rc.3" +sha1 = "0.11.0-rc.4" +sha2 = "0.11.0-rc.4" [features] default = ["getrandom"] diff --git a/srp/src/groups.rs b/srp/src/groups.rs index 71eb70f..a9d06a2 100644 --- a/srp/src/groups.rs +++ b/srp/src/groups.rs @@ -9,7 +9,7 @@ use bigint::{ Odd, U1024, U1536, U2048, U3072, U4096, - modular::{BoxedMontyForm, ConstMontyForm, ConstMontyParams, MontyParams}, + modular::{BoxedMontyForm, ConstMontyForm, ConstMontyParams, FixedMontyParams}, }; use core::{ any, @@ -65,8 +65,8 @@ macro_rules! group_trait_impls { #[allow(deprecated)] impl ConstMontyParams<{ <$uint>::LIMBS }> for $name { const LIMBS: usize = <$uint>::LIMBS; - const PARAMS: MontyParams<{ <$uint>::LIMBS }> = - MontyParams::new_vartime(Odd::<$uint>::from_be_hex($n)); + const PARAMS: FixedMontyParams<{ <$uint>::LIMBS }> = + FixedMontyParams::new_vartime(Odd::<$uint>::from_be_hex($n)); } #[allow(deprecated)] diff --git a/srp/tests/srp.rs b/srp/tests/srp.rs index 106613c..3b76291 100644 --- a/srp/tests/srp.rs +++ b/srp/tests/srp.rs @@ -1,12 +1,12 @@ use getrandom::{ SysRng, - rand_core::{RngCore, TryRngCore}, + rand_core::{Rng, UnwrapErr}, }; use sha2::Sha256; use srp::{Client, Server, groups::G2048}; fn auth_test_rfc5054(true_pwd: &[u8], auth_pwd: &[u8]) { - let mut rng = SysRng.unwrap_err(); + let mut rng = UnwrapErr(SysRng); let username = b"alice"; // Client instance creation @@ -78,7 +78,7 @@ fn auth_test_rfc5054(true_pwd: &[u8], auth_pwd: &[u8]) { #[allow(deprecated)] fn auth_test_legacy(true_pwd: &[u8], auth_pwd: &[u8]) { - let mut rng = SysRng.unwrap_err(); + let mut rng = UnwrapErr(SysRng); let username = b"alice"; // Client instance creation