ASN.1 Tools for Java — Enhancements History
ASN.1 Tools for Java - version 8.6 (latest version)
- The ASN.1/Java Tools now includes ASN.1 Studio v10.4.0.
The ASN.1 Standards repository now includes ASN.1 specifications for 3GPP
Release 17, as follows:
- 5g_e1ap_r17 TS 37.483 V17.1.0 (2022-06)
- 5g_f1ap_r17 TS 38.473 V17.1.0 (2022-06)
- 5g_ngap_r17 TS 38.413 V17.1.1 (2022-06)
- 5g_rrc_r17 TS 38.331 V17.1.0 (2022-07)
- 5g_xnap_r17 TS 38.423 V17.1.0 (2022-06)
- lte_lcsap_r17 TS 29.171 V17.0.0 (2022-03)
- lte_lppa_r17 TS 36.455 V17.0.0 (2022-04)
- lte_m2ap_r17 TS 36.443 V17.0.1 (2022-04)
- lte_m3ap_r17 TS 36.444 V17.0.0 (2022-04)
- lte_rrc_cv2x_r17 TS 36.331 V17.1.0 (2022-07)
- lte_rrc_nb_iot_r17 TS 36.331 V17.1.0 (2022-07)
- lte_rrc_r17 TS 36.331 V17.1.0 (2022-07)
- lte_s1ap_nb_iot_r17 TS 36.413 V17.1.0 (2022-06)
- lte_s1ap_r17 TS 36.413 V17.1.0 (2022-06)
- lte_sbcap_r17 TS 29.168 V17.1.0 (2021-12)
- lte_slmap_r17 TS 36.459 V17.0.0 (2022-04)
- lte_x2ap_nb_iot_r17 TS 36.423 V17.1.0 (2022-06)
- lte_x2ap_r17 TS 36.423 V17.1.0 (2022-06)
- lte_xwap_r17 TS 36.463 V17.0.0 (2022-04)
- umts_rrc_r17 TS 25.331 V17.1.0 (2022-07)
- The ASN.1 Basic repository now includes samples for binary to CSV and JSON
ASN.1 Tools for Java - version 18.104.22.168
- The Runtime API documentation has been updated with a version generated by the
JDK 17 JavaDoc tool program.
ASN.1 Tools for Java - version 8.5.0
- The ASN.1/Java Tools now includes ASN.1 Studio v10.3.0.
- New ASN.1 Value Notation feature
- The new -avn command line option is added. This option
instructs the compiler to generate additional Java code that is required for the ASN.1
value notation (AVN) reader. The value notation reader is a runtime class that is used to
parse ASN.1 value notation into Java objects that represent those values. The
-avn option requires the osstoed.jar class library at runtime.
- The new com.oss.asn1.ValueNotationReader and AVNInput API classes
are added to the TOED runtime library (osstoed.jar). The ValueNotationReader class
can be used to create data objects from their ASN.1 value notation text
representations. To enable ASN.1 value notation parsing at
runtime, compile the ASN.1/Java project with the -avn command line option.
An instance of the AVN parser can then be obtained fron the project main class
using the getValueNotationReader() static method:
ValueNotationReader parser = Project.getValueNotationReader();
Reading a single value or value assignment from a string can be accomplished by invoking the
read-methods of the parser. The following methods return an instance of the AbstractData class:
value = parser.readValue(string, new TypeOfTheValue());
value = parser.readValueAssignment(string);
The latter method relies on the PDU type name that is specified in the input string.
To read multiple values or value assignments from a single input, which can be
an instance of the java.lang.String or Reader class, an instance
of the AVNInput class is created. For example
AVNInput input = new AVNInput(reader);
while (data = parser.readValue(input, new Type()) != null)
System.out.println("data " + data);
NOTE: The ASN.1 value notation parser is a chargeable feature in non-evaluation licenses. Contact Sales to obtain pricing information.
- The new "boolean isUnknownExtensionFound()" method has been added to the
com.oss.asn1.Coder class. The method returns true when an unknown extension
was found by the last invocation of the decode() method.
- The Binary2JSONConvertor (TOED|SOED) and JSON2BinaryConvertor (TOED|SOED)classes have
to avoid confusion with binary to text and text to binary conversions.
Previously, JSON to or from binary conversions required using the
Binary2XMLConvertor or XML2BinaryConvertor classes.
- The new com.oss.asn1.Binary2CSVConvertor API class has been added to the
SOED runtime library (oss.jar). This class enables you to convert binary
encodings to CSV in one step.
- The compiler will now recognize the new -2021 option. The existing
-2015 option is now an alias of the -2021 option. Also, the
ASN1.Version compiler directive will now accept '2021' as an argument.
ASN.1 Tools for Java - version 8.4.0
- The ASN.1/Java Tools now includes ASN.1 Studio v10.2.0.
- The ASN.1/Java Tools now supports the conversion of Java objects to CSV
- The new -csv compiler option is introduced. This option enables
access to the CSVTool utility that can convert Java objects to CSV format.
The new -csv option can be used only with the -soed compiler option, the
-csv option is ignored when used with -toed or -lean.
- The new CSVTool utility class is implemented. This class defines the API to
convert Java objects to CSV format, including the API that permits
customization of various CSV formatting options.
- New utility methods have been added to the com.oss.util.ByteTool class in
the SOED, lean and TOED runtimes:
public static String toTAP3BCD(byte tap3Bcd);
public static byte parseTAP3BCD(String tap3Bcd);
public static String toTBCD(byte tbcd);
public static byte parseTBCD(String tbcd);
These new methods enhance the ByteTool to support the TAP3 Binary-Coded
Decimal and Telephony Binary-Coded Decimal encodings.
- A new sample has been created for the IEEE 1609.2 specification. This sample
demonstrates how to construct, sign, and verify a signed Ieee1609Dot2Data
using the java.security API.
- A new sample has been created for release 16 of the UMTS RRC protocol:
- TS 38.331 (umts_rrc_r16) V16.1.0 (2020-07)
- Samples for releases 14, 15, and 16 of the LTE and 5G protocols have been updated
to use the most recent versions of ASN.1 schemas available:
- TS 38.463 (5g_e1ap_r15) V15.8.0 (2020-10)
- TS 38.463 (5g_e1ap_r16) V16.5.0 (2021-04)
- TS 38.473 (5g_f1ap_r15) V15.13.0 (2021-03)
- TS 38.473 (5g_f1ap_r16) V16.4.1 (2021-03)
- TS 38.413 (5g_ngap_r15) V15.11.0 (2021-04)
- TS 38.413 (5g_ngap_r16) V16.5.0 (2021-04)
- TS 38.331 (5g_rrc_r15) V15.13.0 (2021-03)
- TS 38.331 (5g_rrc_r16) V16.4.1 (2021-03)
- TS 38.423 (5g_xnap_r15) V15.11.0 (2021-04)
- TS 38.423 (5g_xnap_r16) V16.5.0 (2021-04)
- TS 29.171 (lte_lcsap_r15) V15.5.1 (2021-03)
- TS 29.171 (lte_lcsap_r16) V16.2.0 (2020-12)
- TS 36.455 (lte_lppa_r16) V16.1.0 (2021-04)
- TS 36.443 (lte_m2ap_r16) V16.1.0 (2020-10)
- TS 36.331 (lte_rrc_cv2x_r14) V14.16.0 (2021-01)
- TS 36.331 (lte_rrc_cv2x_r15) V15.16.0 (2021-03)
- TS 36.331 (lte_rrc_cv2x_r16) V16.4.0 (2021-03)
- TS 36.331 (lte_rrc_nb_iot_r14) V14.16.0 (2021-01)
- TS 36.331 (lte_rrc_nb_iot_r15) V15.16.0 (2021-03)
- TS 36.331 (lte_rrc_nb_iot_r16) V16.4.0 (2021-03)
- TS 36.331 (lte_rrc_r14) V14.16.0 (2021-01)
- TS 36.331 (lte_rrc_r15) V15.16.0 (2021-03)
- TS 36.331 (lte_rrc_r16) V16.4.0 (2021-03)
- TS 36.413 (lte_s1ap_nb_iot_r15) V15.10.0 (2020-10)
- TS 36.413 (lte_s1ap_nb_iot_r16) V16.5.0 (2021-04)
- TS 36.413 (lte_s1ap_r15) V15.10.0 (2020-10)
- TS 36.413 (lte_s1ap_r16) V16.5.0 (2021-04)
- TS 36.423 (lte_x2ap_nb_iot_r15) V15.11.0 (2020-10)
- TS 36.423 (lte_x2ap_nb_iot_r16) V16.5.0 (2021-04)
- TS 36.423 (lte_x2ap_r15) V15.11.0 (2020-10)
- TS 36.423 (lte_x2ap_r16) V16.5.0 (2021-04)
ASN.1 Tools for Java - version 22.214.171.124
ASN.1 Tools for Java - version 126.96.36.199
ASN.1 Tools for Java - version 8.3.1
ASN.1 Tools for Java - version 8.3.0
- The ASN.1/Java Tools now includes ASN.1 Studio v10.0.2.
- The Java compiler now accepts the [<selector>:]<prefix> syntax as an argument for the
where selector can be one of "package", "class" or "var". See the following examples:
- -prefix OSS will apply the "OSS" prefix to packages, classes, and public
member variables (equivalent to -prefix package:OSS -prefix class:OSS
- -prefix class:OSS will apply the "OSS" prefix to the names of classes
- -prefix OSS -prefix var:oss will apply the "OSS" prefix to classes and
packages and the "oss" prefix to public member variables.
- The new com.oss.util.BERTool class provides a Type-Length-Value (TLV)
Print Utility application and a set of nested utility classes for parsing
or printing BER/DER encoded data. The TLV Print Utility application is
similar to the previously available "osstlv" native executable.
To run the application use the following command:
java -jar <install dir>/bin/osstlv.jar
where <install dir> is the directory where the OSS ASN.1 Tools for Java
Refer to the online API documentation for further information on the BERTool
class and its nested classes (OSS TOED API, OSS SOED API).
- New samples have been created for release 16 of the LTE and 5G protocols:
- TS 38.331 (5g_rrc_r16) V16.1.0 (2020-07)
- TS 29.171 (lte_lcs_r16) V16.0.0 (2020-07)
- TS 36.455 (lte_lppa_r16) V16.0.0 (2020-07)
- TS 36.443 (lte_m2ap_r16) V16.0.0 (2020-03)
- TS 36.444 (lte_m3ap_r16) V16.0.0 (2020-07)
- TS 36.331 (lte_rrc_cv2x_r16) V16.1.1 (2020-07)
- TS 36.331 (lte_rrc_nb_iot_r16) V16.1.1 (2020-07)
- TS 36.331 (lte_rrc_r16) V16.1.1 (2020-07)
- TS 29.168 (lte_sbcap_r16) V16.0.0 (2020-07)
- TS 36.459 (lte_slmap_r16) V16.0.0 (2020-07)
- TS 36.463 (lte_xwap_r16) V16.0.0 (2020-07)
- Samples for releases 14, 15, and 16 of the LTE and 5G protocols have been updated
to use the most recent versions of ASN.1 schemas available:
- TS 38.463 (5g_e1ap_r15) V15.7.0 (2020-07)
- TS 38.463 (5g_e1ap_r16) V16.2.0 (2020-07)
- TS 38.473 (5g_f1ap_r15) V15.10.0 (2020-07)
- TS 38.473 (5g_f1ap_r16) V16.2.0 (2020-07)
- TS 38.413 (5g_ngap_r15) V15.8.0 (2020-07)
- TS 38.413 (5g_ngap_r16) V16.2.0 (2020-07)
- TS 38.331 (5g_rrc_r15) V15.9.0 (2020-03)
- TS 38.423 (5g_xnap_r15) V15.10.0 (2020-07)
- TS 38.423 (5g_xnap_r16) V16.2.0 (2020-07)
- TS 29.171 (lte_lcs_r15) V15.4.0 (2020-07)
- TS 36.331 (lte_rrc_cv2x_r14) V14.14.0 (2020-07)
- TS 36.331 (lte_rrc_cv2x_r15) V15.10.0 (2020-07)
- TS 36.331 (lte_rrc_nb_iot_r14) V14.14.0 (2020-07)
- TS 36.331 (lte_rrc_nb_iot_r15) V15.10.0 (2020-07)
- TS 36.331 (lte_rrc_r14) V14.14.0 (2020-07)
- TS 36.331 (lte_rrc_r15) V15.10.0 (2020-07)
- TS 36.413 (lte_s1ap_nb_iot_r15) V15.9.0 (2020-07)
- TS 36.413 (lte_s1ap_nb_iot_r16) V16.2.0 (2020-07)
- TS 36.413 (lte_s1ap_r15) V15.9.0 (2020-07)
- TS 36.413 (lte_s1ap_r16) V16.2.0 (2020-07)
- TS 36.423 (lte_x2ap_nb_iot_r15) V15.10.0 (2020-07)
- TS 36.423 (lte_x2ap_nb_iot_r16) V16.2.0 (2020-07)
- TS 36.423 (lte_x2ap_r15) V15.10.0 (2020-07)
- TS 36.423 (lte_x2ap_r16) V16.2.0 (2020-07)
- The cam_denm sample has been updated to use the most recent version of the ASN.1 schema:
- CAM - ETSI EN 302 637-2 V1.4.1 (2019-04)
- DENM - ETSI EN 302 637-3 V1.3.1 (2019-04)
- ITS-Container - ETSI TS 102 894-2 V1.3.1 (2018-08)
ASN.1 Tools for Java - version 8.2.0
- The ASN.1/Java Tools now includes ASN.1 Studio v9.0.3.
- The new OSS.NOENCODE and
compiler directives reduce the generated TOED code by excluding the encoding or decoding
routines for the directive's operand. Under certain conditions, the generated code can be
reduced even further using the new
- The new -compactNoDecode compiler option instructs the compiler to
generate a compact version of Time-Optimized Decoder code for fields
marked by the NODECODE directive.
- Improved UTF8String API
- The API for UTF8String is now streamlined and made uniform across all
available representations of this ASN.1 type. Also, support for
supplementary Unicode characters, such as emoji symbols, is enhanced in
all representations of UTF8String.
- The SOED and TOED compilers now generate an identical set of constructors
for all representations of the UTF8String ASN.1 type:
- The constructor that initializes an instance from UTF-8 bytes (byte).
- The constructors that initialize an instance from UTF-16 characters
- The constructor that initializes an instance from an array of
Unicode codepoints (int).
- The SOED and TOED runtimes now define an identical set of getter and
setter methods for all representations of the UTF8String ASN.1 type:
- The getter methods that present the value as UTF-8 bytes, UTF-16
characters, or as an array of 32-bit Unicode codepoints:
public byte byteArrayValue();
public char charArrayValue();
public String stringValue();
public int intArrayValue();
- The setter methods that initialize the value from UTF-8 bytes, UTF-16
characters, or from an array of 32-bit Unicode codepoints:
public void setValue(byte);
public void setValue(char);
public void setValue(String);
public void setValue(int);
- The getSize() method that returns the number of 32-bit Unicode
codepoints in a UTF8String:
public int getSize()
- The getChar() method that retrieves the i-th 32-bit Unicode codepoint from
a UTF8String value:
public int getChar(int i)
- The confusing behavior of the API with an --<UNBOUNDED>-- representation
of UTF8String is eliminated:
- The constructor and the setter methods no longer expect that the
String or char argument specifies UTF-8 bytes rather than UTF-16
characters. Use the constructor or the setter with the byte
argument to initialize the value from UTF-8 bytes.
- The stringValue() and the charArrayValue() methods now return UTF-16
characters rather than values of UTF-8 bytes. Use the
byteArrayValue() method to retrieve the bytes of a UTF-8 encoding.
- The getSize() method now returns the number of 32-bit Unicode
codepoints in the value rather than the number of octets in the UTF-8
encoding of the value. Use byteArrayValue().length to
retrieve the length of the UTF-8 encoding.
- The getChar() method now returns the i-th 32-bit Unicode codepoint rather
that the value of the i-th byte of the UTF-8 encoding. Use
byteArrayValue()[i] to retrieve the i-th byte of the UTF-8 encoding.
- The --<BMPSTRING>-- representation is enhanced to support values that
contain supplementary Unicode characters. Previously, when the value of a
--<BMPSTRING>-- representation included a surrogate pair that represented a
supplementary Unicode character, the encoding of such value was not supported.
- The JIA_ValueReader class of the JIAAPI add-on is enhanced to support
parsing of arbitrary values of open types. Previously, the JIA_ValueReader class
was able to parse only open types that carried values of primitive built-in
ASN.1 types, such as, INTEGER, BOOLEAN, OBJECT IDENTIFIER, etc.
- New samples for release 16 of LTE and 5G protocols have been created:
- TS 38.463 (5g_e1ap_r16) V16.0.0 (2020-01)
- TS 38.473 (5g_f1ap_r16) V16.0.0 (2020-01)
- TS 38.413 (5g_ngap_r16) V16.0.0 (2020-01)
- TS 38.423 (5g_xnap_r16)V16.0.0 (2020-01)
- TS 36.413 (lte_s1ap_nb_iot_r16) V16.0.0 (2020-01)
- TS 36.413 (lte_s1ap_r16) V16.0.0 (2020-01)
- TS 36.423 (lte_x2ap_nb_iot_r16) V16.0.0 (2020-01)
- TS 36.423 (lte_x2ap_r16) V16.0.0 (2020-01)
- Samples for releases 13, 14, and 15 of LTE and 5G protocols have been updated
to use the most recent versions of ASN.1 schemas available:
- TS 38.463 (5g_e1ap_r15) V15.5.0 (2019-10)
- TS 38.473 (5g_f1ap_r15) V15.7.0 (2019-10)
- TS 38.413 (5g_ngap_r15) V15.5.0 (2019-10)
- TS 38.331 (5g_rrc_r15) V15.7.0 (2019-09)
- TS 38.423 (5g_xnap_r15) V15.5.0 (2019-10)
- TS 29.171 (lte_lcs_r14) V14.3.0 (2019-09)
- TS 29.171 (lte_lcs_r15) V15.3.0 (2019-09)
- TS 36.455 (lte_lppa_r15) V15.2.1 (2019-01)
- TS 36.331 (lte_rrc_cv2x_r14) V14.12.0 (2019-09)
- TS 36.331 (lte_rrc_cv2x_r15) V15.7.0 (2019-09)
- TS 36.331 (lte_rrc_nb_iot_r13) V13.14.0 (2019-06)
- TS 36.331 (lte_rrc_nb_iot_r14) V14.12.0 (2019-09)
- TS 36.331 (lte_rrc_nb_iot_r15) V15.7.0 (2019-09)
- TS 36.331 (lte_rrc_r13) V13.14.0 (2019-06)
- TS 36.331 (lte_rrc_r14) V14.12.0 (2019-09)
- TS 36.331 (lte_rrc_r15) V15.7.0 (2019-09)
- TS 36.413 (lte_s1ap_nb_iot_r13) V13.8.0 (2018-09)
- TS 36.413 (lte_s1ap_nb_iot_r14) V14.9.0 (2019-07)
- TS 36.413 (lte_s1ap_nb_iot_r15) V15.7.1 (2019-10)
- TS 36.413 (lte_s1ap_r13) V13.8.0 (2018-09)
- TS 36.413 (lte_s1ap_r14) V14.9.0 (2019-07)
- TS 36.413 (lte_s1ap_r15) V15.7.1 (2019-10)
- TS 36.423 (lte_x2ap_nb_iot_r13) V13.8.0 (2019-10)
- TS 36.423 (lte_x2ap_nb_iot_r14) V14.8.0 (2019-10)
- TS 36.423 (lte_x2ap_nb_iot_r15) V15.7.0 (2019-10)
- TS 36.423 (lte_x2ap_r13) V13.8.0 (2019-10)
- TS 36.423 (lte_x2ap_r14) V14.8.0 (2019-10)
- TS 36.423 (lte_x2ap_r15) V15.7.0 (2019-10)
- TS 25.331 (umts_rrc_r15) V15.4.0 (2018-09)
ASN.1 Tools for Java - version 8.1.0
- Partial decoding for BER and DER:
The partial decoding feature is now available with BER, DER, PER, UPER, OER, and
Note that BER/DER support requires osstoed.jar version 8.1+.
- New samples have been created for
ASN.1 Tools for Java - version 8.0.0
- The ASN.1/Java Tools now includes ASN.1 Studio v9.0.0.
- The ASN.1 compiler has been changed to generate Java classes compatible with the TOED runtime
by default. Previously, when neither -toed nor
-soed was specified on the ASN.1/Java command-line, Java
classes compatible with the SOED runtime were generated.
- The -paramtypesuperclass
option is now supported with both the SOED and TOED. Before this change it was not available
with the TOED and was ignored when specified along with the -toed
- The ASN.1 compiler now supports X.680 Amendment 1,
which relaxes the IMPORTS clause to allow symbols to be imported from
the latest module version, as indicated by the object identifier. The
IMPORTS clause can now include
WITH SUCCESSORS and WITH DESCENDANTS as
- The ASN.1 compiler now supports the new
command line options. These options are available when the -toed option
is specified or implied by default. The options instruct the compiler to generate code that
makes the new
TOED runtime API method available to the user. In contrast to the
decode() method, the new method does not return the decoded PDU
value. Instead, it invokes a user-defined callback method when decoding each field that is marked
by the new
compiler directive and optionally passes the decoded field value to it. The
partial decode feature
enables the user to
The feature is available for the PER, UPER, CPER, CUPER, OER, and COER encoding rules.
- Extract data without writing code to access deeply nested fields of complex PDUs.
- Reduce the memory footprint of applications that contain minimal information in their
- The ASN.1 compiler and TOED runtime have been enhanced to support the
directive for the BER and DER encoding rules. For other encoding rules (PER, OER, XER, and
JSON), the compiler generates encoders and decoders that ignore the directive and encodes or
decodes the value in a single pass.
- A new encoder option has been implemented for the JSON encoder. This option selects
the alternate form of encoding for a BIT STRING or OCTET STRING with a contents constraint that
does not include an ENCODED BY clause. The option is configured with
the following JSONCoder methods:
public void encodeContainedValuesAsText();
public void encodeContainedValuesAsHex();
- The new -userConstraintPDUs | -noUserConstraintPDUs
command line options have been implemented. These options tell the compiler whether or not
(the default) to generate Java classes for type parameters of the
CONSTRAINED BY constraint when such types are defined inline.
- The ASN.1 compiler now supports a special type of absolute reference notation that applies
to the OSS compiler directives. The notation allows you to access ASN.1 types located within
WITH COMPONENTS and WITH COMPONENT(inner
subtype) clauses and consists of two dollar signs '$$' followed
by an index number that indicates a particular WITH COMPONENTS or
WITH COMPONENT clause.
The notation can be used to assign user-defined names within CONSTRAINED
BY clauses that are present within an inner subtype or a compiler-generated structure
(the ASN.1 compiler creates compiler-generated structures when a contents constraint is
applied within an inner subtype). The rules that apply to the new notation are similar to the
ones that apply to the absolute reference notation for the CONSTRAINED
- A new encoder option that permits customization of the JSON encoder output has been implemented. The option is enabled via the new enableJSONCoderInterface() method of the JSONCoder class. To customize the JSON encoder output, the user must subclass the generated Java class using the OSS.UserClass compiler directive and implement the JSONCoderInterface in the subclass. Then, after enableJSONCoderInterface() is called, the JSON encoder will invoke the JSONCoderInterface that is implemented by the subclass to obtain customized JSON tokens that represent the value being encoded. This encoder option is currently supported only by the SOED runtime.
- New samples have been created for the following:
- The DIN EN 15722
Intelligent transport systems - ESafety - ECall minimum set of data standard. The
sample demonstrates how an ECallMessage message can be created and serialized to UPER bits using
the API of generated Java classes.
- The eUICC Profile
Package standard. The sample demonstrates how a eUICC Profile Package can be constructed
and saved to the disk file using the API of generated Java classes.
- The GSMA Remote SIM Provisioning
standard. The sample demonstrates the invocation of the
GetBoundProfilePackage function of the ES9+ interface at the SM-DP+
using the API of generated Java classes.
- Release 15 of the UMTS
RRC protocol: TS 25.331 (UMTS RRC) 15.3.0 (2018-06).
- The Bilateral
Transfer protocol (BTP): ILP-RFC 0023 Draft 4. The sample demonstrates communication between
BTP peers that involves the Prepare,
Fulfill, and Reject requests.
- New samples for 5G
protocols for 3GPP Release 15 have been created. The samples for the LTE S1AP,
protocols have been updated to 3GPP Release 15.
- New samples in the advanced category have been created to explain the use of the partial
s1ap_pd (uses 3GPP S1AP
ASN.1 Tools for Java - version 7.2.0
- The ASN.1/Java Tools now includes ASN.1 Studio v8.3.0.
- The OSS ASN.1 Tools has been enhanced to support the Canonical Packed Encoding Rules (ALIGNED and UNALIGNED),
as specified by ITU-T Recommendation X.691 (08/2015) | ISO/IEC 8825-2:2015.
- Both the compiler and runtime have been enhanced to support the Java Platform Module
System (JPMS), which was introduced in Java 9. The compiler now supports the
'-javamodule <name>' option that packages the generated
classes into a Java module with the specified <name>.
The software distribution now includes an extra set of runtime
libraries that are packaged as Java 9 modules. These new libraries are available in the
mlib/ directory of the ASN.1/Java installation and can be used only with JDK 9.
- The ASN.1 compiler now supports the UPPERCAMELCASED and
LOWERCAMELCASED keywords in
the NAME and TEXT JER encoding instructions. You can now describe a wider range of JSON
data in an ASN.1 schema.
- The public API of the JIAAPI value parser will now parse concatenated values and
value assignments from an arbitrary java.io.Reader object. A relaxed parsing mode has been
implemented: now non-critical deviations from the expected syntax are ignored.
- A new sample that demonstrates processing of 3GPP CDR files (TS 32.297) has been
created. 3GPP CDR files contain a non-ASN.1 file header and non-ASN.1 record headers,
while record bodies are encoded by one of the ASN.1 encoding rules (BER, PER unaligned,
PER aligned, or XER). The sample shows how one can skip over non-ASN.1 content, feed
ASN.1 data to the ASN.1/Java API, and convert CDR records to Java objects.
- New samples have been created for release 14 of the LTE protocols and existing samples
for release 12 and 13 have been updated to the most recent versions of the available ASN.1
- TS 29.171 (LCSAP) V13.3.0 (2017-06)
- TS 29.171 (LCSAP) V14.1.0 (2017-06)
- TS 36.455 (LPPA) V14.3.0 (2017-09)
- TS 36.443 (M2AP) V13.3.0 (2016-03)
- TS 36.443 (M2AP) V14.0.1 (2017-09)
- TS 36.444 (M3AP) V13.2.0 (2016-03)
- TS 36.444 (M3AP) V14.1.0 (2017-06)
- TS 36.331 (RRC CV2X) V14.4.0 (2017-09)
- TS 36.331 (RRC NB IOT) V13.7.1 (2017-09)
- TS 36.331 (RRC NB IOT) V14.4.0 (2017-09)
- TS 36.331 (RRC) V12.15.1 (2017-09)
- TS 36.331 (RRC) V13.7.1 (2017-09)
- TS 36.331 (RRC) V14.4.0 (2017-09)
- TS 36.413 (S1AP NB IOT) V13.6.0 (2017-06)
- TS 36.413 (S1AP NB IOT) V14.4.0 (2017-10)
- TS 36.413 (S1AP) V12.7.0 (2016-03)
- TS 36.413 (S1AP) V13.6.0 (2017-06)
- TS 36.413 (S1AP) V14.4.0 (2017-10)
- TS 29.169 (SBCAP) V12.10.0 (2017-09)
- TS 29.169 (SBCAP) V13.3.0 (2017-09)
- TS 29.169 (SBCAP) V14.1.0 (2017-09)
- TS 36.423 (X2AP NB IOT) V13.7.0 (2017-06)
- TS 36.423 (X2AP NB IOT) V14.4.0 (2017-09)
- TS 36.423 (X2AP) V12.9.0 (2016-07)
- TS 36.423 (X2AP) V13.7.0 (2017-06)
- TS 36.423 (X2AP) V14.4.0 (2017-09)
- TS 36.463 (XWAP) V14.2.0 (2017-06)
- A new sample for release 14 of the UMTS RRC protocol has been created:
- TS 25.331 (UMTS RRC) 14.4.0 (2017-09)
ASN.1 Tools for Java - version 7.1.0
- The ASN.1/Java Tools now includes ASN.1 Studio v8.2.0.
- Conformance to Draft ITU-T Recommendation X.jsoner:
- The ASN.1/Java compiler and the SOED, TOED, and LED runtime libraries support the
JSON Encoding Rules. The existing
command-line option instructs the compiler to enable support for X.jsoner at runtime.
- The JSON codec supports the following encoding instructions:
- The following new samples for LTE protocols have been added:
ASN.1 Tools for Java - version 7.0.0
- The ASN.1/Java Tools now includes ASN.1 Studio v8.1.0.
- Support for the JSON encoding rules has been added to the SOED runtime.
Current limitations of the JSON SOED encoder/decoder:
- The deferred decoding feature is not supported.
- The ValueInFile feature is supported only for SET OF and SEQUENCE OF ASN.1 types.
- The -helperAPI <param> and -noHelperAPI <param>
command-line options have been added to the ASN.1 Tools for Java. These options tell the
compiler to generate optional helper APIs, or not. A parameter is required that can be
a single keyword or a comma-separated list of keywords. The keyword(s)
specify the type(s) of helper API; currently, only opentype and pdudecoder are valid.
- The -helperAPI opentype command-line option affects the representation of
open type fields that are constrained by a component relation constraint.
- The -helperAPI pdudecoder/-noHelperAPI pdudecoder command-line options tell the compiler
whether to generate optional PDU and PDU_ID classes that will be used to
auto-detect and decode PDUs of unknown types from bits on the wire.
- The -sampleCode command line option can be specified with both the default -soed and the
-toed options. Before the change the -sampleCode option was ignored when specified along with the
- Validation of the following constraints has been implemented in TOED:
- Element set specification (x.680 clause 50) - EXCEPT and ALL EXCEPT
- Subtype elements (x.680 clause 51)
- Permitted alphabet
- Type constraint
- Pattern constraint
- Property settings
- Duration range
- Time point range
- Recurrence range
- Other constraints
- Table constraint
- Component relation constraint
- Contents constraint
- The ASN.1/Java SOED/TOED PER encoder-decoder implementation now conforms to the recent X.691 corrigendum (2015): an encoding contained in a BIT STRING should be at least one octet for PER ALIGNED and 1 bit for PER UNALIGNED.
- New samples:
- A sample for the 2016-03 version of the J2735 protocol has been created. The sample does not include the J2735:2016 ASN.1 specification due to licensing reasons. Users should obtain it directly from the ITS SAE site.
- A sample for the 3GPP XwAP (TS 36.463) protocol has been created.
ASN.1 Tools for Java - version 6.3.1
ASN.1 Tools for Java - version 6.3.0
- The ASN.1/Java Tools now includes ASN.1 Studio v7.5.1. (Windows Only)
- The ASN.1/Java Time Optimize Encoder/Decoder (TOED) now supports checking the following constraints:
When the -constraint option is specified and PDUs are present, the compiler generates the validate() method, which enables runtime constraint checking for PDUs.
- Element set specification (x.680 clause 50): UNION and INTERSECTION.
- Subtype elements (x.680 clause 51):
- InnerTypeConstraints (WITH COMPONENTS).
- The Java classes for INTEGER types with named numbers now include constants for each of the named numbers. This feature allows the named numbers to be used in Java switch statements.
- The coder class provides the methods enableCompact() and disableCompact() to enable and disable the generation of whitespace by the XER, E-XER and JSON encoders. The enableCompact() method disables whitespace generation and the encoding is written as a single line of text with no whitespace. The disableCompact() method adds newlines and indentation to improve readability.
- The Coder class provides methods (available only for TOED) to set the indentation width in the encodings generated by the XER and JSON encoders.
ASN.1 Tools for Java - version 6.2.0
- The ASN.1/Java Tools now includes ASN.1 Studio v7.4.
- The ASN.1/Java compiler and the osstoed.jar TOED runtime library now support the JSON Encoding Rules.
- The formatted string that is returned by the toString() method of the AbstractData can now be customized.
- The Octet Encoding Rules (OER) and the Canonical Encoding Rules (COER) are now available with the -soed compiler option and the oss.jar SOED runtime library.
- The ASN.1/Java TOED compiler now supports the -limitMethodSize <number> compiler option that enables you to split the generated methods that exceed the 64K size limit into smaller parts. The "number" parameter specifies the number of lines of generated source code.
- The TOED BER/DER/OER/PER/XER Encoding Rules now support automatic encoding and decoding of values contained in a BIT STRING or OCTET STRING that is encoded by different encoding rules.
- New methods have been added to the com.oss.asn1.Coder TOED runtime class to enable or disable the Coder options that affect the JSON/ER encoding of SET or SEQUENCE components that are defined using the OPTIONAL or the DEFAULT keyword. By default, optional components that are not present in a SET or a SEQUENCE value are not encoded by the JSON Coder. Alternatively, JSON/ER allows the encoder to identify omitted optional components by using the "null" token, unless the type of the component is NULL or is an open type.
ASN.1 Tools for Java - version 6.1.0
- The ASN.1/Java Tools now includes ASN.1 Studio v7.1
- The ASN.1/Java compiler and the ASN.1/Java TOED runtime library now support Octet Encoding Rules (OER) and Canonical Octet Encoding Rules (COER) as defined in "Rec. ITU-T X.696 | ISO/IEC 8825-7", rather than only the subset of ASN.1 types as defined in the "NTCIP 1102:2004 Octet Encoding Rules (OER) Base Protocol" document.
The Octet Encoding Rules (OER), like the Packed Encoding Rules (PER), produce compact encodings by taking advantage of information present in the ASN.1 schema to limit the amount of information included in each encoded message. However, in contrast to PER, OER favors encoding/decoding speed over compactness of the encodings.
- Distinguished Encoding Rules (DER), XML Encoding Rules (XER) and Canonical XML Encoding Rules (CXER) are now supported in Java TOED.
- The ASN.1/Java compiler has been changed to generate the type-safe getXXX() method for each alternative of the CHOICE type.
- The ASN.1/Java SOED and TOED runtimes now define the name() method of the Enumerated class to easily easily determine the symbolic name of the enumerator.
- Samples have been added that illustrate use of the SBc-AP, M2AP, and M3AP LTE protocols based on 3GPP Release 11.
- A sample has been added that illustrates use of the DSRC Message Set Standard, SAE J2735_200911.
Note: OSS ASN.1 Tools for Java version 6.0.0 implement an older verison of OER, specified by NTCIP 1102:2004. If you are using OER we strongly recommend that you upgrade to 6.1.0 or later.
ASN.1 Tools for Java - version 6.0.0
- The ASN.1/Java Tools now includes ASN.1 Studio v7.0
- A new runtime library, the OSS ASN.1/Java Time-Optimized Encoder/Decoder (TOED), was implemented. As the name suggests, TOED is optimized for faster encoding and decoding. The new ASN.1/Java TOED runtime (osstoed.jar) uses encoders/decoders generated by the compiler, dramatically speeding up the encoding/decoding process compared to the interpretive ASN.1/Java runtime (oss.jar) - from now on referred to as the ASN.1/Java Space-Optimized Encoder/Decoder (SOED).
- See the Reference Manual for a complete list of differences between the ASN.1/Java SOED and TOED runtime packages
- With the exceptions noted in the manual, ASN.1/Java SOED and TOED have the same API. In most cases you can change from using one to using the other with no impact on your application code.
- Support for the Octet Encoding Rules (OER), as specified by the NTCIP 1102:2004 Octet Encoding Rules (OER) Base Protocol document, was introduced in the ASN.1/Java compiler, the TOED runtime library and ASN.1 Studio. OER messages can generally be encoded/decoded significantly faster than BER and PER messages, while being only slightly less compact than PER messages. Support for OER in ASN.1/Java SOED and ASN.1/Java LED will be provided in the next release.
- The set of samples provided now includes samples illustrating the use of protocols based on the SAE J2735 Intelligent Transportation standard, as well as the 3GPP Release 10 RRC, S1AP, and X2AP LTE protocols.
ASN.1 Tools for Java - version 5.1.0
- The ASN.1/Java Tools now includes ASN.1 Studio, a powerful new IDE packed with functionality that allows you to compile ASN.1 specs, display, create, modify or encode messages with just a few mouse clicks, and so much more!
- You can generate code demonstrating how to perform encoding/decoding operation for any type in your ASN.1 specification.
- Support for new built-in ASN.1 OID-IRI and RELATIVE-OID-IRI types from the ASN.1:2008 standards has been added.
- On Windows, the ASN.1/Java tools now install under the Program Files\OSS Nokalva\asn1pjav\ folder (whereas before the 5.0 release, they were installed under Program Files\OSS\asn1pjav\).
- Samples for the Windows platforms are now installed under the folder pointed to by the environment variable %ALLUSERSPROFILE%. By default, on Windows 7 and VISTA, the samples are installed under the C:\ProgramData\OSS Nokalva\asn1pjav\win32\<version-number>\samples folder, and on Windows XP, the samples are installed under the C:\Documents and Settings\All Users\Application Data\OSS Nokalva\asn1pjav\win32\<version-number>\samples folder.
ASN.1 Tools for Java - version 4.1.0
- The OSS ASN.1 Tools for Java now support the PATTERN constraint notation. This notation allows you to restrict a character string type to be of a preset sequence of acceptable character patterns. This constraint notation has the general format:
<TypeName> ::= <RestrictedCharType> (PATTERN <RegularExpression>)
NoZeros ::= NumericString (PATTERN noZero)
noZero UniversalString ::= "[^0]"
ASN.1 Tools for Java - version 4.0.0
- The OSS ASN.1 Tools for Java now support the full range of time types as specified in ISO 8601 (TIME, DATE, TIME-OF-DAY, DATE-TIME, DURATION). These representations of date and time were standardized to avoid misinterpretations when communicating across national boundaries.
- The ASN.1/Java compiler has been changed to automatically select the -ignoreIncompleteItems option if the -relaxedMode option is specified.
- The ASN.1/Java runtime introduces the new ossvalidator.jar class library to support runtime constraint checking for use with the J2ME CLDC 1.1 platform. The previous J2ME CLDC 1.1 compatible runtime library, ossmicro.jar, did not include support for runtime constraint checking. With the ossvalidator.jar library, you can now perform runtime constraint checking for ASN.1 JAVA applications developed for resource-constrained environments.
- The ASN.1/Java runtime provides a new method, decodeWithPositions(), that allows you to save the size/offset information of an encoded PDU component when decoding. The size/offset information is useful in determining the position of any field in the encoded data.
ASN.1 Tools for Java - version 3.1.0
- OSS ASN.1 Tools for Java version 3.1 supports the J2ME CLDC 1.1 platform. Specifically, a new command line option -microedition, and new runtime library ossmicro.jar, are available to generate Java classes which are compatible with J2ME CLDC 1.1. Now you can develop ASN.1 applications in Java for resource-constrained environments.
- A new compiler option, -ignoreIncompleteItems, instructs the compiler to ignore incomplete ASN.1 definitions that appear within ASN.1 modules and directly or indirectly reference undefined types or values. This allows you to successfully utilize specs that have unresolved references that don't affect your application.
- Two new performance tuning parameters are available for optimization of the PER decoder when decoding ASN.1 types OCTET STRING, BIT STRING and open type. These parameters, settable via the Java system properties, affect the internal buffering strategies used when decoding large byte arrays. Now you can control the size of the initial buffer for the decoder output, as well as the size of additional buffer allocations, when decoding fragmented byte array content.
- The new utility class com.oss.util.Benchmark has been introduced to simplify encoder/decoder performance timing. See the runtime API documentation for more information about the Benchmark class.
ASN.1 Tools for Java - version 3.0.0
- The OSS ASN.1 Tools for Java version 3.0 includes support for Extended XML Encoding Rules (E-XER), allowing you to enjoy the best of both ASN.1 and XML.
- A powerful new XER encoding feature allows the user application to generate customized XER encodings. User-defined XER encodings will be placed in the output stream instead of the standard encodings that would have been generated by default methods of the XER coder class.
- The ASN.1/Java Tools have been performance-optimized. The BER decoder's performance has been improved to now run up to 2.5 times or 150% faster.
ASN.1 Tools for Java - version 2.2.0
- The OSS ASN.1 Tools for Java version 2.2 includes support for special REAL values -0 and NOT-A-NUMBER, as well as changes to the ASN.1/Java compiler to XML value notation to allow plain textual identifiers for some values.
ASN.1 Tools for Java - version 2.1.0
- When a decoding fails in the midst of decoding a message, a partial value can now be caught and examined.
- Both the XER and CXER encoders were optimized to run up to 100% faster than in the previous version.
- An additional package in the runtime is now available. It is called com.oss.metadata and provides access to the tags, Java class names, ASN.1 names, flags (such as extensibility), and constraints.
ASN.1 Tools for Java - version 2.0.0
The OSS ASN.1 Tools for Java version 2.0 supports the XML additions to ASN.1 described in the ASN.1:2002 standards documents.
- The ASN.1 compiler supports the XML value notation that provides a means of representing ASN.1 values using eXtensible Markup Language (XML) with the ASN.1 type definition as the schema. The XML value notation may be present within the same input ASN.1 file as other ASN.1 components.
- The encoder/decoder has been enhanced to allow you to encode/decode any PDU in the input using the XML encoding rules (XER) or the Canonical XML encoding rules (CXER). You can now add visibility to your ASN.1-described messages via XML.
- New compiler command-line options are now available, -xer and -cxer. These options are similar to the -ber/-der/-per/uper options in that they allow the associated set of encoding rules (namely, the XML encoding rules (XER) and the canonical XML encoding rules (CXER)) to be available to the encoder/decoder during runtime.
- A new ASN.1 compiler command-line option called "-xsl" has been added to allow you to automatically generate multiple default stylesheets, one for each PDU. Stylesheets allow you to have greater control over the visual aesthetic quality of an XML encoding.
- A new compiler directive OSS.Stylesheet has been introduced to allow you greater control over the default stylesheets which are produced by the ASN.1 compiler. Using this directive, you can instruct the ASN.1 compiler to generate a separate stylesheet with your own desired filename for any particular PDU.
- The ASN.1 compiler can now automatically generate XML DTD's (Data Type Definitions). Your application via the runtime XERDocument class can produce XML output. That output can be viewed and edited by any XML tool.
ASN.1 Tools for Java - version 1.5
- XML support in the compiler
- JIA API included
- A GUI interface for the OSS ASN.1/Java compiler
- Contents Constraint support
- The Lean Encoder/Decoder runtime included
- New hashCode() method
ASN.1 Tools for Java - version 1.5
- New Feature: ValueInFile (for OSS C users this is NOCOPY or OBJHANDLE) provides support for processing values or components of values that are a huge size. In particular, the runtime no longer assumes that the value is stored in RAM but allows the value to reside in any external storage such as a disk file. The value can also be written to or read from a TCP/IP socket.
- This release uses JDK 1.2.2. We found that switching to this version improved performance. We encourage our customers to use JDK 1.2.2 or higher as well. If you use the ValueInFile feature, using JDK 1.2.2 or higher is a requirement.