Monday, December 21, 2020

OSS ASN.1/Java BERTool TLV Utility

 There has always been a need to present ASN.1 BER/CER/DER (Basic, Canonical, and Distinguished Encoding Rules) binary messages in human readable format to more easily examine their correctness and pinpoint the location of errors in problematic messages without requiring access to their schemas.


To satisfy this need, earlier versions of the OSS ASN.1/Java Tools included a native osstlv utility.  While the utility is quite useful, there are limitations resulting from it being written in C. The utility can not be invoked programmatically from a Java application. Also, as a native utility, it was not always possible to use it on the same machine/platform where the problematic BER messages were detected. These limitations failed to meet the basic requirement of platform-independent Java applications: the ability  to run on any platform. 


Beginning with release 8.3 of the ASN.1/Java Tools, a new platform-independent osstlv utility is included in the Tools. It is written in Java and is available as a self-contained executable jar that can be run as a standalone application. The utility can also be invoked programmatically using the API (BERTool.dumpTLV()). This new utility supports a new ExtendedDump format, as well as the hexadecimal, decomposed, and syntax TLV formats already supported in the old native osstlv utility. The new API enables you to develop custom formats to suit your needs.


The new Extended Dump TLV format is similar to the hexadecimal memory dump. It includes three fields separated by colons: file offset, encoding in hexadecimal, and encoding in ASCII. The Tag-Length and Contents parts are printed on separate lines. The ASCII representation for the Tag-Length part contains the character 'C' for constructed encodings and 'P' for primitive, as well as formatted tag and length.


Examples:

Definite length encoding:

0000 : 30 2A                               : C [UNIVERSAL 16] 42

0002 : 30 06                               : C [UNIVERSAL 16] 6

0004 : 02 01                               : P [UNIVERSAL 2] 1

0006 : 0A                                  : .

0007 : 01 01                               : P [UNIVERSAL 1] 1

0009 : FF                                  : .

0010 : 30 00                               : C [UNIVERSAL 16] 0

0012 : 30 1E                               : C [UNIVERSAL 16] 30

0014 : 09 09                               : P [UNIVERSAL 9] 9

0016 : 80 35 09 54 0A 2B E5 20 DF          : .5.T.+. .

0025 : 17 11                               : P [UNIVERSAL 23] 17

0027 : 39 32 30 34 32 33 31 37 34 33 33 34 : 920423174334

0039 : 2D 30 37 30 30                      : -0700

 



Indefinite length encoding:

0000 : 30 80                               : C [UNIVERSAL 16] indef

0002 : 30 80                               : C [UNIVERSAL 16] indef

0004 : 02 01                               : P [UNIVERSAL 2] 1

0006 : 0A                                  : .

0007 : 01 01                               : P [UNIVERSAL 1] 1

0009 : FF                                  : .

0010 : 00 00                               : END-OF-CONTENTS

0012 : 30 80                               : C [UNIVERSAL 16] indef

0014 : 00 00                               : END-OF-CONTENTS

0016 : 30 80                               : C [UNIVERSAL 16] indef

0018 : 09 09                               : P [UNIVERSAL 9] 9

0020 : 80 35 09 54 0A 2B E5 20 DF          : .5.T.+. .

0029 : 17 11                               : P [UNIVERSAL 23] 17

0031 : 39 32 30 34 32 33 31 37 34 33 33 34 : 920423174334

0043 : 2D 30 37 30 30                      : -0700

0048 : 00 00                               : END-OF-CONTENTS

0050 : 00 00                               : END-OF-CONTENTS

 

Detailed information about the new ossltv utility class can be found in the ASN.1/Java Tools online documentation. Download a trial of the Tools and evaluate for yourself the usefulness of this utility.


Monday, October 19, 2020

OSS ASN.1 Studio Test Data Generator

Having spent three decades developing robust and reliable ASN.1 solutions, we know how time consuming and complex a task it is to create a comprehensive test suite to test your own ASN.1-based solutions. This is why ASN.1 Studio, our powerful state-of-the-art ASN.1 IDE, includes a powerful feature that allows you to easily configure it, and within seconds  to generate thousands of different test messages  - work that, if performed manually, would be error prone and take days or weeks to complete.


ASN.1 Studio includes several options to customize your test messages. As you can see in the image above, if constraints are applied to ASN.1 types or on the fields of a type, you can select the first value that satisfies the constraints, or select a random value using those constraints. You can also ignore the constraints and set possible values in a configuration table for the ASN.1 types and fields that ASN.1 Studio will then use to generate test messages. 

Following are a few examples of values and ranges of values for various ASN.1 types or fields that you can configure for the test message generation. 


  • For INTEGER types, you can select a range of values. 


  • You can select TRUE, FALSE, or a random value for BOOLEAN types. 


  • For OCTET STRING types, you can select the minimum and maximum length of octets, and the range for a single octet value; that is, you can specify that all the octet values should range from 0x00 to 0x1F.


  • For OBJECT IDENTIFIER types, you can specify the root arcs, a value range for additional arc values, and the number of additional arcs. 


  • For values of REAL types, you can specify ranges for mantissa values and exponent values to be used in the test messages. 


  • For optional field values in SEQUENCE/SET types, you can select Absent, Present, or Random. You can do the same for the DEFAULT and extension addition values. For SEQUENCE OF/SET OF types, you can specify the number of components. 


  • Similarly, you can specify the values for several other ASN.1 types, such as BIT STRING, CHOICE, ENUMERATED, OID-IRI, Relative-OID, Relative-OID-IRI, REAL, Recursive types, Time types, and unrestricted character string types.


