无论在ASN规则中是否允许,一个ASN结构具有指向另一个ASN结构的八位字符串。我无法在这个上下文中解码,但是有一个带有指向本地结构(NON_ASN)的八进制字符串的ASN结构。
发布于 2015-06-18 19:17:57
是的,这是完全正确的。
它通常有两种方式:通过约束和约定。这样做的“正确”方式是通过约束,但通常是通过惯例来完成的。
ASN.1调用这些内容约束,并使用CONTAINING关键字表示它们,如下所示:
S ::= SEQUENCE {
name UTF8String,
age INTEGER
}
O ::= OCTET STRING (CONTAINING S)详见国际电联-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]无论是否使用内容约束,编码都是相同的。contents约束使协议标准化,并允许工具正确地验证和解析消息。
https://stackoverflow.com/questions/30912961
复制相似问题