コード例 #1
0
ファイル: SSLWrapping.cs プロジェクト: Azure/RingMaster
        /// <summary>
        /// Initializes this instance.
        /// </summary>
        /// <param name="identities">The identities object to use.</param>
        /// <param name="rules">any additional rules to validate certificates</param>
        /// <param name="flags">wrapper validation flags</param>
        /// <exception cref="System.ArgumentException">serverCerts</exception>
        private void Initialize(CertificateRules.CertIdentities identities, IEnumerable <CertificateRules.AbstractCertificateRule> rules, CertificateRules.CertificateRulesFlags flags)
        {
            if (identities == null)
            {
                throw new ArgumentNullException(nameof(identities));
            }

            // record and validate the identities provided
            this.identities = identities;

            if (identities.ServerIdentity != null && !CertificateRules.IsCertificateTimeValidRule.IsValidCertificate(identities.ServerIdentity))
            {
                throw new ArgumentException("bad servercertificate");
            }

            foreach (X509Certificate cert in identities.ClientIdentities)
            {
                if (!CertificateRules.IsCertificateTimeValidRule.IsValidCertificate(cert))
                {
                    throw new ArgumentException("bad client certificate");
                }
            }

            this.mustCheckCertificateRevocation = (flags & CertificateRules.CertificateRulesFlags.MustCheckCertificateRevocation) == CertificateRules.CertificateRulesFlags.MustCheckCertificateRevocation;
            this.mustCheckCertificateTrustChain = (flags & CertificateRules.CertificateRulesFlags.MustCheckCertificateTrustChain) == CertificateRules.CertificateRulesFlags.MustCheckCertificateTrustChain;

            if (rules != null)
            {
                this.rules = new CertificateValidator(rules);
            }
            else
            {
                this.rules = new CertificateValidator(identities, flags);
            }
        }
コード例 #2
0
ファイル: SSLWrapping.cs プロジェクト: Azure/RingMaster
        /// <summary>
        /// Initializes this instance.
        /// </summary>
        /// <param name="clientCerts">The client certs.</param>
        /// <param name="serverCerts">The server certs.</param>
        /// <param name="rules">any additional rules to validate certificates</param>
        /// <param name="flags">wrapper validation flags</param>
        /// <exception cref="System.ArgumentException">serverCerts</exception>
        private void Initialize(X509Certificate[] clientCerts, X509Certificate[] serverCerts, IEnumerable <CertificateRules.AbstractCertificateRule> rules, CertificateRules.CertificateRulesFlags flags)
        {
            CertificateRules.CertIdentities ident = new CertificateRules.CertIdentities();
            ident.SetClientIdentities(clientCerts);
            ident.SetServerIdentities(serverCerts);

            this.Initialize(ident, rules, flags);
        }
コード例 #3
0
ファイル: SSLWrapping.cs プロジェクト: Azure/RingMaster
 /// <summary>
 /// Initializes a new instance of the <see cref="SslWrapping"/> class.
 /// </summary>
 /// <param name="identities">The identities object to use.</param>
 /// <param name="flags">wrapper validation flags</param>
 /// <param name="rules">any additional rules to validate certificates</param>
 public SslWrapping(CertificateRules.CertIdentities identities, IEnumerable <CertificateRules.AbstractCertificateRule> rules, CertificateRules.CertificateRulesFlags flags = CertificateValidator.DefaultFlags)
 {
     this.Initialize(identities, rules, flags);
 }