x509 + asn1:subjectAltName 元素是显式的还是隐式的?

x509 + asn1:subjectAltName 元素是显式的还是隐式的?

https://www.rfc-editor.org/rfc/rfc5280

SubjectAltName ::= GeneralNames

GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName

GeneralName ::= CHOICE {
     otherName                 [0]  AnotherName,
     rfc822Name                [1]  IA5String,
     dNSName                   [2]  IA5String,
     x400Address               [3]  ORAddress,
     directoryName             [4]  Name,
     ediPartyName              [5]  EDIPartyName,
     uniformResourceIdentifier [6]  IA5String,
     iPAddress                 [7]  OCTET STRING,
     registeredID              [8]  OBJECT IDENTIFIER }

在实际应用中,我遇到过使用此扩展的 x509 证书。

rfc822Name并且条目用anddNSName标记(上下文特定的位集加上类型)0x810x82

directoryName标记为0xA4(上下文特定位集加上构造位加上类型=EXPLICIT),其中名称定义为......

Name ::= CHOICE { -- only one possibility for now --
      rdnSequence  RDNSequence }

RDNSequence ::= SEQUENCE OF RelativeDistinguishedName

DistinguishedName ::=   RDNSequence

RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue

所以我的问题是 - 如果我正在实现这个 ASN1 结构,我如何知道这些元素中的哪些是 EXPLICIT 以及哪些是 IMPLICIT ?

我的理解是 EXPLICIT 是默认的,并且 RFC 中的规范没有指定任何内容。

相关内容