/// <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); } }
/// <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); }
/// <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); }