using System; using System.Collections; using Org.BouncyCastle.Asn1; 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 { internal readonly DerObjectIdentifier accessMethod; internal readonly GeneralName accessLocation; public static AuthorityInformationAccess GetInstance( object obj) { if (obj is AuthorityInformationAccess) { return (AuthorityInformationAccess) obj; } if (obj is Asn1Sequence) { return new AuthorityInformationAccess((Asn1Sequence) obj); } if (obj is X509Extension) { return GetInstance(X509Extension.ConvertValueToObject((X509Extension) obj)); } throw new ArgumentException("unknown object in factory: " + obj.GetType().Name, "obj"); } private AuthorityInformationAccess( Asn1Sequence seq) { foreach (DerSequence vec in seq) { if (vec.Count != 2) { throw new ArgumentException("wrong number of elements in inner sequence"); } accessMethod = (DerObjectIdentifier) vec[0]; accessLocation = (GeneralName) vec[1]; } } /** * create an AuthorityInformationAccess with the oid and location provided. */ public AuthorityInformationAccess( DerObjectIdentifier oid, GeneralName location) { accessMethod = oid; accessLocation = location; } public override Asn1Object ToAsn1Object() { return new DerSequence(new DerSequence(accessMethod, accessLocation)); } public override string ToString() { return ("AuthorityInformationAccess: Oid(" + this.accessMethod.Id + ")"); } } }