适用于 Java 的 ASN.1 工具 — 改进历史记录

ASN.1 Tools for Java - version 8.3.1.3 (最新版本)

  • ASN.1/Java 工具现在包括 ASN.1 Studio v10.1.2。

ASN.1 Tools for Java - version 8.3.1.2

  • ASN.1/Java 工具现在包括 ASN.1 Studio v10.1.1。

ASN.1 Tools for Java - version 8.3.1

  • ASN.1/Java 工具现在包括 ASN.1 Studio v10.1。

ASN.1 Tools for Java - version 8.3.0

  • ASN.1/Java 工具现在包括 ASN.1 Studio v10.0.2。
  • Java 编译器现在接受 [<selector>:]<prefix> 语法作为参数 -prefix 选项, 其中 selector 可以是“package”、“class”或“var”之一。 请参阅以下示例:
    • -prefix OSS 将“OSS”前缀应用于包、类和公共成员变量(相当于 -prefix package:OSS -prefix class:OSS -prefix var:OSS).
    • -prefix class:OSS 只会将“OSS”前缀应用于类的名称。
    • -prefix OSS -prefix var:oss 将“OSS”前缀应用于类和包,将“oss”前缀应用于公共成员变量。
  • 新的 com.oss.util.BERTool 类提供了一个 Type-Length-Value (TLV) 打印实用程序应用程序和一组用于解析的嵌套实用程序类 或打印 BER/DER 编码数据。 TLV 打印实用程序应用程序是 类似于以前可用的“osstlv”本机可执行文件。 要运行应用程序,请使用以下命令:
         java -jar <install dir>/bin/osstlv.jar
    其中 <install dir> 是 OSS ASN.1 Tools for Java 的安装目录。 有关 BERTool 类及其嵌套类(OSS TOED API、OSS SOED API)的更多信息,请参阅在线 API 文档。
  • 已为第 16 版 LTE 和 5G 协议创建了新示例:
    • 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)
  • LTE 和 5G 协议的第 14、15 和 16 版的示例已更新为使用可用的最新版本的 ASN.1 模式:
    • 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)
  • cam_denm 示例已更新为使用最新版本的 ASN.1 架构:
    • 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

  • ASN.1/Java 工具现在包括 ASN.1 Studio v9.0.3。
  • 新的 OSS.NOENCODEOSS.NODECODE 编译器指令通过排除编码或解码来减少生成的 TOED 代码 指令操作数的例程。 在一定条件下,生成的代码可以 使用新的 -compactNoDecode 编译器选项进一步减少。
  • 新的 -compactNoDecode 编译器选项指示编译器为 NODECODE 标记的字段生成压缩版本的时间优化解码器代码 指示。
  • Improved UTF8String API
    • UTF8String 的 API 现在已简化并在此 ASN.1 类型的所有可用表示中统一。 此外,UTF8String 的所有表示形式都增强了对补充 Unicode 字符(如表情符号)的支持。
    • COED 和 TIED 编译器现在为 UTF8String ASN1 类型的所有表示生成一组相同的构造函数:
      • 从 UTF-8 字节 (byte[]) 初始化实例的构造函数。
      • 从 UTF-16 字符初始化实例的构造函数 (字符串,char[])。
      • 从数组中初始化实例的构造函数 Unicode 代码点 (int[])。
    • SOED 和 TOED 运行时现在为 UTF8String ASN.1 类型的所有表示定义了一组相同的 getter 和 setter 方法:
      • 将值显示为 UTF-8 字节、UTF-16 字符或 32 位 Unicode 代码点数组的 getter 方法:
        public byte[] byteArrayValue();
        public char[] charArrayValue();
        public String stringValue();
        public int[] intArrayValue();
      • 从 UTF-8 字节、UTF-16 字符或 32 位 Unicode 代码点数组初始化值的 setter 方法:
        public void setValue(byte[]);
        public void setValue(char[]);
        public void setValue(String);
        public void setValue(int[]);
      • getSize() 方法返回 UTF8String 中 32 位 Unicode 代码点的数量:
        public int getSize()
      • The getChar() 从 UTF8String 值检索第 i 个 32 位 Unicode 代码点的方法:
        public int getChar(int i)
    • 使用 UTF8String 的 --<UNBOUNDED>-- 表示的 API 的令人困惑的行为已消除:
      • 构造函数和 setter 方法不再期望 Stringchar[] 参数指定 UTF-8 字节而不是 UTF-16 字符。 使用带有 byte[] 参数的构造函数或设置器从 UTF-8 字节初始化值。
      • stringValue()charArrayValue() 方法现在返回 UTF-16 字符而不是 UTF-8 字节的值。 使用 byteArrayValue() 方法检索 UTF-8 编码的字节。
      • getSize() 方法现在返回值中 32 位 Unicode 代码点的数量,而不是值的 UTF-8 编码中的八位字节数。 使用 byteArrayValue().length 检索 UTF-8 编码的长度。
      • getChar() 方法现在返回第 i 个 32 位 Unicode 代码点,而不是 UTF-8 编码的第 i 个字节的值。 使用 byteArrayValue()[i] 检索 UTF-8 编码的第 i 个字节。
    • --<BMPSTRING>-- 表示已增强以支持包含补充 Unicode 字符的值。 以前,当 --<BMPSTRING>-- 表示形式的值包含表示补充 Unicode 字符的代理项对时,不支持对此类值进行编码。
  • JIAAPI 插件的 JIA_ValueReader 类得到了增强,以支持解析开放类型的任意值。 以前,JIA_ValueReader 类只能解析带有原始内置 ASN.1 类型值的开放类型,例如 INTEGER、BOOLEAN、OBJECT IDENTIFIER 等。
  • 已创建 LTE 和 5G 协议第 16 版的新示例:
    • 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)
  • LTE 和 5G 协议的版本 13、14 和 15 的示例已更新为使用可用的最新版本的 ASN.1 模式:
    • 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

  • BER 和 DER 的部分解码:
    • -enablePartialDecode-partialDecodeOnly 编译器选项已扩展为支持 BER
      和 DER。
    • coder.decodePartial() TOED 运行时 (osstoed.jar) API 方法现在可以是 与 BERCoderDERCoder 一起使用。
    部分解码功能现在可用于 BER、DER、PER、UPER、OER 和 COER。
    请注意,BER/DER 支持需要 osstoed.jar 8.1以上版本。
  • 已创建新样本
    • TS 36.459 (LTE SLmAP) V15.0.0 (2018-01) LTE 协议的第 15 版。
    • TS 38.331 (5G RRC) V15.4.0 (2018-12) 5G 协议的第 15 版。

