ASN.1 Tools for Java — Enhancements History

ASN.1 Tools for Java - version 8.7 (latest version)


ASN.1 Tools for Java - version 8.6

  • 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 formats.

ASN.1 Tools for Java - version 8.5.0.1

  • 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());
        or
      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
      AbstractData data;
      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 been introduced 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 format.
    • 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 8.3.1.3


ASN.1 Tools for Java - version 8.3.1.2


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 -prefix option, 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 var:OSS).
    • -prefix class:OSS will apply the "OSS" prefix to the names of classes only.
    • -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 is installed. 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 OSS.NODECODE 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 -compactNoDecode compiler option.
  • 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 (String, char[]).
      • 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


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 option.
  • 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 SelectionOption.
  • The ASN.1 compiler now supports the new -enablePartialDecode and -partialDecodeOnly 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 coder.decodePartial() 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 OSS.DataCallback (or OSS.InfoCallback) compiler directive and optionally passes the decoded field value to it. The partial decode feature enables the user to
    • 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 PDUs.
    The feature is available for the PER, UPER, CPER, CUPER, OER, and COER encoding rules.
  • The ASN.1 compiler and TOED runtime have been enhanced to support the DeferDecoding 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 BY syntax.
  • 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 NGAP, XnAP, E1AP, and F1AP protocols for 3GPP Release 15 have been created. The samples for the LTE S1AP, X2AP, M2AP, M3AP, RRC, LCSAP, LPPa, SBcAP, and XwAP protocols have been updated to 3GPP Release 15.
  • New samples in the advanced category have been created to explain the use of the partial decode feature:
         partial
         s1ap_pd (uses 3GPP S1AP V15.3.0 specification)

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 schemas:
    • 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


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 -toed option.
  • Validation of the following constraints has been implemented in TOED:
    1. Element set specification (x.680 clause 50) - EXCEPT and ALL EXCEPT
    2. Subtype elements (x.680 clause 51)
      • Permitted alphabet
      • Type constraint
      • Pattern constraint
      • Property settings
      • Duration range
      • Time point range
      • Recurrence range
    3. 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:
    • Element set specification (x.680 clause 50): UNION and INTERSECTION.
    • Subtype elements (x.680 clause 51):
      • SingleValue
      • ContainedSubtype
      • ValueRange
      • SizeConstraint
      • InnerTypeConstraints (WITH COMPONENTS).
    When the -constraint option is specified and PDUs are present, the compiler generates the validate() method, which enables runtime constraint checking for PDUs.
  • 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).
    Notes:
    • 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>)

    For example:

    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.