View Javadoc

1   /*
2    *   Copyright 2005 The Apache Software Foundation
3    *
4    *   Licensed under the Apache License, Version 2.0 (the "License");
5    *   you may not use this file except in compliance with the License.
6    *   You may obtain a copy of the License at
7    *
8    *       http://www.apache.org/licenses/LICENSE-2.0
9    *
10   *   Unless required by applicable law or agreed to in writing, software
11   *   distributed under the License is distributed on an "AS IS" BASIS,
12   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *   See the License for the specific language governing permissions and
14   *   limitations under the License.
15   *
16   */
17  
18  package org.apache.asn1.der;
19  
20  import java.io.ByteArrayOutputStream;
21  import java.io.IOException;
22  import java.util.Enumeration;
23  import java.util.Vector;
24  
25  /***
26   * A DER encoded set object
27   */
28  public class DERSet implements DEREncodable
29  {
30      protected Vector set = new Vector();
31      
32      public Enumeration getObjects()
33      {
34          return set.elements();
35      }
36  
37      public DEREncodable getObjectAt( int index )
38      {
39          return (DEREncodable)set.elementAt( index );
40      }
41  
42      public int size()
43      {
44          return set.size();
45      }
46      
47      public void add( DEREncodable obj )
48      {
49          set.addElement( obj );
50      }
51  	
52      public void encode( ASN1OutputStream out )
53          throws IOException
54      {
55          ByteArrayOutputStream baos = new ByteArrayOutputStream();
56          ASN1OutputStream      aos  = new ASN1OutputStream( baos );
57          
58          Enumeration e = getObjects();
59  
60          while ( e.hasMoreElements() )
61          {
62              aos.writeObject( e.nextElement() );
63          }
64  
65          aos.close();
66  
67          byte[] bytes = baos.toByteArray();
68  
69          out.writeEncoded( DERObject.SET | DERObject.CONSTRUCTED, bytes );
70      }
71  }
72