ASN.1 Tools for Java - version 8.0.0

  • ASN.1/Java 工具现在包括 ASN.1 Studio v9.0.0。
  • 默认情况下,ASN.1编译器被更改为生成与脚趾运行时兼容的Java类。以前,当在ASN.1/Java命令行中既没有指定- toes 也没有指定 soed时,会生成与soed运行时兼容的Java类。
  • -paramtypesuperclass 选项现在支持 SOED 和 TOED。 在此更改之前,它在 TOED 中不可用,并且在与 -toed 选项一起指定时被忽略。
  • ASN.1 编译器现在支持 X.680 修正案 1,它放宽了 IMPORTS 子句以允许从最新模块版本导入符号,如对象标识符所示。 IMPORTS 子句现在可以包含 WITH SUCCESSORSWITH DESCENDANTS 作为 < span class="code">SelectionOption。
  • ASN.1 编译器现在支持新的 -enablePartialDecode-partialDecodeOnly 命令行选项。 当默认指定或隐含 -toed 选项时,这些选项可用。 这些选项指示编译器生成代码,使新的 coder.decodePartial() TOED 运行时 API 方法可供用户使用。 与 decode() 方法相比,新方法不返回解码后的 PDU 值。 相反,它在解码由新的OSS.DataCallback(或OSS.InfoCallback标记的每个字段时调用用户定义的回调方法 span>) 编译器指令,并可选择将解码的字段值传递给它。 部分解码功能使用户能够
    • 无需编写代码即可提取数据以访问复杂 PDU 的深层嵌套字段。
    • 减少在其 PDU 中包含最少信息的应用程序的内存占用。
    该功能适用于 PER、UPER、CPER、CUPER、OER 和 COER 编码规则。
  • ASN.1 编译器和 TOED 运行时已得到增强,以支持 BER 和 DER 编码规则的 DeferDecoding 指令。 对于其他编码规则(PER、OER、XER 和 JSON),编译器生成忽略该指令的编码器和解码器,并在一次传递中对值进行编码或解码。
  • 已为 JSON 编码器实现了一个新的编码器选项。 此选项为具有不包含 ENCODED BY 子句的内容约束的 BIT STRING 或 OCTET STRING 选择替代编码形式。 该选项配置有以下 JSONCoder 方法:
         public void encodeContainedValuesAsText();
         public void encodeContainedValuesAsHex();
  • 新的 -userConstraintPDUs | -noUserConstraintPDUs 命令行选项已经实现。 这些选项告诉编译器是否(默认)为 CONSTRAINED BY 约束的类型参数生成 Java 类,当此类类型是内联定义时。
  • ASN.1 编译器现在支持适用于 OSS 编译器指令的特殊类型的绝对引用表示法。 该表示法允许您访问位于 WITH COMPONENTSWITH COMPONENT(inner subtype) 子句中的 ASN.1 类型,由两个 美元符号 '$$' 后跟一个指示特定 WITH COMPONENTS 的索引号 WITH COMPONENT 子句。
    该符号可用于在 CONSTRAINED BY 子句中分配用户定义的名称,这些名称存在于内部子类型或编译器生成的结构中(ASN.1 编译器创建编译器生成的 在内部子类型中应用内容约束时的结构)。 适用于新符号的规则类似于适用于 CONSTRAINED BY 语法的绝对引用符号的规则。
  • 已实现允许自定义 JSON 编码器输出的新编码器选项。 该选项通过 JSONCoder 类的新 enableJSONCoderInterface() 方法启用。 要自定义 JSON 编码器输出,用户必须使用 OSS.UserClass 编译器指令对生成的 Java 类进行子类化并实现 JSONCoderInterface 在子类中。 然后,调用enableJSONCoderInterface()后,JSON编码器会调用子类实现的JSONCoderInterface,获取自定义的JSON 表示正在编码的值的标记。 此编码器选项当前仅受 SOED 运行时支持。
  • 已为以下内容创建了新示例:
    • The DIN EN 15722 智能交通系统 - ESafety - ECall 最小数据集标准。 该示例演示了如何使用生成的 Java 类的 API 创建 ECallMessage 消息并将其序列化为 UPER 位。
    • eUICC 配置文件包标准。 该示例演示了如何使用生成的 Java 类的 API 构建 eUICC 配置文件包并将其保存到磁盘文件中。
    • GSMA 远程 SIM 配置标准。 该示例演示了使用生成的 Java 类的 API 在 SM-DP+ 上调用 ES9+ 接口的 GetBoundProfilePackage 函数。
    • UMTS RRC协议的第15条:TS 25.331(UMTS RRC)15.3.0(2018-06)。
    • 双边传输协议 (BTP):ILP-RFC 0023 Draft 4。该示例演示了 BTP 对等方之间的通信,其中涉及 PrepareFulfillReject 请求。
  • 为 3GPP 第 15 版创建了 5G NGAP、XnAP、E1AP 和 F1AP 协议的新样本。 LTE S1AP、X2AP、M2AP、M3AP、RRC、LCSAP、LPPa、SBcAP 和 XwAP 协议的样本已更新至 3GPP 第 15 版。
  • 已创建高级类别中的新示例来解释部分解码功能的使用:
         partial
         s1ap_pd (使用 3GPP S1AP V15.3.0 规格)

