private bool checkServerIdentity(Mono.Security.X509.X509Certificate cert)
        {
            string targetHost = this.Context.ClientSettings.TargetHost;

            Mono.Security.X509.X509Extension extension = cert.Extensions["2.5.29.17"];
            if (extension != null)
            {
                SubjectAltNameExtension altNameExtension = new SubjectAltNameExtension(extension);
                foreach (string dnsName in altNameExtension.DNSNames)
                {
                    if (TlsServerCertificate.Match(targetHost, dnsName))
                    {
                        return(true);
                    }
                }
                foreach (string ipAddress in altNameExtension.IPAddresses)
                {
                    if (ipAddress == targetHost)
                    {
                        return(true);
                    }
                }
            }
            return(this.checkDomainName(cert.SubjectName));
        }
Beispiel #2
0
        private bool checkServerIdentity(Mono.Security.X509.X509Certificate cert)
        {
            ClientContext clientContext = (ClientContext)base.Context;
            string        targetHost    = clientContext.ClientSettings.TargetHost;

            Mono.Security.X509.X509Extension x509Extension = cert.Extensions["2.5.29.17"];
            if (x509Extension != null)
            {
                SubjectAltNameExtension subjectAltNameExtension = new SubjectAltNameExtension(x509Extension);
                foreach (string pattern in subjectAltNameExtension.DNSNames)
                {
                    if (TlsServerCertificate.Match(targetHost, pattern))
                    {
                        return(true);
                    }
                }
                foreach (string a in subjectAltNameExtension.IPAddresses)
                {
                    if (a == targetHost)
                    {
                        return(true);
                    }
                }
            }
            return(this.checkDomainName(cert.SubjectName));
        }
        private bool checkDomainName(string subjectName)
        {
            ClientContext   context         = (ClientContext)this.Context;
            string          empty           = string.Empty;
            MatchCollection matchCollection = new Regex("CN\\s*=\\s*([^,]*)").Matches(subjectName);

            if (matchCollection.Count == 1 && matchCollection[0].Success)
            {
                empty = matchCollection[0].Groups[1].Value.ToString();
            }
            return(TlsServerCertificate.Match(context.ClientSettings.TargetHost, empty));
        }
Beispiel #4
0
        private bool checkDomainName(string subjectName)
        {
            ClientContext   clientContext   = (ClientContext)base.Context;
            string          pattern         = string.Empty;
            Regex           regex           = new Regex("CN\\s*=\\s*([^,]*)");
            MatchCollection matchCollection = regex.Matches(subjectName);

            if (matchCollection.Count == 1 && matchCollection[0].Success)
            {
                pattern = matchCollection[0].Groups[1].Value.ToString();
            }
            return(TlsServerCertificate.Match(clientContext.ClientSettings.TargetHost, pattern));
        }