关于ASN.1可扩展SEQUENCE的UPER编码逻辑的疑问求助
ASN.1 UPER编码疑问:首字节第三位及扩展位域长度指示符困惑
我定义了如下ASN.1 SEQUENCE类型及对应取值,生成的UPER十六进制编码为E070180018000A。经多款开源及商用编解码器验证,编码开头逻辑一致,但对照X.691规范我无法理解:
首字节为1110 0000,按我的理解,第一位是扩展附加存在标志,第二位是布尔值a(TRUE),但第三位的1来源不明。根据规范,接下来应为扩展附加位域的短整数长度指示符,因我认为扩展附加数量是3,该位应为0(表示位域长度小于64位),但所有实现中该位均为1。
补充说明:
第二字节为0111 0000,若按仅存在2个扩展附加的说法,我仍困惑于扩展位域的长度指示符应如何确定。
Schema及取值
G ::= SEQUENCE { a BOOLEAN, ..., [[ b BOOLEAN ]], [[ c BOOLEAN ]], ..., d BOOLEAN } value ::= G { a TRUE, b TRUE, c TRUE, d TRUE }
编码(十六进制):
E070180018000A
内容的提问来源于stack exchange,提问作者XAMPPRocky
相关产品推荐
相关产品推荐

