【问题标题】:ASN.1 AUTOMATIC TAGS and EXTENSIBILITY IMPLIED AttributesASN.1 自动标记和可扩展性隐含属性
【发布时间】:2015-07-15 18:26:48
【问题描述】:

我收到了一份包含两个编码/解码属性的 ASN.1 文档;

  • 自动标签
    • 我的理解;标签是使用编码规则自动定义的,除非定义中存在标签符号
  • 隐含的可扩展性
    • 我的理解;类型可能具有未在 ASN.1 文档中定义的元素。如果找到,编码器应该默默地忽略。 此外,我的解码器也应该准备好处理带有未指定标签的值。

Q1:我上面的理解正确吗?

Q2: w.r.t 自动标签;自动定义似乎不可行(显然不是......)但我的理解是someEncoder 将因此分配SomeType.class 与标签(例如)0xBB; someDecoder 怎么知道如何将0xBB 解码回SomeType

Q2: w.r.t 未指定的标签;再一次,我不确定如何将未指定的标签传递回其他东西。

【问题讨论】:

    标签: asn.1


    【解决方案1】:

    第一季度。如果存在 AUTOMATIC TAGS 子句,则 SEQUENCESET 类型以及 CHOICE 类型的所有替代品 模块中定义的自动从 0 开始依次标记。如果构造类型包含至少一个手动标记 (即如果它包含方括号),自动标记模式是 关闭此类型。

    第二季度。编写编码器和解码器代码时使用相同的自动标记算法。

    第三季度。您的解码器在与具有较新版本的 ASN.1 架构(包括其他组件)的对等方通信时可能会遇到无法识别的标签。在这种情况下(如果您不打算重新传输接收到的数据)您应该忽略无法识别的标签。

    【讨论】:

    • 谢谢!这为我解决了问题;最后一件事,我认为 BER/DER 对 AUTOMATIC TAGS 和 EXTENSIBILITY 都很好(我不知道为什么会这样)——我不热衷于编写 PER 编码器/解码器。
    • 是的,BER/DER 可以与自动标签和可扩展性一起正常工作。我了解您想手动编写编码器和解码器。如果您需要从尺寸和性能角度来看最佳的东西,则可能需要这样做。但在大多数情况下,您应该使用 ASN.1 编译器为编码器和解码器以及数据结构生成代码。
    • 不幸的是,我找不到任何可以免费用于 Java 的东西,它也支持我收到的 ASN1 规范。我从 Apache Harmony 中找到了大约 65% 的完整实现,并且我在基本类型中添加了很多内容。我已经设法使用编译器从规范中提取模型(即特定于应用程序的东西),所以我想我自己可以做到这一点。著名的遗言。
    猜你喜欢
    • 2020-09-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多