org.mozilla.jss.asn1

Class ANY

public class ANY extends Object implements ASN1Value

Represents an ASN.1 ANY value. An ANY is just an arbitrary ASN.1 value. It can be thought of as the simplest implementation of the ASN1Value interface. Although they can be created from scratch (from raw BER), instances of ANY are usually found after decoding with a template that has an ANY field.

An ANY supports extracting the BER encoding, or decoding with a different template.

Nested Class Summary
static classANY.Template
A class for decoding ANY values from BER.
Constructor Summary
ANY(Tag tag, byte[] encoded)
Creates an ANY value, which is just a generic ASN.1 value.
ANY(byte[] encoded)
Creates an ANY value, which is just a generic ASN.1 value.
Method Summary
ASN1ValuedecodeWith(ASN1Template template)
Decodes this ANY using the given template.
ASN1ValuedecodeWith(Tag implicitTag, ASN1Template template)
Decodes this ANY using the given template.
voidencode(OutputStream ostream)
voidencode(Tag implicitTag, OutputStream ostream)
voidencodeWithAlternateTag(Tag alternateTag, OutputStream ostream)
Extracts the contents from the ANY and encodes them with the provided tag.
byte[]getContents()
byte[]getEncoded()
Returns the complete encoding of header and contents, as passed into the constructor or read from a BER input stream.
ASN1HeadergetHeader()
Returns the ASN.1 header from the encoding.
TaggetTag()
Returns the tag of this value.
static ANY.TemplategetTemplate()
Returns a singleton instance of a decoding template.

Constructor Detail

ANY

public ANY(Tag tag, byte[] encoded)
Creates an ANY value, which is just a generic ASN.1 value. This method is provided for efficiency if the tag is already known, so that we don't have to parse the encoding for it.

Parameters: tag The tag of this value. It must be the same as the actual tag contained in the encoding. encoded The complete BER encoding of this value, including tag, form, length, and contents.

ANY

public ANY(byte[] encoded)
Creates an ANY value, which is just a generic ASN.1 value.

Parameters: encoded The complete BER encoding of this value, including tag, form, length, and contents.

Method Detail

decodeWith

public ASN1Value decodeWith(ASN1Template template)
Decodes this ANY using the given template. This is useful if you originally decoded something as an ANY because you didn't know what it was, but now you know what it is supposed to be.

Parameters: template The template to use to decode this ANY.

Returns: The output of the given template when it is fed the encoding of this ANY.

decodeWith

public ASN1Value decodeWith(Tag implicitTag, ASN1Template template)
Decodes this ANY using the given template. This is useful if you originally decoded something as an ANY because you didn't know what it was, but now you know what it is supposed to be.

Parameters: implicitTag The implicit tag for the encoding. template The template to use to decode this ANY.

Returns: The output of the given template when it is fed the encoding of this ANY.

encode

public void encode(OutputStream ostream)

encode

public void encode(Tag implicitTag, OutputStream ostream)

Parameters: implicitTag This parameter is ignored, because ANY values cannot have implicit tags.

encodeWithAlternateTag

public void encodeWithAlternateTag(Tag alternateTag, OutputStream ostream)
Extracts the contents from the ANY and encodes them with the provided tag.

getContents

public byte[] getContents()

getEncoded

public byte[] getEncoded()
Returns the complete encoding of header and contents, as passed into the constructor or read from a BER input stream.

getHeader

public ASN1Header getHeader()
Returns the ASN.1 header from the encoding.

getTag

public Tag getTag()
Returns the tag of this value.

getTemplate

public static ANY.Template getTemplate()
Returns a singleton instance of a decoding template.