001    package org.apache.commons.ssl.asn1;
002    
003    import java.io.ByteArrayOutputStream;
004    import java.io.IOException;
005    import java.util.Enumeration;
006    
007    /** @deprecated use DERSequence. */
008    public class DERConstructedSequence
009        extends ASN1Sequence {
010        public void addObject(
011            DEREncodable obj) {
012            super.addObject(obj);
013        }
014    
015        public int getSize() {
016            return size();
017        }
018    
019        /*
020         * A note on the implementation:
021         * <p>
022         * As DER requires the constructed, definite-length model to
023         * be used for structured types, this varies slightly from the
024         * ASN.1 descriptions given. Rather than just outputing SEQUENCE,
025         * we also have to specify CONSTRUCTED, and the objects length.
026         */
027        void encode(
028            DEROutputStream out)
029            throws IOException {
030            ByteArrayOutputStream bOut = new ByteArrayOutputStream();
031            DEROutputStream dOut = new DEROutputStream(bOut);
032            Enumeration e = this.getObjects();
033    
034            while (e.hasMoreElements()) {
035                Object obj = e.nextElement();
036    
037                dOut.writeObject(obj);
038            }
039    
040            dOut.close();
041    
042            byte[] bytes = bOut.toByteArray();
043    
044            out.writeEncoded(SEQUENCE | CONSTRUCTED, bytes);
045        }
046    }