Назад | Перейти на главную страницу

x509 + asn1: явные или неявные элементы subjectAltName?

Из https://tools.ietf.org/html/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 и dNSName записи помечены 0x81 и 0x82 (контекстно-зависимый набор битов плюс тип)

но 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 используется по умолчанию, а спецификация в RFC ничего не указывает.