ASN.1 Tools for Java - version 7.2.0

  • ASN.1/Java 工具现在包括 ASN.1 Studio v8.3.0。
  • OSS ASN.1 工具已得到增强,以支持 ITU-T 建议 X.691 (08/2015) 规定的规范打包编码规则(对齐和未对齐)| ISO/IEC 8825-2:2015。
  • 编译器和运行时都得到了增强,以支持 Java 9 中引入的 Java 平台模块系统 (JPMS)。编译器现在支持 '-javamodule <name>' 将生成的类打包到具有指定 <name> 的 Java 模块中的选项。 软件分发现在包括一组额外的运行时库,这些库被打包为 Java 9 模块。 这些新库位于 ASN.1/Java 安装的 mlib/ 目录中,并且只能与 JDK 9 一起使用。
  • ASN.1 编译器现在支持 NAME 和 TEXT JER 编码指令中的 UPPERCAMELCASEDLOWERCAMELCASED 关键字。 您现在可以在 ASN.1 模式中描述更广泛的 JSON 数据。
  • JIAAPI 值解析器的公共 API 现在将解析来自任意 java.io.Reader 对象的连接值和赋值。 已实现轻松的解析模式:现在忽略与预期语法的非关键偏差。
  • 已创建演示处理 3GPP CDR 文件 (TS 32.297) 的新示例。 3GPP CDR 文件包含非 ASN.1 文件头和非 ASN.1 记录头,而记录主体由 ASN.1 编码规则之一(BER、PER 未对齐、PER 对齐或 XER)编码。 该示例展示了如何跳过非 ASN.1 内容、将 ASN.1 数据提供给 ASN.1/Java API 并将 CDR 记录转换为 Java 对象。
  • 已为第 14 版 LTE 协议创建了新示例,并且已将第 12 版和第 13 版的现有示例更新为可用 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)
  • 已创建 UMTS RRC 协议第 14 版的新示例:
    • TS 25.331 (UMTS RRC) 14.4.0 (2017-09)

