private LinkedCertificate(Asn1Sequence seq) { this.mDigest = DigestInfo.GetInstance(seq[0]); this.mCertLocation = GeneralName.GetInstance(seq[1]); for (int i = 2; i < seq.Count; ++i) { Asn1TaggedObject tagged = Asn1TaggedObject.GetInstance(seq[i]); switch (tagged.TagNo) { case 0: this.mCertIssuer = X509Name.GetInstance(tagged, false); break; case 1: this.mCACerts = GeneralNames.GetInstance(tagged, false); break; default: throw new ArgumentException("unknown tag in tagged field"); } } }
public SemanticsInformation( Asn1Sequence seq) { if (seq.Count < 1) { throw new ArgumentException("no objects in SemanticsInformation"); } IEnumerator e = seq.GetEnumerator(); e.MoveNext(); object obj = e.Current; if (obj is DerObjectIdentifier) { semanticsIdentifier = DerObjectIdentifier.GetInstance(obj); if (e.MoveNext()) { obj = e.Current; } else { obj = null; } } if (obj != null) { Asn1Sequence generalNameSeq = Asn1Sequence.GetInstance(obj); nameRegistrationAuthorities = new GeneralName[generalNameSeq.Count]; for (int i = 0; i < generalNameSeq.Count; i++) { nameRegistrationAuthorities[i] = GeneralName.GetInstance(generalNameSeq[i]); } } }
private RoleSyntax(Asn1Sequence seq) { if (seq.Count < 1 || seq.Count > 2) { throw new ArgumentException("Bad sequence size: " + seq.Count); } for (int i = 0; i != seq.Count; i++) { Asn1TaggedObject instance = Asn1TaggedObject.GetInstance(seq[i]); switch (instance.TagNo) { case 0: roleAuthority = GeneralNames.GetInstance(instance, explicitly: false); break; case 1: roleName = GeneralName.GetInstance(instance, explicitly: true); break; default: throw new ArgumentException("Unknown tag in RoleSyntax"); } } }
//Get OCSP URLs from a certificate by checking the extensions, finding the OCSP extension and extracting its URLs. public static List <string> GetAuthorityInformationAccessOcspUrl(X509Certificate cert) { List <string> ocspUrls = new List <string>(); try { Asn1Object obj = GetExtensionValue(cert, X509Extensions.AuthorityInfoAccess.Id); if (obj == null) { return(null); } Asn1Sequence s = (Asn1Sequence)obj; IEnumerator elements = s.GetEnumerator(); while (elements.MoveNext()) { Asn1Sequence element = (Asn1Sequence)elements.Current; DerObjectIdentifier oid = (DerObjectIdentifier)element[0]; if (oid.Id.Equals(OCSP_OID)) // Is OID == OCSP? { Asn1TaggedObject taggedObject = (Asn1TaggedObject)element[1]; GeneralName gn = (GeneralName)GeneralName.GetInstance(taggedObject); ocspUrls.Add(((DerIA5String)DerIA5String.GetInstance(gn.Name)).GetString()); } } } catch (Exception e) { throw new OCSPExpection("Error parsing AIA.", e); } return(ocspUrls); }
private CertId(Asn1Sequence seq) { issuer = GeneralName.GetInstance(seq[0]); serialNumber = DerInteger.GetInstance(seq[1]); }
/** * Adds a target group criterion for the attribute certificate to the target * information extension criteria. The <code>X509AttributeCertificate</code> * must contain at least one of the specified target groups. * <p> * Each attribute certificate may contain a target information extension * limiting the servers where this attribute certificate can be used. If * this extension is not present, the attribute certificate is not targeted * and may be accepted by any server. * </p> * * @param name a byte array containing the group in ASN.1 DER encoded form of a GeneralName * @throws IOException if a parsing error occurs. */ public void AddTargetGroup( byte[] name) { AddTargetGroup(GeneralName.GetInstance(Asn1Object.FromByteArray(name))); }
private TstInfo( Asn1Sequence seq) { IEnumerator e = seq.GetEnumerator(); // version e.MoveNext(); version = DerInteger.GetInstance(e.Current); // tsaPolicy e.MoveNext(); tsaPolicyId = DerObjectIdentifier.GetInstance(e.Current); // messageImprint e.MoveNext(); messageImprint = MessageImprint.GetInstance(e.Current); // serialNumber e.MoveNext(); serialNumber = DerInteger.GetInstance(e.Current); // genTime e.MoveNext(); genTime = DerGeneralizedTime.GetInstance(e.Current); // default for ordering ordering = DerBoolean.False; while (e.MoveNext()) { Asn1Object o = (Asn1Object)e.Current; if (o is Asn1TaggedObject) { DerTaggedObject tagged = (DerTaggedObject)o; switch (tagged.TagNo) { case 0: tsa = GeneralName.GetInstance(tagged, true); break; case 1: extensions = X509Extensions.GetInstance(tagged, false); break; default: throw new ArgumentException("Unknown tag value " + tagged.TagNo); } } if (o is DerSequence) { accuracy = Accuracy.GetInstance(o); } if (o is DerBoolean) { ordering = DerBoolean.GetInstance(o); } if (o is DerInteger) { nonce = DerInteger.GetInstance(o); } } }
public void CheckCertificate( int id, byte[] cert) { Asn1Object seq = Asn1Object.FromByteArray(cert); string dump = Asn1Dump.DumpAsString(seq); X509CertificateStructure obj = X509CertificateStructure.GetInstance(seq); TbsCertificateStructure tbsCert = obj.TbsCertificate; if (!tbsCert.Subject.ToString().Equals(subjects[id - 1])) { Fail("failed subject test for certificate id " + id + " got " + tbsCert.Subject.ToString()); } if (tbsCert.Version >= 3) { X509Extensions ext = tbsCert.Extensions; if (ext != null) { foreach (DerObjectIdentifier oid in ext.ExtensionOids) { X509Extension extVal = ext.GetExtension(oid); Asn1Object extObj = Asn1Object.FromByteArray(extVal.Value.GetOctets()); if (oid.Equals(X509Extensions.SubjectKeyIdentifier)) { SubjectKeyIdentifier.GetInstance(extObj); } else if (oid.Equals(X509Extensions.KeyUsage)) { KeyUsage.GetInstance(extObj); } else if (oid.Equals(X509Extensions.ExtendedKeyUsage)) { ExtendedKeyUsage ku = ExtendedKeyUsage.GetInstance(extObj); Asn1Sequence sq = (Asn1Sequence)ku.ToAsn1Object(); for (int i = 0; i != sq.Count; i++) { KeyPurposeID.GetInstance(sq[i]); } } else if (oid.Equals(X509Extensions.SubjectAlternativeName)) { GeneralNames gn = GeneralNames.GetInstance(extObj); Asn1Sequence sq = (Asn1Sequence)gn.ToAsn1Object(); for (int i = 0; i != sq.Count; i++) { GeneralName.GetInstance(sq[i]); } } else if (oid.Equals(X509Extensions.IssuerAlternativeName)) { GeneralNames gn = GeneralNames.GetInstance(extObj); Asn1Sequence sq = (Asn1Sequence)gn.ToAsn1Object(); for (int i = 0; i != sq.Count; i++) { GeneralName.GetInstance(sq[i]); } } else if (oid.Equals(X509Extensions.CrlDistributionPoints)) { CrlDistPoint p = CrlDistPoint.GetInstance(extObj); DistributionPoint[] points = p.GetDistributionPoints(); for (int i = 0; i != points.Length; i++) { // do nothing } } else if (oid.Equals(X509Extensions.CertificatePolicies)) { Asn1Sequence cp = (Asn1Sequence)extObj; for (int i = 0; i != cp.Count; i++) { PolicyInformation.GetInstance(cp[i]); } } else if (oid.Equals(X509Extensions.AuthorityKeyIdentifier)) { AuthorityKeyIdentifier.GetInstance(extObj); } else if (oid.Equals(X509Extensions.BasicConstraints)) { BasicConstraints.GetInstance(extObj); } else { //Console.WriteLine(oid.Id); } } } } }
/// <summary> /// Extract AIA URL. It can be AIA OCSP or AIA Issuer /// </summary> /// <param name="taggedObject"></param> /// <returns></returns> string ExtractAIAUrl(Asn1TaggedObject taggedObject) { var gn = (GeneralName)GeneralName.GetInstance(taggedObject); return(((DerIA5String)DerIA5String.GetInstance(gn.Name)).GetString()); }
public void AddTargetName(byte[] name) { this.AddTargetName(GeneralName.GetInstance(Asn1Object.FromByteArray(name))); }