2016-09-30 2 views
0

Я изучающие RFC 5280 (https://tools.ietf.org/html/rfc5280) и заметили странное метки ([0], [1], [2], [3]) в TBSCertificate определении структурыЧто делает [0], [1], ... в описании структуры в X.509 RFC 5280?

TBSCertificate ::= SEQUENCE { 
    version   [0] EXPLICIT Version DEFAULT v1, 
    serialNumber   CertificateSerialNumber, 
    signature   AlgorithmIdentifier, 
    issuer    Name, 
    validity    Validity, 
    subject    Name, 
    subjectPublicKeyInfo SubjectPublicKeyInfo, 
    issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, 
         -- If present, version MUST be v2 or v3 
    subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, 
         -- If present, version MUST be v2 or v3 
    extensions  [3] EXPLICIT Extensions OPTIONAL 
         -- If present, version MUST be v3 
    } 

В ASN.1 него коды используя специальные байты 0xA0, 0xA1, 0xA2, 0xA3. Невозможно найти объяснение в отношении этих байтов. Может ли кто-нибудь объяснить мне?

ответ

4

Это маркированный тип. См. Раздел 31.2 раздела X.680. [0] означает, что значение кодируется с использованием контекстно-зависимого класса и номера 0. В DER (X.690 разделы 8.1.2 и 8.14) построенный контекстно-специфический класс с номером 0 кодируется как 0xA0.

+0

Как узнать, какой тип он будет представлять в контексте этого контекста? – academica

+0

Я не понимаю ваш вопрос в комментарии выше. Возможно, вы не понимаете, что означает «контекстно-зависимая». В ASN.1 существует четыре класса тегов: универсальный, прикладной, контекстно-зависимый и закрытый. Если тег был написан [ПРИМЕНЕНИЕ 1], это будет тег приложения. Как написано, это тег, специфичный для контекста. Контекстно-зависимая здесь не означает, что в разных контекстах будет другой тег. Этот вопрос может помочь: http://stackoverflow.com/questions/15035349/how-does-0-and-3-work-in-asn1 – Kevin