ASN.1 Tools for Java - version 7.1.0

  • ASN.1/Java 工具现在包括 ASN.1 Studio v8.2.0。
  • 符合 ITU-T 建议 X.jsoner 草案:
    • ASN.1/Java 编译器和 SOED、TOED 和 LED 运行时库支持 JSON 编码规则。 现有的 -json 命令行选项指示编译器在运行时启用对 X.jsoner 的支持。
    • JSON 编解码器支持以下编码指令:
      • JER:ARRAY
      • JER:BASE64
      • JER:NAME
      • JER:OBJECT
      • JER:TEXT
      • JER:UNWRAPPED
  • 添加了以下 LTE 协议的新示例:
    • LTE LCS-AP 示例演示了 TS 29.171 V13.2.0 (2016-03) LCS 应用协议。
    • LTE LPPa 示例演示了 TS 36.455 V13.1.0 (2016-03) LTE 定位协议 A。
    • LTE RRC C-V2X 示例演示了 TS 36.331 V14.2.2 (2017-03) LTE RRC 协议的 Sidelink 功能。

ASN.1 Tools for Java - version 7.0.0

  • ASN.1/Java 工具现在包括 ASN.1 Studio v8.1.0。
  • SOED 运行时添加了对 JSON 编码规则的支持。
    JSON SOED 编码器/解码器的当前限制:
    • 不支持延迟解码功能。
    • 只有 SET OF 和 SEQUENCE OF ASN.1 类型支持 ValueInFile 功能。
  • -helperAPI <param> 和 -noHelperAPI <param> 命令行选项已添加到 ASN.1 Tools for Java。 这些选项告诉编译器是否生成可选的辅助 API。 需要一个参数,该参数可以是单个关键字或以逗号分隔的关键字列表。 关键字指定辅助 API 的类型; 目前,只有 opentype 和 pdudecoder 有效。
    • -helperAPI opentype 命令行选项影响受组件关系约束约束的开放类型字段的表示。
    • -helperAPI pdudecoder/-noHelperAPI pdudecoder 命令行选项告诉编译器是否生成可选的 PDU 和 PDU_ID 类,这些类将用于自动检测和解码来自线上位的未知类型的 PDU。
  • 可以使用默认的 -soed 和 -toed 选项指定 -sampleCode 命令行选项。 在更改之前,-sampleCode 选项在与 -toed 选项一起指定时被忽略。
  • 已在 TOED 中实施了对以下约束的验证:
    1. 元素集规范(x.680 第 50 条) - EXCEPTALL EXCEPT
    2. 子类型元素(x.680 第 51 条)
      • 允许的字母表
      • 类型限制
      • 模式约束
      • 属性设置
      • 持续时间范围
      • 时间点范围
      • 重复范围
    3. 其他约束
      • 表约束
      • 组件关系约束
      • 内容约束
  • ASN.1/Java SOED/TOED PER 编码器-解码器实现现在符合最近的 X.691 勘误表 (2015):包含在 BIT STRING 中的编码对于 PER ALIGNED 至少应该是一个八位字节,对于 PER UNALIGNED 应该至少是 1 位。
  • 新样品:
    • 已创建 J2735 协议 2016-03 版本的示例。 由于许可原因,该示例不包括 J2735:2016 ASN.1 规范。 用户应直接从 ITS SAE 站点 获取。
    • 已创建 3GPP XwAP (TS 36.463) 协议的示例。

