ASN.1 Tools for C — 改进历史记录

ASN.1 Tools for C - version 11.0.0.6 (最新版本)

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

ASN.1 Tools for C - version 11.0.0.3

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

ASN.1 Tools for C - version 11.0

  • ASN.1/C 工具现在包括 ASN.1 Studio v10.0.1。
  • 新的 -rtoed 编译器选项指示编译器为新的 RTOED 运行时生成代码。 在生成的代码中,所有函数指针现在都是常量,因此 C 编译器工具链可以将它们放置在只读内存中。 这可以防止指针被恶意覆盖。
  • 现在,SOED、TOED 和 LED 运行时的错误处理代码中的堆栈粉碎保护得到了改进。
  • 当设置了新的 EXER_ENCODING_OF_DEFAULT_VALUES_AS_COMMENTS 编码标志时,E-XER 编码器现在会将缺少的 DEFAULT 字段编码为包含相应默认值的 XML 注释。 启用 TOED 时,新的 OSS_NO_EXER_ENCODING_OF_DEFAULT_VALUES_AS_COMMENTS 宏可用于控制性能或内存占用。
  • 编译器现在将生成额外的 TOED 代码,以启用 ossBinary2XML()ossXML2Binary()ossBinary2JSON()ossJSON2Binary()OSS转换API函数总是报D0373S错误并返回 CONVERSION_NOT_POSSIBLE 错误代码,当由于以下任何原因无法正确转换时:
    • 无法为可扩展的开放类型解析组件关系约束。
    • OSS.NoConstrain 编译器指令应用于开放类型或内容受限类型。
    • 当您在 ASN.1 编译时使用 TOED 库而不指定 -autoencdec-constr 选项时。
    以前,这些函数可能会将编码的某些部分保留为原始形式,从而产生无效的输出消息。
    当应用程序不需要这些转换函数并且您与 TOED 库链接时,使用 -DOSS_NO_BINARY_TEXT_API_CHECKS 选项编译生成的代码文件以减小代码大小。
  • 为派生自组件关系约束的共享开放类型生成的 typedef 的顺序将不再导致 C 编译错误。 当默认联合表示用于开放类型的解码值时,可能会出现此问题。 新的兼容标志 v10.7OrderOfSharedTypedefsForOpenTypes 可用于恢复以前 ASN.1 编译器版本生成的 typedef 的顺序。
  • 当输入语法包括多个包含 NamedBitList 语法的 BIT STRING 类型时,ASN.1 编译器现在将生成引用命名位的正确常量的示例代码。
  • OSS ASN.1 运行时现在将检查 TIME 类型的天组件的值是否对应于指定月份的天数。 以前,运行时检查该值是否超过 31。此外,现在拒绝年份组件的负值。
  • 当包含指定为参数的 OSS 转换函数的 OSS.PrintFunctionName 指令应用于 OCTET STRING 类型并且可以转换时,值表示法现在将包括实际的 BCD、TBCD 、ASCII、IP 地址或 ASN.1 注释中的时间戳值。

ASN.1 Tools for C - version 10.7.0

  • ASN.1/C 工具现在包括 ASN.1 Studio v9.0.0。
  • ASN.1 编译器现在支持 X.680 修正案 1。IMPORTS 子句允许从最新模块版本导入符号,如对象标识符所示,现在它可以包含 WITH SUCCESSORS< /span> 和 WITH DESCENDANTS 作为 SelectionOption
  • 添加了 OSS.NOENCODEOSS.NODECODE 编译器指令。 它们通过排除指令操作数的编码或解码例程来减少生成的 TOED 代码。 在某些情况下,使用新的 -compactNoDecode 编译器选项可以进一步减少生成的代码。
  • 编译器现在支持 OSS.JEREncodeFunction 指令。 该指令允许您使用将生成自定义编码的用户提供的函数自定义 ASN.1 类型的 JSON 编码。 请注意,OSS.JEREncodeFunction 指令仅在 -soed-toed< 时可用 /span> 指定了编译器选项。
  • 如果 ENCODED BY 不存在,JSON 编码器现在支持具有内容约束的 BIT STRING 或 OCTET STRING 类型的另一种编码形式。 当您选择此表单时,值将被编码为文本(JSON 值表示包含的值)而不是十六进制字符串。
  • 改进了对具有嵌套 CONSTRAINED BY 或内容约束的内部子类型约束中的类型的处理:
    1. 一种特殊类型的绝对引用表示法,允许您访问位于 WITH COMPONENTS 和 WITH COMPONENT(内部子类型)子句中的 ASN.1 类型,由两个美元符号 ($$) 现在支持后跟指示特定 WITH COMPONENTS 或 WITH COMPONENT 的索引号。 您现在可以在内部子类型或编译器生成的结构中存在的 CONSTRAINED BY 子句中分配用户定义的名称。
    2. 当在内部子类型约束中应用内容约束时,生成的基类型和受约束类型的表示现在是不同的。 当 TYPENAME 指令应用于基本类型时,ASN.1 编译器不再对两种表示使用相同的名称。 新的兼容标志 oldTypesFromInnerSubtypeWithContentConstraints 可用于恢复以前的行为。
    3. ASN.1 编译器现在为应用了包含在 WITH COMPONENTS 语法中的 CONSTRAINED BY 的字段生成用户定义的函数。 新的兼容标志 noConstrainedByFunctionsFromInnerSubtype 可用于为父类型生成用户定义的函数。
    4. ASN.1 编译器不再为循环定义的类型生成带有附加指针的结构,这些类型在帮助模式下在内部子类型中应用了内容约束。 新的兼容标志 v10.6PointeredTypesFromInnerWithContentConstraints 可用于恢复以前的行为。
    5. ASN.1/C 编译器现在保留相同的全局定义名称和值,这些名称和值是为在内部子类型约束中应用内容约束后创建的人工类型中的类似字段生成的。 要生成错位名称,请使用 v10.6DefineNamesForTypesFromInnerWithContentConstraints 兼容标志。
    6. 现在,当使用 -c++ 指定 -splitHeader 选项时,ASN.1/C 编译器会生成正确的头文件 class="code">-dualHeaders 选项和输入 ASN.1 语法包括内部子类型和内容约束或 CONSTRAINED BY 约束。 oldLocationOfTypesFromInnerWithContentConstraints 兼容标志可用于恢复以前的行为。
  • 已创建以下示例:
    • DIN EN 15722 智能交通系统 - ESafety - ECall 最小数据集标准的样本。 该示例演示了如何创建 ECallMessage 消息并将其序列化为二进制 (UPER) 和 XML 格式。
    • eUICC 配置文件包标准的示例。 该示例演示了如何构建 eUICC 配置文件包并将其以二进制 (DER) 和文本 (JSON) 格式保存到磁盘文件中。
    • GSMA 远程 SIM 配置标准示例。 该示例以 SM-DP+ 的 GetBoundProfilePackageRequest 请求为例演示了 RSP 通信。
  • 为 3GPP 第 15 版的 5G NGAP、XnAP、E1AP、F1AP 和 LTE SLmAP 协议创建了新样本。LTE LCSAP、LPPA、S1AP、M2AP、M3AP、RRC、SBcAP、XwAP、X2AP 协议的样本已经 更新到 3GPP 第 15 版。

