Class Asn

All Implemented Interfaces:
AutoCloseable

public class Asn extends ChilkatObject
<section class="asn-summary">

Load, inspect, build, edit, and encode ASN.1 structures in DER or XML form.

Chilkat.Asn represents an ASN.1 item and its optional child items. It can load ASN.1 from binary DER, encoded DER strings, files, or BinData; expose tags, tag values, primitive content, boolean and integer values, and child counts; build constructed structures such as SEQUENCE and SET; append common primitive types such as booleans, integers, big integers, bit strings, octets, OIDs, strings, times, null values, and context-specific items; convert ASN.1 to XML; reload from that XML form; and write the final structure back to DER.

Load DER data

Load ASN.1 from binary DER bytes, encoded text such as Base64 or hex, files, or existing BinData objects.

Inspect ASN.1 items

Read the item tag, tag value, constructed/primitive state, sub-item count, string content, boolean value, or integer value.

Build sequences and sets

Append constructed SEQUENCE and SET items, then add child ASN.1 values beneath them.

Append primitive values

Add booleans, integers, big integers, bit strings, octet strings, OIDs, strings, times, null values, and encoded byte content.

Context-specific tags

Add context-specific primitive or constructed items when working with ASN.1 formats that use tagged application-specific structures.

DER and XML conversion

Convert ASN.1 to XML for inspection or editing, load ASN.1 back from XML, and output the result as binary or encoded DER.

Common pattern: Load existing DER with LoadBinary, LoadEncoded, LoadBd, or LoadBinaryFile, inspect the tree with Tag, Constructed, NumSubItems, and GetSubItem, then extract primitive content or convert to XML with AsnToXml. To create ASN.1, start with a constructed item, append child values, and write the final DER with GetBinaryDer, GetEncodedDer, WriteBd, or WriteBinaryDer.

</section>

Instances hold a native Chilkat object: close them with ChilkatObject.close() (try-with-resources) when done; an unclosed instance is freed when it becomes unreachable.

