using System; using System.Collections; using System.Text; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Utilities; namespace Org.BouncyCastle.Asn1.X509 { /** * The AuthorityInformationAccess object. *
* id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 } * * AuthorityInfoAccessSyntax ::= * Sequence SIZE (1..MAX) OF AccessDescription * AccessDescription ::= Sequence { * accessMethod OBJECT IDENTIFIER, * accessLocation GeneralName } * * id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } * id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 } * id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 } **/ public class AuthorityInformationAccess : Asn1Encodable { private readonly AccessDescription[] descriptions; public static AuthorityInformationAccess GetInstance(object obj) { if (obj is AuthorityInformationAccess) return (AuthorityInformationAccess)obj; if (obj == null) return null; return new AuthorityInformationAccess(Asn1Sequence.GetInstance(obj)); } private AuthorityInformationAccess( Asn1Sequence seq) { if (seq.Count < 1) throw new ArgumentException("sequence may not be empty"); this.descriptions = new AccessDescription[seq.Count]; for (int i = 0; i < seq.Count; ++i) { descriptions[i] = AccessDescription.GetInstance(seq[i]); } } public AuthorityInformationAccess( AccessDescription description) { this.descriptions = new AccessDescription[]{ description }; } /** * create an AuthorityInformationAccess with the oid and location provided. */ public AuthorityInformationAccess(DerObjectIdentifier oid, GeneralName location) : this(new AccessDescription(oid, location)) { } public AccessDescription[] GetAccessDescriptions() { return (AccessDescription[])descriptions.Clone(); } public override Asn1Object ToAsn1Object() { return new DerSequence(descriptions); } public override string ToString() { //return "AuthorityInformationAccess: Oid(" + this.descriptions[0].AccessMethod.Id + ")"; StringBuilder buf = new StringBuilder(); string sep = Platform.NewLine; buf.Append("AuthorityInformationAccess:"); buf.Append(sep); foreach (AccessDescription description in descriptions) { buf.Append(" "); buf.Append(description); buf.Append(sep); } return buf.ToString(); } } }