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 }