# Class Asn1Parser

java.lang.Object
org.apache.tomcat.util.buf.Asn1Parser

public class Asn1Parser extends Object
This is a very basic ASN.1 parser that provides the limited functionality required by Tomcat. It is a long way from a complete parser.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `TAG_ATTRIBUTE_BASE`
  Base value for ASN.1 context-specific attribute tags.
  `static final int`
  `TAG_INTEGER`
  ASN.1 tag for INTEGER type.
  `static final int`
  `TAG_NULL`
  ASN.1 tag for NULL type.
  `static final int`
  `TAG_OCTET_STRING`
  ASN.1 tag for OCTET STRING type.
  `static final int`
  `TAG_OID`
  ASN.1 tag for OID type.
  `static final int`
  `TAG_SEQUENCE`
  ASN.1 tag for SEQUENCE type.
  `static final int`
  `TAG_UTF8STRING`
  ASN.1 tag for UTF8String type.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Asn1Parser(byte[] source)`
  Constructs a new Asn1Parser.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `eof()`
  Returns whether the end of the source data has been reached.
  `int`
  `getNestedSequenceLevel()`
  Returns the current nesting level of SEQUENCE tags.
  `byte[]`
  `parseAttributeAsBytes(int index)`
  Parses a context-specific attribute value as raw bytes.
  `void`
  `parseBytes(byte[] dest)`
  Reads raw bytes into the destination array.
  `void`
  `parseFullLength()`
  Validates that the remaining data matches the parsed length.
  `BigInteger`
  `parseInt()`
  Parses an INTEGER value.
  `int`
  `parseLength()`
  Parses an ASN.1 length field.
  `void`
  `parseNull()`
  Parses a NULL value.
  `byte[]`
  `parseOctetString()`
  Parses an OCTET STRING value.
  `byte[]`
  `parseOIDAsBytes()`
  Parses an OID value as raw bytes.
  `void`
  `parseTag(int tag)`
  Parses and validates an expected tag.
  `void`
  `parseTagSequence()`
  Parses a SEQUENCE tag and tracks nesting.
  `String`
  `parseUTF8String()`
  Parses a UTF8String value.
  `int`
  `peekTag()`
  Returns the next ASN.1 tag byte without advancing the position.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### TAG_INTEGER

    public static final int TAG_INTEGER
    ASN.1 tag for INTEGER type.
    See Also:
      - Constant Field Values

  - ### TAG_OCTET_STRING

    public static final int TAG_OCTET_STRING
    ASN.1 tag for OCTET STRING type.
    See Also:
      - Constant Field Values

  - ### TAG_NULL

    public static final int TAG_NULL
    ASN.1 tag for NULL type.
    See Also:
      - Constant Field Values

  - ### TAG_OID

    public static final int TAG_OID
    ASN.1 tag for OID type.
    See Also:
      - Constant Field Values

  - ### TAG_UTF8STRING

    public static final int TAG_UTF8STRING
    ASN.1 tag for UTF8String type.
    See Also:
      - Constant Field Values

  - ### TAG_SEQUENCE

    public static final int TAG_SEQUENCE
    ASN.1 tag for SEQUENCE type.
    See Also:
      - Constant Field Values

  - ### TAG_ATTRIBUTE_BASE

    public static final int TAG_ATTRIBUTE_BASE
    Base value for ASN.1 context-specific attribute tags.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### Asn1Parser

    public Asn1Parser(byte[] source)
    Constructs a new Asn1Parser.
    Parameters:
      `source` - the source byte array to parse

- ## Method Details

  - ### eof

    public boolean eof()
    Returns whether the end of the source data has been reached.
    Returns:
      `true` if the end of the source data has been reached

  - ### peekTag

    public int peekTag()
    Returns the next ASN.1 tag byte without advancing the position.
    Returns:
      the next tag byte value

  - ### parseTagSequence

    public void parseTagSequence()
    Parses a SEQUENCE tag and tracks nesting.

  - ### parseTag

    public void parseTag(int tag)
    Parses and validates an expected tag.
    Parameters:
      `tag` - the expected tag value

  - ### parseFullLength

    public void parseFullLength()
    Validates that the remaining data matches the parsed length.

  - ### parseLength

    public int parseLength()
    Parses an ASN.1 length field.
    Returns:
      the parsed length value

  - ### parseInt

    public BigInteger parseInt()
    Parses an INTEGER value.
    Returns:
      the parsed integer as a `BigInteger`

  - ### parseOctetString

    public byte[] parseOctetString()
    Parses an OCTET STRING value.
    Returns:
      the parsed octet string bytes

  - ### parseNull

    public void parseNull()
    Parses a NULL value.

  - ### parseOIDAsBytes

    public byte[] parseOIDAsBytes()
    Parses an OID value as raw bytes.
    Returns:
      the parsed OID bytes

  - ### parseUTF8String

    public String parseUTF8String()
    Parses a UTF8String value.
    Returns:
      the parsed UTF-8 string

  - ### parseAttributeAsBytes

    public byte[] parseAttributeAsBytes(int index)
    Parses a context-specific attribute value as raw bytes.
    Parameters:
      `index` - the context-specific attribute index
    Returns:
      the parsed attribute bytes

  - ### parseBytes

    public void parseBytes(byte[] dest)
    Reads raw bytes into the destination array.
    Parameters:
      `dest` - the destination byte array

  - ### getNestedSequenceLevel

    public int getNestedSequenceLevel()
    Returns the current nesting level of SEQUENCE tags.
    Returns:
      the number of nested SEQUENCE tags