ASN.1 Tools for C - version 10.6.0

  • ASN.1/C 工具现在包括 ASN.1 Studio v8.3.0。
  • 支持 ITU-T X.691 建议书 (08/2015) 指定的规范打包编码规则(ALIGNED 和 UNALIGNED)| 已添加 ISO/IEC 8825-2:2015。 要启用对 CPER 的支持,请使用新的编译器选项:-cper-cuper。 为了更好的安全性,CPER 解码器在严格模式下运行:报告与 X.691 标准的每一次偏差。
  • ASN.1 编译器支持 NAME 和 TEXT JER 编码指令中的 UPPERCAMELCASEDLOWERCAMELCASED 关键字。 您现在可以在 ASN.1 模式中描述更广泛的 JSON 数据。
  • JSON 编码器现在将始终将非特殊 REAL 值编码为 JSON 数字。 以前,它可以编码为 JSON 对象。 例如,不受约束的 REAL 类型的值 3.14 被编码为 {base10value: 3.14}。 JSON 解码器现在接受两种编码形式:JSON 数字和 JSON 对象。
  • DER/CER/CXER/COER 编码器现在自动将 GeneralizedTime 和 UTCTime 类型的任何有效值转换为 X.690 条款 11.7 和 11.8 指定的规范形式。 以前假定要编码的值已经满足这些条款对其编码的限制。 例如,UTCTime 值 "171231235900Z" 被接受,但 "17122359Z" 被拒绝,因为没有秒组件。
  • 添加了一个新示例,该示例演示了 3GPP TS 32.297 描述的 CDR 文件处理。 3GPP CDR 文件包含非 ASN.1 文件头和非 ASN.1 记录头,而记录主体由 ASN.1 编码规则之一(BER、PER 未对齐、PER 对齐或 XER)编码。
  • 已为 LTE 协议的 3GPP 第 14 版创建了新样本,现有的第 12 版和第 13 版样本已更新为最新版本的 ASN.1 模式。
    • lte_lcsap_r13 TS 29.171 V13.3.0 (2017-06)
    • lte_lcsap_r14 TS 29.171 V14.1.0 (2017-06)
    • lte_lppa_r13 TS 36.455 V13.1.0 (2016-03)
    • lte_lppa_r14 TS 36.455 V14.3.0 (2017-09)
    • lte_m2ap_r12 TS 36.443 V12.2.0 (2015-03)
    • lte_m2ap_r13 TS 36.443 V13.3.0 (2016-03)
    • lte_m2ap_r14 TS 36.443 V14.0.1 (2017-09)
    • lte_m3ap_r12 TS 36.444 V12.2.0 (2015-03)
    • lte_m3ap_r13 TS 36.444 V13.2.0 (2016-03)
    • lte_m3ap_r14 TS 36.444 V14.1.0 (2017-06)
    • lte_rrc_cv2x_r14 TS 36.331 V14.4.0 (2017-09)
    • lte_rrc_nb_iot_r13 TS 36.331 V13.7.1 (2017-09)
    • lte_rrc_nb_iot_r14 TS 36.331 V14.4.0 (2017-09)
    • lte_rrc_r12 TS 36.331 V12.15.1 (2017-09)
    • lte_rrc_r13 TS 36.331 V13.7.1 (2017-09)
    • lte_rrc_r14 TS 36.331 V14.4.0 (2017-09)
    • lte_s1ap_nb_iot_r13 TS 36.413 V13.6.0 (2017-06)
    • lte_s1ap_nb_iot_r14 TS 36.413 V14.4.0 (2017-10)
    • lte_s1ap_r12 TS 36.413 V12.7.0 (2016-03)
    • lte_s1ap_r13 TS 36.413 V13.6.0 (2017-06)
    • lte_s1ap_r14 TS 36.413 V14.4.0 (2017-10)
    • lte_sbcap_r12 TS 29.168 V12.10.0 (2017-09)
    • lte_sbcap_r13 TS 29.168 V13.3.0 (2017-09)
    • lte_sbcap_r14 TS 29.168 V14.1.0 (2017-09)
    • lte_x2ap_nb_iot_r13 TS 36.423 V13.7.0 (2017-06)
    • lte_x2ap_nb_iot_r14 TS 36.423 V14.4.0 (2017-09)
    • lte_x2ap_r12 TS 36.423 V12.9.0 (2016-07)
    • lte_x2ap_r13 TS 36.423 V13.7.0 (2017-06)
    • lte_x2ap_r14 TS 36.423 V14.4.0 (2017-09)
    • lte_xwap_r13 TS 36.463 V13.1.0 (2016-07)
    • lte_xwap_r14 TS 36.463 V14.2.0 (2017-06)

