001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.util.asn1.x509;
019
020 import org.apache.geronimo.util.asn1.ASN1Encodable;
021 import org.apache.geronimo.util.asn1.ASN1EncodableVector;
022 import org.apache.geronimo.util.asn1.ASN1Sequence;
023 import org.apache.geronimo.util.asn1.DERObject;
024 import org.apache.geronimo.util.asn1.DERObjectIdentifier;
025 import org.apache.geronimo.util.asn1.DERSequence;
026
027 /**
028 * The AuthorityInformationAccess object.
029 * <pre>
030 * id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
031 *
032 * AuthorityInfoAccessSyntax ::=
033 * SEQUENCE SIZE (1..MAX) OF AccessDescription
034 * AccessDescription ::= SEQUENCE {
035 * accessMethod OBJECT IDENTIFIER,
036 * accessLocation GeneralName }
037 *
038 * id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
039 * id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
040 * id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
041 * </pre>
042 */
043 public class AuthorityInformationAccess
044 extends ASN1Encodable
045 {
046 private AccessDescription[] descriptions;
047
048 public static AuthorityInformationAccess getInstance(
049 Object obj)
050 {
051 if (obj instanceof AuthorityInformationAccess)
052 {
053 return (AuthorityInformationAccess)obj;
054 }
055 else if (obj instanceof ASN1Sequence)
056 {
057 return new AuthorityInformationAccess((ASN1Sequence)obj);
058 }
059
060 throw new IllegalArgumentException("unknown object in factory");
061 }
062
063 public AuthorityInformationAccess(
064 ASN1Sequence seq)
065 {
066 descriptions = new AccessDescription[seq.size()];
067
068 for (int i = 0; i != seq.size(); i++)
069 {
070 descriptions[i] = AccessDescription.getInstance(seq.getObjectAt(i));
071 }
072 }
073
074 /**
075 * create an AuthorityInformationAccess with the oid and location provided.
076 */
077 public AuthorityInformationAccess(
078 DERObjectIdentifier oid,
079 GeneralName location)
080 {
081 descriptions = new AccessDescription[1];
082
083 descriptions[0] = new AccessDescription(oid, location);
084 }
085
086
087 /**
088 *
089 * @return the access descriptions contained in this object.
090 */
091 public AccessDescription[] getAccessDescriptions()
092 {
093 return descriptions;
094 }
095
096 public DERObject toASN1Object()
097 {
098 ASN1EncodableVector vec = new ASN1EncodableVector();
099
100 for (int i = 0; i != descriptions.length; i++)
101 {
102 vec.add(descriptions[i]);
103 }
104
105 return new DERSequence(vec);
106 }
107
108 public String toString()
109 {
110 return ("AuthorityInformationAccess: Oid(" + this.descriptions[0].getAccessMethod().getId() + ")");
111 }
112 }