private MSX509.X509Certificate2 InternalGenerateCertificate(X509Name name, Usage usage, int validity, MSX509.StoreName storeName, MSX509.X509Certificate2 issuer)
{
// Create a pair of keys
RsaKeyPairGenerator keyGenerator = new RsaKeyPairGenerator();
keyGenerator.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 1024));
var keys = keyGenerator.GenerateKeyPair();
// Get the signator (issuer or itself in the case of a root certificate which is self-signed)
AsymmetricKeyParameter signator = issuer == null ? keys.Private : DotNetUtilities.GetKeyPair(issuer.PrivateKey).Private;
return InternalGenerateCertificate(name, usage, validity, storeName, keys.Public, keys.Private, signator);
}