private static bool IsCertificatValid(X509Certificate2 Certificate, ClientCertificateInHeaderCollection clientCertificationCollection) { if (Certificate == null) { return(false); } // 1. Check time validity of certificate if (DateTime.Compare(DateTime.Now, Certificate.NotBefore) < 0 || DateTime.Compare(DateTime.Now, Certificate.NotAfter) > 0) { return(false); } bool isValid = true; foreach (ValidationCollection validationCollection in clientCertificationCollection.OfType <ValidationCollection>()) { isValid = false; //reset to false if bad member. bool validation_rejected = false; foreach (KeyValueElement keyValue in validationCollection) { string value = GetCertificatValue(Certificate, keyValue.Key); if (value != keyValue.Value) { validation_rejected = true; break; } } if (!validation_rejected) { isValid = true; break; } } return(isValid); }