<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.2" />

MLDsaParameterSet

public sealed class MLDsaParameterSet
using Org.BouncyCastle.Pqc.Crypto.Crystals.Dilithium; using Org.BouncyCastle.Security; using Org.BouncyCastle.Utilities.Collections; using System; using System.Collections.Generic; namespace Org.BouncyCastle.Crypto.Parameters { public sealed class MLDsaParameterSet { public static readonly MLDsaParameterSet ml_dsa_44 = new MLDsaParameterSet("ML-DSA-44", 2); public static readonly MLDsaParameterSet ml_dsa_65 = new MLDsaParameterSet("ML-DSA-65", 3); public static readonly MLDsaParameterSet ml_dsa_87 = new MLDsaParameterSet("ML-DSA-87", 5); private static readonly Dictionary<string, MLDsaParameterSet> ByName = new Dictionary<string, MLDsaParameterSet> { { ml_dsa_44.Name, ml_dsa_44 }, { ml_dsa_65.Name, ml_dsa_65 }, { ml_dsa_87.Name, ml_dsa_87 } }; private readonly string m_name; private readonly int m_mode; public string Name => m_name; internal int PrivateKeyLength { get { switch (m_mode) { case 2: return 2560; case 3: return 4032; case 5: return 4896; default: throw new InvalidOperationException(); } } } internal int PublicKeyLength { get { switch (m_mode) { case 2: return 1312; case 3: return 1952; case 5: return 2592; default: throw new InvalidOperationException(); } } } internal int SeedLength => 32; internal static MLDsaParameterSet FromName(string name) { return CollectionUtilities.GetValueOrNull(ByName, name); } private MLDsaParameterSet(string name, int mode) { if (name == null) throw new ArgumentNullException("name"); m_name = name; m_mode = mode; } internal DilithiumEngine GetEngine(SecureRandom random) { return new DilithiumEngine(m_mode, random, false); } public override string ToString() { return Name; } } }