From 15cb4d2d980a92cb2c83451c1876d6b8ecddd12e Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Sat, 9 May 2026 17:07:46 -0600 Subject: [PATCH] ml-dsa: remove `KeyGen` trait It has been replaced by the `KeyInit` and `Generate` traits from the `crypto-common` crate. See also: #1342 --- ml-dsa/src/lib.rs | 44 -------------------------------------------- 1 file changed, 44 deletions(-) diff --git a/ml-dsa/src/lib.rs b/ml-dsa/src/lib.rs index c4a4e88e..4026f145 100644 --- a/ml-dsa/src/lib.rs +++ b/ml-dsa/src/lib.rs @@ -85,9 +85,6 @@ use hybrid_array::{ use module_lattice::Truncate; use sha3::Shake256; -#[cfg(feature = "rand_core")] -use signature::rand_core::CryptoRng; - /// A 32-byte array, defined here for brevity because it is used several times pub type B32 = Array; @@ -258,47 +255,6 @@ impl ParameterSet for MlDsa87 { const TAU: usize = 60; } -/// A parameter set that knows how to generate key pairs. -#[deprecated( - since = "0.1.0", - note = "use the `KeyInit` or `Generate` traits instead" -)] -pub trait KeyGen: MlDsaParams { - /// The type that is returned by key generation - type KeyPair: Keypair; - - /// Generate a signing key pair from the specified RNG - #[cfg(feature = "rand_core")] - fn key_gen(rng: &mut R) -> Self::KeyPair; - - /// Deterministically generate a signing key pair from the specified seed - /// - /// This method reflects the ML-DSA.KeyGen_internal algorithm from FIPS 204. - fn from_seed(xi: &B32) -> Self::KeyPair; -} - -#[allow(deprecated, reason = "deprecated impl block")] -impl

KeyGen for P -where - P: MlDsaParams, -{ - type KeyPair = SigningKey

; - - /// Generate a signing key pair from the specified RNG - #[cfg(feature = "rand_core")] - fn key_gen(rng: &mut R) -> SigningKey

{ - let mut xi = B32::default(); - rng.fill_bytes(&mut xi); - Self::from_seed(&xi) - } - - /// Deterministically generate a signing key pair from the specified seed - // Algorithm 6 ML-DSA.KeyGen_internal - fn from_seed(seed: &Seed) -> SigningKey

{ - SigningKey::from_seed(seed) - } -} - /// Type which opportunistically uses `Box` when the `alloc` feature is available but falls back to /// a stack-allocated type when it's unavailable. #[derive(Clone, Debug, PartialEq)]