public void GetClientCertificateOrDefault3() { var text = new StringBuilder(); var loggerFactory = LoggerFactory.Create(builder => builder.AddStringBuilder(text)); var path = GetCertificatesPath(); Console.WriteLine("Path: " + path); var options = new SslOptions { CertificateName = "cert-not", CertificatePath = Path.Combine(path, "client-not.pfx"), CertificatePassword = "******" }; var ssl = new SslLayer(options, loggerFactory); X509Certificate2Collection certs = null; try { certs = ssl.GetClientCertificatesOrDefault(); Assert.Fail("Expected an exception."); } catch (Exception e) { Console.WriteLine(e); } Console.WriteLine(text.ToString()); Assert.That(text.ToString(), Does.Contain("Failed to load client certificate")); text.Clear(); }
public void GetClientCertificateOrDefault1() { var text = new StringBuilder(); var loggerFactory = LoggerFactory.Create(builder => builder.AddStringBuilder(text)); var path = GetCertificatesPath(); Console.WriteLine("Path: " + path); var options = new SslOptions { CertificatePath = null }; var ssl = new SslLayer(options, loggerFactory); var certs = ssl.GetClientCertificatesOrDefault(); Assert.That(certs, Is.Null); }
public async Task GetStreamAsync() { var options = new SslOptions(); var ssl = new SslLayer(options, new NullLoggerFactory()); await AssertEx.ThrowsAsync <ArgumentNullException>(async() => await ssl.GetStreamAsync(null)); var stream = new MemoryStream(); var sslStream = await ssl.GetStreamAsync(stream); Assert.That(sslStream, Is.SameAs(stream)); options = new SslOptions { Enabled = true }; ssl = new SslLayer(options, new NullLoggerFactory()); await AssertEx.ThrowsAsync <ConnectionException>(async() => sslStream = await ssl.GetStreamAsync(stream)); }
public void GetClientCertificateOrDefault2() { var text = new StringBuilder(); var loggerFactory = LoggerFactory.Create(builder => builder.AddStringBuilder(text)); var path = GetCertificatesPath(); Console.WriteLine("Path: " + path); var options = new SslOptions { CertificateName = "cert1", CertificatePath = Path.Combine(path, "client1.pfx"), CertificatePassword = "******" }; var ssl = new SslLayer(options, loggerFactory); var certs = ssl.GetClientCertificatesOrDefault(); Assert.That(certs, Is.Not.Null); Assert.That(certs.Count, Is.EqualTo(1)); }
public void ValidateCertificate() { var text = new StringBuilder(); var loggerFactory = LoggerFactory.Create(builder => builder.AddStringBuilder(text)); var sender = new object(); var cert = new X509Certificate(); var chain = new X509Chain(); var options = new SslOptions { ValidateCertificateChain = true }; var ssl = new SslLayer(options, loggerFactory); var policyErrors = SslPolicyErrors.RemoteCertificateChainErrors; var valid = ssl.ValidateCertificate(sender, cert, chain, policyErrors); Console.WriteLine(text.ToString()); Assert.That(text.ToString(), Does.Contain("certificate error: RemoteCertificateChainErrors")); Assert.That(text.ToString(), Does.Contain("chain status:")); text.Clear(); options = new SslOptions { ValidateCertificateChain = false }; ssl = new SslLayer(options, loggerFactory); policyErrors = SslPolicyErrors.RemoteCertificateChainErrors; valid = ssl.ValidateCertificate(sender, cert, chain, policyErrors); Console.WriteLine(text.ToString()); Assert.That(text.ToString(), Does.Contain("certificate errors (chain validation) ignored by client configuration")); text.Clear(); options = new SslOptions { ValidateCertificateName = false }; ssl = new SslLayer(options, loggerFactory); policyErrors = SslPolicyErrors.RemoteCertificateNameMismatch; valid = ssl.ValidateCertificate(sender, cert, chain, policyErrors); Console.WriteLine(text.ToString()); Assert.That(text.ToString(), Does.Contain("certificate errors (name validation) ignored by client configuration")); text.Clear(); options = new SslOptions { ValidateCertificateName = true }; ssl = new SslLayer(options, loggerFactory); policyErrors = SslPolicyErrors.RemoteCertificateNameMismatch; valid = ssl.ValidateCertificate(sender, cert, chain, policyErrors); Console.WriteLine(text.ToString()); Assert.That(text.ToString(), Does.Contain("certificate error: RemoteCertificateNameMismatch")); text.Clear(); options = new SslOptions(); ssl = new SslLayer(options, loggerFactory); policyErrors = SslPolicyErrors.RemoteCertificateNotAvailable; valid = ssl.ValidateCertificate(sender, cert, chain, policyErrors); Console.WriteLine(text.ToString()); Assert.That(text.ToString(), Does.Contain("certificate error: RemoteCertificateNotAvailable")); text.Clear(); }