public void GenerateCaCertificate_SelfSigned_ValidCertificate() { // Arrange var certificateGenerator = new CertificateGenerator(); var caKeyPair = certificateGenerator.GetKeyPair(); const string subjectName = "Test CA"; IDictionary caCertificateDetails = new Hashtable(); caCertificateDetails[X509Name.CN] = subjectName; IList caCertificateDetailsOrder = new ArrayList(); caCertificateDetailsOrder.Add(X509Name.CN); // Act var caCertificate = certificateGenerator.GenerateCaCertificate(caKeyPair, caCertificateDetails, caCertificateDetailsOrder); // Assert Assert.AreEqual("CN=" + subjectName, caCertificate.IssuerDN.ToString()); //Self signed }
private static void CreateCaCertificate(CertificateGenerator certificateGenerator, IProxyServerConfiguration proxyServerConfiguration) { var caKeyPair = certificateGenerator.GetKeyPair(); IDictionary caCertificateDetails = new Hashtable(); caCertificateDetails[X509Name.C] = "UK"; caCertificateDetails[X509Name.O] = "Acceptance Test Proxy Organization"; caCertificateDetails[X509Name.OU] = "Testing Department"; //caCertificateDetails[X509Name.DnQualifier]; //populatated automatically from CN caCertificateDetails[X509Name.ST] = "London"; caCertificateDetails[X509Name.CN] = "AcceptanceTestProxy CA"; //caCertificateDetails[X509Name.SerialNumber] = CaCertificateName; //populatated automatically //RFC 5208 IList caCertificateDetailsOrder = new ArrayList(); caCertificateDetailsOrder.Add(X509Name.C); caCertificateDetailsOrder.Add(X509Name.O); caCertificateDetailsOrder.Add(X509Name.OU); //caCertificateDetailsOrder.Add(X509Name.DnQualifier); caCertificateDetailsOrder.Add(X509Name.ST); caCertificateDetailsOrder.Add(X509Name.CN); //caCertificateDetailsOrder.Add(X509Name.SerialNumber); var caCertificate = certificateGenerator.GenerateCaCertificate(caKeyPair, caCertificateDetails, caCertificateDetailsOrder); var caKeyPairFileName = Path.Combine(proxyServerConfiguration.CertificatePath, proxyServerConfiguration.CaKeyPairFileName); if (File.Exists(caKeyPairFileName)) { File.Delete(caKeyPairFileName); } var privateKeyText = certificateGenerator.ExportKeyPair(caKeyPair); File.WriteAllText(caKeyPairFileName, privateKeyText); var caCertificateFileName = Path.Combine(proxyServerConfiguration.CertificatePath, proxyServerConfiguration.CaCertificateFileName); if (File.Exists(caCertificateFileName)) { File.Delete(caCertificateFileName); } var certificateText = certificateGenerator.ExportCertificate(caCertificate); File.WriteAllText(caCertificateFileName, certificateText); }
public void ExportCertificate_InPemFormat() { // Arrange var certificateGenerator = new CertificateGenerator(); var caKeyPair = certificateGenerator.GetKeyPair(); const string caSubjectName = "Test CA"; IDictionary caCertificateDetails = new Hashtable(); caCertificateDetails[X509Name.CN] = caSubjectName; IList caCertificateDetailsOrder = new ArrayList(); caCertificateDetailsOrder.Add(X509Name.CN); var caCertificate = certificateGenerator.GenerateCaCertificate(caKeyPair, caCertificateDetails, caCertificateDetailsOrder); //Act var certificateText = certificateGenerator.ExportCertificate(caCertificate); //Assert Assert.True(certificateText.StartsWith("-----BEGIN CERTIFICATE-----\r\n")); Assert.True(certificateText.EndsWith("\r\n-----END CERTIFICATE-----\r\n")); }
public void GenerateCertificateSignedWithCaCertificate_SignedWithCaCertificate_ValidCertificate() { // Arrange var certificateGenerator = new CertificateGenerator(); var caKeyPair = certificateGenerator.GetKeyPair(); const string caSubjectName = "Test CA"; IDictionary caCertificateDetails = new Hashtable(); caCertificateDetails[X509Name.CN] = caSubjectName; IList caCertificateDetailsOrder = new ArrayList(); caCertificateDetailsOrder.Add(X509Name.CN); var caCertificate = certificateGenerator.GenerateCaCertificate(caKeyPair, caCertificateDetails, caCertificateDetailsOrder); var keyPair = certificateGenerator.GetKeyPair(); const string subjectName = "www.google.com"; IDictionary certificateDetails = new Hashtable(); certificateDetails[X509Name.CN] = subjectName; IList certificateDetailsOrder = new ArrayList(); certificateDetailsOrder.Add(X509Name.CN); // Act var certificate = certificateGenerator.GenerateCertificateSignedWithCaCertificate(caKeyPair, caCertificate, keyPair, certificateDetails, certificateDetailsOrder); // Assert Assert.AreEqual("CN=" + caSubjectName, certificate.IssuerDN.ToString()); //Signed with CA }
public void ImportCertificate_InPemFormat() { // Arrange var certificateGenerator = new CertificateGenerator(); var caKeyPair = certificateGenerator.GetKeyPair(); const string caSubjectName = "Test CA"; IDictionary caCertificateDetails = new Hashtable(); caCertificateDetails[X509Name.CN] = caSubjectName; IList caCertificateDetailsOrder = new ArrayList(); caCertificateDetailsOrder.Add(X509Name.CN); var caCertificate = certificateGenerator.GenerateCaCertificate(caKeyPair, caCertificateDetails, caCertificateDetailsOrder); var certificateText = certificateGenerator.ExportCertificate(caCertificate); //Act var certificate = certificateGenerator.ImportCertificate(certificateText); //Assert Assert.AreEqual(caCertificate.GetPublicKey(), certificate.GetPublicKey()); }