ASNSDK TCE-Java
Highly powerful ASN.1 Tools for Java

MARBEN ASNSDK TCE-Java encompasses an ASN.1 Compiler together with pure Java ASN.1 BER, DER, PER (both aligned and unaligned), XER and CXER runtime providing a Java API. The Java API is a set of Java classes generated by the ASN.1 Compiler and depending on the input ASN.1 abstract syntax (a Java class is generated for each ASN.1 type).

The TCE-JAVA runtime also offers a Generic and a SAX-like Java API to handle ASN.1 data in a generic way. The Generic Java API provides Java classes that are independent of the ASN.1 description to process. You can access an ASN.1 value by providing the name of its ASN.1 type or the numeric identifier generated by the ASN.1 compiler. You can also access any field of an ASN.1 complex type (SEQUENCE, SET) by providing the field name or the numeric identifier generated by the ASN.1 compiler. The SAX-like API works exactly like an XML SAX API. Each decoded ASN.1 peace of data is given back to the user in an XML format.

The TCE ASN.1 Java runtime is fully re-entrant in order to run on multithreaded system.

ASN1 Compiler and Java API PER BER DER XER CXER
ASNSDK TCE-Java Architecture Overview

Using the ASN.1 Compiler to generate the Java API

The ASN.1 Compiler takes in input an ASN.1 description, performs syntax and semantic checks and produces, if needed, the corresponding error messages. It generates Java classes, associated with the ASN.1 types, and an information table that the runtime will use to encode/decode data. The ASN.1 Compiler supports the latest ASN.1 standards.

Based on the input ASN.1 description, the ASN.1 Compiler can also generate an XML schema (XSD) that conforms to XER (XML Encoding Rules) together with default XML Style sheet (XSL). Used in conjunction with the ASNSDK TCE-Java XER runtime, these features enable you to:

  • encode any XML value, that conforms to the XML Schema generated, in BER, DER or PER encoding (and vice-versa), thus providing an "XML Interface" to ASN.1 BER, DER and PER runtime,
  • use off-the-shelf XML tools to edit or modify ASN.1 values,
  • use off-the-shelf XSL processors and the default XML style sheet generated to translate, convert or process ASN.1 values, as for instance, to display ASN.1 values using common HTML browsers.

Developing your application over the generated Java API

The ASN.1 Runtime provide encoding/decoding services as well as constraints check and traces services. The user application has access to the Java BER, DER, PER, XER and CXER encoding/decoding services through the Java API generated by the ASN.1 Compiler.

The Java API is user-friendly. To each type of the input ASN.1 description corresponds a Java class. An ASN.1 value is an instance of a Java class. To encode or decode a value, the PER, BER, DER, XER and CXER encoding or decoding method has simply to be called. The TCE runtime reduces the complexity of your application programs by being able to automatically encode or decode open type values.

Click here for an example of use of the MARBEN ASNSDK TCE-Java

The TCE-JAVA runtime also offers a Generic Java API to handle ASN.1 data in a generic way. The Generic Java API provides Java classes that are independent of the ASN.1 description to process. You can access an ASN.1 value by providing the name of its ASN.1 type or the numeric identifier generated by the ASN.1 compiler. You can also access any field of an ASN.1 complex type (SEQUENCE, SET) by providing the field name or the numeric identifier generated by the ASN.1 compiler.

Building your application

Once you have developed your application code above the Java API generated by the ASN.1 Compiler, your application shall be compiled and then linked with the encoding/decoding runtime library to build up your final executable file.

System Requirements

TCE-Java ASN.1 Compiler:

  • is available on Windows, Linux and UNIX Operating Systems.
  • requires a Java Runtime Environment 1.2 or higher.

TCE-Java ASN.1 Runtime:

  • is delivered as Universal Java source code compatible with all Java runtime environments from J2ME CLDC 1.0 up to J2EE.