Package org.mozilla.jss.asn1
Class ANY
- java.lang.Object
-
- org.mozilla.jss.asn1.ANY
-
- All Implemented Interfaces:
ASN1Value
public class ANY extends java.lang.Object implements ASN1Value
Represents an ASN.1ANY
value. An ANY is just an arbitrary ASN.1 value. It can be thought of as the simplest implementation of theASN1Value
interface. Although they can be created from scratch (from raw BER), instances ofANY
are usually found after decoding with a template that has anANY
field.An
ANY
supports extracting the BER encoding, or decoding with a different template.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ANY.Template
A class for decodingANY
values from BER.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ASN1Value
decodeWith(ASN1Template template)
Decodes this ANY using the given template.ASN1Value
decodeWith(Tag implicitTag, ASN1Template template)
Decodes this ANY using the given template.void
encode(java.io.OutputStream ostream)
Write this value's DER encoding to an output stream using its own base tag.void
encode(Tag implicitTag, java.io.OutputStream ostream)
Write this value's DER encoding to an output stream using an implicit tag.void
encodeWithAlternateTag(Tag alternateTag, java.io.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.ASN1Header
getHeader()
Returns the ASN.1 header from the encoding.Tag
getTag()
Returns the tag of this value.static ANY.Template
getTemplate()
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) throws InvalidBERException
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.- Throws:
InvalidBERException
- If there is an invalid BER encoding.
-
-
Method Detail
-
getTag
public Tag getTag()
Returns the tag of this value.
-
getEncoded
public byte[] getEncoded()
Returns the complete encoding of header and contents, as passed into the constructor or read from a BER input stream.- Returns:
- Encoded header and contents.
-
getHeader
public ASN1Header getHeader() throws InvalidBERException, java.io.IOException
Returns the ASN.1 header from the encoding.- Returns:
- ASN.1 header.
- Throws:
InvalidBERException
- If there is an invalid BER encoding.java.io.IOException
- If other error occurred.
-
getContents
public byte[] getContents() throws InvalidBERException
- Throws:
InvalidBERException
-
encode
public void encode(java.io.OutputStream ostream) throws java.io.IOException
Description copied from interface:ASN1Value
Write this value's DER encoding to an output stream using its own base tag.
-
decodeWith
public ASN1Value decodeWith(ASN1Template template) throws InvalidBERException
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.
- Throws:
InvalidBERException
- If there is an invalid BER encoding.
-
decodeWith
public ASN1Value decodeWith(Tag implicitTag, ASN1Template template) throws java.io.IOException, InvalidBERException
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.
- Throws:
InvalidBERException
- If there is an invalid BER encoding.java.io.IOException
- If other error occurred.
-
encode
public void encode(Tag implicitTag, java.io.OutputStream ostream) throws java.io.IOException
Description copied from interface:ASN1Value
Write this value's DER encoding to an output stream using an implicit tag.
-
encodeWithAlternateTag
public void encodeWithAlternateTag(Tag alternateTag, java.io.OutputStream ostream) throws java.io.IOException, InvalidBERException
Extracts the contents from the ANY and encodes them with the provided tag.- Parameters:
alternateTag
- Alternate tag.ostream
- Output stream.- Throws:
InvalidBERException
- If there is an invalid BER encoding.java.io.IOException
- If other error occurred.
-
getTemplate
public static ANY.Template getTemplate()
Returns a singleton instance of a decoding template.- Returns:
- Decoding template.
-
-