ASN.1 Tools for Java - version 6.3.1

  • ASN.1/Java 工具现在包括 ASN.1 Studio v8.0.0。

ASN.1 Tools for Java - version 6.3.0

  • ASN.1/Java 工具现在包括 ASN.1 Studio v7.5.1。 (仅限 Windows)
  • ASN.1/Java 时间优化编码器/解码器 (TOED) 现在支持检查以下约束:
    • 元素集规范(x.680 第 50 条):UNION 和 INTERSECTION。
    • 子类型元素(x.680 第 51 条):
      • 单值
      • 包含子类型
      • 值范围
      • 尺寸限制
      • InnerTypeConstraints(带有组件)。
    当指定 -constraint 选项并且存在 PDU 时,编译器会生成 validate() 方法,该方法启用 PDU 的运行时约束检查。
  • 具有命名数字的 INTEGER 类型的 Java 类现在包括每个命名数字的常量。 此功能允许在 Java switch 语句中使用命名数字。
  • coder 类提供方法 enableCompact() 和 disableCompact() 来启用和禁用 XER、E-XER 和 JSON 编码器的空白生成。 enableCompact() 方法禁用空格生成,并且编码被编写为没有空格的单行文本。 disableCompact() 方法添加换行符和缩进以提高可读性。
  • Coder 类提供方法(仅适用于 TOED)来设置由 XER 和 JSON 编码器生成的编码中的缩进宽度。

ASN.1 Tools for Java - version 6.2.0

  • ASN.1/Java 工具现在包括 ASN.1 Studio v7.4。
  • ASN.1/Java 编译器和 osstoed.jar TOED 运行时库现在支持 JSON 编码规则。
  • AbstractData 的 toString() 方法返回的格式化字符串现在可以自定义。
  • Octet 编码规则 (OER) 和规范编码规则 (COER) 现在可通过 -soed 编译器选项和 oss.jar SOED 运行时库获得。
  • ASN.1/Java TOED 编译器现在支持 -limitMethodSize <number> 编译器选项,使您能够将超过 64K 大小限制的生成方法拆分为更小的部分。 “number”参数指定生成的源代码的行数。
  • TOED BER/DER/OER/PER/XER 编码规则现在支持对由不同编码规则编码的 BIT STRING 或 OCTET STRING 中包含的值进行自动编码和解码。
  • com.oss.asn1.Coder TOED 运行时类中添加了新方法,以启用或禁用影响使用 OPTIONAL 或 DEFAULT 关键字定义的 SET 或 SEQUENCE 组件的 JSON/ER 编码的 Coder 选项。 默认情况下,不存在于 SET 或 SEQUENCE 值中的可选组件不会由 JSON 编码器编码。 或者,JSON/ER 允许编码器通过使用“null”标记来识别省略的可选组件,除非组件的类型是 NULL 或者是开放类型。

