Beispiel #1
0
        /// <summary>
        /// Create CertificatePolicies extension from an X509Extension
        /// </summary>
        /// <param name="Extension">X509 extension</param>
        public certificatePolicies(X509Extension Extension) : base(Extension)
        {
            base.oid         = X509Extensions.CertificatePolicies;
            base.name        = "CertificatePolicies";
            base.displayName = "Certificate Policies";

            Crypto.X509.CertificatePolicies certPol = Crypto.X509.CertificatePolicies.GetInstance(Extension);
            PolicyInformation[]             piList  = certPol.GetPolicyInformation();
            foreach (PolicyInformation pi in piList)
            {
                CertPolicy cp = new CertPolicy()
                {
                    Oid = pi.PolicyIdentifier.ToString()
                };
                Asn1Sequence quals = pi.PolicyQualifiers;
                if (quals != null)
                {
                    foreach (DerSequence qual in quals)
                    {
                        PolicyQualifierInfo qi = PolicyQualifierInfo.GetInstance(qual);
                        if (qi.GetPolicyQualifierId().Equals(PolicyQualifierID.IdQtCps))
                        {
                            cp.Cps = qi.GetQualifier();
                        }
                        if (qi.GetPolicyQualifierId().Equals(PolicyQualifierID.IdQtUnotice))
                        {
                            cp.Unotice = qi.GetQualifier();
                        }
                    }
                }
                policies.Add(cp);
            }
        }
Beispiel #2
0
        private static PolicyInformation[] GetPolicyInformation(AdESPolicy policy)
        {
            if (policy == null)
            {
                throw new ArgumentException("La politica de firma no puede ser nula en este punto");
            }

            /**
             * PolicyQualifierInfo ::= SEQUENCE {
             *          policyQualifierId  PolicyQualifierId,
             *          qualifier          ANY DEFINED BY policyQualifierId }
             */

            PolicyQualifierID pqid = PolicyQualifierID.IdQtCps;
            DerIA5String      uri  = null;

            if (policy.GetPolicyQualifier() != null && !policy.GetPolicyQualifier().Equals(""))
            {
                uri = new DerIA5String(policy.GetPolicyQualifier().ToString());
            }

            Asn1EncodableVector v   = new Asn1EncodableVector();
            PolicyQualifierInfo pqi = null;

            if (uri != null)
            {
                v.Add(pqid);
                v.Add(uri);

                /**
                 *
                 * ESTO TIENE ALTAS PROBABILIDADES DE FALLAR
                 *
                 */
                pqi = PolicyQualifierInfo.GetInstance(new DerSequence(v));
            }

            /**
             * PolicyInformation ::= SEQUENCE {
             *     policyIdentifier   CertPolicyId,
             *     policyQualifiers   SEQUENCE SIZE (1..MAX) OF
             *                          PolicyQualifierInfo OPTIONAL }
             */

            if (policy.GetPolicyQualifier() == null || pqi == null)
            {
                return(new PolicyInformation[] {
                    new PolicyInformation(new DerObjectIdentifier(policy.GetPolicyIdentifier().ToLower().Replace("urn:oid:", "")))
                });
            }

            return(new PolicyInformation[] {
                new PolicyInformation(new DerObjectIdentifier(policy.GetPolicyIdentifier().ToLower().Replace("urn:oid:", "")), new DerSequence(pqi))
            });
        }
Beispiel #3
0
        internal static ISet GetQualifierSet(Asn1Sequence qualifiers)
        {
            ISet set = new HashSet();

            if (qualifiers == null)
            {
                return(set);
            }
            foreach (Asn1Encodable asn1Encodable in qualifiers)
            {
                try
                {
                    set.Add(PolicyQualifierInfo.GetInstance(asn1Encodable.ToAsn1Object()));
                }
                catch (IOException cause)
                {
                    throw new PkixCertPathValidatorException("Policy qualifier info cannot be decoded.", cause);
                }
            }
            return(set);
        }
        //
        // policy checking
        //

        internal static ISet GetQualifierSet(Asn1Sequence qualifiers)
        {
            ISet pq = new HashSet();

            if (qualifiers == null)
            {
                return(pq);
            }

            foreach (Asn1Encodable ae in qualifiers)
            {
                try
                {
//					pq.Add(PolicyQualifierInfo.GetInstance(Asn1Object.FromByteArray(ae.GetEncoded())));
                    pq.Add(PolicyQualifierInfo.GetInstance(ae.ToAsn1Object()));
                }
                catch (IOException ex)
                {
                    throw new PkixCertPathValidatorException("Policy qualifier info cannot be decoded.", ex);
                }
            }

            return(pq);
        }
Beispiel #5
0
        internal static ISet GetQualifierSet(Asn1Sequence qualifiers)
        {
            //IL_0034: Expected O, but got Unknown
            ISet set = new HashSet();

            if (qualifiers == null)
            {
                return(set);
            }
            global::System.Collections.IEnumerator enumerator = qualifiers.GetEnumerator();
            try
            {
                while (enumerator.MoveNext())
                {
                    Asn1Encodable asn1Encodable = (Asn1Encodable)enumerator.get_Current();
                    try
                    {
                        set.Add(PolicyQualifierInfo.GetInstance(asn1Encodable.ToAsn1Object()));
                    }
                    catch (IOException val)
                    {
                        IOException cause = val;
                        throw new PkixCertPathValidatorException("Policy qualifier info cannot be decoded.", (global::System.Exception)(object) cause);
                    }
                }
                return(set);
            }
            finally
            {
                global::System.IDisposable disposable = enumerator as global::System.IDisposable;
                if (disposable != null)
                {
                    disposable.Dispose();
                }
            }
        }