/// <summary>
        /// Validates the given certificate.
        /// </summary>
        /// <param name="certificate">X.509 Certificate to validate.</param>
        /// <exception cref="ArgumentNullException">The input parameter 'certificate' is null.</exception>
        /// <exception cref="SecurityTokenValidationException">X.509 Certificate validation failed.</exception>
        public override void Validate(X509Certificate2 certificate)
        {
            if (certificate == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("certificate");
            }

            X509CertificateChain chain = new X509CertificateChain(this.useMachineContext, (uint)this.chainPolicyOID);
            if (this.chainPolicy != null)
            {
                chain.ChainPolicy = this.chainPolicy;
            }

            if (!chain.Build(certificate))
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
                    new SecurityTokenValidationException(
                        SR.GetString(
                            SR.ID4070,
                            X509Util.GetCertificateId(certificate),
                            GetChainStatusInformation(chain.ChainStatus))));
            }
        }
 public override void Validate(X509Certificate2 certificate)
 {
     if (certificate == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("certificate");
     }
     X509CertificateChain chain = new X509CertificateChain(this.useMachineContext, this.chainPolicyOID);
     if (this.chainPolicy != null)
     {
         chain.ChainPolicy = this.chainPolicy;
     }
     if (!chain.Build(certificate))
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenValidationException(System.IdentityModel.SR.GetString("X509ChainBuildFail", new object[] { System.IdentityModel.SecurityUtils.GetCertificateId(certificate), GetChainStatusInformation(chain.ChainStatus) })));
     }
 }