org.apache.commons.ssl.asn1

## Class ASN1InputStream

- java.lang.Object
- - java.io.InputStream
  - - java.io.FilterInputStream
    - - org.apache.commons.ssl.asn1.ASN1InputStream

All Implemented Interfaces:
  java.io.Closeable, java.lang.AutoCloseable, 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

Fields
`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.apache.commons.ssl.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

Constructors
Constructor and Description
`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

Methods
`private BERConstructedOctetString` `buildConstructedOctetString(DERObject sentinel)`
`private BERConstructedOctetString` `buildDerConstructedOctetString(int length)`
`private ASN1EncodableVector` `buildDerEncodableVector(int length)`
`private ASN1EncodableVector` `buildEncodableVector(DERObject sentinel)`
`protected DERObject` `buildObject(int tag, int tagNo, int length)` build an object given its tag and the number of bytes to construct it from.
`private byte[]` `readDefiniteLengthFully(int length)`
`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,
                        int length)
                             throws java.io.IOException

build an object given its tag and the number of bytes to construct it from.

Throws:
  `java.io.IOException`

#### readDefiniteLengthFully

    private byte[] readDefiniteLengthFully(int length)
                                    throws java.io.IOException

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(DERObject sentinel)
                                                           throws java.io.IOException

Throws:
  `java.io.IOException`

#### buildDerConstructedOctetString

    private BERConstructedOctetString buildDerConstructedOctetString(int length)
                                                              throws java.io.IOException

Throws:
  `java.io.IOException`

#### buildEncodableVector

    private ASN1EncodableVector buildEncodableVector(DERObject sentinel)
                                              throws java.io.IOException

Throws:
  `java.io.IOException`

#### buildDerEncodableVector

    private ASN1EncodableVector buildDerEncodableVector(int length)
                                                 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`