ASN.1 Tools for Java - version 6.1.0

  • ASN.1/Java 工具现在包括 ASN.1 Studio v7.1
  • ASN.1/Java 编译器和 ASN.1/Java TOED 运行时库现在支持“Rec. ITU-T X.696 | ISO/IEC 8825”中定义的八位字节编码规则 (OER) 和规范八位字节编码规则 (COER) -7”,而不仅仅是“NTCIP 1102:2004 Octet Encoding Rules (OER) Base Protocol”文档中定义的 ASN.1 类型的子集。
    八位组编码规则 (OER) 与打包编码规则 (PER) 一样,通过利用 ASN.1 模式中存在的信息来限制每个编码消息中包含的信息量,从而产生紧凑的编码。 然而,与 PER 相比,OER 更倾向于编码/解码速度而不是编码的紧凑性。
  • Java TOED 现在支持可分辨编码规则 (DER)、XML 编码规则 (XER) 和规范 XML 编码规则 (CXER)。
  • ASN.1/Java 编译器已更改为为 CHOICE 类型的每个备选方案生成类型安全的 getXXX() 方法。
  • ASN.1/Java SOED 和 TOED 运行时现在定义 Enumerated 类的 name() 方法,以便轻松确定枚举数的符号名称。
  • 添加了示例,说明如何使用基于 3GPP 第 11 版的 SBc-AP、M2AP 和 M3AP LTE 协议。
  • 添加了一个示例,说明 DSRC 消息集标准 SAE J2735_200911 的使用。

注意:用于 Java 版本 6.0.0 的 OSS ASN.1 工具实现了旧版本的 OTHER,由 NTCIP 1102:2004 指定。 如果您使用 OER,我们强烈建议您升级到 6.1.0 或更高版本。


ASN.1 Tools for Java - version 6.0.0

  • ASN.1/Java 工具现在包括 ASN.1 Studio v7.0
  • 实施了一个新的运行时库,即 OSS ASN.1/Java 时间优化编码器/解码器 (TOED)。 顾名思义,TOED 针对更快的编码和解码进行了优化。 新的 ASN.1/Java TOED 运行时 (osstoed.jar) 使用编译器生成的编码器/解码器,与解释性 ASN.1/Java 运行时 (oss.jar) 相比,大大加快了编码/解码过程 - 从现在开始 称为 ASN.1/Java 空间优化编码器/解码器 (SOED)。
    注意:
    • 有关 ASN.1/Java SOED 和 TOED 运行时包之间差异的完整列表,请参阅参考手册
    • 除了手册中提到的例外情况,ASN.1/Java SOED 和 TOED 具有相同的 API。 在大多数情况下,您可以从使用一种更改为使用另一种,而不会影响您的应用程序代码。
  • 在 ASN.1/Java 编译器、TOED 运行时库和 ASN.1 Studio 中引入了对 NTCIP 1102:2004 八位字节编码规则 (OER) 基本协议文档指定的八位字节编码规则 (OER) 的支持。 OER 消息的编码/解码速度通常比 BER 和 PER 消息快得多,同时仅比 PER 消息更紧凑。 下一版本将提供对 ASN.1/Java SOED 和 ASN.1/Java LED 中的 OER 的支持。
  • 现在提供的示例集包括说明使用基于 SAE J2735 智能交通标准的协议以及 3GPP 第 10 版 RRC、S1AP 和 X2AP LTE 协议的示例。

