GeneralNames.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.asn1.x509;
2
3import org.bouncycastle.asn1.ASN1Object;
4import org.bouncycastle.asn1.ASN1Primitive;
5import org.bouncycastle.asn1.ASN1Sequence;
6import org.bouncycastle.asn1.ASN1TaggedObject;
7import org.bouncycastle.asn1.DERSequence;
8
9public class GeneralNames
10    extends ASN1Object
11{
12    private final GeneralName[] names;
13
14    public static GeneralNames getInstance(
15        Object  obj)
16    {
17        if (obj instanceof GeneralNames)
18        {
19            return (GeneralNames)obj;
20        }
21
22        if (obj != null)
23        {
24            return new GeneralNames(ASN1Sequence.getInstance(obj));
25        }
26
27        return null;
28    }
29
30    public static GeneralNames getInstance(
31        ASN1TaggedObject obj,
32        boolean          explicit)
33    {
34        return getInstance(ASN1Sequence.getInstance(obj, explicit));
35    }
36
37    /**
38     * Construct a GeneralNames object containing one GeneralName.
39     *
40     * @param name the name to be contained.
41     */
42    public GeneralNames(
43        GeneralName  name)
44    {
45        this.names = new GeneralName[] { name };
46    }
47
48
49    public GeneralNames(
50        GeneralName[]  names)
51    {
52        this.names = names;
53    }
54
55    private GeneralNames(
56        ASN1Sequence  seq)
57    {
58        this.names = new GeneralName[seq.size()];
59
60        for (int i = 0; i != seq.size(); i++)
61        {
62            names[i] = GeneralName.getInstance(seq.getObjectAt(i));
63        }
64    }
65
66    public GeneralName[] getNames()
67    {
68        GeneralName[] tmp = new GeneralName[names.length];
69
70        System.arraycopy(names, 0, tmp, 0, names.length);
71
72        return tmp;
73    }
74
75    /**
76     * Produce an object suitable for an ASN1OutputStream.
77     * <pre>
78     * GeneralNames ::= SEQUENCE SIZE {1..MAX} OF GeneralName
79     * </pre>
80     */
81    public ASN1Primitive toASN1Primitive()
82    {
83        return new DERSequence(names);
84    }
85
86    public String toString()
87    {
88        StringBuffer  buf = new StringBuffer();
89        String        sep = System.getProperty("line.separator");
90
91        buf.append("GeneralNames:");
92        buf.append(sep);
93
94        for (int i = 0; i != names.length; i++)
95        {
96            buf.append("    ");
97            buf.append(names[i]);
98            buf.append(sep);
99        }
100        return buf.toString();
101    }
102}
103