See Also:
Online reference
  • Constructor Details

    • Asn

      public Asn()
      Creates a new Asn object.
  • Method Details

    • getBoolValue

      public boolean getBoolValue()
      The ASN.1 item's boolean value if it is a boolean item.
      Returns:
      the value of the BoolValue property
    • setBoolValue

      public void setBoolValue​(boolean value)
      Sets the BoolValue property; see getBoolValue().
      Parameters:
      value - the new value
    • getConstructed

      public boolean getConstructed()
      true if this ASN.1 item is a constructed item. Sequence and Set items are constructed and can contain sub-items. All other tags (boolean, integer, octets, utf8String, etc.) are primitive (non-constructed).
      Returns:
      the value of the Constructed property (read-only)
    • getContentStr

      public String getContentStr()
      The ASN.1 item's content if it is an ASN.1 string type (such as Utf8String, BmpString, PrintableString, VisibleString, T61String, IA5String, NumericString, or UniversalString).
      Returns:
      the value of the ContentStr property
    • setContentStr

      public void setContentStr​(String value)
      Sets the ContentStr property; see getContentStr().
      Parameters:
      value - the new value (not null)
    • getIntValue

      public int getIntValue()
      The ASN.1 item's integer value if it is a small integer item.
      Returns:
      the value of the IntValue property
    • setIntValue

      public void setIntValue​(int value)
      Sets the IntValue property; see getIntValue().
      Parameters:
      value - the new value
    • getNumSubItems

      public int getNumSubItems()
      The number of sub-items contained within this ASN.1 item. Only constructed items, such as Sequence and Set will contain sub-iitems. Primitive items such as OIDs, octet strings, integers, etc. will never contain sub-items.
      Returns:
      the value of the NumSubItems property (read-only)
    • getTag

      public String getTag()
      The ASN.1 item's tag as a descriptive string. Possible values are:
      boolean
       integer
       bitString
       octets
       null
       oid
       utf8String
       relativeOid
       sequence
       set
       numericString
       printableString
       t61String
       ia5String
       utcTime
       bmpString
      Returns:
      the value of the Tag property (read-only)
    • getTagValue

      public int getTagValue()
      The ASN.1 item's tag as a integer value. The integer values for possible tags are as follows:
      boolean (1)
       integer (2)
       bitString (3)
       octets (4)
       null (5)
       oid (6)
       utf8String (12)
       relativeOid (13)
       sequence (16)
       set (17)
       numericString (18)
       printableString (19)
       t61String (20)
       ia5String (22)
       utcTime (23)
       bmpString (30)
      Returns:
      the value of the TagValue property (read-only)
    • appendBigInt

      public void appendBigInt​(String encodedBytes, String encoding)
      Appends an ASN.1 integer, but one that is a big (huge) integer that is too large to be represented by an integer variable. The bytes composing the integer are passed in encoded string format (such as base64, hex, etc.). The byte order must be big-endian. The encoding may be any of the following encodings: Base64, Hex, Base58, modBase64, Base32, UU, QP (for quoted-printable), URL (for url-encoding), Q, B, url_oath, url_rfc1738, url_rfc2396, and url_rfc3986. The encoding name is case insensitive (for example, both Base64 and base64 are treated the same).
      Parameters:
      encodedBytes - the encodedBytes argument (not null)
      encoding - the encoding argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendBits

      public void appendBits​(String encodedBytes, String encoding)
      Appends an ASN.1 bit string to the caller's sub-items. The bytes containing the bits are passed in encoded string format (such as base64, hex, etc.). The byte order must be big-endian (MSB first). The encoding may be any of the following encodings: Base64, Hex, Base58, modBase64, Base32, UU, QP (for quoted-printable), URL (for url-encoding), Q, B, url_oath, url_rfc1738, url_rfc2396, and url_rfc3986. The encoding name is case insensitive (for example, both Base64 and base64 are treated the same).
      Parameters:
      encodedBytes - the encodedBytes argument (not null)
      encoding - the encoding argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendBool

      public void appendBool​(boolean value)
      Appends an ASN.1 boolean item to the caller's sub-items. Items may only be appended to constructed data types such as Sequence and Set.
      Parameters:
      value - the value argument
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendContextConstructed

      public void appendContextConstructed​(int tag)
      Appends an ASN.1 context-specific constructed item to the caller's sub-items.
      Parameters:
      tag - the tag argument
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendContextPrimitive

      public void appendContextPrimitive​(int tag, String encodedBytes, String encoding)
      Appends an ASN.1 context-specific primitive item to the caller's sub-items. The bytes are passed in encoded string format (such as base64, hex, etc.). The encoding may be any of the following encodings: Base64, Hex, Base58, modBase64, Base32, UU, QP (for quoted-printable), URL (for url-encoding), Q, B, url_oath, url_rfc1738, url_rfc2396, and url_rfc3986. The encoding name is case insensitive (for example, both Base64 and base64 are treated the same).
      Parameters:
      tag - the tag argument
      encodedBytes - the encodedBytes argument (not null)
      encoding - the encoding argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendInt

      public void appendInt​(int value)
      Appends an ASN.1 integer item to the caller's sub-items. Items may only be appended to constructed data types such as Sequence and Set.
      Parameters:
      value - the value argument
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendNull

      public void appendNull()
      Appends an ASN.1 null item to the caller's sub-items. Items may only be appended to constructed data types such as Sequence and Set.
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendOctets

      public void appendOctets​(String encodedBytes, String encoding)
      Appends an ASN.1 octet string to the caller's sub-items. The bytes are passed in encoded string format (such as base64, hex, etc.). The encoding may be any of the following encodings: Base64, Hex, Base58, modBase64, Base32, UU, QP (for quoted-printable), URL (for url-encoding), Q, B, url_oath, url_rfc1738, url_rfc2396, and url_rfc3986. The encoding name is case insensitive (for example, both Base64 and base64 are treated the same).
      Parameters:
      encodedBytes - the encodedBytes argument (not null)
      encoding - the encoding argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendOid

      public void appendOid​(String oid)
      Appends an ASN.1 OID (object identifier) to the caller's sub-items. The OID is passed in string form, such as 1.2.840.113549.1.9.1.
      Parameters:
      oid - the oid argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendSequence

      public void appendSequence()
      Appends an ASN.1 sequence item to the caller's sub-items.
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendSequence2

      public void appendSequence2()
      Appends an ASN.1 sequence item to the caller's sub-items, and updates the internal reference to point to the newly appended sequence item.
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendSequenceR

      public Asn appendSequenceR()
      Appends an ASN.1 sequence item to the caller's sub-items, and returns the newly appended sequence item.
      Returns:
      a new Asn owned by the caller (never null); close it when done
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendSet

      public void appendSet()
      Appends an ASN.1 set item to the caller's sub-items.
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendSet2

      public void appendSet2()
      Appends an ASN.1 set item to the caller's sub-items, and updates the internal reference to point to the newly appended set item.
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendSetR

      public Asn appendSetR()
      Appends an ASN.1 set item to the caller's sub-items, and returns the newly appended set item.
      Returns:
      a new Asn owned by the caller (never null); close it when done
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendString

      public void appendString​(String strType, String value)
      Appends a string item to the caller's sub-items. The strType specifies the type of string to be added. It may be utf8, ia5, t61, printable, visible, numeric, universal, or bmp. The value must conform to the ASN.1 restrictions imposed for a given string type. The utf8, bmp, and universal types have no restrictions on what characters are allowed. In general, unless a specific type of string is required, choose the utf8 type.
      Parameters:
      strType - the strType argument (not null)
      value - the value argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • appendTime

      public void appendTime​(String timeFormat, String dateTimeStr)
      Appends a UTCTime item to the caller's sub-items. The timeFormat specifies the format of the dateTimeStr. It should be set to utc. (In the future, this method will be expanded to append GeneralizedTime items by using generalized for timeFormat.) To append the current date/time, set dateTimeStr equal to the empty string or the keyword now. Otherwise, the dateTimeStr should be in the UTC time format YYMMDDhhmm[ss]Z or YYMMDDhhmm[ss](+|-)hhmm.
      Parameters:
      timeFormat - the timeFormat argument (not null)
      dateTimeStr - the dateTimeStr argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • asnToXml

      public String asnToXml()
      Converts ASN.1 to XML and returns the XML string.
      Returns:
      the result (never null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • deleteSubItem

      public void deleteSubItem​(int index)
      Discards the Nth sub-item. (The 1st sub-item is at index 0.)
      Parameters:
      index - the index argument
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • getEncodedContent

      public String getEncodedContent​(String encoding)
      Returns the content of the ASN.1 item in encoded string form. The encoding may be any of the following encodings: Base64, Hex, Base58, modBase64, Base32, UU, QP (for quoted-printable), URL (for url-encoding), Q, B, url_oath, url_rfc1738, url_rfc2396, and url_rfc3986. The encoding name is case insensitive (for example, both Base64 and base64 are treated the same).
      Parameters:
      encoding - the encoding argument (not null)
      Returns:
      the result (never null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • getEncodedDer

      public String getEncodedDer​(String encoding)
      Returns the binary DER in encoded string form. The encoding indicates the encoding and can be base64, hex, uu, quoted-printable, base32, or modbase64.
      Parameters:
      encoding - the encoding argument (not null)
      Returns:
      the result (never null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • getLastSubItem

      public Asn getLastSubItem()
      Returns the last ASN.1 sub-item. This method can be called immediately after any Append* method to access the appended item.
      Returns:
      a new Asn owned by the caller (never null); close it when done
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • getSubItem

      public Asn getSubItem​(int index)
      Returns the Nth ASN.1 sub-item. The 1st sub-item is at index 0.
      Parameters:
      index - the index argument
      Returns:
      a new Asn owned by the caller (never null); close it when done
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • loadAsnXml

      public void loadAsnXml​(String xmlStr)
      Loads ASN.1 from the XML representation (such as that created by the AsnToXml method).
      Parameters:
      xmlStr - the xmlStr argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • loadBd

      public void loadBd​(BinData bd)
      Loads ASN.1 from the binary DER contained in bd.
      Parameters:
      bd - the bd argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • loadBinaryFile

      public void loadBinaryFile​(String path)
      Loads ASN.1 from a binary DER file.
      Parameters:
      path - the path argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • loadEncoded

      public void loadEncoded​(String asnContent, String encoding)
      Loads ASN.1 from an encoded string. The encoding can be base64, hex, uu, quoted-printable, base32, or modbase64.
      Parameters:
      asnContent - the asnContent argument (not null)
      encoding - the encoding argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • setEncodedContent

      public void setEncodedContent​(String encodedBytes, String encoding)
      Sets the content of this primitive ASN.1 item. The encoding may be any of the following encodings: Base64, Hex, Base58, modBase64, Base32, UU, QP (for quoted-printable), URL (for url-encoding), Q, B, url_oath, url_rfc1738, url_rfc2396, and url_rfc3986. The encoding name is case insensitive (for example, both Base64 and base64 are treated the same).
      Parameters:
      encodedBytes - the encodedBytes argument (not null)
      encoding - the encoding argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • writeBd

      public void writeBd​(BinData bd)
      Appends the ASN.1 in binary DER format to bd.
      Parameters:
      bd - the bd argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why
    • writeBinaryDer

      public void writeBinaryDer​(String path)
      Writes the ASN.1 in binary DER form to a file.
      Parameters:
      path - the path argument (not null)
      Throws:
      ChilkatException - if the operation fails; ChilkatException.getLastErrorText() says why