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