DERSet.java
上传用户:lior1029
上传日期:2013-05-07
资源大小:209k
文件大小:1k
源码类别:

CA认证

开发平台:

Java

  1. package org.bouncycastle.asn1;
  2. import java.io.*;
  3. import java.util.*;
  4. /**
  5.  * A DER encoded set object
  6.  */
  7. public class DERSet
  8.     extends ASN1Set
  9. {
  10.     /**
  11.      * create an empty set
  12.      */
  13.     public DERSet()
  14.     {
  15.     }
  16.     /**
  17.      * @param obj - a single object that makes up the set.
  18.      */
  19.     public DERSet(
  20.         DEREncodable   obj)
  21.     {
  22.         this.addObject(obj);
  23.     }
  24.     /**
  25.      * @param v - a vector of objects making up the set.
  26.      */
  27.     public DERSet(
  28.         DEREncodableVector   v)
  29.     {
  30.         for (int i = 0; i != v.size(); i++)
  31.         {
  32.             this.addObject(v.get(i));
  33.         }
  34.     }
  35.     /*
  36.      * A note on the implementation:
  37.      * <p>
  38.      * As DER requires the constructed, definite-length model to
  39.      * be used for structured types, this varies slightly from the
  40.      * ASN.1 descriptions given. Rather than just outputing SET,
  41.      * we also have to specify CONSTRUCTED, and the objects length.
  42.      */
  43.     void encode(
  44.         DEROutputStream out)
  45.         throws IOException
  46.     {
  47.         ByteArrayOutputStream   bOut = new ByteArrayOutputStream();
  48.         DEROutputStream         dOut = new DEROutputStream(bOut);
  49.         Enumeration             e = this.getObjects();
  50.         while (e.hasMoreElements())
  51.         {
  52.             Object    obj = e.nextElement();
  53.             dOut.writeObject(obj);
  54.         }
  55.         dOut.close();
  56.         byte[]  bytes = bOut.toByteArray();
  57.         out.writeEncoded(SET | CONSTRUCTED, bytes);
  58.     }
  59. }