示例#1
0
        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);
        }