首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASN.1 BitString编码CRLDistributionPoints.ReasonFlags

ASN.1 BitString编码CRLDistributionPoints.ReasonFlags
EN

Stack Overflow用户
提问于 2020-05-18 02:21:39
回答 1查看 610关注 0票数 0

@Crypt32 32写着:for keyCompromise and caCompromise reasons, it should be 81 02 05 60 -(CDP extension ASN.1 tag问题后面的评论)。

05 60 is: 00000101 01100000

代码语言:javascript
复制
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)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-18 08:10:13

05是未使用的位计数。它是BIT_STRING的一部分。60 (所有八进制都以十六进制表示)是位字符串值。BIT_STRING是一个长串位。位是按LTR方向索引的。最小传输单元是字节,所以每位字符串长度是8位的倍数。如果实际位字符串的长度除以8与余数,则余数表示未使用的位。未使用比特是上一次1到字节结束后的零位数。如果右侧的所有8位都未使用,那么零字节就不会被编码。

在ASN.1模块中,位索引将1:1映射到括号中的位数。ASN.1模块定义了需要2字节才能编码的9位:

因为第二个字节中的所有位都是零,所以这个字节没有被编码:

您可以看到位(1)和(2)被设置为1,这将映射到按位或结合启用的keyCompromisecACompromise标志。其余的位在字节结束前为零,因此不被使用。如果计算它们,我们将得到5个未使用的位,编码后的值将如下所示:

代码语言:javascript
复制
03 02 05 60

其中:

标记identifier

  • 02 -标记长度

  • 05未使用的位数编号

  • 60编码的值

如果你包括aACompromise位呢?此位需要第二个字节:

其余的位(在第9位之后)都是零,因此它们是未使用的(确切地说是7位)。因此,此设置的编码是:

代码语言:javascript
复制
03 03 07 60 80

其中:

标签identifier

  • 03 -标签长度

  • 07-未使用比特计数

  • 60 80 -编码值

如果我解释得够好的话,我就尽力了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61861449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档