You are currently viewing a snapshot of www.mozilla.org taken on April 21, 2008. Most of this content is highly out of date (some pages haven't been updated since the project began in 1998) and exists for historical purposes only. If there are any pages on this archive site that you think should be added back to www.mozilla.org, please file a bug.




org.mozilla.jss.asn1
Class ASN1Header

java.lang.Object
  extended by org.mozilla.jss.asn1.ASN1Header

public class ASN1Header
extends java.lang.Object

The portion of a BER encoding that precedes the contents octets. Consists of the tag, form, and length octets.


Field Summary
static Form CONSTRUCTED
           
static Form PRIMITIVE
           
 
Constructor Summary
ASN1Header(java.io.InputStream istream)
          Gets info about the next item in the DER stream, consuming the identifier and length octets.
ASN1Header(Tag tag, Form form, long contentLength)
          This constructor is to be called when we are constructing an ASN1Value rather than decoding it.
 
Method Summary
 byte[] encode()
           
 void encode(java.io.OutputStream ostream)
           
 long getContentLength()
          Returns -1 for indefinite length encoding.
 Form getForm()
          Returns the Form, PRIMITIVE or CONSTRUCTED.
 Tag getTag()
           
 long getTotalLength()
          Returns the length of the header plus the length of the contents; the total length of the DER encoding of an ASN1 value.
 boolean isEOC()
          Returns true if this is a BER end-of-contents marker.
static ASN1Header lookAhead(java.io.InputStream derStream)
          Returns information about the next item in the stream, but does not consume any octets.
static byte[] unsignedBigIntToByteArray(java.math.BigInteger bi)
          Converts an unsigned BigInteger to a minimal-length byte array.
 void validate(Tag expectedTag)
          Verifies that this head has the given tag.
 void validate(Tag expectedTag, Form expectedForm)
          Verifies that this header has the given tag and form.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PRIMITIVE

public static final Form PRIMITIVE

CONSTRUCTED

public static final Form CONSTRUCTED
Constructor Detail

ASN1Header

public ASN1Header(java.io.InputStream istream)
           throws InvalidBERException,
                  java.io.IOException
Gets info about the next item in the DER stream, consuming the identifier and length octets.

Throws:
InvalidBERException
java.io.IOException

ASN1Header

public ASN1Header(Tag tag,
                  Form form,
                  long contentLength)
This constructor is to be called when we are constructing an ASN1Value rather than decoding it.

Parameters:
contentLength - Must be >=0. Although indefinite length decoding is supported, indefinite length encoding is not.
Method Detail

getTotalLength

public long getTotalLength()
Returns the length of the header plus the length of the contents; the total length of the DER encoding of an ASN1 value. Returns -1 if indefinite length encoding was used.


getTag

public Tag getTag()

getContentLength

public long getContentLength()
Returns -1 for indefinite length encoding.


getForm

public Form getForm()
Returns the Form, PRIMITIVE or CONSTRUCTED.


lookAhead

public static ASN1Header lookAhead(java.io.InputStream derStream)
                            throws java.io.IOException,
                                   InvalidBERException
Returns information about the next item in the stream, but does not consume any octets.

Throws:
java.io.IOException - If the input stream does not support look ahead.
InvalidBERException

encode

public void encode(java.io.OutputStream ostream)
            throws java.io.IOException
Throws:
java.io.IOException

encode

public byte[] encode()

unsignedBigIntToByteArray

public static byte[] unsignedBigIntToByteArray(java.math.BigInteger bi)
Converts an unsigned BigInteger to a minimal-length byte array. This is necessary because BigInteger.toByteArray() attaches an extra sign bit, which could cause the size of the byte representation to be bumped up by an extra byte.


validate

public void validate(Tag expectedTag,
                     Form expectedForm)
              throws InvalidBERException
Verifies that this header has the given tag and form.

Throws:
InvalidBERException - If the header's tag or form differ from those passed in.

validate

public void validate(Tag expectedTag)
              throws InvalidBERException
Verifies that this head has the given tag.

Throws:
InvalidBERException - If the header's tag differs from that passed in.

isEOC

public boolean isEOC()
Returns true if this is a BER end-of-contents marker.