The current version of ASN.1 Studio saves all newly created test messages in one file. The next release will support saving such messages in separate files.


All of our ASN.1 Tools include ASN.1 Studio. Download a trial version of the OSS ASN.1 Tools and learn more about the test message generation feature by reviewing the “How do I create one or more encoded messages” section of the ASN.1 Studio Help screen. If you have any questions about the test message feature or ASN.1 Studio, please contact us at support@oss.com.


Monday, October 12, 2020

RTOED Runtime Library

With the release of ASN.1/C Tools 11.0 and ASN.1/C++ Tools 7.0, OSS introduces a new runtime library – RTOED (Read-only function pointers TOED). It is an enhanced version of TOED, OSS’ high performance, time-optimized runtime library.

RTOED includes several new features:

• The few function pointers used in RTOED are declared as static const. When RTOED code is compiled, the C compiler will place the function pointers in your program’s read-only memory, thereby preventing them from being maliciously overwritten to alter the control flow.

• The RTOED, TOED, SOED, and LED runtime libraries all now employ an improved stack protection mechanism to handle error conditions.

• If supported by your platform, ASN.1/C TOED and RTOED can be built using secured C runtime functions as specified in Annex K of the ISO/IEC 9899 standard, Information technology — Programming languages — C. This feature will be available in ASN.1/C++ TOED and RTOED in the next release, available 1Q2021.

RTOED static runtime libraries are now included in OSS’ ASN.1/C and ASN.1/C++ Tools. Existing TOED customers can easily upgrade to RTOED. In most cases (see RTOED limitations), you won’t need to change your application code; just recompile your ASN.1 specification with the -rtoed ASN.1 compiler option and re-link with the new RTOED library.

ASN.1 Studio, our state-of-the-art ASN.1 IDE, includes a powerful feature that offers easy configuration; within seconds you can generate thousands of different test messages. This is work that, if performed manually, would be error prone and take days or weeks to complete.

Thursday, January 2, 2020

What's New in 2020 - OSS ASN.1 and NAS Tools


2020 is going to be an exciting year for our customers. We will update our ASN.1 and NAS Tools to support 3GPP LTE and 5G Releases 15 and 16. In addition to enhancing our existing tools with new value added features, we will also introduce new NAS/C# Tools for LTE and 5G as well as our new S1/X2 ASN.1 API for Java.

The ASN.1 Tools will be upgraded to support LTE and 5G Releases 15 and 16. The OSS NAS/C, NAS/C++, and NAS/Java Tools, and NAS-1Step will be available for LTE and 5G Release 16.

Following the success of our NAS/C, NAS/C++, NAS/Java and NAS-1Step Tools, we are releasing the first version of our NAS/C# Tools available for LTE and 5G Release 16 in the second half of 2020. Users will be able to serialize/parse NAS messages from/to C# objects. In addition, the Tools will provide direct conversion of NAS messages to XML or JSON format. 

This year OSS is releasing our new S1/X2 ASN.1 API for Java supporting LTE Releases 14 and 15. This API will significantly reduce your S1/X2 protocol implementation efforts and provide an easier and less error prone upgrade path to newer 3GPP Releases. In addition, OSS will be updating the existing S1/X2 ASN.1 APIs for C and Java to support LTE Release 16 in 3Q2020.

ASN.1 Studio will be enhanced to automatically create several messages based on an input ASN.1 specification. This feature is particularly useful for customers when testing, as it will automatically generate several different types of test messages for their specification.

The ASN.1/C# Tools will support partial decoding to enable you to quickly decode preselected fields from incoming messages. A significant advantage of using partial decoding is that, when looking for a particular component in a large message, you can directly receive the value of the component you are looking for without having to navigate through the large message structure. This feature is useful in many application areas including Lawful Intercept, routers, protocol analyzers, and Self-Organizing Networks (SON).

3GPP is currently working on Release 16 which is expected to be finalized by June 2020. This Release will include support for Multimedia Priority Service, Vehicle-to-everything (V2X) application layer services, 5G satellite access, Local Area Network support in 5G, wireless and wireline convergence for 5G, terminal positioning and location, communications in vertical domains, network automation, and novel radio techniques, etc. The OSS ASN.1 Tools will support Release 16. New samples will be added and existing samples will be updated to demonstrate how Release 16 ASN.1 based protocols can be used with the OSS ASN.1 Tools.



3GPP Protocol Based Products
Availability
3GPP LTE Release 15 Support
3GPP LTE Release 16 Support
3GPP 5G Release 15 Support
3GPP 5G Release 16 Support
NAS/C LTE
Now
1Q2020
N/A
N/A
NAS/C 5G
N/A
N/A
Now
2Q2020
NAS/C++ LTE
Now
1Q2020
N/A
N/A
NAS/C++ 5G
N/A
N/A
Now
2Q2020
NAS/Java LTE
Now
1Q2020
N/A
N/A
NAS/Java 5G
N/A
N/A
Now
3Q2020
NAS-1Step LTE
Now
1Q2020
N/A
N/A
NAS-1Step 5G
N/A
N/A
Now
2Q2020
NAS/C# LTE
N/A
3Q2020
N/A
N/A
NAS/C# 5G
N/A
N/A
N/A
3Q2020
S1/X2 ASN.1 API for C
Now
3Q2020
N/A
N/A
S1/X2 ASN.1 API for Java
1Q2020
3Q2020
N/A
N/A

N/A - Not Applicable