@@ Crypt32说: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)
05
是未使用的位数。它是BIT_STRING的一部分。 60
(所有八位位组均以十六进制表示)是位字符串值。 BIT_STRING是一长串的位。位在LTR方向上索引。最小传输单位是字节,因此每个位串的长度都是8位的倍数。如果将实际位串的长度除以8除以余数,则余数表示未使用的位。未使用的位是最后一个1
之后到字节末尾的零位数目。如果右侧的所有8位都未使用,则不会对零字节进行编码。
位索引将1:1映射到ASN.1模块中括号中的位号。 ASN.1模块定义了9位,需要2个字节进行编码:
由于第二个字节中的所有位均为零,所以该字节未编码:
您看到位(1)和(2)设置为1
,这映射到启用的keyCompromise
和cACompromise
标志的按位或组合。其余位为零,直到字节末尾,因此不使用。如果我们对它们进行计数,则会得到5个未使用的位,编码后的值将如下所示:
03 02 05 60
其中:
如果包含aACompromise
位怎么办?该位需要第二个字节:
所有其余位(第9位之后)均为零,因此未使用(恰好是7位)。因此,此设置的编码为:
03 03 07 60 80
其中:
IDK,如果我已经解释得足够好,我会尽力而为。