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);
}
}
}