我正在解码ASN.1格式的X.509证书。我已经成功解码它,遍历了它的结构,但有一件事我不理解。
有些情况下,我会得到一个八位字节字符串,并且我正在使用的网站(http://lapo.it/asn1js/)显示这些八位字节字符串实际上包含更多的ASN.1树形结构。这个网站会用(encapsulates)来注释这样的八位字节字符串。
我的问题是: 在解析过程中如何知道这个八位字节字符串是否真正地封装了其他内容? 我只需要尝试解析它,看看是否得到了一个标签和有效的长度吗?如果没有,那么它只是纯的字节数据吗?如果是,那么它就是一个有效的子树?
还是说应该将其输出为字节,并且只有在消费者知道它是来自特定密钥的编码数据时才尝试解析它?
以网站上已加载的示例为例,点击"解码"按钮。例如,我指的是偏移量为332的八位字节字符串,它封装了一个位字符串。
有些情况下,我会得到一个八位字节字符串,并且我正在使用的网站(http://lapo.it/asn1js/)显示这些八位字节字符串实际上包含更多的ASN.1树形结构。这个网站会用(encapsulates)来注释这样的八位字节字符串。
我的问题是: 在解析过程中如何知道这个八位字节字符串是否真正地封装了其他内容? 我只需要尝试解析它,看看是否得到了一个标签和有效的长度吗?如果没有,那么它只是纯的字节数据吗?如果是,那么它就是一个有效的子树?
还是说应该将其输出为字节,并且只有在消费者知道它是来自特定密钥的编码数据时才尝试解析它?
以网站上已加载的示例为例,点击"解码"按钮。例如,我指的是偏移量为332的八位字节字符串,它封装了一个位字符串。
subjectAltName
2.5.29.17,在该证书中不存在,但https://google.com/有一个很好的测试解析的例子。 - mr.spuratic