org.bouncycastle.asn1
Class ASN1InputStream

java.lang.Object
  extended by java.io.InputStream
      extended by java.io.FilterInputStream
          extended by org.bouncycastle.asn1.ASN1InputStream
All Implemented Interfaces:
java.io.Closeable, DERTags

public class ASN1InputStream
extends java.io.FilterInputStream
implements DERTags

a general purpose ASN.1 decoder - note: this class differs from the others in that it returns null after it has read the last object in the stream. If an ASN.1 NULL is encountered a DER/BER Null object is returned.


Field Summary
private static DERObject END_OF_STREAM
           
(package private)  boolean eofFound
           
(package private)  int limit
           
 
Fields inherited from class java.io.FilterInputStream
in
 
Fields inherited from interface org.bouncycastle.asn1.DERTags
APPLICATION, BIT_STRING, BMP_STRING, BOOLEAN, CONSTRUCTED, ENUMERATED, EXTERNAL, GENERAL_STRING, GENERALIZED_TIME, GRAPHIC_STRING, IA5_STRING, INTEGER, NULL, NUMERIC_STRING, OBJECT_IDENTIFIER, OCTET_STRING, PRINTABLE_STRING, SEQUENCE, SEQUENCE_OF, SET, SET_OF, T61_STRING, TAGGED, UNIVERSAL_STRING, UTC_TIME, UTF8_STRING, VIDEOTEX_STRING, VISIBLE_STRING
 
Constructor Summary
ASN1InputStream(byte[] input)
          Create an ASN1InputStream based on the input byte array.
ASN1InputStream(java.io.InputStream is)
           
ASN1InputStream(java.io.InputStream input, int limit)
          Create an ASN1InputStream where no DER object will be longer than limit.
 
Method Summary
private  BERConstructedOctetString buildConstructedOctetString()
           
private  BERConstructedOctetString buildDerConstructedOctetString(byte[] input)
           
protected  DERObject buildObject(int tag, int tagNo, byte[] bytes)
          build an object given its tag and a byte stream to construct it from.
protected  void readFully(byte[] bytes)
           
private  byte[] readIndefiniteLengthFully()
          read a string of bytes representing an indefinite length object.
protected  int readLength()
           
 DERObject readObject()
           
private  int readTagNumber(int tag)
           
 
Methods inherited from class java.io.FilterInputStream
available, close, mark, markSupported, read, read, read, reset, skip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

END_OF_STREAM

private static final DERObject END_OF_STREAM

eofFound

boolean eofFound

limit

int limit
Constructor Detail

ASN1InputStream

public ASN1InputStream(java.io.InputStream is)

ASN1InputStream

public ASN1InputStream(byte[] input)
Create an ASN1InputStream based on the input byte array. The length of DER objects in the stream is automatically limited to the length of the input array.

Parameters:
input - array containing ASN.1 encoded data.

ASN1InputStream

public ASN1InputStream(java.io.InputStream input,
                       int limit)
Create an ASN1InputStream where no DER object will be longer than limit.

Parameters:
input - stream containing ASN.1 encoded data.
limit - maximum size of a DER encoded object.
Method Detail

readLength

protected int readLength()
                  throws java.io.IOException
Throws:
java.io.IOException

readFully

protected void readFully(byte[] bytes)
                  throws java.io.IOException
Throws:
java.io.IOException

buildObject

protected DERObject buildObject(int tag,
                                int tagNo,
                                byte[] bytes)
                         throws java.io.IOException
build an object given its tag and a byte stream to construct it from.

Throws:
java.io.IOException

readIndefiniteLengthFully

private byte[] readIndefiniteLengthFully()
                                  throws java.io.IOException
read a string of bytes representing an indefinite length object.

Throws:
java.io.IOException

buildConstructedOctetString

private BERConstructedOctetString buildConstructedOctetString()
                                                       throws java.io.IOException
Throws:
java.io.IOException

buildDerConstructedOctetString

private BERConstructedOctetString buildDerConstructedOctetString(byte[] input)
                                                          throws java.io.IOException
Throws:
java.io.IOException

readObject

public DERObject readObject()
                     throws java.io.IOException
Throws:
java.io.IOException

readTagNumber

private int readTagNumber(int tag)
                   throws java.io.IOException
Throws:
java.io.IOException