AuthorityInformationAccess.java revision 2ad60cfc28e14ee8f0bb038720836a4696c478ad
1package org.bouncycastle.asn1.x509;
2
3import org.bouncycastle.asn1.ASN1Encodable;
4import org.bouncycastle.asn1.ASN1EncodableVector;
5import org.bouncycastle.asn1.ASN1Sequence;
6import org.bouncycastle.asn1.DERObject;
7import org.bouncycastle.asn1.DERObjectIdentifier;
8import org.bouncycastle.asn1.DERSequence;
9
10/**
11 * The AuthorityInformationAccess object.
12 * <pre>
13 * id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
14 *
15 * AuthorityInfoAccessSyntax  ::=
16 *      SEQUENCE SIZE (1..MAX) OF AccessDescription
17 * AccessDescription  ::=  SEQUENCE {
18 *       accessMethod          OBJECT IDENTIFIER,
19 *       accessLocation        GeneralName  }
20 *
21 * id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
22 * id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
23 * id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
24 * </pre>
25 */
26public class AuthorityInformationAccess
27    extends ASN1Encodable
28{
29    private AccessDescription[]    descriptions;
30
31    public static AuthorityInformationAccess getInstance(
32        Object  obj)
33    {
34        if (obj instanceof AuthorityInformationAccess)
35        {
36            return (AuthorityInformationAccess)obj;
37        }
38        else if (obj instanceof ASN1Sequence)
39        {
40            return new AuthorityInformationAccess((ASN1Sequence)obj);
41        }
42
43        throw new IllegalArgumentException("unknown object in factory");
44    }
45
46    public AuthorityInformationAccess(
47        ASN1Sequence   seq)
48    {
49        descriptions = new AccessDescription[seq.size()];
50
51        for (int i = 0; i != seq.size(); i++)
52        {
53            descriptions[i] = AccessDescription.getInstance(seq.getObjectAt(i));
54        }
55    }
56
57    /**
58     * create an AuthorityInformationAccess with the oid and location provided.
59     */
60    public AuthorityInformationAccess(
61        DERObjectIdentifier oid,
62        GeneralName location)
63    {
64        descriptions = new AccessDescription[1];
65
66        descriptions[0] = new AccessDescription(oid, location);
67    }
68
69
70    /**
71     *
72     * @return the access descriptions contained in this object.
73     */
74    public AccessDescription[] getAccessDescriptions()
75    {
76        return descriptions;
77    }
78
79    public DERObject toASN1Object()
80    {
81        ASN1EncodableVector vec = new ASN1EncodableVector();
82
83        for (int i = 0; i != descriptions.length; i++)
84        {
85            vec.add(descriptions[i]);
86        }
87
88        return new DERSequence(vec);
89    }
90
91    public String toString()
92    {
93        return ("AuthorityInformationAccess: Oid(" + this.descriptions[0].getAccessMethod().getId() + ")");
94    }
95}
96