ASN.1 Tools for Java - version 5.1.0

  • ASN.1/Java 工具现在包括 ASN.1 Studio,这是一个功能强大的新 IDE,包含允许您编译 ASN.1 规范、显示、创建、修改或编码消息的功能,只需单击几下鼠标,等等 !
  • 您可以生成代码来演示如何对 ASN.1 规范中的任何类型执行编码/解码操作。
  • 添加了对来自 ASN.1:2008 标准的新内置 ASN.1 OID-IRI 和 RELATIVE-OID-IRI 类型的支持。
  • 在 Windows 上,ASN.1/Java 工具现在安装在 Program Files\OSS Nokalva\asn1pjav\ 文件夹下(而在 5.0 版本之前,它们安装在 程序文件\OSS\asn1pjav\)。
  • Windows 平台的示例现在安装在环境变量 %ALLUSERSPROFILE% 指向的文件夹下。 默认情况下,在 Windows 7 和 VISTA 上,示例安装在 C:\ProgramData\OSS Nokalva\asn1pjav\win32\\samples 文件夹下,并且 在 Windows XP 上,示例安装在 C:\Documents and Settings\All Users\Application Data\OSS Nokalva\asn1pjav\win32\<version-number>\samples 文件夹下。

ASN.1 Tools for Java - version 4.1.0

  • OSS ASN.1 Tools for Java 现在支持 PATTERN 约束表示法。 此表示法允许您将字符串类型限制为可接受字符模式的预设序列。 此约束表示法具有一般格式:
    <TypeName> ::= <RestrictedCharType> (PATTERN <RegularExpression>)

    例如:

    NoZeros ::= NumericString (PATTERN noZero)
    noZero UniversalString ::= "[^0]"

ASN.1 Tools for Java - version 4.0.0

  • 适用于 Java 的 OSS ASN.1 工具现在支持 ISO 8601 中指定的所有时间类型(TIME、DATE、TIME-OF-DAY、DATE-TIME、DURATION)。 这些日期和时间的表示已标准化,以避免在跨国界通信时产生误解。
  • 如果指定了 -relaxedMode 选项,则 ASN.1/Java 编译器已更改为自动选择 -ignoreIncompleteItems 选项。
  • ASN.1/Java 运行时引入了新的 ossvalidator.jar 类库,以支持与 J2ME CLDC 1.1 平台一起使用的运行时约束检查。 以前的 J2ME CLDC 1.1 兼容运行时库 ossmicro.jar 不包括对运行时约束检查的支持。 使用 ossvalidator.jar 库,您现在可以对针对资源受限环境开发的 ASN.1 JAVA 应用程序执行运行时约束检查。
  • ASN.1/Java 运行时提供了一个新方法 decodeWithPositions(),它允许您在解码时保存已编码 PDU 组件的大小/偏移信息。 大小/偏移信息可用于确定编码数据中任何字段的位置。

ASN.1 Tools for Java - version 3.1.0

  • OSS ASN.1 Tools for Java 3.1 版支持 J2ME CLDC 1.1 平台。 具体来说,新的命令行选项 -microedition 和新的运行时库 ossmicro.jar 可用于生成与 J2ME CLDC 1.1 兼容的 Java 类。 现在,您可以在 Java 中为资源受限的环境开发 ASN.1 应用程序。
  • 新的编译器选项 -ignoreIncompleteItems 指示编译器忽略出现在 ASN.1 模块中的不完整 ASN.1 定义,并直接或间接引用未定义的类型或值。 这使您可以成功地利用具有未解析引用但不会影响您的应用程序的规范。
  • 在解码 ASN.1 类型 OCTET STRING、BIT STRING 和开放类型时,两个新的性能调整参数可用于优化 PER 解码器。 这些可通过 Java 系统属性设置的参数会影响解码大字节数组时使用的内部缓冲策略。 现在,在解码分段字节数组内容时,您可以控制解码器输出的初始缓冲区大小以及额外缓冲区分配的大小。
  • 引入了新的实用程序类 com.oss.util.Benchmark 以简化编码器/解码器的性能时序。 有关 Benchmark 类的更多信息,请参阅运行时 API 文档。

