ml-dsa: bump rand_core to v0.9 (#899)

This commit is contained in:
Tony Arcieri
2025-02-13 12:54:14 -07:00
committed by GitHub
parent b532d1ee8f
commit bd3d94ce61
7 changed files with 1145 additions and 126 deletions
+3 -2
View File
@@ -15,6 +15,7 @@ defaults:
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-Dwarnings"
RUST_MIN_STACK: 6291456
jobs:
test:
@@ -29,5 +30,5 @@ jobs:
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- run: cargo test
- run: cargo test --all-features
- run: cargo test --release
- run: cargo test --all-features --release
Generated
+16 -101
View File
@@ -88,22 +88,13 @@ version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
[[package]]
name = "block-buffer"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
dependencies = [
"generic-array",
]
[[package]]
name = "block-buffer"
version = "0.11.0-rc.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17092d478f4fadfb35a7e082f62e49f0907fdf048801d9d706277e34f9df8a78"
dependencies = [
"crypto-common 0.2.0-rc.1",
"crypto-common",
]
[[package]]
@@ -163,7 +154,7 @@ version = "0.5.0-pre.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b1425e6ce000f05a73096556cabcfb6a10a3ffe3bb4d75416ca8f00819c0b6a"
dependencies = [
"crypto-common 0.2.0-rc.1",
"crypto-common",
"inout",
]
@@ -287,16 +278,6 @@ dependencies = [
"zeroize",
]
[[package]]
name = "crypto-common"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
"generic-array",
"typenum",
]
[[package]]
name = "crypto-common"
version = "0.2.0-rc.1"
@@ -328,25 +309,15 @@ dependencies = [
"zeroize",
]
[[package]]
name = "digest"
version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [
"block-buffer 0.10.4",
"crypto-common 0.1.6",
]
[[package]]
name = "digest"
version = "0.11.0-pre.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf2e3d6615d99707295a9673e889bf363a04b2a466bd320c65a72536f7577379"
dependencies = [
"block-buffer 0.11.0-rc.0",
"block-buffer",
"const-oid",
"crypto-common 0.2.0-rc.1",
"crypto-common",
"subtle",
]
@@ -354,7 +325,7 @@ dependencies = [
name = "dsa"
version = "0.7.0-pre.1"
dependencies = [
"digest 0.11.0-pre.9",
"digest",
"num-bigint-dig",
"num-traits",
"pkcs8",
@@ -372,7 +343,7 @@ name = "ecdsa"
version = "0.17.0-pre.9"
dependencies = [
"der",
"digest 0.11.0-pre.9",
"digest",
"elliptic-curve",
"hex-literal",
"rfc6979",
@@ -423,7 +394,7 @@ checksum = "cc43715037532dc2d061e5c97e81b684c28993d52a4fa4eb7d2ce2826d78f2f2"
dependencies = [
"base16ct",
"crypto-bigint",
"digest 0.11.0-pre.9",
"digest",
"ff",
"group",
"hex-literal",
@@ -479,16 +450,6 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "generic-array"
version = "0.14.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
dependencies = [
"typenum",
"version_check",
]
[[package]]
name = "getrandom"
version = "0.2.11"
@@ -548,7 +509,7 @@ version = "0.13.0-pre.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4b1fb14e4df79f9406b434b60acef9f45c26c50062cccf1346c6103b8c47d58"
dependencies = [
"digest 0.11.0-pre.9",
"digest",
]
[[package]]
@@ -605,15 +566,6 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "keccak"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654"
dependencies = [
"cpufeatures",
]
[[package]]
name = "keccak"
version = "0.2.0-pre.0"
@@ -654,7 +606,7 @@ checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
name = "lms-signature"
version = "0.1.0-pre"
dependencies = [
"digest 0.11.0-pre.9",
"digest",
"hex",
"hex-literal",
"hybrid-array",
@@ -679,27 +631,6 @@ version = "2.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
[[package]]
name = "ml-dsa"
version = "0.1.0-pre.1"
dependencies = [
"const-oid",
"criterion",
"hex",
"hex-literal",
"hybrid-array",
"num-traits",
"pkcs8",
"proptest",
"rand",
"rand_core",
"serde",
"serde_json",
"sha3 0.10.8",
"signature",
"zeroize",
]
[[package]]
name = "num-bigint"
version = "0.4.6"
@@ -1115,7 +1046,7 @@ checksum = "9540978cef7a8498211c1b1c14e5ce920fe5bd524ea84f4a3d72d4602515ae93"
dependencies = [
"cfg-if",
"cpufeatures",
"digest 0.11.0-pre.9",
"digest",
]
[[package]]
@@ -1126,17 +1057,7 @@ checksum = "540c0893cce56cdbcfebcec191ec8e0f470dd1889b6e7a0b503e310a94a168f5"
dependencies = [
"cfg-if",
"cpufeatures",
"digest 0.11.0-pre.9",
]
[[package]]
name = "sha3"
version = "0.10.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
dependencies = [
"digest 0.10.7",
"keccak 0.1.5",
"digest",
]
[[package]]
@@ -1145,8 +1066,8 @@ version = "0.11.0-pre.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e485881f388c2818d709796dc883c1ffcadde9d1f0e054f3a5c14974185261a6"
dependencies = [
"digest 0.11.0-pre.9",
"keccak 0.2.0-pre.0",
"digest",
"keccak",
]
[[package]]
@@ -1155,7 +1076,7 @@ version = "2.3.0-pre.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "054d71959c7051b9042c26af337f05cc930575ed2604d7d3ced3158383e59734"
dependencies = [
"digest 0.11.0-pre.9",
"digest",
"rand_core",
]
@@ -1168,7 +1089,7 @@ dependencies = [
"const-oid",
"criterion",
"ctr",
"digest 0.11.0-pre.9",
"digest",
"hex",
"hex-literal",
"hmac",
@@ -1184,7 +1105,7 @@ dependencies = [
"serde",
"serde_json",
"sha2",
"sha3 0.11.0-pre.4",
"sha3",
"signature",
"typenum",
"zerocopy",
@@ -1287,12 +1208,6 @@ version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "version_check"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "wait-timeout"
version = "0.2.0"
+9 -8
View File
@@ -6,10 +6,11 @@ members = [
"ed448",
"ed25519",
"lms",
"ml-dsa",
#"ml-dsa",
"rfc6979",
"slh-dsa"
]
exclude = ["ml-dsa"] # using rand_core v0.9
[profile.dev]
opt-level = 2
@@ -17,11 +18,11 @@ opt-level = 2
[patch.crates-io]
# A global patch crates-io block is used to avoid duplicate dependencies
# when pulling a member crate through git
dsa = { path = "./dsa" }
ecdsa = { path = "./ecdsa" }
dsa = { path = "./dsa" }
ecdsa = { path = "./ecdsa" }
ed448-signature = { path = "./ed448" }
ed25519 = { path = "./ed25519" }
lms-signature = { path = "./lms" }
ml-dsa = { path = "./ml-dsa" }
rfc6979 = { path = "./rfc6979" }
slh-dsa = { path = "./slh-dsa" }
ed25519 = { path = "./ed25519" }
lms-signature = { path = "./lms" }
#ml-dsa = { path = "./ml-dsa" }
rfc6979 = { path = "./rfc6979" }
slh-dsa = { path = "./slh-dsa" }
+1099
View File
File diff suppressed because it is too large Load Diff
+6 -3
View File
@@ -24,9 +24,9 @@ pkcs8 = ["dep:const-oid", "dep:pkcs8"]
[dependencies]
hybrid-array = { version = "0.2.3", features = ["extra-sizes"] }
num-traits = "0.2.19"
rand_core = { version = "0.6.4", optional = true }
rand_core = { version = "0.9", optional = true }
sha3 = "0.10.8"
signature = "2.3.0-pre.4"
signature = "=2.3.0-pre.5"
zeroize = { version = "1.8.1", optional = true, default-features = false }
const-oid = { version = "0.10.0-rc.1", features = ["db"], optional = true }
@@ -38,10 +38,13 @@ hex = { version = "0.4.3", features = ["serde"] }
hex-literal = "0.4.1"
pkcs8 = { version = "=0.11.0-rc.1", features = ["pem"] }
proptest = "1"
rand = "0.8.5"
rand = "0.9"
serde = { version = "1.0.215", features = ["derive"] }
serde_json = "1.0.132"
[[bench]]
name = "ml_dsa"
harness = false
[profile.dev]
opt-level = 2
+4 -4
View File
@@ -150,9 +150,9 @@ pub(crate) mod test {
assert_eq!(actual_decoded, *decoded);
// Test random decode/encode and encode/decode round trips
let mut rng = rand::thread_rng();
let mut rng = rand::rng();
let decoded = Polynomial::new(Array::from_fn(|_| {
let x: u32 = rng.gen();
let x: u32 = rng.random();
Elem::new(x % (b + 1))
}));
@@ -223,9 +223,9 @@ pub(crate) mod test {
assert_eq!(actual_decoded, *decoded);
// Test random decode/encode and encode/decode round trips
let mut rng = rand::thread_rng();
let mut rng = rand::rng();
let decoded = Polynomial::new(Array::from_fn(|_| {
let mut x: u32 = rng.gen();
let mut x: u32 = rng.random();
x %= a.0 + b.0;
b - Elem::new(x)
}));
+8 -8
View File
@@ -50,7 +50,7 @@ use hybrid_array::{
};
#[cfg(feature = "rand_core")]
use rand_core::CryptoRngCore;
use rand_core::{CryptoRng, TryCryptoRng};
#[cfg(feature = "zeroize")]
use zeroize::{Zeroize, ZeroizeOnDrop};
@@ -412,11 +412,11 @@ impl<P: MlDsaParams> SigningKey<P> {
/// or if it fails to get enough randomness.
// Algorithm 2 ML-DSA.Sign
#[cfg(feature = "rand_core")]
pub fn sign_randomized(
pub fn sign_randomized<R: TryCryptoRng>(
&self,
M: &[u8],
ctx: &[u8],
rng: &mut impl CryptoRngCore,
rng: &mut R,
) -> Result<Signature<P>, Error> {
if ctx.len() > 255 {
return Err(Error::new());
@@ -497,9 +497,9 @@ impl<P: MlDsaParams> signature::Signer<Signature<P>> for SigningKey<P> {
/// method.
#[cfg(feature = "rand_core")]
impl<P: MlDsaParams> signature::RandomizedSigner<Signature<P>> for SigningKey<P> {
fn try_sign_with_rng(
fn try_sign_with_rng<R: TryCryptoRng>(
&self,
rng: &mut impl CryptoRngCore,
rng: &mut R,
msg: &[u8],
) -> Result<Signature<P>, Error> {
self.sign_randomized(msg, &[], rng)
@@ -780,7 +780,7 @@ pub trait KeyGen: MlDsaParams {
/// Generate a signing key pair from the specified RNG
#[cfg(feature = "rand_core")]
fn key_gen(rng: &mut impl CryptoRngCore) -> Self::KeyPair;
fn key_gen<R: CryptoRng>(rng: &mut R) -> Self::KeyPair;
/// Deterministically generate a signing key pair from the specified seed
// TODO(RLB): Only expose this based on a feature.
@@ -796,7 +796,7 @@ where
/// Generate a signing key pair from the specified RNG
// Algorithm 1 ML-DSA.KeyGen()
#[cfg(feature = "rand_core")]
fn key_gen(rng: &mut impl CryptoRngCore) -> KeyPair<P> {
fn key_gen<R: CryptoRng>(rng: &mut R) -> KeyPair<P> {
let mut xi = B32::default();
rng.fill_bytes(&mut xi);
Self::key_gen_internal(&xi)
@@ -927,7 +927,7 @@ mod test {
const ITERATIONS: usize = 1000;
let mut rng = rand::thread_rng();
let mut rng = rand::rng();
let mut seed = B32::default();
for _i in 0..ITERATIONS {