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

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

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

ASN.1 Tools for C++ - version 7.0.1.2

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

ASN.1 Tools for C++ - version 7.0.1

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

ASN.1 Tools for C++ - version 7.0.0

  • ASN.1/C++ 工具现在包括 ASN.1 Studio v10.0.0。
  • 新的 -rtoed 编译器选项指示编译器为新的 RTOED 运行时生成代码。 在生成的代码中,所有函数指针现在都是常量,因此 C++ 编译器工具链可以将它们放置在只读内存中。 这可以防止指针被恶意覆盖。
  • 现在,SOED、TOED 和 LED 运行时的错误处理代码中的堆栈粉碎保护得到了改进。
  • 当设置了新的 EXER_ENCODING_OF_DEFAULT_VALUES_AS_COMMENTS 编码标志时,E-XER 编码器现在会将缺少的 DEFAULT 字段编码为包含相应默认值的 XML 注释。 以前,E-XER 编码器会忽略缺失的 DEFAULT 字段。
    启用 TOED 时,新的 OSS_NO_EXER_ENCODING_OF_DEFAULT_VALUES_AS_COMMENTS 宏可用于控制性能或内存占用。 在编译 C++ 代码文件时定义它时,宏会消除为编码这些字段而生成的代码。
  • Binary2XML()XML2Binary()Binary2JSON()JSON2Binary() SOED 和 LEAN 转换 API 方法现在可以报告错误 D0373S 并返回新的 CONVERSION_NOT_POSSIBLE 返回码。 这些方法通过解码然后使用其他编码规则重新编码输入消息来执行转换。 但是,如果某些开放类型或内容受限类型保持未解码形式,则转换将变得不可能。 当无法为可扩展的开放类型解析组件关系约束或将 OSS.NoConstrain 编译器指令应用于开放类型或内容受限类型时,可能会发生这种情况。
    以前,这些方法可能会使编码的某些部分保持其原始形式,从而产生无效的输出消息。
  • OSS ASN.1 运行时现在将检查 TIME 类型的天组件的值是否对应于指定月份的天数。 以前,运行时检查该值是否超过 31。此外,现在拒绝年份组件的负值。

ASN.1 Tools for C++ - version 6.7.0

  • ASN.1/C++ 工具现在包括 ASN.1 Studio v9.0.0。
  • ASN.1 编译器现在支持 X.680 修正案 1,它放宽了 IMPORTS 子句以允许从最新模块版本导入符号,如对象标识符所示。 IMPORTS 子句现在可以包含 WITH SUCCESSORSWITH DESCENDANTS 作为 < span class="code">SelectionOption。
  • 添加了 OSS.NOENCODEOSS.NODECODE 编译器指令。 它们通过排除指令操作数的编码或解码例程来减少生成的 TOED 代码。 在某些情况下,使用新的 -compactNoDecode 编译器选项可以进一步减少生成的代码。
  • 当 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/C++ 编译器现在保留相同的全局定义名称和值,这些名称和值是为在内部子类型约束中应用内容约束后创建的人工类型中的类似字段生成的。 以前,定义名称总是被破坏。 要生成错位名称,您可以使用 v6.6DefineNamesForTypesFromInnerWithContentConstraints 兼容标志。
  • 添加了对使用预分配缓冲区的部分解码的支持。
  • 已为以下内容创建了新示例:
    • 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 S1AP、X2AP、M2AP、M3AP、RRC、LCSAP、LPPa、SBcAP 和 XwAP 协议的样本已更新至 3GPP 第 15 版。

