Advertisement
evilbloodydemon

Untitled

Jul 16th, 2015
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.09 KB | None | 0 0
  1.             const int strength = 2048;
  2.             const string password = "password";
  3.             const string signatureAlgorithm = "SHA256WithRSA";
  4.  
  5.             var randomGenerator = new CryptoApiRandomGenerator();
  6.             var random = new SecureRandom(randomGenerator);
  7.             var certificateGenerator = new X509V3CertificateGenerator();
  8.             var serialNumber = BigIntegers.CreateRandomInRange(BigInteger.One, BigInteger.ValueOf(long.MaxValue), random);
  9.                         certificateGenerator.SetSerialNumber(serialNumber);
  10.  
  11.             certificateGenerator.SetSignatureAlgorithm(signatureAlgorithm);
  12.  
  13.             var subjectDn = new X509Name("CN=localhost");
  14.             var issuerDn = subjectDn;
  15.  
  16.             certificateGenerator.SetIssuerDN(issuerDn);
  17.             certificateGenerator.SetSubjectDN(subjectDn);
  18.  
  19.             var notBefore = DateTime.UtcNow.Date;
  20.             var notAfter = notBefore.AddYears(5);
  21.  
  22.             certificateGenerator.SetNotBefore(notBefore);
  23.             certificateGenerator.SetNotAfter(notAfter);
  24.  
  25.             var keyGenerationParameters = new KeyGenerationParameters(random, strength);
  26.  
  27.             var keyPairGenerator = new RsaKeyPairGenerator();
  28.             keyPairGenerator.Init(keyGenerationParameters);
  29.             var subjectKeyPair = keyPairGenerator.GenerateKeyPair();
  30.  
  31.             certificateGenerator.SetPublicKey(subjectKeyPair.Public);
  32.  
  33.             var issuerKeyPair = subjectKeyPair;
  34.             var certificate = certificateGenerator.Generate(issuerKeyPair.Private, random);
  35.  
  36.             var store = new Pkcs12Store();
  37.             var friendlyName = certificate.SubjectDN.ToString();
  38.  
  39.             var certificateEntry = new X509CertificateEntry(certificate);
  40.  
  41.             store.SetCertificateEntry(friendlyName, certificateEntry);
  42.             store.SetKeyEntry(friendlyName, new AsymmetricKeyEntry(subjectKeyPair.Private), new[] { certificateEntry });
  43.  
  44.             var stream = new MemoryStream();
  45.             store.Save(stream, password.ToCharArray(), random);
  46.  
  47.             File.WriteAllBytes("temp.pfx", stream.ToArray());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement