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

CmceKeyPairGenerator

using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Security; namespace Org.BouncyCastle.Pqc.Crypto.Cmce { public sealed class CmceKeyPairGenerator : IAsymmetricCipherKeyPairGenerator { private CmceKeyGenerationParameters m_cmceParams; private SecureRandom random; private void Initialize(KeyGenerationParameters param) { m_cmceParams = (CmceKeyGenerationParameters)param; random = param.Random; } private AsymmetricCipherKeyPair GenKeyPair() { ICmceEngine engine = m_cmceParams.Parameters.Engine; byte[] array = new byte[engine.PrivateKeySize]; byte[] array2 = new byte[engine.PublicKeySize]; engine.KemKeypair(array2, array, random); CmcePublicKeyParameters publicParameter = new CmcePublicKeyParameters(m_cmceParams.Parameters, array2); CmcePrivateKeyParameters privateParameter = new CmcePrivateKeyParameters(m_cmceParams.Parameters, array); return new AsymmetricCipherKeyPair(publicParameter, privateParameter); } public void Init(KeyGenerationParameters param) { Initialize(param); } public AsymmetricCipherKeyPair GenerateKeyPair() { return GenKeyPair(); } } }