Highly powerful ASN.1 Tools for C++

MARBEN ASNSDK TCE-C++ encompasses an ASN.1 Compiler together with C++ ASN.1 BER, DER, PER (both aligned and unaligned), XER and CXER runtime providing a C++ API.

The C++ API is a set of C++ classes generated by the ASN.1 Compiler and depending on the input ASN.1 abstract syntax (a C++ class is generated for each ASN.1 type).

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

ASNSDK TCE-C++ Architecture Overview

Using the ASN.1 Compiler to generate the C++ 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 C++ 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-C++ 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 C++ API

The ASN.1 Runtime provides encoding/decoding services as well as constraints check and traces services. The user application has access to the C++ BER, DER, PER, XER and CXER encoding/decoding services through the C++ API generated by the ASN.1 Compiler. The ASN.1 Runtime also offers customization mechanism for the adaptation and the porting of the application in various environments.

The C++ API is user-friendly. To each type of the input ASN.1 description corresponds a C++ class. An ASN.1 value is an instance of a C++ 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-C++

Customizing the ASN.1 Runtime for your target environment

The TCE-C++ ASN.1 Runtime is highly customizable, to enable users to port and tune the runtime to various platforms. All customization entry points are located in the same include file. They fully cover basic types and memory management definitions.

The default customization delivered with the runtime can be used without any changes on most of Unix/Linux platforms.

Building your application

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

System Requirements

TCE-C++ ASN.1 Compiler:

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

TCE-C++ ASN.1 runtime:

  • is delivered as portable ANSI C++ source code.