| < draft-ietf-pkix-new-part1-00.txt | draft-ietf-pkix-new-part1-01.txt > | |||
|---|---|---|---|---|
| PKIX Working Group R. Housley (SPYRUS) | PKIX Working Group R. Housley (SPYRUS) | |||
| Internet Draft W. Ford (VeriSign) | Internet Draft W. Ford (VeriSign) | |||
| W. Polk (NIST) | W. Polk (NIST) | |||
| D. Solo (Citicorp) | D. Solo (Citigroup) | |||
| expires in six months October 22, 1999 | expires in six months March 10, 2000 | |||
| Internet X.509 Public Key Infrastructure | Internet X.509 Public Key Infrastructure | |||
| Certificate and CRL Profile | Certificate and CRL Profile | |||
| <draft-ietf-pkix-new-part1-00.txt> | <draft-ietf-pkix-new-part1-01.txt> | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
| all provisions of Section 10 of RFC2026. Internet-Drafts are working | all provisions of Section 10 of RFC2026. Internet-Drafts are working | |||
| documents of the Internet Engineering Task Force (IETF), its areas, | documents of the Internet Engineering Task Force (IETF), its areas, | |||
| and its working groups. Note that other groups may also distribute | and its working groups. Note that other groups may also distribute | |||
| working documents as Internet-Drafts. | working documents as Internet-Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| skipping to change at page 3, line 44 ¶ | skipping to change at page 3, line 44 ¶ | |||
| 4.1.2.7 Subject Public Key Info ............................... 24 | 4.1.2.7 Subject Public Key Info ............................... 24 | |||
| 4.1.2.8 Unique Identifiers .................................... 24 | 4.1.2.8 Unique Identifiers .................................... 24 | |||
| 4.1.2.9 Extensions ............................................. 25 | 4.1.2.9 Extensions ............................................. 25 | |||
| 4.2 Certificate Extensions .................................... 25 | 4.2 Certificate Extensions .................................... 25 | |||
| 4.2.1 Standard Extensions ..................................... 26 | 4.2.1 Standard Extensions ..................................... 26 | |||
| 4.2.1.1 Authority Key Identifier .............................. 26 | 4.2.1.1 Authority Key Identifier .............................. 26 | |||
| 4.2.1.2 Subject Key Identifier ................................ 27 | 4.2.1.2 Subject Key Identifier ................................ 27 | |||
| 4.2.1.3 Key Usage ............................................. 28 | 4.2.1.3 Key Usage ............................................. 28 | |||
| 4.2.1.4 Private Key Usage Period .............................. 30 | 4.2.1.4 Private Key Usage Period .............................. 30 | |||
| 4.2.1.5 Certificate Policies .................................. 30 | 4.2.1.5 Certificate Policies .................................. 30 | |||
| 4.2.1.6 Policy Mappings ....................................... 32 | 4.2.1.6 Policy Mappings ....................................... 33 | |||
| 4.2.1.7 Subject Alternative Name .............................. 33 | 4.2.1.7 Subject Alternative Name .............................. 33 | |||
| 4.2.1.8 Issuer Alternative Name ............................... 35 | 4.2.1.8 Issuer Alternative Name ............................... 36 | |||
| 4.2.1.9 Subject Directory Attributes .......................... 36 | 4.2.1.9 Subject Directory Attributes .......................... 36 | |||
| 4.2.1.10 Basic Constraints .................................... 36 | 4.2.1.10 Basic Constraints .................................... 36 | |||
| 4.2.1.11 Name Constraints ..................................... 36 | 4.2.1.11 Name Constraints ..................................... 37 | |||
| 4.2.1.12 Policy Constraints ................................... 39 | 4.2.1.12 Policy Constraints ................................... 39 | |||
| 4.2.1.13 Extended key usage field ............................. 39 | 4.2.1.13 Extended key usage field ............................. 40 | |||
| 4.2.1.14 CRL Distribution Points .............................. 41 | 4.2.1.14 CRL Distribution Points .............................. 42 | |||
| 4.2.2 Internet Certificate Extensions ......................... 42 | 4.2.1.15 Inhibit Any-Policy ................................... 42 | |||
| 4.2.2.1 Authority Information Access .......................... 42 | 4.2.2 Internet Certificate Extensions ......................... 43 | |||
| 5 CRL and CRL Extensions Profile .............................. 43 | 4.2.2.1 Authority Information Access .......................... 43 | |||
| 5.1 CRL Fields ................................................ 44 | 5 CRL and CRL Extensions Profile .............................. 44 | |||
| 5.1.1 CertificateList Fields .................................. 45 | 5.1 CRL Fields ................................................ 45 | |||
| 5.1.1.1 tbsCertList ........................................... 45 | 5.1.1 CertificateList Fields .................................. 46 | |||
| 5.1.1.2 signatureAlgorithm .................................... 45 | 5.1.1.1 tbsCertList ........................................... 46 | |||
| 5.1.1.3 signatureValue ........................................ 45 | 5.1.1.2 signatureAlgorithm .................................... 46 | |||
| 5.1.2 Certificate List "To Be Signed" ......................... 45 | 5.1.1.3 signatureValue ........................................ 46 | |||
| 5.1.2.1 Version ............................................... 46 | 5.1.2 Certificate List "To Be Signed" ......................... 46 | |||
| 5.1.2.2 Signature ............................................. 46 | 5.1.2.1 Version ............................................... 47 | |||
| 5.1.2.3 Issuer Name ........................................... 46 | 5.1.2.2 Signature ............................................. 47 | |||
| 5.1.2.4 This Update ........................................... 46 | 5.1.2.3 Issuer Name ........................................... 47 | |||
| 5.1.2.5 Next Update ........................................... 46 | 5.1.2.4 This Update ........................................... 47 | |||
| 5.1.2.6 Revoked Certificates .................................. 47 | 5.1.2.5 Next Update ........................................... 48 | |||
| 5.1.2.7 Extensions ............................................ 47 | 5.1.2.6 Revoked Certificates .................................. 48 | |||
| 5.2 CRL Extensions ............................................ 47 | 5.1.2.7 Extensions ............................................ 48 | |||
| 5.2.1 Authority Key Identifier ................................ 48 | 5.2 CRL Extensions ............................................ 48 | |||
| 5.2.2 Issuer Alternative Name ................................. 48 | 5.2.1 Authority Key Identifier ................................ 49 | |||
| 5.2.3 CRL Number .............................................. 48 | 5.2.2 Issuer Alternative Name ................................. 49 | |||
| 5.2.4 Delta CRL Indicator ..................................... 49 | 5.2.3 CRL Number .............................................. 49 | |||
| 5.2.5 Issuing Distribution Point .............................. 49 | 5.2.4 Delta CRL Indicator ..................................... 50 | |||
| 5.3 CRL Entry Extensions ...................................... 50 | 5.2.5 Issuing Distribution Point .............................. 51 | |||
| 5.3.1 Reason Code ............................................. 51 | 5.3 CRL Entry Extensions ...................................... 52 | |||
| 5.3.2 Hold Instruction Code ................................... 51 | 5.3.1 Reason Code ............................................. 53 | |||
| 5.3.3 Invalidity Date ......................................... 52 | 5.3.2 Hold Instruction Code ................................... 53 | |||
| 5.3.4 Certificate Issuer ...................................... 52 | 5.3.3 Invalidity Date ......................................... 54 | |||
| 6 Certificate Path Validation ................................. 52 | 5.3.4 Certificate Issuer ...................................... 54 | |||
| 6.1 Basic Path Validation ..................................... 53 | 6 Certificate Path Validation ................................. 55 | |||
| 6.1.1 Inputs ................................................... 55 | 6.1 Basic Path Validation ..................................... 55 | |||
| 6.1.2 Initialization ........................................... 56 | 6.1.1 Inputs ................................................... 57 | |||
| 6.1.3 Basic Certificate Processing ............................. 59 | 6.1.2 Initialization ........................................... 58 | |||
| 6.1.4 Preparation for Certificate i+1 .......................... 64 | 6.1.3 Basic Certificate Processing ............................. 61 | |||
| 6.1.5 Wrap-up procedure ........................................ 67 | 6.1.4 Preparation for Certificate i+1 .......................... 66 | |||
| 6.1.6 Outputs .................................................. 68 | 6.1.5 Wrap-up procedure ........................................ 69 | |||
| 6.2 Extending Path Validation ................................. 68 | 6.1.6 Outputs .................................................. 70 | |||
| 6.3 CRL Validation ............................................ 69 | 6.2 Extending Path Validation ................................. 70 | |||
| 6.3.1 Revocation Inputs ....................................... 69 | 6.3 CRL Validation ............................................ 71 | |||
| 6.3.2 Initialization and Revocation State Variables ........... 69 | 6.3.1 Revocation Inputs ....................................... 71 | |||
| 6.3.3 Basic Certificate Processing ............................ 70 | 6.3.2 Initialization and Revocation State Variables ........... 71 | |||
| 6.3.4 Preparation for Next Certificate ......................... 72 | 6.3.3 CRL Processing .......................................... 72 | |||
| 7 Algorithm Support ........................................... 72 | 7 Algorithm Support ........................................... 72 | |||
| 7.1 One-way Hash Functions .................................... 73 | 7.1 One-way Hash Functions .................................... 74 | |||
| 7.1.1 MD2 One-way Hash Function ............................... 73 | 7.1.1 MD2 One-way Hash Function ............................... 75 | |||
| 7.1.2 MD5 One-way Hash Function ............................... 73 | 7.1.2 MD5 One-way Hash Function ............................... 75 | |||
| 7.1.3 SHA-1 One-way Hash Function ............................. 74 | 7.1.3 SHA-1 One-way Hash Function ............................. 75 | |||
| 7.2 Signature Algorithms ...................................... 74 | 7.2 Signature Algorithms ...................................... 76 | |||
| 7.2.1 RSA Signature Algorithm ................................. 74 | 7.2.1 RSA Signature Algorithm ................................. 76 | |||
| 7.2.2 DSA Signature Algorithm ................................. 75 | 7.2.2 DSA Signature Algorithm ................................. 77 | |||
| 7.3 Subject Public Key Algorithms ............................. 76 | 7.3 Subject Public Key Algorithms ............................. 78 | |||
| 7.3.1 RSA Keys ................................................ 76 | 7.3.1 RSA Keys ................................................ 78 | |||
| 7.3.2 Diffie-Hellman Key Exchange Key ......................... 77 | 7.3.2 Diffie-Hellman Key Exchange Key ......................... 79 | |||
| 7.3.3 DSA Signature Keys ...................................... 78 | 7.3.3 DSA Signature Keys ...................................... 80 | |||
| 8 References .................................................. 80 | 8 References .................................................. 81 | |||
| 9 Intellectual Property Rights ................................ 82 | 9 Intellectual Property Rights ................................ 83 | |||
| 10 Security Considerations .................................... 82 | 10 Security Considerations .................................... 84 | |||
| Appendix A. ASN.1 Structures and OIDs ......................... 85 | Appendix A. ASN.1 Structures and OIDs ......................... 87 | |||
| A.1 Explicitly Tagged Module, 1988 Syntax ...................... 85 | A.1 Explicitly Tagged Module, 1988 Syntax ...................... 87 | |||
| A.2 Implicitly Tagged Module, 1988 Syntax ...................... 99 | A.2 Implicitly Tagged Module, 1988 Syntax ...................... 101 | |||
| Appendix B. 1993 ASN.1 Structures and OIDs .................... 106 | Appendix B. 1993 ASN.1 Structures and OIDs .................... 108 | |||
| B.1 Explicitly Tagged Module, 1993 Syntax ...................... 106 | B.1 Explicitly Tagged Module, 1993 Syntax ...................... 108 | |||
| B.2 Implicitly Tagged Module, 1993 Syntax ...................... 122 | B.2 Implicitly Tagged Module, 1993 Syntax ...................... 125 | |||
| Appendix C. ASN.1 Notes ....................................... 130 | Appendix C. ASN.1 Notes ....................................... 132 | |||
| Appendix D. Examples .......................................... 131 | Appendix D. Examples .......................................... 134 | |||
| D.1 Certificate ............................................... 131 | D.1 Certificate ............................................... 134 | |||
| D.2 Certificate ............................................... 134 | D.2 Certificate ............................................... 137 | |||
| D.3 End-Entity Certificate Using RSA .......................... 137 | D.3 End-Entity Certificate Using RSA .......................... 140 | |||
| D.4 Certificate Revocation List ............................... 140 | D.4 Certificate Revocation List ............................... 143 | |||
| Appendix E. Author Addresses .................................. 142 | Appendix E. Author Addresses .................................. 145 | |||
| Appendix F. Full Copyright Statement .......................... 142 | Appendix F. Full Copyright Statement .......................... 145 | |||
| 1 Introduction | 1 Introduction | |||
| This specification is one part of a family of standards for the X.509 | This specification is one part of a family of standards for the X.509 | |||
| Public Key Infrastructure (PKI) for the Internet. This specification | Public Key Infrastructure (PKI) for the Internet. This specification | |||
| is a standalone document; implementations of this standard may | is a standalone document; implementations of this standard may | |||
| proceed independent from the other parts. | proceed independent from the other parts. | |||
| This specification profiles the format and semantics of certificates | This specification profiles the format and semantics of certificates | |||
| and certificate revocation lists for the Internet PKI. Procedures | and certificate revocation lists for the Internet PKI. Procedures | |||
| skipping to change at page 18, line 49 ¶ | skipping to change at page 18, line 49 ¶ | |||
| Implementations SHOULD be prepared to accept any version certificate. | Implementations SHOULD be prepared to accept any version certificate. | |||
| At a minimum, conforming implementations MUST recognize version 3 | At a minimum, conforming implementations MUST recognize version 3 | |||
| certificates. | certificates. | |||
| Generation of version 2 certificates is not expected by implementa- | Generation of version 2 certificates is not expected by implementa- | |||
| tions based on this profile. | tions based on this profile. | |||
| 4.1.2.2 Serial number | 4.1.2.2 Serial number | |||
| The serial number is an integer assigned by the CA to each certifi- | The serial number is a positive integer assigned by the CA to each | |||
| cate. It MUST be unique for each certificate issued by a given CA | certificate. It MUST be unique for each certificate issued by a | |||
| (i.e., the issuer name and serial number identify a unique | given CA (i.e., the issuer name and serial number identify a unique | |||
| certificate). | certificate). | |||
| 4.1.2.3 Signature | 4.1.2.3 Signature | |||
| This field contains the algorithm identifier for the algorithm used | This field contains the algorithm identifier for the algorithm used | |||
| by the CA to sign the certificate. | by the CA to sign the certificate. | |||
| This field MUST contain the same algorithm identifier as the signa- | This field MUST contain the same algorithm identifier as the signa- | |||
| tureAlgorithm field in the sequence Certificate (see sec. 4.1.1.2). | tureAlgorithm field in the sequence Certificate (see sec. 4.1.1.2). | |||
| The contents of the optional parameters field will vary according to | The contents of the optional parameters field will vary according to | |||
| skipping to change at page 21, line 16 ¶ | skipping to change at page 21, line 16 ¶ | |||
| Standard sets of attributes have been defined in the X.500 series of | Standard sets of attributes have been defined in the X.500 series of | |||
| specifications.[X.520] Implementations of this specification MUST be | specifications.[X.520] Implementations of this specification MUST be | |||
| prepared to receive the following standard attribute types in issuer | prepared to receive the following standard attribute types in issuer | |||
| and subject (see 4.1.2.6) names: | and subject (see 4.1.2.6) names: | |||
| * country, | * country, | |||
| * organization, | * organization, | |||
| * organizational-unit, | * organizational-unit, | |||
| * distinguished name qualifier, | * distinguished name qualifier, | |||
| * state or province name, and | * state or province name, | |||
| * common name (e.g., "Susan Housley"). | * common name (e.g., "Susan Housley"), and | |||
| * serial number. | ||||
| In addition, implementations of this specification SHOULD be prepared | In addition, implementations of this specification SHOULD be prepared | |||
| to receive the following standard attribute types in issuer and sub- | to receive the following standard attribute types in issuer and sub- | |||
| ject names: | ject names: | |||
| * locality, | * locality, | |||
| * title, | * title, | |||
| * surname, | * surname, | |||
| * given name, | * given name, | |||
| * initials, and | * initials, and | |||
| skipping to change at page 23, line 5 ¶ | skipping to change at page 23, line 6 ¶ | |||
| certificate. The field is represented as a SEQUENCE of two dates: | certificate. The field is represented as a SEQUENCE of two dates: | |||
| the date on which the certificate validity period begins (notBefore) | the date on which the certificate validity period begins (notBefore) | |||
| and the date on which the certificate validity period ends | and the date on which the certificate validity period ends | |||
| (notAfter). Both notBefore and notAfter may be encoded as UTCTime or | (notAfter). Both notBefore and notAfter may be encoded as UTCTime or | |||
| GeneralizedTime. | GeneralizedTime. | |||
| CAs conforming to this profile MUST always encode certificate vali- | CAs conforming to this profile MUST always encode certificate vali- | |||
| dity dates through the year 2049 as UTCTime; certificate validity | dity dates through the year 2049 as UTCTime; certificate validity | |||
| dates in 2050 or later MUST be encoded as GeneralizedTime. | dates in 2050 or later MUST be encoded as GeneralizedTime. | |||
| The validity period for a certificate is the period of time from | ||||
| notBefore through notAfter, inclusive. | ||||
| 4.1.2.5.1 UTCTime | 4.1.2.5.1 UTCTime | |||
| The universal time type, UTCTime, is a standard ASN.1 type intended | The universal time type, UTCTime, is a standard ASN.1 type intended | |||
| for representation of dates and time. UTCTime specifies the year | for representation of dates and time. UTCTime specifies the year | |||
| through the two low order digits and time is specified to the preci- | through the two low order digits and time is specified to the preci- | |||
| sion of one minute or one second. UTCTime includes either Z (for | sion of one minute or one second. UTCTime includes either Z (for | |||
| Zulu, or Greenwich Mean Time) or a time differential. | Zulu, or Greenwich Mean Time) or a time differential. | |||
| For the purposes of this profile, UTCTime values MUST be expressed | For the purposes of this profile, UTCTime values MUST be expressed | |||
| Greenwich Mean Time (Zulu) and MUST include seconds (i.e., times are | Greenwich Mean Time (Zulu) and MUST include seconds (i.e., times are | |||
| skipping to change at page 25, line 45 ¶ | skipping to change at page 26, line 4 ¶ | |||
| extnID and the corresponding ASN.1 encoded structure is the value of | extnID and the corresponding ASN.1 encoded structure is the value of | |||
| the octet string extnValue. Only one instance of a particular exten- | the octet string extnValue. Only one instance of a particular exten- | |||
| sion may appear in a particular certificate. For example, a certifi- | sion may appear in a particular certificate. For example, a certifi- | |||
| cate may contain only one authority key identifier extension (see | cate may contain only one authority key identifier extension (see | |||
| sec. 4.2.1.1). An extension includes the boolean critical, with a | sec. 4.2.1.1). An extension includes the boolean critical, with a | |||
| default value of FALSE. The text for each extension specifies the | default value of FALSE. The text for each extension specifies the | |||
| acceptable values for the critical field. | acceptable values for the critical field. | |||
| Conforming CAs MUST support key identifiers (see sec. 4.2.1.1 and | Conforming CAs MUST support key identifiers (see sec. 4.2.1.1 and | |||
| 4.2.1.2), basic constraints (see sec. 4.2.1.10), key usage (see sec. | 4.2.1.2), basic constraints (see sec. 4.2.1.10), key usage (see sec. | |||
| 4.2.1.3), and certificate policies (see sec. 4.2.1.5) extensions. If | 4.2.1.3), and certificate policies (see sec. 4.2.1.5) extensions. If | |||
| the CA issues certificates with an empty sequence for the subject | the CA issues certificates with an empty sequence for the subject | |||
| field, the CA MUST support the subject alternative name extension | field, the CA MUST support the subject alternative name extension | |||
| (see sec. 4.2.1.7). Support for the remaining extensions is | (see sec. 4.2.1.7). Support for the remaining extensions is | |||
| OPTIONAL. Conforming CAs may support extensions that are not identi- | OPTIONAL. Conforming CAs may support extensions that are not identi- | |||
| fied within this specification; certificate issuers are cautioned | fied within this specification; certificate issuers are cautioned | |||
| that marking such extensions as critical may inhibit | that marking such extensions as critical may inhibit interoperabil- | |||
| interoperability. | ity. | |||
| At a minimum, applications conforming to this profile MUST recognize | At a minimum, applications conforming to this profile MUST recognize | |||
| the extensions which must or may be critical in this specification. | the following extensions: key usage (see sec. 4.2.1.3), certificate | |||
| These extensions are: key usage (see sec. 4.2.1.3), certificate pol- | policies (see sec. 4.2.1.5), the subject alternative name (see sec. | |||
| icies (see sec. 4.2.1.5), the subject alternative name (see sec. | ||||
| 4.2.1.7), basic constraints (see sec. 4.2.1.10), name constraints | 4.2.1.7), basic constraints (see sec. 4.2.1.10), name constraints | |||
| (see sec. 4.2.1.11), policy constraints (see sec. 4.2.1.12), and | (see sec. 4.2.1.11), policy constraints (see sec. 4.2.1.12), and | |||
| extended key usage (see sec. 4.2.1.13). | extended key usage (see sec. 4.2.1.13). | |||
| In addition, this profile RECOMMENDS application support for the | In addition, this profile RECOMMENDS application support for the | |||
| authority and subject key identifier (see sec. 4.2.1.1 and 4.2.1.2) | authority and subject key identifier (see sec. 4.2.1.1 and 4.2.1.2), | |||
| extensions. | and inhibit any-policy (see sec. 4.2.1.15) extensions. | |||
| 4.2.1 Standard Extensions | 4.2.1 Standard Extensions | |||
| This section identifies standard certificate extensions defined in | This section identifies standard certificate extensions defined in | |||
| [X.509] for use in the Internet PKI. Each extension is associated | [X.509] for use in the Internet PKI. Each extension is associated | |||
| with an OID defined in [X.509]. These OIDs are members of the id-ce | with an OID defined in [X.509]. These OIDs are members of the id-ce | |||
| arc, which is defined by the following: | arc, which is defined by the following: | |||
| id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} | id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} | |||
| skipping to change at page 27, line 52 ¶ | skipping to change at page 28, line 10 ¶ | |||
| SHA-1 hash of the value of the BIT STRING subjectPublicKey. | SHA-1 hash of the value of the BIT STRING subjectPublicKey. | |||
| One common method for generating unique values is a monotomically | One common method for generating unique values is a monotomically | |||
| increasing sequence of integers. | increasing sequence of integers. | |||
| For end entity certificates, the subject key identifier extension | For end entity certificates, the subject key identifier extension | |||
| provides a means for identifying certificates containing the particu- | provides a means for identifying certificates containing the particu- | |||
| lar public key used in an application. Where an end entity has | lar public key used in an application. Where an end entity has | |||
| obtained multiple certificates, especially from multiple CAs, the | obtained multiple certificates, especially from multiple CAs, the | |||
| subject key identifier provides a means to quickly identify the set | subject key identifier provides a means to quickly identify the set | |||
| of certificates containing a particular public key. To assist | of certificates containing a particular public key. To assist appli- | |||
| applications in identificiation the appropriate end entity certifi- | cations in identificiation the appropriate end entity certificate, | |||
| cate, this extension SHOULD be included in all end entity certifi- | this extension SHOULD be included in all end entity certificates. | |||
| cates. | ||||
| For end entity certificates, subject key identifiers SHOULD be | For end entity certificates, subject key identifiers SHOULD be | |||
| derived from the public key. Two common methods for generating key | derived from the public key. Two common methods for generating key | |||
| identifiers from the public key are identifed above. | identifiers from the public key are identifed above. | |||
| Where a key identifier has not been previously established, this | Where a key identifier has not been previously established, this | |||
| specification recommends use of one of these methods for generating | specification recommends use of one of these methods for generating | |||
| keyIdentifiers. | keyIdentifiers. | |||
| This extension MUST NOT be marked critical. | This extension MUST NOT be marked critical. | |||
| skipping to change at page 29, line 13 ¶ | skipping to change at page 29, line 18 ¶ | |||
| is used with a digital signature mechanism to support security | is used with a digital signature mechanism to support security | |||
| services other than non-repudiation (bit 1), certificate signing | services other than non-repudiation (bit 1), certificate signing | |||
| (bit 5), or revocation information signing (bit 6). Digital signa- | (bit 5), or revocation information signing (bit 6). Digital signa- | |||
| ture mechanisms are often used for entity authentication and data | ture mechanisms are often used for entity authentication and data | |||
| origin authentication with integrity. | origin authentication with integrity. | |||
| The nonRepudiation bit is asserted when the subject public key is | The nonRepudiation bit is asserted when the subject public key is | |||
| used to verify digital signatures used to provide a non- | used to verify digital signatures used to provide a non- | |||
| repudiation service which protects against the signing entity | repudiation service which protects against the signing entity | |||
| falsely denying some action, excluding certificate or CRL signing. | falsely denying some action, excluding certificate or CRL signing. | |||
| In the case of later conflict, a reliable third party may deter- | ||||
| mine the authenticity of the signed data. | ||||
| Further distinctions between the digitalSignature and nonRepudia- | ||||
| tion bits may be provided in specific certificate policies. | ||||
| The keyEncipherment bit is asserted when the subject public key is | The keyEncipherment bit is asserted when the subject public key is | |||
| used for key transport. For example, when an RSA key is to be | used for key transport. For example, when an RSA key is to be | |||
| used for key management, then this bit shall asserted. | used for key management, then this bit shall asserted. | |||
| The dataEncipherment bit is asserted when the subject public key | The dataEncipherment bit is asserted when the subject public key | |||
| is used for enciphering user data, other than cryptographic keys. | is used for enciphering user data, other than cryptographic keys. | |||
| The keyAgreement bit is asserted when the subject public key is | The keyAgreement bit is asserted when the subject public key is | |||
| used for key agreement. For example, when a Diffie-Hellman key is | used for key agreement. For example, when a Diffie-Hellman key is | |||
| skipping to change at page 30, line 35 ¶ | skipping to change at page 30, line 42 ¶ | |||
| id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 } | id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 } | |||
| PrivateKeyUsagePeriod ::= SEQUENCE { | PrivateKeyUsagePeriod ::= SEQUENCE { | |||
| notBefore [0] GeneralizedTime OPTIONAL, | notBefore [0] GeneralizedTime OPTIONAL, | |||
| notAfter [1] GeneralizedTime OPTIONAL } | notAfter [1] GeneralizedTime OPTIONAL } | |||
| 4.2.1.5 Certificate Policies | 4.2.1.5 Certificate Policies | |||
| The certificate policies extension contains a sequence of one or more | The certificate policies extension contains a sequence of one or more | |||
| policy information terms, each of which consists of an object iden- | policy information terms, each of which consists of an object iden- | |||
| tifier (OID) and optional qualifiers. In an end entity certificate, | tifier (OID) and optional qualifiers. Optional qualifiers, which may | |||
| these policy information terms indicate the policy under which the | be present, are not expected to change the definition of the policy. | |||
| certificate has been issued and the purposes for which the certifi- | ||||
| cate may be used. In a CA certificate, these policy information | In an end-entity certificate, these policy information terms indicate | |||
| terms limit the set of policies for certification paths which include | the policy under which the certificate has been issued and the pur- | |||
| When a CA does not wish to limit the set of policies for certifica- | poses for which the certificate may be used. In a CA certificate, | |||
| tion paths which include this certificate, they may assert the spe- | these policy information terms limit the set of policies for certifi- | |||
| cial policy anyPolicy. Optional qualifiers, which may be present, | cation paths which include this certificate. When a CA does not wish | |||
| are not expected to change the definition of the policy. | to limit the set of policies for certification paths which include | |||
| this certificate, they may assert the special policy anyPolicy, with | ||||
| a value of {2 5 29 32 0}. | ||||
| Applications with specific policy requirements are expected to have a | Applications with specific policy requirements are expected to have a | |||
| list of those policies which they will accept and to compare the pol- | list of those policies which they will accept and to compare the pol- | |||
| icy OIDs in the certificate to that list. If this extension is crit- | icy OIDs in the certificate to that list. If this extension is crit- | |||
| ical, the path validation software MUST be able to interpret this | ical, the path validation software MUST be able to interpret this | |||
| extension (including the optional qualifier), or MUST reject the cer- | extension (including the optional qualifier), or MUST reject the cer- | |||
| tificate. | tificate. | |||
| To promote interoperability, this profile RECOMMENDS that policy | To promote interoperability, this profile RECOMMENDS that policy | |||
| information terms consist of only an OID. Where an OID alone is | information terms consist of only an OID. Where an OID alone is | |||
| skipping to change at page 32, line 51 ¶ | skipping to change at page 33, line 12 ¶ | |||
| ia5String IA5String (SIZE (1..200)), | ia5String IA5String (SIZE (1..200)), | |||
| visibleString VisibleString (SIZE (1..200)), | visibleString VisibleString (SIZE (1..200)), | |||
| bmpString BMPString (SIZE (1..200)), | bmpString BMPString (SIZE (1..200)), | |||
| utf8String UTF8String (SIZE (1..200)) } | utf8String UTF8String (SIZE (1..200)) } | |||
| 4.2.1.6 Policy Mappings | 4.2.1.6 Policy Mappings | |||
| This extension is used in CA certificates. It lists one or more | This extension is used in CA certificates. It lists one or more | |||
| pairs of OIDs; each pair includes an issuerDomainPolicy and a sub- | pairs of OIDs; each pair includes an issuerDomainPolicy and a sub- | |||
| jectDomainPolicy. The pairing indicates the issuing CA considers its | jectDomainPolicy. The pairing indicates the issuing CA considers its | |||
| issuerDomainPolicy equivalent to the subject CA's | issuerDomainPolicy equivalent to the subject CA's subjectDomainPol- | |||
| subjectDomainPolicy. | icy. | |||
| The issuing CA's users may accept an issuerDomainPolicy for certain | The issuing CA's users may accept an issuerDomainPolicy for certain | |||
| applications. The policy mapping tells the issuing CA's users which | applications. The policy mapping tells the issuing CA's users which | |||
| policies associated with the subject CA are comparable to the policy | policies associated with the subject CA are comparable to the policy | |||
| they accept. | they accept. | |||
| Policies should not be mapped either to or from the special value | Policies should not be mapped either to or from the special value | |||
| anyPolicy. (see 4.2.1.5 certificate policies). | anyPolicy. (see 4.2.1.5 certificate policies). | |||
| This extension may be supported by CAs and/or applications, and it | This extension may be supported by CAs and/or applications, and it | |||
| skipping to change at page 33, line 34 ¶ | skipping to change at page 33, line 43 ¶ | |||
| The subject alternative names extension allows additional identities | The subject alternative names extension allows additional identities | |||
| to be bound to the subject of the certificate. Defined options | to be bound to the subject of the certificate. Defined options | |||
| include an Internet electronic mail address, a DNS name, an IP | include an Internet electronic mail address, a DNS name, an IP | |||
| address, and a uniform resource identifier (URI). Other options | address, and a uniform resource identifier (URI). Other options | |||
| exist, including completely local definitions. Multiple name forms, | exist, including completely local definitions. Multiple name forms, | |||
| and multiple instances of each name form, may be included. Whenever | and multiple instances of each name form, may be included. Whenever | |||
| such identities are to be bound into a certificate, the subject | such identities are to be bound into a certificate, the subject | |||
| alternative name (or issuer alternative name) extension MUST be used. | alternative name (or issuer alternative name) extension MUST be used. | |||
| Because the subject alternative name is considered to be defini- | Because the subject alternative name is considered to be definitively | |||
| tiviely bound to the public key, all parts of the subject alternative | bound to the public key, all parts of the subject alternative name | |||
| name MUST be verified by the CA. | MUST be verified by the CA. | |||
| Further, if the only subject identity included in the certificate is | Further, if the only subject identity included in the certificate is | |||
| an alternative name form (e.g., an electronic mail address), then the | an alternative name form (e.g., an electronic mail address), then the | |||
| subject distinguished name MUST be empty (an empty sequence), and the | subject distinguished name MUST be empty (an empty sequence), and the | |||
| subjectAltName extension MUST be present. If the subject field con- | subjectAltName extension MUST be present. If the subject field con- | |||
| tains an empty sequence, the subjectAltName extension MUST be marked | tains an empty sequence, the subjectAltName extension MUST be marked | |||
| critical. | critical. | |||
| When the subjectAltName extension contains an Internet mail address, | When the subjectAltName extension contains an Internet mail address, | |||
| the address MUST be included as an rfc822Name. The format of an | the address MUST be included as an rfc822Name. The format of an | |||
| skipping to change at page 34, line 41 ¶ | skipping to change at page 34, line 50 ¶ | |||
| specific-part must include a fully qualified domain name or IP | specific-part must include a fully qualified domain name or IP | |||
| address as the host. | address as the host. | |||
| As specified in [RFC 1738], the scheme name is not case-sensitive | As specified in [RFC 1738], the scheme name is not case-sensitive | |||
| (e.g., "http" is equivalent to "HTTP"). The host part is also not | (e.g., "http" is equivalent to "HTTP"). The host part is also not | |||
| case-sensitive, but other components of the scheme-specific-part may | case-sensitive, but other components of the scheme-specific-part may | |||
| be case-sensitive. When comparing URIs, conforming implementations | be case-sensitive. When comparing URIs, conforming implementations | |||
| MUST compare the scheme and host without regard to case, but assume | MUST compare the scheme and host without regard to case, but assume | |||
| the remainder of the scheme-specific-part is case sensitive. | the remainder of the scheme-specific-part is case sensitive. | |||
| The subjectAltName may carry additional name types through the use of | ||||
| the otherName field. For example, Kerberos [KRB] format names can be | ||||
| encoded into the otherName, using the krb5PrincipalName OID and the | ||||
| KerberosName syntax as defined in [PKINIT]. | ||||
| Subject alternative names may be constrained in the same manner as | Subject alternative names may be constrained in the same manner as | |||
| subject distinguished names using the name constraints extension as | subject distinguished names using the name constraints extension as | |||
| described in section 4.2.1.11. | described in section 4.2.1.11. | |||
| If the subjectAltName extension is present, the sequence MUST contain | If the subjectAltName extension is present, the sequence MUST contain | |||
| at least one entry. Unlike the subject field, conforming CAs MUST | at least one entry. Unlike the subject field, conforming CAs MUST | |||
| NOT issue certificates with subjectAltNames containing empty General- | NOT issue certificates with subjectAltNames containing empty General- | |||
| Name fields. For example, an rfc822Name is represented as an | Name fields. For example, an rfc822Name is represented as an | |||
| IA5String. While an empty string is a valid IA5String, such an | IA5String. While an empty string is a valid IA5String, such an | |||
| rfc822Name is not permitted by this profile. The behavior of clients | rfc822Name is not permitted by this profile. The behavior of clients | |||
| skipping to change at page 41, line 21 ¶ | skipping to change at page 41, line 30 ¶ | |||
| -- source. Key usage bits that may be consistent: digitalSignature, | -- source. Key usage bits that may be consistent: digitalSignature, | |||
| -- nonRepudiation | -- nonRepudiation | |||
| 4.2.1.14 CRL Distribution Points | 4.2.1.14 CRL Distribution Points | |||
| The CRL distribution points extension identifies how CRL information | The CRL distribution points extension identifies how CRL information | |||
| is obtained. The extension SHOULD be non-critical, but this profile | is obtained. The extension SHOULD be non-critical, but this profile | |||
| recommends support for this extension by CAs and applications. | recommends support for this extension by CAs and applications. | |||
| Further discussion of CRL management is contained in section 5. | Further discussion of CRL management is contained in section 5. | |||
| The cRLDistributionPoints extension is a SEQUENCE of Distribution- | ||||
| Point. A DistributionPoint consists of three fields, each of which | ||||
| is optional: the name of the DistributionPoint, ReasonsFlags, and the | ||||
| cRLIssuer. While each component is optional, a DistributionPoint | ||||
| MUST NOT consist of only the ReasonsFlags field. If the distribution- | ||||
| Point omits cRLIssuer, the CRL MUST be issued by the CA that issued | ||||
| the certificate. If the distributionPointName is absent, cRLIssuer | ||||
| MUST be present and include a Name corresponding to an X.500 or LDAP | ||||
| directory entry where the CRL is located. | ||||
| If the cRLDistributionPoints extension contains a Distribution- | If the cRLDistributionPoints extension contains a Distribution- | |||
| PointName of type URI, the following semantics MUST be assumed: the | PointName of type URI, the following semantics MUST be assumed: the | |||
| URI is a pointer to the current CRL for the associated reasons and | URI is a pointer to the current CRL for the associated reasons and | |||
| will be issued by the associated cRLIssuer. The expected values for | will be issued by the associated cRLIssuer. The expected values for | |||
| the URI are those defined in 4.2.1.7. Processing rules for other | the URI are those defined in 4.2.1.7. Processing rules for other | |||
| values are not defined by this specification. If the distribution- | values are not defined by this specification. If the distribution- | |||
| Point omits reasons, the CRL MUST include revocations for all rea- | Point omits reasons, the CRL MUST include revocations for all rea- | |||
| sons. If the distributionPoint omits cRLIssuer, the CRL MUST be | sons. | |||
| issued by the CA that issued the certificate. | ||||
| id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= { id-ce 31 } | id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= { id-ce 31 } | |||
| cRLDistributionPoints ::= { | CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint | |||
| CRLDistPointsSyntax } | ||||
| CRLDistPointsSyntax ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint | ||||
| DistributionPoint ::= SEQUENCE { | DistributionPoint ::= SEQUENCE { | |||
| distributionPoint [0] DistributionPointName OPTIONAL, | distributionPoint [0] DistributionPointName OPTIONAL, | |||
| reasons [1] ReasonFlags OPTIONAL, | reasons [1] ReasonFlags OPTIONAL, | |||
| cRLIssuer [2] GeneralNames OPTIONAL } | cRLIssuer [2] GeneralNames OPTIONAL } | |||
| DistributionPointName ::= CHOICE { | DistributionPointName ::= CHOICE { | |||
| fullName [0] GeneralNames, | fullName [0] GeneralNames, | |||
| nameRelativeToCRLIssuer [1] RelativeDistinguishedName } | nameRelativeToCRLIssuer [1] RelativeDistinguishedName } | |||
| ReasonFlags ::= BIT STRING { | ReasonFlags ::= BIT STRING { | |||
| unused (0), | unused (0), | |||
| keyCompromise (1), | keyCompromise (1), | |||
| cACompromise (2), | cACompromise (2), | |||
| affiliationChanged (3), | affiliationChanged (3), | |||
| superseded (4), | superseded (4), | |||
| cessationOfOperation (5), | cessationOfOperation (5), | |||
| certificateHold (6) } | certificateHold (6) } | |||
| 4.2.1.15 Inhibit Any-Policy | ||||
| The inhibit any-policy extension can be used in certificates issued | ||||
| to CAs. The inhibit any-policy indicates that the special any-policy | ||||
| OID, with the value {2 5 29 32 0}, is not considered an explicit | ||||
| match for other certificate policies. The value indicates the number | ||||
| of additional certificates that may appear in the path before any- | ||||
| policy is no longer permitted. For example, a value of one indicates | ||||
| that any-policy may be processed in certificates issued by the sub- | ||||
| ject of this certificate, but not in additional certificates in the | ||||
| path. | ||||
| This extension MUST be critical. | ||||
| id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= { id-ce 54 } | ||||
| InhibitAnyPolicy ::= SkipCerts | ||||
| SkipCerts ::= INTEGER (0..MAX) | ||||
| 4.2.1.16 Freshest CRL (a.k.a. Delta CRL Distribution Point) | ||||
| The freshest CRL extension identifies how delta-CRL information is | ||||
| obtained. The extension MUST be non-critical, but this profile | ||||
| recommends support for this extension by CAs and applications. | ||||
| Further discussion of CRL management is contained in section 5. | ||||
| The same syntax is used for this extension and the | ||||
| cRLDistributionPoints extension, and is described in section | ||||
| 4.2.1.14. The same conventions apply to both extensions. | ||||
| id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 } | ||||
| FreshestCRL ::= CRLDistributionPoints | ||||
| 4.2.2 Private Internet Extensions | 4.2.2 Private Internet Extensions | |||
| This section defines one new extension for use in the Internet Public | This section defines one new extension for use in the Internet Public | |||
| Key Infrastructure. This extension may be used to direct applica- | Key Infrastructure. This extension may be used to direct applica- | |||
| tions to identify an on-line validation service supporting the issu- | tions to identify an on-line validation service supporting the issu- | |||
| ing CA. As the information may be available in multiple forms, each | ing CA. As the information may be available in multiple forms, each | |||
| extension is a sequence of IA5String values, each of which represents | extension is a sequence of IA5String values, each of which represents | |||
| a URI. The URI implicitly specifies the location and format of the | a URI. The URI implicitly specifies the location and format of the | |||
| information and the method for obtaining the information. | information and the method for obtaining the information. | |||
| skipping to change at page 43, line 4 ¶ | skipping to change at page 44, line 8 ¶ | |||
| AuthorityInfoAccessSyntax ::= | AuthorityInfoAccessSyntax ::= | |||
| SEQUENCE SIZE (1..MAX) OF AccessDescription | SEQUENCE SIZE (1..MAX) OF AccessDescription | |||
| AccessDescription ::= SEQUENCE { | AccessDescription ::= SEQUENCE { | |||
| accessMethod OBJECT IDENTIFIER, | accessMethod OBJECT IDENTIFIER, | |||
| accessLocation GeneralName } | accessLocation GeneralName } | |||
| id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } | id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } | |||
| id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 } | id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 } | |||
| Each entry in the sequence AuthorityInfoAccessSyntax describes the | Each entry in the sequence AuthorityInfoAccessSyntax describes the | |||
| format and location of additional information provided by the CA who | format and location of additional information provided by the CA who | |||
| issued the certificate in which this extension appears. The type and | issued the certificate in which this extension appears. The type and | |||
| format of the information is specified by the accessMethod field; the | format of the information is specified by the accessMethod field; the | |||
| accessLocation field specifies the location of the information. The | accessLocation field specifies the location of the information. The | |||
| retrieval mechanism may be implied by the accessMethod or specified | retrieval mechanism may be implied by the accessMethod or specified | |||
| by accessLocation. | by accessLocation. | |||
| This profile defines one OID for accessMethod. The id-ad-caIssuers | <<add pointer to OCSP>> This profile defines one OID for | |||
| OID is used when the additional information lists CAs that have | accessMethod. The id-ad-caIssuers OID is used when the additional | |||
| issued certificates superior to the CA that issued the certificate | information lists CAs that have issued certificates superior to the | |||
| containing this extension. The referenced CA Issuers description is | CA that issued the certificate containing this extension. The refer- | |||
| intended to aid certificate users in the selection of a certification | enced CA Issuers description is intended to aid certificate users in | |||
| path that terminates at a point trusted by the certificate user. | the selection of a certification path that terminates at a point | |||
| trusted by the certificate user. | ||||
| When id-ad-caIssuers appears as accessInfoType, the accessLocation | When id-ad-caIssuers appears as accessInfoType, the accessLocation | |||
| field describes the referenced description server and the access pro- | field describes the referenced description server and the access pro- | |||
| tocol to obtain the referenced description. The accessLocation field | tocol to obtain the referenced description. The accessLocation field | |||
| is defined as a GeneralName, which can take several forms. Where the | is defined as a GeneralName, which can take several forms. Where the | |||
| information is available via http, ftp, or ldap, accessLocation MUST | information is available via http, ftp, or ldap, accessLocation MUST | |||
| be a uniformResourceIdentifier. Where the information is available | be a uniformResourceIdentifier. Where the information is available | |||
| via the directory access protocol (dap), accessLocation MUST be a | via the directory access protocol (dap), accessLocation MUST be a | |||
| directoryName. When the information is available via electronic mail, | directoryName. When the information is available via electronic mail, | |||
| accessLocation MUST be an rfc822Name. The semantics of other name | accessLocation MUST be an rfc822Name. The semantics of other name | |||
| skipping to change at page 44, line 47 ¶ | skipping to change at page 46, line 4 ¶ | |||
| revocationDate Time, | revocationDate Time, | |||
| crlEntryExtensions Extensions OPTIONAL | crlEntryExtensions Extensions OPTIONAL | |||
| -- if present, shall be v2 | -- if present, shall be v2 | |||
| } OPTIONAL, | } OPTIONAL, | |||
| crlExtensions [0] EXPLICIT Extensions OPTIONAL | crlExtensions [0] EXPLICIT Extensions OPTIONAL | |||
| -- if present, shall be v2 | -- if present, shall be v2 | |||
| } | } | |||
| -- Version, Time, CertificateSerialNumber, and Extensions | -- Version, Time, CertificateSerialNumber, and Extensions | |||
| -- are all defined in the ASN.1 in section 4.1 | -- are all defined in the ASN.1 in section 4.1 | |||
| -- AlgorithmIdentifier is defined in section 4.1.1.2 | -- AlgorithmIdentifier is defined in section 4.1.1.2 | |||
| The following items describe the use of the X.509 v2 CRL in the | The following items describe the use of the X.509 v2 CRL in the | |||
| Internet PKI. | Internet PKI. | |||
| 5.1.1 CertificateList Fields | 5.1.1 CertificateList Fields | |||
| The CertificateList is a SEQUENCE of three required fields. The | The CertificateList is a SEQUENCE of three required fields. The | |||
| fields are described in detail in the following subsections. | fields are described in detail in the following subsections. | |||
| 5.1.1.1 tbsCertList | 5.1.1.1 tbsCertList | |||
| The first field in the sequence is the tbsCertList. This field is | The first field in the sequence is the tbsCertList. This field is | |||
| itself a sequence containing the name of the issuer, issue date, | itself a sequence containing the name of the issuer, issue date, | |||
| issue date of the next list, the list of revoked certificates, and | issue date of the next list, the optional list of revoked certifi- | |||
| optional CRL extensions. Further, each entry on the revoked certifi- | cates, and optional CRL extensions. When there are no revoked certi- | |||
| cate list is defined by a sequence of user certificate serial number, | ficates, the revoked certificates list is absent. When one or more | |||
| revocation date, and optional CRL entry extensions. | certificates are revoked, each entry on the revoked certificate list | |||
| is defined by a sequence of user certificate serial number, revoca- | ||||
| tion date, and optional CRL entry extensions. | ||||
| 5.1.1.2 signatureAlgorithm | 5.1.1.2 signatureAlgorithm | |||
| The signatureAlgorithm field contains the algorithm identifier for | The signatureAlgorithm field contains the algorithm identifier for | |||
| the algorithm used by the CA to sign the CertificateList. The field | the algorithm used by the CA to sign the CertificateList. The field | |||
| is of type AlgorithmIdentifier, which is defined in section 4.1.1.2. | is of type AlgorithmIdentifier, which is defined in section 4.1.1.2. | |||
| Section 7.2 lists the supported algorithms for this specification. | Section 7.2 lists the supported algorithms for this specification. | |||
| Conforming CAs MUST use the algorithm identifiers presented in sec- | Conforming CAs MUST use the algorithm identifiers presented in sec- | |||
| tion 7.2 when signing with a supported signature algorithm. | tion 7.2 when signing with a supported signature algorithm. | |||
| skipping to change at page 47, line 23 ¶ | skipping to change at page 48, line 31 ¶ | |||
| profile that issue CRLs MUST encode nextUpdate as GeneralizedTime for | profile that issue CRLs MUST encode nextUpdate as GeneralizedTime for | |||
| dates in the year 2050 or later. | dates in the year 2050 or later. | |||
| Where encoded as UTCTime, nextUpdate MUST be specified and inter- | Where encoded as UTCTime, nextUpdate MUST be specified and inter- | |||
| preted as defined in section 4.1.2.5.1. Where encoded as General- | preted as defined in section 4.1.2.5.1. Where encoded as General- | |||
| izedTime, nextUpdate MUST be specified and interpreted as defined in | izedTime, nextUpdate MUST be specified and interpreted as defined in | |||
| section 4.1.2.5.2. | section 4.1.2.5.2. | |||
| 5.1.2.6 Revoked Certificates | 5.1.2.6 Revoked Certificates | |||
| Revoked certificates are listed. The revoked certificates are named | When there are no revoked certificates, the revoked certificates list | |||
| by their serial numbers. Certificates revoked by the CA are uniquely | is absent. Otherwise, revoked certificates are listed by their | |||
| identified by the certificate serial number. The date on which the | serial numbers. Certificates revoked by the CA are uniquely identi- | |||
| revocation occurred is specified. The time for revocationDate MUST | fied by the certificate serial number. The date on which the revoca- | |||
| be expressed as described in section 5.1.2.4. Additional information | tion occurred is specified. The time for revocationDate MUST be | |||
| may be supplied in CRL entry extensions; CRL entry extensions are | expressed as described in section 5.1.2.4. Additional information may | |||
| discussed in section 5.3. | be supplied in CRL entry extensions; CRL entry extensions are dis- | |||
| cussed in section 5.3. | ||||
| 5.1.2.7 Extensions | 5.1.2.7 Extensions | |||
| This field may only appear if the version is 2 (see sec. 5.1.2.1). | This field may only appear if the version is 2 (see sec. 5.1.2.1). | |||
| If present, this field is a SEQUENCE of one or more CRL extensions. | If present, this field is a SEQUENCE of one or more CRL extensions. | |||
| CRL extensions are discussed in section 5.2. | CRL extensions are discussed in section 5.2. | |||
| 5.2 CRL Extensions | 5.2 CRL Extensions | |||
| The extensions defined by ANSI X9 and ISO/IEC/ITU for X.509 v2 CRLs | The extensions defined by ANSI X9 and ISO/IEC/ITU for X.509 v2 CRLs | |||
| skipping to change at page 49, line 8 ¶ | skipping to change at page 50, line 13 ¶ | |||
| supersedes another CRL. CAs conforming to this profile MUST include | supersedes another CRL. CAs conforming to this profile MUST include | |||
| this extension in all CRLs. | this extension in all CRLs. | |||
| id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 } | id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 } | |||
| cRLNumber ::= INTEGER (0..MAX) | cRLNumber ::= INTEGER (0..MAX) | |||
| 5.2.4 Delta CRL Indicator | 5.2.4 Delta CRL Indicator | |||
| The delta CRL indicator is a critical CRL extension that identifies a | The delta CRL indicator is a critical CRL extension that identifies a | |||
| delta-CRL. The use of delta-CRLs can significantly improve process- | CRL as being a delta CRL. Delta CRLs contain updates to revocation | |||
| ing time for applications which store revocation information in a | information previously distributed, rather than all the information | |||
| format other than the CRL structure. This allows changes to be added | that would appear in a complete CRL. The use of delta CRLs can sig- | |||
| to the local database while ignoring unchanged information that is | nificantly reduce network load and processing time in some environ- | |||
| already in the local database. | ments. Delta CRLs are generally smaller than the CRLs they update, | |||
| so applications that obtain delta CRLs consume less network bandwidth | ||||
| than applications that obtain the corresponding complete CRLs. | ||||
| Applications which store revocation information in a format other | ||||
| than the CRL structure can add new revocation information to the | ||||
| local database without reprocessing information. | ||||
| When a delta-CRL is issued, the CAs MUST also issue a complete CRL. | The delta CRL indicator extension contains a single value of type | |||
| BaseCRLNumber. This value identifies the CRL number of the base CRL | ||||
| that was used as the foundation in the generation of this delta CRL. | ||||
| The referenced base CRL is a CRL that was explicitly issued as a CRL | ||||
| that is complete for a given scope (e.g., a set of revocation reasons | ||||
| or a particular distribution point.) The CRL containing the delta CRL | ||||
| indicator extension contains all updates to the certificate revoca- | ||||
| tion status for that same scope. The combination of a CRL containing | ||||
| the delta CRL indicator extension plus the CRL referenced in the | ||||
| BaseCRLNumber component of this extension is equivalent to a full | ||||
| CRL, for the applicable scope, at the time of publication of the | ||||
| delta CRL. | ||||
| The value of BaseCRLNumber identifies the CRL number of the base CRL | When a conforming CA issues a delta CRL, the CA MUST also issue a CRL | |||
| that was used as the starting point in the generation of this delta- | that is complete for the given scope. The CRL number extension in | |||
| CRL. The delta-CRL contains the changes between the base CRL and the | the delta CRL and the complete CRL MUST contain the same value. When | |||
| current CRL issued along with the delta-CRL. It is the decision of a | a delta CRL is issued, it MUST cover the same set of reasons and same | |||
| CA as to whether to provide delta-CRLs. Again, a delta-CRL MUST NOT | set of certificates that were covered by the base CRL it references. | |||
| be issued without a corresponding complete CRL. The value of | ||||
| CRLNumber for both the delta-CRL and the corresponding complete CRL | ||||
| MUST be identical. | ||||
| A CRL user constructing a locally held CRL from delta-CRLs MUST con- | An application can construct a CRL that is complete for a given | |||
| sider the constructed CRL incomplete and unusable if the CRLNumber of | scope, at the current time, in either of the following ways: | |||
| the received delta-CRL is more than one greater than the CRLnumber of | (a) by retrieving the current delta CRL for that scope, and com- | |||
| the delta-CRL last processed. | bining it with an issued CRL that is complete for that scope and | |||
| that has a cRLNumber greater than or equal to the cRLNumber of the | ||||
| base CRL referenced in the delta CRL; or | ||||
| (b) by retrieving the current delta CRL for that scope and combin- | ||||
| ing it with a locally constructed CRL whose cRLNumber is greater | ||||
| than or equal to the cRLNumber of the base CRL referenced in the | ||||
| current delta CRL. | ||||
| The constructed CRL has the CRL number specified in the CRL number | ||||
| extension found in the delta CRL used in its construction. | ||||
| CAs must ensure that application of a delta CRL to the referenced | ||||
| base revocation information accurately reflects the current status of | ||||
| revocation. If a CA supports the certificateHold revocation reason | ||||
| the following rules must be applied when generating delta CRLs: | ||||
| (a) If a certificate was listed as revoked with revocation reason | ||||
| certificateHold on a CRL (either a delta CRL or a CRL that is com- | ||||
| plete for a given scope), whose cRLNumber is n, and the hold is | ||||
| subsequently released, the certificate must be included in all | ||||
| delta CRLs issued after the hold is released where the cRLNumber | ||||
| of the referenced base CRL is less than or equal to n. The certi- | ||||
| ficate must be listed with revocation reason removeFromCRL unless | ||||
| the certificate is subsequently revoked again for one of the revo- | ||||
| cation reasons covered by the delta CRL, in which case the certi- | ||||
| ficate must be listed with the revocation reason appropriate for | ||||
| the subsequent revocation. | ||||
| (b) If the certificate was not removed from hold, but was per- | ||||
| manently revoked, then it must be listed on all subsequent delta | ||||
| CRLs where the cRLNumber of the referenced base CRL is less than | ||||
| the cRLNumber of the CRL (either a delta CRL or a CRL that is com- | ||||
| plete for the given scope) on which the permanent revocation | ||||
| notice first appeared. | ||||
| id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 } | id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 } | |||
| deltaCRLIndicator ::= BaseCRLNumber | deltaCRLIndicator EXTENSION ::= { | |||
| SYNTAX BaseCRLNumber | ||||
| IDENTIFIED BY id-ce-deltaCRLIndicator } | ||||
| BaseCRLNumber ::= CRLNumber | BaseCRLNumber ::= CRLNumber | |||
| 5.2.5 Issuing Distribution Point | 5.2.5 Issuing Distribution Point | |||
| The issuing distribution point is a critical CRL extension that iden- | The issuing distribution point is a critical CRL extension that iden- | |||
| tifies the CRL distribution point for a particular CRL, and it indi- | tifies the CRL distribution point for a particular CRL, and it indi- | |||
| cates whether the CRL covers revocation for end entity certificates | cates whether the CRL covers revocation for end entity certificates | |||
| only, CA certificates only, or a limitied set of reason codes. | only, CA certificates only, or a limited set of reason codes. | |||
| Although the extension is critical, conforming implementations are | Although the extension is critical, conforming implementations are | |||
| not required to support this extension. | not required to support this extension. | |||
| The CRL is signed using the CA's private key. CRL Distribution | The CRL is signed using the CA's private key. CRL Distribution | |||
| Points do not have their own key pairs. If the CRL is stored in the | Points do not have their own key pairs. If the CRL is stored in the | |||
| X.500 Directory, it is stored in the Directory entry corresponding to | X.500 Directory, it is stored in the Directory entry corresponding to | |||
| the CRL distribution point, which may be different than the Directory | the CRL distribution point, which may be different than the Directory | |||
| entry of the CA. | entry of the CA. | |||
| The reason codes associated with a distribution point shall be speci- | The reason codes associated with a distribution point shall be speci- | |||
| fied in onlySomeReasons. If onlySomeReasons does not appear, the | fied in onlySomeReasons. If onlySomeReasons does not appear, the dis- | |||
| distribution point shall contain revocations for all reason codes. | tribution point shall contain revocations for all reason codes. CAs | |||
| CAs may use CRL distribution points to partition the CRL on the basis | may use CRL distribution points to partition the CRL on the basis of | |||
| of compromise and routine revocation. In this case, the revocations | compromise and routine revocation. In this case, the revocations | |||
| with reason code keyCompromise (1) and cACompromise (2) appear in one | with reason code keyCompromise (1) and cACompromise (2) appear in one | |||
| distribution point, and the revocations with other reason codes | distribution point, and the revocations with other reason codes | |||
| appear in another distribution point. | appear in another distribution point. | |||
| Where the issuingDistributionPoint extension contains a URL, the fol- | Where the issuingDistributionPoint extension contains a URL, the fol- | |||
| lowing semantics MUST be assumed: the object is a pointer to the most | lowing semantics MUST be assumed: the object is a pointer to the most | |||
| current CRL issued by this CA. The URI schemes ftp, http, mailto | current CRL issued by this CA. The URI schemes ftp, http, mailto | |||
| [RFC1738] and ldap [RFC1778] are defined for this purpose. The URI | [RFC1738] and ldap [RFC1778] are defined for this purpose. The URI | |||
| MUST be an absolute, not relative, pathname and MUST specify the | MUST be an absolute, not relative, pathname and MUST specify the | |||
| host. | host. | |||
| skipping to change at page 59, line 36 ¶ | skipping to change at page 61, line 36 ¶ | |||
| must satisfy each of the following: | must satisfy each of the following: | |||
| (1) The certificate was signed with the | (1) The certificate was signed with the | |||
| working_public_key_algorithm using the working_public_key and | working_public_key_algorithm using the working_public_key and | |||
| the working_public_key_parameters. | the working_public_key_parameters. | |||
| (2) The certificate validity period includes time T. | (2) The certificate validity period includes time T. | |||
| (3) At time T, the certificate is not revoked and is not on | (3) At time T, the certificate is not revoked and is not on | |||
| hold status. This may be determined by obtaining the appropri- | hold status. This may be determined by obtaining the appropri- | |||
| ate CRL (see section 6.4), status information, or by out-of- | ate CRL (see section 6.3), status information, or by out-of- | |||
| band mechanisms. | band mechanisms. | |||
| (4) The certificate issuer name is the working_issuer_name. | (4) The certificate issuer name is the working_issuer_name. | |||
| (5) The certificate issuer unique identifier is the | (5) The certificate issuer unique identifier is the | |||
| working_issuer_UID, meaning: | working_issuer_UID, meaning: | |||
| (i) working_issuer_UID is non-null and matches the value in | (i) working_issuer_UID is non-null and matches the value in | |||
| the issuerUID field, or | the issuerUID field, or | |||
| (ii) working_issuer_UID is null and the issuerUID field is | (ii) working_issuer_UID is null and the issuerUID field is | |||
| not present. | not present. | |||
| skipping to change at page 65, line 37 ¶ | skipping to change at page 67, line 37 ¶ | |||
| (c) Assign the certificate subject name to working_issuer_name. | (c) Assign the certificate subject name to working_issuer_name. | |||
| (d) Assign the certificate subjectPublicKey to working_public_key. | (d) Assign the certificate subjectPublicKey to working_public_key. | |||
| (e) If the subjectPublicKeyInfo field of the certificate contains | (e) If the subjectPublicKeyInfo field of the certificate contains | |||
| an algorithm field with non-null parameters, assign the parameters | an algorithm field with non-null parameters, assign the parameters | |||
| to the working_public_key_parameters variable. | to the working_public_key_parameters variable. | |||
| If the subjectPublicKeyInfo field of the certificate contains an | If the subjectPublicKeyInfo field of the certificate contains an | |||
| algorithm field with null parameters, compare the certificate sub- | algorithm field with null parameters or parameters are omitted, | |||
| jectPublicKey algorithm to the working_public_key_algorithm. If | compare the certificate subjectPublicKey algorithm to the | |||
| the certificate subjectPublicKey algorithm and the | working_public_key_algorithm. If the certificate subjectPublicKey | |||
| working_public_key_algorithm are different, set the | algorithm and the working_public_key_algorithm are different, set | |||
| working_public_key_parameters to null. | the working_public_key_parameters to null. | |||
| (f) Assign the certificate subjectPublicKey algorithm to the | (f) Assign the certificate subjectPublicKey algorithm to the | |||
| working_public_key_algorithm variable. | working_public_key_algorithm variable. | |||
| (g) If a name constraints extension is included in the certifi- | (g) If a name constraints extension is included in the certifi- | |||
| cate, modify the permitted_subtrees and excluded_subtrees state | cate, modify the permitted_subtrees and excluded_subtrees state | |||
| variables as follows: | variables as follows: | |||
| (1) If permittedSubtrees is present in the certificate, set the | (1) If permittedSubtrees is present in the certificate, set the | |||
| permitted_subtrees state variable to the intersection of its | permitted_subtrees state variable to the intersection of its | |||
| skipping to change at page 67, line 33 ¶ | skipping to change at page 69, line 33 ¶ | |||
| (b) If a policy constraints extension is included in the certifi- | (b) If a policy constraints extension is included in the certifi- | |||
| cate and requireExplicitPolicy is present and has a value of 0, | cate and requireExplicitPolicy is present and has a value of 0, | |||
| set the explicit_policy state variable to 0. | set the explicit_policy state variable to 0. | |||
| (c) Assign the certificate subjectPublicKey to working_public_key. | (c) Assign the certificate subjectPublicKey to working_public_key. | |||
| (d) If the subjectPublicKeyInfo field of the certificate contains | (d) If the subjectPublicKeyInfo field of the certificate contains | |||
| an algorithm field with non-null parameters, assign the parameters | an algorithm field with non-null parameters, assign the parameters | |||
| to the working_public_key_parameters variable. | to the working_public_key_parameters variable. | |||
| If the subjectPublicKeyInfo field of the certificate contains an | ||||
| algorithm field with null parameters or parameters are omitted, | ||||
| compare the certificate subjectPublicKey algorithm to the | ||||
| working_public_key_algorithm. If the certificate subjectPublicKey | ||||
| algorithm and the working_public_key_algorithm are different, set | ||||
| the working_public_key_parameters to null. | ||||
| (e) Assign the certificate subjectPublicKey algorithm to the | (e) Assign the certificate subjectPublicKey algorithm to the | |||
| working_public_key_algorithm variable. | working_public_key_algorithm variable. | |||
| (f) Recognize and process any other critical extension present in | (f) Recognize and process any other critical extension present in | |||
| the certificate n. | the certificate n. | |||
| (g) Calculate the intersection of the valid_policy_tree and the | (g) Calculate the intersection of the valid_policy_tree and the | |||
| user_initial_policy_set, as follows: | user_initial_policy_set, as follows: | |||
| (i) If the valid_policy_tree is NULL, the intersection is NULL. | (i) If the valid_policy_tree is NULL, the intersection is NULL. | |||
| skipping to change at page 69, line 10 ¶ | skipping to change at page 71, line 17 ¶ | |||
| position in the certification path where the PCA is expected. At the | position in the certification path where the PCA is expected. At the | |||
| nominated PCA position, the CA name is compared against this list. | nominated PCA position, the CA name is compared against this list. | |||
| If a recognized PCA name is found, then a constraint of Subordina- | If a recognized PCA name is found, then a constraint of Subordina- | |||
| teToCA is implicitly assumed for the remainder of the certification | teToCA is implicitly assumed for the remainder of the certification | |||
| path and processing continues. If no valid PCA name is found, and if | path and processing continues. If no valid PCA name is found, and if | |||
| the certification path cannot be validated on the basis of identified | the certification path cannot be validated on the basis of identified | |||
| policies, then the certification path is considered invalid. | policies, then the certification path is considered invalid. | |||
| 6.3 CRL Validation | 6.3 CRL Validation | |||
| This section augments section 6.1, Basic Path Validation. In that | This section describes the steps necessary to determine if a certifi- | |||
| section 6.1.3, Basic Certificate Processing, each certificate i must | cate is revoked or on hold status when CRLs are the revocation | |||
| satisfy the condition (a), (3): "At time T, the certificate is not | mechanism used by the certificate issuer. Conforming implementations | |||
| revoked and is not on hold status." Section 6.1 is independent of | of this specification are not required to implement this algorithm, | |||
| the mechanism(s) used to verify certificate status. This section | but MUST be functionally equivalent to the external behavior result- | |||
| describes the inputs, state variables, and processing steps required | ing from this procedure. Any algorithm may be used by a particular | |||
| to perform 6.1 using CRLs. | implementation so long as it derives the correct result. | |||
| The section is organized in parallel with section 6.1. Section 6.3.1 | This algorithm defines a set of inputs, a set of state variables, and | |||
| supplements section 6.1.1, and so on. There are no sections 6.3.5 or | processing steps that are performed for each certificate in the path. | |||
| 6.3.6; this section does not modify the wrap-up procedure or output | ||||
| procedure of path validation. | ||||
| 6.3.1 Revocation Inputs | 6.3.1 Revocation Inputs | |||
| To support revocation processing, the algorithm requires the intro- | To support revocation processing, the algorithm requires two inputs: | |||
| duction of three additional state variables: | ||||
| (h) which-reasons: This input contains the set of reasons for | (a) certificate: the algorithm requires the certificate serial | |||
| revocation that are of interest, or the special value "any- | number and issuer name to determine if a certificate is on a par- | |||
| reason." The legal members of the set are the possible values for | ticular CRL. The basicConstraints extension is used to determine | |||
| reasonflags: keyCompromise; caCompromise; affiliationChanged; | whether the supplied certificate is associated with a CA or an | |||
| superseded; cessationOfOperation; and certificateHold. | end-entity. If present, the algorithm may use the cRLDistribu- | |||
| tionsPoint and freshestCRL extensions to determine revocation | ||||
| status. | ||||
| (i) required-freshness: This input defines the oldest acceptable | (b) use-deltas: This boolean input determines if the delta needs | |||
| revocation data. This input is a relative time, or the special | to be checked if the CRL is still valid | |||
| value "best available". | ||||
| (j) current-time: This input specifies the current date and time. | Note that implementations supporting legacy PKIs, such as RFC 1422 | |||
| and X.509 version 1, will need an additional input indicating | ||||
| whether the supplied certificate is associated with a CA or an | ||||
| end-entity. | ||||
| 6.3.2 Initialization and Revocation State Variables | 6.3.2 Initialization and Revocation State Variables | |||
| To support CRL processing, the algorithm requires five new state | To support CRL processing, the algorithm requires the following state | |||
| variables: | variables: | |||
| (m) CRL_sign_flag: This flag indicates that the previous certifi- | (a) reasons_mask: This variable contains the set of revocation | |||
| cate in the path can be used to validate the signature on a CRL. | reasons supported by the CRLs and delta CRLs processed so far. The | |||
| (This is true if the certificate was a CA certificate and either | legal members of the set are the possible values for reasonflags: | |||
| (a) the keyUsage extension did not appear or (b) the key usage | unspecified; keyCompromise; caCompromise; affiliationChanged; | |||
| extension asserted the cRLSign bit.) The initial value of this | superseded; cessationOfOperation; and certificateHold. The spe- | |||
| variable is TRUE. | cial value "all-reasons" is used to denote the set of all legal | |||
| members. This variable is initialized to the empty set. | ||||
| (n) possible_CRLs: This variable contains the set of prospective | (b) cert_status: This variable contains the status of the certifi- | |||
| CRLs that may be useful for verifying the status of this certifi- | cate. Legal values are unspecified; keyCompromise; caCompromise; | |||
| cate. | affiliationChanged; superseded; cessationOfOperation; and certifi- | |||
| cateHold, the special value "UNREVOKED", or the special value | ||||
| "UNDETERMINED". This variable is initialized to the special value | ||||
| "UNREVOKED". | ||||
| (o) approved_CRLs: This variable contains the set of CRLs that may | (c) interim_reasons_mask: This contains the set of revocation rea- | |||
| be used to verify the status of this certificate. The initial | sons supported by the CRL or delta CRL currently being processed. | |||
| value for this variable is "empty." | ||||
| (p) oldest_CRL: This constant specifies the earliest acceptable | Note: In some environments, it is not necessary to check all reason | |||
| issue date for a CRL. It is set to the value current-time minus | codes. For example, some envornments only are concerned with | |||
| required-freshness. If required_freshness is "best_available", | caCompromise and keyCompromise for CA certificates. This algorithnm | |||
| oldest_CRL is set to the issue date of certificate i. | checks all reason codes. Additional processing and state variables | |||
| may be necessary to limit the checking to a subset of the reason | ||||
| codes. | ||||
| (q) approved_reasons: This variable contains the set of revocation | 6.3.3 CRL Processing | |||
| reasons supported by the approved_CRLs. This variable is initial- | ||||
| ized to the empty set. | ||||
| 6.3.3 Basic Certificate Processing | This algorithm begins by assuming the certificate is not revoked. | |||
| The algorithm checks one or more CRLs until either the certificate | ||||
| status is determined to be revoked or sufficent CRLs have been | ||||
| checked to cover all reason codes. | ||||
| This algorithm attempts to satisfy the requirements using CRLs that | For each distribution point (DP) in the crl distribution points | |||
| can be validated using certificate i-1. Such CRLs are most efficient | extension while ((reasons_mask is not "all-reasons") and (cert_status | |||
| to process, since no additional certification paths need be pro- | is UNREVOKED)) | |||
| cessed. If this cannot be achieved, other CRLs issued by the | ||||
| working_issuer_name and indirect CRLs are added. In both cases, | ||||
| additional certification paths must be constructed and validated. | ||||
| In the second step, this algorithm determines if the certificate | (1) locate the corresponding CRL in CRL cache, and perform the | |||
| should be accepted or rejected. | following verifications: | |||
| Step 1. | (a) compute the interim_reasons_mask for this CRL as follows: | |||
| (a) For each CRL in possible_CRLs, verify that the issuer name is | 1. if the CRL includes reasons and the DP includes reasons, | |||
| the working_issuer_name or that certificate i contains a distribu- | then set interim_reasons_mask to the intersection of of rea- | |||
| tion points extension and the issuer name is specified a cRLIssuer | sons in the DP and reasons in CRL reasons extension. | |||
| field. | ||||
| (b) For each CRL X in possible_CRLs, perform the following steps: | 2. if the CRL includes reasons but the DP omits reasons, | |||
| then set interim_reasons_mask to the value of CRL reasons. | ||||
| (1) Verify that the value of the thisUpdate field is equal to | 3. if the CRL omits reasons but the DP includes reasons, | |||
| or after oldest_CRL. (2) If the required_freshness is "best | then set interim_reasons_mask to the value of DP reasons. | |||
| available", verify that the value of the nextUpdate field is | ||||
| after current-time. | ||||
| (3) If the CRL includes an issuing distribution point exten- | 4. if the CRL omits reasons and the DP omits reasons, then | |||
| sion, and the onlySomeReasons field is present, verify that the | set interim_reasons_mask to the special value "all-reasons". | |||
| intersection of onlySomeReasons and which-reasons is not empty. | ||||
| (4) If the CRL includes an issuing distribution point | Verify that interim_reasons_mask includes one or more reasons | |||
| extension, and the onlyContainsUserCerts is asserted, verify | that is not included in the reasons_mask. | |||
| that certificate i is not a CA certificate. | ||||
| (5) If the CRL includes an issuing distribution point exten- | (b) Verify the issuer of the CRL as follows: | |||
| sion, and the onlyContainsCACerts is asserted, verify that cer- | ||||
| tificate i is a CA certificate. | ||||
| If any of the checks (1), (2), (3), (4) or (5) fail, delete CRL X | if the DP includes cRLIssuer, then verify that the CRL | |||
| from possible_CRLs. | issuer matches cRLIssuer else verify that the CRL issuer | |||
| matches the certificate issuer. | ||||
| (b) If CRL_sign_flag is TRUE, repeat the following steps until | (c) obtain and validate the certification path for the CRL | |||
| approved the approved_reasons = "all reasons" or approved_reasons | issuer. | |||
| is a superset of which_reasons or possible_CRLs is exhausted: | ||||
| (1) For each CRL X in possible_CRLs that was issued by the | (d) validate the signature on the CRL. | |||
| working_issuer_name and signed with the | ||||
| working_public_key_algorithm using the working_public_key and | ||||
| working_public_key_parameters: | ||||
| (i) Delete CRL X from possible_CRLs and add it to | (2) If each of the verifications (a) through (d) succeeds, then | |||
| approved_CRLs. | perform the following steps: | |||
| (ii) If CRL X did not include an issuing distribution point | (a) If the value of next update field is before the current- | |||
| extension, or the onlySomeReasons field was not present in | time, otain an appropriate delta CRL or discard the CRL. | |||
| that extension, set approved_reasons to "all_reasons." If | ||||
| CRL X includes an issuing distribution point extension, and | ||||
| the onlySomeReasons field is present, assign | ||||
| approved_reasons the intersection of approved reasons and | ||||
| the onlySomeReasons field. | ||||
| If approved_reasons is "all reasons", or is a superset of | (b) If the user wants freshest available info AND the freshest | |||
| which-reasons, go to step 2. | CRL extension is present, check for a corresponding delta for | |||
| this base. | ||||
| (c) For each CRL X in possible_CRLs: | (c) If a delta was obtained in (a) or (b), verify that the | |||
| delta CRL addresses the same set of certificates and the same | ||||
| set of reasons as the CRL. | ||||
| (1) If CRL X is valid for all reasons, or the intersection of | (d) Perform the checks in step 1 (b) and (c): | |||
| onlySomeReasons and which-reasons is not a subset of | ||||
| approved_reasons and you can construct and validate a certifi- | ||||
| cation path where cRLSigning is assserted in certificate n-1 or | ||||
| the key usage extension is omitted from certificate n-1. These | ||||
| paths may use certificate i-1 to specify the trust anchor. | ||||
| (The path from the normal trust anchor through certificate i-1 | ||||
| has already been validated at this stage in the algorithm in | ||||
| Section 6.1) | ||||
| (i) Add CRL X to approved_CRLs. | 1. obtain and validate the certification path for the delta | |||
| issuer | ||||
| (ii) If CRL X did not include an issuing distribution point | 2. validate the signature on the delta CRL | |||
| extension, or the onlySomeReasons field was not present in | ||||
| that extension, set approved_reasons to "all_reasons." If | ||||
| CRL X includes an issuing distribution point extension, and | ||||
| the onlySomeReasons field is present, assign | ||||
| approved_reasons the intersection of approved reasons and | ||||
| the onlySomeReasons field. | ||||
| If approved_reasons is "all reasons", or is a superset of | (e) If a delta CRL was obtained in (a) or (b), and the | |||
| which-reasons, go to step 2. | verifications (c) and (d) suceeded, combine the base and | |||
| delta to form a complete CRL. | ||||
| (2) If such a path cannot be constructed or it doesn't add | (3) If steps and (1) and (2) succeed, then set reasons_mask to the | |||
| value, delete it from the possible_CRLs. | union of reasons_mask and interim_reasons_mask | |||
| (4) Search for the certificate on the CRL | ||||
| (d) If approved_reasons is still not a superset of which-reasons, | (a) search for the serial number on the CRL | |||
| reject the certificate due to insufficient information. | ||||
| Step 2. | (b) if (a) succeeds, verify that (1) the CRL entry extension | |||
| Certificate issuer is not present or (2) the issuer identified | ||||
| in the CRL entry extension Certificate issuer is the issuer of | ||||
| the certificate. | ||||
| Determine if certificate i is on any of the CRLs. If the certifi- | (c) if (a) and (b) succeeded, set the cert_status variable as | |||
| cate is listed as certificatehold on one CRL and revoked on | appropriate: | |||
| another, ignore the certificatehold. If the reasonCode is in | ||||
| which-reasons, the certificate must be rejected. If the certifi- | ||||
| cate is not on any of the CRLs, or the reasonCode is not in | ||||
| which-reasons, the certificate is accepted. | ||||
| 6.3.4 Preparation for Certificate i+1 | 1. if the reasons extension is present, set the cert_status | |||
| variable to the value of the reasons extension | ||||
| Add the following four steps to the steps in section 6.1.X: | 2. if the reasons extension is not present, set the | |||
| cert_status variable to the special value "not specified" | ||||
| (p) If certificate i does not include the key usage extenion, or | if ((reasons_mask is "all-reasons") OR (if cert_status is not | |||
| the key usage extension asserts the value cRLSigning, set | UNREVOKED) return cert_status | |||
| CRL_sign_flag to TRUE, otherwise set CRL_sign_flag to FALSE. | ||||
| (q) Set possible_CRLs to the empty set. | If all CRLs named in the crl distribution points extension have | |||
| been exhausted, and the reasons_mask is not "all-reasons" and the | ||||
| cert_status is still UNREVOKED, the verifier must obtain addi- | ||||
| tional CRLs. If the | ||||
| (r) Set approved_CRLs to the empty set. | The verifier must repeat the process above with the additional | |||
| CRLs not specified in a distribution point. | ||||
| (s) Set approved_reasons to the empty set. | If all CRLs are exhausted and the reasons_mask is not "all rea- | |||
| sons" return the cert_status UNDETERMINED. | ||||
| 7 Algorithm Support | 7 Algorithm Support | |||
| This section describes cryptographic algorithms which may be used | This section describes cryptographic algorithms which may be used | |||
| with this profile. The section describes one-way hash functions and | with this profile. The section describes one-way hash functions and | |||
| digital signature algorithms which may be used to sign certificates | digital signature algorithms which may be used to sign certificates | |||
| and CRLs, and identifies OIDs for public keys contained in a certifi- | and CRLs, and identifies OIDs for public keys contained in a certifi- | |||
| cate. | cate. | |||
| Conforming CAs and applications are not required to support the | Conforming CAs and applications are not required to support the algo- | |||
| algorithms or algorithm identifiers described in this section. How- | rithms or algorithm identifiers described in this section. However, | |||
| ever, conforming CAs and applications that use the algorithms identi- | conforming CAs and applications that use the algorithms identified | |||
| fied here MUST support them as specified. | here MUST support them as specified. | |||
| 7.1 One-way Hash Functions | 7.1 One-way Hash Functions | |||
| This section identifies one-way hash functions for use in the Inter- | This section identifies one-way hash functions for use in the Inter- | |||
| net PKI. One-way hash functions are also called message digest algo- | net PKI. One-way hash functions are also called message digest algo- | |||
| rithms. SHA-1 is the preferred one-way hash function for the Internet | rithms. SHA-1 is the preferred one-way hash function for the Internet | |||
| PKI. However, PEM uses MD2 for certificates [RFC 1422] [RFC 1423] | PKI. However, PEM uses MD2 for certificates [RFC 1422] [RFC 1423] | |||
| and MD5 is used in other legacy applications. For this reason, MD2 | and MD5 is used in other legacy applications. For this reason, MD2 | |||
| and MD5 are included in this profile. | and MD5 are included in this profile. | |||
| skipping to change at page 76, line 10 ¶ | skipping to change at page 77, line 51 ¶ | |||
| id-dsa-with-sha1 ID ::= { | id-dsa-with-sha1 ID ::= { | |||
| iso(1) member-body(2) us(840) x9-57 (10040) | iso(1) member-body(2) us(840) x9-57 (10040) | |||
| x9cm(4) 3 } | x9cm(4) 3 } | |||
| Where the id-dsa-with-sha1 algorithm identifier appears as the algo- | Where the id-dsa-with-sha1 algorithm identifier appears as the algo- | |||
| rithm field in an AlgorithmIdentifier, the encoding shall omit the | rithm field in an AlgorithmIdentifier, the encoding shall omit the | |||
| parameters field. That is, the AlgorithmIdentifier shall be a | parameters field. That is, the AlgorithmIdentifier shall be a | |||
| SEQUENCE of one component - the OBJECT IDENTIFIER id-dsa-with-sha1. | SEQUENCE of one component - the OBJECT IDENTIFIER id-dsa-with-sha1. | |||
| The DSA parameters in the subjectPublicKeyInfo field of the certifi- | The DSA parameters in the subjectPublicKeyInfo field of the | |||
| cate of the issuer shall apply to the verification of the signature. | certificate of the issuer shall apply to the verification of the sig- | |||
| nature. | ||||
| When signing, the DSA algorithm generates two values. These values | When signing, the DSA algorithm generates two values. These values | |||
| are commonly referred to as r and s. To easily transfer these two | are commonly referred to as r and s. To easily transfer these two | |||
| values as one signature, they shall be ASN.1 encoded using the fol- | values as one signature, they shall be ASN.1 encoded using the fol- | |||
| lowing ASN.1 structure: | lowing ASN.1 structure: | |||
| Dss-Sig-Value ::= SEQUENCE { | Dss-Sig-Value ::= SEQUENCE { | |||
| r INTEGER, | r INTEGER, | |||
| s INTEGER } | s INTEGER } | |||
| skipping to change at page 78, line 52 ¶ | skipping to change at page 80, line 46 ¶ | |||
| id-dsa ID ::= { iso(1) member-body(2) us(840) x9-57(10040) | id-dsa ID ::= { iso(1) member-body(2) us(840) x9-57(10040) | |||
| x9cm(4) 1 } | x9cm(4) 1 } | |||
| The id-dsa algorithm syntax includes optional parameters. These | The id-dsa algorithm syntax includes optional parameters. These | |||
| parameters are commonly referred to as p, q, and g. When omitted, | parameters are commonly referred to as p, q, and g. When omitted, | |||
| the parameters component shall be omitted entirely. That is, the | the parameters component shall be omitted entirely. That is, the | |||
| AlgorithmIdentifier shall be a SEQUENCE of one component - the OBJECT | AlgorithmIdentifier shall be a SEQUENCE of one component - the OBJECT | |||
| IDENTIFIER id-dsa. | IDENTIFIER id-dsa. | |||
| If the DSA algorithm parameters are present in the | If the DSA algorithm parameters are present in the subjectPublicKey- | |||
| subjectPublicKeyInfo AlgorithmIdentifier, the parameters are included | Info AlgorithmIdentifier, the parameters are included using the fol- | |||
| using the following ASN.1 structure: | lowing ASN.1 structure: | |||
| Dss-Parms ::= SEQUENCE { | Dss-Parms ::= SEQUENCE { | |||
| p INTEGER, | p INTEGER, | |||
| q INTEGER, | q INTEGER, | |||
| g INTEGER } | g INTEGER } | |||
| If the DSA algorithm parameters are absent from the subjectPublicKey- | If the DSA algorithm parameters are absent from the subjectPublicKey- | |||
| Info AlgorithmIdentifier and the CA signed the subject certificate | Info AlgorithmIdentifier and the CA signed the subject certificate | |||
| using DSA, then the certificate issuer's DSA parameters apply to the | using DSA, then the certificate issuer's DSA parameters apply to the | |||
| subject's DSA key. If the DSA algorithm parameters are absent from | subject's DSA key. If the DSA algorithm parameters are absent from | |||
| skipping to change at page 84, line 10 ¶ | skipping to change at page 85, line 51 ¶ | |||
| In addition, where a key compromise or CA failure occurs for a | In addition, where a key compromise or CA failure occurs for a | |||
| trusted CA, the user will need to modify the information provided to | trusted CA, the user will need to modify the information provided to | |||
| the path validation routine. Selection of too many trusted CAs will | the path validation routine. Selection of too many trusted CAs will | |||
| make the trusted CA information difficult to maintain. On the other | make the trusted CA information difficult to maintain. On the other | |||
| hand, selection of only one trusted CA may limit users to a closed | hand, selection of only one trusted CA may limit users to a closed | |||
| community of users until a global PKI emerges. | community of users until a global PKI emerges. | |||
| The quality of implementations that process certificates may also | The quality of implementations that process certificates may also | |||
| affect the degree of assurance provided. The path validation algo- | affect the degree of assurance provided. The path validation algo- | |||
| rithm described in section 6 relies upon the integrity of the trusted | rithm described in section 6 relies upon the integrity of the trusted | |||
| CA information, and especially the integrity of the public keys asso- | CA information, and especially the integrity of the public keys | |||
| ciated with the trusted CAs. By substituting public keys for which | associated with the trusted CAs. By substituting public keys for | |||
| an attacker has the private key, an attacker could trick the user | which an attacker has the private key, an attacker could trick the | |||
| into accepting false certificates. | user into accepting false certificates. | |||
| The binding between a key and certificate subject cannot be stronger | The binding between a key and certificate subject cannot be stronger | |||
| than the cryptographic module implementation and algorithms used to | than the cryptographic module implementation and algorithms used to | |||
| generate the signature. Short key lengths or weak hash algorithms | generate the signature. Short key lengths or weak hash algorithms | |||
| will limit the utility of a certificate. CAs are encouraged to note | will limit the utility of a certificate. CAs are encouraged to note | |||
| advances in cryptology so they can employ strong cryptographic tech- | advances in cryptology so they can employ strong cryptographic tech- | |||
| niques. In addition, CAs should decline to issue certificates to CAs | niques. In addition, CAs should decline to issue certificates to CAs | |||
| or end entities that generate weak signatures. | or end entities that generate weak signatures. | |||
| Inconsistent application of name comparison rules may result in | Inconsistent application of name comparison rules may result in | |||
| skipping to change at page 88, line 45 ¶ | skipping to change at page 90, line 48 ¶ | |||
| bmpString BMPString (SIZE(1..ub-title)) } | bmpString BMPString (SIZE(1..ub-title)) } | |||
| -- | -- | |||
| id-at-dnQualifier AttributeType ::= {id-at 46} | id-at-dnQualifier AttributeType ::= {id-at 46} | |||
| X520dnQualifier ::= PrintableString | X520dnQualifier ::= PrintableString | |||
| id-at-countryName AttributeType ::= {id-at 6} | id-at-countryName AttributeType ::= {id-at 6} | |||
| X520countryName ::= PrintableString (SIZE (2)) -- IS 3166 codes | X520countryName ::= PrintableString (SIZE (2)) -- IS 3166 codes | |||
| id-at-serialNumber AttributeType ::= { id-at 5 } | ||||
| X520SerialNumber PrintableString (SIZE (1..ub-serial-number)) | ||||
| -- domaincomponent and identifier from RFC 2247 | ||||
| id-domainComponent OBJECT IDENTIFIER := | ||||
| { 0 9 2342 19200300 100 1 25 } | ||||
| id-domainComponent AttributeType ::= id-domainComponent | ||||
| domainComponent ::= IA5String | ||||
| -- Legacy attributes | -- Legacy attributes | |||
| pkcs-9 OBJECT IDENTIFIER ::= | pkcs-9 OBJECT IDENTIFIER ::= | |||
| { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 } | { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 } | |||
| emailAddress AttributeType ::= { pkcs-9 1 } | emailAddress AttributeType ::= { pkcs-9 1 } | |||
| Pkcs9email ::= IA5String (SIZE (1..ub-emailaddress-length)) | Pkcs9email ::= IA5String (SIZE (1..ub-emailaddress-length)) | |||
| -- naming data types -- | -- naming data types -- | |||
| Name ::= CHOICE { -- only one possibility for now -- | Name ::= CHOICE { -- only one possibility for now -- | |||
| rdnSequence RDNSequence } | rdnSequence RDNSequence } | |||
| RDNSequence ::= SEQUENCE OF RelativeDistinguishedName | RDNSequence ::= SEQUENCE OF RelativeDistinguishedName | |||
| DistinguishedName ::= RDNSequence | DistinguishedName ::= RDNSequence | |||
| skipping to change at page 97, line 18 ¶ | skipping to change at page 99, line 32 ¶ | |||
| -- Upper Bounds | -- Upper Bounds | |||
| -- Upper Bounds | -- Upper Bounds | |||
| ub-name INTEGER ::= 32768 | ub-name INTEGER ::= 32768 | |||
| ub-common-name INTEGER ::= 64 | ub-common-name INTEGER ::= 64 | |||
| ub-locality-name INTEGER ::= 128 | ub-locality-name INTEGER ::= 128 | |||
| ub-state-name INTEGER ::= 128 | ub-state-name INTEGER ::= 128 | |||
| ub-organization-name INTEGER ::= 64 | ub-organization-name INTEGER ::= 64 | |||
| ub-organizational-unit-name INTEGER ::= 64 | ub-organizational-unit-name INTEGER ::= 64 | |||
| ub-title INTEGER ::= 64 | ub-title INTEGER ::= 64 | |||
| ub-serialNumber INTEGER ::= 64 | ||||
| ub-match INTEGER ::= 128 | ub-match INTEGER ::= 128 | |||
| ub-emailaddress-length INTEGER ::= 128 | ub-emailaddress-length INTEGER ::= 128 | |||
| ub-common-name-length INTEGER ::= 64 | ub-common-name-length INTEGER ::= 64 | |||
| ub-country-name-alpha-length INTEGER ::= 2 | ub-country-name-alpha-length INTEGER ::= 2 | |||
| ub-country-name-numeric-length INTEGER ::= 3 | ub-country-name-numeric-length INTEGER ::= 3 | |||
| ub-domain-defined-attributes INTEGER ::= 4 | ub-domain-defined-attributes INTEGER ::= 4 | |||
| ub-domain-defined-attribute-type-length INTEGER ::= 8 | ub-domain-defined-attribute-type-length INTEGER ::= 8 | |||
| ub-domain-defined-attribute-value-length INTEGER ::= 128 | ub-domain-defined-attribute-value-length INTEGER ::= 128 | |||
| skipping to change at page 103, line 14 ¶ | skipping to change at page 105, line 14 ¶ | |||
| PolicyConstraints ::= SEQUENCE { | PolicyConstraints ::= SEQUENCE { | |||
| requireExplicitPolicy [0] SkipCerts OPTIONAL, | requireExplicitPolicy [0] SkipCerts OPTIONAL, | |||
| inhibitPolicyMapping [1] SkipCerts OPTIONAL } | inhibitPolicyMapping [1] SkipCerts OPTIONAL } | |||
| SkipCerts ::= INTEGER (0..MAX) | SkipCerts ::= INTEGER (0..MAX) | |||
| -- CRL distribution points extension OID and syntax | -- CRL distribution points extension OID and syntax | |||
| id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31} | id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31} | |||
| CRLDistPointsSyntax ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint | CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint | |||
| DistributionPoint ::= SEQUENCE { | DistributionPoint ::= SEQUENCE { | |||
| distributionPoint [0] DistributionPointName OPTIONAL, | distributionPoint [0] DistributionPointName OPTIONAL, | |||
| reasons [1] ReasonFlags OPTIONAL, | reasons [1] ReasonFlags OPTIONAL, | |||
| cRLIssuer [2] GeneralNames OPTIONAL } | cRLIssuer [2] GeneralNames OPTIONAL } | |||
| DistributionPointName ::= CHOICE { | DistributionPointName ::= CHOICE { | |||
| fullName [0] GeneralNames, | fullName [0] GeneralNames, | |||
| nameRelativeToCRLIssuer [1] RelativeDistinguishedName } | nameRelativeToCRLIssuer [1] RelativeDistinguishedName } | |||
| skipping to change at page 104, line 4 ¶ | skipping to change at page 106, line 4 ¶ | |||
| -- extended key purpose OIDs | -- extended key purpose OIDs | |||
| id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } | id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } | |||
| id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } | id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } | |||
| id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } | id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } | |||
| id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } | id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } | |||
| id-kp-ipsecEndSystem OBJECT IDENTIFIER ::= { id-kp 5 } | id-kp-ipsecEndSystem OBJECT IDENTIFIER ::= { id-kp 5 } | |||
| id-kp-ipsecTunnel OBJECT IDENTIFIER ::= { id-kp 6 } | id-kp-ipsecTunnel OBJECT IDENTIFIER ::= { id-kp 6 } | |||
| id-kp-ipsecUser OBJECT IDENTIFIER ::= { id-kp 7 } | id-kp-ipsecUser OBJECT IDENTIFIER ::= { id-kp 7 } | |||
| id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } | id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } | |||
| -- inhibit any policy OID and syntax | ||||
| id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= { id-ce 54 } | ||||
| InhibitAnyPolicy ::= SkipCerts | ||||
| -- freshest (delta-)CRL extension OID and syntax | ||||
| id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 } | ||||
| FreshestCRL ::= CRLDistributionPoints | ||||
| -- authority info access | -- authority info access | |||
| id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 } | id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 } | |||
| AuthorityInfoAccessSyntax ::= | AuthorityInfoAccessSyntax ::= | |||
| SEQUENCE SIZE (1..MAX) OF AccessDescription | SEQUENCE SIZE (1..MAX) OF AccessDescription | |||
| AccessDescription ::= SEQUENCE { | AccessDescription ::= SEQUENCE { | |||
| accessMethod OBJECT IDENTIFIER, | accessMethod OBJECT IDENTIFIER, | |||
| accessLocation GeneralName } | accessLocation GeneralName } | |||
| skipping to change at page 114, line 9 ¶ | skipping to change at page 116, line 9 ¶ | |||
| ID id-at-organizationName } | ID id-at-organizationName } | |||
| organizationalUnitName ATTRIBUTE ::= { | organizationalUnitName ATTRIBUTE ::= { | |||
| WITH SYNTAX DirectoryString {ub-organizational-unit-name} | WITH SYNTAX DirectoryString {ub-organizational-unit-name} | |||
| ID id-at-organizationalUnitName } | ID id-at-organizationalUnitName } | |||
| title ATTRIBUTE ::= { | title ATTRIBUTE ::= { | |||
| WITH SYNTAX DirectoryString {ub-title} | WITH SYNTAX DirectoryString {ub-title} | |||
| ID id-at-title } | ID id-at-title } | |||
| -- domainComponent from RFC 2247 | ||||
| domainComponent ATTRIBUTE ::= { | ||||
| WITH SYNTAX IA5String | ||||
| ID id-domaincomponent } | ||||
| -- Legacy attributes | -- Legacy attributes | |||
| pkcs9email ATTRIBUTE ::= { | pkcs9email ATTRIBUTE ::= { | |||
| WITH SYNTAX PHGString, | WITH SYNTAX PHGString, | |||
| ID emailAddress } | ID emailAddress } | |||
| PHGString ::= IA5String (SIZE(1..ub-emailaddress-length)) | PHGString ::= IA5String (SIZE(1..ub-emailaddress-length)) | |||
| pkcs-9 OBJECT IDENTIFIER ::= | pkcs-9 OBJECT IDENTIFIER ::= | |||
| { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 } | { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 } | |||
| skipping to change at page 114, line 43 ¶ | skipping to change at page 116, line 48 ¶ | |||
| id-at-localityName OBJECT IDENTIFIER ::= {id-at 7} | id-at-localityName OBJECT IDENTIFIER ::= {id-at 7} | |||
| id-at-stateOrProvinceName OBJECT IDENTIFIER ::= {id-at 8} | id-at-stateOrProvinceName OBJECT IDENTIFIER ::= {id-at 8} | |||
| id-at-organizationName OBJECT IDENTIFIER ::= {id-at 10} | id-at-organizationName OBJECT IDENTIFIER ::= {id-at 10} | |||
| id-at-organizationalUnitName OBJECT IDENTIFIER ::= {id-at 11} | id-at-organizationalUnitName OBJECT IDENTIFIER ::= {id-at 11} | |||
| id-at-title OBJECT IDENTIFIER ::= {id-at 12} | id-at-title OBJECT IDENTIFIER ::= {id-at 12} | |||
| id-at-name OBJECT IDENTIFIER ::= {id-at 41} | id-at-name OBJECT IDENTIFIER ::= {id-at 41} | |||
| id-at-givenName OBJECT IDENTIFIER ::= {id-at 42} | id-at-givenName OBJECT IDENTIFIER ::= {id-at 42} | |||
| id-at-initials OBJECT IDENTIFIER ::= {id-at 43} | id-at-initials OBJECT IDENTIFIER ::= {id-at 43} | |||
| id-at-generationQualifier OBJECT IDENTIFIER ::= {id-at 44} | id-at-generationQualifier OBJECT IDENTIFIER ::= {id-at 44} | |||
| id-at-dnQualifier OBJECT IDENTIFIER ::= {id-at 46} | id-at-dnQualifier OBJECT IDENTIFIER ::= {id-at 46} | |||
| id-at-serialNumber OBJECT IDENTIFIER ::= { id-at 5 } | ||||
| id-domainComponent OBJECT IDENTIFIER := | ||||
| { 0 9 2342 19200300 100 1 25 } | ||||
| -- Directory string type, used extensively in Name types -- | -- Directory string type, used extensively in Name types -- | |||
| DirectoryString { INTEGER:maxSize } ::= CHOICE { | DirectoryString { INTEGER:maxSize } ::= CHOICE { | |||
| teletexString TeletexString (SIZE (1..maxSize)), | teletexString TeletexString (SIZE (1..maxSize)), | |||
| printableString PrintableString (SIZE (1..maxSize)), | printableString PrintableString (SIZE (1..maxSize)), | |||
| universalString UniversalString (SIZE (1..maxSize)), | universalString UniversalString (SIZE (1..maxSize)), | |||
| bmpString BMPString (SIZE(1..maxSize)), | bmpString BMPString (SIZE(1..maxSize)), | |||
| utf8String UTF8String (SIZE(1..maxSize)) | utf8String UTF8String (SIZE(1..maxSize)) | |||
| } | } | |||
| -- End of ASN.1 for Name type and directory attribute support -- | -- End of ASN.1 for Name type and directory attribute support -- | |||
| skipping to change at page 125, line 24 ¶ | skipping to change at page 127, line 24 ¶ | |||
| SupportedPolicyQualifiers CERT-POLICY-QUALIFIER ::= { noticeToUser | | SupportedPolicyQualifiers CERT-POLICY-QUALIFIER ::= { noticeToUser | | |||
| pointerToCPS } | pointerToCPS } | |||
| CERT-POLICY-QUALIFIER ::= CLASS { | CERT-POLICY-QUALIFIER ::= CLASS { | |||
| &id OBJECT IDENTIFIER UNIQUE, | &id OBJECT IDENTIFIER UNIQUE, | |||
| &Qualifier OPTIONAL } | &Qualifier OPTIONAL } | |||
| WITH SYNTAX { | WITH SYNTAX { | |||
| POLICY-QUALIFIER-ID &id | POLICY-QUALIFIER-ID &id | |||
| [QUALIFIER-TYPE &Qualifier] } | [QUALIFIER-TYPE &Qualifier] } | |||
| -- the following OID describes the special policy "any-policy" | ||||
| anyPolicy OBJECT IDENTIFIER ::= {id-ce-certificate-policies 0} | ||||
| policyMappings EXTENSION ::= { | policyMappings EXTENSION ::= { | |||
| SYNTAX PolicyMappingsSyntax | SYNTAX PolicyMappingsSyntax | |||
| IDENTIFIED BY id-ce-policyMappings } | IDENTIFIED BY id-ce-policyMappings } | |||
| PolicyMappingsSyntax ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE { | PolicyMappingsSyntax ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE { | |||
| issuerDomainPolicy CertPolicyId, | issuerDomainPolicy CertPolicyId, | |||
| subjectDomainPolicy CertPolicyId } | subjectDomainPolicy CertPolicyId } | |||
| -- Certificate subject and certificate issuer attributes extensions -- | -- Certificate subject and certificate issuer attributes extensions -- | |||
| skipping to change at page 127, line 7 ¶ | skipping to change at page 129, line 11 ¶ | |||
| policyConstraints EXTENSION ::= { | policyConstraints EXTENSION ::= { | |||
| SYNTAX PolicyConstraintsSyntax | SYNTAX PolicyConstraintsSyntax | |||
| IDENTIFIED BY id-ce-policyConstraints } | IDENTIFIED BY id-ce-policyConstraints } | |||
| PolicyConstraintsSyntax ::= SEQUENCE { | PolicyConstraintsSyntax ::= SEQUENCE { | |||
| requireExplicitPolicy [0] SkipCerts OPTIONAL, | requireExplicitPolicy [0] SkipCerts OPTIONAL, | |||
| inhibitPolicyMapping [1] SkipCerts OPTIONAL } | inhibitPolicyMapping [1] SkipCerts OPTIONAL } | |||
| SkipCerts ::= INTEGER (0..MAX) | SkipCerts ::= INTEGER (0..MAX) | |||
| inhibitAnyPolicy EXTENSION ::= { | ||||
| SYNTAX SkipCerts | ||||
| IDENTIFIED BY id-ce-inhibitAnyPolicy} | ||||
| -- Basic CRL extensions -- | -- Basic CRL extensions -- | |||
| cRLNumber EXTENSION ::= { | cRLNumber EXTENSION ::= { | |||
| SYNTAX CRLNumber | SYNTAX CRLNumber | |||
| IDENTIFIED BY id-ce-cRLNumber } | IDENTIFIED BY id-ce-cRLNumber } | |||
| CRLNumber ::= INTEGER (0..MAX) | CRLNumber ::= INTEGER (0..MAX) | |||
| reasonCode EXTENSION ::= { | reasonCode EXTENSION ::= { | |||
| SYNTAX CRLReason | SYNTAX CRLReason | |||
| skipping to change at page 128, line 48 ¶ | skipping to change at page 131, line 7 ¶ | |||
| certificateIssuer EXTENSION ::= { | certificateIssuer EXTENSION ::= { | |||
| SYNTAX GeneralNames | SYNTAX GeneralNames | |||
| IDENTIFIED BY id-ce-certificateIssuer } | IDENTIFIED BY id-ce-certificateIssuer } | |||
| deltaCRLIndicator EXTENSION ::= { | deltaCRLIndicator EXTENSION ::= { | |||
| SYNTAX BaseCRLNumber | SYNTAX BaseCRLNumber | |||
| IDENTIFIED BY id-ce-deltaCRLIndicator } | IDENTIFIED BY id-ce-deltaCRLIndicator } | |||
| BaseCRLNumber ::= CRLNumber | BaseCRLNumber ::= CRLNumber | |||
| freshestCRL EXTENSION ::= { | ||||
| SYNTAX CRLDistPointsSyntax | ||||
| IDENTIFIED BY id-ce-freshestCRL } | ||||
| -- Object identifier assignments for ISO certificate extensions -- | -- Object identifier assignments for ISO certificate extensions -- | |||
| id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} | id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} | |||
| id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= {id-ce 9} | id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= {id-ce 9} | |||
| id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= {id-ce 14} | id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= {id-ce 14} | |||
| id-ce-keyUsage OBJECT IDENTIFIER ::= {id-ce 15} | id-ce-keyUsage OBJECT IDENTIFIER ::= {id-ce 15} | |||
| id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= {id-ce 16} | id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= {id-ce 16} | |||
| id-ce-subjectAltName OBJECT IDENTIFIER ::= {id-ce 17} | id-ce-subjectAltName OBJECT IDENTIFIER ::= {id-ce 17} | |||
| id-ce-issuerAltName OBJECT IDENTIFIER ::= {id-ce 18} | id-ce-issuerAltName OBJECT IDENTIFIER ::= {id-ce 18} | |||
| id-ce-basicConstraints OBJECT IDENTIFIER ::= {id-ce 19} | id-ce-basicConstraints OBJECT IDENTIFIER ::= {id-ce 19} | |||
| skipping to change at page 129, line 24 ¶ | skipping to change at page 131, line 35 ¶ | |||
| id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= {id-ce 27} | id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= {id-ce 27} | |||
| id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= {id-ce 28} | id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= {id-ce 28} | |||
| id-ce-certificateIssuer OBJECT IDENTIFIER ::= {id-ce 29} | id-ce-certificateIssuer OBJECT IDENTIFIER ::= {id-ce 29} | |||
| id-ce-nameConstraints OBJECT IDENTIFIER ::= {id-ce 30} | id-ce-nameConstraints OBJECT IDENTIFIER ::= {id-ce 30} | |||
| id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31} | id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31} | |||
| id-ce-certificatePolicies OBJECT IDENTIFIER ::= {id-ce 32} | id-ce-certificatePolicies OBJECT IDENTIFIER ::= {id-ce 32} | |||
| id-ce-policyMappings OBJECT IDENTIFIER ::= {id-ce 33} | id-ce-policyMappings OBJECT IDENTIFIER ::= {id-ce 33} | |||
| id-ce-policyConstraints OBJECT IDENTIFIER ::= {id-ce 36} | id-ce-policyConstraints OBJECT IDENTIFIER ::= {id-ce 36} | |||
| id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= {id-ce 35} | id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= {id-ce 35} | |||
| id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37} | id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37} | |||
| anyPolicy OBJECT IDENTIFIER ::= {id-ce-certificate-policies 0} | id-ce-freshestCRL OBJECT IDENTIFIER ::= {id-ce 46} | |||
| id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= {id-ce 54} | ||||
| -- PKIX 1 extensions | -- PKIX 1 extensions | |||
| authorityInfoAccess EXTENSION ::= { | authorityInfoAccess EXTENSION ::= { | |||
| SYNTAX AuthorityInfoAccessSyntax | SYNTAX AuthorityInfoAccessSyntax | |||
| IDENTIFIED BY id-pe-authorityInfoAccess } | IDENTIFIED BY id-pe-authorityInfoAccess } | |||
| AuthorityInfoAccessSyntax ::= | AuthorityInfoAccessSyntax ::= | |||
| SEQUENCE SIZE (1..MAX) OF AccessDescription | SEQUENCE SIZE (1..MAX) OF AccessDescription | |||
| skipping to change at page 130, line 28 ¶ | skipping to change at page 132, line 38 ¶ | |||
| DisplayText ::= CHOICE { | DisplayText ::= CHOICE { | |||
| ia5String IA5String (SIZE (1..200)), | ia5String IA5String (SIZE (1..200)), | |||
| visibleString VisibleString (SIZE (1..200)), | visibleString VisibleString (SIZE (1..200)), | |||
| bmpString BMPString (SIZE (1..200)), | bmpString BMPString (SIZE (1..200)), | |||
| utf8String UTF8String (SIZE (1..200)) } | utf8String UTF8String (SIZE (1..200)) } | |||
| END | END | |||
| Appendix C. ASN.1 Notes | Appendix C. ASN.1 Notes | |||
| CAs MUST force the serialNumber to be a positive integer, that is, | ||||
| the sign bit in the DER encoding of the INTEGER value MUST be zero - | ||||
| this can be done by adding a leading (leftmost) `00'H octet if neces- | ||||
| sary. This removes a potential ambiguity in mapping between a string | ||||
| of octets and an integer value. | ||||
| Given the uniqueness requirements above serial numbers can be | ||||
| expected to contain long integers. Certificate users MUST be able to | ||||
| handle serialNumber values longer than 32 bits. Conformant CAs MUST | ||||
| NOT use serialNumber values longer than 20 octets. | ||||
| The construct "SEQUENCE SIZE (1..MAX) OF" appears in several ASN.1 | The construct "SEQUENCE SIZE (1..MAX) OF" appears in several ASN.1 | |||
| constructs. A valid ASN.1 sequence will have zero or more entries. | constructs. A valid ASN.1 sequence will have zero or more entries. | |||
| The SIZE (1..MAX) construct constrains the sequence to have at least | The SIZE (1..MAX) construct constrains the sequence to have at least | |||
| one entry. MAX indicates the upper bound is unspecified. Implementa- | one entry. MAX indicates the upper bound is unspecified. Implementa- | |||
| tions are free to choose an upper bound that suits their environment. | tions are free to choose an upper bound that suits their environment. | |||
| The construct "positiveInt ::= INTEGER (0..MAX)" defines positiveInt | The construct "positiveInt ::= INTEGER (0..MAX)" defines positiveInt | |||
| as a subtype of INTEGER containing integers greater than or equal to | as a subtype of INTEGER containing integers greater than or equal to | |||
| zero. The upper bound is unspecified. Implementations are free to | zero. The upper bound is unspecified. Implementations are free to | |||
| select an upper bound that suits their environment. | select an upper bound that suits their environment. | |||
| skipping to change at page 130, line 49 ¶ | skipping to change at page 133, line 24 ¶ | |||
| The character string type PrintableString supports a very basic Latin | The character string type PrintableString supports a very basic Latin | |||
| character set: the lower case letters 'a' through 'z', upper case | character set: the lower case letters 'a' through 'z', upper case | |||
| letters 'A' through 'Z', the digits '0' through '9', eleven special | letters 'A' through 'Z', the digits '0' through '9', eleven special | |||
| characters ' " ( ) + , - . / : ? and space. | characters ' " ( ) + , - . / : ? and space. | |||
| The character string type TeletexString is a superset of Printable- | The character string type TeletexString is a superset of Printable- | |||
| String. TeletexString supports a fairly standard (ascii-like) Latin | String. TeletexString supports a fairly standard (ascii-like) Latin | |||
| character set, Latin characters with non-spacing accents and Japanese | character set, Latin characters with non-spacing accents and Japanese | |||
| characters. | characters. | |||
| The character string type UniversalString supports any of the | The character string type UniversalString supports any of the charac- | |||
| characters allowed by ISO 10646-1. ISO 10646 is the Universal | ters allowed by ISO 10646-1. ISO 10646 is the Universal multiple- | |||
| multiple-octet coded Character Set (UCS). ISO 10646-1 specifes the | octet coded Character Set (UCS). ISO 10646-1 specifes the architec- | |||
| architecture and the "basic multilingual plane" - a large standard | ture and the "basic multilingual plane" - a large standard character | |||
| character set which includes all major world character standards. | set which includes all major world character standards. | |||
| The character string type UTF8String will be introduced in the 1998 | The character string type UTF8String will be introduced in the 1998 | |||
| version of ASN.1. UTF8String is a universal type and has been | version of ASN.1. UTF8String is a universal type and has been | |||
| assigned tag number 12. The content of UTF8String was defined by RFC | assigned tag number 12. The content of UTF8String was defined by RFC | |||
| 2044 and updated in RFC 2279, "UTF-8, a transformation Format of ISO | 2044 and updated in RFC 2279, "UTF-8, a transformation Format of ISO | |||
| 10646." ISO is expected to formally add UTF8String to the list of | 10646." ISO is expected to formally add UTF8String to the list of | |||
| choices for DirectoryString in 1998 as well. | choices for DirectoryString in 1998 as well. | |||
| In anticipation of these changes, and in conformance with IETF Best | In anticipation of these changes, and in conformance with IETF Best | |||
| Practices codified in RFC 2277, IETF Policy on Character Sets and | Practices codified in RFC 2277, IETF Policy on Character Sets and | |||
| Languages, this document includes UTF8String as a choice in Directo- | Languages, this document includes UTF8String as a choice in Directo- | |||
| ryString and the CPS qualifier extensions. | ryString and the CPS qualifier extensions. | |||
| Implementers should note that the DER encoding of the SET OF values | ||||
| requires ordering of the encodings of the values. In particular, this | ||||
| issue arises with respect to distinguished names. | ||||
| Object Identifiers (OIDs) are used throught this specification to | ||||
| identify certificate policies, public key and signature algorithms, | ||||
| certificate extensions, etc. There is no maximum size for OIDs. | ||||
| This specification mandates support for OIDs which have arc elements | ||||
| with values that are less than 2^28, i.e. they MUST be between 0 and | ||||
| 268,435,455 inclusive. This allows each arc element to be represented | ||||
| within a single 32 bit word. Implementations MUST also support OIDs | ||||
| where the length of the dotted decimal (see [LDAP], section 4.1.2) | ||||
| string representation can be up to 100 bytes (inclusive). Implementa- | ||||
| tions MUST be able to handle OIDs with up to 20 elements (inclusive). | ||||
| CAs SHOULD NOT issue certificates which contain OIDs that breach | ||||
| these requirements. | ||||
| Appendix D. Examples | Appendix D. Examples | |||
| This section contains four examples: three certificates and a CRL. | This section contains four examples: three certificates and a CRL. | |||
| The first two certificates and the CRL comprise a minimal certifica- | The first two certificates and the CRL comprise a minimal certifica- | |||
| tion path. | tion path. | |||
| Section D.1 contains an annotated hex dump of a "self-signed" certi- | Section D.1 contains an annotated hex dump of a "self-signed" certi- | |||
| ficate issued by a CA whose distinguished name is | ficate issued by a CA whose distinguished name is | |||
| cn=us,o=gov,ou=nist. The certificate contains a DSA public key with | cn=us,o=gov,ou=nist. The certificate contains a DSA public key with | |||
| parameters, and is signed by the corresponding DSA private key. | parameters, and is signed by the corresponding DSA private key. | |||
| End of changes. 102 change blocks. | ||||
| 312 lines changed or deleted | 487 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||