@Crypt32 32写着:for keyCompromise and caCompromise reasons, it should be 81 02 05 60
-(CDP extension ASN.1 tag问题后面的评论)。
05 60 is: 00000101 01100000
ReasonFlags ::= BIT STRING {
unused (0),
keyCompromise (1),
cACompromise (2),
affiliationChanged (3),
superseded (4),
cessationOfOperation (5),
certificateHold (6),
privilegeWithdrawn (7),
aACompromise (8) }
为什么keyCompromise+cACompromise被编码为05 60?谢谢。
更新:在Windows中,05 60被解码为cessationOfOperation (5)
发布于 2020-05-18 00:10:13
05
是未使用的位计数。它是BIT_STRING的一部分。60
(所有八进制都以十六进制表示)是位字符串值。BIT_STRING是一个长串位。位是按LTR方向索引的。最小传输单元是字节,所以每位字符串长度是8位的倍数。如果实际位字符串的长度除以8与余数,则余数表示未使用的位。未使用比特是上一次1
到字节结束后的零位数。如果右侧的所有8位都未使用,那么零字节就不会被编码。
在ASN.1模块中,位索引将1:1映射到括号中的位数。ASN.1模块定义了需要2字节才能编码的9位:
因为第二个字节中的所有位都是零,所以这个字节没有被编码:
您可以看到位(1)和(2)被设置为1
,这将映射到按位或结合启用的keyCompromise
和cACompromise
标志。其余的位在字节结束前为零,因此不被使用。如果计算它们,我们将得到5个未使用的位,编码后的值将如下所示:
03 02 05 60
其中:
标记identifier
如果你包括aACompromise
位呢?此位需要第二个字节:
其余的位(在第9位之后)都是零,因此它们是未使用的(确切地说是7位)。因此,此设置的编码是:
03 03 07 60 80
其中:
标签identifier
如果我解释得够好的话,我就尽力了。
https://stackoverflow.com/questions/61861449
复制相似问题