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 DERSet */ 008 public class DERConstructedSet 009 extends ASN1Set { 010 public DERConstructedSet() { 011 } 012 013 /** @param obj - a single object that makes up the set. */ 014 public DERConstructedSet( 015 DEREncodable obj) { 016 this.addObject(obj); 017 } 018 019 /** @param v - a vector of objects making up the set. */ 020 public DERConstructedSet( 021 DEREncodableVector v) { 022 for (int i = 0; i != v.size(); i++) { 023 this.addObject(v.get(i)); 024 } 025 } 026 027 public void addObject( 028 DEREncodable obj) { 029 super.addObject(obj); 030 } 031 032 public int getSize() { 033 return size(); 034 } 035 036 /* 037 * A note on the implementation: 038 * <p> 039 * As DER requires the constructed, definite-length model to 040 * be used for structured types, this varies slightly from the 041 * ASN.1 descriptions given. Rather than just outputing SET, 042 * we also have to specify CONSTRUCTED, and the objects length. 043 */ 044 void encode( 045 DEROutputStream out) 046 throws IOException { 047 ByteArrayOutputStream bOut = new ByteArrayOutputStream(); 048 DEROutputStream dOut = new DEROutputStream(bOut); 049 Enumeration e = this.getObjects(); 050 051 while (e.hasMoreElements()) { 052 Object obj = e.nextElement(); 053 054 dOut.writeObject(obj); 055 } 056 057 dOut.close(); 058 059 byte[] bytes = bOut.toByteArray(); 060 061 out.writeEncoded(SET | CONSTRUCTED, bytes); 062 } 063 }