1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.bouncycastle.asn1;
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException;
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Enumeration;
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class BERSet
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    extends DERSet
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project{
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * create an empty sequence
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public BERSet()
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * create a set containing one object
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public BERSet(
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        DEREncodable    obj)
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        super(obj);
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param v - a vector of objects making up the set.
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public BERSet(
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        DEREncodableVector   v)
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        super(v, false);
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param v - a vector of objects making up the set.
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    BERSet(
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        DEREncodableVector   v,
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean              needsSorting)
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        super(v, needsSorting);
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /*
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    void encode(
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        DEROutputStream out)
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        throws IOException
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (out instanceof ASN1OutputStream || out instanceof BEROutputStream)
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            out.write(SET | CONSTRUCTED);
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            out.write(0x80);
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            Enumeration e = getObjects();
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            while (e.hasMoreElements())
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            {
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                out.writeObject(e.nextElement());
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            out.write(0x00);
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            out.write(0x00);
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        else
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            super.encode(out);
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
70