title: BouncyCastle PrivateKey To X509Certificate2 PrivateKey
body: <p>I create a certificate using BouncyCastle </p>
  
  <pre><code>        var keypairgen = new RsaKeyPairGenerator();
          keypairgen.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 1024));
  
          var keypair = keypairgen.GenerateKeyPair();
  
          var gen = new X509V3CertificateGenerator();
  
          var CN = new X509Name("CN=" + certName);
          var SN = BigInteger.ProbablePrime(120, new Random());
  
          gen.SetSerialNumber(SN);
          gen.SetSubjectDN(CN);
          gen.SetIssuerDN(CN);
          gen.SetNotAfter(DateTime.Now.AddYears(1));
          gen.SetNotBefore(DateTime.Now.Subtract(new TimeSpan(7,0,0,0)));
          gen.SetSignatureAlgorithm("MD5WithRSA");
          gen.SetPublicKey(keypair.Public);
  
          gen.AddExtension( 
              X509Extensions.AuthorityKeyIdentifier.Id, 
              false, 
              new AuthorityKeyIdentifier( 
                  SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keypair.Public), 
                  new GeneralNames(new GeneralName(CN)), 
                  SN 
              )); 
  
          gen.AddExtension( 
              X509Extensions.ExtendedKeyUsage.Id, 
              false, 
              new ExtendedKeyUsage(new ArrayList() 
              { 
                  new DerObjectIdentifier("1.3.6.1.5.5.7.3.1") 
              }));
  
          var newCert = gen.Generate(keypair.Private);
  </code></pre>
  
  <p>This end with </p>
  
  <pre><code>X509Certificate2 certificate = new X509Certificate2(DotNetUtilities.ToX509Certificate((Org.BouncyCastle.X509.X509Certificate)newCert));
  </code></pre>
  
  <p>Now, because my assignment tells me to store both the Certificate and the PrivateKey in the X509Certificate2 object I need a way to convert the keypair.Private into a X509Certificate2.Private. Any ideas?</p>
  
  <p>Thanks.</p>