ASN.1 Tools for Java - version 3.0.0

  • OSS ASN.1 Tools for Java 3.0 版包括对扩展 XML 编码规则 (E-XER) 的支持,让您可以同时享受 ASN.1 和 XML 的精华。
  • 强大的新 XER 编码功能允许用户应用程序生成定制的 XER 编码。 用户定义的 XER 编码将放置在输出流中,而不是由 XER 编码器类的默认方法生成的标准编码。
  • ASN.1/Java 工具已经过性能优化。 BER 解码器的性能得到了改进,现在运行速度提高了 2.5 倍或 150%。

ASN.1 Tools for Java - version 2.2.0

  • OSS ASN.1 Tools for Java 2.2 版包括对特殊 REAL 值 -0 和 NOT-A-NUMBER 的支持,以及将 ASN.1/Java 编译器更改为 XML 值表示法以允许某些值使用纯文本标识符。

ASN.1 Tools for Java - version 2.1.0

  • 当在解码消息的过程中解码失败时,现在可以捕获和检查部分值。
  • XER 和 CXER 编码器都经过优化,运行速度比以前的版本快 100%。
  • 运行时中的附加包现在可用。 它被称为 com.oss.metadata 并提供对标签、Java 类名称、ASN.1 名称、标志(例如可扩展性)和约束的访问。

ASN.1 Tools for Java - version 2.0.0

OSS ASN.1 Tools for Java 2.0 版支持 ASN.1:2002 标准文档中描述的对 ASN.1 的 XML 添加。

  • ASN.1 编译器支持 XML 值表示法,该表示法提供了一种使用可扩展标记语言 (XML) 表示 ASN.1 值的方法,其中 ASN.1 类型定义作为模式。 XML 值符号可能与其他 ASN.1 组件出现在相同的输入 ASN.1 文件中。
  • 编码器/解码器已得到增强,允许您使用 XML 编码规则 (XER) 或规范 XML 编码规则 (CXER) 对输入中的任何 PDU 进行编码/解码。 您现在可以通过 XML 为您的 ASN.1 描述的消息添加可见性。
  • 现在有了新的编译器命令行选项:-xer和-cxer。这些选项与-ber/-der/-per/uper选项类似,它们允许相关的编码规则集(即XML编码规则(XER)和规范的XML编码规则(CXER))在运行时对编码器/解码器可用。
  • 添加了一个名为“-xsl”的新 ASN.1 编译器命令行选项,允许您自动生成多个默认样式表,每个 PDU 一个。 样式表允许您更好地控制 XML 编码的视觉美学质量。
  • 引入了新的编译器指令 OSS.Stylesheet 以允许您更好地控制由 ASN.1 编译器生成的默认样式表。 使用该指令,您可以指示 ASN.1 编译器为任何特定的 PDU 生成具有您自己所需文件名的单独样式表。
  • ASN.1 编译器现在可以自动生成 XML DTD(数据类型定义)。 您的应用程序通过运行时 XERDocument 类可以产生 XML 输出。 任何 XML 工具都可以查看和编辑该输出。

ASN.1 Tools for Java - version 1.5

  • 编译器中的 XML 支持
  • 包含 JIA API
  • OSS ASN.1/Java 编译器的 GUI 界面
  • 内容约束支持
  • 包含精益编码器/解码器运行时
  • 新的 hashCode() 方法

ASN.1 Tools for Java - version 1.5

  • 新功能:ValueInFile(对于 OSS C 用户,这是 NOCOPY 或 OBJHANDLE)提供对处理巨大值或值的组件的支持。 特别是,运行时不再假定该值存储在 RAM 中,而是允许该值驻留在任何外部存储中,例如磁盘文件。 该值也可以写入或读取 TCP/IP 套接字。
  • 此版本使用 JDK 1.2.2。 我们发现切换到此版本可以提高性能。 我们鼓励我们的客户也使用 JDK 1.2.2 或更高版本。 如果您使用 ValueInFile 功能,则需要使用 JDK 1.2.2 或更高版本。