System.Security.Cryptography.X509Certificates.X509ChainElementCollection.GetEnumerator C# (CSharp) Method

GetEnumerator() public method

public GetEnumerator ( ) : System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator
return System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator
        public System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator GetEnumerator()
        {
            throw null;
        }

Same methods

X509ChainElementCollection::GetEnumerator ( ) : X509ChainElementEnumerator

Usage Example

Exemplo n.º 1
0
        public bool Build(X509Certificate2 certificate)
        {
            if (certificate == null)
            {
                throw new ArgumentException("certificate");
            }
            Reset();
            X509ChainStatusFlags x509ChainStatusFlags;

            try
            {
                x509ChainStatusFlags = BuildChainFrom(certificate);
                ValidateChain(x509ChainStatusFlags);
            }
            catch (CryptographicException innerException)
            {
                throw new ArgumentException("certificate", innerException);
                IL_0038:;
            }
            X509ChainStatusFlags       x509ChainStatusFlags2 = X509ChainStatusFlags.NoError;
            ArrayList                  arrayList             = new ArrayList();
            X509ChainElementEnumerator enumerator            = elements.GetEnumerator();

            while (enumerator.MoveNext())
            {
                X509ChainElement  current            = enumerator.Current;
                X509ChainStatus[] chainElementStatus = current.ChainElementStatus;
                for (int i = 0; i < chainElementStatus.Length; i++)
                {
                    X509ChainStatus x509ChainStatus = chainElementStatus[i];
                    if ((x509ChainStatusFlags2 & x509ChainStatus.Status) != x509ChainStatus.Status)
                    {
                        arrayList.Add(x509ChainStatus);
                        x509ChainStatusFlags2 |= x509ChainStatus.Status;
                    }
                }
            }
            if (x509ChainStatusFlags != 0)
            {
                arrayList.Insert(0, new X509ChainStatus(x509ChainStatusFlags));
            }
            status = (X509ChainStatus[])arrayList.ToArray(typeof(X509ChainStatus));
            if (status.Length == 0 || ChainPolicy.VerificationFlags == X509VerificationFlags.AllFlags)
            {
                return(true);
            }
            bool flag = true;

            X509ChainStatus[] array = status;
            for (int j = 0; j < array.Length; j++)
            {
                X509ChainStatus x509ChainStatus2 = array[j];
                switch (x509ChainStatus2.Status)
                {
                case X509ChainStatusFlags.UntrustedRoot:
                case X509ChainStatusFlags.PartialChain:
                    flag &= ((ChainPolicy.VerificationFlags & X509VerificationFlags.AllowUnknownCertificateAuthority) != X509VerificationFlags.NoFlag);
                    break;

                case X509ChainStatusFlags.NotTimeValid:
                    flag &= ((ChainPolicy.VerificationFlags & X509VerificationFlags.IgnoreNotTimeValid) != X509VerificationFlags.NoFlag);
                    break;

                case X509ChainStatusFlags.NotTimeNested:
                    flag &= ((ChainPolicy.VerificationFlags & X509VerificationFlags.IgnoreNotTimeNested) != X509VerificationFlags.NoFlag);
                    break;

                case X509ChainStatusFlags.InvalidBasicConstraints:
                    flag &= ((ChainPolicy.VerificationFlags & X509VerificationFlags.IgnoreInvalidBasicConstraints) != X509VerificationFlags.NoFlag);
                    break;

                case X509ChainStatusFlags.InvalidPolicyConstraints:
                case X509ChainStatusFlags.NoIssuanceChainPolicy:
                    flag &= ((ChainPolicy.VerificationFlags & X509VerificationFlags.IgnoreInvalidPolicy) != X509VerificationFlags.NoFlag);
                    break;

                case X509ChainStatusFlags.InvalidNameConstraints:
                case X509ChainStatusFlags.HasNotSupportedNameConstraint:
                case X509ChainStatusFlags.HasNotPermittedNameConstraint:
                case X509ChainStatusFlags.HasExcludedNameConstraint:
                    flag &= ((ChainPolicy.VerificationFlags & X509VerificationFlags.IgnoreInvalidName) != X509VerificationFlags.NoFlag);
                    break;

                case X509ChainStatusFlags.InvalidExtension:
                    flag &= ((ChainPolicy.VerificationFlags & X509VerificationFlags.IgnoreWrongUsage) != X509VerificationFlags.NoFlag);
                    break;

                case X509ChainStatusFlags.CtlNotTimeValid:
                    flag &= ((ChainPolicy.VerificationFlags & X509VerificationFlags.IgnoreCtlNotTimeValid) != X509VerificationFlags.NoFlag);
                    break;

                case X509ChainStatusFlags.CtlNotValidForUsage:
                    flag &= ((ChainPolicy.VerificationFlags & X509VerificationFlags.IgnoreWrongUsage) != X509VerificationFlags.NoFlag);
                    break;

                default:
                    flag = false;
                    break;

                case X509ChainStatusFlags.CtlNotSignatureValid:
                    break;
                }
                if (!flag)
                {
                    return(false);
                }
            }
            return(true);
        }