ASN.1 Tools for C - version 10.5.0

  • ASN.1/C 工具现在包括 ASN.1 Studio v8.2.0。
  • 符合 ITU-T 建议 X.jsoner 草案:
    • ASN.1/C 编译器和 SOED、TOED 和 LED 运行时库支持 JSON 编码规则。 现有的 -json 命令行选项指示编译器在运行时启用对 X.jsoner 的支持。
    • JSON 编解码器支持以下编码指令:
      • JER:ARRAY
      • JER:BASE64
      • JER:NAME
      • JER:OBJECT
      • JER:TEXT
      • JER:UNWRAPPED
  • 更小的 TOED 占地面积。 通过在编译生成的 .c 时定义 OSS_REDUCED_ERROR_MSGS,错误消息将只包含 5 个字符的消息前缀,而不是完整的消息 . 或者,如果定义了 OSSDEBUG=0,则错误消息字符串将被完全删除,只留下返回代码来确定发生了哪个错误。 在 Linux x86 上,您可以将应用程序的占用空间减少大约 20 KB。 此数字可能因处理器、操作系统和 C 编译器而异。
  • 添加了以下 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 C - version 10.4.0

  • ASN.1/C 工具现在包括 ASN.1 Studio v8.1.0。
  • ASN.1/C 编译器和运行时现在支持 TIME 类型分数的 64 位精度(19-20 个十进制数字)。 TIME 类型的 C 表示是字符串 (char[]),因此编码器/解码器行为中唯一可见的变化是它现在接受 19-20 位十进制数字的小数 TIME 值。 以前,引发了关于太长分数的错误。
  • OSS_ALLOW_ABSENT_OR_BAD_SECONDS_OR_ABSENT_Z 运行时兼容性标志的名称已更改为 OSS_ALLOW_ABSENT_OR_BAD_SECONDS; 原始名称被认为有些误导。 为了向后兼容,旧名称仍然可用。
  • ASN.1/C SOED/LEAN/TOED PER编码器-解码器的实现现在符合最近的 X.691更正(2015):BIT STRING中包含的编码对于PER ALIGNED来说应该至少是一个八位数,对于PER UNALIGNED来说应该是一个比特。对于PER ALIGNED和PER UNALIGNED来说,至少要有一个八位数。
  • ASN.1/C 运行时实现现在符合 ITU-T X.680 条款 46.3c。 该条款规定,当本地时间和 UTC 之间的差是整数小时时,可以省略 GeneralizedTime 类型值的分钟部分。 以前,当分钟组件不存在时,可能会发出错误错误。
  • 新示例:
    • 已创建 J2735 协议 2016-03 版本的示例。 由于许可原因,该示例不包括 J2735:2016 ASN.1 规范。 用户应直接从 ITS SAE 站点获取。
    • 已创建 3GPP XwAP (TS 36.463) 协议的示例。

ASN.1 Tools for C - version 10.3.0

  • ASN.1/C 工具现在包括 ASN.1 Studio v8.0.0。
  • ASN.1/C 编译器和 OSS ASN.1/C 工具的所有三个运行时库中都提供了对“JSON 编码规则的 OSS 技术规范”的 JSON 编码规则支持:空间优化编码器/解码器( SOED)、时间优化编码器/解码器 (TOED) 和精益编码器/解码器 (LED)。 添加了以下 API 函数:
    • ossGetJsonFlags() / ossSetJsonFlags() - 控制 JSON 编码器的行为(即编码 DEFAULT 值,删除空格等)
    • ossGetJsonIndentSize() / ossSetJsonIndentSize() - 设置/获取 JSON 编码器使用的缩进大小。
  • 添加了两个新的 API 函数,ossBinary2JSON() 和 ossJSON2Binary(),用于将 ASN.1 二进制格式(例如,BER、PER、DER、OER 等)编码的数据转换为 JSON 文本编码格式 (JSON/ER) 反之亦然。
  • 现在支持 ossPrintJSON() API 函数。 此功能允许您以格式良好的方式打印 JSON/ER 编码的内容。
  • 以 TLV 格式打印 BER 编码消息的 IAAPI 函数现在会自动检测并跳过 CDR 标头。
    支持以下 CDR 格式:
    • CDR 文件由 CDR 文件头和在每个基于 BER 的消息之前带有 CDR 记录头的 CDR 记录组成。
    • CDR 文件由 CDR 记录头组成,在前两个八位字节中保存记录标识符,在接下来的两个八位字节中保存记录长度。
    有关更多信息,请参阅 IAAPI 用户手册。
  • 添加了几个用于将 ASN.1 编码与逗号分隔值 (CSV) 数据相互转换的 IAAPI 函数。
  • 3GPP 版本 10、11 和 12 的示例已更新为最新版本的标准。 添加了 3GPP LTE Release 13 的新样本。

