Category Archives: ASN2XML

Free Web Tools Updated

A few noteworthy changes have been made recently to our free web tools.

One is that a new tool has been added: ASN.1 Syntax Check.  This, as the name suggests, will run a basic syntax check on submitted ASN.1 schema files.  If the check is successful, an HTML representation of the ASN.1 syntax will be presented.  If syntax errors are detected, a display of the error and approximate line number is shown.

Another change is that it is now possible to upload multiple ASN.1 schema files.  In the past, it was necessary to combine all ASN.1  modules into a single text file.  The entire set of modules can now be uploaded as separate files.  Note that this requires that your web browser support multiple file selection, an HTML5 feature.  Most modern web browsers do, but there are some notable exceptions such as IE 9 and earlier.  No workarounds are planned to support these older browsers.

Finally, the underlying tools that do the work have been upgraded to the latest versions.  This includes ASN2TXT v2.4 which does ASN.1 to XML translation, ASN1C v6.7 which is used for XSD conversion and syntax checking, and the latest version of 3GPP NAS decoder.



ASN2XML web service improvements

We have recently made some improvements to the free, ASN2XML web translation service which we thought were worth mentioning. This service is available at the following URL:

One improvement is that it is now possible to copy/paste hexadecimal or base64 text that contains the ASN.1 binary message code to be translated directly into a text box rather than having to upload a file. This is done by clicking the ‘Text’ radio button in Step 1. The text can then be entered or pasted into the text box that appears and the type of text selected.

Another improvement is the addition of the ‘Built-in’ schema button in Step 2. This allows use of a number of ASN.1 schemas from common standards that have been pre-loaded. As of this writing, these standards include the following:

  • 3GPP/LTE schemas for S1AP, X2AP, and LTE-RRC
  • 3GPP UMTS schemas for NBAP, RANAP, RNSAP, and RRC
  • IETF schemas for PKIX and CMS
  • GSMA TAP3 and NRTRDE CDR schemas

We plan to continue to add more built-in schemas and are open to suggestions as to what you would like to see.

Finally, the restriction that the user be logged in from a user account has been removed. The service can now be used anonymously.

Users should be cognizant of the notification at the bottom of how data submitted to the service will be used. We will not pass the data on to 3rd parties for any reason; however, we do reserve the right to use it for internal testing to (hopefully) improve the quality of our products.


Using the ASN2XML DLL

The latest release of ASN2XML features a DLL component that users can embed in their application programs.  This makes it possible to output translated XML to different output mediums such as a GUI window.

Using the DLL is easy.  The Asn2Xml.h header file that is included in the download package contains the Asn2Xml class that defines the program interface.  The typical steps are to:

  1. Set the ASN.1 schema(s) using the addAsn1Schema method.
  2. Create a file input source using the setFileDataSource method (note: alternate data sources such as memory or socket can be created by creating an input stream object).
  3. Invoke the toXMLFile method to do the translation to a file.  It is possible to create alternate output streams for output to different output mediums.

By default, the encoding rules are set to Basic Encoding Rules (BER) and its derivatives (DER or CER).  It is also possible to translate PER-encoded data by using the setEncodingRules method.

That is basically it.  A key performance advantage that can be gained is that if a lot of files that adhere to the same schema need to be processed (common in CDR applications),  the schema file(s) would only need to be loaded and compiled once and a loop could then be set up to process the data files.  If the command-line version of the tool were used, the schema files would need to be compiled for each data file processed.

Sample programs showing how to use the DLL are available in the sample_dll directory in the download package.