Beispiel #1
0
 protected Connection(CertificatesStorage trustedCertificates, X509Certificate2 certificate, Logger logger)
 {
     _trustedCertificates = trustedCertificates;
     _localCertificate    = certificate;
     _state  = ConnectionState.Disconnected;
     _logger = logger;
 }
        public AsyncClient(UserId id, CertificatesStorage trustedCertificates, X509Certificate2 certificate, IApi api, IClientNotifier notifier, Logger logger)
            : base(trustedCertificates, certificate, logger)
        {
            Id = id;

            _api                 = api;
            _requestQueue        = new RequestQueue(api);
            _requestQueue.Error += OnRequestQueueError;
            _notifier            = notifier;

            _reconnect    = true;
            _reconnecting = false;
            _logger       = logger;
        }
Beispiel #3
0
        public static CertificateStatus GetCertificateValidationStatus(X509Certificate2 certificate, CertificatesStorage trustedCertificates)
        {
            var chain = new X509Chain();

            chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority;

            if (!chain.Build(certificate))
            {
                return(CertificateStatus.Untrusted);
            }
            else
            {
                if (chain.ChainStatus.Any(s => s.Status == X509ChainStatusFlags.UntrustedRoot))
                {
                    if (trustedCertificates != null && trustedCertificates.Exist(certificate))
                    {
                        return(CertificateStatus.Trusted);
                    }
                    else if (certificate.Issuer == certificate.Subject)
                    {
                        return(CertificateStatus.SelfSigned);
                    }
                    else
                    {
                        return(CertificateStatus.Untrusted);
                    }
                }
                return(CertificateStatus.Trusted);
            }
        }