ASN.1 Tools for C - version 10.2.1

  • ASN.1/C 工具现在包括 ASN.1 Studio v7.5.1。 (仅限 Windows)
  • Windows ASN.1/C 包已更改为包括针对 Microsoft Visual Studio 2015 的二进制文件以及支持 MVS2005-MVS2013 的二进制文件。

ASN.1 Tools for C - version 10.2

  • ASN.1/C 工具现在包括 ASN.1 Studio v7.4。
  • ASN.1/C 编译器和 ASN.1/C TOED 运行时库现在具有部分解码功能。 部分解码功能使您能够:
    • 高速解码传入消息中的预选字段
    • 直接访问回调函数中解码的字段,无需从PDU顶部遍历
    • 获取二进制 BER/DER/OER/COER 消息中字段编码的偏移量和长度。 如果新值的编码与前一个值的编码长度相同,则它允许您直接替换二进制消息中的字段值。
    有兴趣评估此功能的现有客户请联系sales@osschina.cn
  • ASN.1/C 运行时库中添加了几个 API 实用程序函数,以支持 BCD 和 TBCD 编码。 这些函数将八位字节对齐的数据打印为 BCD 或 TBCD 字符串,并将八位字节字符串转换为 BCD 或 TBCD 字符串或从 BCD 或 TBCD 字符串转换。

ASN.1 Tools for C - version 10.1

  • ASN.1/C 工具现在包括 ASN.1 Studio v7.1
  • ASN.1/C 编译器和 ASN.1/C SOED/LED/TOED 运行时库现在支持八位字节编码规则 (OER) 和规范八位字节编码规则 (COER),如“ITU-T X.696 建议书 | ISO/IEC 8825-7”,而不仅仅是“NTCIP 1102:2004 Octet Encoding Rules (OER) Base Protocol”文档中定义的 ASN.1 类型的子集。
    八位组编码规则 (OER) 与打包编码规则 (PER) 一样,通过利用 ASN.1 模式中存在的信息来限制每个编码消息中包含的信息量,从而产生紧凑的编码。 然而,与 PER 相比,OER 更倾向于编码/解码速度而不是编码的紧凑性。
  • 编译器已得到增强,以支持新的 -useQualifedNames 编译器选项来解决潜在的名称冲突。 此选项指示 ASN.1 编译器将前缀添加到:
    • - 为 ENUMERATED ASN.1 类型生成的枚举器
    • - 为 INTEGER 类型的命名数字生成的常量
    • - 为 BIT STRING 类型的命名位生成的常量
  • 添加了示例,说明如何使用基于 3GPP 第 11 版的 SBc-AP、M2AP 和 M3AP LTE 协议。
  • 添加了一个示例,说明 DSRC 消息集标准 SAE J2735_200911 的使用。

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


ASN.1 Tools for C - version 10.0

  • ASN.1/C 工具现在包括 ASN.1 Studio v7.0
  • 已在 ASN.1/C 编译器、SOED、TOED 和 IAAPI 运行时库中实现对 NTCIP 1102:2004 八位组编码规则 (OER) 基本协议文档指定的八位组编码规则 (OER) 的支持, ASN.1 Studio,以及 CAGL。 OER 消息的编码/解码速度通常比 BER 和 PER 消息快得多,同时仅比 PER 消息更紧凑。 下一版本将提供对 ASN.1/C LED 运行时库中 OER 的支持。
  • 添加了在未设置 AUTOMATIC_ENCDEC 运行时标志时解码具有表(组件关系)约束的开放类型的能力。
  • 提供了两个新的实用 API 函数:
    • - ossPrintPDUToBuffer() - 将编译器生成的结构的内容(编码前或解码后)序列化为标准化的ASN.1“值表示法”格式,然后将其写入输出缓冲区; 这个函数类似于ossPrintPDU(),写入标准输出;
    • - ossDeterminePDUBufferLength() - 用于确定 ossPrintPDUToBuffer() 所需的输出缓冲区的长度(以字节为单位)。
  • 现在提供的示例集包括说明使用基于 SAE J2735 智能交通标准的协议以及基于 3GPP Release 10 RRC、S1AP 和 X2AP LTE 协议的示例。
  • SOED 和 LED 的 PER 编码分析器插件现在除了静态库之外还包括 DLL。
  • 各种 IAAPI 改进,包括对 OID-IRI 和 RELATIVE-OID-IRI 类型的支持,对更复杂的允许字母约束的支持等已添加。

ASN.1 Tools for C - version 9.0.2

  • ASN.1/C 工具现在包括 ASN.1 Studio,这是一个强大的新 IDE,它包含的功能允许您编译 ASN.1 规范、显示、创建、修改或编码消息,只需单击几下鼠标,等等 !
  • ASN.1/C 工具能够为更用户友好的 ASN.1 开放类型生成 C 代码。
  • 您可以生成代码来演示如何对 ASN.1 规范中的任何类型执行编码/解码操作。
  • TOED(时间优化编码器/解码器)现在是默认的运行时库,为您提供“开箱即用”的速度优化代码。 我们还没有淘汰 SOED(空间优化编码器/解码器)。 我们刚刚迈出了更快的步伐,以响应对速度的日益关注。
  • 在 Windows 上,ASN.1/C 工具现在安装在 Program Files\OSS Nokalva\ossasn1\ 文件夹下(而在 9.0.0 版本之前,它们安装在 程序文件\OSS\ossasn1\.)
  • Windows 平台的示例现在安装在环境变量 %ALLUSERSPROFILE% 指向的文件夹下。 默认情况下,在 Windows 7 和 VISTA 上,示例安装在 C:\ProgramData\OSS Nokalva\ossasn1\[win32|winx64]\\samples 文件夹,在 Windows XP 上,示例安装在 C:\Documents and Settings\All Users\Application Data\OSS Nokalva\ossasn1\[win32|winx64]\\samples 文件夹。

