/// <summary> /// Creates certificate authority certificate if required. /// </summary> /// <param name="proxyServerConfiguration"></param> /// <param name="certificateGenerator"></param> /// <param name="certificateCache"></param> /// <returns></returns> private static CertificateManager GetCertificateManager(ProxyServerConfiguration proxyServerConfiguration, CertificateGenerator certificateGenerator, CertificateCache certificateCache) { var caCertificateFileName = Path.Combine(proxyServerConfiguration.CertificatePath, proxyServerConfiguration.CaCertificateFileName); if (!File.Exists(caCertificateFileName)) { CreateCaCertificate(certificateGenerator, proxyServerConfiguration); } AsymmetricCipherKeyPair caKeyPair = null; try { var caKeyPairText = File.ReadAllText(Path.Combine(proxyServerConfiguration.CertificatePath, proxyServerConfiguration.CaKeyPairFileName)); caKeyPair = certificateGenerator.ImportKeyPair(caKeyPairText); } catch (Exception ex) { throw new ConfigurationErrorsException(string.Format("Could not read the ca private key from file from {0}", proxyServerConfiguration.CaKeyPairFileName), ex); } X509Certificate caCertificate = null; try { var caCertificateText = File.ReadAllText(Path.Combine(proxyServerConfiguration.CertificatePath, proxyServerConfiguration.CaCertificateFileName)); caCertificate = certificateGenerator.ImportCertificate(caCertificateText); } catch (Exception ex) { throw new ConfigurationErrorsException(string.Format("Could not read the ca certificate from file from {0}", proxyServerConfiguration.CaCertificateFileName), ex); } var certificateManager = new CertificateManager(certificateCache, caKeyPair, caCertificate); return certificateManager; }
public void ImportKeyPair_InPemFormat() { // Arrange var certificateGenerator = new CertificateGenerator(); var caKeyPair = certificateGenerator.GetKeyPair(); var privateKeyText = certificateGenerator.ExportKeyPair(caKeyPair); //Act var keyPair = certificateGenerator.ImportKeyPair(privateKeyText); //Assert Assert.AreEqual(caKeyPair.Private, keyPair.Private); Assert.AreEqual(caKeyPair.Public, keyPair.Public); }