예제 #1
0
        public void CanAttachCTLToSSLInfo()
        {
            var testEndpoint          = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2924);
            CTLContextBuilder builder = new CTLContextBuilder();

            builder.CTLInfo.ListIdentifier = "my test list binding";
            builder.CTLInfo.Certificates.Add(Verisign);
            builder.CTLInfo.Certificates.Add(KisaRoot1);
            builder.Signers.Add(TestCertificate);
            HttpAPIManager manager = new HttpAPIManager();
            var            context = builder.ToCTLContext();

            try
            {
                context.ImportInStore(StoreLocation.LocalMachine, StoreName.Root);
                SSLInfo info = new SSLInfo();
                info.CheckClientCertificate = false;
                info.NegotiateClientCert    = true;
                info.CTLIdentifier          = context.CTLInfo.ListIdentifier;
                info.CTLStoreName           = StoreName.Root;
                info.Certificate            = TestCertificate;
                manager.SetSSLInfo(testEndpoint, info);
            }
            finally
            {
                context.RemoveFromStore(StoreLocation.LocalMachine, StoreName.Root);
                manager.RemoveSSLInfo(testEndpoint);
            }
        }
예제 #2
0
        public void CanListCertificates()
        {
            var testEndpoints = new[]
            {
                new IPEndPoint(IPAddress.Parse("127.0.0.1"), 462),
                new IPEndPoint(IPAddress.Parse("127.0.0.2"), 462)
            };
            HttpAPIManager manager     = new HttpAPIManager();
            var            oldSslCount = manager.GetSSLInfos().Count();

            try
            {
                foreach (var endpoint in testEndpoints)
                {
                    manager.SetSSLInfo(endpoint, new SSLInfo(TestCertificate.Thumbprint));
                }
                var newSslCount = manager.GetSSLInfos().Count();
                Assert.Equal(oldSslCount + testEndpoints.Length, newSslCount);
            }
            finally
            {
                foreach (var endpoint in testEndpoints)
                {
                    manager.RemoveSSLInfo(endpoint);
                }
            }
        }
예제 #3
0
        public void CanSetSSLInfoTwiceAndSetToNullToRemove()
        {
            var testEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 464);
            var info         = new SSLInfo(TestCertificate.Thumbprint);

            HttpAPIManager manager = new HttpAPIManager();

            manager.SetSSLInfo(testEndpoint, info);
            try
            {
                Assert.NotNull(manager.GetSSLInfo(testEndpoint));
                Assert.Equal(false, manager.GetSSLInfo(testEndpoint).NegotiateClientCert);
                info.NegotiateClientCert = true;
                manager.SetSSLInfo(testEndpoint, info);
                Assert.NotNull(manager.GetSSLInfo(testEndpoint));
                Assert.Equal(true, manager.GetSSLInfo(testEndpoint).NegotiateClientCert);
            }
            finally
            {
                manager.SetSSLInfo(testEndpoint, null);
                Assert.Null(manager.GetSSLInfo(testEndpoint));
            }
        }
예제 #4
0
        public void CanSetCertificates()
        {
            var            testEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 462);
            HttpAPIManager manager      = new HttpAPIManager();

            manager.SetSSLInfo(testEndpoint, new SSLInfo(TestCertificate.Thumbprint));
            try
            {
                var sslInfo = manager.GetSSLInfo(testEndpoint);
                Assert.NotNull(sslInfo);
                Assert.Equal(TestCertificate.Thumbprint, sslInfo.Certificate.Thumbprint);
            }
            finally
            {
                manager.RemoveSSLInfo(testEndpoint);
                var sslInfo = manager.GetSSLInfo(testEndpoint);
                Assert.Null(sslInfo);
            }
        }