ASN.1 Tools for C - version 8.6.1

  • ASN.1/C 工具的错误处理已增强如下:
    • - 如果可能,A1140W 警告消息会打印有关未知编码指令的更多详细信息。
    • - ossDescribeReturnCode() 函数中增加了 CAGL 返回码的新描述。
    • - 新的 IAAPI 函数 ossGetIaapiErrMsg() 允许您在先前调用 IAAPI 函数失败后以文本字符串的形式获取错误消息。 此外,新的错误处理函数 ossIaapiErrMsgHandle() 被设置为默认的 IAAPI 错误处理函数。
    • - 新的 IAAPI 函数 ossDescribeIaapiReturnCode() 返回 IAAPI 数字返回码的文本描述。
  • TOED 约束检查功能已得到增强,以支持 REAL 类型的值范围约束。
  • ASN.1 编译器中添加了新的值共享算法,以使具有大值符号的 ASN.1 规范的编译速度非常快。 因此,生成数据的大小会减少,因为现在共享更多值。

ASN.1 Tools for C - version 8.5

  • ASN.1/C 工具现在使用 HUGE 编译器指令为 INTEGER 类型提供以下支持:
    • - 支持具有除 (0..MAX) 以外的约束的受约束的 HUGE 整数。
    • - 支持将 [DEFAULT-FOR-EMPTY] E-XER 编码指令应用于 HUGE 整数字段。
    • - 支持 HUGE INTEGER 类型的 DEFAULT 值和命名值,只要值可以用 64 位表示。
  • ASN.1/C 编译器现在可以生成 TOED E-XER 解码器代码,该代码将跳过在输入中发现的未知 XML 内容。 新代码在 #ifdef OSS_SKIP_UNKNOWN_CONTENT_SUPPORTED #endif 部分内生成,默认情况下禁用。 要启用支持 OSS_SKIP_UNKNOWN_CONTENT 运行时标志的代码,请在 C 编译生成的代码文件时指定 OSS_SKIP_UNKNOWN_CONTENT_SUPPORTED 宏。
  • 如果使用 ossSetFlags() 或 ossSetDecodingFlags() 函数设置了新的 OSS_SKIP_UNKNOWN_CONTENT 运行时标志,E-XER 解码器现在将丢弃任何未知的 XML 标签或输入传递的属性。 默认情况下,当未设置标志时,任何未知元素或属性都会导致解码器发出错误。
  • ASN.1/C 运行时库中添加了一个新的 API 函数 ossSkipCompressionPrefix()。 OSS ASN.1 工具使用压缩生成的完整编码由压缩前缀和压缩编码组成。 给定一个描述完整编码的 OssBuf 结构,该函数返回原始(未压缩)编码和压缩编码的长度,并修改 OssBuf 结构。

ASN.1 Tools for C - version 8.4

  • PrintPER 现在支持打印包含在具有内容约束的类型中包含的类型的值,当此包含的类型可以自动解码时。 如果在内容受限类型的 ENCODED BY 中指定了非 PER 编码规则,PrintPER 会为包含的类型写出跟踪数据,就像解码器使用 DEBUGPDU 运行时标志所做的那样。 ossPrintPER() 函数将此类跟踪数据打印在 /* */ 注释中,而 ossPrintXPER() 将其打印在注释中。
  • 以前,PrintPER 从不显示包含类型的编码信息,它只解释 BIT STRING 或 OCTET STRING 编码。
  • 添加了新的 PrintPER 标志“OSS_NO_CONTAINED_TYPE”和“OSS_NO_CONTAINED_TYPE_TRACE”。 第一个标志指示 PER 编码分析器不打印有关包含类型的信息。 第二个标志指示分析器不要打印带有由非 PER 规则编码的包含类型的跟踪数据的注释。
  • PrintPER 现在支持打印复杂的 ISO 8601 时间值。
  • 添加了新的 PrintPER 标志“OSS_NO_TIME_DETAILS”。 该标志指示 PER 编码分析器将 ISO 8601 时间类型作为原始类型处理,也就是说,不报告其内部结构,如 ITU-T Rec. 2 修正案所定义的那样。 X.691:2002。
  • 现在可以使用新的编译器选项 -relaxPerToedIntegerRangeConstraint 来修改 TOED PER 编码器的默认行为。 PER 编码器的标准行为是强制执行范围约束,即使在禁用约束检查时也是如此。 禁用约束失去了意义,因为 PER 只保留了足够的位来表示指定范围内的所有状态。
  • -relaxPerToedIntegerRangeConstraint 编译器选项要求编译器生成 TOED 代码,以便允许用户故意强制对不允许但可能的值进行编码。
  • Lean 编码器/解码器现在支持跟踪复杂的 ISO 8601 时间值。
  • 添加了新的跟踪标志“LTRACE_NO_TIME_DETAILS”。 该标志指示运行时将 ISO 8601 时间类型作为原始类型进行跟踪,也就是说,不跟踪它们由 ITU-T Rec. 2 修正案定义的内部结构。 X.691:2002。
  • SOED PER 编码器/解码器已得到增强,以支持新时间类型的跟踪。

