是否允许在ASN规则中, 一个ASN结构,具有指向另一个ASN结构的Octet字符串。 我在这种情况下无法解码, 但是一个ASN结构有Octet字符串指向本地结构(NON_ASN)。
答案 0 :(得分:1)
是的,这完全有效。
通常有两种方式:按约束,按惯例。执行此操作的“正确”方式是约束,但通常按惯例完成。
ASN.1调用这些内容约束并使用CONTAINING
关键字来表示它们,如下所示:
S ::= SEQUENCE {
name UTF8String,
age INTEGER
}
O ::= OCTET STRING (CONTAINING S)
有关详细信息,请参阅ITU-T X.682,§11。
如此编码的八位位组(或位)字符串使用适合编码规则的包装器进行编码。例如,假设我们想使用BER编码八位字节串中的s S ::= { name "Calvin", age 5 }
:
SEQUENCE
在TLV中编码,如下所示:
0x30 0x0b (UNIV 15, CONSTRUCTED, length 11)
0x0c 0x06 0x43 0x61 0x6c 0x76 0x69 0x63 (UNIV 13, length 6, "Calvin")
0x02 0x01 0x05 (UNIV 2, length 1, 5)
此序列将被包装到八位字符串的附加TLV中:
0x04 0x0d (UNIV 4, length 13)
[TLV for S]
无论是否使用内容约束,编码都是相同的。内容约束标准化协议,并允许工具正确验证和解析消息。