首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CDP扩展ASN.1标签

CDP扩展ASN.1标签
EN

Stack Overflow用户
提问于 2020-05-15 10:44:31
回答 1查看 206关注 0票数 0

我试图理解x509证书中CDP扩展中使用的ASN.1格式。

在从google读取证书时,我看到以下代码:

30 26 30 24 a0 22 a0 20 86 1e (url start)

根据http://rcardon.free.fr/websign/download/api-x509-ext/be/cardon/asn1/x509/extensions/CRLDistributionPoints.htmlhttp://javadoc.iaik.tugraz.at/iaik_jce/current/iaik/asn1/structures/GeneralNames.html的说法,GeneralNames应该是GeneralName的序列。为什么有一个86直接没有另一个30?

非常感谢。

更新:而且,我知道语法上可能不正确,如果只有一个带有一个DistributionPointName-Url(*1)的DistributionPoint (*1),DistributionPoint是所有0(*3)和2 cRLIssuer(*4和*5)的原因,那么数据包应该是:

代码语言:javascript
复制
  30 len --DistributionPoint
    a0 len --DistributionPointName for distributionPoint
      a0 len --GeneralNames for fullName
        86 len --IA5String for uniformResourceIdentifier
        (*1) data here
      a1 len --RelativeDistinguishedName for nameRelativeToCRLIssuer  (edited)
        (*2) data here
    81 03 --Reason
      07 00 00 --BITSTRING of Reason (*3)
    a2 len --GeneralNames for cRLIssuer
      82 len --IA5String for dNSName
        (*4) data here
      82 len --IA5String for dNSName
        (*5) data here

我说的对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-15 11:36:44

你试过分析提供的八位数吗?您要求缺少序列,但不要要求在a0标记周围添加额外的86标记。如果你愿意的话,你可以弄清楚到底是怎么回事。

CDP扩展值的二进制编码看起来没问题。0x86是uniformResourceLocator字段的通用名称选择。如果将二进制字符串拆分为几个部分,您将得到以下映射(假定隐式标记模式,如RFC 5280所示):

映射到CRLDistributionPoints

  • 30 24 --映射到DistributionPoint

  • a0 22 --映射到DistributionPointName (它是可选字段,因此使用隐式标记)

  • a0 20 -映射到GeneralNames (这是一个选择值,因此使用隐式标记)

  • 86 1e -映射到IA5String类型的uniformResourceIdentifier字段。它是选择值,它使用隐式标记.

似乎你和标签混淆了。GeneralName类型确实是SEQUENCE,但是在给定的上下文中它是在选择中使用的,因此它被隐式标记: SEQUENCE标记被替换为相应的CONTEXT_SPECIFIC标记。

更新:

当ASN模块包含选择、可选、默认关键字时,它们使用的是具有基本标记号0x80的CONTEXT_SPECIFIC类。选择器在方括号中指定。在这些情况下,您可以这样做(当模块默认为隐式标记时,就像我们的例子中那样):CONTEXT_SPECIFIC类(0x80) +从原始类型+选择器号(0x32)构造的位(0x32)放在方括号中。

例如,带有选择器0的可选序列将导致0x80 + 0x20 +0= 0xa0。选择6 IA5String将导致0x80 + 0x0 (构造位为0) + 0x6 = 0x86。

当模块默认为显式标记或有显式keywor时,原始类型不变(序列保持序列),而是将其编码为构造的CONTEXT_SPECIFIC的嵌套类型。

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

https://stackoverflow.com/questions/61817332

复制
相关文章

相似问题

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