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

DilithiumKeyPairGenerator

using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Security; namespace Org.BouncyCastle.Pqc.Crypto.Crystals.Dilithium { public class DilithiumKeyPairGenerator : IAsymmetricCipherKeyPairGenerator { private SecureRandom random; private DilithiumParameters parameters; public void Init(KeyGenerationParameters param) { random = param.Random; parameters = ((DilithiumKeyGenerationParameters)param).Parameters; } public AsymmetricCipherKeyPair GenerateKeyPair() { parameters.GetEngine(random).GenerateKeyPair(out byte[] rho, out byte[] key, out byte[] tr, out byte[] s1_, out byte[] s2_, out byte[] t0_, out byte[] encT); DilithiumPublicKeyParameters publicParameter = new DilithiumPublicKeyParameters(parameters, rho, encT); DilithiumPrivateKeyParameters privateParameter = new DilithiumPrivateKeyParameters(parameters, rho, key, tr, s1_, s2_, t0_, encT); return new AsymmetricCipherKeyPair(publicParameter, privateParameter); } } }