メインコンテンツまでスキップ

Appendix A. ASN.1 Module

This section preserves the RFC text for EST CSR Attributes, including CSR attribute OIDs and values, ASN.1 syntax, id-ExtensionReq, CertificationRequestInfoTemplate, Base64 examples, ASN.1 dump output, IANA registrations, and security considerations.

Original RFC Text​

Appendix A.  ASN.1 Module

   This appendix provides an ASN.1 module [X.680] for the Certification
   Request Information Template attribute and its sub-template
   structures.  It follows the conventions established in [RFC5911],
   [RFC5912], and [RFC6268].

   CRITemplateModule
     { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
       pkcs-9(9) smime(16) modules(0) id-mod-critemplate(82) }

   DEFINITIONS IMPLICIT TAGS ::=

   BEGIN

   IMPORTS -- from [RFC5912]

   SupportedAttributes
    FROM PKIX1Explicit-2009
     { iso(1) identified-organization(3) dod(6) internet(1) security(5)
       mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51)}

   ATTRIBUTE, EXTENSION
    FROM PKIX-CommonTypes-2009
     { iso(1) identified-organization(3) dod(6) internet(1) security(5)
       mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57) }

   PUBLIC-KEY, AlgorithmIdentifier{}
    FROM AlgorithmInformation-2009
     { iso(1) identified-organization(3) dod(6) internet(1) security(5)
       mechanisms(5) pkix(7) id-mod(0)
       id-mod-algorithmInformation-02(58)}

   CertExtensions
    FROM PKIX1Implicit-2009
     { iso(1) identified-organization(3) dod(6) internet(1) security(5)
       mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59)}

   Attributes{}, CRIAttributes, PKInfoAlgorithms
    FROM PKCS-10
     { iso(1) identified-organization(3) dod(6) internet(1)
       security(5) mechanisms(5) pkix(7)
       id-mod(0) id-mod-pkcs10-2009(69) }
   ;

   aa-certificationRequestInfoTemplate ATTRIBUTE ::=
     { TYPE CertificationRequestInfoTemplate IDENTIFIED BY
       id-aa-certificationRequestInfoTemplate }

   id-aa-certificationRequestInfoTemplate OBJECT IDENTIFIER ::=
     { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
       smime(16) aa(2) id-aa-certificationRequestInfoTemplate(61) }

   --  like CertificationRequestInfo but OPTIONAL subject, subjectPKInfo
   CertificationRequestInfoTemplate ::= SEQUENCE {
       version       INTEGER { v1(0) } (v1, ... ),
       subject       NameTemplate OPTIONAL,
       subjectPKInfo [0] SubjectPublicKeyInfoTemplate
                                 {{ PKInfoAlgorithms }} OPTIONAL,
       attributes    [1] Attributes{{ CRIAttributes }}
   }


   --  like Name, but with OPTIONAL RDN values
   NameTemplate ::= CHOICE { -- only one possibility for now --
       rdnSequence  RDNSequenceTemplate }

   RDNSequenceTemplate ::= SEQUENCE OF RelativeDistinguishedNameTemplate

   RelativeDistinguishedNameTemplate  ::= SET SIZE (1 .. MAX)
       OF SingleAttributeTemplate { {SupportedAttributes} }

   --  like Attributes, but with OPTIONAL value
   SingleAttributeTemplates{ATTRIBUTE:AttrSet} ::= SEQUENCE OF
       SingleAttributeTemplates{ {AttrSet} }

   --  like SingleAttribute, but with OPTIONAL value
   SingleAttributeTemplate{ATTRIBUTE:AttrSet} ::= SEQUENCE {
       type      ATTRIBUTE.&id({AttrSet}),
       value     ATTRIBUTE.&Type({AttrSet}{@type}) OPTIONAL
   }

   --  like SubjectPublicKeyInfo, but with OPTIONAL subjectPublicKey
   SubjectPublicKeyInfoTemplate{PUBLIC-KEY:IOSet} ::= SEQUENCE {
       algorithm        AlgorithmIdentifier{PUBLIC-KEY, {IOSet}},
       subjectPublicKey BIT STRING OPTIONAL
   }

   id-aa-extensionReqTemplate OBJECT IDENTIFIER ::=
   { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
     smime(16) aa(2) id-aa-extensionReqTemplate(62) }

   --  like extensionRequest, but with OPTIONAL Extension extnValues
   --  original definition was in PKCS#9 RFC 2985, Section 5.4.2
   at-extensionReqTemplate ATTRIBUTE ::= {
       TYPE ExtensionReqTemplate IDENTIFIED BY
                    id-aa-extensionReqTemplate }

   ExtensionReqTemplate ::= ExtensionTemplates{{CertExtensions}}

   --  like Extensions, but with OPTIONAL extnValue
   ExtensionTemplates{EXTENSION:ExtensionSet} ::=
       SEQUENCE SIZE (1..MAX) OF ExtensionTemplate{{ExtensionSet}}

   --  like Extension, but with OPTIONAL extnValue
   ExtensionTemplate{EXTENSION:ExtensionSet} ::= SEQUENCE {
       extnID    EXTENSION.&id({ExtensionSet}),
       critical  BOOLEAN
     --                   (EXTENSION.&Critical({ExtensionSet}{@extnID}))
                        DEFAULT FALSE,
       extnValue OCTET STRING (CONTAINING
                 EXTENSION.&ExtnType({ExtensionSet}{@extnID})) OPTIONAL
                 --  contains the DER encoding of the ASN.1 value
                 --  corresponding to the extension type identified
                 --  by extnID when present
   }

   END