1 package org.bouncycastle.asn1.ocsp;
2 
3 import org.bouncycastle.asn1.ASN1EncodableVector;
4 import org.bouncycastle.asn1.ASN1Object;
5 import org.bouncycastle.asn1.ASN1Primitive;
6 import org.bouncycastle.asn1.ASN1Sequence;
7 import org.bouncycastle.asn1.DERSequence;
8 import org.bouncycastle.asn1.x500.X500Name;
9 import org.bouncycastle.asn1.x509.AuthorityInformationAccess;
10 
11 public class ServiceLocator
12     extends ASN1Object
13 {
14     private final X500Name    issuer;
15     private final AuthorityInformationAccess locator;
16 
ServiceLocator(ASN1Sequence sequence)17     private ServiceLocator(ASN1Sequence sequence)
18     {
19         this.issuer = X500Name.getInstance(sequence.getObjectAt(0));
20         if (sequence.size() == 2)
21         {
22             this.locator = AuthorityInformationAccess.getInstance(sequence.getObjectAt(1));
23         }
24         else
25         {
26             this.locator = null;
27 
28         }
29     }
30 
getInstance( Object obj)31     public static ServiceLocator getInstance(
32         Object  obj)
33     {
34         if (obj instanceof ServiceLocator)
35         {
36             return (ServiceLocator)obj;
37         }
38         else if (obj != null)
39         {
40             return new ServiceLocator(ASN1Sequence.getInstance(obj));
41         }
42 
43         return null;
44     }
45 
getIssuer()46     public X500Name getIssuer()
47     {
48         return issuer;
49     }
50 
getLocator()51     public AuthorityInformationAccess getLocator()
52     {
53         return locator;
54     }
55 
56     /**
57      * Produce an object suitable for an ASN1OutputStream.
58      * <pre>
59      * ServiceLocator ::= SEQUENCE {
60      *     issuer    Name,
61      *     locator   AuthorityInfoAccessSyntax OPTIONAL }
62      * </pre>
63      */
toASN1Primitive()64     public ASN1Primitive toASN1Primitive()
65     {
66         ASN1EncodableVector v = new ASN1EncodableVector(2);
67 
68         v.add(issuer);
69 
70         if (locator != null)
71         {
72             v.add(locator);
73         }
74 
75         return new DERSequence(v);
76     }
77 }
78