Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int strength = 2048;
- const string password = "password";
- const string signatureAlgorithm = "SHA256WithRSA";
- var randomGenerator = new CryptoApiRandomGenerator();
- var random = new SecureRandom(randomGenerator);
- var certificateGenerator = new X509V3CertificateGenerator();
- var serialNumber = BigIntegers.CreateRandomInRange(BigInteger.One, BigInteger.ValueOf(long.MaxValue), random);
- certificateGenerator.SetSerialNumber(serialNumber);
- certificateGenerator.SetSignatureAlgorithm(signatureAlgorithm);
- var subjectDn = new X509Name("CN=localhost");
- var issuerDn = subjectDn;
- certificateGenerator.SetIssuerDN(issuerDn);
- certificateGenerator.SetSubjectDN(subjectDn);
- var notBefore = DateTime.UtcNow.Date;
- var notAfter = notBefore.AddYears(5);
- certificateGenerator.SetNotBefore(notBefore);
- certificateGenerator.SetNotAfter(notAfter);
- var keyGenerationParameters = new KeyGenerationParameters(random, strength);
- var keyPairGenerator = new RsaKeyPairGenerator();
- keyPairGenerator.Init(keyGenerationParameters);
- var subjectKeyPair = keyPairGenerator.GenerateKeyPair();
- certificateGenerator.SetPublicKey(subjectKeyPair.Public);
- var issuerKeyPair = subjectKeyPair;
- var certificate = certificateGenerator.Generate(issuerKeyPair.Private, random);
- var store = new Pkcs12Store();
- var friendlyName = certificate.SubjectDN.ToString();
- var certificateEntry = new X509CertificateEntry(certificate);
- store.SetCertificateEntry(friendlyName, certificateEntry);
- store.SetKeyEntry(friendlyName, new AsymmetricKeyEntry(subjectKeyPair.Private), new[] { certificateEntry });
- var stream = new MemoryStream();
- store.Save(stream, password.ToCharArray(), random);
- File.WriteAllBytes("temp.pfx", stream.ToArray());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement