using Org.BouncyCastle.X509; using Org.BouncyCastle.Security; using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.Crypto.Parameters; // Generate a new key pair var keyPairGen = new RsaKeyPairGenerator(); keyPairGen.Init(new KeyGenerationParameters(new SecureRandom(), 2048)); var keyPair = keyPairGen.GenerateKeyPair(); // Create a self-signed certificate var certGen = new X509V3CertificateGenerator(); certGen.SetSerialNumber(BigInteger.ValueOf(1)); certGen.SetIssuerDN(new X509Name("CN=Example")); certGen.SetSubjectDN(new X509Name("CN=Example")); certGen.SetPublicKey(keyPair.Public); var notBefore = DateTime.UtcNow.AddDays(-1); var notAfter = DateTime.UtcNow.AddDays(30); certGen.SetNotBefore(notBefore); certGen.SetNotAfter(notAfter); certGen.SetSignatureAlgorithm("SHA256WithRSAEncryption"); var certificate = certGen.Generate(keyPair.Private);
using Org.BouncyCastle.X509; using Org.BouncyCastle.Security; using System.IO; var certPath = "/path/to/certificate.crt"; var certStream = new FileStream(certPath, FileMode.Open, FileAccess.Read); var certificateParser = new X509CertificateParser(); var certificate = certificateParser.ReadCertificate(certStream);This example loads an X.509 certificate file from disk, and parses it into a `X509Certificate` object. Overall, Org.BouncyCastle.X509 provides a comprehensive set of tools for working with X.509 certificates in C#. From generating new certificates to parsing existing ones, this package library can help make certificate management easier and more secure.