2016-09-30 87 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

这是一个标记类型。见X.680第31.2节。 [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