Class ANY

java.lang.Object
org.mozilla.jss.asn1.ANY
All Implemented Interfaces:
ASN1Value

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.

  • Field Details

    • encoded

      private byte[] encoded
    • tag

      private Tag tag
    • contents

      private byte[] contents
      Strips out the header and returns just the contents octets of the encoding.
    • templateInstance

      private static ANY.Template templateInstance
  • Constructor Details

    • 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 Details

    • getTag

      public Tag getTag()
      Returns the tag of this value.
      Specified by:
      getTag in interface ASN1Value
      Returns:
      Base tag.
    • 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, IOException
      Returns the ASN.1 header from the encoding.
      Returns:
      ASN.1 header.
      Throws:
      InvalidBERException - If there is an invalid BER encoding.
      IOException - If other error occurred.
    • getContents

      public byte[] getContents() throws InvalidBERException
      Throws:
      InvalidBERException
    • encode

      public void encode(OutputStream ostream) throws IOException
      Description copied from interface: ASN1Value
      Write this value's DER encoding to an output stream using its own base tag.
      Specified by:
      encode in interface ASN1Value
      Parameters:
      ostream - Output stream.
      Throws:
      IOException - If an error occurred.
    • 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 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.
      IOException - If other error occurred.
    • encode

      public void encode(Tag implicitTag, OutputStream ostream) throws IOException
      Description copied from interface: ASN1Value
      Write this value's DER encoding to an output stream using an implicit tag.
      Specified by:
      encode in interface ASN1Value
      Parameters:
      implicitTag - This parameter is ignored, because ANY values cannot have implicit tags.
      ostream - Output stream.
      Throws:
      IOException - If an error occurred.
    • encodeWithAlternateTag

      public void encodeWithAlternateTag(Tag alternateTag, OutputStream ostream) throws 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.
      IOException - If other error occurred.
    • getTemplate

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