DERConstructedSequence.java revision 2ad60cfc28e14ee8f0bb038720836a4696c478ad
1package org.bouncycastle.asn1;
2
3import java.io.ByteArrayOutputStream;
4import java.io.IOException;
5import java.util.Enumeration;
6
7/**
8 * @deprecated use DERSequence.
9 */
10public class DERConstructedSequence
11    extends ASN1Sequence
12{
13    public void addObject(
14        DEREncodable obj)
15    {
16        super.addObject(obj);
17    }
18
19    public int getSize()
20    {
21        return size();
22    }
23
24    /*
25     * A note on the implementation:
26     * <p>
27     * As DER requires the constructed, definite-length model to
28     * be used for structured types, this varies slightly from the
29     * ASN.1 descriptions given. Rather than just outputing SEQUENCE,
30     * we also have to specify CONSTRUCTED, and the objects length.
31     */
32    void encode(
33        DEROutputStream out)
34        throws IOException
35    {
36        ByteArrayOutputStream   bOut = new ByteArrayOutputStream();
37        DEROutputStream         dOut = new DEROutputStream(bOut);
38        Enumeration             e = this.getObjects();
39
40        while (e.hasMoreElements())
41        {
42            Object    obj = e.nextElement();
43
44            dOut.writeObject(obj);
45        }
46
47        dOut.close();
48
49        byte[]  bytes = bOut.toByteArray();
50
51        out.writeEncoded(SEQUENCE | CONSTRUCTED, bytes);
52    }
53}
54