1 -- Extracted from RFC4211
2 -- by Martin Peylo <martin.peylo@nsn.com>
4 -- Changes to make it work with asn2wrs:
7 -- The copyright statement from the original description in RFC4211
10 -- Full Copyright Statement
12 -- Copyright (C) The Internet Society (2005).
14 -- This document is subject to the rights, licenses and restrictions
15 -- contained in BCP 78, and except as set forth therein, the authors
16 -- retain all their rights.
18 -- This document and the information contained herein are provided on an
19 -- "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
20 -- OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
21 -- ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
22 -- INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
23 -- INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
24 -- WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
27 PKIXCRMF-2005 {iso(1) identified-organization(3) dod(6) internet(1)
28 security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-crmf2005(36)}
30 DEFINITIONS IMPLICIT TAGS ::=
34 -- Directory Authentication Framework (X.509)
35 Version, AlgorithmIdentifier, Name, Time,
36 SubjectPublicKeyInfo, Extensions, UniqueIdentifier, Attribute
37 FROM PKIX1Explicit88 {iso(1) identified-organization(3) dod(6)
38 internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
39 id-pkix1-explicit(18)} -- found in [PROFILE]
41 -- Certificate Extensions (X.509)
43 FROM PKIX1Implicit88 {iso(1) identified-organization(3) dod(6)
44 internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
45 id-pkix1-implicit(19)} -- found in [PROFILE]
47 -- Cryptographic Message Syntax
49 FROM CryptographicMessageSyntax2004 { iso(1) member-body(2)
50 us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16)
51 modules(0) cms-2004(24) }; -- found in [CMS]
53 -- The following definition may be uncommented for use with
54 -- ASN.1 compilers that do not understand UTF8String.
56 -- UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING
57 -- The contents of this type correspond to RFC 2279.
59 id-pkix OBJECT IDENTIFIER ::= { iso(1) identified-organization(3)
60 dod(6) internet(1) security(5) mechanisms(5) 7 }
62 -- arc for Internet X.509 PKI protocols and their components
64 id-pkip OBJECT IDENTIFIER ::= { id-pkix 5 }
66 id-smime OBJECT IDENTIFIER ::= { iso(1) member-body(2)
67 us(840) rsadsi(113549) pkcs(1) pkcs9(9) 16 }
69 id-ct OBJECT IDENTIFIER ::= { id-smime 1 } -- content types
71 -- Core definitions for this module
73 CertReqMessages ::= SEQUENCE SIZE (1..MAX) OF CertReqMsg
75 CertReqMsg ::= SEQUENCE {
77 popo ProofOfPossession OPTIONAL,
78 -- content depends upon key type
79 regInfo SEQUENCE SIZE(1..MAX) OF AttributeTypeAndValue OPTIONAL }
81 CertRequest ::= SEQUENCE {
82 certReqId INTEGER, -- ID for matching request and reply
83 certTemplate CertTemplate, -- Selected fields of cert to be issued
84 controls Controls OPTIONAL } -- Attributes affecting issuance
86 CertTemplate ::= SEQUENCE {
87 version [0] Version OPTIONAL,
88 serialNumber [1] INTEGER OPTIONAL,
89 signingAlg [2] AlgorithmIdentifier OPTIONAL,
90 issuer [3] Name OPTIONAL,
91 validity [4] OptionalValidity OPTIONAL,
92 subject [5] Name OPTIONAL,
93 publicKey [6] SubjectPublicKeyInfo OPTIONAL,
94 issuerUID [7] UniqueIdentifier OPTIONAL,
95 subjectUID [8] UniqueIdentifier OPTIONAL,
96 extensions [9] Extensions OPTIONAL }
98 OptionalValidity ::= SEQUENCE {
99 notBefore [0] Time OPTIONAL,
100 notAfter [1] Time OPTIONAL } -- at least one MUST be present
102 Controls ::= SEQUENCE SIZE(1..MAX) OF AttributeTypeAndValue
104 AttributeTypeAndValue ::= SEQUENCE {
105 type OBJECT IDENTIFIER,
106 value ANY DEFINED BY type }
108 ProofOfPossession ::= CHOICE {
110 -- used if the RA has already verified that the requester is in
111 -- possession of the private key
112 signature [1] POPOSigningKey,
113 keyEncipherment [2] POPOPrivKey,
114 keyAgreement [3] POPOPrivKey }
116 POPOSigningKey ::= SEQUENCE {
117 poposkInput [0] POPOSigningKeyInput OPTIONAL,
118 algorithmIdentifier AlgorithmIdentifier,
119 signature BIT STRING }
121 -- The signature (using "algorithmIdentifier") is on the
122 -- DER-encoded value of poposkInput. NOTE: If the CertReqMsg
123 -- certReq CertTemplate contains the subject and publicKey values,
124 -- then poposkInput MUST be omitted and the signature MUST be
125 -- computed over the DER-encoded value of CertReqMsg certReq. If
126 -- the CertReqMsg certReq CertTemplate does not contain both the
127 -- public key and subject values (i.e., if it contains only one
128 -- of these, or neither), then poposkInput MUST be present and
131 POPOSigningKeyInput ::= SEQUENCE {
133 sender [0] GeneralName,
134 -- used only if an authenticated identity has been
135 -- established for the sender (e.g., a DN from a
136 -- previously-issued and currently-valid certificate)
137 publicKeyMAC PKMACValue },
138 -- used if no authenticated GeneralName currently exists for
139 -- the sender; publicKeyMAC contains a password-based MAC
140 -- on the DER-encoded value of publicKey
141 publicKey SubjectPublicKeyInfo } -- from CertTemplate
143 PKMACValue ::= SEQUENCE {
144 algId AlgorithmIdentifier,
145 -- algorithm value shall be PasswordBasedMac {1 2 840 113533 7 66 13}
146 -- parameter value is PBMParameter
149 PBMParameter ::= SEQUENCE {
151 owf AlgorithmIdentifier,
152 -- AlgId for a One-Way Function (SHA-1 recommended)
153 iterationCount INTEGER,
154 -- number of times the OWF is applied
155 mac AlgorithmIdentifier
156 -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11],
157 } -- or HMAC [HMAC, RFC2202])
159 POPOPrivKey ::= CHOICE {
160 thisMessage [0] BIT STRING, -- Deprecated
161 -- possession is proven in this message (which contains the private
162 -- key itself (encrypted for the CA))
163 subsequentMessage [1] SubsequentMessage,
164 -- possession will be proven in a subsequent message
165 dhMAC [2] BIT STRING, -- Deprecated
166 agreeMAC [3] PKMACValue,
167 encryptedKey [4] EnvelopedData }
169 -- for keyAgreement (only), possession is proven in this message
170 -- (which contains a MAC (over the DER-encoded value of the
171 -- certReq parameter in CertReqMsg, which MUST include both subject
172 -- and publicKey) based on a key derived from the end entity's
173 -- private DH key and the CA's public DH key);
175 SubsequentMessage ::= INTEGER {
177 -- requests that resulting certificate be encrypted for the
178 -- end entity (following which, POP will be proven in a
179 -- confirmation message)
181 -- requests that CA engage in challenge-response exchange with
182 -- end entity in order to prove private key possession
184 -- Object identifier assignments --
186 -- Registration Controls in CRMF
187 id-regCtrl OBJECT IDENTIFIER ::= { id-pkip 1 }
190 id-regCtrl-regToken OBJECT IDENTIFIER ::= { id-regCtrl 1 }
192 RegToken ::= UTF8String
194 id-regCtrl-authenticator OBJECT IDENTIFIER ::= { id-regCtrl 2 }
196 Authenticator ::= UTF8String
198 id-regCtrl-pkiPublicationInfo OBJECT IDENTIFIER ::= { id-regCtrl 3 }
201 PKIPublicationInfo ::= SEQUENCE {
205 pubInfos SEQUENCE SIZE (1..MAX) OF SinglePubInfo OPTIONAL }
206 -- pubInfos MUST NOT be present if action is "dontPublish"
207 -- (if action is "pleasePublish" and pubInfos is omitted,
208 -- "dontCare" is assumed)
210 SinglePubInfo ::= SEQUENCE {
216 pubLocation GeneralName OPTIONAL }
218 id-regCtrl-pkiArchiveOptions OBJECT IDENTIFIER ::= { id-regCtrl 4 }
220 PKIArchiveOptions ::= CHOICE {
221 encryptedPrivKey [0] EncryptedKey,
222 -- the actual value of the private key
223 keyGenParameters [1] KeyGenParameters,
224 -- parameters that allow the private key to be re-generated
225 archiveRemGenPrivKey [2] BOOLEAN }
226 -- set to TRUE if sender wishes receiver to archive the private
227 -- key of a key pair that the receiver generates in response to
228 -- this request; set to FALSE if no archival is desired.
230 EncryptedKey ::= CHOICE {
231 encryptedValue EncryptedValue, -- Deprecated
232 envelopedData [0] EnvelopedData }
233 -- The encrypted private key MUST be placed in the envelopedData
234 -- encryptedContentInfo encryptedContent OCTET STRING.
236 EncryptedValue ::= SEQUENCE {
237 intendedAlg [0] AlgorithmIdentifier OPTIONAL,
238 -- the intended algorithm for which the value will be used
239 symmAlg [1] AlgorithmIdentifier OPTIONAL,
240 -- the symmetric algorithm used to encrypt the value
241 encSymmKey [2] BIT STRING OPTIONAL,
242 -- the (encrypted) symmetric key used to encrypt the value
243 keyAlg [3] AlgorithmIdentifier OPTIONAL,
244 -- algorithm used to encrypt the symmetric key
245 valueHint [4] OCTET STRING OPTIONAL,
246 -- a brief description or identifier of the encValue content
247 -- (may be meaningful only to the sending entity, and used only
248 -- if EncryptedValue might be re-examined by the sending entity
250 encValue BIT STRING }
251 -- the encrypted value itself
252 -- When EncryptedValue is used to carry a private key (as opposed to
253 -- a certificate), implementations MUST support the encValue field
254 -- containing an encrypted PrivateKeyInfo as defined in [PKCS11],
255 -- section 12.11. If encValue contains some other format/encoding
256 -- for the private key, the first octet of valueHint MAY be used
257 -- to indicate the format/encoding (but note that the possible values
258 -- of this octet are not specified at this time). In all cases, the
259 -- intendedAlg field MUST be used to indicate at least the OID of
260 -- the intended algorithm of the private key, unless this information
261 -- is known a priori to both sender and receiver by some other means.
263 KeyGenParameters ::= OCTET STRING
265 id-regCtrl-oldCertID OBJECT IDENTIFIER ::= { id-regCtrl 5 }
269 CertId ::= SEQUENCE {
271 serialNumber INTEGER }
273 id-regCtrl-protocolEncrKey OBJECT IDENTIFIER ::= { id-regCtrl 6 }
275 ProtocolEncrKey ::= SubjectPublicKeyInfo
277 -- Registration Info in CRMF
278 id-regInfo OBJECT IDENTIFIER ::= { id-pkip 2 }
280 id-regInfo-utf8Pairs OBJECT IDENTIFIER ::= { id-regInfo 1 }
282 UTF8Pairs ::= UTF8String
284 id-regInfo-certReq OBJECT IDENTIFIER ::= { id-regInfo 2 }
286 CertReq ::= CertRequest
288 -- id-ct-encKeyWithID is a new content type used for CMS objects.
289 -- it contains both a private key and an identifier for key escrow
290 -- agents to check against recovery requestors.
292 id-ct-encKeyWithID OBJECT IDENTIFIER ::= {id-ct 21}
294 EncKeyWithID ::= SEQUENCE {
295 privateKey PrivateKeyInfo,
298 generalName GeneralName
302 PrivateKeyInfo ::= SEQUENCE {
304 privateKeyAlgorithm AlgorithmIdentifier,
305 privateKey OCTET STRING,
306 attributes [0] IMPLICIT Attributes OPTIONAL
309 Attributes ::= SET OF Attribute