1
2
3
4
5
6
7Network Working Group                                         R. Housley
8Request for Comments: 3280                              RSA Laboratories
9Obsoletes: 2459                                                  W. Polk
10Category: Standards Track                                           NIST
11                                                                 W. Ford
12                                                                VeriSign
13                                                                 D. Solo
14                                                               Citigroup
15                                                              April 2002
16
17                Internet X.509 Public Key Infrastructure
18       Certificate and Certificate Revocation List (CRL) Profile
19
20Status of this Memo
21
22   This document specifies an Internet standards track protocol for the
23   Internet community, and requests discussion and suggestions for
24   improvements.  Please refer to the current edition of the "Internet
25   Official Protocol Standards" (STD 1) for the standardization state
26   and status of this protocol.  Distribution of this memo is unlimited.
27
28Copyright Notice
29
30   Copyright (C) The Internet Society (2002).  All Rights Reserved.
31
32Abstract
33
34   This memo profiles the X.509 v3 certificate and X.509 v2 Certificate
35   Revocation List (CRL) for use in the Internet.  An overview of this
36   approach and model are provided as an introduction.  The X.509 v3
37   certificate format is described in detail, with additional
38   information regarding the format and semantics of Internet name
39   forms.  Standard certificate extensions are described and two
40   Internet-specific extensions are defined.  A set of required
41   certificate extensions is specified.  The X.509 v2 CRL format is
42   described in detail, and required extensions are defined.  An
43   algorithm for X.509 certification path validation is described.  An
44   ASN.1 module and examples are provided in the appendices.
45
46Table of Contents
47
48   1  Introduction  . . . . . . . . . . . . . . . . . . . . . .   4
49   2  Requirements and Assumptions  . . . . . . . . . . . . . .   5
50   2.1  Communication and Topology  . . . . . . . . . . . . . .   6
51   2.2  Acceptability Criteria  . . . . . . . . . . . . . . . .   6
52   2.3  User Expectations . . . . . . . . . . . . . . . . . . .   7
53   2.4  Administrator Expectations  . . . . . . . . . . . . . .   7
54   3  Overview of Approach  . . . . . . . . . . . . . . . . . .   7
55
56
57
58Housley, et. al.            Standards Track                     [Page 1]
59
60RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
61
62
63   3.1  X.509 Version 3 Certificate . . . . . . . . . . . . . .   8
64   3.2  Certification Paths and Trust . . . . . . . . . . . . .   9
65   3.3  Revocation  . . . . . . . . . . . . . . . . . . . . . .  11
66   3.4  Operational Protocols . . . . . . . . . . . . . . . . .  13
67   3.5  Management Protocols  . . . . . . . . . . . . . . . . .  13
68   4  Certificate and Certificate Extensions Profile  . . . . .  14
69   4.1  Basic Certificate Fields  . . . . . . . . . . . . . . .  15
70   4.1.1  Certificate Fields  . . . . . . . . . . . . . . . . .  16
71   4.1.1.1  tbsCertificate  . . . . . . . . . . . . . . . . . .  16
72   4.1.1.2  signatureAlgorithm  . . . . . . . . . . . . . . . .  16
73   4.1.1.3  signatureValue  . . . . . . . . . . . . . . . . . .  16
74   4.1.2  TBSCertificate  . . . . . . . . . . . . . . . . . . .  17
75   4.1.2.1  Version . . . . . . . . . . . . . . . . . . . . . .  17
76   4.1.2.2  Serial number . . . . . . . . . . . . . . . . . . .  17
77   4.1.2.3  Signature . . . . . . . . . . . . . . . . . . . . .  18
78   4.1.2.4  Issuer  . . . . . . . . . . . . . . . . . . . . . .  18
79   4.1.2.5  Validity  . . . . . . . . . . . . . . . . . . . . .  22
80   4.1.2.5.1  UTCTime . . . . . . . . . . . . . . . . . . . . .  22
81   4.1.2.5.2  GeneralizedTime . . . . . . . . . . . . . . . . .  22
82   4.1.2.6  Subject . . . . . . . . . . . . . . . . . . . . . .  23
83   4.1.2.7  Subject Public Key Info . . . . . . . . . . . . . .  24
84   4.1.2.8  Unique Identifiers  . . . . . . . . . . . . . . . .  24
85   4.1.2.9 Extensions . . . . . . . . . . . . . . . . . . . . .  24
86   4.2  Certificate Extensions  . . . . . . . . . . . . . . . .  24
87   4.2.1  Standard Extensions . . . . . . . . . . . . . . . . .  25
88   4.2.1.1  Authority Key Identifier  . . . . . . . . . . . . .  26
89   4.2.1.2  Subject Key Identifier  . . . . . . . . . . . . . .  27
90   4.2.1.3  Key Usage . . . . . . . . . . . . . . . . . . . . .  28
91   4.2.1.4  Private Key Usage Period  . . . . . . . . . . . . .  29
92   4.2.1.5  Certificate Policies  . . . . . . . . . . . . . . .  30
93   4.2.1.6  Policy Mappings . . . . . . . . . . . . . . . . . .  33
94   4.2.1.7  Subject Alternative Name  . . . . . . . . . . . . .  33
95   4.2.1.8  Issuer Alternative Name . . . . . . . . . . . . . .  36
96   4.2.1.9  Subject Directory Attributes  . . . . . . . . . . .  36
97   4.2.1.10  Basic Constraints  . . . . . . . . . . . . . . . .  36
98   4.2.1.11  Name Constraints . . . . . . . . . . . . . . . . .  37
99   4.2.1.12  Policy Constraints . . . . . . . . . . . . . . . .  40
100   4.2.1.13  Extended Key Usage . . . . . . . . . . . . . . . .  40
101   4.2.1.14  CRL Distribution Points  . . . . . . . . . . . . .  42
102   4.2.1.15  Inhibit Any-Policy . . . . . . . . . . . . . . . .  44
103   4.2.1.16  Freshest CRL . . . . . . . . . . . . . . . . . . .  44
104   4.2.2  Internet Certificate Extensions . . . . . . . . . . .  45
105   4.2.2.1  Authority Information Access  . . . . . . . . . . .  45
106   4.2.2.2  Subject Information Access  . . . . . . . . . . . .  46
107   5  CRL and CRL Extensions Profile  . . . . . . . . . . . . .  48
108   5.1  CRL Fields  . . . . . . . . . . . . . . . . . . . . . .  49
109   5.1.1  CertificateList Fields  . . . . . . . . . . . . . . .  50
110   5.1.1.1  tbsCertList . . . . . . . . . . . . . . . . . . . .  50
111
112
113
114Housley, et. al.            Standards Track                     [Page 2]
115
116RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
117
118
119   5.1.1.2  signatureAlgorithm  . . . . . . . . . . . . . . . .  50
120   5.1.1.3  signatureValue  . . . . . . . . . . . . . . . . . .  51
121   5.1.2  Certificate List "To Be Signed" . . . . . . . . . . .  51
122   5.1.2.1  Version . . . . . . . . . . . . . . . . . . . . . .  52
123   5.1.2.2  Signature . . . . . . . . . . . . . . . . . . . . .  52
124   5.1.2.3  Issuer Name . . . . . . . . . . . . . . . . . . . .  52
125   5.1.2.4  This Update . . . . . . . . . . . . . . . . . . . .  52
126   5.1.2.5  Next Update . . . . . . . . . . . . . . . . . . . .  53
127   5.1.2.6  Revoked Certificates  . . . . . . . . . . . . . . .  53
128   5.1.2.7  Extensions  . . . . . . . . . . . . . . . . . . . .  53
129   5.2  CRL Extensions  . . . . . . . . . . . . . . . . . . . .  53
130   5.2.1  Authority Key Identifier  . . . . . . . . . . . . . .  54
131   5.2.2  Issuer Alternative Name . . . . . . . . . . . . . . .  54
132   5.2.3  CRL Number  . . . . . . . . . . . . . . . . . . . . .  55
133   5.2.4  Delta CRL Indicator . . . . . . . . . . . . . . . . .  55
134   5.2.5  Issuing Distribution Point  . . . . . . . . . . . . .  58
135   5.2.6  Freshest CRL  . . . . . . . . . . . . . . . . . . . .  59
136   5.3  CRL Entry Extensions  . . . . . . . . . . . . . . . . .  60
137   5.3.1  Reason Code . . . . . . . . . . . . . . . . . . . . .  60
138   5.3.2  Hold Instruction Code . . . . . . . . . . . . . . . .  61
139   5.3.3  Invalidity Date . . . . . . . . . . . . . . . . . . .  62
140   5.3.4  Certificate Issuer  . . . . . . . . . . . . . . . . .  62
141   6  Certificate Path Validation . . . . . . . . . . . . . . .  62
142   6.1  Basic Path Validation . . . . . . . . . . . . . . . . .  63
143   6.1.1  Inputs  . . . . . . . . . . . . . . . . . . . . . . .  66
144   6.1.2  Initialization  . . . . . . . . . . . . . . . . . . .  67
145   6.1.3  Basic Certificate Processing  . . . . . . . . . . . .  70
146   6.1.4  Preparation for Certificate i+1 . . . . . . . . . . .  75
147   6.1.5  Wrap-up procedure . . . . . . . . . . . . . . . . . .  78
148   6.1.6  Outputs . . . . . . . . . . . . . . . . . . . . . . .  80
149   6.2  Extending Path Validation . . . . . . . . . . . . . . .  80
150   6.3  CRL Validation  . . . . . . . . . . . . . . . . . . . .  81
151   6.3.1  Revocation Inputs . . . . . . . . . . . . . . . . . .  82
152   6.3.2  Initialization and Revocation State Variables . . . .  82
153   6.3.3  CRL Processing  . . . . . . . . . . . . . . . . . . .  83
154   7  References  . . . . . . . . . . . . . . . . . . . . . . .  86
155   8  Intellectual Property Rights  . . . . . . . . . . . . . .  88
156   9  Security Considerations . . . . . . . . . . . . . . . . .  89
157   Appendix A.  ASN.1 Structures and OIDs . . . . . . . . . . .  92
158   A.1 Explicitly Tagged Module, 1988 Syntax  . . . . . . . . .  92
159   A.2 Implicitly Tagged Module, 1988 Syntax  . . . . . . . . . 105
160   Appendix B.  ASN.1 Notes . . . . . . . . . . . . . . . . . . 112
161   Appendix C.  Examples  . . . . . . . . . . . . . . . . . . . 115
162   C.1  DSA Self-Signed Certificate . . . . . . . . . . . . . . 115
163   C.2  End Entity Certificate Using DSA  . . . . . . . . . . . 119
164   C.3  End Entity Certificate Using RSA  . . . . . . . . . . . 122
165   C.4  Certificate Revocation List . . . . . . . . . . . . . . 126
166   Author Addresses . . . . . . . . . . . . . . . . . . . . . . 128
167
168
169
170Housley, et. al.            Standards Track                     [Page 3]
171
172RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
173
174
175   Full Copyright Statement . . . . . . . . . . . . . . . . . . 129
176
1771  Introduction
178
179   This specification is one part of a family of standards for the X.509
180   Public Key Infrastructure (PKI) for the Internet.
181
182   This specification profiles the format and semantics of certificates
183   and certificate revocation lists (CRLs) for the Internet PKI.
184   Procedures are described for processing of certification paths in the
185   Internet environment.  Finally, ASN.1 modules are provided in the
186   appendices for all data structures defined or referenced.
187
188   Section 2 describes Internet PKI requirements, and the assumptions
189   which affect the scope of this document.  Section 3 presents an
190   architectural model and describes its relationship to previous IETF
191   and ISO/IEC/ITU-T standards.  In particular, this document's
192   relationship with the IETF PEM specifications and the ISO/IEC/ITU-T
193   X.509 documents are described.
194
195   Section 4 profiles the X.509 version 3 certificate, and section 5
196   profiles the X.509 version 2 CRL.  The profiles include the
197   identification of ISO/IEC/ITU-T and ANSI extensions which may be
198   useful in the Internet PKI.  The profiles are presented in the 1988
199   Abstract Syntax Notation One (ASN.1) rather than the 1997 ASN.1
200   syntax used in the most recent ISO/IEC/ITU-T standards.
201
202   Section 6 includes certification path validation procedures.  These
203   procedures are based upon the ISO/IEC/ITU-T definition.
204   Implementations are REQUIRED to derive the same results but are not
205   required to use the specified procedures.
206
207   Procedures for identification and encoding of public key materials
208   and digital signatures are defined in [PKIXALGS].  Implementations of
209   this specification are not required to use any particular
210   cryptographic algorithms.  However, conforming implementations which
211   use the algorithms identified in [PKIXALGS] MUST identify and encode
212   the public key materials and digital signatures as described in that
213   specification.
214
215   Finally, three appendices are provided to aid implementers.  Appendix
216   A contains all ASN.1 structures defined or referenced within this
217   specification.  As above, the material is presented in the 1988
218   ASN.1.  Appendix B contains notes on less familiar features of the
219   ASN.1 notation used within this specification.  Appendix C contains
220   examples of a conforming certificate and a conforming CRL.
221
222
223
224
225
226Housley, et. al.            Standards Track                     [Page 4]
227
228RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
229
230
231   This specification obsoletes RFC 2459.  This specification differs
232   from RFC 2459 in five basic areas:
233
234      * To promote interoperable implementations, a detailed algorithm
235      for certification path validation is included in section 6.1 of
236      this specification; RFC 2459 provided only a high-level
237      description of path validation.
238
239      * An algorithm for determining the status of a certificate using
240      CRLs is provided in section 6.3 of this specification.  This
241      material was not present in RFC 2459.
242
243      * To accommodate new usage models, detailed information describing
244      the use of delta CRLs is provided in Section 5 of this
245      specification.
246
247      * Identification and encoding of public key materials and digital
248      signatures are not included in this specification, but are now
249      described in a companion specification [PKIXALGS].
250
251      * Four additional extensions are specified: three certificate
252      extensions and one CRL extension.  The certificate extensions are
253      subject info access, inhibit any-policy, and freshest CRL.  The
254      freshest CRL extension is also defined as a CRL extension.
255
256      * Throughout the specification, clarifications have been
257      introduced to enhance consistency with the ITU-T X.509
258      specification.  X.509 defines the certificate and CRL format as
259      well as many of the extensions that appear in this specification.
260      These changes were introduced to improve the likelihood of
261      interoperability between implementations based on this
262      specification with implementations based on the ITU-T
263      specification.
264
265   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
266   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
267   document are to be interpreted as described in RFC 2119.
268
2692  Requirements and Assumptions
270
271   The goal of this specification is to develop a profile to facilitate
272   the use of X.509 certificates within Internet applications for those
273   communities wishing to make use of X.509 technology.  Such
274   applications may include WWW, electronic mail, user authentication,
275   and IPsec.  In order to relieve some of the obstacles to using X.509
276
277
278
279
280
281
282Housley, et. al.            Standards Track                     [Page 5]
283
284RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
285
286
287   certificates, this document defines a profile to promote the
288   development of certificate management systems; development of
289   application tools; and interoperability determined by policy.
290
291   Some communities will need to supplement, or possibly replace, this
292   profile in order to meet the requirements of specialized application
293   domains or environments with additional authorization, assurance, or
294   operational requirements.  However, for basic applications, common
295   representations of frequently used attributes are defined so that
296   application developers can obtain necessary information without
297   regard to the issuer of a particular certificate or certificate
298   revocation list (CRL).
299
300   A certificate user should review the certificate policy generated by
301   the certification authority (CA) before relying on the authentication
302   or non-repudiation services associated with the public key in a
303   particular certificate.  To this end, this standard does not
304   prescribe legally binding rules or duties.
305
306   As supplemental authorization and attribute management tools emerge,
307   such as attribute certificates, it may be appropriate to limit the
308   authenticated attributes that are included in a certificate.  These
309   other management tools may provide more appropriate methods of
310   conveying many authenticated attributes.
311
3122.1  Communication and Topology
313
314   The users of certificates will operate in a wide range of
315   environments with respect to their communication topology, especially
316   users of secure electronic mail.  This profile supports users without
317   high bandwidth, real-time IP connectivity, or high connection
318   availability.  In addition, the profile allows for the presence of
319   firewall or other filtered communication.
320
321   This profile does not assume the deployment of an X.500 Directory
322   system or a LDAP directory system.  The profile does not prohibit the
323   use of an X.500 Directory or a LDAP directory; however, any means of
324   distributing certificates and certificate revocation lists (CRLs) may
325   be used.
326
3272.2  Acceptability Criteria
328
329   The goal of the Internet Public Key Infrastructure (PKI) is to meet
330   the needs of deterministic, automated identification, authentication,
331   access control, and authorization functions.  Support for these
332   services determines the attributes contained in the certificate as
333   well as the ancillary control information in the certificate such as
334   policy data and certification path constraints.
335
336
337
338Housley, et. al.            Standards Track                     [Page 6]
339
340RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
341
342
3432.3  User Expectations
344
345   Users of the Internet PKI are people and processes who use client
346   software and are the subjects named in certificates.  These uses
347   include readers and writers of electronic mail, the clients for WWW
348   browsers, WWW servers, and the key manager for IPsec within a router.
349   This profile recognizes the limitations of the platforms these users
350   employ and the limitations in sophistication and attentiveness of the
351   users themselves.  This manifests itself in minimal user
352   configuration responsibility (e.g., trusted CA keys, rules), explicit
353   platform usage constraints within the certificate, certification path
354   constraints which shield the user from many malicious actions, and
355   applications which sensibly automate validation functions.
356
3572.4  Administrator Expectations
358
359   As with user expectations, the Internet PKI profile is structured to
360   support the individuals who generally operate CAs.  Providing
361   administrators with unbounded choices increases the chances that a
362   subtle CA administrator mistake will result in broad compromise.
363   Also, unbounded choices greatly complicate the software that process
364   and validate the certificates created by the CA.
365
3663  Overview of Approach
367
368   Following is a simplified view of the architectural model assumed by
369   the PKIX specifications.
370
371   The components in this model are:
372
373   end entity: user of PKI certificates and/or end user system that is
374               the subject of a certificate;
375   CA:         certification authority;
376   RA:         registration authority, i.e., an optional system to which
377               a CA delegates certain management functions;
378   CRL issuer: an optional system to which a CA delegates the
379               publication of certificate revocation lists;
380   repository: a system or collection of distributed systems that stores
381               certificates and CRLs and serves as a means of
382               distributing these certificates and CRLs to end entities.
383
384   Note that an Attribute Authority (AA) might also choose to delegate
385   the publication of CRLs to a CRL issuer.
386
387
388
389
390
391
392
393
394Housley, et. al.            Standards Track                     [Page 7]
395
396RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
397
398
399   +---+
400   | C |                       +------------+
401   | e | <-------------------->| End entity |
402   | r |       Operational     +------------+
403   | t |       transactions          ^
404   | i |      and management         |  Management
405   | f |       transactions          |  transactions        PKI
406   | i |                             |                     users
407   | c |                             v
408   | a | =======================  +--+------------+  ==============
409   | t |                          ^               ^
410   | e |                          |               |         PKI
411   |   |                          v               |      management
412   | & |                       +------+           |       entities
413   |   | <---------------------|  RA  |<----+     |
414   | C |  Publish certificate  +------+     |     |
415   | R |                                    |     |
416   | L |                                    |     |
417   |   |                                    v     v
418   | R |                                +------------+
419   | e | <------------------------------|     CA     |
420   | p |   Publish certificate          +------------+
421   | o |   Publish CRL                     ^      ^
422   | s |                                   |      |  Management
423   | i |                +------------+     |      |  transactions
424   | t | <--------------| CRL Issuer |<----+      |
425   | o |   Publish CRL  +------------+            v
426   | r |                                      +------+
427   | y |                                      |  CA  |
428   +---+                                      +------+
429
430                      Figure 1 - PKI Entities
431
4323.1  X.509 Version 3 Certificate
433
434   Users of a public key require confidence that the associated private
435   key is owned by the correct remote subject (person or system) with
436   which an encryption or digital signature mechanism will be used.
437   This confidence is obtained through the use of public key
438   certificates, which are data structures that bind public key values
439   to subjects.  The binding is asserted by having a trusted CA
440   digitally sign each certificate.  The CA may base this assertion upon
441   technical means (a.k.a., proof of possession through a challenge-
442   response protocol), presentation of the private key, or on an
443   assertion by the subject.  A certificate has a limited valid lifetime
444   which is indicated in its signed contents.  Because a certificate's
445   signature and timeliness can be independently checked by a
446   certificate-using client, certificates can be distributed via
447
448
449
450Housley, et. al.            Standards Track                     [Page 8]
451
452RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
453
454
455   untrusted communications and server systems, and can be cached in
456   unsecured storage in certificate-using systems.
457
458   ITU-T X.509 (formerly CCITT X.509) or ISO/IEC 9594-8, which was first
459   published in 1988 as part of the X.500 Directory recommendations,
460   defines a standard certificate format [X.509].  The certificate
461   format in the 1988 standard is called the version 1 (v1) format.
462   When X.500 was revised in 1993, two more fields were added, resulting
463   in the version 2 (v2) format.
464
465   The Internet Privacy Enhanced Mail (PEM) RFCs, published in 1993,
466   include specifications for a public key infrastructure based on X.509
467   v1 certificates [RFC 1422].  The experience gained in attempts to
468   deploy RFC 1422 made it clear that the v1 and v2 certificate formats
469   are deficient in several respects.  Most importantly, more fields
470   were needed to carry information which PEM design and implementation
471   experience had proven necessary.  In response to these new
472   requirements, ISO/IEC, ITU-T and ANSI X9 developed the X.509 version
473   3 (v3) certificate format.  The v3 format extends the v2 format by
474   adding provision for additional extension fields.  Particular
475   extension field types may be specified in standards or may be defined
476   and registered by any organization or community.  In June 1996,
477   standardization of the basic v3 format was completed [X.509].
478
479   ISO/IEC, ITU-T, and ANSI X9 have also developed standard extensions
480   for use in the v3 extensions field [X.509][X9.55].  These extensions
481   can convey such data as additional subject identification
482   information, key attribute information, policy information, and
483   certification path constraints.
484
485   However, the ISO/IEC, ITU-T, and ANSI X9 standard extensions are very
486   broad in their applicability.  In order to develop interoperable
487   implementations of X.509 v3 systems for Internet use, it is necessary
488   to specify a profile for use of the X.509 v3 extensions tailored for
489   the Internet.  It is one goal of this document to specify a profile
490   for Internet WWW, electronic mail, and IPsec applications.
491   Environments with additional requirements may build on this profile
492   or may replace it.
493
4943.2  Certification Paths and Trust
495
496   A user of a security service requiring knowledge of a public key
497   generally needs to obtain and validate a certificate containing the
498   required public key.  If the public key user does not already hold an
499   assured copy of the public key of the CA that signed the certificate,
500   the CA's name, and related information (such as the validity period
501   or name constraints), then it might need an additional certificate to
502   obtain that public key.  In general, a chain of multiple certificates
503
504
505
506Housley, et. al.            Standards Track                     [Page 9]
507
508RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
509
510
511   may be needed, comprising a certificate of the public key owner (the
512   end entity) signed by one CA, and zero or more additional
513   certificates of CAs signed by other CAs.  Such chains, called
514   certification paths, are required because a public key user is only
515   initialized with a limited number of assured CA public keys.
516
517   There are different ways in which CAs might be configured in order
518   for public key users to be able to find certification paths.  For
519   PEM, RFC 1422 defined a rigid hierarchical structure of CAs.  There
520   are three types of PEM certification authority:
521
522      (a)  Internet Policy Registration Authority (IPRA):  This
523      authority, operated under the auspices of the Internet Society,
524      acts as the root of the PEM certification hierarchy at level 1.
525      It issues certificates only for the next level of authorities,
526      PCAs.  All certification paths start with the IPRA.
527
528      (b)  Policy Certification Authorities (PCAs):  PCAs are at level 2
529      of the hierarchy, each PCA being certified by the IPRA.  A PCA
530      shall establish and publish a statement of its policy with respect
531      to certifying users or subordinate certification authorities.
532      Distinct PCAs aim to satisfy different user needs.  For example,
533      one PCA (an organizational PCA) might support the general
534      electronic mail needs of commercial organizations, and another PCA
535      (a high-assurance PCA) might have a more stringent policy designed
536      for satisfying legally binding digital signature requirements.
537
538      (c)  Certification Authorities (CAs):  CAs are at level 3 of the
539      hierarchy and can also be at lower levels.  Those at level 3 are
540      certified by PCAs.  CAs represent, for example, particular
541      organizations, particular organizational units (e.g., departments,
542      groups, sections), or particular geographical areas.
543
544   RFC 1422 furthermore has a name subordination rule which requires
545   that a CA can only issue certificates for entities whose names are
546   subordinate (in the X.500 naming tree) to the name of the CA itself.
547   The trust associated with a PEM certification path is implied by the
548   PCA name.  The name subordination rule ensures that CAs below the PCA
549   are sensibly constrained as to the set of subordinate entities they
550   can certify (e.g., a CA for an organization can only certify entities
551   in that organization's name tree).  Certificate user systems are able
552   to mechanically check that the name subordination rule has been
553   followed.
554
555   The RFC 1422 uses the X.509 v1 certificate formats.  The limitations
556   of X.509 v1 required imposition of several structural restrictions to
557   clearly associate policy information or restrict the utility of
558   certificates.  These restrictions included:
559
560
561
562Housley, et. al.            Standards Track                    [Page 10]
563
564RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
565
566
567      (a)  a pure top-down hierarchy, with all certification paths
568      starting from IPRA;
569
570      (b)  a naming subordination rule restricting the names of a CA's
571      subjects; and
572
573      (c)  use of the PCA concept, which requires knowledge of
574      individual PCAs to be built into certificate chain verification
575      logic.  Knowledge of individual PCAs was required to determine if
576      a chain could be accepted.
577
578   With X.509 v3, most of the requirements addressed by RFC 1422 can be
579   addressed using certificate extensions, without a need to restrict
580   the CA structures used.  In particular, the certificate extensions
581   relating to certificate policies obviate the need for PCAs and the
582   constraint extensions obviate the need for the name subordination
583   rule.  As a result, this document supports a more flexible
584   architecture, including:
585
586      (a)  Certification paths start with a public key of a CA in a
587      user's own domain, or with the public key of the top of a
588      hierarchy.  Starting with the public key of a CA in a user's own
589      domain has certain advantages.  In some environments, the local
590      domain is the most trusted.
591
592      (b)  Name constraints may be imposed through explicit inclusion of
593      a name constraints extension in a certificate, but are not
594      required.
595
596      (c)  Policy extensions and policy mappings replace the PCA
597      concept, which permits a greater degree of automation.  The
598      application can determine if the certification path is acceptable
599      based on the contents of the certificates instead of a priori
600      knowledge of PCAs.  This permits automation of certification path
601      processing.
602
6033.3  Revocation
604
605   When a certificate is issued, it is expected to be in use for its
606   entire validity period.  However, various circumstances may cause a
607   certificate to become invalid prior to the expiration of the validity
608   period.  Such circumstances include change of name, change of
609   association between subject and CA (e.g., an employee terminates
610   employment with an organization), and compromise or suspected
611   compromise of the corresponding private key.  Under such
612   circumstances, the CA needs to revoke the certificate.
613
614
615
616
617
618Housley, et. al.            Standards Track                    [Page 11]
619
620RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
621
622
623   X.509 defines one method of certificate revocation.  This method
624   involves each CA periodically issuing a signed data structure called
625   a certificate revocation list (CRL).  A CRL is a time stamped list
626   identifying revoked certificates which is signed by a CA or CRL
627   issuer and made freely available in a public repository.  Each
628   revoked certificate is identified in a CRL by its certificate serial
629   number.  When a certificate-using system uses a certificate (e.g.,
630   for verifying a remote user's digital signature), that system not
631   only checks the certificate signature and validity but also acquires
632   a suitably-recent CRL and checks that the certificate serial number
633   is not on that CRL.  The meaning of "suitably-recent" may vary with
634   local policy, but it usually means the most recently-issued CRL.  A
635   new CRL is issued on a regular periodic basis (e.g., hourly, daily,
636   or weekly).  An entry is added to the CRL as part of the next update
637   following notification of revocation.  An entry MUST NOT be removed
638   from the CRL until it appears on one regularly scheduled CRL issued
639   beyond the revoked certificate's validity period.
640
641   An advantage of this revocation method is that CRLs may be
642   distributed by exactly the same means as certificates themselves,
643   namely, via untrusted servers and untrusted communications.
644
645   One limitation of the CRL revocation method, using untrusted
646   communications and servers, is that the time granularity of
647   revocation is limited to the CRL issue period.  For example, if a
648   revocation is reported now, that revocation will not be reliably
649   notified to certificate-using systems until all currently issued CRLs
650   are updated -- this may be up to one hour, one day, or one week
651   depending on the frequency that CRLs are issued.
652
653   As with the X.509 v3 certificate format, in order to facilitate
654   interoperable implementations from multiple vendors, the X.509 v2 CRL
655   format needs to be profiled for Internet use.  It is one goal of this
656   document to specify that profile.  However, this profile does not
657   require the issuance of CRLs.  Message formats and protocols
658   supporting on-line revocation notification are defined in other PKIX
659   specifications.  On-line methods of revocation notification may be
660   applicable in some environments as an alternative to the X.509 CRL.
661   On-line revocation checking may significantly reduce the latency
662   between a revocation report and the distribution of the information
663   to relying parties.  Once the CA accepts a revocation report as
664   authentic and valid, any query to the on-line service will correctly
665   reflect the certificate validation impacts of the revocation.
666   However, these methods impose new security requirements: the
667   certificate validator needs to trust the on-line validation service
668   while the repository does not need to be trusted.
669
670
671
672
673
674Housley, et. al.            Standards Track                    [Page 12]
675
676RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
677
678
6793.4  Operational Protocols
680
681   Operational protocols are required to deliver certificates and CRLs
682   (or status information) to certificate using client systems.
683   Provisions are needed for a variety of different means of certificate
684   and CRL delivery, including distribution procedures based on LDAP,
685   HTTP, FTP, and X.500.  Operational protocols supporting these
686   functions are defined in other PKIX specifications.  These
687   specifications may include definitions of message formats and
688   procedures for supporting all of the above operational environments,
689   including definitions of or references to appropriate MIME content
690   types.
691
6923.5  Management Protocols
693
694   Management protocols are required to support on-line interactions
695   between PKI user and management entities.  For example, a management
696   protocol might be used between a CA and a client system with which a
697   key pair is associated, or between two CAs which cross-certify each
698   other.  The set of functions which potentially need to be supported
699   by management protocols include:
700
701      (a)  registration:  This is the process whereby a user first makes
702      itself known to a CA (directly, or through an RA), prior to that
703      CA issuing  a certificate or certificates for that user.
704
705      (b)  initialization:  Before a client system can operate securely
706      it is necessary to install key materials which have the
707      appropriate relationship with keys stored elsewhere in the
708      infrastructure.  For example, the client needs to be securely
709      initialized with the public key and other assured information of
710      the trusted CA(s), to be used in validating certificate paths.
711
712      Furthermore, a client typically needs to be initialized with its
713      own key pair(s).
714
715      (c)  certification:  This is the process in which a CA issues a
716      certificate for a user's public key, and returns that certificate
717      to the user's client system and/or posts that certificate in a
718      repository.
719
720      (d)  key pair recovery:  As an option, user client key materials
721      (e.g., a user's private key used for encryption purposes) may be
722      backed up by a CA or a key backup system.  If a user needs to
723      recover these backed up key materials (e.g., as a result of a
724      forgotten password or a lost key chain file), an on-line protocol
725      exchange may be needed to support such recovery.
726
727
728
729
730Housley, et. al.            Standards Track                    [Page 13]
731
732RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
733
734
735      (e)  key pair update:  All key pairs need to be updated regularly,
736      i.e., replaced with a new key pair, and new certificates issued.
737
738      (f)  revocation request:  An authorized person advises a CA of an
739      abnormal situation requiring certificate revocation.
740
741      (g)  cross-certification:  Two CAs exchange information used in
742      establishing a cross-certificate.  A cross-certificate is a
743      certificate issued by one CA to another CA which contains a CA
744      signature key used for issuing certificates.
745
746   Note that on-line protocols are not the only way of implementing the
747   above functions.  For all functions there are off-line methods of
748   achieving the same result, and this specification does not mandate
749   use of on-line protocols.  For example, when hardware tokens are
750   used, many of the functions may be achieved as part of the physical
751   token delivery.  Furthermore, some of the above functions may be
752   combined into one protocol exchange.  In particular, two or more of
753   the registration, initialization, and certification functions can be
754   combined into one protocol exchange.
755
756   The PKIX series of specifications defines a set of standard message
757   formats supporting the above functions.  The protocols for conveying
758   these messages in different environments (e.g., e-mail, file
759   transfer, and WWW) are described in those specifications.
760
7614  Certificate and Certificate Extensions Profile
762
763   This section presents a profile for public key certificates that will
764   foster interoperability and a reusable PKI.  This section is based
765   upon the X.509 v3 certificate format and the standard certificate
766   extensions defined in [X.509].  The ISO/IEC and ITU-T documents use
767   the 1997 version of ASN.1; while this document uses the 1988 ASN.1
768   syntax, the encoded certificate and standard extensions are
769   equivalent.  This section also defines private extensions required to
770   support a PKI for the Internet community.
771
772   Certificates may be used in a wide range of applications and
773   environments covering a broad spectrum of interoperability goals and
774   a broader spectrum of operational and assurance requirements.  The
775   goal of this document is to establish a common baseline for generic
776   applications requiring broad interoperability and limited special
777   purpose requirements.  In particular, the emphasis will be on
778   supporting the use of X.509 v3 certificates for informal Internet
779   electronic mail, IPsec, and WWW applications.
780
781
782
783
784
785
786Housley, et. al.            Standards Track                    [Page 14]
787
788RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
789
790
7914.1  Basic Certificate Fields
792
793   The X.509 v3 certificate basic syntax is as follows.  For signature
794   calculation, the data that is to be signed is encoded using the ASN.1
795   distinguished encoding rules (DER) [X.690].  ASN.1 DER encoding is a
796   tag, length, value encoding system for each element.
797
798   Certificate  ::=  SEQUENCE  {
799        tbsCertificate       TBSCertificate,
800        signatureAlgorithm   AlgorithmIdentifier,
801        signatureValue       BIT STRING  }
802
803   TBSCertificate  ::=  SEQUENCE  {
804        version         [0]  EXPLICIT Version DEFAULT v1,
805        serialNumber         CertificateSerialNumber,
806        signature            AlgorithmIdentifier,
807        issuer               Name,
808        validity             Validity,
809        subject              Name,
810        subjectPublicKeyInfo SubjectPublicKeyInfo,
811        issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
812                             -- If present, version MUST be v2 or v3
813        subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
814                             -- If present, version MUST be v2 or v3
815        extensions      [3]  EXPLICIT Extensions OPTIONAL
816                             -- If present, version MUST be v3
817        }
818
819   Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }
820
821   CertificateSerialNumber  ::=  INTEGER
822
823   Validity ::= SEQUENCE {
824        notBefore      Time,
825        notAfter       Time }
826
827   Time ::= CHOICE {
828        utcTime        UTCTime,
829        generalTime    GeneralizedTime }
830
831   UniqueIdentifier  ::=  BIT STRING
832
833   SubjectPublicKeyInfo  ::=  SEQUENCE  {
834        algorithm            AlgorithmIdentifier,
835        subjectPublicKey     BIT STRING  }
836
837   Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension
838
839
840
841
842Housley, et. al.            Standards Track                    [Page 15]
843
844RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
845
846
847   Extension  ::=  SEQUENCE  {
848        extnID      OBJECT IDENTIFIER,
849        critical    BOOLEAN DEFAULT FALSE,
850        extnValue   OCTET STRING  }
851
852   The following items describe the X.509 v3 certificate for use in the
853   Internet.
854
8554.1.1  Certificate Fields
856
857   The Certificate is a SEQUENCE of three required fields.  The fields
858   are described in detail in the following subsections.
859
8604.1.1.1  tbsCertificate
861
862   The field contains the names of the subject and issuer, a public key
863   associated with the subject, a validity period, and other associated
864   information.  The fields are described in detail in section 4.1.2;
865   the tbsCertificate usually includes extensions which are described in
866   section 4.2.
867
8684.1.1.2  signatureAlgorithm
869
870   The signatureAlgorithm field contains the identifier for the
871   cryptographic algorithm used by the CA to sign this certificate.
872   [PKIXALGS] lists supported signature algorithms, but other signature
873   algorithms MAY also be supported.
874
875   An algorithm identifier is defined by the following ASN.1 structure:
876
877   AlgorithmIdentifier  ::=  SEQUENCE  {
878        algorithm               OBJECT IDENTIFIER,
879        parameters              ANY DEFINED BY algorithm OPTIONAL  }
880
881   The algorithm identifier is used to identify a cryptographic
882   algorithm.  The OBJECT IDENTIFIER component identifies the algorithm
883   (such as DSA with SHA-1).  The contents of the optional parameters
884   field will vary according to the algorithm identified.
885
886   This field MUST contain the same algorithm identifier as the
887   signature field in the sequence tbsCertificate (section 4.1.2.3).
888
8894.1.1.3  signatureValue
890
891   The signatureValue field contains a digital signature computed upon
892   the ASN.1 DER encoded tbsCertificate.  The ASN.1 DER encoded
893   tbsCertificate is used as the input to the signature function.  This
894
895
896
897
898Housley, et. al.            Standards Track                    [Page 16]
899
900RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
901
902
903   signature value is encoded as a BIT STRING and included in the
904   signature field.  The details of this process are specified for each
905   of algorithms listed in [PKIXALGS].
906
907   By generating this signature, a CA certifies the validity of the
908   information in the tbsCertificate field.  In particular, the CA
909   certifies the binding between the public key material and the subject
910   of the certificate.
911
9124.1.2  TBSCertificate
913
914   The sequence TBSCertificate contains information associated with the
915   subject of the certificate and the CA who issued it.  Every
916   TBSCertificate contains the names of the subject and issuer, a public
917   key associated with the subject, a validity period, a version number,
918   and a serial number; some MAY contain optional unique identifier
919   fields.  The remainder of this section describes the syntax and
920   semantics of these fields.  A TBSCertificate usually includes
921   extensions.  Extensions for the Internet PKI are described in Section
922   4.2.
923
9244.1.2.1  Version
925
926   This field describes the version of the encoded certificate.  When
927   extensions are used, as expected in this profile, version MUST be 3
928   (value is 2).  If no extensions are present, but a UniqueIdentifier
929   is present, the version SHOULD be 2 (value is 1); however version MAY
930   be 3.  If only basic fields are present, the version SHOULD be 1 (the
931   value is omitted from the certificate as the default value); however
932   the version MAY be 2 or 3.
933
934   Implementations SHOULD be prepared to accept any version certificate.
935   At a minimum, conforming implementations MUST recognize version 3
936   certificates.
937
938   Generation of version 2 certificates is not expected by
939   implementations based on this profile.
940
9414.1.2.2  Serial number
942
943   The serial number MUST be a positive integer assigned by the CA to
944   each certificate.  It MUST be unique for each certificate issued by a
945   given CA (i.e., the issuer name and serial number identify a unique
946   certificate).  CAs MUST force the serialNumber to be a non-negative
947   integer.
948
949
950
951
952
953
954Housley, et. al.            Standards Track                    [Page 17]
955
956RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
957
958
959   Given the uniqueness requirements above, serial numbers can be
960   expected to contain long integers.  Certificate users MUST be able to
961   handle serialNumber values up to 20 octets.  Conformant CAs MUST NOT
962   use serialNumber values longer than 20 octets.
963
964   Note: Non-conforming CAs may issue certificates with serial numbers
965   that are negative, or zero.  Certificate users SHOULD be prepared to
966   gracefully handle such certificates.
967
9684.1.2.3  Signature
969
970   This field contains the algorithm identifier for the algorithm used
971   by the CA to sign the certificate.
972
973   This field MUST contain the same algorithm identifier as the
974   signatureAlgorithm field in the sequence Certificate (section
975   4.1.1.2).  The contents of the optional parameters field will vary
976   according to the algorithm identified.  [PKIXALGS] lists the
977   supported signature algorithms, but other signature algorithms MAY
978   also be supported.
979
9804.1.2.4  Issuer
981
982   The issuer field identifies the entity who has signed and issued the
983   certificate.  The issuer field MUST contain a non-empty distinguished
984   name (DN).  The issuer field is defined as the X.501 type Name
985   [X.501].  Name is defined by the following ASN.1 structures:
986
987   Name ::= CHOICE {
988     RDNSequence }
989
990   RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
991
992   RelativeDistinguishedName ::=
993     SET OF AttributeTypeAndValue
994
995   AttributeTypeAndValue ::= SEQUENCE {
996     type     AttributeType,
997     value    AttributeValue }
998
999   AttributeType ::= OBJECT IDENTIFIER
1000
1001   AttributeValue ::= ANY DEFINED BY AttributeType
1002
1003
1004
1005
1006
1007
1008
1009
1010Housley, et. al.            Standards Track                    [Page 18]
1011
1012RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1013
1014
1015   DirectoryString ::= CHOICE {
1016         teletexString           TeletexString (SIZE (1..MAX)),
1017         printableString         PrintableString (SIZE (1..MAX)),
1018         universalString         UniversalString (SIZE (1..MAX)),
1019         utf8String              UTF8String (SIZE (1..MAX)),
1020         bmpString               BMPString (SIZE (1..MAX)) }
1021
1022   The Name describes a hierarchical name composed of attributes, such
1023   as country name, and corresponding values, such as US.  The type of
1024   the component AttributeValue is determined by the AttributeType; in
1025   general it will be a DirectoryString.
1026
1027   The DirectoryString type is defined as a choice of PrintableString,
1028   TeletexString, BMPString, UTF8String, and UniversalString.  The
1029   UTF8String encoding [RFC 2279] is the preferred encoding, and all
1030   certificates issued after December 31, 2003 MUST use the UTF8String
1031   encoding of DirectoryString (except as noted below).  Until that
1032   date, conforming CAs MUST choose from the following options when
1033   creating a distinguished name, including their own:
1034
1035      (a)  if the character set is sufficient, the string MAY be
1036      represented as a PrintableString;
1037
1038      (b)  failing (a), if the BMPString character set is sufficient the
1039      string MAY be represented as a BMPString; and
1040
1041      (c)  failing (a) and (b), the string MUST be represented as a
1042      UTF8String.  If (a) or (b) is satisfied, the CA MAY still choose
1043      to represent the string as a UTF8String.
1044
1045   Exceptions to the December 31, 2003 UTF8 encoding requirements are as
1046   follows:
1047
1048      (a)  CAs MAY issue "name rollover" certificates to support an
1049      orderly migration to UTF8String encoding.  Such certificates would
1050      include the CA's UTF8String encoded name as issuer and and the old
1051      name encoding as subject, or vice-versa.
1052
1053      (b)  As stated in section 4.1.2.6, the subject field MUST be
1054      populated with a non-empty distinguished name matching the
1055      contents of the issuer field in all certificates issued by the
1056      subject CA regardless of encoding.
1057
1058   The TeletexString and UniversalString are included for backward
1059   compatibility, and SHOULD NOT be used for certificates for new
1060   subjects.  However, these types MAY be used in certificates where the
1061   name was previously established.  Certificate users SHOULD be
1062   prepared to receive certificates with these types.
1063
1064
1065
1066Housley, et. al.            Standards Track                    [Page 19]
1067
1068RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1069
1070
1071   In addition, many legacy implementations support names encoded in the
1072   ISO 8859-1 character set (Latin1String) [ISO 8859-1] but tag them as
1073   TeletexString.  TeletexString encodes a larger character set than ISO
1074   8859-1, but it encodes some characters differently.  Implementations
1075   SHOULD be prepared to handle both encodings.
1076
1077   As noted above, distinguished names are composed of attributes.  This
1078   specification does not restrict the set of attribute types that may
1079   appear in names.  However, conforming implementations MUST be
1080   prepared to receive certificates with issuer names containing the set
1081   of attribute types defined below.  This specification RECOMMENDS
1082   support for additional attribute types.
1083
1084   Standard sets of attributes have been defined in the X.500 series of
1085   specifications [X.520].  Implementations of this specification MUST
1086   be prepared to receive the following standard attribute types in
1087   issuer and subject (section 4.1.2.6) names:
1088
1089      * country,
1090      * organization,
1091      * organizational-unit,
1092      * distinguished name qualifier,
1093      * state or province name,
1094      * common name (e.g., "Susan Housley"), and
1095      * serial number.
1096
1097   In addition, implementations of this specification SHOULD be prepared
1098   to receive the following standard attribute types in issuer and
1099   subject names:
1100
1101      * locality,
1102      * title,
1103      * surname,
1104      * given name,
1105      * initials,
1106      * pseudonym, and
1107      * generation qualifier (e.g., "Jr.", "3rd", or "IV").
1108
1109   The syntax and associated object identifiers (OIDs) for these
1110   attribute types are provided in the ASN.1 modules in Appendix A.
1111
1112   In addition, implementations of this specification MUST be prepared
1113   to receive the domainComponent attribute, as defined in [RFC 2247].
1114   The Domain Name System (DNS) provides a hierarchical resource
1115   labeling system.  This attribute provides a convenient mechanism for
1116   organizations that wish to use DNs that parallel their DNS names.
1117   This is not a replacement for the dNSName component of the
1118
1119
1120
1121
1122Housley, et. al.            Standards Track                    [Page 20]
1123
1124RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1125
1126
1127   alternative name field.  Implementations are not required to convert
1128   such names into DNS names.  The syntax and associated OID for this
1129   attribute type is provided in the ASN.1 modules in Appendix A.
1130
1131   Certificate users MUST be prepared to process the issuer
1132   distinguished name and subject distinguished name (section 4.1.2.6)
1133   fields to perform name chaining for certification path validation
1134   (section 6).  Name chaining is performed by matching the issuer
1135   distinguished name in one certificate with the subject name in a CA
1136   certificate.
1137
1138   This specification requires only a subset of the name comparison
1139   functionality specified in the X.500 series of specifications.
1140   Conforming implementations are REQUIRED to implement the following
1141   name comparison rules:
1142
1143      (a)  attribute values encoded in different types (e.g.,
1144      PrintableString and BMPString) MAY be assumed to represent
1145      different strings;
1146
1147      (b) attribute values in types other than PrintableString are case
1148      sensitive (this permits matching of attribute values as binary
1149      objects);
1150
1151      (c)  attribute values in PrintableString are not case sensitive
1152      (e.g., "Marianne Swanson" is the same as "MARIANNE SWANSON"); and
1153
1154      (d)  attribute values in PrintableString are compared after
1155      removing leading and trailing white space and converting internal
1156      substrings of one or more consecutive white space characters to a
1157      single space.
1158
1159   These name comparison rules permit a certificate user to validate
1160   certificates issued using languages or encodings unfamiliar to the
1161   certificate user.
1162
1163   In addition, implementations of this specification MAY use these
1164   comparison rules to process unfamiliar attribute types for name
1165   chaining.  This allows implementations to process certificates with
1166   unfamiliar attributes in the issuer name.
1167
1168   Note that the comparison rules defined in the X.500 series of
1169   specifications indicate that the character sets used to encode data
1170   in distinguished names are irrelevant.  The characters themselves are
1171   compared without regard to encoding.  Implementations of this profile
1172   are permitted to use the comparison algorithm defined in the X.500
1173   series.  Such an implementation will recognize a superset of name
1174   matches recognized by the algorithm specified above.
1175
1176
1177
1178Housley, et. al.            Standards Track                    [Page 21]
1179
1180RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1181
1182
11834.1.2.5  Validity
1184
1185   The certificate validity period is the time interval during which the
1186   CA warrants that it will maintain information about the status of the
1187   certificate.  The field is represented as a SEQUENCE of two dates:
1188   the date on which the certificate validity period begins (notBefore)
1189   and the date on which the certificate validity period ends
1190   (notAfter).  Both notBefore and notAfter may be encoded as UTCTime or
1191   GeneralizedTime.
1192
1193   CAs conforming to this profile MUST always encode certificate
1194   validity dates through the year 2049 as UTCTime; certificate validity
1195   dates in 2050 or later MUST be encoded as GeneralizedTime.
1196
1197   The validity period for a certificate is the period of time from
1198   notBefore through notAfter, inclusive.
1199
12004.1.2.5.1  UTCTime
1201
1202   The universal time type, UTCTime, is a standard ASN.1 type intended
1203   for representation of dates and time.  UTCTime specifies the year
1204   through the two low order digits and time is specified to the
1205   precision of one minute or one second.  UTCTime includes either Z
1206   (for Zulu, or Greenwich Mean Time) or a time differential.
1207
1208   For the purposes of this profile, UTCTime values MUST be expressed
1209   Greenwich Mean Time (Zulu) and MUST include seconds (i.e., times are
1210   YYMMDDHHMMSSZ), even where the number of seconds is zero.  Conforming
1211   systems MUST interpret the year field (YY) as follows:
1212
1213      Where YY is greater than or equal to 50, the year SHALL be
1214      interpreted as 19YY; and
1215
1216      Where YY is less than 50, the year SHALL be interpreted as 20YY.
1217
12184.1.2.5.2  GeneralizedTime
1219
1220   The generalized time type, GeneralizedTime, is a standard ASN.1 type
1221   for variable precision representation of time.  Optionally, the
1222   GeneralizedTime field can include a representation of the time
1223   differential between local and Greenwich Mean Time.
1224
1225   For the purposes of this profile, GeneralizedTime values MUST be
1226   expressed Greenwich Mean Time (Zulu) and MUST include seconds (i.e.,
1227   times are YYYYMMDDHHMMSSZ), even where the number of seconds is zero.
1228   GeneralizedTime values MUST NOT include fractional seconds.
1229
1230
1231
1232
1233
1234Housley, et. al.            Standards Track                    [Page 22]
1235
1236RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1237
1238
12394.1.2.6  Subject
1240
1241   The subject field identifies the entity associated with the public
1242   key stored in the subject public key field.  The subject name MAY be
1243   carried in the subject field and/or the subjectAltName extension.  If
1244   the subject is a CA (e.g., the basic constraints extension, as
1245   discussed in 4.2.1.10, is present and the value of cA is TRUE), then
1246   the subject field MUST be populated with a non-empty distinguished
1247   name matching the contents of the issuer field (section 4.1.2.4) in
1248   all certificates issued by the subject CA.  If the subject is a CRL
1249   issuer (e.g., the key usage extension, as discussed in 4.2.1.3, is
1250   present and the value of cRLSign is TRUE) then the subject field MUST
1251   be populated with a non-empty distinguished name matching the
1252   contents of the issuer field (section 4.1.2.4) in all CRLs issued by
1253   the subject CRL issuer.  If subject naming information is present
1254   only in the subjectAltName extension (e.g., a key bound only to an
1255   email address or URI), then the subject name MUST be an empty
1256   sequence and the subjectAltName extension MUST be critical.
1257
1258   Where it is non-empty, the subject field MUST contain an X.500
1259   distinguished name (DN).  The DN MUST be unique for each subject
1260   entity certified by the one CA as defined by the issuer name field.
1261   A CA MAY issue more than one certificate with the same DN to the same
1262   subject entity.
1263
1264   The subject name field is defined as the X.501 type Name.
1265   Implementation requirements for this field are those defined for the
1266   issuer field (section 4.1.2.4).  When encoding attribute values of
1267   type DirectoryString, the encoding rules for the issuer field MUST be
1268   implemented.  Implementations of this specification MUST be prepared
1269   to receive subject names containing the attribute types required for
1270   the issuer field.  Implementations of this specification SHOULD be
1271   prepared to receive subject names containing the recommended
1272   attribute types for the issuer field.  The syntax and associated
1273   object identifiers (OIDs) for these attribute types are provided in
1274   the ASN.1 modules in Appendix A.  Implementations of this
1275   specification MAY use these comparison rules to process unfamiliar
1276   attribute types (i.e., for name chaining).  This allows
1277   implementations to process certificates with unfamiliar attributes in
1278   the subject name.
1279
1280   In addition, legacy implementations exist where an RFC 822 name is
1281   embedded in the subject distinguished name as an EmailAddress
1282   attribute.  The attribute value for EmailAddress is of type IA5String
1283   to permit inclusion of the character '@', which is not part of the
1284   PrintableString character set.  EmailAddress attribute values are not
1285   case sensitive (e.g., "fanfeedback@redsox.com" is the same as
1286   "FANFEEDBACK@REDSOX.COM").
1287
1288
1289
1290Housley, et. al.            Standards Track                    [Page 23]
1291
1292RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1293
1294
1295   Conforming implementations generating new certificates with
1296   electronic mail addresses MUST use the rfc822Name in the subject
1297   alternative name field (section 4.2.1.7) to describe such identities.
1298   Simultaneous inclusion of the EmailAddress attribute in the subject
1299   distinguished name to support legacy implementations is deprecated
1300   but permitted.
1301
13024.1.2.7  Subject Public Key Info
1303
1304   This field is used to carry the public key and identify the algorithm
1305   with which the key is used (e.g., RSA, DSA, or Diffie-Hellman).  The
1306   algorithm is identified using the AlgorithmIdentifier structure
1307   specified in section 4.1.1.2.  The object identifiers for the
1308   supported algorithms and the methods for encoding the public key
1309   materials (public key and parameters) are specified in [PKIXALGS].
1310
13114.1.2.8  Unique Identifiers
1312
1313   These fields MUST only appear if the version is 2 or 3 (section
1314   4.1.2.1).  These fields MUST NOT appear if the version is 1.  The
1315   subject and issuer unique identifiers are present in the certificate
1316   to handle the possibility of reuse of subject and/or issuer names
1317   over time.  This profile RECOMMENDS that names not be reused for
1318   different entities and that Internet certificates not make use of
1319   unique identifiers.  CAs conforming to this profile SHOULD NOT
1320   generate certificates with unique identifiers.  Applications
1321   conforming to this profile SHOULD be capable of parsing unique
1322   identifiers.
1323
13244.1.2.9  Extensions
1325
1326   This field MUST only appear if the version is 3 (section 4.1.2.1).
1327   If present, this field is a SEQUENCE of one or more certificate
1328   extensions.  The format and content of certificate extensions in the
1329   Internet PKI is defined in section 4.2.
1330
13314.2  Certificate Extensions
1332
1333   The extensions defined for X.509 v3 certificates provide methods for
1334   associating additional attributes with users or public keys and for
1335   managing a certification hierarchy.  The X.509 v3 certificate format
1336   also allows communities to define private extensions to carry
1337   information unique to those communities.  Each extension in a
1338   certificate is designated as either critical or non-critical.  A
1339   certificate using system MUST reject the certificate if it encounters
1340   a critical extension it does not recognize; however, a non-critical
1341   extension MAY be ignored if it is not recognized.  The following
1342   sections present recommended extensions used within Internet
1343
1344
1345
1346Housley, et. al.            Standards Track                    [Page 24]
1347
1348RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1349
1350
1351   certificates and standard locations for information.  Communities may
1352   elect to use additional extensions; however, caution ought to be
1353   exercised in adopting any critical extensions in certificates which
1354   might prevent use in a general context.
1355
1356   Each extension includes an OID and an ASN.1 structure.  When an
1357   extension appears in a certificate, the OID appears as the field
1358   extnID and the corresponding ASN.1 encoded structure is the value of
1359   the octet string extnValue.  A certificate MUST NOT include more than
1360   one instance of a particular extension.  For example, a certificate
1361   may contain only one authority key identifier extension (section
1362   4.2.1.1).  An extension includes the boolean critical, with a default
1363   value of FALSE.  The text for each extension specifies the acceptable
1364   values for the critical field.
1365
1366   Conforming CAs MUST support key identifiers (sections 4.2.1.1 and
1367   4.2.1.2), basic constraints (section 4.2.1.10), key usage (section
1368   4.2.1.3), and certificate policies (section 4.2.1.5) extensions.  If
1369   the CA issues certificates with an empty sequence for the subject
1370   field, the CA MUST support the subject alternative name extension
1371   (section 4.2.1.7).  Support for the remaining extensions is OPTIONAL.
1372   Conforming CAs MAY support extensions that are not identified within
1373   this specification; certificate issuers are cautioned that marking
1374   such extensions as critical may inhibit interoperability.
1375
1376   At a minimum, applications conforming to this profile MUST recognize
1377   the following extensions: key usage (section 4.2.1.3), certificate
1378   policies (section 4.2.1.5), the subject alternative name (section
1379   4.2.1.7), basic constraints (section 4.2.1.10), name constraints
1380   (section 4.2.1.11), policy constraints (section 4.2.1.12), extended
1381   key usage (section 4.2.1.13), and inhibit any-policy (section
1382   4.2.1.15).
1383
1384   In addition, applications conforming to this profile SHOULD recognize
1385   the authority and subject key identifier (sections 4.2.1.1 and
1386   4.2.1.2), and policy mapping (section 4.2.1.6) extensions.
1387
13884.2.1  Standard Extensions
1389
1390   This section identifies standard certificate extensions defined in
1391   [X.509] for use in the Internet PKI.  Each extension is associated
1392   with an OID defined in [X.509].  These OIDs are members of the id-ce
1393   arc, which is defined by the following:
1394
1395   id-ce   OBJECT IDENTIFIER ::=  { joint-iso-ccitt(2) ds(5) 29 }
1396
1397
1398
1399
1400
1401
1402Housley, et. al.            Standards Track                    [Page 25]
1403
1404RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1405
1406
14074.2.1.1  Authority Key Identifier
1408
1409   The authority key identifier extension provides a means of
1410   identifying the public key corresponding to the private key used to
1411   sign a certificate.  This extension is used where an issuer has
1412   multiple signing keys (either due to multiple concurrent key pairs or
1413   due to changeover).  The identification MAY be based on either the
1414   key identifier (the subject key identifier in the issuer's
1415   certificate) or on the issuer name and serial number.
1416
1417   The keyIdentifier field of the authorityKeyIdentifier extension MUST
1418   be included in all certificates generated by conforming CAs to
1419   facilitate certification path construction.  There is one exception;
1420   where a CA distributes its public key in the form of a "self-signed"
1421   certificate, the authority key identifier MAY be omitted.  The
1422   signature on a self-signed certificate is generated with the private
1423   key associated with the certificate's subject public key.  (This
1424   proves that the issuer possesses both the public and private keys.)
1425   In this case, the subject and authority key identifiers would be
1426   identical, but only the subject key identifier is needed for
1427   certification path building.
1428
1429   The value of the keyIdentifier field SHOULD be derived from the
1430   public key used to verify the certificate's signature or a method
1431   that generates unique values.  Two common methods for generating key
1432   identifiers from the public key, and one common method for generating
1433   unique values, are described in section 4.2.1.2.  Where a key
1434   identifier has not been previously established, this specification
1435   RECOMMENDS use of one of these methods for generating keyIdentifiers.
1436   Where a key identifier has been previously established, the CA SHOULD
1437   use the previously established identifier.
1438
1439   This profile RECOMMENDS support for the key identifier method by all
1440   certificate users.
1441
1442   This extension MUST NOT be marked critical.
1443
1444   id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 35 }
1445
1446   AuthorityKeyIdentifier ::= SEQUENCE {
1447      keyIdentifier             [0] KeyIdentifier           OPTIONAL,
1448      authorityCertIssuer       [1] GeneralNames            OPTIONAL,
1449      authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL  }
1450
1451   KeyIdentifier ::= OCTET STRING
1452
1453
1454
1455
1456
1457
1458Housley, et. al.            Standards Track                    [Page 26]
1459
1460RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1461
1462
14634.2.1.2  Subject Key Identifier
1464
1465   The subject key identifier extension provides a means of identifying
1466   certificates that contain a particular public key.
1467
1468   To facilitate certification path construction, this extension MUST
1469   appear in all conforming CA certificates, that is, all certificates
1470   including the basic constraints extension (section 4.2.1.10) where
1471   the value of cA is TRUE.  The value of the subject key identifier
1472   MUST be the value placed in the key identifier field of the Authority
1473   Key Identifier extension (section 4.2.1.1) of certificates issued by
1474   the subject of this certificate.
1475
1476   For CA certificates, subject key identifiers SHOULD be derived from
1477   the public key or a method that generates unique values.  Two common
1478   methods for generating key identifiers from the public key are:
1479
1480      (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the
1481      value of the BIT STRING subjectPublicKey (excluding the tag,
1482      length, and number of unused bits).
1483
1484      (2) The keyIdentifier is composed of a four bit type field with
1485      the value 0100 followed by the least significant 60 bits of the
1486      SHA-1 hash of the value of the BIT STRING subjectPublicKey
1487      (excluding the tag, length, and number of unused bit string bits).
1488
1489   One common method for generating unique values is a monotonically
1490   increasing sequence of integers.
1491
1492   For end entity certificates, the subject key identifier extension
1493   provides a means for identifying certificates containing the
1494   particular public key used in an application.  Where an end entity
1495   has obtained multiple certificates, especially from multiple CAs, the
1496   subject key identifier provides a means to quickly identify the set
1497   of certificates containing a particular public key.  To assist
1498   applications in identifying the appropriate end entity certificate,
1499   this extension SHOULD be included in all end entity certificates.
1500
1501   For end entity certificates, subject key identifiers SHOULD be
1502   derived from the public key.  Two common methods for generating key
1503   identifiers from the public key are identified above.
1504
1505   Where a key identifier has not been previously established, this
1506   specification RECOMMENDS use of one of these methods for generating
1507   keyIdentifiers.  Where a key identifier has been previously
1508   established, the CA SHOULD use the previously established identifier.
1509
1510   This extension MUST NOT be marked critical.
1511
1512
1513
1514Housley, et. al.            Standards Track                    [Page 27]
1515
1516RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1517
1518
1519   id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 14 }
1520
1521   SubjectKeyIdentifier ::= KeyIdentifier
1522
15234.2.1.3  Key Usage
1524
1525   The key usage extension defines the purpose (e.g., encipherment,
1526   signature, certificate signing) of the key contained in the
1527   certificate.  The usage restriction might be employed when a key that
1528   could be used for more than one operation is to be restricted.  For
1529   example, when an RSA key should be used only to verify signatures on
1530   objects other than public key certificates and CRLs, the
1531   digitalSignature and/or nonRepudiation bits would be asserted.
1532   Likewise, when an RSA key should be used only for key management, the
1533   keyEncipherment bit would be asserted.
1534
1535   This extension MUST appear in certificates that contain public keys
1536   that are used to validate digital signatures on other public key
1537   certificates or CRLs.  When this extension appears, it SHOULD be
1538   marked critical.
1539
1540      id-ce-keyUsage OBJECT IDENTIFIER ::=  { id-ce 15 }
1541
1542      KeyUsage ::= BIT STRING {
1543           digitalSignature        (0),
1544           nonRepudiation          (1),
1545           keyEncipherment         (2),
1546           dataEncipherment        (3),
1547           keyAgreement            (4),
1548           keyCertSign             (5),
1549           cRLSign                 (6),
1550           encipherOnly            (7),
1551           decipherOnly            (8) }
1552
1553   Bits in the KeyUsage type are used as follows:
1554
1555      The digitalSignature bit is asserted when the subject public key
1556      is used with a digital signature mechanism to support security
1557      services other than certificate signing (bit 5), or CRL signing
1558      (bit 6).  Digital signature mechanisms are often used for entity
1559      authentication and data origin authentication with integrity.
1560
1561      The nonRepudiation bit is asserted when the subject public key is
1562      used to verify digital signatures used to provide a non-
1563      repudiation service which protects against the signing entity
1564      falsely denying some action, excluding certificate or CRL signing.
1565      In the case of later conflict, a reliable third party may
1566      determine the authenticity of the signed data.
1567
1568
1569
1570Housley, et. al.            Standards Track                    [Page 28]
1571
1572RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1573
1574
1575      Further distinctions between the digitalSignature and
1576      nonRepudiation bits may be provided in specific certificate
1577      policies.
1578
1579      The keyEncipherment bit is asserted when the subject public key is
1580      used for key transport.  For example, when an RSA key is to be
1581      used for key management, then this bit is set.
1582
1583      The dataEncipherment bit is asserted when the subject public key
1584      is used for enciphering user data, other than cryptographic keys.
1585
1586      The keyAgreement bit is asserted when the subject public key is
1587      used for key agreement.  For example, when a Diffie-Hellman key is
1588      to be used for key management, then this bit is set.
1589
1590      The keyCertSign bit is asserted when the subject public key is
1591      used for verifying a signature on public key certificates.  If the
1592      keyCertSign bit is asserted, then the cA bit in the basic
1593      constraints extension (section 4.2.1.10) MUST also be asserted.
1594
1595      The cRLSign bit is asserted when the subject public key is used
1596      for verifying a signature on certificate revocation list (e.g., a
1597      CRL, delta CRL, or an ARL).  This bit MUST be asserted in
1598      certificates that are used to verify signatures on CRLs.
1599
1600      The meaning of the encipherOnly bit is undefined in the absence of
1601      the keyAgreement bit.  When the encipherOnly bit is asserted and
1602      the keyAgreement bit is also set, the subject public key may be
1603      used only for enciphering data while performing key agreement.
1604
1605      The meaning of the decipherOnly bit is undefined in the absence of
1606      the keyAgreement bit.  When the decipherOnly bit is asserted and
1607      the keyAgreement bit is also set, the subject public key may be
1608      used only for deciphering data while performing key agreement.
1609
1610   This profile does not restrict the combinations of bits that may be
1611   set in an instantiation of the keyUsage extension.  However,
1612   appropriate values for keyUsage extensions for particular algorithms
1613   are specified in [PKIXALGS].
1614
16154.2.1.4  Private Key Usage Period
1616
1617   This extension SHOULD NOT be used within the Internet PKI.  CAs
1618   conforming to this profile MUST NOT generate certificates that
1619   include a critical private key usage period extension.
1620
1621
1622
1623
1624
1625
1626Housley, et. al.            Standards Track                    [Page 29]
1627
1628RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1629
1630
1631   The private key usage period extension allows the certificate issuer
1632   to specify a different validity period for the private key than the
1633   certificate.  This extension is intended for use with digital
1634   signature keys.  This extension consists of two optional components,
1635   notBefore and notAfter.  The private key associated with the
1636   certificate SHOULD NOT be used to sign objects before or after the
1637   times specified by the two components, respectively.  CAs conforming
1638   to this profile MUST NOT generate certificates with private key usage
1639   period extensions unless at least one of the two components is
1640   present and the extension is non-critical.
1641
1642   Where used, notBefore and notAfter are represented as GeneralizedTime
1643   and MUST be specified and interpreted as defined in section
1644   4.1.2.5.2.
1645
1646   id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::=  { id-ce 16 }
1647
1648   PrivateKeyUsagePeriod ::= SEQUENCE {
1649        notBefore       [0]     GeneralizedTime OPTIONAL,
1650        notAfter        [1]     GeneralizedTime OPTIONAL }
1651
16524.2.1.5  Certificate Policies
1653
1654   The certificate policies extension contains a sequence of one or more
1655   policy information terms, each of which consists of an object
1656   identifier (OID) and optional qualifiers.  Optional qualifiers, which
1657   MAY be present, are not expected to change the definition of the
1658   policy.
1659
1660   In an end entity certificate, these policy information terms indicate
1661   the policy under which the certificate has been issued and the
1662   purposes for which the certificate may be used.  In a CA certificate,
1663   these policy information terms limit the set of policies for
1664   certification paths which include this certificate.  When a CA does
1665   not wish to limit the set of policies for certification paths which
1666   include this certificate, it MAY assert the special policy anyPolicy,
1667   with a value of { 2 5 29 32 0 }.
1668
1669   Applications with specific policy requirements are expected to have a
1670   list of those policies which they will accept and to compare the
1671   policy OIDs in the certificate to that list.  If this extension is
1672   critical, the path validation software MUST be able to interpret this
1673   extension (including the optional qualifier), or MUST reject the
1674   certificate.
1675
1676   To promote interoperability, this profile RECOMMENDS that policy
1677   information terms consist of only an OID.  Where an OID alone is
1678   insufficient, this profile strongly recommends that use of qualifiers
1679
1680
1681
1682Housley, et. al.            Standards Track                    [Page 30]
1683
1684RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1685
1686
1687   be limited to those identified in this section.  When qualifiers are
1688   used with the special policy anyPolicy, they MUST be limited to the
1689   qualifiers identified in this section.
1690
1691   This specification defines two policy qualifier types for use by
1692   certificate policy writers and certificate issuers.  The qualifier
1693   types are the CPS Pointer and User Notice qualifiers.
1694
1695   The CPS Pointer qualifier contains a pointer to a Certification
1696   Practice Statement (CPS) published by the CA.  The pointer is in the
1697   form of a URI.  Processing requirements for this qualifier are a
1698   local matter.  No action is mandated by this specification regardless
1699   of the criticality value asserted for the extension.
1700
1701   User notice is intended for display to a relying party when a
1702   certificate is used.  The application software SHOULD display all
1703   user notices in all certificates of the certification path used,
1704   except that if a notice is duplicated only one copy need be
1705   displayed.  To prevent such duplication, this qualifier SHOULD only
1706   be present in end entity certificates and CA certificates issued to
1707   other organizations.
1708
1709   The user notice has two optional fields: the noticeRef field and the
1710   explicitText field.
1711
1712      The noticeRef field, if used, names an organization and
1713      identifies, by number, a particular textual statement prepared by
1714      that organization.  For example, it might identify the
1715      organization "CertsRUs" and notice number 1.  In a typical
1716      implementation, the application software will have a notice file
1717      containing the current set of notices for CertsRUs; the
1718      application will extract the notice text from the file and display
1719      it.  Messages MAY be multilingual, allowing the software to select
1720      the particular language message for its own environment.
1721
1722      An explicitText field includes the textual statement directly in
1723      the certificate.  The explicitText field is a string with a
1724      maximum size of 200 characters.
1725
1726   If both the noticeRef and explicitText options are included in the
1727   one qualifier and if the application software can locate the notice
1728   text indicated by the noticeRef option, then that text SHOULD be
1729   displayed; otherwise, the explicitText string SHOULD be displayed.
1730
1731   Note: While the explicitText has a maximum size of 200 characters,
1732   some non-conforming CAs exceed this limit.  Therefore, certificate
1733   users SHOULD gracefully handle explicitText with more than 200
1734   characters.
1735
1736
1737
1738Housley, et. al.            Standards Track                    [Page 31]
1739
1740RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1741
1742
1743   id-ce-certificatePolicies OBJECT IDENTIFIER ::=  { id-ce 32 }
1744
1745   anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificate-policies 0 }
1746
1747   certificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
1748
1749   PolicyInformation ::= SEQUENCE {
1750        policyIdentifier   CertPolicyId,
1751        policyQualifiers   SEQUENCE SIZE (1..MAX) OF
1752                                PolicyQualifierInfo OPTIONAL }
1753
1754   CertPolicyId ::= OBJECT IDENTIFIER
1755
1756   PolicyQualifierInfo ::= SEQUENCE {
1757        policyQualifierId  PolicyQualifierId,
1758        qualifier          ANY DEFINED BY policyQualifierId }
1759
1760   -- policyQualifierIds for Internet policy qualifiers
1761
1762   id-qt          OBJECT IDENTIFIER ::=  { id-pkix 2 }
1763   id-qt-cps      OBJECT IDENTIFIER ::=  { id-qt 1 }
1764   id-qt-unotice  OBJECT IDENTIFIER ::=  { id-qt 2 }
1765
1766   PolicyQualifierId ::=
1767        OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
1768
1769   Qualifier ::= CHOICE {
1770        cPSuri           CPSuri,
1771        userNotice       UserNotice }
1772
1773   CPSuri ::= IA5String
1774
1775   UserNotice ::= SEQUENCE {
1776        noticeRef        NoticeReference OPTIONAL,
1777        explicitText     DisplayText OPTIONAL}
1778
1779   NoticeReference ::= SEQUENCE {
1780        organization     DisplayText,
1781        noticeNumbers    SEQUENCE OF INTEGER }
1782
1783   DisplayText ::= CHOICE {
1784        ia5String        IA5String      (SIZE (1..200)),
1785        visibleString    VisibleString  (SIZE (1..200)),
1786        bmpString        BMPString      (SIZE (1..200)),
1787        utf8String       UTF8String     (SIZE (1..200)) }
1788
1789
1790
1791
1792
1793
1794Housley, et. al.            Standards Track                    [Page 32]
1795
1796RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1797
1798
17994.2.1.6  Policy Mappings
1800
1801   This extension is used in CA certificates.  It lists one or more
1802   pairs of OIDs; each pair includes an issuerDomainPolicy and a
1803   subjectDomainPolicy.  The pairing indicates the issuing CA considers
1804   its issuerDomainPolicy equivalent to the subject CA's
1805   subjectDomainPolicy.
1806
1807   The issuing CA's users might accept an issuerDomainPolicy for certain
1808   applications.  The policy mapping defines the list of policies
1809   associated with the subject CA that may be accepted as comparable to
1810   the issuerDomainPolicy.
1811
1812   Each issuerDomainPolicy named in the policy mapping extension SHOULD
1813   also be asserted in a certificate policies extension in the same
1814   certificate.  Policies SHOULD NOT be mapped either to or from the
1815   special value anyPolicy (section 4.2.1.5).
1816
1817   This extension MAY be supported by CAs and/or applications, and it
1818   MUST be non-critical.
1819
1820   id-ce-policyMappings OBJECT IDENTIFIER ::=  { id-ce 33 }
1821
1822   PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
1823        issuerDomainPolicy      CertPolicyId,
1824        subjectDomainPolicy     CertPolicyId }
1825
18264.2.1.7  Subject Alternative Name
1827
1828   The subject alternative names extension allows additional identities
1829   to be bound to the subject of the certificate.  Defined options
1830   include an Internet electronic mail address, a DNS name, an IP
1831   address, and a uniform resource identifier (URI).  Other options
1832   exist, including completely local definitions.  Multiple name forms,
1833   and multiple instances of each name form, MAY be included.  Whenever
1834   such identities are to be bound into a certificate, the subject
1835   alternative name (or issuer alternative name) extension MUST be used;
1836   however, a DNS name MAY be represented in the subject field using the
1837   domainComponent attribute as described in section 4.1.2.4.
1838
1839   Because the subject alternative name is considered to be definitively
1840   bound to the public key, all parts of the subject alternative name
1841   MUST be verified by the CA.
1842
1843   Further, if the only subject identity included in the certificate is
1844   an alternative name form (e.g., an electronic mail address), then the
1845   subject distinguished name MUST be empty (an empty sequence), and the
1846
1847
1848
1849
1850Housley, et. al.            Standards Track                    [Page 33]
1851
1852RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1853
1854
1855   subjectAltName extension MUST be present.  If the subject field
1856   contains an empty sequence, the subjectAltName extension MUST be
1857   marked critical.
1858
1859   When the subjectAltName extension contains an Internet mail address,
1860   the address MUST be included as an rfc822Name.  The format of an
1861   rfc822Name is an "addr-spec" as defined in RFC 822 [RFC 822].  An
1862   addr-spec has the form "local-part@domain".  Note that an addr-spec
1863   has no phrase (such as a common name) before it, has no comment (text
1864   surrounded in parentheses) after it, and is not surrounded by "<" and
1865   ">".  Note that while upper and lower case letters are allowed in an
1866   RFC 822 addr-spec, no significance is attached to the case.
1867
1868   When the subjectAltName extension contains a iPAddress, the address
1869   MUST be stored in the octet string in "network byte order," as
1870   specified in RFC 791 [RFC 791].  The least significant bit (LSB) of
1871   each octet is the LSB of the corresponding byte in the network
1872   address.  For IP Version 4, as specified in RFC 791, the octet string
1873   MUST contain exactly four octets.  For IP Version 6, as specified in
1874   RFC 1883, the octet string MUST contain exactly sixteen octets [RFC
1875   1883].
1876
1877   When the subjectAltName extension contains a domain name system
1878   label, the domain name MUST be stored in the dNSName (an IA5String).
1879   The name MUST be in the "preferred name syntax," as specified by RFC
1880   1034 [RFC 1034].  Note that while upper and lower case letters are
1881   allowed in domain names, no signifigance is attached to the case.  In
1882   addition, while the string " " is a legal domain name, subjectAltName
1883   extensions with a dNSName of " " MUST NOT be used.  Finally, the use
1884   of the DNS representation for Internet mail addresses (wpolk.nist.gov
1885   instead of wpolk@nist.gov) MUST NOT be used; such identities are to
1886   be encoded as rfc822Name.
1887
1888   Note: work is currently underway to specify domain names in
1889   international character sets.  Such names will likely not be
1890   accommodated by IA5String.  Once this work is complete, this profile
1891   will be revisited and the appropriate functionality will be added.
1892
1893   When the subjectAltName extension contains a URI, the name MUST be
1894   stored in the uniformResourceIdentifier (an IA5String).  The name
1895   MUST NOT be a relative URL, and it MUST follow the URL syntax and
1896   encoding rules specified in [RFC 1738].  The name MUST include both a
1897   scheme (e.g., "http" or "ftp") and a scheme-specific-part.  The
1898   scheme-specific-part MUST include a fully qualified domain name or IP
1899   address as the host.
1900
1901
1902
1903
1904
1905
1906Housley, et. al.            Standards Track                    [Page 34]
1907
1908RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1909
1910
1911   As specified in [RFC 1738], the scheme name is not case-sensitive
1912   (e.g., "http" is equivalent to "HTTP").  The host part is also not
1913   case-sensitive, but other components of the scheme-specific-part may
1914   be case-sensitive.  When comparing URIs, conforming implementations
1915   MUST compare the scheme and host without regard to case, but assume
1916   the remainder of the scheme-specific-part is case sensitive.
1917
1918   When the subjectAltName extension contains a DN in the directoryName,
1919   the DN MUST be unique for each subject entity certified by the one CA
1920   as defined by the issuer name field.  A CA MAY issue more than one
1921   certificate with the same DN to the same subject entity.
1922
1923   The subjectAltName MAY carry additional name types through the use of
1924   the otherName field.  The format and semantics of the name are
1925   indicated through the OBJECT IDENTIFIER in the type-id field.  The
1926   name itself is conveyed as value field in otherName.  For example,
1927   Kerberos [RFC 1510] format names can be encoded into the otherName,
1928   using using a Kerberos 5 principal name OID and a SEQUENCE of the
1929   Realm and the PrincipalName.
1930
1931   Subject alternative names MAY be constrained in the same manner as
1932   subject distinguished names using the name constraints extension as
1933   described in section 4.2.1.11.
1934
1935   If the subjectAltName extension is present, the sequence MUST contain
1936   at least one entry.  Unlike the subject field, conforming CAs MUST
1937   NOT issue certificates with subjectAltNames containing empty
1938   GeneralName fields.  For example, an rfc822Name is represented as an
1939   IA5String.  While an empty string is a valid IA5String, such an
1940   rfc822Name is not permitted by this profile.  The behavior of clients
1941   that encounter such a certificate when processing a certificication
1942   path is not defined by this profile.
1943
1944   Finally, the semantics of subject alternative names that include
1945   wildcard characters (e.g., as a placeholder for a set of names) are
1946   not addressed by this specification.  Applications with specific
1947   requirements MAY use such names, but they must define the semantics.
1948
1949   id-ce-subjectAltName OBJECT IDENTIFIER ::=  { id-ce 17 }
1950
1951   SubjectAltName ::= GeneralNames
1952
1953   GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
1954
1955
1956
1957
1958
1959
1960
1961
1962Housley, et. al.            Standards Track                    [Page 35]
1963
1964RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
1965
1966
1967   GeneralName ::= CHOICE {
1968        otherName                       [0]     OtherName,
1969        rfc822Name                      [1]     IA5String,
1970        dNSName                         [2]     IA5String,
1971        x400Address                     [3]     ORAddress,
1972        directoryName                   [4]     Name,
1973        ediPartyName                    [5]     EDIPartyName,
1974        uniformResourceIdentifier       [6]     IA5String,
1975        iPAddress                       [7]     OCTET STRING,
1976        registeredID                    [8]     OBJECT IDENTIFIER }
1977
1978   OtherName ::= SEQUENCE {
1979        type-id    OBJECT IDENTIFIER,
1980        value      [0] EXPLICIT ANY DEFINED BY type-id }
1981
1982   EDIPartyName ::= SEQUENCE {
1983        nameAssigner            [0]     DirectoryString OPTIONAL,
1984        partyName               [1]     DirectoryString }
1985
19864.2.1.8  Issuer Alternative Names
1987
1988   As with 4.2.1.7, this extension is used to associate Internet style
1989   identities with the certificate issuer.  Issuer alternative names
1990   MUST be encoded as in 4.2.1.7.
1991
1992   Where present, this extension SHOULD NOT be marked critical.
1993
1994   id-ce-issuerAltName OBJECT IDENTIFIER ::=  { id-ce 18 }
1995
1996   IssuerAltName ::= GeneralNames
1997
19984.2.1.9  Subject Directory Attributes
1999
2000   The subject directory attributes extension is used to convey
2001   identification attributes (e.g., nationality) of the subject.  The
2002   extension is defined as a sequence of one or more attributes.  This
2003   extension MUST be non-critical.
2004
2005   id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::=  { id-ce 9 }
2006
2007   SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
2008
20094.2.1.10  Basic Constraints
2010
2011   The basic constraints extension identifies whether the subject of the
2012   certificate is a CA and the maximum depth of valid certification
2013   paths that include this certificate.
2014
2015
2016
2017
2018Housley, et. al.            Standards Track                    [Page 36]
2019
2020RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2021
2022
2023   The cA boolean indicates whether the certified public key belongs to
2024   a CA.  If the cA boolean is not asserted, then the keyCertSign bit in
2025   the key usage extension MUST NOT be asserted.
2026
2027   The pathLenConstraint field is meaningful only if the cA boolean is
2028   asserted and the key usage extension asserts the keyCertSign bit
2029   (section 4.2.1.3).  In this case, it gives the maximum number of non-
2030   self-issued intermediate certificates that may follow this
2031   certificate in a valid certification path.  A certificate is self-
2032   issued if the DNs that appear in the subject and issuer fields are
2033   identical and are not empty.  (Note: The last certificate in the
2034   certification path is not an intermediate certificate, and is not
2035   included in this limit.  Usually, the last certificate is an end
2036   entity certificate, but it can be a CA certificate.)  A
2037   pathLenConstraint of zero indicates that only one more certificate
2038   may follow in a valid certification path.  Where it appears, the
2039   pathLenConstraint field MUST be greater than or equal to zero.  Where
2040   pathLenConstraint does not appear, no limit is imposed.
2041
2042   This extension MUST appear as a critical extension in all CA
2043   certificates that contain public keys used to validate digital
2044   signatures on certificates.  This extension MAY appear as a critical
2045   or non-critical extension in CA certificates that contain public keys
2046   used exclusively for purposes other than validating digital
2047   signatures on certificates.  Such CA certificates include ones that
2048   contain public keys used exclusively for validating digital
2049   signatures on CRLs and ones that contain key management public keys
2050   used with certificate enrollment protocols.  This extension MAY
2051   appear as a critical or non-critical extension in end entity
2052   certificates.
2053
2054   CAs MUST NOT include the pathLenConstraint field unless the cA
2055   boolean is asserted and the key usage extension asserts the
2056   keyCertSign bit.
2057
2058   id-ce-basicConstraints OBJECT IDENTIFIER ::=  { id-ce 19 }
2059
2060   BasicConstraints ::= SEQUENCE {
2061        cA                      BOOLEAN DEFAULT FALSE,
2062        pathLenConstraint       INTEGER (0..MAX) OPTIONAL }
2063
20644.2.1.11  Name Constraints
2065
2066   The name constraints extension, which MUST be used only in a CA
2067   certificate, indicates a name space within which all subject names in
2068   subsequent certificates in a certification path MUST be located.
2069   Restrictions apply to the subject distinguished name and apply to
2070   subject alternative names.  Restrictions apply only when the
2071
2072
2073
2074Housley, et. al.            Standards Track                    [Page 37]
2075
2076RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2077
2078
2079   specified name form is present.  If no name of the type is in the
2080   certificate, the certificate is acceptable.
2081
2082   Name constraints are not applied to certificates whose issuer and
2083   subject are identical (unless the certificate is the final
2084   certificate in the path).  (This could prevent CAs that use name
2085   constraints from employing self-issued certificates to implement key
2086   rollover.)
2087
2088   Restrictions are defined in terms of permitted or excluded name
2089   subtrees.  Any name matching a restriction in the excludedSubtrees
2090   field is invalid regardless of information appearing in the
2091   permittedSubtrees.  This extension MUST be critical.
2092
2093   Within this profile, the minimum and maximum fields are not used with
2094   any name forms, thus minimum MUST be zero, and maximum MUST be
2095   absent.
2096
2097   For URIs, the constraint applies to the host part of the name.  The
2098   constraint MAY specify a host or a domain.  Examples would be
2099   "foo.bar.com";  and ".xyz.com".  When the the constraint begins with
2100   a period, it MAY be expanded with one or more subdomains.  That is,
2101   the constraint ".xyz.com" is satisfied by both abc.xyz.com and
2102   abc.def.xyz.com.  However, the constraint ".xyz.com" is not satisfied
2103   by "xyz.com".  When the constraint does not begin with a period, it
2104   specifies a host.
2105
2106   A name constraint for Internet mail addresses MAY specify a
2107   particular mailbox, all addresses at a particular host, or all
2108   mailboxes in a domain.  To indicate a particular mailbox, the
2109   constraint is the complete mail address.  For example, "root@xyz.com"
2110   indicates the root mailbox on the host "xyz.com".  To indicate all
2111   Internet mail addresses on a particular host, the constraint is
2112   specified as the host name.  For example, the constraint "xyz.com" is
2113   satisfied by any mail address at the host "xyz.com".  To specify any
2114   address within a domain, the constraint is specified with a leading
2115   period (as with URIs).  For example, ".xyz.com" indicates all the
2116   Internet mail addresses in the domain "xyz.com", but not Internet
2117   mail addresses on the host "xyz.com".
2118
2119   DNS name restrictions are expressed as foo.bar.com.  Any DNS name
2120   that can be constructed by simply adding to the left hand side of the
2121   name satisfies the name constraint.  For example, www.foo.bar.com
2122   would satisfy the constraint but foo1.bar.com would not.
2123
2124   Legacy implementations exist where an RFC 822 name is embedded in the
2125   subject distinguished name in an attribute of type EmailAddress
2126   (section 4.1.2.6).  When rfc822 names are constrained, but the
2127
2128
2129
2130Housley, et. al.            Standards Track                    [Page 38]
2131
2132RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2133
2134
2135   certificate does not include a subject alternative name, the rfc822
2136   name constraint MUST be applied to the attribute of type EmailAddress
2137   in the subject distinguished name.  The ASN.1 syntax for EmailAddress
2138   and the corresponding OID are supplied in Appendix A.
2139
2140   Restrictions of the form directoryName MUST be applied to the subject
2141   field in the certificate and to the subjectAltName extensions of type
2142   directoryName.  Restrictions of the form x400Address MUST be applied
2143   to subjectAltName extensions of type x400Address.
2144
2145   When applying restrictions of the form directoryName, an
2146   implementation MUST compare DN attributes.  At a minimum,
2147   implementations MUST perform the DN comparison rules specified in
2148   Section 4.1.2.4.  CAs issuing certificates with a restriction of the
2149   form directoryName SHOULD NOT rely on implementation of the full ISO
2150   DN name comparison algorithm.  This implies name restrictions MUST be
2151   stated identically to the encoding used in the subject field or
2152   subjectAltName extension.
2153
2154   The syntax of iPAddress MUST be as described in section 4.2.1.7 with
2155   the following additions specifically for Name Constraints.  For IPv4
2156   addresses, the ipAddress field of generalName MUST contain eight (8)
2157   octets, encoded in the style of RFC 1519 (CIDR) to represent an
2158   address range [RFC 1519].  For IPv6 addresses, the ipAddress field
2159   MUST contain 32 octets similarly encoded.  For example, a name
2160   constraint for "class C" subnet 10.9.8.0 is represented as the octets
2161   0A 09 08 00 FF FF FF 00, representing the CIDR notation
2162   10.9.8.0/255.255.255.0.
2163
2164   The syntax and semantics for name constraints for otherName,
2165   ediPartyName, and registeredID are not defined by this specification.
2166
2167      id-ce-nameConstraints OBJECT IDENTIFIER ::=  { id-ce 30 }
2168
2169      NameConstraints ::= SEQUENCE {
2170           permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
2171           excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }
2172
2173      GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
2174
2175      GeneralSubtree ::= SEQUENCE {
2176           base                    GeneralName,
2177           minimum         [0]     BaseDistance DEFAULT 0,
2178           maximum         [1]     BaseDistance OPTIONAL }
2179
2180      BaseDistance ::= INTEGER (0..MAX)
2181
2182
2183
2184
2185
2186Housley, et. al.            Standards Track                    [Page 39]
2187
2188RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2189
2190
21914.2.1.12  Policy Constraints
2192
2193   The policy constraints extension can be used in certificates issued
2194   to CAs.  The policy constraints extension constrains path validation
2195   in two ways.  It can be used to prohibit policy mapping or require
2196   that each certificate in a path contain an acceptable policy
2197   identifier.
2198
2199   If the inhibitPolicyMapping field is present, the value indicates the
2200   number of additional certificates that may appear in the path before
2201   policy mapping is no longer permitted.  For example, a value of one
2202   indicates that policy mapping may be processed in certificates issued
2203   by the subject of this certificate, but not in additional
2204   certificates in the path.
2205
2206   If the requireExplicitPolicy field is present, the value of
2207   requireExplicitPolicy indicates the number of additional certificates
2208   that may appear in the path before an explicit policy is required for
2209   the entire path.  When an explicit policy is required, it is
2210   necessary for all certificates in the path to contain an acceptable
2211   policy identifier in the certificate policies extension.  An
2212   acceptable policy identifier is the identifier of a policy required
2213   by the user of the certification path or the identifier of a policy
2214   which has been declared equivalent through policy mapping.
2215
2216   Conforming CAs MUST NOT issue certificates where policy constraints
2217   is a empty sequence.  That is, at least one of the
2218   inhibitPolicyMapping field or the requireExplicitPolicy field MUST be
2219   present.  The behavior of clients that encounter a empty policy
2220   constraints field is not addressed in this profile.
2221
2222   This extension MAY be critical or non-critical.
2223
2224   id-ce-policyConstraints OBJECT IDENTIFIER ::=  { id-ce 36 }
2225
2226   PolicyConstraints ::= SEQUENCE {
2227        requireExplicitPolicy           [0] SkipCerts OPTIONAL,
2228        inhibitPolicyMapping            [1] SkipCerts OPTIONAL }
2229
2230   SkipCerts ::= INTEGER (0..MAX)
2231
22324.2.1.13  Extended Key Usage
2233
2234   This extension indicates one or more purposes for which the certified
2235   public key may be used, in addition to or in place of the basic
2236   purposes indicated in the key usage extension.  In general, this
2237   extension will appear only in end entity certificates.  This
2238   extension is defined as follows:
2239
2240
2241
2242Housley, et. al.            Standards Track                    [Page 40]
2243
2244RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2245
2246
2247   id-ce-extKeyUsage OBJECT IDENTIFIER ::= { id-ce 37 }
2248
2249   ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
2250
2251   KeyPurposeId ::= OBJECT IDENTIFIER
2252
2253   Key purposes may be defined by any organization with a need.  Object
2254   identifiers used to identify key purposes MUST be assigned in
2255   accordance with IANA or ITU-T Recommendation X.660 [X.660].
2256
2257   This extension MAY, at the option of the certificate issuer, be
2258   either critical or non-critical.
2259
2260   If the extension is present, then the certificate MUST only be used
2261   for one of the purposes indicated.  If multiple purposes are
2262   indicated the application need not recognize all purposes indicated,
2263   as long as the intended purpose is present.  Certificate using
2264   applications MAY require that a particular purpose be indicated in
2265   order for the certificate to be acceptable to that application.
2266
2267   If a CA includes extended key usages to satisfy such applications,
2268   but does not wish to restrict usages of the key, the CA can include
2269   the special keyPurposeID anyExtendedKeyUsage.  If the
2270   anyExtendedKeyUsage keyPurposeID is present, the extension SHOULD NOT
2271   be critical.
2272
2273   If a certificate contains both a key usage extension and an extended
2274   key usage extension, then both extensions MUST be processed
2275   independently and the certificate MUST only be used for a purpose
2276   consistent with both extensions.  If there is no purpose consistent
2277   with both extensions, then the certificate MUST NOT be used for any
2278   purpose.
2279
2280   The following key usage purposes are defined:
2281
2282   anyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 }
2283
2284   id-kp OBJECT IDENTIFIER ::= { id-pkix 3 }
2285
2286   id-kp-serverAuth             OBJECT IDENTIFIER ::= { id-kp 1 }
2287   -- TLS WWW server authentication
2288   -- Key usage bits that may be consistent: digitalSignature,
2289   -- keyEncipherment or keyAgreement
2290
2291   id-kp-clientAuth             OBJECT IDENTIFIER ::= { id-kp 2 }
2292   -- TLS WWW client authentication
2293   -- Key usage bits that may be consistent: digitalSignature
2294   -- and/or keyAgreement
2295
2296
2297
2298Housley, et. al.            Standards Track                    [Page 41]
2299
2300RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2301
2302
2303   id-kp-codeSigning             OBJECT IDENTIFIER ::= { id-kp 3 }
2304   -- Signing of downloadable executable code
2305   -- Key usage bits that may be consistent: digitalSignature
2306
2307   id-kp-emailProtection         OBJECT IDENTIFIER ::= { id-kp 4 }
2308   -- E-mail protection
2309   -- Key usage bits that may be consistent: digitalSignature,
2310   -- nonRepudiation, and/or (keyEncipherment or keyAgreement)
2311
2312   id-kp-timeStamping            OBJECT IDENTIFIER ::= { id-kp 8 }
2313   -- Binding the hash of an object to a time
2314   -- Key usage bits that may be consistent: digitalSignature
2315   -- and/or nonRepudiation
2316
2317   id-kp-OCSPSigning            OBJECT IDENTIFIER ::= { id-kp 9 }
2318   -- Signing OCSP responses
2319   -- Key usage bits that may be consistent: digitalSignature
2320   -- and/or nonRepudiation
2321
23224.2.1.14  CRL Distribution Points
2323
2324   The CRL distribution points extension identifies how CRL information
2325   is obtained.  The extension SHOULD be non-critical, but this profile
2326   RECOMMENDS support for this extension by CAs and applications.
2327   Further discussion of CRL management is contained in section 5.
2328
2329   The cRLDistributionPoints extension is a SEQUENCE of
2330   DistributionPoint.  A DistributionPoint consists of three fields,
2331   each of which is optional: distributionPoint, reasons, and cRLIssuer.
2332   While each of these fields is optional, a DistributionPoint MUST NOT
2333   consist of only the reasons field; either distributionPoint or
2334   cRLIssuer MUST be present.  If the certificate issuer is not the CRL
2335   issuer, then the cRLIssuer field MUST be present and contain the Name
2336   of the CRL issuer.  If the certificate issuer is also the CRL issuer,
2337   then the cRLIssuer field MUST be omitted and the distributionPoint
2338   field MUST be present.  If the distributionPoint field is omitted,
2339   cRLIssuer MUST be present and include a Name corresponding to an
2340   X.500 or LDAP directory entry where the CRL is located.
2341
2342   When the distributionPoint field is present, it contains either a
2343   SEQUENCE of general names or a single value, nameRelativeToCRLIssuer.
2344   If the cRLDistributionPoints extension contains a general name of
2345   type URI, the following semantics MUST be assumed: the URI is a
2346   pointer to the current CRL for the associated reasons and will be
2347   issued by the associated cRLIssuer.  The expected values for the URI
2348   are those defined in 4.2.1.7.  Processing rules for other values are
2349   not defined by this specification.
2350
2351
2352
2353
2354Housley, et. al.            Standards Track                    [Page 42]
2355
2356RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2357
2358
2359   If the DistributionPointName contains multiple values, each name
2360   describes a different mechanism to obtain the same CRL.  For example,
2361   the same CRL could be available for retrieval through both LDAP and
2362   HTTP.
2363
2364   If the DistributionPointName contains the single value
2365   nameRelativeToCRLIssuer, the value provides a distinguished name
2366   fragment.  The fragment is appended to the X.500 distinguished name
2367   of the CRL issuer to obtain the distribution point name.  If the
2368   cRLIssuer field in the DistributionPoint is present, then the name
2369   fragment is appended to the distinguished name that it contains;
2370   otherwise, the name fragment is appended to the certificate issuer
2371   distinguished name.  The DistributionPointName MUST NOT use the
2372   nameRealtiveToCRLIssuer alternative when cRLIssuer contains more than
2373   one distinguished name.
2374
2375   If the DistributionPoint omits the reasons field, the CRL MUST
2376   include revocation information for all reasons.
2377
2378   The cRLIssuer identifies the entity who signs and issues the CRL.  If
2379   present, the cRLIssuer MUST contain at least one an X.500
2380   distinguished name (DN), and MAY also contain other name forms.
2381   Since the cRLIssuer is compared to the CRL issuer name, the X.501
2382   type Name MUST follow the encoding rules for the issuer name field in
2383   the certificate (section 4.1.2.4).
2384
2385   id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::=  { id-ce 31 }
2386
2387   CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
2388
2389   DistributionPoint ::= SEQUENCE {
2390        distributionPoint       [0]     DistributionPointName OPTIONAL,
2391        reasons                 [1]     ReasonFlags OPTIONAL,
2392        cRLIssuer               [2]     GeneralNames OPTIONAL }
2393
2394   DistributionPointName ::= CHOICE {
2395        fullName                [0]     GeneralNames,
2396        nameRelativeToCRLIssuer [1]     RelativeDistinguishedName }
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410Housley, et. al.            Standards Track                    [Page 43]
2411
2412RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2413
2414
2415   ReasonFlags ::= BIT STRING {
2416        unused                  (0),
2417        keyCompromise           (1),
2418        cACompromise            (2),
2419        affiliationChanged      (3),
2420        superseded              (4),
2421        cessationOfOperation    (5),
2422        certificateHold         (6),
2423        privilegeWithdrawn      (7),
2424        aACompromise            (8) }
2425
24264.2.1.15  Inhibit Any-Policy
2427
2428   The inhibit any-policy extension can be used in certificates issued
2429   to CAs.  The inhibit any-policy indicates that the special anyPolicy
2430   OID, with the value { 2 5 29 32 0 }, is not considered an explicit
2431   match for other certificate policies.  The value indicates the number
2432   of additional certificates that may appear in the path before
2433   anyPolicy is no longer permitted.  For example, a value of one
2434   indicates that anyPolicy may be processed in certificates issued by
2435   the subject of this certificate, but not in additional certificates
2436   in the path.
2437
2438   This extension MUST be critical.
2439
2440   id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::=  { id-ce 54 }
2441
2442   InhibitAnyPolicy ::= SkipCerts
2443
2444   SkipCerts ::= INTEGER (0..MAX)
2445
24464.2.1.16  Freshest CRL (a.k.a. Delta CRL Distribution Point)
2447
2448   The freshest CRL extension identifies how delta CRL information is
2449   obtained.  The extension MUST be non-critical.  Further discussion of
2450   CRL management is contained in section 5.
2451
2452   The same syntax is used for this extension and the
2453   cRLDistributionPoints extension, and is described in section
2454   4.2.1.14.  The same conventions apply to both extensions.
2455
2456   id-ce-freshestCRL OBJECT IDENTIFIER ::=  { id-ce 46 }
2457
2458   FreshestCRL ::= CRLDistributionPoints
2459
2460
2461
2462
2463
2464
2465
2466Housley, et. al.            Standards Track                    [Page 44]
2467
2468RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2469
2470
24714.2.2  Private Internet Extensions
2472
2473   This section defines two extensions for use in the Internet Public
2474   Key Infrastructure.  These extensions may be used to direct
2475   applications to on-line information about the issuing CA or the
2476   subject.  As the information may be available in multiple forms, each
2477   extension is a sequence of IA5String values, each of which represents
2478   a URI.  The URI implicitly specifies the location and format of the
2479   information and the method for obtaining the information.
2480
2481   An object identifier is defined for the private extension.  The
2482   object identifier associated with the private extension is defined
2483   under the arc id-pe within the arc id-pkix.  Any future extensions
2484   defined for the Internet PKI are also expected to be defined under
2485   the arc id-pe.
2486
2487      id-pkix  OBJECT IDENTIFIER  ::=
2488               { iso(1) identified-organization(3) dod(6) internet(1)
2489                       security(5) mechanisms(5) pkix(7) }
2490
2491      id-pe  OBJECT IDENTIFIER  ::=  { id-pkix 1 }
2492
24934.2.2.1  Authority Information Access
2494
2495   The authority information access extension indicates how to access CA
2496   information and services for the issuer of the certificate in which
2497   the extension appears.  Information and services may include on-line
2498   validation services and CA policy data.  (The location of CRLs is not
2499   specified in this extension; that information is provided by the
2500   cRLDistributionPoints extension.)  This extension may be included in
2501   end entity or CA certificates, and it MUST be non-critical.
2502
2503   id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
2504
2505   AuthorityInfoAccessSyntax  ::=
2506           SEQUENCE SIZE (1..MAX) OF AccessDescription
2507
2508   AccessDescription  ::=  SEQUENCE {
2509           accessMethod          OBJECT IDENTIFIER,
2510           accessLocation        GeneralName  }
2511
2512   id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
2513
2514   id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
2515
2516   id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
2517
2518
2519
2520
2521
2522Housley, et. al.            Standards Track                    [Page 45]
2523
2524RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2525
2526
2527   Each entry in the sequence AuthorityInfoAccessSyntax describes the
2528   format and location of additional information provided by the CA that
2529   issued the certificate in which this extension appears.  The type and
2530   format of the information is specified by the accessMethod field; the
2531   accessLocation field specifies the location of the information.  The
2532   retrieval mechanism may be implied by the accessMethod or specified
2533   by accessLocation.
2534
2535   This profile defines two accessMethod OIDs: id-ad-caIssuers and
2536   id-ad-ocsp.
2537
2538   The id-ad-caIssuers OID is used when the additional information lists
2539   CAs that have issued certificates superior to the CA that issued the
2540   certificate containing this extension.  The referenced CA issuers
2541   description is intended to aid certificate users in the selection of
2542   a certification path that terminates at a point trusted by the
2543   certificate user.
2544
2545   When id-ad-caIssuers appears as accessMethod, the accessLocation
2546   field describes the referenced description server and the access
2547   protocol to obtain the referenced description.  The accessLocation
2548   field is defined as a GeneralName, which can take several forms.
2549   Where the information is available via http, ftp, or ldap,
2550   accessLocation MUST be a uniformResourceIdentifier.  Where the
2551   information is available via the Directory Access Protocol (DAP),
2552   accessLocation MUST be a directoryName.  The entry for that
2553   directoryName contains CA certificates in the crossCertificatePair
2554   attribute.  When the information is available via electronic mail,
2555   accessLocation MUST be an rfc822Name.  The semantics of other
2556   id-ad-caIssuers accessLocation name forms are not defined.
2557
2558   The id-ad-ocsp OID is used when revocation information for the
2559   certificate containing this extension is available using the Online
2560   Certificate Status Protocol (OCSP) [RFC 2560].
2561
2562   When id-ad-ocsp appears as accessMethod, the accessLocation field is
2563   the location of the OCSP responder, using the conventions defined in
2564   [RFC 2560].
2565
2566   Additional access descriptors may be defined in other PKIX
2567   specifications.
2568
25694.2.2.2  Subject Information Access
2570
2571   The subject information access extension indicates how to access
2572   information and services for the subject of the certificate in which
2573   the extension appears.  When the subject is a CA, information and
2574   services may include certificate validation services and CA policy
2575
2576
2577
2578Housley, et. al.            Standards Track                    [Page 46]
2579
2580RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2581
2582
2583   data.  When the subject is an end entity, the information describes
2584   the type of services offered and how to access them.  In this case,
2585   the contents of this extension are defined in the protocol
2586   specifications for the suported services.  This extension may be
2587   included in subject or CA certificates, and it MUST be non-critical.
2588
2589   id-pe-subjectInfoAccess OBJECT IDENTIFIER ::= { id-pe 11 }
2590
2591   SubjectInfoAccessSyntax  ::=
2592           SEQUENCE SIZE (1..MAX) OF AccessDescription
2593
2594   AccessDescription  ::=  SEQUENCE {
2595           accessMethod          OBJECT IDENTIFIER,
2596           accessLocation        GeneralName  }
2597
2598   Each entry in the sequence SubjectInfoAccessSyntax describes the
2599   format and location of additional information provided by the subject
2600   of the certificate in which this extension appears.  The type and
2601   format of the information is specified by the accessMethod field; the
2602   accessLocation field specifies the location of the information.  The
2603   retrieval mechanism may be implied by the accessMethod or specified
2604   by accessLocation.
2605
2606   This profile defines one access method to be used when the subject is
2607   a CA, and one access method to be used when the subject is an end
2608   entity.  Additional access methods may be defined in the future in
2609   the protocol specifications for other services.
2610
2611   The id-ad-caRepository OID is used when the subject is a CA, and
2612   publishes its certificates and CRLs (if issued) in a repository.  The
2613   accessLocation field is defined as a GeneralName, which can take
2614   several forms.  Where the information is available via http, ftp, or
2615   ldap, accessLocation MUST be a uniformResourceIdentifier.  Where the
2616   information is available via the directory access protocol (dap),
2617   accessLocation MUST be a directoryName.  When the information is
2618   available via electronic mail, accessLocation MUST be an rfc822Name.
2619   The semantics of other name forms of of accessLocation (when
2620   accessMethod is id-ad-caRepository) are not defined by this
2621   specification.
2622
2623   The id-ad-timeStamping OID is used when the subject offers
2624   timestamping services using the Time Stamp Protocol defined in
2625   [PKIXTSA].  Where the timestamping services are available via http or
2626   ftp, accessLocation MUST be a uniformResourceIdentifier.  Where the
2627   timestamping services are available via electronic mail,
2628   accessLocation MUST be an rfc822Name.  Where timestamping services
2629
2630
2631
2632
2633
2634Housley, et. al.            Standards Track                    [Page 47]
2635
2636RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2637
2638
2639   are available using TCP/IP, the dNSName or ipAddress name forms may
2640   be used.  The semantics of other name forms of accessLocation (when
2641   accessMethod is id-ad-timeStamping) are not defined by this
2642   specification.
2643
2644   Additional access descriptors may be defined in other PKIX
2645   specifications.
2646
2647   id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
2648
2649   id-ad-caRepository OBJECT IDENTIFIER ::= { id-ad 5 }
2650
2651   id-ad-timeStamping OBJECT IDENTIFIER ::= { id-ad 3 }
2652
26535  CRL and CRL Extensions Profile
2654
2655   As discussed above, one goal of this X.509 v2 CRL profile is to
2656   foster the creation of an interoperable and reusable Internet PKI.
2657   To achieve this goal, guidelines for the use of extensions are
2658   specified, and some assumptions are made about the nature of
2659   information included in the CRL.
2660
2661   CRLs may be used in a wide range of applications and environments
2662   covering a broad spectrum of interoperability goals and an even
2663   broader spectrum of operational and assurance requirements.  This
2664   profile establishes a common baseline for generic applications
2665   requiring broad interoperability.  The profile defines a set of
2666   information that can be expected in every CRL.  Also, the profile
2667   defines common locations within the CRL for frequently used
2668   attributes as well as common representations for these attributes.
2669
2670   CRL issuers issue CRLs.  In general, the CRL issuer is the CA.  CAs
2671   publish CRLs to provide status information about the certificates
2672   they issued.  However, a CA may delegate this responsibility to
2673   another trusted authority.  Whenever the CRL issuer is not the CA
2674   that issued the certificates, the CRL is referred to as an indirect
2675   CRL.
2676
2677   Each CRL has a particular scope.  The CRL scope is the set of
2678   certificates that could appear on a given CRL.  For example, the
2679   scope could be "all certificates issued by CA X", "all CA
2680   certificates issued by CA X", "all certificates issued by CA X that
2681   have been revoked for reasons of key compromise and CA compromise",
2682   or could be a set of certificates based on arbitrary local
2683   information, such as "all certificates issued to the NIST employees
2684   located in Boulder".
2685
2686
2687
2688
2689
2690Housley, et. al.            Standards Track                    [Page 48]
2691
2692RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2693
2694
2695   A complete CRL lists all unexpired certificates, within its scope,
2696   that have been revoked for one of the revocation reasons covered by
2697   the CRL scope.  The CRL issuer MAY also generate delta CRLs.  A delta
2698   CRL only lists those certificates, within its scope, whose revocation
2699   status has changed since the issuance of a referenced complete CRL.
2700   The referenced complete CRL is referred to as a base CRL.  The scope
2701   of a delta CRL MUST be the same as the base CRL that it references.
2702
2703   This profile does not define any private Internet CRL extensions or
2704   CRL entry extensions.
2705
2706   Environments with additional or special purpose requirements may
2707   build on this profile or may replace it.
2708
2709   Conforming CAs are not required to issue CRLs if other revocation or
2710   certificate status mechanisms are provided.  When CRLs are issued,
2711   the CRLs MUST be version 2 CRLs, include the date by which the next
2712   CRL will be issued in the nextUpdate field (section 5.1.2.5), include
2713   the CRL number extension (section 5.2.3), and include the authority
2714   key identifier extension (section 5.2.1).  Conforming applications
2715   that support CRLs are REQUIRED to process both version 1 and version
2716   2 complete CRLs that provide revocation information for all
2717   certificates issued by one CA.  Conforming applications are NOT
2718   REQUIRED to support processing of delta CRLs, indirect CRLs, or CRLs
2719   with a scope other than all certificates issued by one CA.
2720
27215.1  CRL Fields
2722
2723   The X.509 v2 CRL syntax is as follows.  For signature calculation,
2724   the data that is to be signed is ASN.1 DER encoded.  ASN.1 DER
2725   encoding is a tag, length, value encoding system for each element.
2726
2727   CertificateList  ::=  SEQUENCE  {
2728        tbsCertList          TBSCertList,
2729        signatureAlgorithm   AlgorithmIdentifier,
2730        signatureValue       BIT STRING  }
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746Housley, et. al.            Standards Track                    [Page 49]
2747
2748RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2749
2750
2751   TBSCertList  ::=  SEQUENCE  {
2752        version                 Version OPTIONAL,
2753                                     -- if present, MUST be v2
2754        signature               AlgorithmIdentifier,
2755        issuer                  Name,
2756        thisUpdate              Time,
2757        nextUpdate              Time OPTIONAL,
2758        revokedCertificates     SEQUENCE OF SEQUENCE  {
2759             userCertificate         CertificateSerialNumber,
2760             revocationDate          Time,
2761             crlEntryExtensions      Extensions OPTIONAL
2762                                           -- if present, MUST be v2
2763                                  }  OPTIONAL,
2764        crlExtensions           [0]  EXPLICIT Extensions OPTIONAL
2765                                           -- if present, MUST be v2
2766                                  }
2767
2768   -- Version, Time, CertificateSerialNumber, and Extensions
2769   -- are all defined in the ASN.1 in section 4.1
2770
2771   -- AlgorithmIdentifier is defined in section 4.1.1.2
2772
2773   The following items describe the use of the X.509 v2 CRL in the
2774   Internet PKI.
2775
27765.1.1  CertificateList Fields
2777
2778   The CertificateList is a SEQUENCE of three required fields.  The
2779   fields are described in detail in the following subsections.
2780
27815.1.1.1  tbsCertList
2782
2783   The first field in the sequence is the tbsCertList.  This field is
2784   itself a sequence containing the name of the issuer, issue date,
2785   issue date of the next list, the optional list of revoked
2786   certificates, and optional CRL extensions.  When there are no revoked
2787   certificates, the revoked certificates list is absent.  When one or
2788   more certificates are revoked, each entry on the revoked certificate
2789   list is defined by a sequence of user certificate serial number,
2790   revocation date, and optional CRL entry extensions.
2791
27925.1.1.2  signatureAlgorithm
2793
2794   The signatureAlgorithm field contains the algorithm identifier for
2795   the algorithm used by the CRL issuer to sign the CertificateList.
2796   The field is of type AlgorithmIdentifier, which is defined in section
2797   4.1.1.2.  [PKIXALGS] lists the supported algorithms for this
2798   specification, but other signature algorithms MAY also be supported.
2799
2800
2801
2802Housley, et. al.            Standards Track                    [Page 50]
2803
2804RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2805
2806
2807   This field MUST contain the same algorithm identifier as the
2808   signature field in the sequence tbsCertList (section 5.1.2.2).
2809
28105.1.1.3  signatureValue
2811
2812   The signatureValue field contains a digital signature computed upon
2813   the ASN.1 DER encoded tbsCertList.  The ASN.1 DER encoded tbsCertList
2814   is used as the input to the signature function.  This signature value
2815   is encoded as a BIT STRING and included in the CRL signatureValue
2816   field.  The details of this process are specified for each of the
2817   supported algorithms in [PKIXALGS].
2818
2819   CAs that are also CRL issuers MAY use one private key to digitally
2820   sign certificates and CRLs, or MAY use separate private keys to
2821   digitally sign certificates and CRLs.  When separate private keys are
2822   employed, each of the public keys associated with these private keys
2823   is placed in a separate certificate, one with the keyCertSign bit set
2824   in the key usage extension, and one with the cRLSign bit set in the
2825   key usage extension (section 4.2.1.3).  When separate private keys
2826   are employed, certificates issued by the CA contain one authority key
2827   identifier, and the corresponding CRLs contain a different authority
2828   key identifier.  The use of separate CA certificates for validation
2829   of certificate signatures and CRL signatures can offer improved
2830   security characteristics; however, it imposes a burden on
2831   applications, and it might limit interoperability.  Many applications
2832   construct a certification path, and then validate the certification
2833   path (section 6).  CRL checking in turn requires a separate
2834   certification path to be constructed and validated for the CA's CRL
2835   signature validation certificate.  Applications that perform CRL
2836   checking MUST support certification path validation when certificates
2837   and CRLs are digitally signed with the same CA private key.  These
2838   applications SHOULD support certification path validation when
2839   certificates and CRLs are digitally signed with different CA private
2840   keys.
2841
28425.1.2  Certificate List "To Be Signed"
2843
2844   The certificate list to be signed, or TBSCertList, is a sequence of
2845   required and optional fields.  The required fields identify the CRL
2846   issuer, the algorithm used to sign the CRL, the date and time the CRL
2847   was issued, and the date and time by which the CRL issuer will issue
2848   the next CRL.
2849
2850   Optional fields include lists of revoked certificates and CRL
2851   extensions.  The revoked certificate list is optional to support the
2852   case where a CA has not revoked any unexpired certificates that it
2853
2854
2855
2856
2857
2858Housley, et. al.            Standards Track                    [Page 51]
2859
2860RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2861
2862
2863   has issued.  The profile requires conforming CRL issuers to use the
2864   CRL number and authority key identifier CRL extensions in all CRLs
2865   issued.
2866
28675.1.2.1  Version
2868
2869   This optional field describes the version of the encoded CRL.  When
2870   extensions are used, as required by this profile, this field MUST be
2871   present and MUST specify version 2 (the integer value is 1).
2872
28735.1.2.2  Signature
2874
2875   This field contains the algorithm identifier for the algorithm used
2876   to sign the CRL.  [PKIXALGS] lists OIDs for the most popular
2877   signature algorithms used in the Internet PKI.
2878
2879   This field MUST contain the same algorithm identifier as the
2880   signatureAlgorithm field in the sequence CertificateList (section
2881   5.1.1.2).
2882
28835.1.2.3  Issuer Name
2884
2885   The issuer name identifies the entity who has signed and issued the
2886   CRL.  The issuer identity is carried in the issuer name field.
2887   Alternative name forms may also appear in the issuerAltName extension
2888   (section 5.2.2).  The issuer name field MUST contain an X.500
2889   distinguished name (DN).  The issuer name field is defined as the
2890   X.501 type Name, and MUST follow the encoding rules for the issuer
2891   name field in the certificate (section 4.1.2.4).
2892
28935.1.2.4  This Update
2894
2895   This field indicates the issue date of this CRL.  ThisUpdate may be
2896   encoded as UTCTime or GeneralizedTime.
2897
2898   CRL issuers conforming to this profile MUST encode thisUpdate as
2899   UTCTime for dates through the year 2049.  CRL issuers conforming to
2900   this profile MUST encode thisUpdate as GeneralizedTime for dates in
2901   the year 2050 or later.
2902
2903   Where encoded as UTCTime, thisUpdate MUST be specified and
2904   interpreted as defined in section 4.1.2.5.1.  Where encoded as
2905   GeneralizedTime, thisUpdate MUST be specified and interpreted as
2906   defined in section 4.1.2.5.2.
2907
2908
2909
2910
2911
2912
2913
2914Housley, et. al.            Standards Track                    [Page 52]
2915
2916RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2917
2918
29195.1.2.5  Next Update
2920
2921   This field indicates the date by which the next CRL will be issued.
2922   The next CRL could be issued before the indicated date, but it will
2923   not be issued any later than the indicated date.  CRL issuers SHOULD
2924   issue CRLs with a nextUpdate time equal to or later than all previous
2925   CRLs.  nextUpdate may be encoded as UTCTime or GeneralizedTime.
2926
2927   This profile requires inclusion of nextUpdate in all CRLs issued by
2928   conforming CRL issuers.  Note that the ASN.1 syntax of TBSCertList
2929   describes this field as OPTIONAL, which is consistent with the ASN.1
2930   structure defined in [X.509].  The behavior of clients processing
2931   CRLs which omit nextUpdate is not specified by this profile.
2932
2933   CRL issuers conforming to this profile MUST encode nextUpdate as
2934   UTCTime for dates through the year 2049.  CRL issuers conforming to
2935   this profile MUST encode nextUpdate as GeneralizedTime for dates in
2936   the year 2050 or later.
2937
2938   Where encoded as UTCTime, nextUpdate MUST be specified and
2939   interpreted as defined in section 4.1.2.5.1.  Where encoded as
2940   GeneralizedTime, nextUpdate MUST be specified and interpreted as
2941   defined in section 4.1.2.5.2.
2942
29435.1.2.6  Revoked Certificates
2944
2945   When there are no revoked certificates, the revoked certificates list
2946   MUST be absent.  Otherwise, revoked certificates are listed by their
2947   serial numbers.  Certificates revoked by the CA are uniquely
2948   identified by the certificate serial number.  The date on which the
2949   revocation occurred is specified.  The time for revocationDate MUST
2950   be expressed as described in section 5.1.2.4. Additional information
2951   may be supplied in CRL entry extensions; CRL entry extensions are
2952   discussed in section 5.3.
2953
29545.1.2.7  Extensions
2955
2956   This field may only appear if the version is 2 (section 5.1.2.1).  If
2957   present, this field is a sequence of one or more CRL extensions.  CRL
2958   extensions are discussed in section 5.2.
2959
29605.2  CRL Extensions
2961
2962   The extensions defined by ANSI X9, ISO/IEC, and ITU-T for X.509 v2
2963   CRLs [X.509] [X9.55] provide methods for associating additional
2964   attributes with CRLs.  The X.509 v2 CRL format also allows
2965   communities to define private extensions to carry information unique
2966   to those communities.  Each extension in a CRL may be designated as
2967
2968
2969
2970Housley, et. al.            Standards Track                    [Page 53]
2971
2972RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
2973
2974
2975   critical or non-critical.  A CRL validation MUST fail if it
2976   encounters a critical extension which it does not know how to
2977   process.  However, an unrecognized non-critical extension may be
2978   ignored.  The following subsections present those extensions used
2979   within Internet CRLs.  Communities may elect to include extensions in
2980   CRLs which are not defined in this specification.  However, caution
2981   should be exercised in adopting any critical extensions in CRLs which
2982   might be used in a general context.
2983
2984   Conforming CRL issuers are REQUIRED to include the authority key
2985   identifier (section 5.2.1) and the CRL number (section 5.2.3)
2986   extensions in all CRLs issued.
2987
29885.2.1  Authority Key Identifier
2989
2990   The authority key identifier extension provides a means of
2991   identifying the public key corresponding to the private key used to
2992   sign a CRL.  The identification can be based on either the key
2993   identifier (the subject key identifier in the CRL signer's
2994   certificate) or on the issuer name and serial number.  This extension
2995   is especially useful where an issuer has more than one signing key,
2996   either due to multiple concurrent key pairs or due to changeover.
2997
2998   Conforming CRL issuers MUST use the key identifier method, and MUST
2999   include this extension in all CRLs issued.
3000
3001   The syntax for this CRL extension is defined in section 4.2.1.1.
3002
30035.2.2  Issuer Alternative Name
3004
3005   The issuer alternative names extension allows additional identities
3006   to be associated with the issuer of the CRL.  Defined options include
3007   an rfc822 name (electronic mail address), a DNS name, an IP address,
3008   and a URI.  Multiple instances of a name and multiple name forms may
3009   be included.  Whenever such identities are used, the issuer
3010   alternative name extension MUST be used; however, a DNS name MAY be
3011   represented in the issuer field using the domainComponent attribute
3012   as described in section 4.1.2.4.
3013
3014   The issuerAltName extension SHOULD NOT be marked critical.
3015
3016   The OID and syntax for this CRL extension are defined in section
3017   4.2.1.8.
3018
3019
3020
3021
3022
3023
3024
3025
3026Housley, et. al.            Standards Track                    [Page 54]
3027
3028RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3029
3030
30315.2.3  CRL Number
3032
3033   The CRL number is a non-critical CRL extension which conveys a
3034   monotonically increasing sequence number for a given CRL scope and
3035   CRL issuer.  This extension allows users to easily determine when a
3036   particular CRL supersedes another CRL.  CRL numbers also support the
3037   identification of complementary complete CRLs and delta CRLs.  CRL
3038   issuers conforming to this profile MUST include this extension in all
3039   CRLs.
3040
3041   If a CRL issuer generates delta CRLs in addition to complete CRLs for
3042   a given scope, the complete CRLs and delta CRLs MUST share one
3043   numbering sequence.  If a delta CRL and a complete CRL that cover the
3044   same scope are issued at the same time, they MUST have the same CRL
3045   number and provide the same revocation information.  That is, the
3046   combination of the delta CRL and an acceptable complete CRL MUST
3047   provide the same revocation information as the simultaneously issued
3048   complete CRL.
3049
3050   If a CRL issuer generates two CRLs (two complete CRLs, two delta
3051   CRLs, or a complete CRL and a delta CRL) for the same scope at
3052   different times, the two CRLs MUST NOT have the same CRL number.
3053   That is, if the this update field (section 5.1.2.4) in the two CRLs
3054   are not identical, the CRL numbers MUST be different.
3055
3056   Given the requirements above, CRL numbers can be expected to contain
3057   long integers.  CRL verifiers MUST be able to handle CRLNumber values
3058   up to 20 octets.  Conformant CRL issuers MUST NOT use CRLNumber
3059   values longer than 20 octets.
3060
3061   id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 }
3062
3063   CRLNumber ::= INTEGER (0..MAX)
3064
30655.2.4  Delta CRL Indicator
3066
3067   The delta CRL indicator is a critical CRL extension that identifies a
3068   CRL as being a delta CRL.  Delta CRLs contain updates to revocation
3069   information previously distributed, rather than all the information
3070   that would appear in a complete CRL.  The use of delta CRLs can
3071   significantly reduce network load and processing time in some
3072   environments.  Delta CRLs are generally smaller than the CRLs they
3073   update, so applications that obtain delta CRLs consume less network
3074   bandwidth than applications that obtain the corresponding complete
3075   CRLs.  Applications which store revocation information in a format
3076   other than the CRL structure can add new revocation information to
3077   the local database without reprocessing information.
3078
3079
3080
3081
3082Housley, et. al.            Standards Track                    [Page 55]
3083
3084RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3085
3086
3087   The delta CRL indicator extension contains the single value of type
3088   BaseCRLNumber.  The CRL number identifies the CRL, complete for a
3089   given scope, that was used as the starting point in the generation of
3090   this delta CRL.  A conforming CRL issuer MUST publish the referenced
3091   base CRL as a complete CRL.  The delta CRL contains all updates to
3092   the revocation status for that same scope.  The combination of a
3093   delta CRL plus the referenced base CRL is equivalent to a complete
3094   CRL, for the applicable scope, at the time of publication of the
3095   delta CRL.
3096
3097   When a conforming CRL issuer generates a delta CRL, the delta CRL
3098   MUST include a critical delta CRL indicator extension.
3099
3100   When a delta CRL is issued, it MUST cover the same set of reasons and
3101   the same set of certificates that were covered by the base CRL it
3102   references.  That is, the scope of the delta CRL MUST be the same as
3103   the scope of the complete CRL referenced as the base.  The referenced
3104   base CRL and the delta CRL MUST omit the issuing distribution point
3105   extension or contain identical issuing distribution point extensions.
3106   Further, the CRL issuer MUST use the same private key to sign the
3107   delta CRL and any complete CRL that it can be used to update.
3108
3109   An application that supports delta CRLs can construct a CRL that is
3110   complete for a given scope by combining a delta CRL for that scope
3111   with either an issued CRL that is complete for that scope or a
3112   locally constructed CRL that is complete for that scope.
3113
3114   When a delta CRL is combined with a complete CRL or a locally
3115   constructed CRL, the resulting locally constructed CRL has the CRL
3116   number specified in the CRL number extension found in the delta CRL
3117   used in its construction.  In addition, the resulting locally
3118   constructed CRL has the thisUpdate and nextUpdate times specified in
3119   the corresponding fields of the delta CRL used in its construction.
3120   In addition, the locally constructed CRL inherits the issuing
3121   distribution point from the delta CRL.
3122
3123   A complete CRL and a delta CRL MAY be combined if the following four
3124   conditions are satisfied:
3125
3126      (a)  The complete CRL and delta CRL have the same issuer.
3127
3128      (b)  The complete CRL and delta CRL have the same scope.  The two
3129      CRLs have the same scope if either of the following conditions are
3130      met:
3131
3132         (1)  The issuingDistributionPoint extension is omitted from
3133         both the complete CRL and the delta CRL.
3134
3135
3136
3137
3138Housley, et. al.            Standards Track                    [Page 56]
3139
3140RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3141
3142
3143         (2)  The issuingDistributionPoint extension is present in both
3144         the complete CRL and the delta CRL, and the values for each of
3145         the fields in the extensions are the same in both CRLs.
3146
3147      (c)  The CRL number of the complete CRL is equal to or greater
3148      than the BaseCRLNumber specified in the delta CRL.  That is, the
3149      complete CRL contains (at a minimum) all the revocation
3150      information held by the referenced base CRL.
3151
3152      (d)  The CRL number of the complete CRL is less than the CRL
3153      number of the delta CRL.  That is, the delta CRL follows the
3154      complete CRL in the numbering sequence.
3155
3156   CRL issuers MUST ensure that the combination of a delta CRL and any
3157   appropriate complete CRL accurately reflects the current revocation
3158   status.  The CRL issuer MUST include an entry in the delta CRL for
3159   each certificate within the scope of the delta CRL whose status has
3160   changed since the generation of the referenced base CRL:
3161
3162      (a)  If the certificate is revoked for a reason included in the
3163      scope of the CRL, list the certificate as revoked.
3164
3165      (b)  If the certificate is valid and was listed on the referenced
3166      base CRL or any subsequent CRL with reason code certificateHold,
3167      and the reason code certificateHold is included in the scope of
3168      the CRL, list the certificate with the reason code removeFromCRL.
3169
3170      (c)  If the certificate is revoked for a reason outside the scope
3171      of the CRL, but the certificate was listed on the referenced base
3172      CRL or any subsequent CRL with a reason code included in the scope
3173      of this CRL, list the certificate as revoked but omit the reason
3174      code.
3175
3176      (d)  If the certificate is revoked for a reason outside the scope
3177      of the CRL and the certificate was neither listed on the
3178      referenced base CRL nor any subsequent CRL with a reason code
3179      included in the scope of this CRL, do not list the certificate on
3180      this CRL.
3181
3182   The status of a certificate is considered to have changed if it is
3183   revoked, placed on hold, released from hold, or if its revocation
3184   reason changes.
3185
3186   It is appropriate to list a certificate with reason code
3187   removeFromCRL on a delta CRL even if the certificate was not on hold
3188   in the referenced base CRL.  If the certificate was placed on hold in
3189
3190
3191
3192
3193
3194Housley, et. al.            Standards Track                    [Page 57]
3195
3196RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3197
3198
3199   any CRL issued after the base but before this delta CRL and then
3200   released from hold, it MUST be listed on the delta CRL with
3201   revocation reason removeFromCRL.
3202
3203   A CRL issuer MAY optionally list a certificate on a delta CRL with
3204   reason code removeFromCRL if the notAfter time specified in the
3205   certificate precedes the thisUpdate time specified in the delta CRL
3206   and the certificate was listed on the referenced base CRL or in any
3207   CRL issued after the base but before this delta CRL.
3208
3209   If a certificate revocation notice first appears on a delta CRL, then
3210   it is possible for the certificate validity period to expire before
3211   the next complete CRL for the same scope is issued.  In this case,
3212   the revocation notice MUST be included in all subsequent delta CRLs
3213   until the revocation notice is included on at least one explicitly
3214   issued complete CRL for this scope.
3215
3216   An application that supports delta CRLs MUST be able to construct a
3217   current complete CRL by combining a previously issued complete CRL
3218   and the most current delta CRL.  An application that supports delta
3219   CRLs MAY also be able to construct a current complete CRL by
3220   combining a previously locally constructed complete CRL and the
3221   current delta CRL.  A delta CRL is considered to be the current one
3222   if the current time is between the times contained in the thisUpdate
3223   and nextUpdate fields.  Under some circumstances, the CRL issuer may
3224   publish one or more delta CRLs before indicated by the nextUpdate
3225   field.  If more than one current delta CRL for a given scope is
3226   encountered, the application SHOULD consider the one with the latest
3227   value in thisUpdate to be the most current one.
3228
3229   id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 }
3230
3231   BaseCRLNumber ::= CRLNumber
3232
32335.2.5  Issuing Distribution Point
3234
3235   The issuing distribution point is a critical CRL extension that
3236   identifies the CRL distribution point and scope for a particular CRL,
3237   and it indicates whether the CRL covers revocation for end entity
3238   certificates only, CA certificates only, attribute certificates only,
3239
3240   or a limited set of reason codes.  Although the extension is
3241   critical, conforming implementations are not required to support this
3242   extension.
3243
3244
3245
3246
3247
3248
3249
3250Housley, et. al.            Standards Track                    [Page 58]
3251
3252RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3253
3254
3255   The CRL is signed using the CRL issuer's private key.  CRL
3256   Distribution Points do not have their own key pairs.  If the CRL is
3257   stored in the X.500 Directory, it is stored in the Directory entry
3258   corresponding to the CRL distribution point, which may be different
3259   than the Directory entry of the CRL issuer.
3260
3261   The reason codes associated with a distribution point MUST be
3262   specified in onlySomeReasons.  If onlySomeReasons does not appear,
3263   the distribution point MUST contain revocations for all reason codes.
3264   CAs may use CRL distribution points to partition the CRL on the basis
3265   of compromise and routine revocation.  In this case, the revocations
3266   with reason code keyCompromise (1), cACompromise (2), and
3267   aACompromise (8) appear in one distribution point, and the
3268   revocations with other reason codes appear in another distribution
3269   point.
3270
3271   If the distributionPoint field is present and contains a URI, the
3272   following semantics MUST be assumed: the object is a pointer to the
3273   most current CRL issued by this CRL issuer.  The URI schemes ftp,
3274   http, mailto [RFC1738] and ldap [RFC1778] are defined for this
3275   purpose.  The URI MUST be an absolute pathname, not a relative
3276   pathname, and MUST specify the host.
3277
3278   If the distributionPoint field is absent, the CRL MUST contain
3279   entries for all revoked unexpired certificates issued by the CRL
3280   issuer, if any, within the scope of the CRL.
3281
3282   The CRL issuer MUST assert the indirectCRL boolean, if the scope of
3283   the CRL includes certificates issued by authorities other than the
3284   CRL issuer.  The authority responsible for each entry is indicated by
3285   the certificate issuer CRL entry extension (section 5.3.4).
3286
3287   id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 }
3288
3289   issuingDistributionPoint ::= SEQUENCE {
3290        distributionPoint          [0] DistributionPointName OPTIONAL,
3291        onlyContainsUserCerts      [1] BOOLEAN DEFAULT FALSE,
3292        onlyContainsCACerts        [2] BOOLEAN DEFAULT FALSE,
3293        onlySomeReasons            [3] ReasonFlags OPTIONAL,
3294        indirectCRL                [4] BOOLEAN DEFAULT FALSE,
3295        onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }
3296
32975.2.6  Freshest CRL (a.k.a. Delta CRL Distribution Point)
3298
3299   The freshest CRL extension identifies how delta CRL information for
3300   this complete CRL is obtained.  The extension MUST be non-critical.
3301   This extension MUST NOT appear in delta CRLs.
3302
3303
3304
3305
3306Housley, et. al.            Standards Track                    [Page 59]
3307
3308RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3309
3310
3311   The same syntax is used for this extension as the
3312   cRLDistributionPoints certificate extension, and is described in
3313   section 4.2.1.14.  However, only the distribution point field is
3314   meaningful in this context.  The reasons and CRLIssuer fields MUST be
3315   omitted from this CRL extension.
3316
3317   Each distribution point name provides the location at which a delta
3318   CRL for this complete CRL can be found.  The scope of these delta
3319   CRLs MUST be the same as the scope of this complete CRL.  The
3320   contents of this CRL extension are only used to locate delta CRLs;
3321   the contents are not used to validate the CRL or the referenced delta
3322   CRLs.  The encoding conventions defined for distribution points in
3323   section 4.2.1.14 apply to this extension.
3324
3325   id-ce-freshestCRL OBJECT IDENTIFIER ::=  { id-ce 46 }
3326
3327   FreshestCRL ::= CRLDistributionPoints
3328
33295.3  CRL Entry Extensions
3330
3331   The CRL entry extensions defined by ISO/IEC, ITU-T, and ANSI X9 for
3332   X.509 v2 CRLs provide methods for associating additional attributes
3333   with CRL entries [X.509] [X9.55].  The X.509 v2 CRL format also
3334   allows communities to define private CRL entry extensions to carry
3335   information unique to those communities.  Each extension in a CRL
3336   entry may be designated as critical or non-critical.  A CRL
3337   validation MUST fail if it encounters a critical CRL entry extension
3338   which it does not know how to process.  However, an unrecognized non-
3339   critical CRL entry extension may be ignored.  The following
3340   subsections present recommended extensions used within Internet CRL
3341   entries and standard locations for information.  Communities may
3342   elect to use additional CRL entry extensions; however, caution should
3343   be exercised in adopting any critical extensions in CRL entries which
3344   might be used in a general context.
3345
3346   All CRL entry extensions used in this specification are non-critical.
3347   Support for these extensions is optional for conforming CRL issuers
3348   and applications.  However, CRL issuers SHOULD include reason codes
3349   (section 5.3.1) and invalidity dates (section 5.3.3) whenever this
3350   information is available.
3351
33525.3.1  Reason Code
3353
3354   The reasonCode is a non-critical CRL entry extension that identifies
3355   the reason for the certificate revocation.  CRL issuers are strongly
3356   encouraged to include meaningful reason codes in CRL entries;
3357   however, the reason code CRL entry extension SHOULD be absent instead
3358   of using the unspecified (0) reasonCode value.
3359
3360
3361
3362Housley, et. al.            Standards Track                    [Page 60]
3363
3364RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3365
3366
3367   id-ce-cRLReason OBJECT IDENTIFIER ::= { id-ce 21 }
3368
3369   -- reasonCode ::= { CRLReason }
3370
3371   CRLReason ::= ENUMERATED {
3372        unspecified             (0),
3373        keyCompromise           (1),
3374        cACompromise            (2),
3375        affiliationChanged      (3),
3376        superseded              (4),
3377        cessationOfOperation    (5),
3378        certificateHold         (6),
3379        removeFromCRL           (8),
3380        privilegeWithdrawn      (9),
3381        aACompromise           (10) }
3382
33835.3.2  Hold Instruction Code
3384
3385   The hold instruction code is a non-critical CRL entry extension that
3386   provides a registered instruction identifier which indicates the
3387   action to be taken after encountering a certificate that has been
3388   placed on hold.
3389
3390   id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 }
3391
3392   holdInstructionCode ::= OBJECT IDENTIFIER
3393
3394   The following instruction codes have been defined.  Conforming
3395   applications that process this extension MUST recognize the following
3396   instruction codes.
3397
3398   holdInstruction    OBJECT IDENTIFIER ::=
3399                    { iso(1) member-body(2) us(840) x9-57(10040) 2 }
3400
3401   id-holdinstruction-none   OBJECT IDENTIFIER ::= {holdInstruction 1}
3402   id-holdinstruction-callissuer
3403                             OBJECT IDENTIFIER ::= {holdInstruction 2}
3404   id-holdinstruction-reject OBJECT IDENTIFIER ::= {holdInstruction 3}
3405
3406   Conforming applications which encounter an id-holdinstruction-
3407   callissuer MUST call the certificate issuer or reject the
3408   certificate.  Conforming applications which encounter an id-
3409   holdinstruction-reject MUST reject the certificate.  The hold
3410   instruction id-holdinstruction-none is semantically equivalent to the
3411   absence of a holdInstructionCode, and its use is strongly deprecated
3412   for the Internet PKI.
3413
3414
3415
3416
3417
3418Housley, et. al.            Standards Track                    [Page 61]
3419
3420RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3421
3422
34235.3.3  Invalidity Date
3424
3425   The invalidity date is a non-critical CRL entry extension that
3426   provides the date on which it is known or suspected that the private
3427   key was compromised or that the certificate otherwise became invalid.
3428   This date may be earlier than the revocation date in the CRL entry,
3429   which is the date at which the CA processed the revocation.  When a
3430   revocation is first posted by a CRL issuer in a CRL, the invalidity
3431   date may precede the date of issue of earlier CRLs, but the
3432   revocation date SHOULD NOT precede the date of issue of earlier CRLs.
3433   Whenever this information is available, CRL issuers are strongly
3434   encouraged to share it with CRL users.
3435
3436   The GeneralizedTime values included in this field MUST be expressed
3437   in Greenwich Mean Time (Zulu), and MUST be specified and interpreted
3438   as defined in section 4.1.2.5.2.
3439
3440   id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 }
3441
3442   invalidityDate ::=  GeneralizedTime
3443
34445.3.4  Certificate Issuer
3445
3446   This CRL entry extension identifies the certificate issuer associated
3447   with an entry in an indirect CRL, that is, a CRL that has the
3448   indirectCRL indicator set in its issuing distribution point
3449   extension.  If this extension is not present on the first entry in an
3450   indirect CRL, the certificate issuer defaults to the CRL issuer.  On
3451   subsequent entries in an indirect CRL, if this extension is not
3452   present, the certificate issuer for the entry is the same as that for
3453   the preceding entry.  This field is defined as follows:
3454
3455   id-ce-certificateIssuer   OBJECT IDENTIFIER ::= { id-ce 29 }
3456
3457   certificateIssuer ::=     GeneralNames
3458
3459   If used by conforming CRL issuers, this extension MUST always be
3460   critical.  If an implementation ignored this extension it could not
3461   correctly attribute CRL entries to certificates.  This specification
3462   RECOMMENDS that implementations recognize this extension.
3463
34646  Certification Path Validation
3465
3466   Certification path validation procedures for the Internet PKI are
3467   based on the algorithm supplied in [X.509].  Certification path
3468   processing verifies the binding between the subject distinguished
3469   name and/or subject alternative name and subject public key.  The
3470   binding is limited by constraints which are specified in the
3471
3472
3473
3474Housley, et. al.            Standards Track                    [Page 62]
3475
3476RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3477
3478
3479   certificates which comprise the path and inputs which are specified
3480   by the relying party.  The basic constraints and policy constraints
3481   extensions allow the certification path processing logic to automate
3482   the decision making process.
3483
3484   This section describes an algorithm for validating certification
3485   paths.  Conforming implementations of this specification are not
3486   required to implement this algorithm, but MUST provide functionality
3487   equivalent to the external behavior resulting from this procedure.
3488   Any algorithm may be used by a particular implementation so long as
3489   it derives the correct result.
3490
3491   In section 6.1, the text describes basic path validation.  Valid
3492   paths begin with certificates issued by a trust anchor.  The
3493   algorithm requires the public key of the CA, the CA's name, and any
3494   constraints upon the set of paths which may be validated using this
3495   key.
3496
3497   The selection of a trust anchor is a matter of policy: it could be
3498   the top CA in a hierarchical PKI; the CA that issued the verifier's
3499   own certificate(s); or any other CA in a network PKI.  The path
3500   validation procedure is the same regardless of the choice of trust
3501   anchor.  In addition, different applications may rely on different
3502   trust anchor, or may accept paths that begin with any of a set of
3503   trust anchor.
3504
3505   Section 6.2 describes methods for using the path validation algorithm
3506   in specific implementations.  Two specific cases are discussed: the
3507   case where paths may begin with one of several trusted CAs; and where
3508   compatibility with the PEM architecture is required.
3509
3510   Section 6.3 describes the steps necessary to determine if a
3511   certificate is revoked or on hold status when CRLs are the revocation
3512   mechanism used by the certificate issuer.
3513
35146.1  Basic Path Validation
3515
3516   This text describes an algorithm for X.509 path processing.  A
3517   conformant implementation MUST include an X.509 path processing
3518   procedure that is functionally equivalent to the external behavior of
3519   this algorithm.  However, support for some of the certificate
3520   extensions processed in this algorithm are OPTIONAL for compliant
3521   implementations.  Clients that do not support these extensions MAY
3522   omit the corresponding steps in the path validation algorithm.
3523
3524
3525
3526
3527
3528
3529
3530Housley, et. al.            Standards Track                    [Page 63]
3531
3532RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3533
3534
3535   For example, clients are NOT REQUIRED to support the policy mapping
3536   extension.  Clients that do not support this extension MAY omit the
3537   path validation steps where policy mappings are processed.  Note that
3538   clients MUST reject the certificate if it contains an unsupported
3539   critical extension.
3540
3541   The algorithm presented in this section validates the certificate
3542   with respect to the current date and time.  A conformant
3543   implementation MAY also support validation with respect to some point
3544   in the past.  Note that mechanisms are not available for validating a
3545   certificate with respect to a time outside the certificate validity
3546   period.
3547
3548   The trust anchor is an input to the algorithm.  There is no
3549   requirement that the same trust anchor be used to validate all
3550   certification paths.  Different trust anchors MAY be used to validate
3551   different paths, as discussed further in Section 6.2.
3552
3553   The primary goal of path validation is to verify the binding between
3554   a subject distinguished name or a subject alternative name and
3555   subject public key, as represented in the end entity certificate,
3556   based on the public key of the trust anchor.  This requires obtaining
3557   a sequence of certificates that support that binding.  The procedure
3558   performed to obtain this sequence of certificates is outside the
3559   scope of this specification.
3560
3561   To meet this goal, the path validation process verifies, among other
3562   things, that a prospective certification path (a sequence of n
3563   certificates) satisfies the following conditions:
3564
3565      (a)  for all x in {1, ..., n-1}, the subject of certificate x is
3566      the issuer of certificate x+1;
3567
3568      (b)  certificate 1 is issued by the trust anchor;
3569
3570      (c)  certificate n is the certificate to be validated; and
3571
3572      (d)  for all x in {1, ..., n}, the certificate was valid at the
3573      time in question.
3574
3575   When the trust anchor is provided in the form of a self-signed
3576   certificate, this self-signed certificate is not included as part of
3577   the prospective certification path.  Information about trust anchors
3578   are provided as inputs to the certification path validation algorithm
3579   (section 6.1.1).
3580
3581
3582
3583
3584
3585
3586Housley, et. al.            Standards Track                    [Page 64]
3587
3588RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3589
3590
3591   A particular certification path may not, however, be appropriate for
3592   all applications.  Therefore, an application MAY augment this
3593   algorithm to further limit the set of valid paths.  The path
3594   validation process also determines the set of certificate policies
3595   that are valid for this path, based on the certificate policies
3596   extension, policy mapping extension, policy constraints extension,
3597   and inhibit any-policy extension.  To achieve this, the path
3598   validation algorithm constructs a valid policy tree.  If the set of
3599   certificate policies that are valid for this path is not empty, then
3600   the result will be a valid policy tree of depth n, otherwise the
3601   result will be a null valid policy tree.
3602
3603   A certificate is self-issued if the DNs that appear in the subject
3604   and issuer fields are identical and are not empty.  In general, the
3605   issuer and subject of the certificates that make up a path are
3606   different for each certificate.  However, a CA may issue a
3607   certificate to itself to support key rollover or changes in
3608   certificate policies.  These self-issued certificates are not counted
3609   when evaluating path length or name constraints.
3610
3611   This section presents the algorithm in four basic steps: (1)
3612   initialization, (2) basic certificate processing, (3) preparation for
3613   the next certificate, and (4) wrap-up.  Steps (1) and (4) are
3614   performed exactly once.  Step (2) is performed for all certificates
3615   in the path.  Step (3) is performed for all certificates in the path
3616   except the final certificate.  Figure 2 provides a high-level
3617   flowchart of this algorithm.
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642Housley, et. al.            Standards Track                    [Page 65]
3643
3644RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3645
3646
3647                           +-------+
3648                           | START |
3649                           +-------+
3650                               |
3651                               V
3652                       +----------------+
3653                       | Initialization |
3654                       +----------------+
3655                               |
3656                               +<--------------------+
3657                               |                     |
3658                               V                     |
3659                       +----------------+            |
3660                       |  Process Cert  |            |
3661                       +----------------+            |
3662                               |                     |
3663                               V                     |
3664                       +================+            |
3665                       |  IF Last Cert  |            |
3666                       |    in Path     |            |
3667                       +================+            |
3668                         |            |              |
3669                    THEN |            | ELSE         |
3670                         V            V              |
3671              +----------------+ +----------------+  |
3672              |    Wrap up     | |  Prepare for   |  |
3673              +----------------+ |   Next Cert    |  |
3674                      |          +----------------+  |
3675                      V               |              |
3676                  +-------+           +--------------+
3677                  | STOP  |
3678                  +-------+
3679
3680
3681         Figure 2.  Certification Path Processing Flowchart
3682
36836.1.1  Inputs
3684
3685   This algorithm assumes the following seven inputs are provided to the
3686   path processing logic:
3687
3688      (a)  a prospective certification path of length n.
3689
3690      (b)  the current date/time.
3691
3692
3693
3694
3695
3696
3697
3698Housley, et. al.            Standards Track                    [Page 66]
3699
3700RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3701
3702
3703      (c)  user-initial-policy-set:  A set of certificate policy
3704      identifiers naming the policies that are acceptable to the
3705      certificate user.  The user-initial-policy-set contains the
3706      special value any-policy if the user is not concerned about
3707      certificate policy.
3708
3709      (d)  trust anchor information, describing a CA that serves as a
3710      trust anchor for the certification path.  The trust anchor
3711      information includes:
3712
3713         (1)  the trusted issuer name,
3714
3715         (2)  the trusted public key algorithm,
3716
3717         (3)  the trusted public key, and
3718
3719         (4)  optionally, the trusted public key parameters associated
3720         with the public key.
3721
3722      The trust anchor information may be provided to the path
3723      processing procedure in the form of a self-signed certificate.
3724      The trusted anchor information is trusted because it was delivered
3725      to the path processing procedure by some trustworthy out-of-band
3726      procedure.  If the trusted public key algorithm requires
3727      parameters, then the parameters are provided along with the
3728      trusted public key.
3729
3730      (e) initial-policy-mapping-inhibit, which indicates if policy
3731      mapping is allowed in the certification path.
3732
3733      (f) initial-explicit-policy, which indicates if the path must be
3734      valid for at least one of the certificate policies in the user-
3735      initial-policy-set.
3736
3737      (g) initial-any-policy-inhibit, which indicates whether the
3738      anyPolicy OID should be processed if it is included in a
3739      certificate.
3740
37416.1.2  Initialization
3742
3743   This initialization phase establishes eleven state variables based
3744   upon the seven inputs:
3745
3746      (a)  valid_policy_tree:  A tree of certificate policies with their
3747      optional qualifiers; each of the leaves of the tree represents a
3748      valid policy at this stage in the certification path validation.
3749      If valid policies exist at this stage in the certification path
3750      validation, the depth of the tree is equal to the number of
3751
3752
3753
3754Housley, et. al.            Standards Track                    [Page 67]
3755
3756RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3757
3758
3759      certificates in the chain that have been processed.  If valid
3760      policies do not exist at this stage in the certification path
3761      validation, the tree is set to NULL.  Once the tree is set to
3762      NULL, policy processing ceases.
3763
3764      Each node in the valid_policy_tree includes four data objects: the
3765      valid policy, a set of associated policy qualifiers, a set of one
3766      or more expected policy values, and a criticality indicator.  If
3767      the node is at depth x, the components of the node have the
3768      following semantics:
3769
3770         (1)  The valid_policy is a single policy OID representing a
3771         valid policy for the path of length x.
3772
3773         (2)  The qualifier_set is a set of policy qualifiers associated
3774         with the valid policy in certificate x.
3775
3776         (3)  The criticality_indicator indicates whether the
3777         certificate policy extension in certificate x was marked as
3778         critical.
3779
3780         (4)  The expected_policy_set contains one or more policy OIDs
3781         that would satisfy this policy in the certificate x+1.
3782
3783      The initial value of the valid_policy_tree is a single node with
3784      valid_policy anyPolicy, an empty qualifier_set, an
3785      expected_policy_set with the single value anyPolicy, and a
3786      criticality_indicator of FALSE.  This node is considered to be at
3787      depth zero.
3788
3789      Figure 3 is a graphic representation of the initial state of the
3790      valid_policy_tree.  Additional figures will use this format to
3791      describe changes in the valid_policy_tree during path processing.
3792
3793              +----------------+
3794              |   anyPolicy    |   <---- valid_policy
3795              +----------------+
3796              |       {}       |   <---- qualifier_set
3797              +----------------+
3798              |     FALSE      |   <---- criticality_indicator
3799              +----------------+
3800              |  {anyPolicy}   |   <---- expected_policy_set
3801              +----------------+
3802
3803      Figure 3.  Initial value of the valid_policy_tree state variable
3804
3805
3806
3807
3808
3809
3810Housley, et. al.            Standards Track                    [Page 68]
3811
3812RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3813
3814
3815      (b) permitted_subtrees:  A set of root names for each name type
3816      (e.g., X.500 distinguished names, email addresses, or ip
3817      addresses) defining a set of subtrees within which all subject
3818      names in subsequent certificates in the certification path MUST
3819      fall.  This variable includes a set for each name type: the
3820      initial value for the set for Distinguished Names is the set of
3821      all Distinguished names; the initial value for the set of RFC822
3822      names is the set of all RFC822 names, etc.
3823
3824      (c) excluded_subtrees:  A set of root names for each name type
3825      (e.g., X.500 distinguished names, email addresses, or ip
3826      addresses) defining a set of subtrees within which no subject name
3827      in subsequent certificates in the certification path may fall.
3828      This variable includes a set for each name type, and the initial
3829      value for each set is empty.
3830
3831      (d) explicit_policy: an integer which indicates if a non-NULL
3832      valid_policy_tree is required. The integer indicates the number of
3833      non-self-issued certificates to be processed before this
3834      requirement is imposed.  Once set, this variable may be decreased,
3835      but may not be increased. That is, if a certificate in the path
3836      requires a non-NULL valid_policy_tree, a later certificate can not
3837      remove this requirement. If initial-explicit-policy is set, then
3838      the initial value is 0, otherwise the initial value is n+1.
3839
3840      (e) inhibit_any-policy: an integer which indicates whether the
3841      anyPolicy policy identifier is considered a match. The integer
3842      indicates the number of non-self-issued certificates to be
3843      processed before the anyPolicy OID, if asserted in a certificate,
3844      is ignored. Once set, this variable may be decreased, but may not
3845      be increased. That is, if a certificate in the path inhibits
3846      processing of anyPolicy, a later certificate can not permit it.
3847      If initial-any-policy-inhibit is set, then the initial value is 0,
3848      otherwise the initial value is n+1.
3849
3850      (f) policy_mapping: an integer which indicates if policy mapping
3851      is permitted.  The integer indicates the number of non-self-issued
3852      certificates to be processed before policy mapping is inhibited.
3853      Once set, this variable may be decreased, but may not be
3854      increased. That is, if a certificate in the path specifies policy
3855      mapping is not permitted, it can not be overridden by a later
3856      certificate. If initial-policy-mapping-inhibit is set, then the
3857      initial value is 0, otherwise the initial value is n+1.
3858
3859      (g) working_public_key_algorithm: the digital signature algorithm
3860      used to verify the signature of a certificate.  The
3861      working_public_key_algorithm is initialized from the trusted
3862      public key algorithm provided in the trust anchor information.
3863
3864
3865
3866Housley, et. al.            Standards Track                    [Page 69]
3867
3868RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3869
3870
3871      (h) working_public_key: the public key used to verify the
3872      signature of a certificate.  The working_public_key is initialized
3873      from the trusted public key provided in the trust anchor
3874      information.
3875
3876      (i) working_public_key_parameters:  parameters associated with the
3877      current public key, that may be required to verify a signature
3878      (depending upon the algorithm).  The working_public_key_parameters
3879      variable is initialized from the trusted public key parameters
3880      provided in the trust anchor information.
3881
3882      (j) working_issuer_name:  the issuer distinguished name expected
3883      in the next certificate in the chain.  The working_issuer_name is
3884      initialized to the trusted issuer provided in the trust anchor
3885      information.
3886
3887      (k) max_path_length:  this integer is initialized to n, is
3888      decremented for each non-self-issued certificate in the path, and
3889      may be reduced to the value in the path length constraint field
3890      within the basic constraints extension of a CA certificate.
3891
3892   Upon completion of the initialization steps, perform the basic
3893   certificate processing steps specified in 6.1.3.
3894
38956.1.3  Basic Certificate Processing
3896
3897   The basic path processing actions to be performed for certificate i
3898   (for all i in [1..n]) are listed below.
3899
3900      (a)  Verify the basic certificate information.  The certificate
3901      MUST satisfy each of the following:
3902
3903         (1)  The certificate was signed with the
3904         working_public_key_algorithm using the working_public_key and
3905         the working_public_key_parameters.
3906
3907         (2)  The certificate validity period includes the current time.
3908
3909         (3)  At the current time, the certificate is not revoked and is
3910         not on hold status.  This may be determined by obtaining the
3911         appropriate CRL (section 6.3), status information, or by out-
3912         of-band mechanisms.
3913
3914         (4)  The certificate issuer name is the working_issuer_name.
3915
3916
3917
3918
3919
3920
3921
3922Housley, et. al.            Standards Track                    [Page 70]
3923
3924RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3925
3926
3927      (b)  If certificate i is self-issued and it is not the final
3928      certificate in the path, skip this step for certificate i.
3929      Otherwise, verify that the subject name is within one of the
3930      permitted_subtrees for X.500 distinguished names, and verify that
3931      each of the alternative names in the subjectAltName extension
3932      (critical or non-critical) is within one of the permitted_subtrees
3933      for that name type.
3934
3935      (c)  If certificate i is self-issued and it is not the final
3936      certificate in the path, skip this step for certificate i.
3937      Otherwise, verify that the subject name is not within one of the
3938      excluded_subtrees for X.500 distinguished names, and verify that
3939      each of the alternative names in the subjectAltName extension
3940      (critical or non-critical) is not within one of the
3941      excluded_subtrees for that name type.
3942
3943      (d)  If the certificate policies extension is present in the
3944      certificate and the valid_policy_tree is not NULL, process the
3945      policy information by performing the following steps in order:
3946
3947         (1)  For each policy P not equal to anyPolicy in the
3948         certificate policies extension, let P-OID denote the OID in
3949         policy P and P-Q denote the qualifier set for policy P.
3950         Perform the following steps in order:
3951
3952            (i)  If the valid_policy_tree includes a node of depth i-1
3953            where P-OID is in the expected_policy_set, create a child
3954            node as follows: set the valid_policy to OID-P; set the
3955            qualifier_set to P-Q, and set the expected_policy_set to
3956            {P-OID}.
3957
3958            For example, consider a valid_policy_tree with a node of
3959            depth i-1 where the expected_policy_set is {Gold, White}.
3960            Assume the certificate policies Gold and Silver appear in
3961            the certificate policies extension of certificate i.  The
3962            Gold policy is matched but the Silver policy is not.  This
3963            rule will generate a child node of depth i for the Gold
3964            policy. The result is shown as Figure 4.
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978Housley, et. al.            Standards Track                    [Page 71]
3979
3980RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
3981
3982
3983                             +-----------------+
3984                             |       Red       |
3985                             +-----------------+
3986                             |       {}        |
3987                             +-----------------+   node of depth i-1
3988                             |      FALSE      |
3989                             +-----------------+
3990                             |  {Gold, White}  |
3991                             +-----------------+
3992                                      |
3993                                      |
3994                                      |
3995                                      V
3996                             +-----------------+
3997                             |      Gold       |
3998                             +-----------------+
3999                             |       {}        |
4000                             +-----------------+ node of depth i
4001                             |  uninitialized  |
4002                             +-----------------+
4003                             |     {Gold}      |
4004                             +-----------------+
4005
4006                    Figure 4.  Processing an exact match
4007
4008            (ii)  If there was no match in step (i) and the
4009            valid_policy_tree includes a node of depth i-1 with the
4010            valid policy anyPolicy, generate a child node with the
4011            following values: set the valid_policy to P-OID; set the
4012            qualifier_set to P-Q, and set the expected_policy_set to
4013            {P-OID}.
4014
4015            For example, consider a valid_policy_tree with a node of
4016            depth i-1 where the valid_policy is anyPolicy.  Assume the
4017            certificate policies Gold and Silver appear in the
4018            certificate policies extension of certificate i.  The Gold
4019            policy does not have a qualifier, but the Silver policy has
4020            the qualifier Q-Silver.  If Gold and Silver were not matched
4021            in (i) above, this rule will generate two child nodes of
4022            depth i, one for each policy.  The result is shown as Figure
4023            5.
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034Housley, et. al.            Standards Track                    [Page 72]
4035
4036RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4037
4038
4039                             +-----------------+
4040                             |    anyPolicy    |
4041                             +-----------------+
4042                             |       {}        |
4043                             +-----------------+ node of depth i-1
4044                             |      FALSE      |
4045                             +-----------------+
4046                             |   {anyPolicy}   |
4047                             +-----------------+
4048                                /           \
4049                               /             \
4050                              /               \
4051                             /                 \
4052               +-----------------+          +-----------------+
4053               |      Gold       |          |     Silver      |
4054               +-----------------+          +-----------------+
4055               |       {}        |          |   {Q-Silver}    |
4056               +-----------------+ nodes of +-----------------+
4057               | uninitialized   | depth i  | uninitialized   |
4058               +-----------------+          +-----------------+
4059               |     {Gold}      |          |    {Silver}     |
4060               +-----------------+          +-----------------+
4061
4062               Figure 5.  Processing unmatched policies when a leaf node
4063               specifies anyPolicy
4064
4065         (2)  If the certificate policies extension includes the policy
4066         anyPolicy with the qualifier set AP-Q and either (a)
4067         inhibit_any-policy is greater than 0 or (b) i<n and the
4068         certificate is self-issued, then:
4069
4070         For each node in the valid_policy_tree of depth i-1, for each
4071         value in the expected_policy_set (including anyPolicy) that
4072         does not appear in a child node, create a child node with the
4073         following values: set the valid_policy to the value from the
4074         expected_policy_set in the parent node; set the qualifier_set
4075         to AP-Q, and set the expected_policy_set to the value in the
4076         valid_policy from this node.
4077
4078         For example, consider a valid_policy_tree with a node of depth
4079         i-1 where the expected_policy_set is {Gold, Silver}.  Assume
4080         anyPolicy appears in the certificate policies extension of
4081         certificate i, but Gold and Silver do not.  This rule will
4082         generate two child nodes of depth i, one for each policy.  The
4083         result is shown below as Figure 6.
4084
4085
4086
4087
4088
4089
4090Housley, et. al.            Standards Track                    [Page 73]
4091
4092RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4093
4094
4095                          +-----------------+
4096                          |      Red        |
4097                          +-----------------+
4098                          |       {}        |
4099                          +-----------------+ node of depth i-1
4100                          |      FALSE      |
4101                          +-----------------+
4102                          |  {Gold, Silver} |
4103                          +-----------------+
4104                             /           \
4105                            /             \
4106                           /               \
4107                          /                 \
4108            +-----------------+          +-----------------+
4109            |      Gold       |          |     Silver      |
4110            +-----------------+          +-----------------+
4111            |       {}        |          |       {}        |
4112            +-----------------+ nodes of +-----------------+
4113            |  uninitialized  | depth i  |  uninitialized  |
4114            +-----------------+          +-----------------+
4115            |     {Gold}      |          |    {Silver}     |
4116            +-----------------+          +-----------------+
4117
4118         Figure 6.  Processing unmatched policies when the certificate
4119         policies extension specifies anyPolicy
4120
4121         (3)  If there is a node in the valid_policy_tree of depth i-1
4122         or less without any child nodes, delete that node.  Repeat this
4123         step until there are no nodes of depth i-1 or less without
4124         children.
4125
4126         For example, consider the valid_policy_tree shown in Figure 7
4127         below.  The two nodes at depth i-1 that are marked with an 'X'
4128         have no children, and are deleted.  Applying this rule to the
4129         resulting tree will cause the node at depth i-2 that is marked
4130         with an 'Y' to be deleted.  The following application of the
4131         rule does not cause any nodes to be deleted, and this step is
4132         complete.
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146Housley, et. al.            Standards Track                    [Page 74]
4147
4148RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4149
4150
4151                              +-----------+
4152                              |           | node of depth i-3
4153                              +-----------+
4154                              /     |     \
4155                             /      |      \
4156                            /       |       \
4157                +-----------+ +-----------+ +-----------+
4158                |           | |           | |     Y     | nodes of
4159                +-----------+ +-----------+ +-----------+ depth i-2
4160                /   \               |             |
4161               /     \              |             |
4162              /       \             |             |
4163   +-----------+ +-----------+ +-----------+ +-----------+ nodes of
4164   |           | |     X     | |           | |    X      |  depth
4165   +-----------+ +-----------+ +-----------+ +-----------+   i-1
4166         |                      /    |    \
4167         |                     /     |     \
4168         |                    /      |      \
4169   +-----------+ +-----------+ +-----------+ +-----------+ nodes of
4170   |           | |           | |           | |           |  depth
4171   +-----------+ +-----------+ +-----------+ +-----------+   i
4172
4173          Figure 7.  Pruning the valid_policy_tree
4174
4175         (4)  If the certificate policies extension was marked as
4176         critical, set the criticality_indicator in all nodes of depth i
4177         to TRUE.  If the certificate policies extension was not marked
4178         critical, set the criticality_indicator in all nodes of depth i
4179         to FALSE.
4180
4181      (e)  If the certificate policies extension is not present, set the
4182      valid_policy_tree to NULL.
4183
4184      (f)  Verify that either explicit_policy is greater than 0 or the
4185      valid_policy_tree is not equal to NULL;
4186
4187   If any of steps (a), (b), (c), or (f) fails, the procedure
4188   terminates, returning a failure indication and an appropriate reason.
4189
4190   If i is not equal to n, continue by performing the preparatory steps
4191   listed in 6.1.4.  If i is equal to n, perform the wrap-up steps
4192   listed in 6.1.5.
4193
41946.1.4  Preparation for Certificate i+1
4195
4196   To prepare for processing of certificate i+1, perform the following
4197   steps for certificate i:
4198
4199
4200
4201
4202Housley, et. al.            Standards Track                    [Page 75]
4203
4204RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4205
4206
4207      (a)  If a policy mapping extension is present, verify that the
4208      special value anyPolicy does not appear as an issuerDomainPolicy
4209      or a subjectDomainPolicy.
4210
4211      (b)  If a policy mapping extension is present, then for each
4212      issuerDomainPolicy ID-P in the policy mapping extension:
4213
4214         (1)  If the policy_mapping variable is greater than 0, for each
4215         node in the valid_policy_tree of depth i where ID-P is the
4216         valid_policy, set expected_policy_set to the set of
4217         subjectDomainPolicy values that are specified as equivalent to
4218         ID-P by the policy mapping extension.
4219
4220         If no node of depth i in the valid_policy_tree has a
4221         valid_policy of ID-P but there is a node of depth i with a
4222         valid_policy of anyPolicy, then generate a child node of the
4223         node of depth i-1 that has a valid_policy of anyPolicy as
4224         follows:
4225
4226            (i)  set the valid_policy to ID-P;
4227
4228            (ii)  set the qualifier_set to the qualifier set of the
4229            policy anyPolicy in the certificate policies extension of
4230            certificate i;
4231
4232            (iii)  set the criticality_indicator to the criticality of
4233            the certificate policies extension of certificate i;
4234
4235            (iv)  and set the expected_policy_set to the set of
4236            subjectDomainPolicy values that are specified as equivalent
4237            to ID-P by the policy mappings extension.
4238
4239         (2)  If the policy_mapping variable is equal to 0:
4240
4241            (i)  delete each node of depth i in the valid_policy_tree
4242            where ID-P is the valid_policy.
4243
4244            (ii)  If there is a node in the valid_policy_tree of depth
4245            i-1 or less without any child nodes, delete that node.
4246            Repeat this step until there are no nodes of depth i-1 or
4247            less without children.
4248
4249      (c)  Assign the certificate subject name to working_issuer_name.
4250
4251      (d)  Assign the certificate subjectPublicKey to
4252      working_public_key.
4253
4254
4255
4256
4257
4258Housley, et. al.            Standards Track                    [Page 76]
4259
4260RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4261
4262
4263      (e)  If the subjectPublicKeyInfo field of the certificate contains
4264      an algorithm field with non-null parameters, assign the parameters
4265      to the working_public_key_parameters variable.
4266
4267      If the subjectPublicKeyInfo field of the certificate contains an
4268      algorithm field with null parameters or parameters are omitted,
4269      compare the certificate subjectPublicKey algorithm to the
4270      working_public_key_algorithm.  If the certificate subjectPublicKey
4271      algorithm and the working_public_key_algorithm are different, set
4272      the working_public_key_parameters to null.
4273
4274      (f)  Assign the certificate subjectPublicKey algorithm to the
4275      working_public_key_algorithm variable.
4276
4277      (g)  If a name constraints extension is included in the
4278      certificate, modify the permitted_subtrees and excluded_subtrees
4279      state variables as follows:
4280
4281         (1)  If permittedSubtrees is present in the certificate, set
4282         the permitted_subtrees state variable to the intersection of
4283         its previous value and the value indicated in the extension
4284         field.  If permittedSubtrees does not include a particular name
4285         type, the permitted_subtrees state variable is unchanged for
4286         that name type.  For example, the intersection of nist.gov and
4287         csrc.nist.gov is csrc.nist.gov.  And, the intersection of
4288         nist.gov and rsasecurity.com is the empty set.
4289
4290         (2)  If excludedSubtrees is present in the certificate, set the
4291         excluded_subtrees state variable to the union of its previous
4292         value and the value indicated in the extension field.  If
4293         excludedSubtrees does not include a particular name type, the
4294         excluded_subtrees state variable is unchanged for that name
4295         type.  For example, the union of the name spaces nist.gov and
4296         csrc.nist.gov is nist.gov.  And, the union of nist.gov and
4297         rsasecurity.com is both name spaces.
4298
4299      (h)  If the issuer and subject names are not identical:
4300
4301         (1)  If explicit_policy is not 0, decrement explicit_policy by
4302         1.
4303
4304         (2)  If policy_mapping is not 0, decrement policy_mapping by 1.
4305
4306         (3)  If inhibit_any-policy is not 0, decrement inhibit_any-
4307         policy by 1.
4308
4309
4310
4311
4312
4313
4314Housley, et. al.            Standards Track                    [Page 77]
4315
4316RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4317
4318
4319      (i)  If a policy constraints extension is included in the
4320      certificate, modify the explicit_policy and policy_mapping state
4321      variables as follows:
4322
4323         (1)  If requireExplicitPolicy is present and is less than
4324         explicit_policy, set explicit_policy to the value of
4325         requireExplicitPolicy.
4326
4327         (2)  If inhibitPolicyMapping is present and is less than
4328         policy_mapping, set policy_mapping to the value of
4329         inhibitPolicyMapping.
4330
4331      (j)  If the inhibitAnyPolicy extension is included in the
4332      certificate and is less than inhibit_any-policy, set inhibit_any-
4333      policy to the value of inhibitAnyPolicy.
4334
4335      (k)  Verify that the certificate is a CA certificate (as specified
4336      in a basicConstraints extension or as verified out-of-band).
4337
4338      (l)  If the certificate was not self-issued, verify that
4339      max_path_length is greater than zero and decrement max_path_length
4340      by 1.
4341
4342      (m)  If pathLengthConstraint is present in the certificate and is
4343      less than max_path_length, set max_path_length to the value of
4344      pathLengthConstraint.
4345
4346      (n)  If a key usage extension is present, verify that the
4347      keyCertSign bit is set.
4348
4349      (o)  Recognize and process any other critical extension present in
4350      the certificate.  Process any other recognized non-critical
4351      extension present in the certificate.
4352
4353   If check (a), (k), (l), (n) or (o) fails, the procedure terminates,
4354   returning a failure indication and an appropriate reason.
4355
4356   If (a), (k), (l), (n) and (o) have completed successfully, increment
4357   i and perform the basic certificate processing specified in 6.1.3.
4358
43596.1.5  Wrap-up procedure
4360
4361   To complete the processing of the end entity certificate, perform the
4362   following steps for certificate n:
4363
4364      (a)  If certificate n was not self-issued and explicit_policy is
4365      not 0, decrement explicit_policy by 1.
4366
4367
4368
4369
4370Housley, et. al.            Standards Track                    [Page 78]
4371
4372RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4373
4374
4375      (b)  If a policy constraints extension is included in the
4376      certificate and requireExplicitPolicy is present and has a value
4377      of 0, set the explicit_policy state variable to 0.
4378
4379      (c)  Assign the certificate subjectPublicKey to
4380      working_public_key.
4381
4382      (d)  If the subjectPublicKeyInfo field of the certificate contains
4383      an algorithm field with non-null parameters, assign the parameters
4384      to the working_public_key_parameters variable.
4385
4386      If the subjectPublicKeyInfo field of the certificate contains an
4387      algorithm field with null parameters or parameters are omitted,
4388      compare the certificate subjectPublicKey algorithm to the
4389      working_public_key_algorithm.  If the certificate subjectPublicKey
4390      algorithm and the working_public_key_algorithm are different, set
4391      the working_public_key_parameters to null.
4392
4393      (e)  Assign the certificate subjectPublicKey algorithm to the
4394      working_public_key_algorithm variable.
4395
4396      (f)  Recognize and process any other critical extension present in
4397      the certificate n.  Process any other recognized non-critical
4398      extension present in certificate n.
4399
4400      (g)  Calculate the intersection of the valid_policy_tree and the
4401      user-initial-policy-set, as follows:
4402
4403         (i)  If the valid_policy_tree is NULL, the intersection is
4404         NULL.
4405
4406         (ii)  If the valid_policy_tree is not NULL and the user-
4407         initial-policy-set is any-policy, the intersection is the
4408         entire valid_policy_tree.
4409
4410         (iii)  If the valid_policy_tree is not NULL and the user-
4411         initial-policy-set is not any-policy, calculate the
4412         intersection of the valid_policy_tree and the user-initial-
4413         policy-set as follows:
4414
4415            1.  Determine the set of policy nodes whose parent nodes
4416            have a valid_policy of anyPolicy.  This is the
4417            valid_policy_node_set.
4418
4419            2.  If the valid_policy of any node in the
4420            valid_policy_node_set is not in the user-initial-policy-set
4421            and is not anyPolicy, delete this node and all its children.
4422
4423
4424
4425
4426Housley, et. al.            Standards Track                    [Page 79]
4427
4428RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4429
4430
4431            3.  If the valid_policy_tree includes a node of depth n with
4432            the valid_policy anyPolicy and the user-initial-policy-set
4433            is not any-policy perform the following steps:
4434
4435               a. Set P-Q to the qualifier_set in the node of depth n
4436               with valid_policy anyPolicy.
4437
4438               b. For each P-OID in the user-initial-policy-set that is
4439               not the valid_policy of a node in the
4440               valid_policy_node_set, create a child node whose parent
4441               is the node of depth n-1 with the valid_policy anyPolicy.
4442               Set the values in the child node as follows: set the
4443               valid_policy to P-OID; set the qualifier_set to P-Q; copy
4444               the criticality_indicator from the node of depth n with
4445               the valid_policy anyPolicy; and set the
4446               expected_policy_set to {P-OID}.
4447
4448               c.  Delete the node of depth n with the valid_policy
4449               anyPolicy.
4450
4451            4.  If there is a node in the valid_policy_tree of depth n-1
4452            or less without any child nodes, delete that node.  Repeat
4453            this step until there are no nodes of depth n-1 or less
4454            without children.
4455
4456   If either (1) the value of explicit_policy variable is greater than
4457   zero, or (2) the valid_policy_tree is not NULL, then path processing
4458   has succeeded.
4459
44606.1.6  Outputs
4461
4462   If path processing succeeds, the procedure terminates, returning a
4463   success indication together with final value of the
4464   valid_policy_tree, the working_public_key, the
4465   working_public_key_algorithm, and the working_public_key_parameters.
4466
44676.2  Using the Path Validation Algorithm
4468
4469   The path validation algorithm describes the process of validating a
4470   single certification path.  While each certification path begins with
4471   a specific trust anchor, there is no requirement that all
4472   certification paths validated by a particular system share a single
4473   trust anchor.  An implementation that supports multiple trust anchors
4474   MAY augment the algorithm presented in section 6.1 to further limit
4475   the set of valid certification paths which begin with a particular
4476   trust anchor.  For example, an implementation MAY modify the
4477   algorithm to apply name constraints to a specific trust anchor during
4478   the initialization phase, or the application MAY require the presence
4479
4480
4481
4482Housley, et. al.            Standards Track                    [Page 80]
4483
4484RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4485
4486
4487   of a particular alternative name form in the end entity certificate,
4488   or the application MAY impose requirements on application-specific
4489   extensions.  Thus, the path validation algorithm presented in section
4490   6.1 defines the minimum conditions for a path to be considered valid.
4491
4492   The selection of one or more trusted CAs is a local decision.  A
4493   system may provide any one of its trusted CAs as the trust anchor for
4494   a particular path.  The inputs to the path validation algorithm may
4495   be different for each path.  The inputs used to process a path may
4496   reflect application-specific requirements or limitations in the trust
4497   accorded a particular trust anchor.  For example, a trusted CA may
4498   only be trusted for a particular certificate policy.  This
4499   restriction can be expressed through the inputs to the path
4500   validation procedure.
4501
4502   It is also possible to specify an extended version of the above
4503   certification path processing procedure which results in default
4504   behavior identical to the rules of PEM [RFC 1422].  In this extended
4505   version, additional inputs to the procedure are a list of one or more
4506   Policy Certification Authority (PCA) names and an indicator of the
4507   position in the certification path where the PCA is expected.  At the
4508   nominated PCA position, the CA name is compared against this list.
4509   If a recognized PCA name is found, then a constraint of
4510   SubordinateToCA is implicitly assumed for the remainder of the
4511   certification path and processing continues.  If no valid PCA name is
4512   found, and if the certification path cannot be validated on the basis
4513   of identified policies, then the certification path is considered
4514   invalid.
4515
45166.3  CRL Validation
4517
4518   This section describes the steps necessary to determine if a
4519   certificate is revoked or on hold status when CRLs are the revocation
4520   mechanism used by the certificate issuer.  Conforming implementations
4521   that support CRLs are not required to implement this algorithm, but
4522   they MUST be functionally equivalent to the external behavior
4523   resulting from this procedure.  Any algorithm may be used by a
4524   particular implementation so long as it derives the correct result.
4525
4526   This algorithm assumes that all of the needed CRLs are available in a
4527   local cache.  Further, if the next update time of a CRL has passed,
4528   the algorithm assumes a mechanism to fetch a current CRL and place it
4529   in the local CRL cache.
4530
4531   This algorithm defines a set of inputs, a set of state variables, and
4532   processing steps that are performed for each certificate in the path.
4533   The algorithm output is the revocation status of the certificate.
4534
4535
4536
4537
4538Housley, et. al.            Standards Track                    [Page 81]
4539
4540RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4541
4542
45436.3.1  Revocation Inputs
4544
4545   To support revocation processing, the algorithm requires two inputs:
4546
4547      (a)  certificate:  The algorithm requires the certificate serial
4548      number and issuer name to determine whether a certificate is on a
4549      particular CRL.  The basicConstraints extension is used to
4550      determine whether the supplied certificate is associated with a CA
4551      or an end entity.  If present, the algorithm uses the
4552      cRLDistributionsPoint and freshestCRL extensions to determine
4553      revocation status.
4554
4555      (b)  use-deltas:  This boolean input determines whether delta CRLs
4556      are applied to CRLs.
4557
4558      Note that implementations supporting legacy PKIs, such as RFC 1422
4559      and X.509 version 1, will need an additional input indicating
4560      whether the supplied certificate is associated with a CA or an end
4561      entity.
4562
45636.3.2  Initialization and Revocation State Variables
4564
4565   To support CRL processing, the algorithm requires the following state
4566   variables:
4567
4568      (a)  reasons_mask:  This variable contains the set of revocation
4569      reasons supported by the CRLs and delta CRLs processed so far.
4570      The legal members of the set are the possible revocation reason
4571      values: unspecified, keyCompromise, caCompromise,
4572      affiliationChanged, superseded, cessationOfOperation,
4573      certificateHold, privilegeWithdrawn, and aACompromise.  The
4574      special value all-reasons is used to denote the set of all legal
4575      members.  This variable is initialized to the empty set.
4576
4577      (b)  cert_status:  This variable contains the status of the
4578      certificate.  This variable may be assigned one of the following
4579      values: unspecified, keyCompromise, caCompromise,
4580      affiliationChanged, superseded, cessationOfOperation,
4581      certificateHold, removeFromCRL, privilegeWithdrawn, aACompromise,
4582      the special value UNREVOKED, or the special value UNDETERMINED.
4583      This variable is initialized to the special value UNREVOKED.
4584
4585      (c)  interim_reasons_mask:  This contains the set of revocation
4586      reasons supported by the CRL or delta CRL currently being
4587      processed.
4588
4589
4590
4591
4592
4593
4594Housley, et. al.            Standards Track                    [Page 82]
4595
4596RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4597
4598
4599   Note: In some environments, it is not necessary to check all reason
4600   codes.  For example, some environments are only concerned with
4601   caCompromise and keyCompromise for CA certificates.  This algorithm
4602   checks all reason codes.  Additional processing and state variables
4603   may be necessary to limit the checking to a subset of the reason
4604   codes.
4605
46066.3.3  CRL Processing
4607
4608   This algorithm begins by assuming the certificate is not revoked.
4609   The algorithm checks one or more CRLs until either the certificate
4610   status is determined to be revoked or sufficient CRLs have been
4611   checked to cover all reason codes.
4612
4613   For each distribution point (DP) in the certificate CRL distribution
4614   points extension, for each corresponding CRL in the local CRL cache,
4615   while ((reasons_mask is not all-reasons) and (cert_status is
4616   UNREVOKED)) perform the following:
4617
4618      (a)  Update the local CRL cache by obtaining a complete CRL, a
4619      delta CRL, or both, as required:
4620
4621         (1)  If the current time is after the value of the CRL next
4622         update field, then do one of the following:
4623
4624            (i)  If use-deltas is set and either the certificate or the
4625            CRL contains the freshest CRL extension, obtain a delta CRL
4626            with the a next update value that is after the current time
4627            and can be used to update the locally cached CRL as
4628            specified in section 5.2.4.
4629
4630            (ii)  Update the local CRL cache with a current complete
4631            CRL, verify that the current time is before the next update
4632            value in the new CRL, and continue processing with the new
4633            CRL.  If use-deltas is set, then obtain the current delta
4634            CRL that can be used to update the new locally cached
4635            complete CRL as specified in section 5.2.4.
4636
4637         (2)  If the current time is before the value of the next update
4638         field and use-deltas is set, then obtain the current delta CRL
4639         that can be used to update the locally cached complete CRL as
4640         specified in section 5.2.4.
4641
4642      (b)  Verify the issuer and scope of the complete CRL as follows:
4643
4644
4645
4646
4647
4648
4649
4650Housley, et. al.            Standards Track                    [Page 83]
4651
4652RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4653
4654
4655         (1)  If the DP includes cRLIssuer, then verify that the issuer
4656         field in the complete CRL matches cRLIssuer in the DP and that
4657         the complete CRL contains an issuing distribution point
4658         extension with the indrectCRL boolean asserted.  Otherwise,
4659         verify that the CRL issuer matches the certificate issuer.
4660
4661         (2)  If the complete CRL includes an issuing distribution point
4662         (IDP) CRL extension check the following:
4663
4664            (i)  If the distribution point name is present in the IDP
4665            CRL extension and the distribution field is present in the
4666            DP, then verify that one of the names in the IDP matches one
4667            of the names in the DP.  If the distribution point name is
4668            present in the IDP CRL extension and the distribution field
4669            is omitted from the DP, then verify that one of the names in
4670            the IDP matches one of the names in the cRLIssuer field of
4671            the DP.
4672
4673            (ii)  If the onlyContainsUserCerts boolean is asserted in
4674            the IDP CRL extension, verify that the certificate does not
4675            include the basic constraints extension with the cA boolean
4676            asserted.
4677
4678            (iii)  If the onlyContainsCACerts boolean is asserted in the
4679            IDP CRL extension, verify that the certificate includes the
4680            basic constraints extension with the cA boolean asserted.
4681
4682            (iv)  Verify that the onlyContainsAttributeCerts boolean is
4683            not asserted.
4684
4685      (c)  If use-deltas is set, verify the issuer and scope of the
4686      delta CRL as follows:
4687
4688         (1)  Verify that the delta CRL issuer matches complete CRL
4689         issuer.
4690
4691         (2)  If the complete CRL includes an issuing distribution point
4692         (IDP) CRL extension, verify that the delta CRL contains a
4693         matching IDP CRL extension.  If the complete CRL omits an IDP
4694         CRL extension, verify that the delta CRL also omits an IDP CRL
4695         extension.
4696
4697         (3)  Verify that the delta CRL authority key identifier
4698         extension matches complete CRL authority key identifier
4699         extension.
4700
4701
4702
4703
4704
4705
4706Housley, et. al.            Standards Track                    [Page 84]
4707
4708RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4709
4710
4711   (d)  Compute the interim_reasons_mask for this CRL as follows:
4712
4713         (1)  If the issuing distribution point (IDP) CRL extension is
4714         present and includes onlySomeReasons and the DP includes
4715         reasons, then set interim_reasons_mask to the intersection of
4716         reasons in the DP and onlySomeReasons in IDP CRL extension.
4717
4718         (2)  If the IDP CRL extension includes onlySomeReasons but the
4719         DP omits reasons, then set interim_reasons_mask to the value of
4720         onlySomeReasons in IDP CRL extension.
4721
4722         (3)  If the IDP CRL extension is not present or omits
4723         onlySomeReasons but the DP includes reasons, then set
4724         interim_reasons_mask to the value of DP reasons.
4725
4726         (4)  If the IDP CRL extension is not present or omits
4727         onlySomeReasons and the DP omits reasons, then set
4728         interim_reasons_mask to the special value all-reasons.
4729
4730   (e)  Verify that interim_reasons_mask includes one or more reasons
4731   that is not included in the reasons_mask.
4732
4733   (f)  Obtain and validate the certification path for the complete CRL
4734   issuer.  If a key usage extension is present in the CRL issuer's
4735   certificate, verify that the cRLSign bit is set.
4736
4737   (g)  Validate the signature on the complete CRL using the public key
4738   validated in step (f).
4739
4740   (h)  If use-deltas is set, then validate the signature on the delta
4741   CRL using the public key validated in step (f).
4742
4743   (i)  If use-deltas is set, then search for the certificate on the
4744   delta CRL.  If an entry is found that matches the certificate issuer
4745   and serial number as described in section 5.3.4, then set the
4746   cert_status variable to the indicated reason as follows:
4747
4748         (1)  If the reason code CRL entry extension is present, set the
4749         cert_status variable to the value of the reason code CRL entry
4750         extension.
4751
4752         (2)  If the reason code CRL entry extension is not present, set
4753         the cert_status variable to the value unspecified.
4754
4755
4756
4757
4758
4759
4760
4761
4762Housley, et. al.            Standards Track                    [Page 85]
4763
4764RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4765
4766
4767      (j)  If (cert_status is UNREVOKED), then search for the
4768      certificate on the complete CRL.  If an entry is found that
4769      matches the certificate issuer and serial number as described in
4770      section 5.3.4, then set the cert_status variable to the indicated
4771      reason as described in step (i).
4772
4773      (k)  If (cert_status is removeFromCRL), then set cert_status to
4774      UNREVOKED.
4775
4776   If ((reasons_mask is all-reasons) OR (cert_status is not UNREVOKED)),
4777   then the revocation status has been determined, so return
4778   cert_status.
4779
4780   If the revocation status has not been determined, repeat the process
4781   above with any available CRLs not specified in a distribution point
4782   but issued by the certificate issuer.  For the processing of such a
4783   CRL, assume a DP with both the reasons and the cRLIssuer fields
4784   omitted and a distribution point name of the certificate issuer.
4785   That is, the sequence of names in fullName is generated from the
4786   certificate issuer field as well as the certificate issuerAltName
4787   extension.  If the revocation status remains undetermined, then
4788   return the cert_status UNDETERMINED.
4789
47907  References
4791
4792   [ISO 10646] ISO/IEC 10646-1:1993.  International Standard --
4793               Information technology -- Universal Multiple-Octet Coded
4794               Character Set (UCS) -- Part 1: Architecture and Basic
4795               Multilingual Plane.
4796
4797   [RFC 791]   Postel, J.,  "Internet Protocol", STD 5, RFC 791,
4798               September 1981.
4799
4800   [RFC 822]   Crocker, D., "Standard for the format of ARPA Internet
4801               text messages", STD 11, RFC 822, August 1982.
4802
4803   [RFC 1034]  Mockapetris, P., "Domain Names - Concepts and
4804               Facilities", STD 13, RFC 1034, November 1987.
4805
4806   [RFC 1422]  Kent, S., "Privacy Enhancement for Internet Electronic
4807               Mail: Part II: Certificate-Based Key Management," RFC
4808               1422, February 1993.
4809
4810   [RFC 1423]  Balenson, D., "Privacy Enhancement for Internet
4811               Electronic Mail: Part III: Algorithms, Modes, and
4812               Identifiers," RFC 1423, February 1993.
4813
4814
4815
4816
4817
4818Housley, et. al.            Standards Track                    [Page 86]
4819
4820RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4821
4822
4823   [RFC 1510]  Kohl, J. and C. Neuman, "The Kerberos Network
4824               Authentication Service (V5)," RFC 1510, September 1993.
4825
4826   [RFC 1519]  Fuller, V., T. Li, J. Yu and K. Varadhan, "Classless
4827               Inter-Domain Routing (CIDR): An Address Assignment and
4828               Aggregation Strategy", RFC 1519, September 1993.
4829
4830   [RFC 1738]  Berners-Lee, T., L. Masinter and M. McCahill, "Uniform
4831               Resource Locators (URL)", RFC 1738, December 1994.
4832
4833   [RFC 1778]  Howes, T., S. Kille, W. Yeong and C. Robbins, "The String
4834               Representation of Standard Attribute Syntaxes," RFC 1778,
4835               March 1995.
4836
4837   [RFC 1883]  Deering, S. and R. Hinden.  "Internet Protocol, Version 6
4838               (IPv6) Specification", RFC 1883, December 1995.
4839
4840   [RFC 2044]  F. Yergeau, F., "UTF-8, a transformation format of
4841               Unicode and ISO 10646", RFC 2044, October 1996.
4842
4843   [RFC 2119]  Bradner, S., "Key words for use in RFCs to Indicate
4844               Requirement Levels", BCP 14, RFC 2119, March 1997.
4845
4846   [RFC 2247]  Kille, S., M. Wahl, A. Grimstad, R. Huber and S.
4847               Sataluri, "Using Domains in LDAP/X.500 Distinguished
4848               Names", RFC 2247, January 1998.
4849
4850   [RFC 2252]  Wahl, M., A. Coulbeck, T. Howes and S. Kille,
4851               "Lightweight Directory Access Protocol (v3):  Attribute
4852               Syntax Definitions", RFC 2252, December 1997.
4853
4854   [RFC 2277]  Alvestrand, H., "IETF Policy on Character Sets and
4855               Languages", BCP 18, RFC 2277, January 1998.
4856
4857   [RFC 2279]  Yergeau, F., "UTF-8, a transformation format of ISO
4858               10646", RFC 2279, January 1998.
4859
4860   [RFC 2459]  Housley, R., W. Ford, W. Polk and D. Solo, "Internet
4861               X.509 Public Key Infrastructure: Certificate and CRL
4862               Profile", RFC 2459, January 1999.
4863
4864   [RFC 2560]  Myers, M., R. Ankney, A. Malpani, S. Galperin and C.
4865               Adams, "Online Certificate Status Protocal - OCSP", June
4866               1999.
4867
4868   [SDN.701]   SDN.701, "Message Security Protocol 4.0", Revision A,
4869               1997-02-06.
4870
4871
4872
4873
4874Housley, et. al.            Standards Track                    [Page 87]
4875
4876RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4877
4878
4879   [X.501]     ITU-T Recommendation X.501: Information Technology - Open
4880               Systems Interconnection - The Directory: Models, 1993.
4881
4882   [X.509]     ITU-T Recommendation X.509 (1997 E): Information
4883               Technology - Open Systems Interconnection - The
4884               Directory: Authentication Framework, June 1997.
4885
4886   [X.520]     ITU-T Recommendation X.520: Information Technology - Open
4887               Systems Interconnection - The Directory: Selected
4888               Attribute Types, 1993.
4889
4890   [X.660]     ITU-T Recommendation X.660 Information Technology - ASN.1
4891               encoding rules: Specification of Basic Encoding Rules
4892               (BER), Canonical Encoding Rules (CER) and Distinguished
4893               Encoding Rules (DER), 1997.
4894
4895   [X.690]     ITU-T Recommendation X.690 Information Technology - Open
4896               Systems Interconnection - Procedures for the operation of
4897               OSI Registration Authorities: General procedures, 1992.
4898
4899   [X9.55]     ANSI X9.55-1995, Public Key Cryptography For The
4900               Financial Services Industry: Extensions To Public Key
4901               Certificates And Certificate Revocation Lists, 8
4902               December, 1995.
4903
4904   [PKIXALGS]  Bassham, L., Polk, W. and R. Housley, "Algorithms and
4905               Identifiers for the Internet X.509 Public Key
4906               Infrastructure Certificate and Certificate Revocation
4907               Lists (CRL) Profile", RFC 3279, April 2002.
4908
4909   [PKIXTSA]   Adams, C., Cain, P., Pinkas, D. and R. Zuccherato,
4910               "Internet X.509 Public Key Infrastructure Time-Stamp
4911               Protocol (TSP)", RFC 3161, August 2001.
4912
49138  Intellectual Property Rights
4914
4915   The IETF has been notified of intellectual property rights claimed in
4916   regard to some or all of the specification contained in this
4917   document.  For more information consult the online list of claimed
4918   rights (see http://www.ietf.org/ipr.html).
4919
4920   The IETF takes no position regarding the validity or scope of any
4921   intellectual property or other rights that might be claimed to
4922   pertain to the implementation or use of the technology described in
4923   this document or the extent to which any license under such rights
4924   might or might not be available; neither does it represent that it
4925   has made any effort to identify any such rights.  Information on the
4926   IETF's procedures with respect to rights in standards-track and
4927
4928
4929
4930Housley, et. al.            Standards Track                    [Page 88]
4931
4932RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4933
4934
4935   standards-related documentation can be found in BCP 11.  Copies of
4936   claims of rights made available for publication and any assurances of
4937   licenses to be made available, or the result of an attempt made to
4938   obtain a general license or permission for the use of such
4939   proprietary rights by implementors or users of this specification can
4940   be obtained from the IETF Secretariat.
4941
49429  Security Considerations
4943
4944   The majority of this specification is devoted to the format and
4945   content of certificates and CRLs.  Since certificates and CRLs are
4946   digitally signed, no additional integrity service is necessary.
4947   Neither certificates nor CRLs need be kept secret, and unrestricted
4948   and anonymous access to certificates and CRLs has no security
4949   implications.
4950
4951   However, security factors outside the scope of this specification
4952   will affect the assurance provided to certificate users.  This
4953   section highlights critical issues to be considered by implementers,
4954   administrators, and users.
4955
4956   The procedures performed by CAs and RAs to validate the binding of
4957   the subject's identity to their public key greatly affect the
4958   assurance that ought to be placed in the certificate.  Relying
4959   parties might wish to review the CA's certificate practice statement.
4960   This is particularly important when issuing certificates to other
4961   CAs.
4962
4963   The use of a single key pair for both signature and other purposes is
4964   strongly discouraged.  Use of separate key pairs for signature and
4965   key management provides several benefits to the users.  The
4966   ramifications associated with loss or disclosure of a signature key
4967   are different from loss or disclosure of a key management key.  Using
4968   separate key pairs permits a balanced and flexible response.
4969   Similarly, different validity periods or key lengths for each key
4970   pair may be appropriate in some application environments.
4971   Unfortunately, some legacy applications (e.g., SSL) use a single key
4972   pair for signature and key management.
4973
4974   The protection afforded private keys is a critical security factor.
4975   On a small scale, failure of users to protect their private keys will
4976   permit an attacker to masquerade as them, or decrypt their personal
4977   information.  On a larger scale, compromise of a CA's private signing
4978   key may have a catastrophic effect.  If an attacker obtains the
4979   private key unnoticed, the attacker may issue bogus certificates and
4980   CRLs.  Existence of bogus certificates and CRLs will undermine
4981   confidence in the system.  If such a compromise is detected, all
4982   certificates issued to the compromised CA MUST be revoked, preventing
4983
4984
4985
4986Housley, et. al.            Standards Track                    [Page 89]
4987
4988RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
4989
4990
4991   services between its users and users of other CAs.  Rebuilding after
4992   such a compromise will be problematic, so CAs are advised to
4993   implement a combination of strong technical measures (e.g., tamper-
4994   resistant cryptographic modules) and appropriate management
4995   procedures (e.g., separation of duties) to avoid such an incident.
4996
4997   Loss of a CA's private signing key may also be problematic.  The CA
4998   would not be able to produce CRLs or perform normal key rollover.
4999   CAs SHOULD maintain secure backup for signing keys.  The security of
5000   the key backup procedures is a critical factor in avoiding key
5001   compromise.
5002
5003   The availability and freshness of revocation information affects the
5004   degree of assurance that ought to be placed in a certificate.  While
5005   certificates expire naturally, events may occur during its natural
5006   lifetime which negate the binding between the subject and public key.
5007   If revocation information is untimely or unavailable, the assurance
5008   associated with the binding is clearly reduced.  Relying parties
5009   might not be able to process every critical extension that can appear
5010   in a CRL.  CAs SHOULD take extra care when making revocation
5011   information available only through CRLs that contain critical
5012   extensions, particularly if support for those extensions is not
5013   mandated by this profile.  For example, if revocation information is
5014   supplied using a combination of delta CRLs and full CRLs, and the
5015   delta CRLs are issued more frequently than the full CRLs, then
5016   relying parties that cannot handle the critical extensions related to
5017   delta CRL processing will not be able to obtain the most recent
5018   revocation information.  Alternatively, if a full CRL is issued
5019   whenever a delta CRL is issued, then timely revocation information
5020   will be available to all relying parties.  Similarly, implementations
5021   of the certification path validation mechanism described in section 6
5022   that omit revocation checking provide less assurance than those that
5023   support it.
5024
5025   The certification path validation algorithm depends on the certain
5026   knowledge of the public keys (and other information) about one or
5027   more trusted CAs.  The decision to trust a CA is an important
5028   decision as it ultimately determines the trust afforded a
5029   certificate.  The authenticated distribution of trusted CA public
5030   keys (usually in the form of a "self-signed" certificate) is a
5031   security critical out-of-band process that is beyond the scope of
5032   this specification.
5033
5034   In addition, where a key compromise or CA failure occurs for a
5035   trusted CA, the user will need to modify the information provided to
5036   the path validation routine.  Selection of too many trusted CAs makes
5037
5038
5039
5040
5041
5042Housley, et. al.            Standards Track                    [Page 90]
5043
5044RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5045
5046
5047   the trusted CA information difficult to maintain.  On the other hand,
5048   selection of only one trusted CA could limit users to a closed
5049   community of users.
5050
5051   The quality of implementations that process certificates also affects
5052   the degree of assurance provided.  The path validation algorithm
5053   described in section 6 relies upon the integrity of the trusted CA
5054   information, and especially the integrity of the public keys
5055   associated with the trusted CAs.  By substituting public keys for
5056   which an attacker has the private key, an attacker could trick the
5057   user into accepting false certificates.
5058
5059   The binding between a key and certificate subject cannot be stronger
5060   than the cryptographic module implementation and algorithms used to
5061   generate the signature.  Short key lengths or weak hash algorithms
5062   will limit the utility of a certificate.  CAs are encouraged to note
5063   advances in cryptology so they can employ strong cryptographic
5064   techniques.  In addition, CAs SHOULD decline to issue certificates to
5065   CAs or end entities that generate weak signatures.
5066
5067   Inconsistent application of name comparison rules can result in
5068   acceptance of invalid X.509 certification paths, or rejection of
5069   valid ones.  The X.500 series of specifications defines rules for
5070   comparing distinguished names that require comparison of strings
5071   without regard to case, character set, multi-character white space
5072   substring, or leading and trailing white space.  This specification
5073   relaxes these requirements, requiring support for binary comparison
5074   at a minimum.
5075
5076   CAs MUST encode the distinguished name in the subject field of a CA
5077   certificate identically to the distinguished name in the issuer field
5078   in certificates issued by that CA.  If CAs use different encodings,
5079   implementations might fail to recognize name chains for paths that
5080   include this certificate.  As a consequence, valid paths could be
5081   rejected.
5082
5083   In addition, name constraints for distinguished names MUST be stated
5084   identically to the encoding used in the subject field or
5085   subjectAltName extension.  If not, then name constraints stated as
5086   excludedSubTrees will not match and invalid paths will be accepted
5087   and name constraints expressed as permittedSubtrees will not match
5088   and valid paths will be rejected.  To avoid acceptance of invalid
5089   paths, CAs SHOULD state name constraints for distinguished names as
5090   permittedSubtrees wherever possible.
5091
5092
5093
5094
5095
5096
5097
5098Housley, et. al.            Standards Track                    [Page 91]
5099
5100RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5101
5102
5103Appendix A.  Psuedo-ASN.1 Structures and OIDs
5104
5105   This section describes data objects used by conforming PKI components
5106   in an "ASN.1-like" syntax.  This syntax is a hybrid of the 1988 and
5107   1993 ASN.1 syntaxes.  The 1988 ASN.1 syntax is augmented with 1993
5108   UNIVERSAL Types UniversalString, BMPString and UTF8String.
5109
5110   The ASN.1 syntax does not permit the inclusion of type statements in
5111   the ASN.1 module, and the 1993 ASN.1 standard does not permit use of
5112   the new UNIVERSAL types in modules using the 1988 syntax.  As a
5113   result, this module does not conform to either version of the ASN.1
5114   standard.
5115
5116   This appendix may be converted into 1988 ASN.1 by replacing the
5117   definitions for the UNIVERSAL Types with the 1988 catch-all "ANY".
5118
5119A.1 Explicitly Tagged Module, 1988 Syntax
5120
5121PKIX1Explicit88 { iso(1) identified-organization(3) dod(6) internet(1)
5122  security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-explicit(18) }
5123
5124DEFINITIONS EXPLICIT TAGS ::=
5125
5126BEGIN
5127
5128-- EXPORTS ALL --
5129
5130-- IMPORTS NONE --
5131
5132-- UNIVERSAL Types defined in 1993 and 1998 ASN.1
5133-- and required by this specification
5134
5135UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING
5136        -- UniversalString is defined in ASN.1:1993
5137
5138BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING
5139      -- BMPString is the subtype of UniversalString and models
5140      -- the Basic Multilingual Plane of ISO/IEC/ITU 10646-1
5141
5142UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING
5143      -- The content of this type conforms to RFC 2279.
5144
5145-- PKIX specific OIDs
5146
5147id-pkix  OBJECT IDENTIFIER  ::=
5148         { iso(1) identified-organization(3) dod(6) internet(1)
5149                    security(5) mechanisms(5) pkix(7) }
5150
5151
5152
5153
5154Housley, et. al.            Standards Track                    [Page 92]
5155
5156RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5157
5158
5159-- PKIX arcs
5160
5161id-pe OBJECT IDENTIFIER  ::=  { id-pkix 1 }
5162        -- arc for private certificate extensions
5163id-qt OBJECT IDENTIFIER ::= { id-pkix 2 }
5164        -- arc for policy qualifier types
5165id-kp OBJECT IDENTIFIER ::= { id-pkix 3 }
5166        -- arc for extended key purpose OIDS
5167id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
5168        -- arc for access descriptors
5169
5170-- policyQualifierIds for Internet policy qualifiers
5171
5172id-qt-cps      OBJECT IDENTIFIER ::=  { id-qt 1 }
5173      -- OID for CPS qualifier
5174id-qt-unotice  OBJECT IDENTIFIER ::=  { id-qt 2 }
5175      -- OID for user notice qualifier
5176
5177-- access descriptor definitions
5178
5179id-ad-ocsp         OBJECT IDENTIFIER ::= { id-ad 1 }
5180id-ad-caIssuers    OBJECT IDENTIFIER ::= { id-ad 2 }
5181id-ad-timeStamping OBJECT IDENTIFIER ::= { id-ad 3 }
5182id-ad-caRepository OBJECT IDENTIFIER ::= { id-ad 5 }
5183
5184-- attribute data types
5185
5186Attribute       ::=     SEQUENCE {
5187      type              AttributeType,
5188      values    SET OF AttributeValue }
5189            -- at least one value is required
5190
5191AttributeType           ::=  OBJECT IDENTIFIER
5192
5193AttributeValue          ::=  ANY
5194
5195AttributeTypeAndValue           ::=     SEQUENCE {
5196        type    AttributeType,
5197        value   AttributeValue }
5198
5199-- suggested naming attributes: Definition of the following
5200--   information object set may be augmented to meet local
5201--   requirements.  Note that deleting members of the set may
5202--   prevent interoperability with conforming implementations.
5203-- presented in pairs: the AttributeType followed by the
5204--   type definition for the corresponding AttributeValue
5205--Arc for standard naming attributes
5206id-at OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 4 }
5207
5208
5209
5210Housley, et. al.            Standards Track                    [Page 93]
5211
5212RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5213
5214
5215-- Naming attributes of type X520name
5216
5217id-at-name              AttributeType ::= { id-at 41 }
5218id-at-surname           AttributeType ::= { id-at 4 }
5219id-at-givenName         AttributeType ::= { id-at 42 }
5220id-at-initials          AttributeType ::= { id-at 43 }
5221id-at-generationQualifier AttributeType ::= { id-at 44 }
5222
5223X520name ::= CHOICE {
5224      teletexString     TeletexString   (SIZE (1..ub-name)),
5225      printableString   PrintableString (SIZE (1..ub-name)),
5226      universalString   UniversalString (SIZE (1..ub-name)),
5227      utf8String        UTF8String      (SIZE (1..ub-name)),
5228      bmpString         BMPString       (SIZE (1..ub-name)) }
5229
5230-- Naming attributes of type X520CommonName
5231
5232id-at-commonName        AttributeType ::= { id-at 3 }
5233
5234X520CommonName ::= CHOICE {
5235      teletexString     TeletexString   (SIZE (1..ub-common-name)),
5236      printableString   PrintableString (SIZE (1..ub-common-name)),
5237      universalString   UniversalString (SIZE (1..ub-common-name)),
5238      utf8String        UTF8String      (SIZE (1..ub-common-name)),
5239      bmpString         BMPString       (SIZE (1..ub-common-name)) }
5240
5241-- Naming attributes of type X520LocalityName
5242
5243id-at-localityName      AttributeType ::= { id-at 7 }
5244
5245X520LocalityName ::= CHOICE {
5246      teletexString     TeletexString   (SIZE (1..ub-locality-name)),
5247      printableString   PrintableString (SIZE (1..ub-locality-name)),
5248      universalString   UniversalString (SIZE (1..ub-locality-name)),
5249      utf8String        UTF8String      (SIZE (1..ub-locality-name)),
5250      bmpString         BMPString       (SIZE (1..ub-locality-name)) }
5251
5252-- Naming attributes of type X520StateOrProvinceName
5253
5254id-at-stateOrProvinceName AttributeType ::= { id-at 8 }
5255
5256X520StateOrProvinceName ::= CHOICE {
5257      teletexString     TeletexString   (SIZE (1..ub-state-name)),
5258      printableString   PrintableString (SIZE (1..ub-state-name)),
5259      universalString   UniversalString (SIZE (1..ub-state-name)),
5260      utf8String        UTF8String      (SIZE (1..ub-state-name)),
5261      bmpString         BMPString       (SIZE(1..ub-state-name)) }
5262
5263
5264
5265
5266Housley, et. al.            Standards Track                    [Page 94]
5267
5268RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5269
5270
5271-- Naming attributes of type X520OrganizationName
5272
5273id-at-organizationName  AttributeType ::= { id-at 10 }
5274
5275X520OrganizationName ::= CHOICE {
5276      teletexString     TeletexString
5277                          (SIZE (1..ub-organization-name)),
5278      printableString   PrintableString
5279                          (SIZE (1..ub-organization-name)),
5280      universalString   UniversalString
5281                          (SIZE (1..ub-organization-name)),
5282      utf8String        UTF8String
5283                          (SIZE (1..ub-organization-name)),
5284      bmpString         BMPString
5285                          (SIZE (1..ub-organization-name))  }
5286
5287-- Naming attributes of type X520OrganizationalUnitName
5288
5289id-at-organizationalUnitName AttributeType ::= { id-at 11 }
5290
5291X520OrganizationalUnitName ::= CHOICE {
5292      teletexString     TeletexString
5293                          (SIZE (1..ub-organizational-unit-name)),
5294      printableString   PrintableString
5295                          (SIZE (1..ub-organizational-unit-name)),
5296      universalString   UniversalString
5297                          (SIZE (1..ub-organizational-unit-name)),
5298      utf8String        UTF8String
5299                          (SIZE (1..ub-organizational-unit-name)),
5300      bmpString         BMPString
5301                          (SIZE (1..ub-organizational-unit-name)) }
5302
5303-- Naming attributes of type X520Title
5304
5305id-at-title             AttributeType ::= { id-at 12 }
5306
5307X520Title ::= CHOICE {
5308      teletexString     TeletexString   (SIZE (1..ub-title)),
5309      printableString   PrintableString (SIZE (1..ub-title)),
5310      universalString   UniversalString (SIZE (1..ub-title)),
5311      utf8String        UTF8String      (SIZE (1..ub-title)),
5312      bmpString         BMPString       (SIZE (1..ub-title)) }
5313
5314-- Naming attributes of type X520dnQualifier
5315
5316id-at-dnQualifier       AttributeType ::= { id-at 46 }
5317
5318X520dnQualifier ::=     PrintableString
5319
5320
5321
5322Housley, et. al.            Standards Track                    [Page 95]
5323
5324RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5325
5326
5327-- Naming attributes of type X520countryName (digraph from IS 3166)
5328
5329id-at-countryName       AttributeType ::= { id-at 6 }
5330
5331X520countryName ::=     PrintableString (SIZE (2))
5332
5333-- Naming attributes of type X520SerialNumber
5334
5335id-at-serialNumber      AttributeType ::= { id-at 5 }
5336
5337X520SerialNumber ::=    PrintableString (SIZE (1..ub-serial-number))
5338
5339-- Naming attributes of type X520Pseudonym
5340
5341id-at-pseudonym         AttributeType ::= { id-at 65 }
5342
5343X520Pseudonym ::= CHOICE {
5344   teletexString     TeletexString   (SIZE (1..ub-pseudonym)),
5345   printableString   PrintableString (SIZE (1..ub-pseudonym)),
5346   universalString   UniversalString (SIZE (1..ub-pseudonym)),
5347   utf8String        UTF8String      (SIZE (1..ub-pseudonym)),
5348   bmpString         BMPString       (SIZE (1..ub-pseudonym)) }
5349
5350-- Naming attributes of type DomainComponent (from RFC 2247)
5351
5352id-domainComponent      AttributeType ::=
5353                          { 0 9 2342 19200300 100 1 25 }
5354
5355DomainComponent ::=     IA5String
5356
5357-- Legacy attributes
5358
5359pkcs-9 OBJECT IDENTIFIER ::=
5360       { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 }
5361
5362id-emailAddress          AttributeType ::= { pkcs-9 1 }
5363
5364EmailAddress ::=         IA5String (SIZE (1..ub-emailaddress-length))
5365
5366-- naming data types --
5367
5368Name ::= CHOICE { -- only one possibility for now --
5369      rdnSequence  RDNSequence }
5370
5371RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
5372
5373DistinguishedName ::=   RDNSequence
5374
5375
5376
5377
5378Housley, et. al.            Standards Track                    [Page 96]
5379
5380RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5381
5382
5383RelativeDistinguishedName  ::=
5384                    SET SIZE (1 .. MAX) OF AttributeTypeAndValue
5385
5386-- Directory string type --
5387
5388DirectoryString ::= CHOICE {
5389      teletexString             TeletexString   (SIZE (1..MAX)),
5390      printableString           PrintableString (SIZE (1..MAX)),
5391      universalString           UniversalString (SIZE (1..MAX)),
5392      utf8String              UTF8String      (SIZE (1..MAX)),
5393      bmpString               BMPString       (SIZE (1..MAX)) }
5394
5395-- certificate and CRL specific structures begin here
5396
5397Certificate  ::=  SEQUENCE  {
5398     tbsCertificate       TBSCertificate,
5399     signatureAlgorithm   AlgorithmIdentifier,
5400     signature            BIT STRING  }
5401
5402TBSCertificate  ::=  SEQUENCE  {
5403     version         [0]  Version DEFAULT v1,
5404     serialNumber         CertificateSerialNumber,
5405     signature            AlgorithmIdentifier,
5406     issuer               Name,
5407     validity             Validity,
5408     subject              Name,
5409     subjectPublicKeyInfo SubjectPublicKeyInfo,
5410     issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
5411                          -- If present, version MUST be v2 or v3
5412     subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
5413                          -- If present, version MUST be v2 or v3
5414     extensions      [3]  Extensions OPTIONAL
5415                          -- If present, version MUST be v3 --  }
5416
5417Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }
5418
5419CertificateSerialNumber  ::=  INTEGER
5420
5421Validity ::= SEQUENCE {
5422     notBefore      Time,
5423     notAfter       Time  }
5424
5425Time ::= CHOICE {
5426     utcTime        UTCTime,
5427     generalTime    GeneralizedTime }
5428
5429UniqueIdentifier  ::=  BIT STRING
5430
5431
5432
5433
5434Housley, et. al.            Standards Track                    [Page 97]
5435
5436RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5437
5438
5439SubjectPublicKeyInfo  ::=  SEQUENCE  {
5440     algorithm            AlgorithmIdentifier,
5441     subjectPublicKey     BIT STRING  }
5442
5443Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension
5444
5445Extension  ::=  SEQUENCE  {
5446     extnID      OBJECT IDENTIFIER,
5447     critical    BOOLEAN DEFAULT FALSE,
5448     extnValue   OCTET STRING  }
5449
5450-- CRL structures
5451
5452CertificateList  ::=  SEQUENCE  {
5453     tbsCertList          TBSCertList,
5454     signatureAlgorithm   AlgorithmIdentifier,
5455     signature            BIT STRING  }
5456
5457TBSCertList  ::=  SEQUENCE  {
5458     version                 Version OPTIONAL,
5459                                  -- if present, MUST be v2
5460     signature               AlgorithmIdentifier,
5461     issuer                  Name,
5462     thisUpdate              Time,
5463     nextUpdate              Time OPTIONAL,
5464     revokedCertificates     SEQUENCE OF SEQUENCE  {
5465          userCertificate         CertificateSerialNumber,
5466          revocationDate          Time,
5467          crlEntryExtensions      Extensions OPTIONAL
5468                                         -- if present, MUST be v2
5469                               }  OPTIONAL,
5470     crlExtensions           [0] Extensions OPTIONAL }
5471                                         -- if present, MUST be v2
5472
5473-- Version, Time, CertificateSerialNumber, and Extensions were
5474-- defined earlier for use in the certificate structure
5475
5476AlgorithmIdentifier  ::=  SEQUENCE  {
5477     algorithm               OBJECT IDENTIFIER,
5478     parameters              ANY DEFINED BY algorithm OPTIONAL  }
5479                                -- contains a value of the type
5480                                -- registered for use with the
5481                                -- algorithm object identifier value
5482
5483-- X.400 address syntax starts here
5484
5485
5486
5487
5488
5489
5490Housley, et. al.            Standards Track                    [Page 98]
5491
5492RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5493
5494
5495ORAddress ::= SEQUENCE {
5496   built-in-standard-attributes BuiltInStandardAttributes,
5497   built-in-domain-defined-attributes
5498                   BuiltInDomainDefinedAttributes OPTIONAL,
5499   -- see also teletex-domain-defined-attributes
5500   extension-attributes ExtensionAttributes OPTIONAL }
5501
5502-- Built-in Standard Attributes
5503
5504BuiltInStandardAttributes ::= SEQUENCE {
5505   country-name                  CountryName OPTIONAL,
5506   administration-domain-name    AdministrationDomainName OPTIONAL,
5507   network-address           [0] IMPLICIT NetworkAddress OPTIONAL,
5508     -- see also extended-network-address
5509   terminal-identifier       [1] IMPLICIT TerminalIdentifier OPTIONAL,
5510   private-domain-name       [2] PrivateDomainName OPTIONAL,
5511   organization-name         [3] IMPLICIT OrganizationName OPTIONAL,
5512     -- see also teletex-organization-name
5513   numeric-user-identifier   [4] IMPLICIT NumericUserIdentifier
5514                                 OPTIONAL,
5515   personal-name             [5] IMPLICIT PersonalName OPTIONAL,
5516     -- see also teletex-personal-name
5517   organizational-unit-names [6] IMPLICIT OrganizationalUnitNames
5518                                 OPTIONAL }
5519     -- see also teletex-organizational-unit-names
5520
5521CountryName ::= [APPLICATION 1] CHOICE {
5522   x121-dcc-code         NumericString
5523                           (SIZE (ub-country-name-numeric-length)),
5524   iso-3166-alpha2-code  PrintableString
5525                           (SIZE (ub-country-name-alpha-length)) }
5526
5527AdministrationDomainName ::= [APPLICATION 2] CHOICE {
5528   numeric   NumericString   (SIZE (0..ub-domain-name-length)),
5529   printable PrintableString (SIZE (0..ub-domain-name-length)) }
5530
5531NetworkAddress ::= X121Address  -- see also extended-network-address
5532
5533X121Address ::= NumericString (SIZE (1..ub-x121-address-length))
5534
5535TerminalIdentifier ::= PrintableString (SIZE
5536(1..ub-terminal-id-length))
5537
5538PrivateDomainName ::= CHOICE {
5539   numeric   NumericString   (SIZE (1..ub-domain-name-length)),
5540   printable PrintableString (SIZE (1..ub-domain-name-length)) }
5541
5542
5543
5544
5545
5546Housley, et. al.            Standards Track                    [Page 99]
5547
5548RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5549
5550
5551OrganizationName ::= PrintableString
5552                            (SIZE (1..ub-organization-name-length))
5553  -- see also teletex-organization-name
5554
5555NumericUserIdentifier ::= NumericString
5556                            (SIZE (1..ub-numeric-user-id-length))
5557
5558PersonalName ::= SET {
5559   surname     [0] IMPLICIT PrintableString
5560                    (SIZE (1..ub-surname-length)),
5561   given-name  [1] IMPLICIT PrintableString
5562                    (SIZE (1..ub-given-name-length)) OPTIONAL,
5563   initials    [2] IMPLICIT PrintableString
5564                    (SIZE (1..ub-initials-length)) OPTIONAL,
5565   generation-qualifier [3] IMPLICIT PrintableString
5566                    (SIZE (1..ub-generation-qualifier-length))
5567                    OPTIONAL }
5568  -- see also teletex-personal-name
5569
5570OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
5571                             OF OrganizationalUnitName
5572  -- see also teletex-organizational-unit-names
5573
5574OrganizationalUnitName ::= PrintableString (SIZE
5575                    (1..ub-organizational-unit-name-length))
5576
5577-- Built-in Domain-defined Attributes
5578
5579BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
5580                    (1..ub-domain-defined-attributes) OF
5581                    BuiltInDomainDefinedAttribute
5582
5583BuiltInDomainDefinedAttribute ::= SEQUENCE {
5584   type PrintableString (SIZE
5585                   (1..ub-domain-defined-attribute-type-length)),
5586   value PrintableString (SIZE
5587                   (1..ub-domain-defined-attribute-value-length)) }
5588
5589-- Extension Attributes
5590
5591ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF
5592               ExtensionAttribute
5593
5594ExtensionAttribute ::=  SEQUENCE {
5595   extension-attribute-type [0] IMPLICIT INTEGER
5596                   (0..ub-extension-attributes),
5597   extension-attribute-value [1]
5598                   ANY DEFINED BY extension-attribute-type }
5599
5600
5601
5602Housley, et. al.            Standards Track                   [Page 100]
5603
5604RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5605
5606
5607-- Extension types and attribute values
5608
5609common-name INTEGER ::= 1
5610
5611CommonName ::= PrintableString (SIZE (1..ub-common-name-length))
5612
5613teletex-common-name INTEGER ::= 2
5614
5615TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length))
5616
5617teletex-organization-name INTEGER ::= 3
5618
5619TeletexOrganizationName ::=
5620                TeletexString (SIZE (1..ub-organization-name-length))
5621
5622teletex-personal-name INTEGER ::= 4
5623
5624TeletexPersonalName ::= SET {
5625   surname     [0] IMPLICIT TeletexString
5626                    (SIZE (1..ub-surname-length)),
5627   given-name  [1] IMPLICIT TeletexString
5628                    (SIZE (1..ub-given-name-length)) OPTIONAL,
5629   initials    [2] IMPLICIT TeletexString
5630                    (SIZE (1..ub-initials-length)) OPTIONAL,
5631   generation-qualifier [3] IMPLICIT TeletexString
5632                    (SIZE (1..ub-generation-qualifier-length))
5633                    OPTIONAL }
5634
5635teletex-organizational-unit-names INTEGER ::= 5
5636
5637TeletexOrganizationalUnitNames ::= SEQUENCE SIZE
5638      (1..ub-organizational-units) OF TeletexOrganizationalUnitName
5639
5640TeletexOrganizationalUnitName ::= TeletexString
5641                  (SIZE (1..ub-organizational-unit-name-length))
5642
5643pds-name INTEGER ::= 7
5644
5645PDSName ::= PrintableString (SIZE (1..ub-pds-name-length))
5646
5647physical-delivery-country-name INTEGER ::= 8
5648
5649PhysicalDeliveryCountryName ::= CHOICE {
5650   x121-dcc-code NumericString (SIZE
5651(ub-country-name-numeric-length)),
5652   iso-3166-alpha2-code PrintableString
5653                  (SIZE (ub-country-name-alpha-length)) }
5654
5655
5656
5657
5658Housley, et. al.            Standards Track                   [Page 101]
5659
5660RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5661
5662
5663postal-code INTEGER ::= 9
5664
5665PostalCode ::= CHOICE {
5666   numeric-code NumericString (SIZE (1..ub-postal-code-length)),
5667   printable-code PrintableString (SIZE (1..ub-postal-code-length)) }
5668
5669physical-delivery-office-name INTEGER ::= 10
5670
5671PhysicalDeliveryOfficeName ::= PDSParameter
5672
5673physical-delivery-office-number INTEGER ::= 11
5674
5675PhysicalDeliveryOfficeNumber ::= PDSParameter
5676
5677extension-OR-address-components INTEGER ::= 12
5678
5679ExtensionORAddressComponents ::= PDSParameter
5680
5681physical-delivery-personal-name INTEGER ::= 13
5682
5683PhysicalDeliveryPersonalName ::= PDSParameter
5684
5685physical-delivery-organization-name INTEGER ::= 14
5686
5687PhysicalDeliveryOrganizationName ::= PDSParameter
5688
5689extension-physical-delivery-address-components INTEGER ::= 15
5690
5691ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter
5692
5693unformatted-postal-address INTEGER ::= 16
5694
5695UnformattedPostalAddress ::= SET {
5696   printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines)
5697         OF PrintableString (SIZE (1..ub-pds-parameter-length))
5698         OPTIONAL,
5699   teletex-string TeletexString
5700         (SIZE (1..ub-unformatted-address-length)) OPTIONAL }
5701
5702street-address INTEGER ::= 17
5703
5704StreetAddress ::= PDSParameter
5705
5706post-office-box-address INTEGER ::= 18
5707
5708PostOfficeBoxAddress ::= PDSParameter
5709
5710poste-restante-address INTEGER ::= 19
5711
5712
5713
5714Housley, et. al.            Standards Track                   [Page 102]
5715
5716RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5717
5718
5719PosteRestanteAddress ::= PDSParameter
5720
5721unique-postal-name INTEGER ::= 20
5722
5723UniquePostalName ::= PDSParameter
5724
5725local-postal-attributes INTEGER ::= 21
5726
5727LocalPostalAttributes ::= PDSParameter
5728
5729PDSParameter ::= SET {
5730   printable-string PrintableString
5731                (SIZE(1..ub-pds-parameter-length)) OPTIONAL,
5732   teletex-string TeletexString
5733                (SIZE(1..ub-pds-parameter-length)) OPTIONAL }
5734
5735extended-network-address INTEGER ::= 22
5736
5737ExtendedNetworkAddress ::= CHOICE {
5738   e163-4-address SEQUENCE {
5739      number      [0] IMPLICIT NumericString
5740                       (SIZE (1..ub-e163-4-number-length)),
5741      sub-address [1] IMPLICIT NumericString
5742                       (SIZE (1..ub-e163-4-sub-address-length))
5743                       OPTIONAL },
5744   psap-address [0] IMPLICIT PresentationAddress }
5745
5746PresentationAddress ::= SEQUENCE {
5747    pSelector     [0] EXPLICIT OCTET STRING OPTIONAL,
5748    sSelector     [1] EXPLICIT OCTET STRING OPTIONAL,
5749    tSelector     [2] EXPLICIT OCTET STRING OPTIONAL,
5750    nAddresses    [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING }
5751
5752terminal-type  INTEGER ::= 23
5753
5754TerminalType ::= INTEGER {
5755   telex (3),
5756   teletex (4),
5757   g3-facsimile (5),
5758   g4-facsimile (6),
5759   ia5-terminal (7),
5760   videotex (8) } (0..ub-integer-options)
5761
5762-- Extension Domain-defined Attributes
5763
5764teletex-domain-defined-attributes INTEGER ::= 6
5765
5766
5767
5768
5769
5770Housley, et. al.            Standards Track                   [Page 103]
5771
5772RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5773
5774
5775TeletexDomainDefinedAttributes ::= SEQUENCE SIZE
5776   (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute
5777
5778TeletexDomainDefinedAttribute ::= SEQUENCE {
5779        type TeletexString
5780               (SIZE (1..ub-domain-defined-attribute-type-length)),
5781        value TeletexString
5782               (SIZE (1..ub-domain-defined-attribute-value-length)) }
5783
5784--  specifications of Upper Bounds MUST be regarded as mandatory
5785--  from Annex B of ITU-T X.411 Reference Definition of MTS Parameter
5786--  Upper Bounds
5787
5788-- Upper Bounds
5789ub-name INTEGER ::= 32768
5790ub-common-name INTEGER ::= 64
5791ub-locality-name INTEGER ::= 128
5792ub-state-name INTEGER ::= 128
5793ub-organization-name INTEGER ::= 64
5794ub-organizational-unit-name INTEGER ::= 64
5795ub-title INTEGER ::= 64
5796ub-serial-number INTEGER ::= 64
5797ub-match INTEGER ::= 128
5798ub-emailaddress-length INTEGER ::= 128
5799ub-common-name-length INTEGER ::= 64
5800ub-country-name-alpha-length INTEGER ::= 2
5801ub-country-name-numeric-length INTEGER ::= 3
5802ub-domain-defined-attributes INTEGER ::= 4
5803ub-domain-defined-attribute-type-length INTEGER ::= 8
5804ub-domain-defined-attribute-value-length INTEGER ::= 128
5805ub-domain-name-length INTEGER ::= 16
5806ub-extension-attributes INTEGER ::= 256
5807ub-e163-4-number-length INTEGER ::= 15
5808ub-e163-4-sub-address-length INTEGER ::= 40
5809ub-generation-qualifier-length INTEGER ::= 3
5810ub-given-name-length INTEGER ::= 16
5811ub-initials-length INTEGER ::= 5
5812ub-integer-options INTEGER ::= 256
5813ub-numeric-user-id-length INTEGER ::= 32
5814ub-organization-name-length INTEGER ::= 64
5815ub-organizational-unit-name-length INTEGER ::= 32
5816ub-organizational-units INTEGER ::= 4
5817ub-pds-name-length INTEGER ::= 16
5818ub-pds-parameter-length INTEGER ::= 30
5819ub-pds-physical-address-lines INTEGER ::= 6
5820ub-postal-code-length INTEGER ::= 16
5821ub-pseudonym INTEGER ::= 128
5822ub-surname-length INTEGER ::= 40
5823
5824
5825
5826Housley, et. al.            Standards Track                   [Page 104]
5827
5828RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5829
5830
5831ub-terminal-id-length INTEGER ::= 24
5832ub-unformatted-address-length INTEGER ::= 180
5833ub-x121-address-length INTEGER ::= 16
5834
5835-- Note - upper bounds on string types, such as TeletexString, are
5836-- measured in characters.  Excepting PrintableString or IA5String, a
5837-- significantly greater number of octets will be required to hold
5838-- such a value.  As a minimum, 16 octets, or twice the specified
5839-- upper bound, whichever is the larger, should be allowed for
5840-- TeletexString.  For UTF8String or UniversalString at least four
5841-- times the upper bound should be allowed.
5842
5843END
5844
5845A.2 Implicitly Tagged Module, 1988 Syntax
5846
5847PKIX1Implicit88 { iso(1) identified-organization(3) dod(6) internet(1)
5848  security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit(19) }
5849
5850DEFINITIONS IMPLICIT TAGS ::=
5851
5852BEGIN
5853
5854-- EXPORTS ALL --
5855
5856IMPORTS
5857      id-pe, id-kp, id-qt-unotice, id-qt-cps,
5858      -- delete following line if "new" types are supported --
5859      BMPString, UTF8String,  -- end "new" types --
5860      ORAddress, Name, RelativeDistinguishedName,
5861      CertificateSerialNumber, Attribute, DirectoryString
5862      FROM PKIX1Explicit88 { iso(1) identified-organization(3)
5863            dod(6) internet(1) security(5) mechanisms(5) pkix(7)
5864            id-mod(0) id-pkix1-explicit(18) };
5865
5866
5867-- ISO arc for standard certificate and CRL extensions
5868
5869id-ce OBJECT IDENTIFIER  ::=  {joint-iso-ccitt(2) ds(5) 29}
5870
5871-- authority key identifier OID and syntax
5872
5873id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 35 }
5874
5875
5876
5877
5878
5879
5880
5881
5882Housley, et. al.            Standards Track                   [Page 105]
5883
5884RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5885
5886
5887AuthorityKeyIdentifier ::= SEQUENCE {
5888    keyIdentifier             [0] KeyIdentifier            OPTIONAL,
5889    authorityCertIssuer       [1] GeneralNames             OPTIONAL,
5890    authorityCertSerialNumber [2] CertificateSerialNumber  OPTIONAL }
5891    -- authorityCertIssuer and authorityCertSerialNumber MUST both
5892    -- be present or both be absent
5893
5894KeyIdentifier ::= OCTET STRING
5895
5896-- subject key identifier OID and syntax
5897
5898id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 14 }
5899
5900SubjectKeyIdentifier ::= KeyIdentifier
5901
5902-- key usage extension OID and syntax
5903
5904id-ce-keyUsage OBJECT IDENTIFIER ::=  { id-ce 15 }
5905
5906KeyUsage ::= BIT STRING {
5907     digitalSignature        (0),
5908     nonRepudiation          (1),
5909     keyEncipherment         (2),
5910     dataEncipherment        (3),
5911     keyAgreement            (4),
5912     keyCertSign             (5),
5913     cRLSign                 (6),
5914     encipherOnly            (7),
5915     decipherOnly            (8) }
5916
5917-- private key usage period extension OID and syntax
5918
5919id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::=  { id-ce 16 }
5920
5921PrivateKeyUsagePeriod ::= SEQUENCE {
5922     notBefore       [0]     GeneralizedTime OPTIONAL,
5923     notAfter        [1]     GeneralizedTime OPTIONAL }
5924     -- either notBefore or notAfter MUST be present
5925
5926-- certificate policies extension OID and syntax
5927
5928id-ce-certificatePolicies OBJECT IDENTIFIER ::=  { id-ce 32 }
5929
5930anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificatePolicies 0 }
5931
5932CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
5933
5934PolicyInformation ::= SEQUENCE {
5935
5936
5937
5938Housley, et. al.            Standards Track                   [Page 106]
5939
5940RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5941
5942
5943     policyIdentifier   CertPolicyId,
5944     policyQualifiers   SEQUENCE SIZE (1..MAX) OF
5945             PolicyQualifierInfo OPTIONAL }
5946
5947CertPolicyId ::= OBJECT IDENTIFIER
5948
5949PolicyQualifierInfo ::= SEQUENCE {
5950       policyQualifierId  PolicyQualifierId,
5951       qualifier        ANY DEFINED BY policyQualifierId }
5952
5953-- Implementations that recognize additional policy qualifiers MUST
5954-- augment the following definition for PolicyQualifierId
5955
5956PolicyQualifierId ::=
5957    OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
5958
5959-- CPS pointer qualifier
5960
5961CPSuri ::= IA5String
5962
5963-- user notice qualifier
5964
5965UserNotice ::= SEQUENCE {
5966     noticeRef        NoticeReference OPTIONAL,
5967     explicitText     DisplayText OPTIONAL}
5968
5969NoticeReference ::= SEQUENCE {
5970     organization     DisplayText,
5971     noticeNumbers    SEQUENCE OF INTEGER }
5972
5973DisplayText ::= CHOICE {
5974     ia5String        IA5String      (SIZE (1..200)),
5975     visibleString    VisibleString  (SIZE (1..200)),
5976     bmpString        BMPString      (SIZE (1..200)),
5977     utf8String       UTF8String     (SIZE (1..200)) }
5978
5979-- policy mapping extension OID and syntax
5980
5981id-ce-policyMappings OBJECT IDENTIFIER ::=  { id-ce 33 }
5982
5983PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
5984     issuerDomainPolicy      CertPolicyId,
5985     subjectDomainPolicy     CertPolicyId }
5986
5987-- subject alternative name extension OID and syntax
5988
5989id-ce-subjectAltName OBJECT IDENTIFIER ::=  { id-ce 17 }
5990
5991
5992
5993
5994Housley, et. al.            Standards Track                   [Page 107]
5995
5996RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
5997
5998
5999SubjectAltName ::= GeneralNames
6000
6001GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
6002
6003GeneralName ::= CHOICE {
6004     otherName                       [0]     AnotherName,
6005     rfc822Name                      [1]     IA5String,
6006     dNSName                         [2]     IA5String,
6007     x400Address                     [3]     ORAddress,
6008     directoryName                   [4]     Name,
6009     ediPartyName                    [5]     EDIPartyName,
6010     uniformResourceIdentifier       [6]     IA5String,
6011     iPAddress                       [7]     OCTET STRING,
6012     registeredID                    [8]     OBJECT IDENTIFIER }
6013
6014-- AnotherName replaces OTHER-NAME ::= TYPE-IDENTIFIER, as
6015-- TYPE-IDENTIFIER is not supported in the '88 ASN.1 syntax
6016
6017AnotherName ::= SEQUENCE {
6018     type-id    OBJECT IDENTIFIER,
6019     value      [0] EXPLICIT ANY DEFINED BY type-id }
6020
6021EDIPartyName ::= SEQUENCE {
6022     nameAssigner            [0]     DirectoryString OPTIONAL,
6023     partyName               [1]     DirectoryString }
6024
6025-- issuer alternative name extension OID and syntax
6026
6027id-ce-issuerAltName OBJECT IDENTIFIER ::=  { id-ce 18 }
6028
6029IssuerAltName ::= GeneralNames
6030
6031id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::=  { id-ce 9 }
6032
6033SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
6034
6035-- basic constraints extension OID and syntax
6036
6037id-ce-basicConstraints OBJECT IDENTIFIER ::=  { id-ce 19 }
6038
6039BasicConstraints ::= SEQUENCE {
6040     cA                      BOOLEAN DEFAULT FALSE,
6041     pathLenConstraint       INTEGER (0..MAX) OPTIONAL }
6042
6043-- name constraints extension OID and syntax
6044
6045id-ce-nameConstraints OBJECT IDENTIFIER ::=  { id-ce 30 }
6046
6047
6048
6049
6050Housley, et. al.            Standards Track                   [Page 108]
6051
6052RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6053
6054
6055NameConstraints ::= SEQUENCE {
6056     permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
6057     excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }
6058
6059GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
6060
6061GeneralSubtree ::= SEQUENCE {
6062     base                    GeneralName,
6063     minimum         [0]     BaseDistance DEFAULT 0,
6064     maximum         [1]     BaseDistance OPTIONAL }
6065
6066BaseDistance ::= INTEGER (0..MAX)
6067
6068-- policy constraints extension OID and syntax
6069
6070id-ce-policyConstraints OBJECT IDENTIFIER ::=  { id-ce 36 }
6071
6072PolicyConstraints ::= SEQUENCE {
6073     requireExplicitPolicy           [0] SkipCerts OPTIONAL,
6074     inhibitPolicyMapping            [1] SkipCerts OPTIONAL }
6075
6076SkipCerts ::= INTEGER (0..MAX)
6077
6078-- CRL distribution points extension OID and syntax
6079
6080id-ce-cRLDistributionPoints     OBJECT IDENTIFIER  ::=  {id-ce 31}
6081
6082CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
6083
6084DistributionPoint ::= SEQUENCE {
6085     distributionPoint       [0]     DistributionPointName OPTIONAL,
6086     reasons                 [1]     ReasonFlags OPTIONAL,
6087     cRLIssuer               [2]     GeneralNames OPTIONAL }
6088
6089DistributionPointName ::= CHOICE {
6090     fullName                [0]     GeneralNames,
6091     nameRelativeToCRLIssuer [1]     RelativeDistinguishedName }
6092
6093ReasonFlags ::= BIT STRING {
6094     unused                  (0),
6095     keyCompromise           (1),
6096     cACompromise            (2),
6097     affiliationChanged      (3),
6098     superseded              (4),
6099     cessationOfOperation    (5),
6100     certificateHold         (6),
6101     privilegeWithdrawn      (7),
6102     aACompromise            (8) }
6103
6104
6105
6106Housley, et. al.            Standards Track                   [Page 109]
6107
6108RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6109
6110
6111-- extended key usage extension OID and syntax
6112
6113id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37}
6114
6115ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
6116
6117
6118KeyPurposeId ::= OBJECT IDENTIFIER
6119
6120-- permit unspecified key uses
6121
6122anyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 }
6123
6124-- extended key purpose OIDs
6125
6126id-kp-serverAuth             OBJECT IDENTIFIER ::= { id-kp 1 }
6127id-kp-clientAuth             OBJECT IDENTIFIER ::= { id-kp 2 }
6128id-kp-codeSigning            OBJECT IDENTIFIER ::= { id-kp 3 }
6129id-kp-emailProtection        OBJECT IDENTIFIER ::= { id-kp 4 }
6130id-kp-timeStamping           OBJECT IDENTIFIER ::= { id-kp 8 }
6131id-kp-OCSPSigning            OBJECT IDENTIFIER ::= { id-kp 9 }
6132
6133-- inhibit any policy OID and syntax
6134
6135id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::=  { id-ce 54 }
6136
6137InhibitAnyPolicy ::= SkipCerts
6138
6139-- freshest (delta)CRL extension OID and syntax
6140
6141id-ce-freshestCRL OBJECT IDENTIFIER ::=  { id-ce 46 }
6142
6143FreshestCRL ::= CRLDistributionPoints
6144
6145-- authority info access
6146
6147id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
6148
6149AuthorityInfoAccessSyntax  ::=
6150        SEQUENCE SIZE (1..MAX) OF AccessDescription
6151
6152AccessDescription  ::=  SEQUENCE {
6153        accessMethod          OBJECT IDENTIFIER,
6154        accessLocation        GeneralName  }
6155
6156-- subject info access
6157
6158id-pe-subjectInfoAccess OBJECT IDENTIFIER ::= { id-pe 11 }
6159
6160
6161
6162Housley, et. al.            Standards Track                   [Page 110]
6163
6164RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6165
6166
6167SubjectInfoAccessSyntax  ::=
6168        SEQUENCE SIZE (1..MAX) OF AccessDescription
6169
6170-- CRL number extension OID and syntax
6171
6172id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 }
6173
6174CRLNumber ::= INTEGER (0..MAX)
6175
6176-- issuing distribution point extension OID and syntax
6177
6178id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 }
6179
6180IssuingDistributionPoint ::= SEQUENCE {
6181     distributionPoint          [0] DistributionPointName OPTIONAL,
6182     onlyContainsUserCerts      [1] BOOLEAN DEFAULT FALSE,
6183     onlyContainsCACerts        [2] BOOLEAN DEFAULT FALSE,
6184     onlySomeReasons            [3] ReasonFlags OPTIONAL,
6185     indirectCRL                [4] BOOLEAN DEFAULT FALSE,
6186     onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }
6187
6188id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 }
6189
6190BaseCRLNumber ::= CRLNumber
6191
6192-- CRL reasons extension OID and syntax
6193
6194id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 }
6195
6196CRLReason ::= ENUMERATED {
6197     unspecified             (0),
6198     keyCompromise           (1),
6199     cACompromise            (2),
6200     affiliationChanged      (3),
6201     superseded              (4),
6202     cessationOfOperation    (5),
6203     certificateHold         (6),
6204     removeFromCRL           (8),
6205     privilegeWithdrawn      (9),
6206     aACompromise           (10) }
6207
6208-- certificate issuer CRL entry extension OID and syntax
6209
6210id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 }
6211
6212CertificateIssuer ::= GeneralNames
6213
6214-- hold instruction extension OID and syntax
6215
6216
6217
6218Housley, et. al.            Standards Track                   [Page 111]
6219
6220RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6221
6222
6223id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 }
6224
6225HoldInstructionCode ::= OBJECT IDENTIFIER
6226
6227-- ANSI x9 holdinstructions
6228
6229-- ANSI x9 arc holdinstruction arc
6230
6231holdInstruction OBJECT IDENTIFIER ::=
6232          {joint-iso-itu-t(2) member-body(2) us(840) x9cm(10040) 2}
6233
6234-- ANSI X9 holdinstructions referenced by this standard
6235
6236id-holdinstruction-none OBJECT IDENTIFIER  ::=
6237                {holdInstruction 1} -- deprecated
6238
6239id-holdinstruction-callissuer OBJECT IDENTIFIER ::=
6240                {holdInstruction 2}
6241
6242id-holdinstruction-reject OBJECT IDENTIFIER ::=
6243                {holdInstruction 3}
6244
6245-- invalidity date CRL entry extension OID and syntax
6246
6247id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 }
6248
6249InvalidityDate ::=  GeneralizedTime
6250
6251END
6252
6253Appendix B.  ASN.1 Notes
6254
6255   CAs MUST force the serialNumber to be a non-negative integer, that
6256   is, the sign bit in the DER encoding of the INTEGER value MUST be
6257   zero - this can be done by adding a leading (leftmost) `00'H octet if
6258   necessary.  This removes a potential ambiguity in mapping between a
6259   string of octets and an integer value.
6260
6261   As noted in section 4.1.2.2, serial numbers can be expected to
6262   contain long integers.  Certificate users MUST be able to handle
6263   serialNumber values up to 20 octets in length.  Conformant CAs MUST
6264   NOT use serialNumber values longer than 20 octets.
6265
6266   As noted in section 5.2.3, CRL numbers can be expected to contain
6267   long integers.  CRL validators MUST be able to handle cRLNumber
6268   values up to 20 octets in length.  Conformant CRL issuers MUST NOT
6269   use cRLNumber values longer than 20 octets.
6270
6271
6272
6273
6274Housley, et. al.            Standards Track                   [Page 112]
6275
6276RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6277
6278
6279   The construct "SEQUENCE SIZE (1..MAX) OF" appears in several ASN.1
6280   constructs.  A valid ASN.1 sequence will have zero or more entries.
6281   The SIZE (1..MAX) construct constrains the sequence to have at least
6282   one entry.  MAX indicates the upper bound is unspecified.
6283   Implementations are free to choose an upper bound that suits their
6284   environment.
6285
6286   The construct "positiveInt ::= INTEGER (0..MAX)" defines positiveInt
6287   as a subtype of INTEGER containing integers greater than or equal to
6288   zero.  The upper bound is unspecified.  Implementations are free to
6289   select an upper bound that suits their environment.
6290
6291   The character string type PrintableString supports a very basic Latin
6292   character set: the lower case letters 'a' through 'z', upper case
6293   letters 'A' through 'Z', the digits '0' through '9', eleven special
6294   characters ' = ( ) + , - . / : ? and space.
6295
6296   Implementers should note that the at sign ('@') and underscore ('_')
6297   characters are not supported by the ASN.1 type PrintableString.
6298   These characters often appear in internet addresses.  Such addresses
6299   MUST be encoded using an ASN.1 type that supports them.  They are
6300   usually encoded as IA5String in either the emailAddress attribute
6301   within a distinguished name or the rfc822Name field of GeneralName.
6302   Conforming implementations MUST NOT encode strings which include
6303   either the at sign or underscore character as PrintableString.
6304
6305   The character string type TeletexString is a superset of
6306   PrintableString.  TeletexString supports a fairly standard (ASCII-
6307   like) Latin character set, Latin characters with non-spacing accents
6308   and Japanese characters.
6309
6310   Named bit lists are BIT STRINGs where the values have been assigned
6311   names.  This specification makes use of named bit lists in the
6312   definitions for the key usage, CRL distribution points and freshest
6313   CRL certificate extensions, as well as the freshest CRL and issuing
6314   distribution point CRL extensions.  When DER encoding a named bit
6315   list, trailing zeroes MUST be omitted.  That is, the encoded value
6316   ends with the last named bit that is set to one.
6317
6318   The character string type UniversalString supports any of the
6319   characters allowed by ISO 10646-1 [ISO 10646].  ISO 10646-1 is the
6320   Universal multiple-octet coded Character Set (UCS).  ISO 10646-1
6321   specifies the architecture and the "basic multilingual plane" -- a
6322   large standard character set which includes all major world character
6323   standards.
6324
6325
6326
6327
6328
6329
6330Housley, et. al.            Standards Track                   [Page 113]
6331
6332RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6333
6334
6335   The character string type UTF8String was introduced in the 1997
6336   version of ASN.1, and UTF8String was added to the list of choices for
6337   DirectoryString in the 2001 version of X.520 [X.520].  UTF8String is
6338   a universal type and has been assigned tag number 12.  The content of
6339   UTF8String was defined by RFC 2044 [RFC 2044] and updated in RFC 2279
6340   [RFC 2279].
6341
6342   In anticipation of these changes, and in conformance with IETF Best
6343   Practices codified in RFC 2277 [RFC 2277], IETF Policy on Character
6344   Sets and Languages, this document includes UTF8String as a choice in
6345   DirectoryString and the CPS qualifier extensions.
6346
6347   Implementers should note that the DER encoding of the SET OF values
6348   requires ordering of the encodings of the values.  In particular,
6349   this issue arises with respect to distinguished names.
6350
6351   Implementers should note that the DER encoding of SET or SEQUENCE
6352   components whose value is the DEFAULT omit the component from the
6353   encoded certificate or CRL.  For example, a BasicConstraints
6354   extension whose cA value is FALSE would omit the cA boolean from the
6355   encoded certificate.
6356
6357   Object Identifiers (OIDs) are used throughout this specification to
6358   identify certificate policies, public key and signature algorithms,
6359   certificate extensions, etc.  There is no maximum size for OIDs.
6360   This specification mandates support for OIDs which have arc elements
6361   with values that are less than 2^28, that is, they MUST be between 0
6362   and 268,435,455, inclusive.  This allows each arc element to be
6363   represented within a single 32 bit word.  Implementations MUST also
6364   support OIDs where the length of the dotted decimal (see [RFC 2252],
6365   section 4.1) string representation can be up to 100 bytes
6366   (inclusive).  Implementations MUST be able to handle OIDs with up to
6367   20 elements (inclusive).  CAs SHOULD NOT issue certificates which
6368   contain OIDs that exceed these requirements.  Likewise, CRL issuers
6369   SHOULD NOT issue CRLs which contain OIDs that exceed these
6370   requirements.
6371
6372   Implementors are warned that the X.500 standards community has
6373   developed a series of extensibility rules.  These rules determine
6374   when an ASN.1 definition can be changed without assigning a new
6375   object identifier (OID).  For example, at least two extension
6376   definitions included in RFC 2459 [RFC 2459], the predecessor to this
6377   profile document, have different ASN.1 definitions in this
6378   specification, but the same OID is used.  If unknown elements appear
6379   within an extension, and the extension is not marked critical, those
6380   unknown elements ought to be ignored, as follows:
6381
6382      (a)  ignore all unknown bit name assignments within a bit string;
6383
6384
6385
6386Housley, et. al.            Standards Track                   [Page 114]
6387
6388RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6389
6390
6391      (b)  ignore all unknown named numbers in an ENUMERATED type or
6392      INTEGER type that is being used in the enumerated style, provided
6393      the number occurs as an optional element of a SET or SEQUENCE; and
6394
6395      (c)  ignore all unknown elements in SETs, at the end of SEQUENCEs,
6396      or in CHOICEs where the CHOICE is itself an optional element of a
6397      SET or SEQUENCE.
6398
6399   If an extension containing unexpected values is marked critical, the
6400   implementation MUST reject the certificate or CRL containing the
6401   unrecognized extension.
6402
6403Appendix C.  Examples
6404
6405   This section contains four examples: three certificates and a CRL.
6406   The first two certificates and the CRL comprise a minimal
6407   certification path.
6408
6409   Section C.1 contains an annotated hex dump of a "self-signed"
6410   certificate issued by a CA whose distinguished name is
6411   cn=us,o=gov,ou=nist.  The certificate contains a DSA public key with
6412   parameters, and is signed by the corresponding DSA private key.
6413
6414   Section C.2 contains an annotated hex dump of an end entity
6415   certificate.  The end entity certificate contains a DSA public key,
6416   and is signed by the private key corresponding to the "self-signed"
6417   certificate in section C.1.
6418
6419   Section C.3 contains a dump of an end entity certificate which
6420   contains an RSA public key and is signed with RSA and MD5.  This
6421   certificate is not part of the minimal certification path.
6422
6423   Section C.4 contains an annotated hex dump of a CRL.  The CRL is
6424   issued by the CA whose distinguished name is cn=us,o=gov,ou=nist and
6425   the list of revoked certificates includes the end entity certificate
6426   presented in C.2.
6427
6428   The certificates were processed using Peter Gutman's dumpasn1 utility
6429   to generate the output.  The source for the dumpasn1 utility is
6430   available at <http://www.cs.auckland.ac.nz/~pgut001/dumpasn1.c>.  The
6431   binaries for the certificates and CRLs are available at
6432   <http://csrc.nist.gov/pki/pkixtools>.
6433
6434C.1  Certificate
6435
6436   This section contains an annotated hex dump of a 699 byte version 3
6437   certificate.  The certificate contains the following information:
6438   (a)  the serial number is 23 (17 hex);
6439
6440
6441
6442Housley, et. al.            Standards Track                   [Page 115]
6443
6444RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6445
6446
6447   (b)  the certificate is signed with DSA and the SHA-1 hash algorithm;
6448   (c)  the issuer's distinguished name is OU=NIST; O=gov; C=US
6449   (d)  and the subject's distinguished name is OU=NIST; O=gov; C=US
6450   (e)  the certificate was issued on June 30, 1997 and will expire on
6451   December 31, 1997;
6452   (f)  the certificate contains a 1024 bit DSA public key with
6453   parameters;
6454   (g)  the certificate contains a subject key identifier extension
6455   generated using method (1) of section 4.2.1.2; and
6456   (h)  the certificate is a CA certificate (as indicated through the
6457   basic constraints extension.)
6458
6459  0 30  699: SEQUENCE {
6460  4 30  635:   SEQUENCE {
6461  8 A0    3:     [0] {
6462 10 02    1:       INTEGER 2
6463          :       }
6464 13 02    1:     INTEGER 17
6465 16 30    9:     SEQUENCE {
6466 18 06    7:       OBJECT IDENTIFIER dsaWithSha1 (1 2 840 10040 4 3)
6467          :       }
6468 27 30   42:     SEQUENCE {
6469 29 31   11:       SET {
6470 31 30    9:         SEQUENCE {
6471 33 06    3:           OBJECT IDENTIFIER countryName (2 5 4 6)
6472 38 13    2:           PrintableString 'US'
6473          :           }
6474          :         }
6475 42 31   12:       SET {
6476 44 30   10:         SEQUENCE {
6477 46 06    3:           OBJECT IDENTIFIER organizationName (2 5 4 10)
6478 51 13    3:           PrintableString 'gov'
6479          :           }
6480          :         }
6481 56 31   13:       SET {
6482 58 30   11:         SEQUENCE {
6483 60 06    3:           OBJECT IDENTIFIER
6484          :             organizationalUnitName (2 5 4 11)
6485 65 13    4:           PrintableString 'NIST'
6486           :           }
6487           :         }
6488           :       }
6489 71 30   30:     SEQUENCE {
6490 73 17   13:       UTCTime '970630000000Z'
6491 88 17   13:       UTCTime '971231000000Z'
6492           :       }
6493103 30   42:     SEQUENCE {
6494105 31   11:       SET {
6495
6496
6497
6498Housley, et. al.            Standards Track                   [Page 116]
6499
6500RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6501
6502
6503107 30    9:         SEQUENCE {
6504109 06    3:           OBJECT IDENTIFIER countryName (2 5 4 6)
6505114 13    2:           PrintableString 'US'
6506           :           }
6507           :         }
6508118 31   12:       SET {
6509120 30   10:         SEQUENCE {
6510122 06    3:           OBJECT IDENTIFIER organizationName (2 5 4 10)
6511127 13    3:           PrintableString 'gov'
6512           :           }
6513           :         }
6514132 31   13:       SET {
6515134 30   11:         SEQUENCE {
6516136 06    3:           OBJECT IDENTIFIER
6517           :             organizationalUnitName (2 5 4 11)
6518141 13    4:           PrintableString 'NIST'
6519           :           }
6520           :         }
6521           :       }
6522147 30  440:     SEQUENCE {
6523151 30  300:       SEQUENCE {
6524155 06    7:         OBJECT IDENTIFIER dsa (1 2 840 10040 4 1)
6525164 30  287:         SEQUENCE {
6526168 02  129:           INTEGER
6527           :             00 B6 8B 0F 94 2B 9A CE A5 25 C6 F2 ED FC
6528           :             FB 95 32 AC 01 12 33 B9 E0 1C AD 90 9B BC
6529           :             48 54 9E F3 94 77 3C 2C 71 35 55 E6 FE 4F
6530           :             22 CB D5 D8 3E 89 93 33 4D FC BD 4F 41 64
6531           :             3E A2 98 70 EC 31 B4 50 DE EB F1 98 28 0A
6532           :             C9 3E 44 B3 FD 22 97 96 83 D0 18 A3 E3 BD
6533           :             35 5B FF EE A3 21 72 6A 7B 96 DA B9 3F 1E
6534           :             5A 90 AF 24 D6 20 F0 0D 21 A7 D4 02 B9 1A
6535           :             FC AC 21 FB 9E 94 9E 4B 42 45 9E 6A B2 48
6536           :             63 FE 43
6537300 02   21:           INTEGER
6538           :             00 B2 0D B0 B1 01 DF 0C 66 24 FC 13 92 BA
6539           :             55 F7 7D 57 74 81 E5
6540323 02  129:           INTEGER
6541           :             00 9A BF 46 B1 F5 3F 44 3D C9 A5 65 FB 91
6542           :             C0 8E 47 F1 0A C3 01 47 C2 44 42 36 A9 92
6543           :             81 DE 57 C5 E0 68 86 58 00 7B 1F F9 9B 77
6544           :             A1 C5 10 A5 80 91 78 51 51 3C F6 FC FC CC
6545           :             46 C6 81 78 92 84 3D F4 93 3D 0C 38 7E 1A
6546           :             5B 99 4E AB 14 64 F6 0C 21 22 4E 28 08 9C
6547           :             92 B9 66 9F 40 E8 95 F6 D5 31 2A EF 39 A2
6548           :             62 C7 B2 6D 9E 58 C4 3A A8 11 81 84 6D AF
6549           :             F8 B4 19 B4 C2 11 AE D0 22 3B AA 20 7F EE
6550           :             1E 57 18
6551
6552
6553
6554Housley, et. al.            Standards Track                   [Page 117]
6555
6556RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6557
6558
6559           :           }
6560           :         }
6561455 03  133:       BIT STRING 0 unused bits, encapsulates {
6562459 02  129:           INTEGER
6563           :             00 B5 9E 1F 49 04 47 D1 DB F5 3A DD CA 04
6564           :             75 E8 DD 75 F6 9B 8A B1 97 D6 59 69 82 D3
6565           :             03 4D FD 3B 36 5F 4A F2 D1 4E C1 07 F5 D1
6566           :             2A D3 78 77 63 56 EA 96 61 4D 42 0B 7A 1D
6567           :             FB AB 91 A4 CE DE EF 77 C8 E5 EF 20 AE A6
6568           :             28 48 AF BE 69 C3 6A A5 30 F2 C2 B9 D9 82
6569           :             2B 7D D9 C4 84 1F DE 0D E8 54 D7 1B 99 2E
6570           :             B3 D0 88 F6 D6 63 9B A7 E2 0E 82 D4 3B 8A
6571           :             68 1B 06 56 31 59 0B 49 EB 99 A5 D5 81 41
6572           :             7B C9 55
6573           :           }
6574           :       }
6575591 A3   50:     [3] {
6576593 30   48:       SEQUENCE {
6577595 30   29:         SEQUENCE {
6578597 06    3:           OBJECT IDENTIFIER
6579           :             subjectKeyIdentifier (2 5 29 14)
6580602 04   22:           OCTET STRING, encapsulates {
6581604 04   20:               OCTET STRING
6582           :                 86 CA A5 22 81 62 EF AD 0A 89 BC AD 72 41
6583           :                 2C 29 49 F4 86 56
6584           :               }
6585           :           }
6586626 30   15:         SEQUENCE {
6587628 06    3:           OBJECT IDENTIFIER basicConstraints (2 5 29 19)
6588633 01    1:           BOOLEAN TRUE
6589636 04    5:           OCTET STRING, encapsulates {
6590638 30    3:               SEQUENCE {
6591640 01    1:                 BOOLEAN TRUE
6592           :                 }
6593           :               }
6594           :           }
6595           :         }
6596           :       }
6597           :     }
6598643 30    9:   SEQUENCE {
6599645 06    7:     OBJECT IDENTIFIER dsaWithSha1 (1 2 840 10040 4 3)
6600           :     }
6601654 03   47:   BIT STRING 0 unused bits, encapsulates {
6602657 30   44:       SEQUENCE {
6603659 02   20:         INTEGER
6604           :           43 1B CF 29 25 45 C0 4E 52 E7 7D D6 FC B1
6605           :           66 4C 83 CF 2D 77
6606681 02   20:         INTEGER
6607
6608
6609
6610Housley, et. al.            Standards Track                   [Page 118]
6611
6612RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6613
6614
6615           :           0B 5B 9A 24 11 98 E8 F3 86 90 04 F6 08 A9
6616           :           E1 8D A5 CC 3A D4
6617           :         }
6618           :       }
6619           :   }
6620
6621C.2  Certificate
6622
6623   This section contains an annotated hex dump of a 730 byte version 3
6624   certificate.  The certificate contains the following information:
6625   (a)  the serial number is 18 (12 hex);
6626   (b)  the certificate is signed with DSA and the SHA-1 hash algorithm;
6627   (c)  the issuer's distinguished name is OU=nist; O=gov; C=US
6628   (d)  and the subject's distinguished name is CN=Tim Polk; OU=nist;
6629   O=gov; C=US
6630   (e)  the certificate was valid from July 30, 1997 through December 1,
6631   1997;
6632   (f)  the certificate contains a 1024 bit DSA public key;
6633   (g)  the certificate is an end entity certificate, as the basic
6634   constraints extension is not present;
6635   (h)  the certificate contains an authority key identifier extension
6636   matching the subject key identifier of the certificate in Appendix
6637   C.1; and
6638   (i)  the certificate includes one alternative name - an RFC 822
6639   address of "wpolk@nist.gov".
6640
6641     0 30  730: SEQUENCE {
6642     4 30  665:   SEQUENCE {
6643     8 A0    3:     [0] {
6644    10 02    1:       INTEGER 2
6645              :       }
6646    13 02    1:     INTEGER 18
6647    16 30    9:     SEQUENCE {
6648    18 06    7:       OBJECT IDENTIFIER dsaWithSha1 (1 2 840 10040 4 3)
6649              :       }
6650    27 30   42:     SEQUENCE {
6651    29 31   11:       SET {
6652    31 30    9:         SEQUENCE {
6653    33 06    3:           OBJECT IDENTIFIER countryName (2 5 4 6)
6654    38 13    2:           PrintableString 'US'
6655              :           }
6656              :         }
6657    42 31   12:       SET {
6658    44 30   10:         SEQUENCE {
6659    46 06    3:           OBJECT IDENTIFIER organizationName (2 5 4 10)
6660    51 13    3:           PrintableString 'gov'
6661              :           }
6662              :         }
6663
6664
6665
6666Housley, et. al.            Standards Track                   [Page 119]
6667
6668RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6669
6670
6671    56 31   13:       SET {
6672    58 30   11:         SEQUENCE {
6673    60 06    3:           OBJECT IDENTIFIER
6674              :             organizationalUnitName (2 5 4 11)
6675    65 13    4:           PrintableString 'NIST'
6676              :           }
6677              :         }
6678              :       }
6679    71 30   30:     SEQUENCE {
6680    73 17   13:       UTCTime '970730000000Z'
6681    88 17   13:       UTCTime '971201000000Z'
6682              :       }
6683   103 30   61:     SEQUENCE {
6684   105 31   11:       SET {
6685   107 30    9:         SEQUENCE {
6686   109 06    3:           OBJECT IDENTIFIER countryName (2 5 4 6)
6687   114 13    2:           PrintableString 'US'
6688              :           }
6689              :         }
6690   118 31   12:       SET {
6691   120 30   10:         SEQUENCE {
6692   122 06    3:           OBJECT IDENTIFIER organizationName (2 5 4 10)
6693   127 13    3:           PrintableString 'gov'
6694              :           }
6695              :         }
6696   132 31   13:       SET {
6697   134 30   11:         SEQUENCE {
6698   136 06    3:           OBJECT IDENTIFIER
6699              :             organizationalUnitName (2 5 4 11)
6700   141 13    4:           PrintableString 'NIST'
6701              :           }
6702              :         }
6703   147 31   17:       SET {
6704   149 30   15:         SEQUENCE {
6705   151 06    3:           OBJECT IDENTIFIER commonName (2 5 4 3)
6706   156 13    8:           PrintableString 'Tim Polk'
6707              :           }
6708              :         }
6709              :       }
6710   166 30  439:     SEQUENCE {
6711   170 30  300:       SEQUENCE {
6712   174 06    7:         OBJECT IDENTIFIER dsa (1 2 840 10040 4 1)
6713   183 30  287:         SEQUENCE {
6714   187 02  129:           INTEGER
6715              :             00 B6 8B 0F 94 2B 9A CE A5 25 C6 F2 ED FC
6716              :             FB 95 32 AC 01 12 33 B9 E0 1C AD 90 9B BC
6717              :             48 54 9E F3 94 77 3C 2C 71 35 55 E6 FE 4F
6718              :             22 CB D5 D8 3E 89 93 33 4D FC BD 4F 41 64
6719
6720
6721
6722Housley, et. al.            Standards Track                   [Page 120]
6723
6724RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6725
6726
6727              :             3E A2 98 70 EC 31 B4 50 DE EB F1 98 28 0A
6728              :             C9 3E 44 B3 FD 22 97 96 83 D0 18 A3 E3 BD
6729              :             35 5B FF EE A3 21 72 6A 7B 96 DA B9 3F 1E
6730              :             5A 90 AF 24 D6 20 F0 0D 21 A7 D4 02 B9 1A
6731              :             FC AC 21 FB 9E 94 9E 4B 42 45 9E 6A B2 48
6732              :             63 FE 43
6733   319 02   21:           INTEGER
6734              :             00 B2 0D B0 B1 01 DF 0C 66 24 FC 13 92 BA
6735              :             55 F7 7D 57 74 81 E5
6736   342 02  129:           INTEGER
6737              :             00 9A BF 46 B1 F5 3F 44 3D C9 A5 65 FB 91
6738              :             C0 8E 47 F1 0A C3 01 47 C2 44 42 36 A9 92
6739              :             81 DE 57 C5 E0 68 86 58 00 7B 1F F9 9B 77
6740              :             A1 C5 10 A5 80 91 78 51 51 3C F6 FC FC CC
6741              :             46 C6 81 78 92 84 3D F4 93 3D 0C 38 7E 1A
6742              :             5B 99 4E AB 14 64 F6 0C 21 22 4E 28 08 9C
6743              :             92 B9 66 9F 40 E8 95 F6 D5 31 2A EF 39 A2
6744              :             62 C7 B2 6D 9E 58 C4 3A A8 11 81 84 6D AF
6745              :             F8 B4 19 B4 C2 11 AE D0 22 3B AA 20 7F EE
6746              :             1E 57 18
6747              :           }
6748              :         }
6749   474 03  132:       BIT STRING 0 unused bits, encapsulates {
6750   478 02  128:           INTEGER
6751              :             30 B6 75 F7 7C 20 31 AE 38 BB 7E 0D 2B AB
6752              :             A0 9C 4B DF 20 D5 24 13 3C CD 98 E5 5F 6C
6753              :             B7 C1 BA 4A BA A9 95 80 53 F0 0D 72 DC 33
6754              :             37 F4 01 0B F5 04 1F 9D 2E 1F 62 D8 84 3A
6755              :             9B 25 09 5A 2D C8 46 8E 2B D4 F5 0D 3B C7
6756              :             2D C6 6C B9 98 C1 25 3A 44 4E 8E CA 95 61
6757              :             35 7C CE 15 31 5C 23 13 1E A2 05 D1 7A 24
6758              :             1C CB D3 72 09 90 FF 9B 9D 28 C0 A1 0A EC
6759              :             46 9F 0D B8 D0 DC D0 18 A6 2B 5E F9 8F B5
6760              :             95 BE
6761              :           }
6762              :       }
6763   609 A3   62:     [3] {
6764   611 30   60:       SEQUENCE {
6765   613 30   25:         SEQUENCE {
6766   615 06    3:           OBJECT IDENTIFIER subjectAltName (2 5 29 17)
6767   620 04   18:           OCTET STRING, encapsulates {
6768   622 30   16:               SEQUENCE {
6769   624 81   14:                 [1] 'wpolk@nist.gov'
6770              :                 }
6771              :               }
6772              :           }
6773   640 30   31:         SEQUENCE {
6774   642 06    3:           OBJECT IDENTIFIER
6775
6776
6777
6778Housley, et. al.            Standards Track                   [Page 121]
6779
6780RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6781
6782
6783              :             authorityKeyIdentifier (2 5 29 35)
6784   647 04   24:           OCTET STRING, encapsulates {
6785   649 30   22:               SEQUENCE {
6786   651 80   20:                 [0]
6787              :                   86 CA A5 22 81 62 EF AD 0A 89 BC AD 72
6788              :                   41 2C 29 49 F4 86 56
6789              :                 }
6790              :               }
6791              :           }
6792              :         }
6793              :       }
6794              :     }
6795   673 30    9:   SEQUENCE {
6796   675 06    7:     OBJECT IDENTIFIER dsaWithSha1 (1 2 840 10040 4 3)
6797              :     }
6798   684 03   48:   BIT STRING 0 unused bits, encapsulates {
6799   687 30   45:       SEQUENCE {
6800   689 02   20:         INTEGER
6801              :           36 97 CB E3 B4 2C E1 BB 61 A9 D3 CC 24 CC
6802              :           22 92 9F F4 F5 87
6803   711 02   21:         INTEGER
6804              :           00 AB C9 79 AF D2 16 1C A9 E3 68 A9 14 10
6805              :           B4 A0 2E FF 22 5A 73
6806              :         }
6807              :       }
6808              :   }
6809
6810C.3  End Entity Certificate Using RSA
6811
6812   This section contains an annotated hex dump of a 654 byte version 3
6813   certificate.  The certificate contains the following information:
6814   (a)  the serial number is 256;
6815   (b)  the certificate is signed with RSA and the SHA-1 hash algorithm;
6816   (c)  the issuer's distinguished name is OU=NIST; O=gov; C=US
6817   (d)  and the subject's distinguished name is CN=Tim Polk; OU=NIST;
6818   O=gov; C=US
6819   (e)  the certificate was issued on May 21, 1996 at 09:58:26 and
6820   expired on May 21, 1997 at 09:58:26;
6821   (f)  the certificate contains a 1024 bit RSA public key;
6822   (g)  the certificate is an end entity certificate (not a CA
6823   certificate);
6824   (h)  the certificate includes an alternative subject name of
6825   "<http://www.itl.nist.gov/div893/staff/polk/index.html>" and an
6826   alternative issuer name of "<http://www.nist.gov/>" - both are URLs;
6827   (i)  the certificate include an authority key identifier extension
6828   and a certificate policies extension specifying the policy OID
6829   2.16.840.1.101.3.2.1.48.9; and
6830
6831
6832
6833
6834Housley, et. al.            Standards Track                   [Page 122]
6835
6836RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6837
6838
6839   (j)  the certificate includes a critical key usage extension
6840   specifying that the public key is intended for verification of
6841   digital signatures.
6842
6843  0 30  654: SEQUENCE {
6844  4 30  503:   SEQUENCE {
6845  8 A0    3:     [0] {
6846 10 02    1:       INTEGER 2
6847           :       }
6848 13 02    2:     INTEGER 256
6849 17 30   13:     SEQUENCE {
6850 19 06    9:       OBJECT IDENTIFIER
6851           :         sha1withRSAEncryption (1 2 840 113549 1 1 5)
6852 30 05    0:       NULL
6853           :       }
6854 32 30   42:     SEQUENCE {
6855 34 31   11:       SET {
6856 36 30    9:         SEQUENCE {
6857 38 06    3:           OBJECT IDENTIFIER countryName (2 5 4 6)
6858 43 13    2:           PrintableString 'US'
6859           :           }
6860           :         }
6861 47 31   12:       SET {
6862 49 30   10:         SEQUENCE {
6863 51 06    3:           OBJECT IDENTIFIER organizationName (2 5 4 10)
6864 56 13    3:           PrintableString 'gov'
6865           :           }
6866           :         }
6867 61 31   13:       SET {
6868 63 30   11:         SEQUENCE {
6869 65 06    3:           OBJECT IDENTIFIER
6870           :             organizationalUnitName (2 5 4 11)
6871 70 13    4:           PrintableString 'NIST'
6872           :           }
6873           :         }
6874           :       }
6875 76 30   30:     SEQUENCE {
6876 78 17   13:       UTCTime '960521095826Z'
6877 93 17   13:       UTCTime '970521095826Z'
6878           :       }
6879108 30   61:     SEQUENCE {
6880110 31   11:       SET {
6881112 30    9:         SEQUENCE {
6882114 06    3:           OBJECT IDENTIFIER countryName (2 5 4 6)
6883119 13    2:           PrintableString 'US'
6884           :           }
6885           :         }
6886123 31   12:       SET {
6887
6888
6889
6890Housley, et. al.            Standards Track                   [Page 123]
6891
6892RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6893
6894
6895125 30   10:         SEQUENCE {
6896127 06    3:           OBJECT IDENTIFIER organizationName (2 5 4 10)
6897132 13    3:           PrintableString 'gov'
6898           :           }
6899           :         }
6900137 31   13:       SET {
6901139 30   11:         SEQUENCE {
6902141 06    3:           OBJECT IDENTIFIER
6903           :             organizationalUnitName (2 5 4 11)
6904146 13    4:           PrintableString 'NIST'
6905           :           }
6906           :         }
6907152 31   17:       SET {
6908154 30   15:         SEQUENCE {
6909156 06    3:           OBJECT IDENTIFIER commonName (2 5 4 3)
6910161 13    8:           PrintableString 'Tim Polk'
6911           :           }
6912           :         }
6913           :       }
6914171 30  159:     SEQUENCE {
6915174 30   13:       SEQUENCE {
6916176 06    9:         OBJECT IDENTIFIER
6917           :           rsaEncryption (1 2 840 113549 1 1 1)
6918187 05    0:         NULL
6919           :         }
6920189 03  141:       BIT STRING 0 unused bits, encapsulates {
6921193 30  137:           SEQUENCE {
6922196 02  129:             INTEGER
6923           :               00 E1 6A E4 03 30 97 02 3C F4 10 F3 B5 1E
6924           :               4D 7F 14 7B F6 F5 D0 78 E9 A4 8A F0 A3 75
6925           :               EC ED B6 56 96 7F 88 99 85 9A F2 3E 68 77
6926           :               87 EB 9E D1 9F C0 B4 17 DC AB 89 23 A4 1D
6927           :               7E 16 23 4C 4F A8 4D F5 31 B8 7C AA E3 1A
6928           :               49 09 F4 4B 26 DB 27 67 30 82 12 01 4A E9
6929           :               1A B6 C1 0C 53 8B 6C FC 2F 7A 43 EC 33 36
6930           :               7E 32 B2 7B D5 AA CF 01 14 C6 12 EC 13 F2
6931           :               2D 14 7A 8B 21 58 14 13 4C 46 A3 9A F2 16
6932           :               95 FF 23
6933328 02    3:             INTEGER 65537
6934           :             }
6935           :           }
6936           :       }
6937333 A3  175:     [3] {
6938336 30  172:       SEQUENCE {
6939339 30   63:         SEQUENCE {
6940341 06    3:           OBJECT IDENTIFIER subjectAltName (2 5 29 17)
6941346 04   56:           OCTET STRING, encapsulates {
6942348 30   54:               SEQUENCE {
6943
6944
6945
6946Housley, et. al.            Standards Track                   [Page 124]
6947
6948RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
6949
6950
6951350 86   52:                 [6]
6952           :                   'http://www.itl.nist.gov/div893/staff/'
6953           :                   'polk/index.html'
6954           :                 }
6955           :               }
6956           :           }
6957404 30   31:         SEQUENCE {
6958406 06    3:           OBJECT IDENTIFIER issuerAltName (2 5 29 18)
6959411 04   24:           OCTET STRING, encapsulates {
6960413 30   22:               SEQUENCE {
6961415 86   20:                 [6] 'http://www.nist.gov/'
6962           :                 }
6963           :               }
6964           :           }
6965437 30   31:         SEQUENCE {
6966439 06    3:           OBJECT IDENTIFIER
6967           :             authorityKeyIdentifier (2 5 29 35)
6968444 04   24:           OCTET STRING, encapsulates {
6969446 30   22:               SEQUENCE {
6970448 80   20:                 [0]
6971           :                   08 68 AF 85 33 C8 39 4A 7A F8 82 93 8E
6972           :                   70 6A 4A 20 84 2C 32
6973           :                 }
6974           :               }
6975           :           }
6976470 30   23:         SEQUENCE {
6977472 06    3:           OBJECT IDENTIFIER
6978           :             certificatePolicies (2 5 29 32)
6979477 04   16:           OCTET STRING, encapsulates {
6980479 30   14:               SEQUENCE {
6981481 30   12:                 SEQUENCE {
6982483 06   10:                   OBJECT IDENTIFIER
6983           :                            '2 16 840 1 101 3 2 1 48 9'
6984           :                   }
6985           :                 }
6986           :               }
6987           :           }
6988495 30   14:         SEQUENCE {
6989497 06    3:           OBJECT IDENTIFIER keyUsage (2 5 29 15)
6990502 01    1:           BOOLEAN TRUE
6991505 04    4:           OCTET STRING, encapsulates {
6992507 03    2:               BIT STRING 7 unused bits
6993           :                 '1'B (bit 0)
6994           :               }
6995           :           }
6996           :         }
6997           :       }
6998           :     }
6999
7000
7001
7002Housley, et. al.            Standards Track                   [Page 125]
7003
7004RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
7005
7006
7007511 30   13:   SEQUENCE {
7008513 06    9:     OBJECT IDENTIFIER
7009           :       sha1withRSAEncryption (1 2 840 113549 1 1 5)
7010524 05    0:     NULL
7011           :     }
7012526 03  129:   BIT STRING 0 unused bits
7013           :     1E 07 77 6E 66 B5 B6 B8 57 F0 03 DC 6F 77
7014           :     6D AF 55 1D 74 E5 CE 36 81 FC 4B C5 F4 47
7015           :     82 C4 0A 25 AA 8D D6 7D 3A 89 AB 44 34 39
7016           :     F6 BD 61 1A 78 85 7A B8 1E 92 A2 22 2F CE
7017           :     07 1A 08 8E F1 46 03 59 36 4A CB 60 E6 03
7018           :     40 01 5B 2A 44 D6 E4 7F EB 43 5E 74 0A E6
7019           :     E4 F9 3E E1 44 BE 1F E7 5F 5B 2C 41 8D 08
7020           :     BD 26 FE 6A A6 C3 2F B2 3B 41 12 6B C1 06
7021           :     8A B8 4C 91 59 EB 2F 38 20 2A 67 74 20 0B
7022           :     77 F3
7023           :   }
7024
7025C.4  Certificate Revocation List
7026
7027   This section contains an annotated hex dump of a version 2 CRL with
7028   one extension (cRLNumber).  The CRL was issued by OU=NIST; O=gov;
7029   C=US on August 7, 1997; the next scheduled issuance was September 7,
7030   1997.  The CRL includes one revoked certificates: serial number 18
7031   (12 hex), which was revoked on July 31, 1997 due to keyCompromise.
7032   The CRL itself is number 18, and it was signed with DSA and SHA-1.
7033
7034  0 30  203: SEQUENCE {
7035  3 30  140:   SEQUENCE {
7036  6 02    1:     INTEGER 1
7037  9 30    9:     SEQUENCE {
7038 11 06    7:       OBJECT IDENTIFIER dsaWithSha1 (1 2 840 10040 4 3)
7039           :       }
7040 20 30   42:     SEQUENCE {
7041 22 31   11:       SET {
7042 24 30    9:         SEQUENCE {
7043 26 06    3:           OBJECT IDENTIFIER countryName (2 5 4 6)
7044 31 13    2:           PrintableString 'US'
7045           :           }
7046           :         }
7047 35 31   12:       SET {
7048 37 30   10:         SEQUENCE {
7049 39 06    3:           OBJECT IDENTIFIER organizationName (2 5 4 10)
7050 44 13    3:           PrintableString 'gov'
7051           :           }
7052           :         }
7053 49 31   13:       SET {
7054 51 30   11:         SEQUENCE {
7055
7056
7057
7058Housley, et. al.            Standards Track                   [Page 126]
7059
7060RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
7061
7062
7063 53 06    3:           OBJECT IDENTIFIER
7064           :             organizationalUnitName (2 5 4 11)
7065 58 13    4:           PrintableString 'NIST'
7066           :           }
7067           :         }
7068           :       }
7069 64 17   13:     UTCTime '970807000000Z'
7070 79 17   13:     UTCTime '970907000000Z'
7071 94 30   34:     SEQUENCE {
7072 96 30   32:       SEQUENCE {
7073 98 02    1:         INTEGER 18
7074101 17   13:         UTCTime '970731000000Z'
7075116 30   12:         SEQUENCE {
7076118 30   10:           SEQUENCE {
7077120 06    3:             OBJECT IDENTIFIER cRLReason (2 5 29 21)
7078125 04    3:             OCTET STRING, encapsulates {
7079127 0A    1:                 ENUMERATED 1
7080           :                 }
7081           :             }
7082           :           }
7083           :         }
7084           :       }
7085130 A0   14:     [0] {
7086132 30   12:       SEQUENCE {
7087134 30   10:         SEQUENCE {
7088136 06    3:           OBJECT IDENTIFIER cRLNumber (2 5 29 20)
7089141 04    3:           OCTET STRING, encapsulates {
7090143 02    1:               INTEGER 12
7091           :               }
7092           :           }
7093           :         }
7094           :       }
7095           :     }
7096146 30    9:   SEQUENCE {
7097148 06    7:     OBJECT IDENTIFIER dsaWithSha1 (1 2 840 10040 4 3)
7098           :     }
7099157 03   47:   BIT STRING 0 unused bits, encapsulates {
7100160 30   44:       SEQUENCE {
7101162 02   20:         INTEGER
7102           :           22 4E 9F 43 BA 95 06 34 F2 BB 5E 65 DB A6
7103           :           80 05 C0 3A 29 47
7104184 02   20:         INTEGER
7105           :           59 1A 57 C9 82 D7 02 21 14 C3 D4 0B 32 1B
7106           :           96 16 B1 1F 46 5A
7107           :         }
7108           :       }
7109           :   }
7110
7111
7112
7113
7114Housley, et. al.            Standards Track                   [Page 127]
7115
7116RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
7117
7118
7119Author Addresses
7120
7121   Russell Housley
7122   RSA Laboratories
7123   918 Spring Knoll Drive
7124   Herndon, VA 20170
7125   USA
7126
7127   EMail:  rhousley@rsasecurity.com
7128
7129   Warwick Ford
7130   VeriSign, Inc.
7131   401 Edgewater Place
7132   Wakefield, MA 01880
7133   USA
7134
7135   EMail:  wford@verisign.com
7136
7137   Tim Polk
7138   NIST
7139   Building 820, Room 426
7140   Gaithersburg, MD 20899
7141   USA
7142
7143   EMail:  wpolk@nist.gov
7144
7145   David Solo
7146   Citigroup
7147   909 Third Ave, 16th Floor
7148   New York, NY 10043
7149   USA
7150
7151   EMail:  dsolo@alum.mit.edu
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170Housley, et. al.            Standards Track                   [Page 128]
7171
7172RFC 3280        Internet X.509 Public Key Infrastructure      April 2002
7173
7174
7175Full Copyright Statement
7176
7177   Copyright (C) The Internet Society (2002).  All Rights Reserved.
7178
7179   This document and translations of it may be copied and furnished to
7180   others, and derivative works that comment on or otherwise explain it
7181   or assist in its implementation may be prepared, copied, published
7182   and distributed, in whole or in part, without restriction of any
7183   kind, provided that the above copyright notice and this paragraph are
7184   included on all such copies and derivative works.  However, this
7185   document itself may not be modified in any way, such as by removing
7186   the copyright notice or references to the Internet Society or other
7187   Internet organizations, except as needed for the purpose of
7188   developing Internet standards in which case the procedures for
7189   copyrights defined in the Internet Standards process must be
7190   followed, or as required to translate it into languages other than
7191   English.
7192
7193   The limited permissions granted above are perpetual and will not be
7194   revoked by the Internet Society or its successors or assigns.
7195
7196   This document and the information contained herein is provided on an
7197   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
7198   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
7199   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
7200   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
7201   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
7202
7203Acknowledgement
7204
7205   Funding for the RFC Editor function is currently provided by the
7206   Internet Society.
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226Housley, et. al.            Standards Track                   [Page 129]
7227
7228