ASN.1 Tools for C++ - version 6.6.0

  • ASN.1/C++ 工具现在包括 ASN.1 Studio v8.3.0。
  • C++ 的 OSS ASN.1 工具现在支持 ITU-T 建议 X.691 (08/2015) 中指定的规范打包编码规则(对齐和未对齐)| ISO/IEC 8825-2:2015。
  • 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 模式。
    • TS 29.171 (LCSAP) V13.3.0 (2017-06)
    • TS 29.171 (LCSAP) V14.1.0 (2017-06)
    • TS 36.455 (LPPA) V14.2.0 (2017-06)
    • TS 36.443 (M2AP) V13.3.0 (2016-04)
    • TS 36.443 (M2AP) V14.0.1 (2017-09)
    • 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.6.1 (2017-07)
    • TS 36.331 (RRC NB IOT) V14.4.0 (2017-09)
    • TS 36.331 (RRC) V12.15.0 (2017-09)
    • TS 36.331 (RRC) V13.6.1 (2017-17)
    • 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.3.0 (2016-07)
    • TS 36.413 (S1AP) V12.7.0 (2016-03)
    • TS 36.413 (S1AP) V13.6.0 (2017-06)
    • TS 36.413 (S1AP) V14.3.0 (2017-06)
    • TS 29.169 (SBCAP) V14.0.0 (2017-03)
    • TS 36.423 (X2AP NB IOT) V14.3.0 (2017-07)
    • TS 36.423 (X2AP) V12.9.0 (2016-07)
    • TS 36.423 (X2AP) V13.7.0 (2017-06)
    • TS 36.423 (X2AP) V14.3.0 (2017-07)
    • TS 36.463 (XWAP) V14.2.0 (2017-06)

  • ASN.1 Tools for C++ - version 6.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 占地面积。 通过在编译生成的 .cpp 时定义 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 6.4.0

    • ASN.1/C++ 工具现在包括 ASN.1 Studio v8.1.0。
    • ASN.1/C++ 编译器和运行时现在支持 TIME 类型分数的 64 位精度(19-20 个十进制数字)。 C++ API 唯一可见的变化是 OssTimePoint 和 OssDuration 类现在使用 64 位整数来表示小数值。
    • ASN.1/C++ SOED/LEAN/TOED PER 编码器-解码器实现现在符合最近的 X.691 勘误表 (2015):包含在 BIT STRING 中的编码对于 PER ALIGNED 至少应该是一个八位字节,对于 PER 应该是 1 位 未对齐。
    • 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 6.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 方法,PDU::binary2JSON() 和 PDU::JSON2Binary(),以将 ASN.1 二进制形式(例如,BER、PER、DER、OER 等)编码的数据转换为 JSON 文本编码 形式(JSON/ER),反之亦然。

    ASN.1 Tools for C++ - version 6.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 6.2.0

    • 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 Tools for C++ - version 6.1.0

    • ASN.1/C++ 工具现在包括 ASN.1 Studio v7.1
    • ASN.1/C++ 编译器和 ASN.1/C++ SOED/LED/TOED 运行时库现在支持八位字节编码规则 (OER) 和规范八位字节编码规则 (COER),如“Rec. 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 更倾向于编码/解码速度而不是编码的紧凑性。
    • ASN.1 C++ 编译器现在可以为用户提供的 asn1 规范生成示例代码。 示例代码是一个应用程序,它使用运行时的 C++ 接口来编码/解码符合规范的生成值。
    • 添加了示例,说明如何使用基于 3GPP 第 11 版的 SBc-AP、M2AP 和 M3AP LTE 协议。
    • 添加了一个示例,说明 DSRC 消息集标准 SAE J2735_200911 的使用。
    • 默认错误处理机制现在是“完全异常模式”。 因此,应修改使用“无异常模式”默认错误处理为 C++ 运行时 v6.0 和更早版本编写的遗留代码以捕获新 ASN1RuntimeException 类的异常或恢复为“无异常模式”。 要恢复到传统的“无异常模式”,请在实例化或调用任何 OSS ASN1 对象或函数之前添加以下行:
      asn1_set_error_handling(asn1_legacy_error_handler);

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


    ASN.1 Tools for C++ - version 6.0.0

    • ASN.1/C++ 工具现在包括 ASN.1 Studio v7.0
    • 根据 NTCIP 1102:2004 八位组编码规则 (OER) 基本协议文档的规定,对八位组编码规则 (OER) 的支持已在 ASN.1/C++ 编译器、TOED 运行时库和 ASN.1 Studio 中实现。 OER 消息的编码/解码速度通常比 BER 和 PER 消息快得多,同时仅比 PER 消息更紧凑。 下一版本将提供对 ASN.1/C++ SOED 和 ASN.1/C++ LED 中的 OER 的支持。
    • 添加了在未设置 AUTOMATIC_ENCDEC 运行时标志时解码具有表(组件关系)约束的开放类型的能力。
    • 提供了几种新方法:
      • 支持解码到预分配的内存缓冲区
        • - 生成的文件现在包含以下新方法:
          void set_const_data(const <Type> & d);
          const <Type> *get_const_data() const;
          and
          void set_const_<Type> (const <Type> &);
          const <Type> *get_const_<Type>() const;
        • - 以下方法已添加到 PDU 类中:
          virtual int decode(OssControl &ctl, EncodedData &input,
          EncodedBuffer &output);
        • - 在 ASN1Handle 类中添加了以下方法:
          int is_constant() const;
        • - OssOpen 类中添加了两个方法,取代了之前的 get_decoded() 方法:
          int get_decoded_data(PDU &);
          int get_decoded_data(PDU &) const.
      • reset() 方法已添加到 EncodedBuffer 和 PEREncodedBuffer 类中。 当您想为多个编码/解码操作的输出重用同一个缓冲区时,使用此方法将缓冲区重置为其初始状态。
      • ASN1Handle 类中添加了两个方法:
        • - 以下方法以 ASN.1 值表示法格式将 ASN1Handle 中包含的数据打印到指定的预分配或新分配的内存缓冲区:
          char *toString(OssControl &ctl, char *buffer = NULL, unsigned long length = 0) const;
        • - 以下方法返回第一个函数打印数据所需的内存缓冲区大小:
          unsigned long toStringLength(OssControl & ctl) const.
      • EncodedBuffer 类中添加了两个方法:
        • - 以下方法以十六进制格式漂亮打印 EncodedBuffer 中包含的数据
          int print_hex(OssControl & ctl) const;
        • - 以下方法以 XML 格式打印 EncodedBuffer 中包含的数据:
          int print_xml(OssControl & ctl, int pretty-print) const.
      • 现在提供的示例集包括说明使用基于 SAE J2735 智能交通标准的协议以及 3GPP 第 10 版 RRC、S1AP 和 X2AP LTE 协议的示例。

    ASN.1 Tools for C++ - version 5.0.0

    • ASN.1/C++ 工具现在包括 ASN.1 Studio,这是一个强大的新 IDE,它包含的功能使您只需单击几下鼠标即可编译 ASN.1 规范、显示、创建、修改或编码消息等等 !
    • TOED(时间优化编码器/解码器)现在是默认的运行时库,为您提供“开箱即用”的速度优化代码。 我们还没有淘汰 SOED(空间优化编码器/解码器)。 我们刚刚迈出了更快的步伐,以响应对速度的日益关注。
    • 添加了对来自 ASN.1:2008 标准的新内置 ASN.1 OID-IRI 和 RELATIVE-OID-IRI 类型的支持。
    • 在 Windows 上,ASN.1/C++ 工具现在安装在 Program Files\OSS Nokalva\asn1cpp\ 文件夹下(而在 5.0 版本之前,它们安装在 程序文件\OSS\asn1cpp\)。
    • Windows 平台的示例现在安装在环境变量 %ALLUSERSPROFILE% 指向的文件夹下。 默认情况下,在 Windows 7 和 VISTA 上,示例安装在 C:\ProgramData\OSS Nokalva\asn1cpp\win32\\samples 文件夹下,并且 在 Windows XP 上,示例安装在 C:\Documents and Settings\All Users\Application Data\OSS Nokalva\asn1cpp\win32\<version-number>\samples 下 文件夹。

    ASN.1 Tools for C++ - version 4.3.1

    • ASN.1/C++ 工具现在支持时间优化编码器/解码器的内容约束。
    • ASN.1/C++ 编译器中添加了新的值共享算法,以非常快速地编译具有大值符号的 ASN.1 规范。 因此,生成数据的大小会减少,因为现在共享更多值。
    • ASN.1/C++ 编译器警告消息 A1140W 已得到增强,可以在可能的情况下打印有关未知编码指令的更多详细信息。
    • 如果 OssControl 对象未正确初始化,所有将 OssControl 对象作为参数的 ASN.1/C++ 运行时函数现在都会返回一个新引入的错误 OSS_CONTROL_NOT_INITIALIZED。 此外,OssControl 类中添加了一个新的公共方法 valid(),用于确定 OssControl 对象是否已使用有效的控制表正确初始化。 如果存在 ASN.1/C++ 编译器许可限制,则 OssControl 对象将无法正确初始化。

    ASN.1 Tools for C++ - version 4.3.0

    • 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 宏。
    • ASN.1/C++ 编译器现在支持 -inline 命令行选项。 此选项指示编译器在头文件中内联生成生成类的方法定义。
    • ASN.1/C++ 编译器现在支持 -encodeOnly/-decodeOnly 命令行选项。 这些选项指定只为 TOED 编码器/解码器生成解码或编码例程。 -decodeOnly 选项仅指定解码器例程的生成,而 -encodeOnly 选项仅指定编码器例程的生成。
    • 如果使用 ossSetFlags() 或 ossSetDecodingFlags() 函数设置了新的 OSS_SKIP_UNKNOWN_CONTENT 运行时标志,E-XER 解码器现在将丢弃任何未知的 XML 标签或输入传递的属性。 默认情况下,当未设置标志时,任何未知元素或属性都会导致解码器发出错误。
    • SOED PER 编码器/解码器已得到增强,以支持新时间类型的跟踪。

    ASN.1 Tools for C++ - version 4.2.0

    • ASN.1 编译器现在支持组合 -exer 和 -code 选项,并使用时间优化 (TOED) 运行时生成用于编码和解码扩展 XER (E-XER) 数据的代码文件。
    • TOED 运行时现在支持扩展 XER 编码规则。 您必须使用版本 4.2 或更高版本的 ASN.1 编译器并在编译器命令行上指定 -exer 和 -code 以生成代码文件以将 E-XER 与 TOED 一起使用。
    • 如果指定了 -relaxedMode 选项,ASN.1 编译器已更改为自动选择 -ignoreIncompleteItems 选项。
    • 一个新的运行时函数 asn1_describe_error_code() 提供了有用的调试信息。 它显示与任何运行时 OSS/C++ API 函数返回的数字代码相对应的完整文本描述。 它也适用于 ASN.1/C++ 构造函数设置的错误代码。

    ASN.1 Tools for C++ - version 4.1.0

    • OSS ASN.1 Tools for C++ 4.1 版支持 ISO 8601 中指定的所有时间类型(TIME、DATE、TIME-OF-DAY、DATE-TIME、DURATION)。 这些日期和时间的表示已标准化,以避免在跨国界通信时产生误解。 一个新的类 OssTime 支持这些新类型,而新的实用程序类 OssTimePoint、OssDuration 和 OssTimeInterval 允许您轻松地将时间值拆分为它们的组件。 空间优化编码器/解码器 (SOED) 中提供了对时间类型的支持。
    • 用于压缩支持的新类 OssCompressor 和 OssZlibCompressor 允许您使用现成的 zlib 压缩算法或使用您自己的自定义压缩方法来压缩数据。 通过进一步压缩您已经高效的 ASN.1 二进制和文本编码来改进存储和传输。
    • 现在,OSS ASN.1 Tools for C++ 的 TOED(时间优化编码器/解码器)和 LED(精益编码器解码器)运行时中的 XER 和 E-XER 支持 -relaySafe 选项。 当指定 -relaySafe 时,解码器不会丢弃遇到的无法识别的扩展添加,而是保留它们以供以后重新编码。
    • 新的 OSS 特定指令 OSS.ExtensibleUseType 可以本地或全局应用于在 E-XER 中编码的选定可扩展 CHOICE 类型。 新指令指示 E-XER 解码器将可扩展 CHOICE 类型的未知替代项作为未知扩展处理,以便在 -relaySafe 生效时保留未知类型的完整 XML 或二进制编码。
    • 新的 OSS 特定指令 OSS.ExerNumericBoolean 可以本地或全局应用于 BOOLEAN 类型,导致 E-XER 编码器生成数字 BOOLEAN 值(0 和 1)而不是文本值(true/false 或它们的替换设置为使用 TEXT 编码指令)。

    ASN.1 Tools for C++ - version 4.0.2

    • 新的编译器选项 -ignoreIncompleteItems 指示编译器忽略出现在 ASN.1 模块中的不完整 ASN.1 定义,并直接或间接引用未定义的类型或值。 这使您可以成功地利用具有未解决引用但不会影响您的应用程序的规范。
    • 新的 OSS 特定指令 OSS.SelfCompleteWildcard 可以全局或本地应用于包含“ANY-ELEMENT XER”编码指令的类型。 该指令将关联类型标记为自完整实体,其内容将被视为可以传递给另一个应用程序或函数的完整 XML 文档。 LED 和 SOED 运行时支持此新指令,即将支持 TOED。
    • 当存在 -relaySafe 编译器选项时,编译器现在为每个可扩展的 SEQUENCE、SET 或 CHOICE 类型生成方法,这些方法允许在编码中操作未知的扩展信息。
    • 新方法 ossSetXMLEncodingRules() / getXMLEncodingRules() 允许您指定用于执行从 XML 到二进制和 反之亦然。
    • 新的 API 方法 enableSkipPadBytes() / disableSkipPadBytes() 允许您在解码时跳过“填充”字节。
    • 新方法 getCompatibilityFlags() / setCompatibilityFlags() 允许您指示编码器和解码器通过各种标志模拟特定的向后兼容性行为。
    • TOED XER 和 LED XER/E-XER 编码器已针对 REAL 值的编码进行了优化。 字符 REAL 值的编码(当不使用指数形式时)比以前的版本快 20%。

    ASN.1 Tools for C++ - version 4.0.1

    • 速度提高 25% - TOED PER/UPER 编码,现在以下 ASN.1 类型的速度提高了 25%:
      • - BIT STRING
      • - OCTET STRING
      • - ENUMERATED
      • - INTEGER(取值范围大于 64K)
    • ASN.1/C++ 运行时现在包括对“内存池”的支持,它允许用户:
      • - 在编码和解码时减少对系统“malloc”和“free”函数的调用次数,
      • - 当编码器和解码器循环运行时,重用分配的动态内存块,
      • - 显着加快复杂表示对象的释放速度。
    • 在一些 malloc/free 使用量相对较大的平台上,使用“内存池”可以显着加快编码器/解码器、复制、释放和其他运行时操作。

    ASN.1 Tools for C++ - version 4.0

    • OSS ASN.1 Tools for C++ 现在支持 E-XER(扩展 XML 编码规则)。 现在,您可以通过 ASN.1 获得 XML 的全部功能。
    • ASN.1/C++ 现在支持 BER、CER、DER、PER、UPER、XER 和 CXER 编码规则的时间优化编码器解码器 (TOED) 库。 TOED 运行时强调最小的 CPU 利用率(它是我们运行时库中最快的)。
    • 一个新的编译器选项 -namespace 提供命名空间支持。 所有编译器生成的类都放置在 C++ 命名空间中。 这避免了编译器生成的类名与应用程序中使用的其他类名的潜在冲突。
    • 一个新的编译器选项 -restrictedContraintChecking 允许有选择地应用运行时约束检查(对于单独选择的类型)。
    • ASN.1/C++ 编译器现在支持 SOED(空间优化编码器解码器)和 LED(精益编码器解码器)运行时中的内容约束子类型。
    • 添加了一个新的编译器选项 -relaxMode,以便您可以控制是否执行放松检查。 宽松的检查将消除编译器生成的警告消息和一些无关紧要的错误消息。 此外,还添加了运行时标志 STRICT_ENCODING_DECORDING_RULES 以启用对编码的严格检查。
    • 新的 API 允许用户设置各种调试级别,以控制在编码或解码时在运行时生成的调试数据量。 OSSControl 类的 PrintHex() 方法已得到增强,可以显示十六进制数据及其 ASCII 等价物。
    • LED 运行时已得到增强,可生成更具描述性(类似于 SOED)的错误消息。
    • 一个新的实用程序 API,ASN.1/C++ XML 时间/日期 API,允许在符合 XSD 内置类型的数字格式和文本格式之间轻松转换日期/时间类型。

    ASN.1 Tools for C++ - version 3.1.0

    • C++ 版本 3.1 的 OSS ASN.1 工具现在为 XML 提供了更多支持。 OSS ASN.1 Tools for C++ runtime API 现在有了新方法:
      • - printXML() 允许将 XML 编码的缓冲区(使用 XER 或 CXER 编码)打印到控制台。 该函数能够重新格式化输入 XML 缓冲区以打印树状文档(其中一种有用的方法是显示在 XML 标记之间没有空格的 CXER 编码)。
      • - binary2XML() 和 XML2Binary() 允许将任何 ASN.1 二进制编码(BER、PER、UPER、CER、DER)转换为 XML(Basic-XER),反之亦然。
    • Lean 编码器/解码器 (LED) 现在支持 XER。 因此,现在当您需要 XER 时,您可以选择使用 LED 运行时或 SOED 运行时。

    ASN.1 Tools for C++ - version 3.0.0

    C++ 版本 3.0 的 OSS ASN.1 工具支持 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 生成具有您自己所需文件名的单独样式表。
    • 添加了一个名为“-dtd”的新 ASN.1 编译器命令行选项,用于为每个 PDU 生成 XML DTD(数据类型定义)。 这允许您在仅识别 XML 的 ASN.1 独立工具中查看和编辑 pdu.encode() 的 XER 输出。
    • 新的编译器指令 OSS.DTD 允许您指示 ASN.1 编译器为任何特定 PDU 生成具有您自己所需文件名的 DTD。

    要了解更多关于 C++ 的 OSS ASN.1 工具,请联系我们的销售部门 sales@osschina.cn