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

CA认证

开发平台:

Java

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