/// <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); } }
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)) }); }
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); }
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(); } } }