我的ASN.1解码器工作正常,直到遇到一个有趣的类型:
0x80
,已被在线工具解码为名称为[0]
的简单类型。
我发现一些消息来源提到这是“不确定的长度”,但是我可以读懂它的绝对长度。这种类型实际上是什么,还有其他类似类型吗?
答案 0 :(得分:2)
作为标签,0x80
(在BER,CER或DER下)表示其类是特定于上下文的标签(与命名类UNIVERSAL
,PRIVATE
和{ {1}}),其编号为APPLICATION
,其编码为原始格式。它是原始的事实意味着它被用作0
标签。如果它是IMPLICIT
(已构造,上下文相关0),则可以是0xA0
标记(包装器)或EXPLICIT
构造值(IMPLICIT
,{{1 }}等。
要知道该值的含义,需要查看ASN.1类型定义。
例如,来自RFC 3280 A.2(SEQUENCE
):
SEQUENCE-OF
如果DEFINITIONS IMPLICIT TAGS
的值为PrivateKeyUsagePeriod ::= SEQUENCE {
notBefore [0] GeneralizedTime OPTIONAL,
notAfter [1] GeneralizedTime OPTIONAL }
,则将其标记为PrivateKeyUsagePeriod
(notBefore
)而不是0x80
([0]
) ;但仍应按照0x18
的编码进行解释。