Beispiel #1
0
        /// <summary>
        /// Export the certificate public and private key details.
        /// </summary>
        /// <param name="output">The stream to write the data to.</param>
        /// <param name="certificate">The certificate to export.</param>
        public void ExportCertificatePem(TextWriter output, X509Certificate2 certificate)
        {
            // Convert X509Certificate2 to X509.X509Certificate
            Key.X509.X509CertificateParser certParser = new Key.X509.X509CertificateParser();
            Key.X509.X509Certificate       certBouncy = certParser.ReadCertificate(certificate.RawData);

            // Write the public and private key pem
            Key.OpenSsl.PemWriter pemWriter = new Key.OpenSsl.PemWriter(output);
            pemWriter.WriteObject(certBouncy.GetPublicKey());

            // If the certificate has a private key.
            if (certificate.HasPrivateKey)
            {
                string pemPrivateKeyData = certificate.PrivateKey.ToXmlString(true);
                byte[] pemPrivateKeyList = Encoding.Default.GetBytes(pemPrivateKeyData);
                Key.Utilities.IO.Pem.PemObject pemPrivateKey = new Key.Utilities.IO.Pem.PemObject("RSA PRIVATE KEY", pemPrivateKeyList);
                pemWriter.WriteObject(pemPrivateKey);
            }
        }