【问题标题】:How the type length restriction works for ASN.1 definition类型长度限制如何适用于 ASN.1 定义
【发布时间】:2013-08-19 11:01:06
【问题描述】:

关于原始类型的 ASN.1 编码机制的问题。 比如我在test.asn1中有如下类型定义:

NodeID ::= IA5String (SIZE(1..20))

这里的 NodeId 可以使用最大字符串长度 20。 我的问题是:如果分配给 NodeID 的值超过最大长度 20 怎么办? 它可以通过编码功能(使用BER)吗?谢谢!

【问题讨论】:

    标签: asn.1


    【解决方案1】:

    BER 不考虑约束。您当然可以对无效的 NodeID 进行 BER 编码,其中该值违反了大小约束。当然,您的工具可能会阻止您这样做,但从 ASN.1 的角度来看,这是可能的。

    【讨论】:

    • 奇怪,因为我使用的是 BER,但我的系统似乎使用了 OCTET STRING 的约束,但不适用于 IA5STRING 和 INTEGER。 “BER 不考虑约束”的任何参考资料?
    • @maiky 您可以查看 X.690 以获得 BER 编码的完整描述。当 BER 对值进行编码时,编码不会根据约束的存在而变化;这与 PER 形成对比,PER 在某些情况下实际上不可能对某些无效值进行编码。同样,这不会使无效值有效,它只是意味着有人可以创建包含无效值的 BER 数据。
    • @maiky 实际上,他们在 X.690 (2015) 8.1.1.4 中说明了这一点:“本建议书 | 国际标准中指定的编码不受 ASN.1 子类型符号或 ASN 的影响.1 类型可扩展性符号。注——这意味着在确定编码时忽略所有约束符号,忽略 CHOICE、SEQUENCE 和 SET 中的所有可扩展性标记,将扩展视为在类型的扩展根中。
    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多