ASN.1 Tools for C - version 8.3

  • ASN.1 编译器增强
    • - 如果指定了 -relaxedMode 选项,ASN.1 编译器已更改为自动选择 -ignoreIncompleteItems 选项。
    • - ASN.1 编译器现在支持组合 -exer 和 -code 选项,并使用 TOED 运行时生成用于编码和解码扩展 XER 数据的代码文件。 生成的代码提供符合 ASN.1 规范的 XML (E-XER) 数据的性能优化解析和序列化,以及此 XML 数据与编译器生成的 C 结构之间的映射。 生成的代码比 LED E-XER 快 2 到 3 倍,比 SOED E-XER 快 3 到 4 倍。 您必须链接 8.3 版或更高版本的 TOED 运行时才能将 E-XER 与 TOED 一起使用。
    • - 在存在 -relaySafe 编译器选项的情况下,编译器不会为扩展 XER 生成“中继安全”代码。 如果您需要此功能,请通过 support@oss.com 联系 OSS Nokalva 支持。
  • ASN.1 运行时增强
    • - 文件和套接字内存管理器已被修改,以删除调用 ossterm() 时创建的临时文件,即使存储在这些文件中的 PDU 没有被 ossFreePDU() 释放。 您可以通过设置新的 OSS_KEEP_MEMORY_MANAGER_TEMPORARY_FILES 兼容标志来恢复之前的行为。
    • 时间优化 OSS 运行时 (TOED) 现在支持扩展 XER 编码规则。 新的运行时例程根据 ASN.1 规范有效地解析和序列化 XML (E-XER) 数据,并将此 XML 数据映射到编译器生成的 C 结构。 您必须使用 8.3 版或更高版本的 ASN.1 编译器并在编译器命令行上指定 -exer 和 -code 以生成代码文件以将 E-XER 与 TOED 一起使用。

ASN.1 Tools for C - version 8.2

  • OSS ASN.1 Tools for C 版本 8.2 支持 ISO 8601 中指定的所有时间类型(TIME、DATE、TIME-OF-DAY、DATE-TIME、DURATION)。 这些日期和时间的表示已标准化,以避免在跨国界通信时产生误解。 空间优化编码器/解码器 (SOED)、时间优化编码器/解码器 (TOED) 和精益编码器/解码器 (LED) 支持时间类型。
  • 现在,所有 ASN.1/C 运行时中的 XER/CXER/E-XER 都支持 RelaySafe 模式 - 空间优化编码器/解码器 (SOED)、时间优化编码器/解码器 (TOED) 和精益编码器/解码器 (引领)。 当 -relaySafe 生效时,新的 OSS 特定指令 OSS.ExtensibleUseType 可以本地或全局应用于在 E-XER 中编码的选定可扩展 CHOICE 类型。 新指令指示 E-XER 解码器将可扩展 CHOICE 类型的未知替代项作为未知扩展处理,以便保留未知类型的完整 XML 或二进制编码。
  • 新的 OSS 特定指令 OSS.ExerNumericBoolean 可以本地或全局应用于 BOOLEAN 类型,使得 E-XER 编码器生成数字 BOOLEAN 值(0 和 1)而不是文本值(true/false 或它们的替换设置为使用 TEXT 编码指令)。

ASN.1 Tools for C - version 8.1.3

  • 新的 OSS ASN.1 GUI 是第一个真正的 ASN.1 集成开发环境 (IDE)。 现在,即使是初学者也可以轻松构建、测试和部署 ASN.1 应用程序。 新的 ASN.1 GUI 包含两个产品:
    • - OSS ASN.1 Compiler GUI
    • - OSS ASN-1EDGE
  • OSS ASN.1 编译器 GUI 是我们 ASN.1 编译器的易于使用的图形界面。 GUI 允许用户以图形方式选择 ASN.1 编译器的输入文件和选项,并保存设置以供以后检索。
  • OSS ASN.1 编译器 GUI 的主要功能包括:
    • - ASN.1 规格的语法检查
    • - ASN.1 编译生成头文件和编码/解码信息
    • - 专为 ASN.1 设计的全功能语法编辑器
  • OSS ASN-1EDGE 是一个单独购买的附加组件,是一种开发工具,旨在简化 ASN.1 应用程序的开发、部署和维护。 它为 ASN.1 语法检查以及编码、解码、创建、编辑和查看 ASN.1 消息提供了直观的图形用户界面。 ASN-1EDGE 提供以下主要功能:
    • - 专为 ASN.1 设计的全功能语法编辑器 通过易于使用的图形树导航 ASN.1 语法
    • - 一个代码向导,通过基于 OSS 编译器生成的结构创建场景代码,极大地简化了 ASN.1 开发
    • - 将任何有效值引用编码为任何 ASN.1 标准编码规则
    • - 给定相应的 ASN.1 类型定义的任何有效编码的解码
    • - 为输入 ASN.1 规范中的所有值符号生成测试编码
    • - 在图形可扩展/可折叠树状视图中显示保存在使用任何标准编码规则编码的文件中的任何 PDU 消息
    • - 适用于所有 ASN.1 标准编码规则的值编辑器 - 这是生成测试用例数据、调试或执行协议分析时的宝贵工具
    • - 用于编辑二进制数据的十六进制编辑器
    • - 将值树导出为 HTML、CSV 或 RTF 文件
  • 一个新的编译器选项 -reservedWords 允许您指示编译器修改您为此选项指定的单词; 这将避免与生成的输出中必须存在的保留字发生名称冲突。
  • 新的编译器选项 -ignoreIncompleteItems 指示编译器忽略出现在 ASN.1 模块中的不完整 ASN.1 定义,并直接或间接引用未定义的类型或值。 这使您可以成功地利用具有未解析引用但不会影响您的应用程序的规范。
  • 新的 OSS 特定指令 OSS.SelfCompleteWildcard 可以全局或本地应用于包含“ANY-ELEMENT XER”编码指令的类型。 该指令将关联类型标记为自完整实体,其内容将被视为可以传递给另一个应用程序或函数的完整 XML 文档。
  • TOED XER 和 LED XER/E-XER 编码器已针对 REAL 值的编码进行了优化。 字符 REAL 值的编码(当不使用指数形式时)比以前的版本快 20%。
  • 新的运行时函数 ossIdentifyPDUByEXERName() 在提供相关的根 XML (E-XER) 标记名称时返回 PDU 编号。

