001package org.apache.commons.ssl.org.bouncycastle.asn1.x509; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 008import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 009 010/** 011 * The AuthorityInformationAccess object. 012 * <pre> 013 * id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 } 014 * 015 * AuthorityInfoAccessSyntax ::= 016 * SEQUENCE SIZE (1..MAX) OF AccessDescription 017 * AccessDescription ::= SEQUENCE { 018 * accessMethod OBJECT IDENTIFIER, 019 * accessLocation GeneralName } 020 * 021 * id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } 022 * id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 } 023 * id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 } 024 * </pre> 025 */ 026public class AuthorityInformationAccess 027 extends ASN1Object 028{ 029 private AccessDescription[] descriptions; 030 031 public static AuthorityInformationAccess getInstance( 032 Object obj) 033 { 034 if (obj instanceof AuthorityInformationAccess) 035 { 036 return (AuthorityInformationAccess)obj; 037 } 038 039 if (obj != null) 040 { 041 return new AuthorityInformationAccess(ASN1Sequence.getInstance(obj)); 042 } 043 044 return null; 045 } 046 047 private AuthorityInformationAccess( 048 ASN1Sequence seq) 049 { 050 if (seq.size() < 1) 051 { 052 throw new IllegalArgumentException("sequence may not be empty"); 053 } 054 055 descriptions = new AccessDescription[seq.size()]; 056 057 for (int i = 0; i != seq.size(); i++) 058 { 059 descriptions[i] = AccessDescription.getInstance(seq.getObjectAt(i)); 060 } 061 } 062 063 public AuthorityInformationAccess( 064 AccessDescription description) 065 { 066 this.descriptions = new AccessDescription[]{ description }; 067 } 068 069 /** 070 * create an AuthorityInformationAccess with the oid and location provided. 071 */ 072 public AuthorityInformationAccess( 073 ASN1ObjectIdentifier oid, 074 GeneralName location) 075 { 076 this(new AccessDescription(oid, location)); 077 } 078 079 /** 080 * 081 * @return the access descriptions contained in this object. 082 */ 083 public AccessDescription[] getAccessDescriptions() 084 { 085 return descriptions; 086 } 087 088 public ASN1Primitive toASN1Primitive() 089 { 090 ASN1EncodableVector vec = new ASN1EncodableVector(); 091 092 for (int i = 0; i != descriptions.length; i++) 093 { 094 vec.add(descriptions[i]); 095 } 096 097 return new DERSequence(vec); 098 } 099 100 public String toString() 101 { 102 return ("AuthorityInformationAccess: Oid(" + this.descriptions[0].getAccessMethod().getId() + ")"); 103 } 104}