Skip to content

Commit 5326915

Browse files
committed
Clean up rand_core feature
1 parent a43fc88 commit 5326915

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ml-dsa/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ categories = ["cryptography"]
1515
keywords = ["crypto", "signature"]
1616

1717
[features]
18-
default = ["std"]
18+
default = ["std", "rand_core"]
1919
std = ["sha3/std"]
2020
zeroize = ["dep:zeroize"]
21-
rand_core = ["signature/rand_core"]
21+
rand_core = ["dep:rand_core", "signature/rand_core"]
2222

2323
[dependencies]
2424
hybrid-array = { version = "0.2.3", features = ["extra-sizes"]}
2525
num-traits = "0.2.19"
26-
rand = "0.8.5"
26+
rand_core = { version = "0.6.4", optional = true }
2727
sha3 = "0.10.8"
2828
signature = "2.3.0-pre.4"
2929
zeroize = { version = "1.8.1", optional = true, default-features = false }

ml-dsa/src/lib.rs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ use hybrid_array::{
4949
},
5050
Array,
5151
};
52-
use rand::{CryptoRng, RngCore};
52+
53+
#[cfg(feature = "rand_core")]
54+
use rand_core::CryptoRngCore;
5355

5456
use crate::algebra::{AlgebraExt, Elem, NttMatrix, NttVector, Truncate, Vector};
5557
use crate::crypto::H;
@@ -270,11 +272,12 @@ impl<P: MlDsaParams> SigningKey<P> {
270272
/// This method will return an opaque error if the context string is more than 255 bytes long,
271273
/// or if it fails to get enough randomness.
272274
// Algorithm 2 ML-DSA.Sign
275+
#[cfg(feature = "rand_core")]
273276
pub fn sign_randomized(
274277
&self,
275278
M: &[u8],
276279
ctx: &[u8],
277-
rng: &mut (impl CryptoRng + RngCore),
280+
rng: &mut impl CryptoRngCore,
278281
) -> Result<Signature<P>, Error> {
279282
if ctx.len() > 255 {
280283
return Err(Error::new());
@@ -359,7 +362,7 @@ impl<P: MlDsaParams> signature::RandomizedSigner<Signature<P>> for SigningKey<P>
359362
rng: &mut impl CryptoRngCore,
360363
msg: &[u8],
361364
) -> Result<Signature<P>, Error> {
362-
self.sign(msg, &[], rng)
365+
self.sign_randomized(msg, &[], rng)
363366
}
364367
}
365368

@@ -524,7 +527,8 @@ pub trait KeyGen: MlDsaParams {
524527
type KeyPair: signature::Keypair;
525528

526529
/// Generate a signing key pair from the specified RNG
527-
fn key_gen(rng: &mut (impl CryptoRng + RngCore)) -> Self::KeyPair;
530+
#[cfg(feature = "rand_core")]
531+
fn key_gen(rng: &mut impl CryptoRngCore) -> Self::KeyPair;
528532

529533
/// Deterministically generate a signing key pair from the specified seed
530534
// TODO(RLB): Only expose this based on a feature.
@@ -539,7 +543,8 @@ where
539543

540544
/// Generate a signing key pair from the specified RNG
541545
// Algorithm 1 ML-DSA.KeyGen()
542-
fn key_gen(rng: &mut (impl CryptoRng + RngCore)) -> KeyPair<P> {
546+
#[cfg(feature = "rand_core")]
547+
fn key_gen(rng: &mut impl CryptoRngCore) -> KeyPair<P> {
543548
let mut xi = B32::default();
544549
rng.fill_bytes(&mut xi);
545550
Self::key_gen_internal(&xi)
@@ -612,7 +617,12 @@ mod test {
612617
where
613618
P: MlDsaParams + PartialEq,
614619
{
620+
#[cfg(feature = "rand_core")]
615621
let kp = P::key_gen(&mut rand::thread_rng());
622+
623+
#[cfg(not(feature = "rand_core"))]
624+
let kp = P::key_gen_internal(&Default::default());
625+
616626
let sk = kp.signing_key;
617627
let vk = kp.verifying_key;
618628

@@ -643,8 +653,12 @@ mod test {
643653
where
644654
P: MlDsaParams,
645655
{
646-
let mut rng = rand::thread_rng();
647-
let kp = P::key_gen(&mut rng);
656+
#[cfg(feature = "rand_core")]
657+
let kp = P::key_gen(&mut rand::thread_rng());
658+
659+
#[cfg(not(feature = "rand_core"))]
660+
let kp = P::key_gen_internal(&Default::default());
661+
648662
let sk = kp.signing_key;
649663
let vk = kp.verifying_key;
650664

0 commit comments

Comments
 (0)