ASN.1 Tools for C - version 8.1

  • 新的运行时函数 ossDescribeReturnCode() 提供了有用的调试信息。 它显示与从任何 OSS API 函数返回的数字代码相对应的完整文本描述。
  • LED 运行时现在支持通过 zlib 进行内置压缩/解压缩; 此功能以前仅在 SOED 运行时可用。
  • 新的 API 函数 ossCompress() 和 ossUnCompress() 已添加到 SOED 和 LED 运行时。 此 API 提供了利用用户指定的压缩/解压缩和加密/解密例程的能力。 这是对内置 zlib 压缩功能的补充。
  • LED BER/DER/XER/E-XER 解码器已得到增强,如果将零 PDU 编号传递给 ossDecode() 函数,则通过编码 PDU 的最顶部标签自动确定 PDU 编号。 以前,此功能仅在 SOED 运行时可用。

ASN.1 Tools for C - version 8.0

  • 新的快速应用程序开发 (RAD) 功能无需了解 ASN.1 编译器生成的结构,从而有助于加快应用程序开发。 新的 RAD 功能包括:
    • - 新的、更直观的 ASN.1 类型/字段命名规则,从而生成更用户友好的基于上下文的名称。
    • - ASN.1/C 编译器生成的辅助宏创建 ASN.1 编译器生成的结构的新实例,并将数据填充到这些结构中。 这些帮助宏极大地减少了开发时间,并产生更清洁和更精简的应用程序代码——所有这些都不会降低性能。
    • - 现在,ASN.1编译器为SET OF和SEQUENCE OF类型默认生成了链接列表类型。编译器还生成了List APIs,以便在应用程序中自动操作这些链接列表--例如,提供了向/从列表中添加/删除节点、更新/插入节点到列表中的函数,等等。这些List API的出现使应用程序代码更简洁,开发时间更短。
    • - 新的编译器选项 -restrictedContraintChecking 允许有选择地应用运行时约束检查(对于单独选择的类型。
    • - 新的 API 允许用户设置各种调试级别,以控制在编码或解码时在运行时生成的调试数据量。 ossPrintHex 函数已得到增强,可以显示十六进制数据及其 ASCII 等价物。
    • - 一种新的内存管理模式通过执行以下操作提高了编码器和解码器的性能:
      • - 在编码和解码时减少对系统“malloc”和“free”函数的调用次数
      • - 当编码器和解码器循环运行时,重用分配的动态内存块
      • - 显着加快复杂数据结构的释放速度
    • - 新的 API 函数可用于在 ASN.1 时间类型值和 time_t ANSI C 数据类型值之间轻松转换。
    • - LED 运行时已得到增强,可生成更具描述性(类似于 SOED)的错误消息。
    • - TOED BER 和 PER 运行时间已针对速度进行了优化。 例如,在 Windows 平台上,BER 和 PER 解码器的解码器速度提高了 50-60%。

ASN.1 Tools for C - version 7.0

  • 扩展 XML 编码规则 (E-XER) 支持已添加到 SOED 和精益编码器/解码器 (LED) 库中。 现在,您可以通过 ASN.1 获得 XML 的全部功能。 Extended-XER 编码使 ASN.1 成为一种与 XSD 一样强大的 XML 模式表示法,具有 ASN.1 的简单性。 SOED 是空间优化库。 LED 库是资源匮乏的嵌入式系统的完美解决方案。
  • 添加了一个新的 API 函数,当您需要在使用 ossDecode() 解码之前或之后跳过编码中的“填充”字节时,该函数很有用。
  • 添加了一个新的 API 函数,它为您提供了一个易于使用的有效 ASN.1 表示法视图。 如果您正在调试或编写协议分析器,它特别有用。
  • 添加了一个新的编译器选项,因此您可以控制是否执行宽松检查。 宽松的检查将消除编译器生成的警告消息和一些无关紧要的错误消息。
  • 添加了一个新指令,以便您的 ASN.1 表示法现在可以为选定的 ASN.1 类型自定义生成的 XER 编码布局。 当您的 ASN.1 语法为简单的 ASN.1 类型(例如 OCTET STRING)定义了丰富的语义并且您希望生成更具可读性的 XML 编码来反映这些语义时,此功能很有用。
  • 添加了一个新的编译器选项和一个新的运行时标志,可让您在 BER、PER 或其他 ASN.1 编码规则之外进一步压缩。 此外,您可以自定义压缩算法以适合您的数据,从而使您能够最小化压缩数据的大小。
  • OSS ASN.1/C Tools 的示例目录结构已更改并添加了更多示例。 样本分为四类:插件、高级、基本、标准
  • 要查看我们的 E-XER 白皮书,请单击 E-XER。 有关构建具有 E-XER 支持的 ASN.1 应用程序的示例,请单击使用 E-XER 的示例。
  • 亲自体验 E-XER 的好处。 如果您是现有的 C Tools 客户,只需升级您的工具 - 准备好您的用户名和密码。 否则,请立即下载 Tools for C 的评估副本。

ASN.1 Tools for C - version 6.1

  • XER 支持现已添加到我们的 LEAN 编码器/解码器库 (LED) 中,非常适合资源匮乏的嵌入式系统。
  • 我们的时间优化编码器/解码器库 (TOED) 支持规范 XML 编码规则 (CXER)。
  • 一种新的编译器选项,它将生成 XSD 文件,以便可以使用 XML 编码规则 (XER) 在 XML 软件(例如模式感知 XML 编辑器、模式编译器、浏览器等)中表示二进制 ASN.1 数据。
  • 两个新的 API 函数的引入将使 XML 和二进制编码之间的转换成为一个简单的一步过程。
  • 一个新的 API 函数,允许您以格式良好的方式打印 XER/CXER 编码的内容。
  • 时间优化的编码器/解码器已得到改进,编码/解码速度更快!
  • 对于 PER,具有 SEQUENCE 和 SET 类型的扩展字段的值可以比以前在 TOED 中的编码速度快 650%,解码速度快 550%。 并且大多数 String 类型的值平均提高了,编码速度提高了 210%-250%,平均解码速度提高了 140%-370%。
  • 对于 XER/CXER 编码器,复杂和嵌套数据的编码速度更快。
  • 对于 XER 编码器,所有编码平均快 1.5 倍。

ASN.1 Tools for C - version 6.0

OSS ASN.1 Tools for C 版本 6.0 支持 ASN.1:2002 标准文档中描述的 ASN.1 的 XML 添加。 该工具包括以下功能:

  • ASN.1 编译器支持 XML 值表示法,该表示法提供了一种使用可扩展标记语言 (XML) 表示 ASN.1 值的方法,其中 ASN.1 类型定义作为模式。 XML 值符号可能与其他 ASN.1 组件出现在相同的输入 ASN.1 文件中。
  • 空间优化编码器/解码器已得到增强,允许您使用 XML 编码规则 (XER) 对输入中的任何 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(数据类型定义)。 这允许您在仅识别 XML 的独立于 ASN.1 的工具中查看和编辑 ossEncode() 的 XER 输出。
  • 新功能 ossPrintXPER() 已添加到 PER 编码器分析器发货中。 这个新功能允许您以 XML 格式查看 PER 编码的跟踪和分析数据。 这极大地提高了该产品输出的美学和用户友好品质。

ASN.1 Tools for C - version 5.4

  • ASN.1 编译器现在可以生成多个头文件,一个用于输入中存在的每个 ASN.1 模块。 要启用这种新的头文件生成模式,您可以使用“-splitHeaders”或“-splitForSharing”命令行选项。 这对于大型 ASN.1 规范特别有用,因为它允许用户使用更小更易于处理的头文件。
  • 添加了新的 ASN.1 编译器指令 OSS.HeaderName 和 OSS.Preserve,以便更好地控制新的多头文件生成。
  • ASN.1 编译器现在支持内容约束子类型,它是新 ASN.1:2002 标准的一部分。
  • 通过省略某些不需要的操作并实施更好的处理算法,时间优化的编码器/解码器得到了进一步优化。
  • 时间优化的编码器/解码器现在完全支持 ossCmpValue() 和 ossCpyValue() 函数。 现在,您可以利用这些有用的 PDU 比较和复制功能,同时与这个快速编码器/解码器链接。
  • ASN.1 编译器已得到增强,以支持包含在新 ASN.1 标准中定义的“/*”和“*/”标记之间的多行注释。 注释的内容现在也传输到生成的头文件中。
  • ASN.1 编译器现在支持新的 PATTERN 约束表示法,它是新 ASN.1:2002 标准的一部分。
  • ASN.1 编译器现在接受多字节 UTF-8 格式的文本文件。 这允许您在 ASN.1 标准允许的输入文件中指定多国字符。
  • IAAPI 函数现在可以与精益编码器/解码器一起使用。

ASN.1 Tools for C - version 5.3

  • 时间优化的编码器/解码器现在支持开放类型的自动编码/解码。 您现在可以将开放类型的自动编码/解码的易用性与时间优化的编码器/解码器的速度结合起来。
  • 时间优化的编码器/解码器库现在支持处理信息对象的函数(例如,ossGetInfoObject())。
  • 提高性能的更快速度:某些 ASN.1 语法用户将体验到 33% 以上的性能提升。
  • 现在,您可以通过添加名为 OSS.Truncate 的新编译器指令跳过 SET OF 或 SEQUENCE OF 类型中的额外尾随元素来加快某些大型 PDU 的解码。
  • 现在可以使用更快的算法来检查组件关系约束。
  • 已经实现了用于表示参数化类型和共享类型定义的新优化方案。 最终结果是某些 ASN.1 规范的输出文件更短。
  • -autoEncDec 和 -noConstraints 选项的组合产生了一个优化的和更小的控制表/代码文件。
  • 更多错误检查已添加到解码器中,用于 BIT STRING 和 OBJECT IDENTIFIER 类型的无效 BER 编码。 可以通过 RELAXBER 标志禁用新的错误检查。
  • 解码器中添加了更多错误检查,以检查具有多余八位字节的 INTEGER 类型的无效 PER 编码。 可以通过 RELAXPER 标志禁用新的错误检查。
  • ASN.1 编译器中添加了更多描述性错误消息,以更好地帮助用户查明其语法中的错误。
  • 两个新的 API 函数(ossUinit() 和 ossUterm())现在允许您在类 UNIX 系统上动态加载生成的控制表或编译为动态链接库的代码文件。 以前,这种动态链接仅在 Windows 操作系统上可用。