| rfc9480.original | rfc9480.txt | |||
|---|---|---|---|---|
| LAMPS Working Group H. Brockhaus, Ed. | Internet Engineering Task Force (IETF) H. Brockhaus | |||
| Internet-Draft D. von Oheimb | Request for Comments: 9480 D. von Oheimb | |||
| Updates: 4210, 5912, 6712 (if approved) Siemens | Updates: 4210, 5912, 6712 Siemens | |||
| Intended status: Standards Track J. Gray | Category: Standards Track J. Gray | |||
| Expires: 31 December 2022 Entrust | ISSN: 2070-1721 Entrust | |||
| 29 June 2022 | October 2023 | |||
| Certificate Management Protocol (CMP) Updates | Certificate Management Protocol (CMP) Updates | |||
| draft-ietf-lamps-cmp-updates-23 | ||||
| Abstract | Abstract | |||
| This document contains a set of updates to the syntax and transfer of | This document contains a set of updates to the syntax of Certificate | |||
| Certificate Management Protocol (CMP) version 2. This document | Management Protocol (CMP) version 2 and its HTTP transfer mechanism. | |||
| updates RFC 4210, RFC 5912, and RFC 6712. | This document updates RFCs 4210, 5912, and 6712. | |||
| The aspects of CMP updated in this document are using EnvelopedData | The aspects of CMP updated in this document are using EnvelopedData | |||
| instead of EncryptedValue, clarifying the handling of p10cr messages, | instead of EncryptedValue, clarifying the handling of p10cr messages, | |||
| improving the crypto agility, as well as adding new general message | improving the crypto agility, as well as adding new general message | |||
| types, extended key usages to identify certificates for use with CMP, | types, extended key usages to identify certificates for use with CMP, | |||
| and well-known URI path segments. | and well-known URI path segments. | |||
| CMP version 3 is introduced to enable signaling support of | CMP version 3 is introduced to enable signaling support of | |||
| EnvelopedData instead of EncryptedValue and signaling the use of an | EnvelopedData instead of EncryptedValue and signal the use of an | |||
| explicit hash AlgorithmIdentifier in certConf messages, as far as | explicit hash AlgorithmIdentifier in certConf messages, as far as | |||
| needed. | needed. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 31 December 2022. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9480. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2023 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 1.1. Convention and Terminology . . . . . . . . . . . . . . . 4 | 1.1. Convention and Terminology | |||
| 2. Updates to RFC 4210 - Certificate Management Protocol | 2. Updates to RFC 4210 - Certificate Management Protocol (CMP) | |||
| (CMP) . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.1. New Section 1.1 - Changes Since RFC 4210 | |||
| 2.1. New Section 1.1. - Changes Since RFC 4210 . . . . . . . . 5 | 2.2. New Section 4.5 - Extended Key Usage | |||
| 2.2. New Section 4.5 - Extended Key Usage . . . . . . . . . . 6 | 2.3. Update Section 5.1.1 - PKI Message Header | |||
| 2.3. Update Section 5.1.1. - PKI Message Header . . . . . . . 7 | 2.4. New Section 5.1.1.3 - CertProfile | |||
| 2.4. New Section 5.1.1.3. - CertProfile . . . . . . . . . . . 8 | 2.5. Update Section 5.1.3.1 - Shared Secret Information | |||
| 2.5. Update Section 5.1.3.1. - Shared Secret Information . . . 9 | 2.6. Replace Section 5.1.3.4 - Multiple Protection | |||
| 2.6. Replace Section 5.1.3.4 - Multiple Protection . . . . . . 9 | 2.7. Replace Section 5.2.2 - Encrypted Values | |||
| 2.7. Replace Section 5.2.2. - Encrypted Values . . . . . . . . 10 | 2.8. New Section 5.2.9 - GeneralizedTime | |||
| 2.8. New Section 5.2.9 - GeneralizedTime . . . . . . . . . . . 12 | 2.9. Update Section 5.3.4 - Certification Response | |||
| 2.9. Update Section 5.3.4. - Certification Response . . . . . 12 | 2.10. Update Section 5.3.18 - Certificate Confirmation Content | |||
| 2.10. Update Section 5.3.18. - Certificate Confirmation | 2.11. Update Section 5.3.19.2 - Signing Key Pair Types | |||
| Content . . . . . . . . . . . . . . . . . . . . . . . . 13 | 2.12. Update Section 5.3.19.3 - Encryption/Key Agreement Key Pair | |||
| 2.11. Update Section 5.3.19.2. - Signing Key Pair Types . . . . 14 | Types | |||
| 2.12. Update Section 5.3.19.3. - Encryption/Key Agreement Key | 2.13. Replace Section 5.3.19.9 - Revocation Passphrase | |||
| Pair Types . . . . . . . . . . . . . . . . . . . . . . . 14 | 2.14. New Section 5.3.19.14 - CA Certificates | |||
| 2.13. Replace Section 5.3.19.9. - Revocation Passphrase . . . . 15 | 2.15. New Section 5.3.19.15 - Root CA Certificate Update | |||
| 2.14. New Section 5.3.19.14 - CA Certificates . . . . . . . . . 15 | 2.16. New Section 5.3.19.16 - Certificate Request Template | |||
| 2.15. New Section 5.3.19.15 - Root CA Certificate Update . . . 15 | 2.17. New Section 5.3.19.17 - CRL Update Retrieval | |||
| 2.16. New Section 5.3.19.16 - Certificate Request Template . . 16 | 2.18. Update Section 5.3.21 - Error Message Content | |||
| 2.17. New Section 5.3.19.17 - CRL Update Retrieval . . . . . . 18 | 2.19. Replace Section 5.3.22 - Polling Request and Response | |||
| 2.18. Update Section 5.3.21 - Error Message Content . . . . . . 18 | 2.20. Update Section 7 - Version Negotiation | |||
| 2.19. Replace Section 5.3.22 - Polling Request and Response . . 19 | 2.21. Update Section 7.1.1 - Clients Talking to RFC 2510 Servers | |||
| 2.20. Update Section 7 - Version Negotiation . . . . . . . . . 24 | ||||
| 2.21. Update Section 7.1.1. - Clients Talking to RFC 2510 | ||||
| Servers . . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
| 2.22. Add Section 8.4 - Private Keys for Certificate Signing and | 2.22. Add Section 8.4 - Private Keys for Certificate Signing and | |||
| CMP Message Protection . . . . . . . . . . . . . . . . . 25 | CMP Message Protection | |||
| 2.23. Add Section 8.5 - Entropy of Random Numbers, Key Pairs, and | 2.23. Add Section 8.5 - Entropy of Random Numbers, Key Pairs, and | |||
| Shared Secret Information . . . . . . . . . . . . . . . 25 | Shared Secret Information | |||
| 2.24. Add Section 8.6 - Trust Anchor Provisioning Using CMP | 2.24. Add Section 8.6 - Trust Anchor Provisioning Using CMP | |||
| Messages . . . . . . . . . . . . . . . . . . . . . . . . 26 | Messages | |||
| 2.25. Add Section 8.7 - Authorizing requests for certificates | 2.25. Add Section 8.7 - Authorizing Requests for Certificates | |||
| with specific EKUs . . . . . . . . . . . . . . . . . . . 27 | with Specific EKUs | |||
| 2.26. Update Appendix B - The Use of Revocation Passphrase . . 27 | 2.26. Update Appendix B - The Use of Revocation Passphrase | |||
| 2.27. Update Appendix C - Request Message Behavioral | 2.27. Update Appendix C - Request Message Behavioral | |||
| Clarifications . . . . . . . . . . . . . . . . . . . . . 28 | Clarifications | |||
| 2.28. Update Appendix D.1. - General Rules for Interpretation of | 2.28. Update Appendix D.1. - General Rules for Interpretation of | |||
| These Profiles . . . . . . . . . . . . . . . . . . . . . 29 | These Profiles | |||
| 2.29. Update Appendix D.2. - Algorithm Use Profile . . . . . . 30 | 2.29. Update Appendix D.2. - Algorithm Use Profile | |||
| 2.30. Update Appendix D.4. - Initial Registration/Certification | 2.30. Update Appendix D.4. - Initial Registration/Certification | |||
| (Basic Authenticated Scheme) . . . . . . . . . . . . . . 30 | (Basic Authenticated Scheme) | |||
| 3. Updates to RFC 6712 - HTTP Transfer for the Certificate | 3. Updates to RFC 6712 - HTTP Transfer for the Certificate | |||
| Management Protocol (CMP) . . . . . . . . . . . . . . . . 30 | Management Protocol (CMP) | |||
| 3.1. Update Section 1. - Introduction . . . . . . . . . . . . 30 | 3.1. Update Section 1 - Introduction | |||
| 3.2. New Section 1.1. - Changes Since RFC 6712 . . . . . . . . 31 | 3.2. New Section 1.1 - Changes Since RFC 6712 | |||
| 3.3. Replace Section 3.6. - HTTP Request-URI . . . . . . . . . 31 | 3.3. Replace Section 3.6 - HTTP Request-URI | |||
| 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 | 4. IANA Considerations | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 34 | 4.1. Updates to the ASN.1 Modules in RFCs 4210 and 5912 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 | 4.2. Updates to the IANA Considerations of RFC 4210 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | 4.2.1. SMI Security for PKIX Extended Key Purpose Registry | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 34 | 4.2.2. SMI Security for PKIX CMP Information Types | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 36 | 4.2.3. SMI Security for PKIX CRMF Registration Controls | |||
| Appendix A. ASN.1 Modules . . . . . . . . . . . . . . . . . . . 38 | 4.3. Updates to the IANA Considerations of RFC 6712 | |||
| A.1. Update to RFC4210 - 1988 ASN.1 Module . . . . . . . . . . 38 | 4.3.1. Well-Known URIs | |||
| A.2. Update to RFC5912 - 2002 ASN.1 Module . . . . . . . . . . 52 | 4.3.2. Certificate Management Protocol (CMP) Registry | |||
| Appendix B. History of Changes . . . . . . . . . . . . . . . . . 65 | 5. Security Considerations | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 72 | 6. References | |||
| 6.1. Normative References | ||||
| 6.2. Informative References | ||||
| Appendix A. ASN.1 Modules | ||||
| A.1. Update to RFC 4210 - 1988 ASN.1 Module | ||||
| A.2. Update to RFC 5912 - 2002 ASN.1 Module | ||||
| Acknowledgements | ||||
| Authors' Addresses | ||||
| 1. Introduction | 1. Introduction | |||
| [RFC Editor: | While using CMP [RFC4210] in industrial and Internet of Things | |||
| environments and developing the Lightweight CMP Profile [RFC9483], | ||||
| Please perform the following substitution. | some limitations were identified in the original CMP specification. | |||
| This document updates [RFC4210] and [RFC6712] to overcome these | ||||
| * RFCXXXX --> the assigned numerical RFC value for this draft | ||||
| Please update the following references to associated drafts in | ||||
| progress to reflect their final RFC assignments, if possible: | ||||
| * I-D.ietf-lamps-cmp-algorithms | ||||
| * I-D.ietf-lamps-lightweight-cmp-profile | ||||
| * I-D.ietf-ace-cmpv2-coap-transport | ||||
| ] | ||||
| While using CMP [RFC4210] in industrial and IoT environments and | ||||
| developing the Lightweight CMP Profile | ||||
| [I-D.ietf-lamps-lightweight-cmp-profile] some limitations were | ||||
| identified in the original CMP specification. This document updates | ||||
| RFC 4210 [RFC4210] and RFC 6712 [RFC6712] to overcome these | ||||
| limitations. | limitations. | |||
| Among others, this document improves the crypto agility of CMP, which | Among other updates, this document improves the crypto agility of | |||
| means to be flexible to react on future advances in cryptography. | CMP, which allows more flexibility for future advances in | |||
| cryptography. | ||||
| This document also introduces new extended key usages to identify CMP | This document also introduces new extended key usages to identify CMP | |||
| endpoints on registration and certification authorities. | endpoints on registration and certification authorities. | |||
| As the main content of RFC 4210 [RFC4210] and RFC 6712 [RFC6712] | The main content of [RFC4210] and [RFC6712] remains unchanged. This | |||
| stays unchanged, this document lists all sections that are updated, | document lists all sections that are updated, replaced, or added to | |||
| replaced, or added to the current text of the respective RFCs. | the current text of the respective RFCs. | |||
| The authors acknowledge that the style of the document is hard to | The authors acknowledge that the style of the document is hard to | |||
| read because the original RFCs must be read along with this document | read because the original RFCs must be read along with this document | |||
| to get the complete content. The working group decided to use this | to get the complete content. The working group decided to use this | |||
| approach in order to keep the changes to RFC 4210 [RFC4210] and | approach in order to keep the changes to [RFC4210] and [RFC6712] to | |||
| RFC 6712 [RFC6712] to the required minimum. This was meant to speed | the required minimum. This was meant to speed up the editorial | |||
| up the editorial process and to minimize the effort spent on | process and to minimize the effort spent on reviewing the full text | |||
| reviewing the whole text of the original documents. | of the original documents. | |||
| However, [PKIX-CMP] and [HTTP-CMP] are intended to obsolete RFCs 4210 | ||||
| and 6712, respectively; these documents also include the changes | ||||
| listed in this document. | ||||
| 1.1. Convention and Terminology | 1.1. Convention and Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| Technical terminology is used in conformance with RFC 4210 [RFC4210], | Technical terminology is used in conformance with [RFC4210], | |||
| RFC 4211 [RFC4211], and RFC 5280 [RFC5280]. The following key words | [RFC4211], and [RFC5280]. The following key words are used: | |||
| are used: | ||||
| CA: Certification authority, which issues certificates. | CA: Certification authority, which issues certificates. | |||
| RA: Registration authority, an optional system component to which a | RA: Registration authority, an optional system component to which | |||
| CA delegates certificate management functions such as | a CA delegates certificate management functions, such as | |||
| authorization checks. | authorization checks. | |||
| KGA: Key generation authority, which generates key pairs on behalf | KGA: Key generation authority, which generates key pairs on behalf | |||
| of an EE. The KGA could be co-located with an RA or a CA. | of an EE. The KGA could be colocated with an RA or a CA. | |||
| EE: End entity, a user, device, or service that holds a PKI | EE: End entity, a user, device, or service that holds a PKI | |||
| certificate. An identifier for the EE is given as its subject | certificate. An identifier for the EE is given as its subject | |||
| of the certificate. | of the certificate. | |||
| 2. Updates to RFC 4210 - Certificate Management Protocol (CMP) | 2. Updates to RFC 4210 - Certificate Management Protocol (CMP) | |||
| 2.1. New Section 1.1. - Changes Since RFC 4210 | 2.1. New Section 1.1 - Changes Since RFC 4210 | |||
| The following subsection describes feature updates to RFC 4210 | The following subsection describes feature updates to [RFC4210]. | |||
| [RFC4210]. They are always related to the base specification. | They are always related to the base specification. Hence, references | |||
| Hence, references to the original sections in RFC 4210 [RFC4210] are | to the original sections in [RFC4210] are used whenever possible. | |||
| used whenever possible. | ||||
| Insert this section at the end of the current Section 1: | Insert this section after the current Section 1 of [RFC4210]: | |||
| 1.1. Changes Since RFC 4210 | 1.1. Changes Since RFC 4210 | |||
| The following updates are made in this document: | The following updates are made in this document: | |||
| * Add new extended key usages for various CMP server types, e.g., | * Adding new extended key usages for various CMP server types, e.g., | |||
| registration authority and certification authority, to express the | registration authority and certification authority, to express the | |||
| authorization of the entity identified in the certificate | authorization of the entity identified in the certificate | |||
| containing the respective extended key usage extension to act as | containing the respective extended key usage extension that acts | |||
| the indicated PKI management entity. | as the indicated PKI management entity. | |||
| * Extend the description of multiple protection to cover additional | * Extending the description of multiple protection to cover | |||
| use cases, e.g., batch processing of messages. | additional use cases, e.g., batch processing of messages. | |||
| * Offering EnvelopedData as the preferred choice next to | * Offering EnvelopedData as the preferred choice next to | |||
| EncryptedValue to better support crypto agility in CMP. Note that | EncryptedValue to better support crypto agility in CMP. Note | |||
| according to RFC 4211 [RFC4211] section 2.1. point 9 the use of | that, according to [RFC4211], Section 2.1, point 9, the use of the | |||
| the EncryptedValue structure has been deprecated in favor of the | EncryptedValue structure has been deprecated in favor of the | |||
| EnvelopedData structure. RFC 4211 [RFC4211] offers the | EnvelopedData structure. [RFC4211] offers the EncryptedKey | |||
| EncryptedKey structure, a choice of EncryptedValue and | structure a choice of EncryptedValue and EnvelopedData for | |||
| EnvelopedData for migration to EnvelopedData. For reasons of | migration to EnvelopedData. For reasons of completeness and | |||
| completeness and consistency the type EncryptedValue has been | consistency, the type EncryptedValue has been exchanged in all | |||
| exchanged in all occurrences in RFC 4210 [RFC4210]. This includes | occurrences in [RFC4210]. This includes the protection of | |||
| the protection of centrally generated private keys, encryption of | centrally generated private keys, encryption of certificates, and | |||
| certificates, and protection of revocation passphrases. To | protection of revocation passphrases. To properly differentiate | |||
| properly differentiate the support of EnvelopedData instead of | the support of EnvelopedData instead of EncryptedValue, CMP | |||
| EncryptedValue, the CMP version 3 is introduced in case a | version 3 is introduced in case a transaction is supposed to use | |||
| transaction is supposed to use EnvelopedData. | EnvelopedData. | |||
| * Offering an optional hashAlg field in CertStatus supporting | * Offering an optional hashAlg field in CertStatus that supports | |||
| confirmation of certificates signed with signature algorithms, | confirmation of certificates signed with signature algorithms, | |||
| e.g., EdDSA, not directly indicating a specific hash algorithm to | e.g., preparing for upcoming post quantum algorithms, not directly | |||
| use to compute the certHash. | indicating a specific hash algorithm to use to compute the | |||
| certHash. | ||||
| * Adding new general message types to request CA certificates, a | * Adding new general message types to request CA certificates, a | |||
| root CA update, a certificate request template, or a CRL update. | root CA update, a certificate request template, or a Certificate | |||
| Revocation List (CRL) update. | ||||
| * Extend the usage of polling to p10cr, certConf, rr, genm, and | * Extending the usage of polling to p10cr, certConf, rr, genm, and | |||
| error messages. | error messages. | |||
| * Delete the mandatory algorithm profile in RFC 4210 Appendix D.2 | * Deleting the mandatory algorithm profile in Appendix D.2 of | |||
| [RFC4210] and refer to CMP Algorithms Section 7 | [RFC4210] and referring to Section 7 of CMP Algorithms [RFC9481]. | |||
| [I-D.ietf-lamps-cmp-algorithms]. | ||||
| 2.2. New Section 4.5 - Extended Key Usage | 2.2. New Section 4.5 - Extended Key Usage | |||
| The following subsection introduces a new extended key usage for CMP | The following subsection introduces a new extended key usage for CMP | |||
| servers authorized to centrally generate key pairs on behalf of end | servers authorized to centrally generate key pairs on behalf of end | |||
| entities. | entities. | |||
| Insert this section at the end of the current Section 4: | Insert this section after Section 4.4.3 of [RFC4210]: | |||
| 4.5. Extended Key Usage | 4.5. Extended Key Usage | |||
| The Extended Key Usage (EKU) extension indicates the purposes for | The extended key usage (EKU) extension indicates the purposes for | |||
| which the certified key pair may be used. It therefore restricts the | which the certified key pair may be used. Therefore, it restricts | |||
| use of a certificate to specific applications. | the use of a certificate to specific applications. | |||
| A CA may want to delegate parts of its duties to other PKI management | A CA may want to delegate parts of its duties to other PKI management | |||
| entities. This section provides a mechanism to both prove this | entities. This section provides a mechanism to both prove this | |||
| delegation and enable an automated means for checking the | delegation and enable an automated means for checking the | |||
| authorization of this delegation. Such delegation may also be | authorization of this delegation. Such delegation may also be | |||
| expressed by other means, e.g., explicit configuration. | expressed by other means, e.g., explicit configuration. | |||
| To offer automatic validation for the delegation of a role by a CA to | To offer automatic validation for the delegation of a role by a CA to | |||
| another entity, the certificates used for CMP message protection or | another entity, the certificates used for CMP message protection or | |||
| signed data for central key generation MUST be issued by the | signed data for central key generation MUST be issued by the | |||
| delegating CA and MUST contain the respective EKUs. This proves the | delegating CA and MUST contain the respective EKUs. This proves the | |||
| authorization of this entity by the delegating CA to act in the given | authorization of this entity by delegating CA to act in the given | |||
| role as described below. | role, as described below. | |||
| The OIDs to be used for these EKUs are: | The OIDs to be used for these EKUs are: | |||
| id-kp-cmcCA OBJECT IDENTIFIER ::= { | id-kp-cmcCA OBJECT IDENTIFIER ::= { | |||
| iso(1) identified-organization(3) dod(6) internet(1) | iso(1) identified-organization(3) dod(6) internet(1) | |||
| security(5) mechanisms(5) pkix(7) kp(3) 27 } | security(5) mechanisms(5) pkix(7) kp(3) 27 } | |||
| id-kp-cmcRA OBJECT IDENTIFIER ::= { | id-kp-cmcRA OBJECT IDENTIFIER ::= { | |||
| iso(1) identified-organization(3) dod(6) internet(1) | iso(1) identified-organization(3) dod(6) internet(1) | |||
| security(5) mechanisms(5) pkix(7) kp(3) 28 } | security(5) mechanisms(5) pkix(7) kp(3) 28 } | |||
| id-kp-cmKGA OBJECT IDENTIFIER ::= { | id-kp-cmKGA OBJECT IDENTIFIER ::= { | |||
| iso(1) identified-organization(3) dod(6) internet(1) | iso(1) identified-organization(3) dod(6) internet(1) | |||
| security(5) mechanisms(5) pkix(7) kp(3) 32 } | security(5) mechanisms(5) pkix(7) kp(3) 32 } | |||
| Note: RFC 6402 section 2.10 [RFC6402] specifies OIDs for a CMC CA and | Note: Section 2.10 of [RFC6402] specifies OIDs for a Certificate | |||
| a CMC RA. As the functionality of a CA and RA is not specific to | Management over CMS (CMC) CA and a CMC RA. As the functionality of a | |||
| using CMC or CMP as the certificate management protocol, these EKUs | CA and RA is not specific to any certificate management protocol | |||
| are re-used by CMP. | (such as CMC or CMP), these EKUs are reused by CMP. | |||
| The meaning of the id-kp-cmKGA EKU is as follows: | The meaning of the id-kp-cmKGA EKU is as follows: | |||
| CMP KGA: CMP Key Generation Authorities are CAs or are identified by | CMP KGA: CMP key generation authorities are CAs or are identified by | |||
| the id-kp-cmKGA extended key usage. The CMP KGA knows the | the id-kp-cmKGA extended key usage. The CMP KGA knows the | |||
| private key it generated on behalf of the end entity. This | private key it generated on behalf of the end entity. This | |||
| is a very sensitive service and needs specific | is a very sensitive service and needs specific | |||
| authorization, which by default is with the CA certificate | authorization, which by default is with the CA certificate | |||
| itself. The CA may delegate its authorization by placing | itself. The CA may delegate its authorization by placing | |||
| the id-kp-cmKGA extended key usage in the certificate used | the id-kp-cmKGA extended key usage in the certificate used | |||
| to authenticate the origin of the generated private key. | to authenticate the origin of the generated private key. | |||
| The authorization may also be determined through local | The authorization may also be determined through local | |||
| configuration of the end entity. | configuration of the end entity. | |||
| 2.3. Update Section 5.1.1. - PKI Message Header | 2.3. Update Section 5.1.1 - PKI Message Header | |||
| Section 5.1.1 of RFC 4210 [RFC4210] describes the PKI message header. | Section 5.1.1 of [RFC4210] describes the PKI message header. This | |||
| This document introduces the new version 3 indicating support of | document introduces the new version 3, indicating support of | |||
| EnvelopedData as specified in Section 2.7. | EnvelopedData as specified in Section 2.7 and hashAlg as specified in | |||
| Section 2.10. | ||||
| Replace the ASN.1 Syntax of PKIHeader and the subsequent description | Replace the ASN.1 syntax of PKIHeader and the subsequent description | |||
| of pvno with the following text: | of pvno with the following text: | |||
| PKIHeader ::= SEQUENCE { | PKIHeader ::= SEQUENCE { | |||
| pvno INTEGER { cmp1999(1), cmp2000(2), | pvno INTEGER { cmp1999(1), cmp2000(2), | |||
| cmp2021(3) }, | cmp2021(3) }, | |||
| sender GeneralName, | sender GeneralName, | |||
| recipient GeneralName, | recipient GeneralName, | |||
| messageTime [0] GeneralizedTime OPTIONAL, | messageTime [0] GeneralizedTime OPTIONAL, | |||
| protectionAlg [1] AlgorithmIdentifier{ALGORITHM, {...}} | protectionAlg [1] AlgorithmIdentifier{ALGORITHM, {...}} | |||
| OPTIONAL, | OPTIONAL, | |||
| skipping to change at page 8, line 25 ¶ | skipping to change at line 322 ¶ | |||
| transactionID [4] OCTET STRING OPTIONAL, | transactionID [4] OCTET STRING OPTIONAL, | |||
| senderNonce [5] OCTET STRING OPTIONAL, | senderNonce [5] OCTET STRING OPTIONAL, | |||
| recipNonce [6] OCTET STRING OPTIONAL, | recipNonce [6] OCTET STRING OPTIONAL, | |||
| freeText [7] PKIFreeText OPTIONAL, | freeText [7] PKIFreeText OPTIONAL, | |||
| generalInfo [8] SEQUENCE SIZE (1..MAX) OF | generalInfo [8] SEQUENCE SIZE (1..MAX) OF | |||
| InfoTypeAndValue OPTIONAL | InfoTypeAndValue OPTIONAL | |||
| } | } | |||
| PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | |||
| The usage of pvno values is described in Section 7. | The usage of the protocol version number (pvno) is described in | |||
| Section 7. | ||||
| 2.4. New Section 5.1.1.3. - CertProfile | 2.4. New Section 5.1.1.3 - CertProfile | |||
| Section 5.1.1 of RFC 4210 [RFC4210] defines the PKIHeader and id-it | Section 5.1.1 of [RFC4210] defines the PKIHeader and id-it OIDs to be | |||
| OIDs to be used in the generalInfo field. This section introduces | used in the generalInfo field. This section introduces id-it- | |||
| id-it-certProfile. | certProfile. | |||
| Insert this section after Section 5.1.1.2: | Insert this section after Section 5.1.1.2 of [RFC4210]: | |||
| 5.1.1.3. CertProfile | 5.1.1.3. CertProfile | |||
| This is used by the EE to indicate specific certificate profiles, | This is used by the EE to indicate specific certificate profiles, | |||
| e.g., when requesting a new certificate or a certificate request | e.g., when requesting a new certificate or a certificate request | |||
| template, see Section 5.3.19.16. | template; see Section 5.3.19.16. | |||
| id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21} | id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21} | |||
| CertProfileValue ::= SEQUENCE SIZE (1..MAX) OF UTF8String | CertProfileValue ::= SEQUENCE SIZE (1..MAX) OF UTF8String | |||
| When used in an ir/cr/kur/genm, the value MUST NOT contain more | When used in an ir/cr/kur/genm, the value MUST NOT contain more | |||
| elements than the number of CertReqMsg or InfoTypeAndValue elements | elements than the number of CertReqMsg or InfoTypeAndValue elements | |||
| and the certificate profile names refer to the elements in the given | and the certificate profile names refer to the elements in the given | |||
| order. | order. | |||
| When used in a p10cr, the value MUST NOT contain multiple certificate | When used in a p10cr, the value MUST NOT contain multiple certificate | |||
| profile names. | profile names. | |||
| 2.5. Update Section 5.1.3.1. - Shared Secret Information | 2.5. Update Section 5.1.3.1 - Shared Secret Information | |||
| Section 5.1.3.1 of RFC 4210 [RFC4210] describes the MAC based | Section 5.1.3.1 of [RFC4210] describes the protection of a PKIMessage | |||
| protection of a PKIMessage using the algorithm id-PasswordBasedMac. | based on message authentication code (MAC) using the algorithm id- | |||
| PasswordBasedMac. | ||||
| Replace the first paragraph with the following text: | Replace the first paragraph with the following text: | |||
| In this case, the sender and recipient share secret information with | In this case, the sender and recipient share secret information with | |||
| sufficient entropy (established via out-of-band means or from a | sufficient entropy (established via out-of-band means or from a | |||
| previous PKI management operation). PKIProtection will contain a MAC | previous PKI management operation). PKIProtection will contain a MAC | |||
| value and the protectionAlg MAY be one of the options described in | value and the protectionAlg MAY be one of the options described in | |||
| CMP Algorithms [I-D.ietf-lamps-cmp-algorithms]. The PasswordBasedMac | CMP Algorithms [RFC9481]. The PasswordBasedMac is specified as | |||
| is specified as follows (see also [RFC4211] and [RFC9045]): | follows (see also [RFC4211] and [RFC9045]): | |||
| Replace the last paragraph with the following text (Note: This fixes | Replace the last paragraph with the following text (Note: This fixes | |||
| Errata ID 2616): | Errata ID 2616): | |||
| Note: It is RECOMMENDED that the fields of PBMParameter remain | Note: It is RECOMMENDED that the fields of PBMParameter remain | |||
| constant throughout the messages of a single transaction (e.g., | constant throughout the messages of a single transaction (e.g., | |||
| ir/ip/certConf/pkiConf) to reduce the overhead associated with | ir/ip/certConf/pkiConf) to reduce the overhead associated with | |||
| PasswordBasedMac computation. | PasswordBasedMac computation. | |||
| 2.6. Replace Section 5.1.3.4 - Multiple Protection | 2.6. Replace Section 5.1.3.4 - Multiple Protection | |||
| Section 5.1.3.4 of RFC 4210 [RFC4210] describes the nested message. | Section 5.1.3.4 of [RFC4210] describes the nested message. This | |||
| This document enables using nested messages also for batch-delivery | document also enables using nested messages for batch-delivery | |||
| transport of PKI messages between PKI management entities and with | transport of PKI messages between PKI management entities and with | |||
| mixed body types. | mixed body types. | |||
| Replace the text of the section with the following text: | Replace the text of the section with the following text: | |||
| 5.1.3.4. Multiple Protection | 5.1.3.4. Multiple Protection | |||
| When receiving a protected PKI message, a PKI management entity such | When receiving a protected PKI message, a PKI management entity, such | |||
| as an RA MAY forward that message adding its own protection (which is | as an RA, MAY forward that message along with adding its own | |||
| a MAC or a signature, depending on the information and certificates | protection (which is a MAC or a signature, depending on the | |||
| shared between the RA and the CA). Additionally, multiple PKI | information and certificates shared between the RA and the CA). | |||
| messages MAY be aggregated. There are several use cases for such | Additionally, multiple PKI messages MAY be aggregated. There are | |||
| messages. | several use cases for such messages. | |||
| * The RA confirms having validated and authorized a message and | * The RA confirms having validated and authorized a message and | |||
| forwards the original message unchanged. | forwards the original message unchanged. | |||
| * The RA modifies the message(s) in some way (e.g., adds or modifies | * The RA modifies the message(s) in some way (e.g., adds or modifies | |||
| particular field values or adds new extensions) before forwarding | particular field values or adds new extensions) before forwarding | |||
| them, then it MAY create its own desired PKIBody. If the changes | them; then, it MAY create its own desired PKIBody. If the changes | |||
| made by the RA to PKIMessage break the POP of a certificate | made by the RA to PKIMessage break the POP of a certificate | |||
| request, the RA MUST set the popo field to RAVerified. It MAY | request, the RA MUST set the popo field to RAVerified. It MAY | |||
| include the original PKIMessage from the EE in the generalInfo | include the original PKIMessage from the EE in the generalInfo | |||
| field of PKIHeader of a nested message (to accommodate, for | field of PKIHeader of a nested message (to accommodate, for | |||
| example, cases in which the CA wishes to check POP or other | example, cases in which the CA wishes to check POP or other | |||
| information on the original EE message). The infoType to be used | information on the original EE message). The infoType to be used | |||
| in this situation is {id-it 15} (see Section 5.3.19 for the value | in this situation is {id-it 15} (see Section 5.3.19 for the value | |||
| of id-it) and the infoValue is PKIMessages (contents MUST be in | of id-it), and the infoValue is PKIMessages (contents MUST be in | |||
| the same order as the message in PKIBody). | the same order as the message in PKIBody). | |||
| * A PKI management entity collects several messages that are to be | * A PKI management entity collects several messages that are to be | |||
| forwarded in the same direction and forwards them in a batch. | forwarded in the same direction and forwards them in a batch. | |||
| Request messages can be transferred as batch upstream (towards the | Request messages can be transferred as batch upstream (towards the | |||
| CA); response or announce messages can be transferred as batch | CA); response or announce messages can be transferred as batch | |||
| downstream (towards an RA, but not to the EE). This can for | downstream (towards an RA but not to the EE). For instance, this | |||
| instance be used when bridging an off-line connection between two | can be used when bridging an off-line connection between two PKI | |||
| PKI management entities. | management entities. | |||
| These use cases are accomplished by nesting the messages within a new | These use cases are accomplished by nesting the messages within a new | |||
| PKI message. The structure used is as follows: | PKI message. The structure used is as follows: | |||
| NestedMessageContent ::= PKIMessages | NestedMessageContent ::= PKIMessages | |||
| 2.7. Replace Section 5.2.2. - Encrypted Values | 2.7. Replace Section 5.2.2 - Encrypted Values | |||
| Section 5.2.2 of RFC 4210 [RFC4210] describes the use of | Section 5.2.2 of [RFC4210] describes the use of EncryptedValue to | |||
| EncryptedValue to transport encrypted data. This document extends | transport encrypted data. This document extends the encryption of | |||
| the encryption of data to preferably use EnvelopedData. | data to preferably use EnvelopedData. | |||
| Replace the text of the section with the following text: | Replace the text of the section with the following text: | |||
| 5.2.2. Encrypted Values | 5.2.2. Encrypted Values | |||
| Where encrypted data (in this specification, private keys, | Where encrypted data (in this specification, private keys, | |||
| certificates, or revocation passphrase) are sent in PKI messages, the | certificates, or revocation passphrase) is sent in PKI messages, the | |||
| EncryptedKey data structure is used. | EncryptedKey data structure is used. | |||
| EncryptedKey ::= CHOICE { | EncryptedKey ::= CHOICE { | |||
| encryptedValue EncryptedValue, -- deprecated | encryptedValue EncryptedValue, -- deprecated | |||
| envelopedData [0] EnvelopedData } | envelopedData [0] EnvelopedData } | |||
| See CRMF [RFC4211] for EncryptedKey and EncryptedValue syntax and CMS | See Certificate Request Message Format (CRMF) [RFC4211] for | |||
| [RFC5652] for EnvelopedData syntax. Using the EncryptedKey data | EncryptedKey and EncryptedValue syntax and Cryptographic Message | |||
| structure offers the choice to either use EncryptedValue (for | Syntax (CMS) [RFC5652] for EnvelopedData syntax. Using the | |||
| backward compatibility only) or EnvelopedData. The use of the | EncryptedKey data structure offers the choice to either use | |||
| EncryptedValue structure has been deprecated in favor of the | EncryptedValue (for backward compatibility only) or EnvelopedData. | |||
| EnvelopedData structure. Therefore, it is RECOMMENDED to use | The use of the EncryptedValue structure has been deprecated in favor | |||
| of the EnvelopedData structure. Therefore, it is RECOMMENDED to use | ||||
| EnvelopedData. | EnvelopedData. | |||
| Note: The EncryptedKey structure defined in CRMF [RFC4211] is reused | Note: The EncryptedKey structure defined in CRMF [RFC4211] is reused | |||
| here, which makes the update backward compatible. Using the new | here, which makes the update backward compatible. Using the new | |||
| syntax with the untagged default choice EncryptedValue is bits-on- | syntax with the untagged default choice EncryptedValue is bits-on- | |||
| the-wire compatible with the old syntax. | the-wire compatible with the old syntax. | |||
| To indicate support for EnvelopedData the pvno cmp2021 has been | To indicate support for EnvelopedData, the pvno cmp2021 has been | |||
| introduced. Details on the usage of pvno values is described in | introduced. Details on the usage of the protocol version number | |||
| Section 7. | (pvno) are described in Section 7. | |||
| The EncryptedKey data structure is used in CMP to transport a private | The EncryptedKey data structure is used in CMP to transport a private | |||
| key, certificate, or revocation passphrase in encrypted form. | key, certificate, or revocation passphrase in encrypted form. | |||
| EnvelopedData is used as follows: | EnvelopedData is used as follows: | |||
| * It contains only one RecipientInfo structure because the content | * It contains only one RecipientInfo structure because the content | |||
| is encrypted only for one recipient. | is encrypted only for one recipient. | |||
| * It may contain a private key in the AsymmetricKeyPackage structure | * It may contain a private key in the AsymmetricKeyPackage | |||
| as defined in RFC 5958 [RFC5958] wrapped in a SignedData structure | structure, as defined in [RFC5958], that is wrapped in a | |||
| as specified in CMS section 5 [RFC5652] and [RFC8933] signed by | SignedData structure, as specified in Section 5 of CMS [RFC5652] | |||
| the Key Generation Authority. | and [RFC8933], and signed by the Key Generation Authority. | |||
| * It may contain a certificate or revocation passphrase directly in | * It may contain a certificate or revocation passphrase directly in | |||
| the encryptedContent field. | the encryptedContent field. | |||
| The content of the EnvelopedData structure, as specified in CMS | The content of the EnvelopedData structure, as specified in Section 6 | |||
| section 6 [RFC5652], MUST be encrypted using a newly generated | of CMS [RFC5652], MUST be encrypted using a newly generated symmetric | |||
| symmetric content-encryption key. This content-encryption key MUST | content-encryption key. This content-encryption key MUST be securely | |||
| be securely provided to the recipient using one of three key | provided to the recipient using one of three key management | |||
| management techniques. | techniques. | |||
| The choice of the key management technique to be used by the sender | The choice of the key management technique to be used by the sender | |||
| depends on the credential available at the recipient: | depends on the credential available at the recipient: | |||
| * Recipient's certificate that contains a key usage extension | * recipient's certificate with an algorithm identifier and a public | |||
| asserting keyAgreement: The content-encryption key will be | key that supports key transport and where any given key usage | |||
| protected using the key agreement key management technique, as | extension allows keyEncipherment: The content-encryption key will | |||
| specified in CMS section 6.2.2 [RFC5652]. This is the preferred | be protected using the key transport key management technique, as | |||
| technique. | specified in Section 6.2.1 of CMS [RFC5652]. | |||
| * Recipient's certificate that contains a key usage extension | * recipient's certificate with an algorithm identifier and a public | |||
| asserting keyEncipherment: The content-encryption key will be | key that supports key agreement and where any given key usage | |||
| protected using the key transport key management technique, as | extension allows keyAgreement: The content-encryption key will be | |||
| specified in CMS section 6.2.1 [RFC5652]. | protected using the key agreement key management technique, as | |||
| specified in Section 6.2.2 of CMS [RFC5652]. | ||||
| * A password or shared secret: The content-encryption key will be | * a password or shared secret: The content-encryption key will be | |||
| protected using the password-based key management technique, as | protected using the password-based key management technique, as | |||
| specified in CMS section 6.2.4 [RFC5652]. | specified in Section 6.2.4 of CMS [RFC5652]. | |||
| 2.8. New Section 5.2.9 - GeneralizedTime | 2.8. New Section 5.2.9 - GeneralizedTime | |||
| The following subsection point implementers to [RFC5280] regarding | The following subsection points implementers to [RFC5280] regarding | |||
| usage of GeneralizedTime. | usage of GeneralizedTime. | |||
| Insert this section after Section 5.2.8.4: | Insert this section after Section 5.2.8.4 of [RFC4210]: | |||
| 5.2.9 GeneralizedTime | 5.2.9 GeneralizedTime | |||
| GeneralizedTime is a standard ASN.1 type and SHALL be used as | GeneralizedTime is a standard ASN.1 type and SHALL be used as | |||
| specified in RFC 5280 Section 4.1.2.5.2 [RFC5280]. | specified in Section 4.1.2.5.2 of [RFC5280]. | |||
| 2.9. Update Section 5.3.4. - Certification Response | 2.9. Update Section 5.3.4 - Certification Response | |||
| Section 5.3.4 of RFC 4210 [RFC4210] describes the Certification | Section 5.3.4 of [RFC4210] describes the Certification Response. | |||
| Response. This document updates the syntax by using the parent | This document updates the syntax by using the parent structure | |||
| structure EncryptedKey instead of EncryptedValue as described in | EncryptedKey instead of EncryptedValue, as described in Section 2.7 | |||
| Section 2.7 above. Additionally, it clarifies the certReqId to be | above. Additionally, it clarifies the certReqId to be used in | |||
| used in response to a p10cr message. | response to a p10cr message. | |||
| Replace the ASN.1 syntax with the following text (Note: This also | Replace the ASN.1 syntax with the following text (Note: This also | |||
| fixes Errata ID 3949 and 4078): | fixes Errata ID 3949 and 4078): | |||
| CertRepMessage ::= SEQUENCE { | CertRepMessage ::= SEQUENCE { | |||
| caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | |||
| OPTIONAL, | OPTIONAL, | |||
| response SEQUENCE OF CertResponse | response SEQUENCE OF CertResponse | |||
| } | } | |||
| skipping to change at page 13, line 23 ¶ | skipping to change at line 538 ¶ | |||
| status PKIStatusInfo, | status PKIStatusInfo, | |||
| certifiedKeyPair CertifiedKeyPair OPTIONAL, | certifiedKeyPair CertifiedKeyPair OPTIONAL, | |||
| rspInfo OCTET STRING OPTIONAL | rspInfo OCTET STRING OPTIONAL | |||
| -- analogous to the id-regInfo-utf8Pairs string defined | -- analogous to the id-regInfo-utf8Pairs string defined | |||
| -- for regInfo in CertReqMsg [RFC4211] | -- for regInfo in CertReqMsg [RFC4211] | |||
| } | } | |||
| CertifiedKeyPair ::= SEQUENCE { | CertifiedKeyPair ::= SEQUENCE { | |||
| certOrEncCert CertOrEncCert, | certOrEncCert CertOrEncCert, | |||
| privateKey [0] EncryptedKey OPTIONAL, | privateKey [0] EncryptedKey OPTIONAL, | |||
| -- see [RFC4211] for comment on encoding | -- See [RFC4211] for comments on encoding. | |||
| publicationInfo [1] PKIPublicationInfo OPTIONAL | publicationInfo [1] PKIPublicationInfo OPTIONAL | |||
| } | } | |||
| CertOrEncCert ::= CHOICE { | CertOrEncCert ::= CHOICE { | |||
| certificate [0] CMPCertificate, | certificate [0] CMPCertificate, | |||
| encryptedCert [1] EncryptedKey | encryptedCert [1] EncryptedKey | |||
| } | } | |||
| Add the following as a new paragraph right after the ASN.1 syntax: | Add the following as a new paragraph right after the ASN.1 syntax: | |||
| A p10cr message contains exactly one CertificationRequestInfo data | A p10cr message contains exactly one CertificationRequestInfo data | |||
| structure as specified in PKCS#10 [RFC2986] but no certReqId. | structure, as specified in PKCS #10 [RFC2986], but no certReqId. | |||
| Therefore, the certReqId in the corresponding certification response | Therefore, the certReqId in the corresponding Certification Response | |||
| (cp) message MUST be set to -1. | (cp) message MUST be set to -1. | |||
| Add the following as new paragraphs to the end of the section: | Add the following as new paragraphs to the end of the section: | |||
| The use of EncryptedKey is described in Section 5.2.2. | The use of EncryptedKey is described in Section 5.2.2. | |||
| Note: To indicate support for EnvelopedData the pvno cmp2021 has been | Note: To indicate support for EnvelopedData, the pvno cmp2021 has | |||
| introduced. Details on the usage of different pvno values are | been introduced. Details on the usage of different protocol version | |||
| described in Section 7. | numbers (pvno) are described in Section 7. | |||
| 2.10. Update Section 5.3.18. - Certificate Confirmation Content | 2.10. Update Section 5.3.18 - Certificate Confirmation Content | |||
| This section introduces an optional hashAlg field to the CertStatus | This section introduces an optional hashAlg field to the CertStatus | |||
| type used in certConf messages to explicitly specify the hash | type used in certConf messages to explicitly specify the hash | |||
| algorithm for those certificates where no hash algorithm is specified | algorithm for those certificates where no hash algorithm is specified | |||
| in the signatureAlgorithm field. | in the signatureAlgorithm field. | |||
| Replace the ASN.1 Syntax of CertStatus with the following text: | Replace the ASN.1 Syntax of CertStatus with the following text: | |||
| CertStatus ::= SEQUENCE { | CertStatus ::= SEQUENCE { | |||
| certHash OCTET STRING, | certHash OCTET STRING, | |||
| skipping to change at page 14, line 25 ¶ | skipping to change at line 589 ¶ | |||
| The hashAlg field SHOULD be used only in exceptional cases where the | The hashAlg field SHOULD be used only in exceptional cases where the | |||
| signatureAlgorithm of the certificate to be confirmed does not | signatureAlgorithm of the certificate to be confirmed does not | |||
| specify a hash algorithm in the OID or in the parameters. In such | specify a hash algorithm in the OID or in the parameters. In such | |||
| cases, e.g., for EdDSA, the hashAlg MUST be used to specify the hash | cases, e.g., for EdDSA, the hashAlg MUST be used to specify the hash | |||
| algorithm to be used for calculating the certHash value. Otherwise, | algorithm to be used for calculating the certHash value. Otherwise, | |||
| the certHash value SHALL be computed using the same hash algorithm as | the certHash value SHALL be computed using the same hash algorithm as | |||
| used to create and verify the certificate signature. If hashAlg is | used to create and verify the certificate signature. If hashAlg is | |||
| used, the CMP version indicated by the certConf message header must | used, the CMP version indicated by the certConf message header must | |||
| be cmp2021(3). | be cmp2021(3). | |||
| 2.11. Update Section 5.3.19.2. - Signing Key Pair Types | 2.11. Update Section 5.3.19.2 - Signing Key Pair Types | |||
| The following section clarifies the usage of the Signing Key Pair | The following section clarifies the usage of the Signing Key Pair | |||
| Types on referencing EC curves. | Types on referencing elliptic curves. | |||
| Insert this note at the end of Section 5.3.19.2: | Insert this note at the end of Section 5.3.19.2 of [RFC4210]: | |||
| Note: In case several EC curves are supported, several id-ecPublicKey | Note: In case several elliptic curves are supported, several id- | |||
| elements as defined in RFC 5480 [RFC5480] need to be given, one per | ecPublicKey elements as defined in [RFC5480] need to be given, one | |||
| named curve. | per named curve. | |||
| 2.12. Update Section 5.3.19.3. - Encryption/Key Agreement Key Pair | 2.12. Update Section 5.3.19.3 - Encryption/Key Agreement Key Pair Types | |||
| Types | ||||
| The following section clarifies the use of the Encryption/Key | The following section clarifies the use of the Encryption/Key | |||
| Agreement Key Pair Types on referencing EC curves. | Agreement Key Pair Types on referencing elliptic curves. | |||
| Insert this note at the end of Section 5.3.19.3: | Insert this note at the end of Section 5.3.19.3 of [RFC4210]: | |||
| Note: In case several EC curves are supported, several id-ecPublicKey | Note: In case several elliptic curves are supported, several id- | |||
| elements as defined in RFC 5480 [RFC5480]need to be given, one per | ecPublicKey elements as defined in [RFC5480] need to be given, one | |||
| named curve. | per named curve. | |||
| 2.13. Replace Section 5.3.19.9. - Revocation Passphrase | 2.13. Replace Section 5.3.19.9 - Revocation Passphrase | |||
| Section 5.3.19.9 of RFC 4210 [RFC4210] describes the provisioning of | Section 5.3.19.9 of [RFC4210] describes the provisioning of a | |||
| a revocation passphrase for authenticating a later revocation | revocation passphrase for authenticating a later revocation request. | |||
| request. This document updates the handling by using the parent | This document updates the handling by using the parent structure | |||
| structure EncryptedKey instead of EncryptedValue to transport this | EncryptedKey instead of EncryptedValue to transport this information, | |||
| information as described in Section 2.7 above. | as described in Section 2.7 above. | |||
| Replace the text of the section with the following text: | Replace the text of the section with the following text: | |||
| 5.3.19.9. Revocation Passphrase | 5.3.19.9. Revocation Passphrase | |||
| This MAY be used by the EE to send a passphrase to a CA/RA for the | This MAY be used by the EE to send a passphrase to a CA/RA for the | |||
| purpose of authenticating a later revocation request (in the case | purpose of authenticating a later revocation request (in the case | |||
| that the appropriate signing private key is no longer available to | that the appropriate signing private key is no longer available to | |||
| authenticate the request). See Appendix B for further details on the | authenticate the request). See Appendix B for further details on the | |||
| use of this mechanism. | use of this mechanism. | |||
| GenMsg: {id-it 12}, EncryptedKey | GenMsg: {id-it 12}, EncryptedKey | |||
| GenRep: {id-it 12}, < absent > | GenRep: {id-it 12}, < absent > | |||
| The use of EncryptedKey is described in Section 5.2.2. | The use of EncryptedKey is described in Section 5.2.2. | |||
| 2.14. New Section 5.3.19.14 - CA Certificates | 2.14. New Section 5.3.19.14 - CA Certificates | |||
| The following subsection describes PKI general messages using id-it- | The following subsection describes PKI general messages using id-it- | |||
| caCerts. The intended use is specified in Lightweight CMP Profile | caCerts. The intended use is specified in Section 4.3 of the | |||
| Section 4.3 [I-D.ietf-lamps-lightweight-cmp-profile]. | Lightweight CMP Profile [RFC9483]. | |||
| Insert this section after Section 5.3.19.13: | Insert this section after Section 5.3.19.13 of [RFC4210]: | |||
| 2.3.19.14 CA Certificates | 5.3.19.14. CA Certificates | |||
| This MAY be used by the client to get CA certificates. | This MAY be used by the client to get CA certificates. | |||
| GenMsg: {id-it 17}, < absent > | GenMsg: {id-it 17}, < absent > | |||
| GenRep: {id-it 17}, SEQUENCE SIZE (1..MAX) OF | GenRep: {id-it 17}, SEQUENCE SIZE (1..MAX) OF | |||
| CMPCertificate | < absent > | CMPCertificate | < absent > | |||
| 2.15. New Section 5.3.19.15 - Root CA Certificate Update | 2.15. New Section 5.3.19.15 - Root CA Certificate Update | |||
| The following subsection describes PKI general messages using id-it- | The following subsection describes PKI general messages using id-it- | |||
| rootCaCert and id-it-rootCaKeyUpdate. The use is specified in | rootCaCert and id-it-rootCaKeyUpdate. The use is specified in | |||
| Lightweight CMP Profile Section 4.3 | Section 4.3 of the Lightweight CMP Profile [RFC9483]. | |||
| [I-D.ietf-lamps-lightweight-cmp-profile]. | ||||
| Insert this section after new Section 5.3.19.14: | Insert this section after the new Section 5.3.19.14: | |||
| 5.3.19.15. Root CA Certificate Update | 5.3.19.15. Root CA Certificate Update | |||
| This MAY be used by the client to get an update of a root CA | This MAY be used by the client to get an update of a root CA | |||
| certificate, which is provided in the body of the request message. | certificate, which is provided in the body of the request message. | |||
| In contrast to the ckuann message this approach follows the request/ | In contrast to the ckuann message, this approach follows the request/ | |||
| response model. | response model. | |||
| The EE SHOULD reference its current trust anchor in a TrustAnchor | The EE SHOULD reference its current trust anchor in a TrustAnchor | |||
| structure in the request body, giving the root CA certificate if | structure in the request body, giving the root CA certificate if | |||
| available, otherwise the public key value of the trust anchor. | available; otherwise, the public key value of the trust anchor is | |||
| given. | ||||
| GenMsg: {id-it 20}, RootCaCertValue | < absent > | GenMsg: {id-it 20}, RootCaCertValue | < absent > | |||
| GenRep: {id-it 18}, RootCaKeyUpdateContent | < absent > | GenRep: {id-it 18}, RootCaKeyUpdateContent | < absent > | |||
| RootCaCertValue ::= CMPCertificate | RootCaCertValue ::= CMPCertificate | |||
| RootCaKeyUpdateValue ::= RootCaKeyUpdateContent | RootCaKeyUpdateValue ::= RootCaKeyUpdateContent | |||
| RootCaKeyUpdateContent ::= SEQUENCE { | RootCaKeyUpdateContent ::= SEQUENCE { | |||
| newWithNew CMPCertificate, | newWithNew CMPCertificate, | |||
| skipping to change at page 16, line 38 ¶ | skipping to change at line 690 ¶ | |||
| oldWithNew [1] CMPCertificate OPTIONAL | oldWithNew [1] CMPCertificate OPTIONAL | |||
| } | } | |||
| Note: In contrast to CAKeyUpdAnnContent, this type offers omitting | Note: In contrast to CAKeyUpdAnnContent, this type offers omitting | |||
| newWithOld and oldWithNew in the GenRep message, depending on the | newWithOld and oldWithNew in the GenRep message, depending on the | |||
| needs of the EE. | needs of the EE. | |||
| 2.16. New Section 5.3.19.16 - Certificate Request Template | 2.16. New Section 5.3.19.16 - Certificate Request Template | |||
| The following subsection introduces the PKI general message using id- | The following subsection introduces the PKI general message using id- | |||
| it-certReqTemplate. Details are specified in the Lightweight CMP | it-certReqTemplate. Details are specified in Section 4.3 of the | |||
| Profile Section 4.3 [I-D.ietf-lamps-lightweight-cmp-profile]. | Lightweight CMP Profile [RFC9483]. | |||
| Insert this section after new Section 5.3.19.15: | Insert this section after the new Section 5.3.19.15: | |||
| 5.3.19.16. Certificate Request Template | 5.3.19.16. Certificate Request Template | |||
| This MAY be used by the client to get a template containing | This MAY be used by the client to get a template containing | |||
| requirements for certificate request attributes and extensions. The | requirements for certificate request attributes and extensions. The | |||
| controls id-regCtrl-algId and id-regCtrl-rsaKeyLen MAY contain | controls id-regCtrl-algId and id-regCtrl-rsaKeyLen MAY contain | |||
| details on the types of subject public keys the CA is willing to | details on the types of subject public keys the CA is willing to | |||
| certify. | certify. | |||
| The id-regCtrl-algId control MAY be used to identify a cryptographic | The id-regCtrl-algId control MAY be used to identify a cryptographic | |||
| algorithm, see RFC 5280 Section 4.1.2.7 [RFC5280], other than | algorithm (see Section 4.1.2.7 of [RFC5280]) other than | |||
| rsaEncryption. The algorithm field SHALL identify a cryptographic | rsaEncryption. The algorithm field SHALL identify a cryptographic | |||
| algorithm. The contents of the optional parameters field will vary | algorithm. The contents of the optional parameters field will vary | |||
| according to the algorithm identified. For example, when the | according to the algorithm identified. For example, when the | |||
| algorithm is set to id-ecPublicKey, the parameters identify the | algorithm is set to id-ecPublicKey, the parameters identify the | |||
| elliptic curve to be used, see [RFC5480]. | elliptic curve to be used; see [RFC5480]. | |||
| The id-regCtrl-rsaKeyLen control SHALL be used for algorithm | The id-regCtrl-rsaKeyLen control SHALL be used for algorithm | |||
| rsaEncryption and SHALL contain the intended modulus bit length of | rsaEncryption and SHALL contain the intended modulus bit length of | |||
| the RSA key. | the RSA key. | |||
| GenMsg: {id-it 19}, < absent > | GenMsg: {id-it 19}, < absent > | |||
| GenRep: {id-it 19}, CertReqTemplateContent | < absent > | GenRep: {id-it 19}, CertReqTemplateContent | < absent > | |||
| CertReqTemplateValue ::= CertReqTemplateContent | CertReqTemplateValue ::= CertReqTemplateContent | |||
| skipping to change at page 17, line 47 ¶ | skipping to change at line 745 ¶ | |||
| RsaKeyLenCtrl ::= INTEGER (1..MAX) | RsaKeyLenCtrl ::= INTEGER (1..MAX) | |||
| The CertReqTemplateValue contains the prefilled certTemplate to be | The CertReqTemplateValue contains the prefilled certTemplate to be | |||
| used for a future certificate request. The publicKey field in the | used for a future certificate request. The publicKey field in the | |||
| certTemplate MUST NOT be used. In case the PKI management entity | certTemplate MUST NOT be used. In case the PKI management entity | |||
| wishes to specify supported public-key algorithms, the keySpec field | wishes to specify supported public-key algorithms, the keySpec field | |||
| MUST be used. One AttributeTypeAndValue per supported algorithm or | MUST be used. One AttributeTypeAndValue per supported algorithm or | |||
| RSA key length MUST be used. | RSA key length MUST be used. | |||
| Note: The Controls ASN.1 type is defined in CRMF Section 6 [RFC4211] | Note: The controls ASN.1 type is defined in Section 6 of CRMF | |||
| [RFC4211]. | ||||
| 2.17. New Section 5.3.19.17 - CRL Update Retrieval | 2.17. New Section 5.3.19.17 - CRL Update Retrieval | |||
| The following subsection introduces the PKI general message using id- | The following subsection introduces the PKI general message using id- | |||
| it-crlStatusList and id-it-crls. Details are specified in the | it-crlStatusList and id-it-crls. Details are specified in | |||
| Lightweight CMP Profile Section 4.3 | Section 4.3 of the Lightweight CMP Profile [RFC9483]. Insert this | |||
| [I-D.ietf-lamps-lightweight-cmp-profile]. Insert this section after | section after the new Section 5.3.19.16: | |||
| new Section 5.3.19.16: | ||||
| 5.3.19.17. CRL Update Retrieval | 5.3.19.17. CRL Update Retrieval | |||
| This MAY be used by the client to get new CRLs, specifying the source | This MAY be used by the client to get new CRLs, specifying the source | |||
| of the CRLs and the thisUpdate value of the latest CRL it already | of the CRLs and the thisUpdate value of the latest CRL it already | |||
| has, if available. A CRL source is given either by a | has, if available. A CRL source is given either by a | |||
| DistributionPointName or the GeneralNames of the issuing CA. The | DistributionPointName or the GeneralNames of the issuing CA. The | |||
| DistributionPointName should be treated as an internal pointer to | DistributionPointName should be treated as an internal pointer to | |||
| identify a CRL that the server already has and not as a way to ask | identify a CRL that the server already has and not as a way to ask | |||
| the server to fetch CRLs from external locations. The server shall | the server to fetch CRLs from external locations. The server shall | |||
| provide only those CRLs that are more recent than the ones indicated | only provide those CRLs that are more recent than the ones indicated | |||
| by the client. | by the client. | |||
| GenMsg: {id-it 22}, SEQUENCE SIZE (1..MAX) OF CRLStatus | GenMsg: {id-it 22}, SEQUENCE SIZE (1..MAX) OF CRLStatus | |||
| GenRep: {id-it 23}, SEQUENCE SIZE (1..MAX) OF | GenRep: {id-it 23}, SEQUENCE SIZE (1..MAX) OF | |||
| CertificateList | < absent > | CertificateList | < absent > | |||
| CRLSource ::= CHOICE { | CRLSource ::= CHOICE { | |||
| dpn [0] DistributionPointName, | dpn [0] DistributionPointName, | |||
| issuer [1] GeneralNames } | issuer [1] GeneralNames } | |||
| CRLStatus ::= SEQUENCE { | CRLStatus ::= SEQUENCE { | |||
| source CRLSource, | source CRLSource, | |||
| thisUpdate Time OPTIONAL } | thisUpdate Time OPTIONAL } | |||
| 2.18. Update Section 5.3.21 - Error Message Content | 2.18. Update Section 5.3.21 - Error Message Content | |||
| Section 5.3.21 of RFC 4210 [RFC4210] describes the regular use of | Section 5.3.21 of [RFC4210] describes the regular use of error | |||
| error messages. This document adds a use by a PKI management entity | messages. This document adds a use by a PKI management entity to | |||
| to initiate delayed delivery in response to certConf, rr, and genm | initiate delayed delivery in response to certConf, rr, and genm | |||
| requests and to error messages. | requests and to error messages. | |||
| Replace the first sentence of the first paragraph with the following | Replace the first sentence of the first paragraph with the following | |||
| one: | one: | |||
| This data structure MAY be used by EE, CA, or RA to convey error info | This data structure MAY be used by an EE, CA, or RA to convey error | |||
| and by a PKI management entity to initiate delayed delivery of | information and by a PKI management entity to initiate delayed | |||
| responses. | delivery of responses. | |||
| Replace the second paragraph with the following text: | Replace the second paragraph with the following text: | |||
| This message MAY be generated at any time during a PKI transaction. | This message MAY be generated at any time during a PKI transaction. | |||
| If the client sends this request, the server MUST respond with a | If the client sends this request, the server MUST respond with a | |||
| PKIConfirm response, or another ErrorMsg if any part of the header is | PKIConfirm response or another ErrorMsg if any part of the header is | |||
| not valid. In case a PKI management entity sends an error message to | not valid. In case a PKI management entity sends an error message to | |||
| the EE with the pKIStatusInfo field containing the status "waiting", | the EE with the pKIStatusInfo field containing the status "waiting", | |||
| the EE will initiate polling as described in Section 5.3.22. | the EE will initiate polling as described in Section 5.3.22. | |||
| Otherwise, both sides MUST treat this message as the end of the | Otherwise, both sides MUST treat this message as the end of the | |||
| transaction (if a transaction is in progress). | transaction (if a transaction is in progress). | |||
| 2.19. Replace Section 5.3.22 - Polling Request and Response | 2.19. Replace Section 5.3.22 - Polling Request and Response | |||
| Section 5.3.22 of RFC 4210 [RFC4210] describes when and how polling | Section 5.3.22 of [RFC4210] describes when and how polling messages | |||
| messages are used for ir, cr, and kur messages. This document | are used for ir, cr, and kur messages. This document extends the | |||
| extends the polling mechanism for outstanding responses to any kind | polling mechanism for outstanding responses to any kind of request | |||
| of request message. This update also fixes the inconsistent use of | message. This update also fixes the inconsistent use of the terms | |||
| the terms 'rReq' vs. 'pollReq' and 'pRep' vs. 'pollRep'. | 'pReq' vs. 'pollReq' and 'pRep' vs. 'pollRep'. | |||
| Replace Section 5.3.22 with following text: | Replace Section 5.3.22 of [RFC4210] with following text: | |||
| This pair of messages is intended to handle scenarios in which the | This pair of messages is intended to handle scenarios in which the | |||
| client needs to poll the server to determine the status of an | client needs to poll the server to determine the status of an | |||
| outstanding response (i.e., when the "waiting" PKIStatus has been | outstanding response (i.e., when the "waiting" PKIStatus has been | |||
| received). | received). | |||
| PollReqContent ::= SEQUENCE OF SEQUENCE { | PollReqContent ::= SEQUENCE OF SEQUENCE { | |||
| certReqId INTEGER } | certReqId INTEGER } | |||
| PollRepContent ::= SEQUENCE OF SEQUENCE { | PollRepContent ::= SEQUENCE OF SEQUENCE { | |||
| skipping to change at page 20, line 11 ¶ | skipping to change at line 842 ¶ | |||
| multiple certConf messages can be sent during transactions. There | multiple certConf messages can be sent during transactions. There | |||
| will be one sent in response to each ip, cp, or kup that contains a | will be one sent in response to each ip, cp, or kup that contains a | |||
| CertStatus for an issued certificate. | CertStatus for an issued certificate. | |||
| 1 In response to an ip, cp, or kup message, an EE will send a | 1 In response to an ip, cp, or kup message, an EE will send a | |||
| certConf for all issued certificates and expect a PKIconf for each | certConf for all issued certificates and expect a PKIconf for each | |||
| certConf. An EE will send a pollReq message in response to each | certConf. An EE will send a pollReq message in response to each | |||
| CertResponse element of an ip, cp, or kup message with status | CertResponse element of an ip, cp, or kup message with status | |||
| "waiting" and in response to an error message with status | "waiting" and in response to an error message with status | |||
| "waiting". Its certReqId MUST be either the index of a | "waiting". Its certReqId MUST be either the index of a | |||
| CertResponse data structure with status "waiting" or -1 referring | CertResponse data structure with status "waiting" or -1, referring | |||
| to the complete response. | to the complete response. | |||
| 2 In response to a pollReq, a CA/RA will return an ip, cp, or kup if | 2 In response to a pollReq, a CA/RA will return an ip, cp, or kup if | |||
| one or more of still pending requested certificates are ready or | one or more of the still pending requested certificates are ready | |||
| the final response to some other type of request is available; | or the final response to some other type of request is available; | |||
| otherwise, it will return a pollRep. | otherwise, it will return a pollRep. | |||
| 3 If the EE receives a pollRep, it will wait for at least the number | 3 If the EE receives a pollRep, it will wait for at least the number | |||
| of seconds given in the checkAfter field before sending another | of seconds given in the checkAfter field before sending another | |||
| pollReq. | pollReq. | |||
| 4 If the EE receives an ip, cp, or kup, then it will be treated in | 4 If the EE receives an ip, cp, or kup, then it will be treated in | |||
| the same way as the initial response; if it receives any other | the same way as the initial response; if it receives any other | |||
| response, then this will be treated as the final response to the | response, then this will be treated as the final response to the | |||
| original request. | original request. | |||
| skipping to change at page 22, line 11 ¶ | skipping to change at line 898 ¶ | |||
| In the following exchange, the end entity is enrolling for two | In the following exchange, the end entity is enrolling for two | |||
| certificates in one request. | certificates in one request. | |||
| Step End Entity PKI | Step End Entity PKI | |||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | |||
| 1 Format ir | 1 Format ir | |||
| 2 -> ir -> | 2 -> ir -> | |||
| 3 Handle ir | 3 Handle ir | |||
| 4 Manual intervention is | 4 Manual intervention is | |||
| required for both certs. | required for both certs | |||
| 5 <- ip <- | 5 <- ip <- | |||
| 6 Process ip | 6 Process ip | |||
| 7 Format pollReq | 7 Format pollReq | |||
| 8 -> pollReq -> | 8 -> pollReq -> | |||
| 9 Check status of cert requests | 9 Check status of cert requests | |||
| 10 Certificates not ready | 10 Certificates not ready | |||
| 11 Format pollRep | 11 Format pollRep | |||
| 12 <- pollRep <- | 12 <- pollRep <- | |||
| 13 Wait | 13 Wait | |||
| 14 Format pollReq | 14 Format pollReq | |||
| skipping to change at page 23, line 29 ¶ | skipping to change at line 960 ¶ | |||
| | | | | | | | | |||
| | pollRep | other response | | | pollRep | other response | | |||
| +-----------+------------------->+<-------------------+ | +-----------+------------------->+<-------------------+ | |||
| | | | | |||
| v | v | |||
| Handle response | Handle response | |||
| | | | | |||
| v | v | |||
| End | End | |||
| In the following exchange, the end-entity is sending a general | In the following exchange, the end entity is sending a general | |||
| message request, and the response is delayed by the server. | message request, and the response is delayed by the server. | |||
| Step End Entity PKI | Step End Entity PKI | |||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | |||
| 1 Format genm | 1 Format genm | |||
| 2 -> genm -> | 2 -> genm -> | |||
| 3 Handle genm | 3 Handle genm | |||
| 4 delay in response is necessary | 4 delay in response is necessary | |||
| 5 Format error message "waiting" | 5 Format error message "waiting" | |||
| with certReqId set to -1 | with certReqId set to -1 | |||
| 6 <- error <- | 6 <- error <- | |||
| 7 Process error | 7 Process error | |||
| 8 Format pollReq | 8 Format pollReq | |||
| 9 -> pollReq -> | 9 -> pollReq -> | |||
| 10 Check status of original request | 10 Check status of original request | |||
| general message response not ready | general message response not ready | |||
| 11 Format pollRep | 11 Format pollRep | |||
| 12 <- pollRep <- | 12 <- pollRep <- | |||
| 13 Wait | 13 Wait | |||
| 14 Format pollReq | 14 Format pollReq | |||
| 15 -> pollReq -> | 15 -> pollReq -> | |||
| 16 Check status of original request | 16 Check status of original request | |||
| general message response is ready | general message response is ready | |||
| 17 Format genp | 17 Format genp | |||
| 18 <- genp <- | 18 <- genp <- | |||
| 19 Handle genp | 19 Handle genp | |||
| 2.20. Update Section 7 - Version Negotiation | 2.20. Update Section 7 - Version Negotiation | |||
| Section 7 of RFC 4210 [RFC4210] describes the use of CMP protocol | Section 7 of [RFC4210] describes the use of CMP versions. This | |||
| versions. This document describes the handling of the additional CMP | document describes the handling of the additional CMP version | |||
| version cmp2021 introduced to indicate support of EnvelopedData and | cmp2021, which is introduced to indicate support of EnvelopedData and | |||
| hashAlg. | hashAlg. | |||
| Replace the text of the second paragraph with the following text: | Replace the text of the second paragraph with the following text: | |||
| If a client knows the protocol version(s) supported by the server | If a client knows the protocol version(s) supported by the server | |||
| (e.g., from a previous PKIMessage exchange or via some out-of-band | (e.g., from a previous PKIMessage exchange or via some out-of-band | |||
| means), then it MUST send a PKIMessage with the highest version | means), then it MUST send a PKIMessage with the highest version | |||
| supported by both it and the server. If a client does not know what | supported by both it and the server. If a client does not know what | |||
| version(s) the server supports, then it MUST send a PKIMessage using | version(s) the server supports, then it MUST send a PKIMessage using | |||
| the highest version it supports, with the following exception. | the highest version it supports with the following exception. | |||
| Version cmp2021 SHOULD only be used if cmp2021 syntax is needed for | Version cmp2021 SHOULD only be used if cmp2021 syntax is needed for | |||
| the request being sent or for the expected response. | the request being sent or for the expected response. | |||
| Note: Using cmp2000 as the default pvno is done to avoid extra | Note: Using cmp2000 as the default pvno is done to avoid extra | |||
| message exchanges for version negotiation and to foster compatibility | message exchanges for version negotiation and to foster compatibility | |||
| with cmp2000 implementations. Version cmp2021 syntax is only needed | with cmp2000 implementations. Version cmp2021 syntax is only needed | |||
| if a message exchange uses hashAlg (in CertStatus) or EnvelopedData. | if a message exchange uses hashAlg (in CertStatus) or EnvelopedData. | |||
| 2.21. Update Section 7.1.1. - Clients Talking to RFC 2510 Servers | 2.21. Update Section 7.1.1 - Clients Talking to RFC 2510 Servers | |||
| Section 7.1.1 of RFC 4210 [RFC4210] describes the behavior of a | Section 7.1.1 of [RFC4210] describes the behavior of a client sending | |||
| client sending a cmp2000 message talking to a cmp1999 server as | a cmp2000 message talking to a cmp1999 server, as specified in | |||
| specified in RFC 2510 [RFC2510]. This document extends the section | [RFC2510]. This document extends the section to clients with any | |||
| to clients with any higher version than cmp1999. | higher version than cmp1999. | |||
| Replace the first sentence of Section 7.1.1 with the following text: | Replace the first sentence of Section 7.1.1 of [RFC4210] with the | |||
| following text: | ||||
| If, after sending a message with a protocol version number higher | If, after sending a message with a protocol version number higher | |||
| than cmp1999, a client receives an ErrorMsgContent with a version of | than cmp1999, a client receives an ErrorMsgContent with a version of | |||
| cmp1999, then it MUST abort the current transaction. | cmp1999, then it MUST abort the current transaction. | |||
| 2.22. Add Section 8.4 - Private Keys for Certificate Signing and CMP | 2.22. Add Section 8.4 - Private Keys for Certificate Signing and CMP | |||
| Message Protection | Message Protection | |||
| The following subsection addresses the risk arising from reusing the | The following subsection addresses the risk arising from reusing the | |||
| CA private key for CMP message protection. | CA private key for CMP message protection. | |||
| Insert this section after Section 8.3 (Note: This fixes Errata ID | Insert this section after Section 8.3 of [RFC4210] (Note: This fixes | |||
| 5731): | Errata ID 5731): | |||
| 8.4. Private Keys for Certificate Signing and CMP Message Protection | 8.4. Private Keys for Certificate Signing and CMP Message Protection | |||
| A CA should not reuse its certificate signing key for other purposes | A CA should not reuse its certificate signing key for other purposes, | |||
| such as protecting CMP responses and TLS connections. This way, | such as protecting CMP responses and TLS connections. This way, | |||
| exposure to other parts of the system and the number of uses of this | exposure to other parts of the system and the number of uses of this | |||
| particularly critical key is reduced to a minimum. | particularly critical key are reduced to a minimum. | |||
| 2.23. Add Section 8.5 - Entropy of Random Numbers, Key Pairs, and | 2.23. Add Section 8.5 - Entropy of Random Numbers, Key Pairs, and | |||
| Shared Secret Information | Shared Secret Information | |||
| The following subsection addresses the risk arising from low entropy | The following subsection addresses the risk arising from low entropy | |||
| of random numbers, asymmetric keys, and shared secret information. | of random numbers, asymmetric keys, and shared secret information. | |||
| Insert this section after Section 8.4: | Insert this section after the new Section 8.4: | |||
| 8.5. Entropy of Random Numbers, Key Pairs, and Shared Secret | 8.5. Entropy of Random Numbers, Key Pairs, and Shared Secret | |||
| Information | Information | |||
| Implementations must generate nonces and private keys from random | Implementations must generate nonces and private keys from random | |||
| input. The use of inadequate pseudo-random number generators (PRNGs) | input. The use of inadequate pseudorandom number generators (PRNGs) | |||
| to generate cryptographic keys can result in little or no security. | to generate cryptographic keys can result in little or no security. | |||
| An attacker may find it much easier to reproduce the PRNG environment | An attacker may find it much easier to reproduce the PRNG environment | |||
| that produced the keys and to search the resulting small set of | that produced the keys and to search the resulting small set of | |||
| possibilities than brute-force searching the whole key space. As an | possibilities than brute-force searching the whole key space. As an | |||
| example of predictable random numbers see [CVE-2008-0166]; | example of predictable random numbers, see [CVE-2008-0166]; | |||
| consequences of low-entropy random numbers are discussed in Mining | consequences of low-entropy random numbers are discussed in Mining | |||
| Your Ps and Qs [MiningPsQs]. The generation of quality random | Your Ps and Qs [MiningPsQs]. The generation of quality random | |||
| numbers is difficult. ISO/IEC 20543:2019 [ISO.20543-2019], NIST SP | numbers is difficult. ISO/IEC 20543:2019 [ISO.20543-2019], NIST SP | |||
| 800-90A Rev.1 [NIST.SP.800-90Ar1], BSI AIS 31 V2.0 [AIS31], and | 800-90A Rev.1 [NIST_SP_800_90Ar1], BSI AIS 31 V2.0 [AIS31], and other | |||
| others offer valuable guidance in this area. | specifications offer valuable guidance in this area. | |||
| If shared secret information is generated by a cryptographically | If shared secret information is generated by a cryptographically | |||
| secure random-number generator (CSRNG) it is safe to assume that the | secure random number generator (CSRNG), it is safe to assume that the | |||
| entropy of the shared secret information equals its bit length. If | entropy of the shared secret information equals its bit length. If | |||
| no CSRNG is used, the entropy of a shared secret information depends | no CSRNG is used, the entropy of shared secret information depends on | |||
| on the details of the generation process and cannot be measured | the details of the generation process and cannot be measured securely | |||
| securely after it has been generated. If user-generated passwords | after it has been generated. If user-generated passwords are used as | |||
| are used as shared secret information, their entropy cannot be | shared secret information, their entropy cannot be measured and are | |||
| measured and are typically insufficient for protected delivery of | typically insufficient for protected delivery of centrally generated | |||
| centrally generated keys or trust anchors. | keys or trust anchors. | |||
| If the entropy of a shared secret information protecting the delivery | If the entropy of shared secret information protecting the delivery | |||
| of a centrally generated key pair is known, it should not be less | of a centrally generated key pair is known, it should not be less | |||
| than the security strength of that key pair; if the shared secret | than the security strength of that key pair; if the shared secret | |||
| information is re-used for different key pairs, the security of the | information is reused for different key pairs, the security of the | |||
| shared secret information should exceed the security strength of each | shared secret information should exceed the security strength of each | |||
| individual key pair. | individual key pair. | |||
| For the case of a PKI management operation that delivers a new trust | For the case of a PKI management operation that delivers a new trust | |||
| anchor (e.g., a root CA certificate) using caPubs or genm (a) that is | anchor (e.g., a root CA certificate) using caPubs or genm that is (a) | |||
| not concluded in a timely manner or (b) where the shared secret | not concluded in a timely manner or (b) where the shared secret | |||
| information is re-used for several key management operations, the | information is reused for several key management operations, the | |||
| entropy of the shared secret information, if known, should not be | entropy of the shared secret information, if known, should not be | |||
| less than the security strength of the trust anchor being managed by | less than the security strength of the trust anchor being managed by | |||
| the operation. The shared secret information should have an entropy | the operation. The shared secret information should have an entropy | |||
| that at least matches the security strength of the key material being | that at least matches the security strength of the key material being | |||
| managed by the operation. Certain use cases may require shared | managed by the operation. Certain use cases may require shared | |||
| secret information that may be of a low security strength, e.g., a | secret information that may be of a low security strength, e.g., a | |||
| human generated password. It is RECOMMENDED that such secret | human-generated password. It is RECOMMENDED that such secret | |||
| information be limited to a single PKI management operation. | information be limited to a single PKI management operation. | |||
| 2.24. Add Section 8.6 - Trust Anchor Provisioning Using CMP Messages | 2.24. Add Section 8.6 - Trust Anchor Provisioning Using CMP Messages | |||
| The following subsection addresses the risk arising from in-band | The following subsection addresses the risk arising from in-band | |||
| provisioning of new trust anchors in a PKI management operation. | provisioning of new trust anchors in a PKI management operation. | |||
| Insert this section after new Section 8.5: | Insert this section after the new Section 8.5: | |||
| 8.6. Trust Anchor Provisioning Using CMP Messages | 8.6. Trust Anchor Provisioning Using CMP Messages | |||
| A provider of trust anchors, which may be an RA involved in | A provider of trust anchors, which may be an RA involved in | |||
| configuration management of its clients, MUST NOT include to-be- | configuration management of its clients, MUST NOT include to-be- | |||
| trusted CA certificates in a CMP message unless the specific | trusted CA certificates in a CMP message unless the specific | |||
| deployment scenario can ensure that it is adequate that the receiving | deployment scenario can ensure that it is adequate that the receiving | |||
| EE trusts these certificates, e.g., by loading them into its trust | EE trusts these certificates, e.g., by loading them into its trust | |||
| store. | store. | |||
| Whenever an EE receives in a CMP message, e.g., in the caPubs field | Whenever an EE receives in a CMP message a CA certificate to be used | |||
| of a certificate response or in a general response (genp), a CA | as a trust anchor (for example in the caPubs field of a certificate | |||
| certificate for use as a trust anchor, it MUST properly authenticate | response or in a general response), it MUST properly authenticate the | |||
| the message sender with existing trust anchors without requiring new | message sender with existing trust anchor information without | |||
| trust anchors included in the message. | requiring the new trust anchors included in the message. | |||
| Additionally, the EE MUST verify that the sender is an authorized | Additionally, the EE MUST verify that the sender is an authorized | |||
| source of trust anchors. This authorization is governed by local | source of trust anchors. This authorization is governed by local | |||
| policy and typically indicated using shared secret information or | policy and typically indicated using shared secret information or | |||
| with a signature-based message protection using a certificate issued | with a signature-based message protection using a certificate issued | |||
| by a PKI that is explicitly authorized for this purpose. | by a PKI that is explicitly authorized for this purpose. | |||
| 2.25. Add Section 8.7 - Authorizing requests for certificates with | 2.25. Add Section 8.7 - Authorizing Requests for Certificates with | |||
| specific EKUs | Specific EKUs | |||
| The following subsection addresses the security considerations to | The following subsection addresses the security considerations to | |||
| follow when authorizing requests for certificates containing specific | follow when authorizing requests for certificates containing specific | |||
| EKUs. | EKUs. | |||
| Insert this section after new Section 8.6: | Insert this section after new Section 8.6: | |||
| 8.7. Authorizing requests for certificates with specific EKUs | 8.7. Authorizing Requests for Certificates with Specific EKUs | |||
| When a CA issues a certificate containing extended key usage | When a CA issues a certificate containing extended key usage | |||
| extensions as defined in Section 4.5, this expresses delegation of an | extensions as defined in Section 4.5, this expresses delegation of an | |||
| authorization that originally is only with the CA certificate itself. | authorization that originally is only with the CA certificate itself. | |||
| Such delegation is a very sensitive action in a PKI and therefore | Such delegation is a very sensitive action in a PKI and therefore | |||
| special care must be taken when approving such certificate requests | special care must be taken when approving such certificate requests | |||
| to ensure that only legitimate entities receive a certificate | to ensure that only legitimate entities receive a certificate | |||
| containing such an EKU. | containing such an EKU. | |||
| 2.26. Update Appendix B - The Use of Revocation Passphrase | 2.26. Update Appendix B - The Use of Revocation Passphrase | |||
| Appendix B of RFC 4210 [RFC4210] describes the use of the revocation | Appendix B of [RFC4210] describes the use of the revocation | |||
| passphrase. As this document updates RFC 4210 [RFC4210] to utilize | passphrase. As this document updates [RFC4210] to utilize the parent | |||
| the parent structure EncryptedKey instead of EncryptedValue as | structure EncryptedKey instead of EncryptedValue as described in | |||
| described in Section 2.7 above, the description is updated | Section 2.7 above, the description is updated accordingly. | |||
| accordingly. | ||||
| Replace the first bullet point of this section with the following | Replace the first bullet point of this section with the following | |||
| text: | text: | |||
| * The OID and value specified in Section 5.3.19.9 MAY be sent in a | * The OID and value specified in Section 5.3.19.9 MAY be sent in a | |||
| GenMsg message at any time, or MAY be sent in the generalInfo | GenMsg message at any time or MAY be sent in the generalInfo field | |||
| field of the PKIHeader of any PKIMessage at any time. (In | of the PKIHeader of any PKIMessage at any time. (In particular, | |||
| particular, the EncryptedKey structure as described in | the EncryptedKey structure as described in Section 5.2.2 may be | |||
| Section 5.2.2 may be sent in the header of the certConf message | sent in the header of the certConf message that confirms | |||
| that confirms acceptance of certificates requested in an | acceptance of certificates requested in an initialization request | |||
| initialization request or certificate request message.) This | or certificate request message.) This conveys a revocation | |||
| conveys a revocation passphrase chosen by the entity to the | passphrase chosen by the entity to the relevant CA/RA. When | |||
| relevant CA/RA. When EnvelopedData is used, this is in the | EnvelopedData is used, this is in the decrypted bytes of the | |||
| decrypted bytes of encryptedContent field. When EncryptedValue is | encryptedContent field. When EncryptedValue is used, this is in | |||
| used, this is in the decrypted bytes of the encValue field. | the decrypted bytes of the encValue field. Furthermore, the | |||
| Furthermore, the transfer is accomplished with appropriate | transfer is accomplished with appropriate confidentiality | |||
| confidentiality characteristics. | characteristics. | |||
| Replace the third bullet point of this section with the following | Replace the third bullet point of this section with the following | |||
| text: | text: | |||
| * Either the localKeyId attribute of EnvelopedData as specified in | * Either the localKeyId attribute of EnvelopedData as specified in | |||
| RFC 2985 [RFC2985] or the valueHint field of EncryptedValue MAY | [RFC2985] or the valueHint field of EncryptedValue MAY contain a | |||
| contain a key identifier (chosen by the entity, along with the | key identifier (chosen by the entity, along with the passphrase | |||
| passphrase itself) to assist in later retrieval of the correct | itself) to assist in later retrieval of the correct passphrase | |||
| passphrase (e.g., when the revocation request is constructed by | (e.g., when the revocation request is constructed by the entity | |||
| the entity and received by the CA/RA). | and received by the CA/RA). | |||
| 2.27. Update Appendix C - Request Message Behavioral Clarifications | 2.27. Update Appendix C - Request Message Behavioral Clarifications | |||
| Appendix C of RFC 4210 [RFC4210] provides clarifications to the | Appendix C of [RFC4210] provides clarifications to the request | |||
| request message behavior. As this document updates RFC 4210 | message behavior. As this document updates [RFC4210] to utilize the | |||
| [RFC4210] to utilize the parent structure EncryptedKey instead of | parent structure EncryptedKey instead of EncryptedValue as described | |||
| EncryptedValue as described in Section 2.7 above, the description is | in Section 2.7 above, the description is updated accordingly. | |||
| updated accordingly. | ||||
| Replace the comment within the ASN.1 syntax coming after the | Replace the comment within the ASN.1 syntax coming after the | |||
| definition of POPOSigningKey with the following text (Note: This | definition of POPOSigningKey with the following text (Note: This | |||
| fixes Errata ID 2615): | fixes Errata ID 2615): | |||
| -- ********** | -- ********** | |||
| -- * For the purposes of this specification, the ASN.1 comment | -- * For the purposes of this specification, the ASN.1 comment | |||
| -- * given in [RFC4211] pertains not only to certTemplate, but | -- * given in [RFC4211] pertains not only to certTemplate but | |||
| -- * also to the altCertTemplate control. | -- * also to the altCertTemplate control. | |||
| -- ********** | -- ********** | |||
| -- * The signature (using "algorithmIdentifier") is on the | -- * The signature (using "algorithmIdentifier") is on the | |||
| -- * DER-encoded value of poposkInput (i.e., the "value" OCTETs | -- * DER-encoded value of poposkInput (i.e., the "value" OCTETs | |||
| -- * of the POPOSigningKeyInput DER). NOTE: If CertReqMsg | -- * of the POPOSigningKeyInput DER). NOTE: If CertReqMsg | |||
| -- * certReq certTemplate (or the altCertTemplate control) | -- * certReq certTemplate (or the altCertTemplate control) | |||
| -- * contains the subject and publicKey values, then poposkInput | -- * contains the subject and publicKey values, then poposkInput | |||
| -- * MUST be omitted and the signature MUST be computed on the | -- * MUST be omitted and the signature MUST be computed on the | |||
| -- * DER-encoded value of CertReqMsg certReq (or the DER- | -- * DER-encoded value of CertReqMsg certReq (or the DER- | |||
| -- * encoded value of AltCertTemplate). If | -- * encoded value of AltCertTemplate). If | |||
| -- * certTemplate/altCertTemplate does not contain both the | -- * certTemplate/altCertTemplate does not contain both the | |||
| -- * subject and public key values (i.e., if it contains only | -- * subject and public key values (i.e., if it contains only | |||
| -- * one of these, or neither), then poposkInput MUST be present | -- * one of these or neither), then poposkInput MUST be present | |||
| -- * and MUST be signed. | -- * and MUST be signed. | |||
| -- ********** | -- ********** | |||
| Replace the comment within the ASN.1 syntax coming after the | Replace the ASN.1 syntax of POPOPrivKey with the following text: | |||
| definition of POPOPrivKey with the following text: | ||||
| POPOPrivKey ::= CHOICE { | ||||
| thisMessage [0] BIT STRING, -- deprecated | ||||
| subsequentMessage [1] SubsequentMessage, | ||||
| dhMAC [2] BIT STRING, -- deprecated | ||||
| agreeMAC [3] PKMACValue, | ||||
| encryptedKey [4] EnvelopedData } | ||||
| -- ********** | -- ********** | |||
| -- * the type of "thisMessage" is given as BIT STRING in RFC 4211 | -- * When using CMP V2, the encrypted value MUST be transferred in | |||
| -- * [RFC4211]; it should be "EncryptedKey" (in accordance with | -- * the thisMessage field that is given as BIT STRING in [RFC4211], | |||
| -- * Section 5.2.2 of this specification). Therefore, this | -- * but it requires EncryptedValue. Therefore, this document makes | |||
| -- * document makes the behavioral clarification of specifying | -- * the behavioral clarification for CMP V2 of specifying that the | |||
| -- * that the contents of "thisMessage" MUST be encoded either as | -- * contents of "thisMessage" MUST be encoded as an | |||
| -- * "EnvelopedData" or "EncryptedValue" (only for backward | -- * EncryptedValue and then wrapped in a BIT STRING. | |||
| -- * compatibility) and then wrapped in a BIT STRING. This | -- * When using CMP V3, the encrypted value MUST be transferred | |||
| -- * allows the necessary conveyance and protection of the | -- * in the encryptedKey field, as specified in Section 5.2.2. | |||
| -- * private key while maintaining bits-on-the-wire compatibility | ||||
| -- * with RFC4210 and [RFCXXXX]. | ||||
| -- ********** | -- ********** | |||
| 2.28. Update Appendix D.1. - General Rules for Interpretation of These | 2.28. Update Appendix D.1. - General Rules for Interpretation of These | |||
| Profiles | Profiles | |||
| Appendix D.1 of RFC 4210 [RFC4210] provides general rules for | Appendix D.1 of [RFC4210] provides general rules for interpretation | |||
| interpretation of the PKI management messages profiles specified in | of the PKI management messages profiles specified in Appendices D and | |||
| Appendix D and Appendix E of RFC 4210 [RFC4210]. This document | E of [RFC4210]. This document updates a sentence regarding the new | |||
| updates a sentence regarding the new protocol version cmp2021. | protocol version cmp2021. | |||
| Replace the last sentence of the first paragraph of the section with | Replace the last sentence of the first paragraph of the section with | |||
| the following text: | the following text: | |||
| Mandatory fields are not mentioned if they have an obvious value | Mandatory fields are not mentioned if they have an obvious value | |||
| (e.g., in this version of these profiles, pvno is always cmp2000). | (e.g., in this version of these profiles, pvno is always cmp2000). | |||
| 2.29. Update Appendix D.2. - Algorithm Use Profile | 2.29. Update Appendix D.2. - Algorithm Use Profile | |||
| Appendix D.2 of RFC 4210 [RFC4210] provides a list of algorithms that | Appendix D.2 of [RFC4210] provides a list of algorithms that | |||
| implementations must support when claiming conformance with PKI | implementations must support when claiming conformance with PKI | |||
| Management Message Profiles as specified in CMP Appendix D.2 | management message profiles, as specified in Appendix D.2 of CMP | |||
| [RFC4210]. This document redirects to the new algorithm profile as | [RFC4210]. This document redirects to the new algorithm profile, as | |||
| specified in Section 7.1 of CMP Algorithms | specified in Section 7.1 of CMP Algorithms [RFC9481]. | |||
| [I-D.ietf-lamps-cmp-algorithms]. | ||||
| Replace the text of the section with the following text: | Replace the text of the section with the following text: | |||
| D.2. Algorithm Use Profile | D.2. Algorithm Use Profile | |||
| For specifications of algorithm identifiers and respective | For specifications of algorithm identifiers and respective | |||
| conventions for conforming implementations, please refer to CMP | conventions for conforming implementations, please refer to | |||
| Algorithms Section 7.1 [I-D.ietf-lamps-cmp-algorithms]. | Section 7.1 of CMP Algorithms [RFC9481]. | |||
| 2.30. Update Appendix D.4. - Initial Registration/Certification (Basic | 2.30. Update Appendix D.4. - Initial Registration/Certification (Basic | |||
| Authenticated Scheme) | Authenticated Scheme) | |||
| Appendix D.4 of RFC 4210 [RFC4210] provides the initial registration/ | Appendix D.4 of [RFC4210] provides the initial registration/ | |||
| certification scheme. This scheme shall continue using | certification scheme. This scheme shall continue using | |||
| EncryptedValue for backward compatibility reasons. | EncryptedValue for backward compatibility reasons. | |||
| Replace the line specifying protectionAlg of the Initialization | Replace the line specifying protectionAlg of the Initialization | |||
| Response message with the following text (Note: This fixes Errata ID | Response message with the following text (Note: This fixes Errata ID | |||
| 5201): | 5201): | |||
| protectionAlg MSG_MAC_ALG | protectionAlg MSG_MAC_ALG | |||
| Replace the comment after the privateKey field of | Replace the comment after the privateKey field of | |||
| crc[1].certifiedKeyPair in the syntax of the Initialization Response | crc[1].certifiedKeyPair in the syntax of the Initialization Response | |||
| message with the following text: | message with the following text: | |||
| -- see Appendix C, Request Message Behavioral Clarifications | -- see Appendix C (Request Message Behavioral Clarifications) | |||
| -- for backward compatibility reasons, use EncryptedValue | -- for backward compatibility reasons, use EncryptedValue | |||
| 3. Updates to RFC 6712 - HTTP Transfer for the Certificate Management | 3. Updates to RFC 6712 - HTTP Transfer for the Certificate Management | |||
| Protocol (CMP) | Protocol (CMP) | |||
| 3.1. Update Section 1. - Introduction | 3.1. Update Section 1 - Introduction | |||
| To indicate and explain why delayed delivery of all kinds of | To indicate and explain why delayed delivery of all kinds of | |||
| PKIMessages may be handled at transfer level and/or at CMP level, the | PKIMessages may be handled at transfer level and/or at CMP level, the | |||
| introduction of RFC 6712 [RFC6712] is updated. | introduction of [RFC6712] is updated. | |||
| Replace the third paragraph of this section with the following text: | Replace the third paragraph of this section with the following text: | |||
| In addition to reliable transport, CMP requires connection and error | In addition to reliable transport, CMP requires connection and error | |||
| handling from the transfer protocol, which is all covered by HTTP. | handling from the transfer protocol, which is all covered by HTTP. | |||
| Additionally, delayed delivery of CMP response messages may be | Additionally, delayed delivery of CMP response messages may be | |||
| handled at transfer level regardless of the message contents. Since | handled at transfer level, regardless of the message contents. Since | |||
| this document extends the polling mechanism specified in the second | this document extends the polling mechanism specified in the second | |||
| version of CMP [RFC4210] to cover all types of PKI management | version of CMP [RFC4210] to cover all types of PKI management | |||
| transactions, delays detected at application level may also be | transactions, delays detected at application level may also be | |||
| handled within CMP, using pollReq and pollRep messages. | handled within CMP, using pollReq and pollRep messages. | |||
| 3.2. New Section 1.1. - Changes Since RFC 6712 | 3.2. New Section 1.1 - Changes Since RFC 6712 | |||
| The following subsection describes feature updates to RFC 6712 | The following subsection describes feature updates to [RFC6712]. | |||
| [RFC6712]. They are related to the base specification. Hence, | They are related to the base specification. Hence, references to the | |||
| references to the original sections in RFC 6712 [RFC6712] are used | original sections in [RFC6712] are used whenever possible. | |||
| whenever possible. | ||||
| Insert this section at the end of the current Section 1: | Insert this section after the current Section 1 of [RFC6712]: | |||
| 1.1 Changes Since RFC 6712 | 1.1 Changes Since RFC 6712 | |||
| The following updates are made in this document: | The following updates are made in this document: | |||
| * Introduce the HTTP path '/.well-known/cmp'. | * Introduce the HTTP path '/.well-known/cmp'. | |||
| * Extend the URI structure. | * Extend the URI structure. | |||
| 3.3. Replace Section 3.6. - HTTP Request-URI | 3.3. Replace Section 3.6 - HTTP Request-URI | |||
| Section 3.6 of RFC 6712 [RFC6712] specifies the used HTTP URIs. This | Section 3.6 of [RFC6712] specifies the used HTTP URIs. This document | |||
| document introduces the HTTP path '/.well-known/cmp' and extends the | introduces the HTTP path '/.well-known/cmp' and extends the URIs. | |||
| URIs. | ||||
| Replace the text of the section with the following text: | Replace the text of the section with the following text: | |||
| 3.6. HTTP Request-URI | 3.6. HTTP Request-URI | |||
| Each CMP server on a PKI management entity supporting HTTP or HTTPS | Each CMP server on a PKI management entity supporting HTTP or HTTPS | |||
| transfer MUST support the use of the path prefix '/.well-known/' as | transfer MUST support the use of the path prefix '/.well-known/' as | |||
| defined in RFC 8615 [RFC8615] and the registered name 'cmp' to ease | defined in [RFC8615] and the registered name 'cmp' to ease | |||
| interworking in a multi-vendor environment. | interworking in a multi-vendor environment. | |||
| The CMP client needs to be configured with sufficient information to | The CMP client needs to be configured with sufficient information to | |||
| form the CMP server URI. This is at least the authority portion of | form the CMP server URI. This is at least the authority portion of | |||
| the URI, e.g., 'www.example.com:80', or the full operation path | the URI, e.g., 'www.example.com:80', or the full operation path | |||
| segment of the PKI management entity. Additionally, OPTIONAL path | segment of the PKI management entity. Additionally, OPTIONAL path | |||
| segments MAY be added after the registered application name as part | segments MAY be added after the registered application name as part | |||
| of the full operation path to provide further distinction. The path | of the full operation path to provide further distinction. The path | |||
| segment 'p' followed by an arbitraryLabel <name> could for example | segment 'p' followed by an arbitraryLabel <name> could, for example, | |||
| support the differentiation of specific CAs or certificate profiles. | support the differentiation of specific CAs or certificate profiles. | |||
| Further path segments, e.g., as specified in the Lightweight CMP | Further path segments, e.g., as specified in the Lightweight CMP | |||
| Profile [I-D.ietf-lamps-lightweight-cmp-profile], could indicate PKI | Profile [RFC9483], could indicate PKI management operations using an | |||
| management operations using an operationLabel <operation>. A valid | operationLabel <operation>. A valid, full CMP URI can look like | |||
| full CMP URI can look like this: | this: | |||
| http://www.example.com/.well-known/cmp | http://www.example.com/.well-known/cmp | |||
| http://www.example.com/.well-known/cmp/<operation> | http://www.example.com/.well-known/cmp/<operation> | |||
| http://www.example.com/.well-known/cmp/p/<name> | http://www.example.com/.well-known/cmp/p/<name> | |||
| http://www.example.com/.well-known/cmp/p/<name>/<operation> | http://www.example.com/.well-known/cmp/p/<name>/<operation> | |||
| 4. IANA Considerations | 4. IANA Considerations | |||
| This document updates the ASN.1 modules of RFC 4210 Appendix F | 4.1. Updates to the ASN.1 Modules in RFCs 4210 and 5912 | |||
| [RFC4210] and RFC 5912 Section 9 [RFC5912]. The OIDs 99 (id-mod- | ||||
| cmp2021-88) and 100 (id-mod-cmp2021-02) were registered in the SMI | ||||
| Security for PKIX Module Identifier registry to identify the updated | ||||
| ASN.1 modules. | ||||
| This document contains an update to the IANA Consideration sections | This document updates the ASN.1 modules of Appendix F of [RFC4210] | |||
| of [RFC4210] adding this content. | and Section 9 of [RFC5912] as shown in Appendixes A.1 and A.2 of this | |||
| document, respectively. The OIDs 99 (id-mod-cmp2021-88) and 100 (id- | ||||
| mod-cmp2021-02) have been registered in the "SMI Security for PKIX | ||||
| Module Identifier" registry to identify the updated ASN.1 modules. | ||||
| In the SMI-numbers registry "SMI Security for PKIX Extended Key | 4.2. Updates to the IANA Considerations of RFC 4210 | |||
| Purpose Identifiers (1.3.6.1.5.5.7.3)" (see | ||||
| https://www.iana.org/assignments/smi-numbers/smi-numbers.xhtml#smi- | ||||
| numbers-1.3.6.1.5.5.7.3) as defined in RFC 7299 [RFC7299] one | ||||
| addition has been performed. | ||||
| One new entry has been added: | This document updates the IANA Consideration sections of [RFC4210] by | |||
| adding this content. | ||||
| 4.2.1. SMI Security for PKIX Extended Key Purpose Registry | ||||
| IANA has registered the following new entry in the "SMI Security for | ||||
| PKIX Extended Key Purpose" registry (see | ||||
| <https://www.iana.org/assignments/smi-numbers>, as defined in | ||||
| [RFC7299]: | ||||
| +=========+=============+============+ | +=========+=============+============+ | |||
| | Decimal | Description | References | | | Decimal | Description | References | | |||
| +=========+=============+============+ | +=========+=============+============+ | |||
| | 32 | id-kp-cmKGA | [RFCXXXX] | | | 32 | id-kp-cmKGA | RFC 9480 | | |||
| +---------+-------------+------------+ | +---------+-------------+------------+ | |||
| Table 1: Addition to the PKIX | Table 1: Addition to the SMI | |||
| Extended Key Purpose Identifiers | Security for PKIX Extended Key | |||
| Registry | Purpose | |||
| In the SMI-numbers registry "SMI Security for PKIX CMP Information | 4.2.2. SMI Security for PKIX CMP Information Types | |||
| Types (1.3.6.1.5.5.7.4)" (see https://www.iana.org/assignments/smi- | ||||
| numbers/smi-numbers.xhtml#smi-numbers-1.3.6.1.5.5.7.4) as defined in | ||||
| RFC 7299 [RFC7299] seven additions have been performed. | ||||
| Seven new entries have been added: | IANA has registered the following new entries in the "SMI Security | |||
| for PKIX CMP Information Types" registry (see | ||||
| <https://www.iana.org/assignments/smi-numbers>), as defined in | ||||
| [RFC7299]: | ||||
| +=========+=======================+============+ | +=========+=======================+============+ | |||
| | Decimal | Description | References | | | Decimal | Description | References | | |||
| +=========+=======================+============+ | +=========+=======================+============+ | |||
| | 17 | id-it-caCerts | [RFCXXXX] | | | 17 | id-it-caCerts | RFC 9480 | | |||
| +---------+-----------------------+------------+ | +---------+-----------------------+------------+ | |||
| | 18 | id-it-rootCaKeyUpdate | [RFCXXXX] | | | 18 | id-it-rootCaKeyUpdate | RFC 9480 | | |||
| +---------+-----------------------+------------+ | +---------+-----------------------+------------+ | |||
| | 19 | id-it-certReqTemplate | [RFCXXXX] | | | 19 | id-it-certReqTemplate | RFC 9480 | | |||
| +---------+-----------------------+------------+ | +---------+-----------------------+------------+ | |||
| | 20 | id-it-rootCaCert | [RFCXXXX] | | | 20 | id-it-rootCaCert | RFC 9480 | | |||
| +---------+-----------------------+------------+ | +---------+-----------------------+------------+ | |||
| | 21 | id-it-certProfile | [RFCXXXX] | | | 21 | id-it-certProfile | RFC 9480 | | |||
| +---------+-----------------------+------------+ | +---------+-----------------------+------------+ | |||
| | 22 | id-it-crlStatusList | [RFCXXXX] | | | 22 | id-it-crlStatusList | RFC 9480 | | |||
| +---------+-----------------------+------------+ | +---------+-----------------------+------------+ | |||
| | 23 | id-it-crls | [RFCXXXX] | | | 23 | id-it-crls | RFC 9480 | | |||
| +---------+-----------------------+------------+ | +---------+-----------------------+------------+ | |||
| Table 2: Addition to the PKIX CMP | Table 2: Additions to the PKIX CMP | |||
| Information Types Registry | Information Types Registry | |||
| In the SMI-numbers registry "SMI Security for PKIX CRMF Registration | 4.2.3. SMI Security for PKIX CRMF Registration Controls | |||
| Controls (1.3.6.1.5.5.7.5.1)" (see https://www.iana.org/assignments/ | ||||
| smi-numbers/smi-numbers.xhtml#smi-numbers-1.3.6.1.5.5.7.5.1) as | ||||
| defined in RFC 7299 [RFC7299] two additions have been performed. | ||||
| Two new entries have been added: | IANA has registered the following new entries in the "SMI Security | |||
| for PKIX CRMF Registration Controls" registry (see | ||||
| <https://www.iana.org/assignments/smi-numbers>), as defined in | ||||
| [RFC7299]: | ||||
| +=========+======================+============+ | +=========+======================+============+ | |||
| | Decimal | Description | References | | | Decimal | Description | References | | |||
| +=========+======================+============+ | +=========+======================+============+ | |||
| | 11 | id-regCtrl-algId | [RFCXXXX] | | | 11 | id-regCtrl-algId | RFC 9480 | | |||
| +---------+----------------------+------------+ | +---------+----------------------+------------+ | |||
| | 12 | id-regCtrl-rsaKeyLen | [RFCXXXX] | | | 12 | id-regCtrl-rsaKeyLen | RFC 9480 | | |||
| +---------+----------------------+------------+ | +---------+----------------------+------------+ | |||
| Table 3: Addition to the PKIX CRMF | Table 3: Addition to the PKIX CRMF | |||
| Registration Controls Registry | Registration Controls Registry | |||
| This document contains an update to the IANA Consideration sections | 4.3. Updates to the IANA Considerations of RFC 6712 | |||
| of [RFC6712] adding this content. | ||||
| This document defines a new entry with the following content in the | This document contains an update to the IANA Considerations sections | |||
| "Well-Known URIs" registry (see https://www.iana.org/assignments/ | of [RFC6712] by adding this content. | |||
| well-known-uris/) as defined in RFC 8615 [RFC8615]. | ||||
| URI Suffix: cmp | 4.3.1. Well-Known URIs | |||
| Change Controller: IETF | ||||
| References: [RFCXXXX] [I-D.ietf-ace-cmpv2-coap-transport] | IANA has registered the following new entry in the "Well-Known URIs" | |||
| Related Information: CMP has a sub-registry at | registry (see <https://www.iana.org/assignments/well-known-uris>), as | |||
| [https://www.iana.org/assignments/cmp/] | defined in [RFC8615]: | |||
| URI Suffix: cmp | ||||
| Change Controller: IETF | ||||
| Reference: [RFC9480] [RFC9482] | ||||
| Status: permanent | ||||
| Related Information: CMP has a registry at | ||||
| <https://www.iana.org/assignments/cmp> | ||||
| 4.3.2. Certificate Management Protocol (CMP) Registry | ||||
| This document defines a new protocol registry group entitled | This document defines a new protocol registry group entitled | |||
| "Certificate Management Protocol (CMP)" (at | "Certificate Management Protocol (CMP)" (at | |||
| https://www.iana.org/assignments/cmp/) with a new registry "CMP Well- | <https://www.iana.org/assignments/cmp>) with a new "CMP Well-Known | |||
| Known URI Path Segments" containing three columns: Path Segment, | URI Path Segments" registry containing three columns: Path Segment, | |||
| Description, and Reference. New items can be added using the | Description, and Reference. New items can be added using the | |||
| Specification Required RFC 8615 [RFC8615] process. The initial | Specification Required [RFC8615] process. The initial entry of this | |||
| contents of this registry is: | registry is: | |||
| Path Segment: p | Path Segment: p | |||
| Description: Indicates that the next path segment specifies, e.g., | Description: Indicates that the next path segment specifies, e.g., a | |||
| a CA or certificate profile name | CA or certificate profile name | |||
| References: [RFCXXXX] [I-D.ietf-ace-cmpv2-coap-transport] | Reference: [RFC9480] [RFC9482] | |||
| 5. Security Considerations | 5. Security Considerations | |||
| The security considerations of RFC 4210 [RFC4210] are extended in | The security considerations of [RFC4210] are extended in Section 2.22 | |||
| Section 2.22 to Section 2.24. No security considerations updates of | to Section 2.24. No security considerations updates of [RFC6712] | |||
| RFC 6712 [RFC6712] were required. | were required. | |||
| 6. Acknowledgements | ||||
| Special thank goes to Jim Schaad for his guidance and the inspiration | ||||
| on structuring and writing this document we got from [RFC6402] which | ||||
| updates CMC. Special thank also goes to Russ Housley, Lijun Liao, | ||||
| Martin Peylo, and Tomas Gustavsson for reviewing and providing | ||||
| valuable suggestions on improving this document. | ||||
| We also thank all reviewers of this document for their valuable | ||||
| feedback. | ||||
| 7. References | ||||
| 7.1. Normative References | ||||
| [I-D.ietf-ace-cmpv2-coap-transport] | 6. References | |||
| Sahni, M. and S. Tripathi, "CoAP Transfer for the | ||||
| Certificate Management Protocol", Work in Progress, | ||||
| Internet-Draft, draft-ietf-ace-cmpv2-coap-transport-04, 8 | ||||
| November 2021, <https://datatracker.ietf.org/doc/html/ | ||||
| draft-ietf-ace-cmpv2-coap-transport-04>. | ||||
| [I-D.ietf-lamps-cmp-algorithms] | 6.1. Normative References | |||
| Brockhaus, H., Aschauer, H., Ounsworth, M., and J. Gray, | ||||
| "Certificate Management Protocol (CMP) Algorithms", Work | ||||
| in Progress, Internet-Draft, draft-ietf-lamps-cmp- | ||||
| algorithms-15, 2 June 2022, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-lamps- | ||||
| cmp-algorithms-15>. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2510] Adams, C. and S. Farrell, "Internet X.509 Public Key | [RFC2510] Adams, C. and S. Farrell, "Internet X.509 Public Key | |||
| Infrastructure Certificate Management Protocols", | Infrastructure Certificate Management Protocols", | |||
| RFC 2510, DOI 10.17487/RFC2510, March 1999, | RFC 2510, DOI 10.17487/RFC2510, March 1999, | |||
| <https://www.rfc-editor.org/info/rfc2510>. | <https://www.rfc-editor.org/info/rfc2510>. | |||
| skipping to change at page 36, line 47 ¶ | skipping to change at line 1547 ¶ | |||
| (CMS) for Algorithm Identifier Protection", RFC 8933, | (CMS) for Algorithm Identifier Protection", RFC 8933, | |||
| DOI 10.17487/RFC8933, October 2020, | DOI 10.17487/RFC8933, October 2020, | |||
| <https://www.rfc-editor.org/info/rfc8933>. | <https://www.rfc-editor.org/info/rfc8933>. | |||
| [RFC9045] Housley, R., "Algorithm Requirements Update to the | [RFC9045] Housley, R., "Algorithm Requirements Update to the | |||
| Internet X.509 Public Key Infrastructure Certificate | Internet X.509 Public Key Infrastructure Certificate | |||
| Request Message Format (CRMF)", RFC 9045, | Request Message Format (CRMF)", RFC 9045, | |||
| DOI 10.17487/RFC9045, June 2021, | DOI 10.17487/RFC9045, June 2021, | |||
| <https://www.rfc-editor.org/info/rfc9045>. | <https://www.rfc-editor.org/info/rfc9045>. | |||
| 7.2. Informative References | [RFC9481] Brockhaus, H., Aschauer, H., Ounsworth, M., and J. Gray, | |||
| "Certificate Management Protocol (CMP) Algorithms", | ||||
| RFC 9481, DOI 10.17487/RFC9481, October 2023, | ||||
| <https://www.rfc-editor.org/info/rfc9481>. | ||||
| [AIS31] Bundesamt fuer Sicherheit in der Informationstechnik | [RFC9482] Sahni, M., Ed. and S. Tripathi, Ed., "Constrained | |||
| (BSI), Killmann, W., and W. Schindler, "A proposal for: | Application Protocol (CoAP) Transfer for the Certificate | |||
| Functionality classes for random number generators, | Management Protocol", RFC 9482, DOI 10.17487/RFC9482, | |||
| version 2.0", 18 September 2011, | October 2023, <https://www.rfc-editor.org/info/rfc9482>. | |||
| 6.2. Informative References | ||||
| [AIS31] Killmann, W. and W. Schindler, "A proposal for: | ||||
| Functionality classes for random number generators - | ||||
| Version 2.0", September 2011, | ||||
| <https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/ | <https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/ | |||
| Zertifizierung/Interpretationen/AIS_31_Functionality_class | Zertifizierung/Interpretationen/AIS_31_Functionality_class | |||
| es_for_random_number_generators_e.pdf>. | es_for_random_number_generators_e.pdf>. | |||
| [CVE-2008-0166] | [CVE-2008-0166] | |||
| National Institute of Science and Technology (NIST), | National Institute of Science and Technology (NIST), | |||
| "National Vulnerability Database - CVE-2008-0166", 13 May | "National Vulnerability Database - CVE-2008-0166", May | |||
| 2008, <https://nvd.nist.gov/vuln/detail/CVE-2008-0166>. | 2008, <https://nvd.nist.gov/vuln/detail/CVE-2008-0166>. | |||
| [I-D.ietf-lamps-lightweight-cmp-profile] | [HTTP-CMP] Brockhaus, H., von Oheimb, D., Ounsworth, M., and J. Gray, | |||
| Brockhaus, H., Oheimb, D. V., and S. Fries, "Lightweight | "Internet X.509 Public Key Infrastructure -- HTTP Transfer | |||
| Certificate Management Protocol (CMP) Profile", Work in | for the Certificate Management Protocol (CMP)", Work in | |||
| Progress, Internet-Draft, draft-ietf-lamps-lightweight- | Progress, Internet-Draft, draft-ietf-lamps-rfc6712bis-03, | |||
| cmp-profile-12, 13 May 2022, | 10 February 2023, <https://datatracker.ietf.org/doc/html/ | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-lamps- | draft-ietf-lamps-rfc6712bis-03>. | |||
| lightweight-cmp-profile-12>. | ||||
| [IEEE.802.1AR_2018] | ||||
| IEEE, "IEEE Standard for Local and metropolitan area | ||||
| networks - Secure Device Identity", IEEE 802.1AR-2018, | ||||
| DOI 10.1109/IEEESTD.2018.8423794, 2 August 2018, | ||||
| <https://ieeexplore.ieee.org/document/8423794>. | ||||
| [ISO.20543-2019] | [ISO.20543-2019] | |||
| International Organization for Standardization (ISO), | International Organization for Standardization (ISO), | |||
| "Information technology -- Security techniques -- Test and | "Information technology -- Security techniques -- Test and | |||
| analysis methods for random bit generators within ISO/IEC | analysis methods for random bit generators within ISO/IEC | |||
| 19790 and ISO/IEC 15408", ISO Draft Standard 20543-2019, | 19790 and ISO/IEC 15408", ISO/IEC 20543:2019, October | |||
| October 2019. | 2019. | |||
| [MiningPsQs] | [MiningPsQs] | |||
| Security'12: Proceedings of the 21st USENIX conference on | , Heninger, N., Durumeric, Z., Wustrow, E., and J. A. | |||
| Security symposium, Heninger, N., Durumeric, Z., Wustrow, | Halderman, "Mining Your Ps and Qs: Detection of Widespread | |||
| E., and J. A. Halderman, "Mining Your Ps and Qs: Detection | Weak Keys in Network Devices", Security'12: Proceedings of | |||
| of Widespread Weak Keys in Network Devices", August 2012, | the 21st USENIX conference on Security symposium, August | |||
| <https://www.usenix.org/conference/usenixsecurity12/ | 2012, <https://www.usenix.org/conference/usenixsecurity12/ | |||
| technical-sessions/presentation/heninger>. | technical-sessions/presentation/heninger>. | |||
| [NIST.SP.800-90Ar1] | [NIST_SP_800_90Ar1] | |||
| Barker, Elaine B. and John M. Kelsey, "Recommendation for | Barker, E. B., Kelsey, J. M., and NIST, "Recommendation | |||
| Random Number Generation Using Deterministic Random Bit | for Random Number Generation Using Deterministic Random | |||
| Generators", NIST NIST SP 800-90Ar1, | Bit Generators", NIST Special Publications | |||
| DOI 10.6028/NIST.SP.800-90Ar1, June 2015, | (General) 800-90Ar1, DOI 10.6028/NIST.SP.800-90Ar1, June | |||
| 2015, | ||||
| <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/ | <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/ | |||
| NIST.SP.800-90Ar1.pdf>. | NIST.SP.800-90Ar1.pdf>. | |||
| [PKCS11] RSA Laboratories, "The Public-Key Cryptography Standards - | [PKIX-CMP] Brockhaus, H., von Oheimb, D., Ounsworth, M., and J. Gray, | |||
| Cryptographic Token Interface Standard. Version 2.10", | "Internet X.509 Public Key Infrastructure -- Certificate | |||
| December 1999, | Management Protocol (CMP)", Work in Progress, Internet- | |||
| <https://www.cryptsoft.com/pkcs11doc/STANDARD/ | Draft, draft-ietf-lamps-rfc4210bis-07, 19 June 2023, | |||
| pkcs11v2-10.pdf>. | <https://datatracker.ietf.org/doc/html/draft-ietf-lamps- | |||
| rfc4210bis-07>. | ||||
| [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | |||
| Hashing for Message Authentication", RFC 2104, | Hashing for Message Authentication", RFC 2104, | |||
| DOI 10.17487/RFC2104, February 1997, | DOI 10.17487/RFC2104, February 1997, | |||
| <https://www.rfc-editor.org/info/rfc2104>. | <https://www.rfc-editor.org/info/rfc2104>. | |||
| [RFC2202] Cheng, P. and R. Glenn, "Test Cases for HMAC-MD5 and HMAC- | [RFC2202] Cheng, P. and R. Glenn, "Test Cases for HMAC-MD5 and HMAC- | |||
| SHA-1", RFC 2202, DOI 10.17487/RFC2202, September 1997, | SHA-1", RFC 2202, DOI 10.17487/RFC2202, September 1997, | |||
| <https://www.rfc-editor.org/info/rfc2202>. | <https://www.rfc-editor.org/info/rfc2202>. | |||
| [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | |||
| Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | |||
| DOI 10.17487/RFC5912, June 2010, | DOI 10.17487/RFC5912, June 2010, | |||
| <https://www.rfc-editor.org/info/rfc5912>. | <https://www.rfc-editor.org/info/rfc5912>. | |||
| [RFC7299] Housley, R., "Object Identifier Registry for the PKIX | [RFC7299] Housley, R., "Object Identifier Registry for the PKIX | |||
| Working Group", RFC 7299, DOI 10.17487/RFC7299, July 2014, | Working Group", RFC 7299, DOI 10.17487/RFC7299, July 2014, | |||
| <https://www.rfc-editor.org/info/rfc7299>. | <https://www.rfc-editor.org/info/rfc7299>. | |||
| [RFC9483] Brockhaus, H., Fries, S., and D. von Oheimb, "Lightweight | ||||
| Certificate Management Protocol (CMP) Profile", RFC 9483, | ||||
| DOI 10.17487/RFC9483, October 2023, | ||||
| <https://www.rfc-editor.org/info/rfc9483>. | ||||
| Appendix A. ASN.1 Modules | Appendix A. ASN.1 Modules | |||
| A.1. Update to RFC4210 - 1988 ASN.1 Module | A.1. Update to RFC 4210 - 1988 ASN.1 Module | |||
| This section contains the updated ASN.1 module for [RFC4210]. This | This section contains the updated ASN.1 module for [RFC4210]. This | |||
| module replaces the module in Appendix F of that document. Although | module replaces the module in Appendix F of that document. Although | |||
| a 2002 ASN.1 module is provided, this 1988 ASN.1 module remains the | a 2002 ASN.1 module is provided, this 1988 ASN.1 module remains the | |||
| normative module as per the policy of the PKIX working group. | normative module, as per the policy of the PKIX Working Group. | |||
| PKIXCMP {iso(1) identified-organization(3) | PKIXCMP {iso(1) identified-organization(3) | |||
| dod(6) internet(1) security(5) mechanisms(5) pkix(7) | dod(6) internet(1) security(5) mechanisms(5) pkix(7) | |||
| id-mod(0) id-mod-cmp2021-88(99)} | id-mod(0) id-mod-cmp2021-88(99)} | |||
| DEFINITIONS EXPLICIT TAGS ::= | DEFINITIONS EXPLICIT TAGS ::= | |||
| BEGIN | BEGIN | |||
| -- EXPORTS ALL -- | -- EXPORTS ALL -- | |||
| IMPORTS | IMPORTS | |||
| Certificate, CertificateList, Extensions, Name, Time, | Certificate, CertificateList, Extensions, Name, Time, | |||
| AlgorithmIdentifier, id-kp | AlgorithmIdentifier, id-kp | |||
| --, UTF8String -- -- if required; otherwise, comment out | --, UTF8String -- -- if required; otherwise, comment out | |||
| FROM PKIX1Explicit88 {iso(1) identified-organization(3) | FROM PKIX1Explicit88 {iso(1) identified-organization(3) | |||
| dod(6) internet(1) security(5) mechanisms(5) pkix(7) | dod(6) internet(1) security(5) mechanisms(5) pkix(7) | |||
| id-mod(0) id-pkix1-explicit-88(18)} | id-mod(0) id-pkix1-explicit-88(18)} | |||
| -- The import of Name is added to define CertificationRequest | -- The import of Name is added to define CertificationRequest | |||
| -- instead of importing it from PKCS#10 [RFC2986] | -- instead of importing it from PKCS #10 [RFC2986]. | |||
| DistributionPointName, GeneralNames, GeneralName, KeyIdentifier | DistributionPointName, GeneralNames, GeneralName, KeyIdentifier | |||
| FROM PKIX1Implicit88 {iso(1) identified-organization(3) | FROM PKIX1Implicit88 {iso(1) identified-organization(3) | |||
| dod(6) internet(1) security(5) mechanisms(5) pkix(7) | dod(6) internet(1) security(5) mechanisms(5) pkix(7) | |||
| id-mod(0) id-pkix1-implicit-88(19)} | id-mod(0) id-pkix1-implicit-88(19)} | |||
| CertTemplate, PKIPublicationInfo, EncryptedKey, CertId, | CertTemplate, PKIPublicationInfo, EncryptedKey, CertId, | |||
| CertReqMessages, Controls, AttributeTypeAndValue, id-regCtrl | CertReqMessages, Controls, AttributeTypeAndValue, id-regCtrl | |||
| FROM PKIXCRMF-2005 {iso(1) identified-organization(3) | FROM PKIXCRMF-2005 {iso(1) identified-organization(3) | |||
| dod(6) internet(1) security(5) mechanisms(5) pkix(7) | dod(6) internet(1) security(5) mechanisms(5) pkix(7) | |||
| id-mod(0) id-mod-crmf2005(36)} | id-mod(0) id-mod-crmf2005(36)} | |||
| -- The import of EncryptedKey is added due to the updates made | -- The import of EncryptedKey is added due to the updates made | |||
| -- in CMP Updates [RFCXXXX]]. EncryptedValue does not need to | -- in CMP Updates [RFC9480]. EncryptedValue does not need to | |||
| -- be imported anymore and is therefore removed here. | -- be imported anymore and is therefore removed here. | |||
| -- see also the behavioral clarifications to CRMF codified in | -- Also, see the behavioral clarifications to CRMF codified in | |||
| -- Appendix C of this specification | -- Appendix C of this specification. | |||
| EnvelopedData, SignedData, Attribute | EnvelopedData, SignedData, Attribute | |||
| FROM CryptographicMessageSyntax2004 { iso(1) | FROM CryptographicMessageSyntax2004 { iso(1) | |||
| member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | |||
| smime(16) modules(0) cms-2004(24) } | smime(16) modules(0) cms-2004(24) } | |||
| -- The import of EnvelopedData and SignedData is added due to | -- The import of EnvelopedData and SignedData is added due to | |||
| -- the updates made in CMP Updates [RFCXXXX] | -- the updates made in CMP Updates [RFC9480]. | |||
| -- The import of Attribute is added to define | -- The import of Attribute is added to define | |||
| -- CertificationRequest instead of importing it from | -- CertificationRequest instead of importing it from | |||
| -- PKCS#10 [RFC2986] | -- PKCS #10 [RFC2986]. | |||
| ; | ; | |||
| -- the rest of the module contains locally-defined OIDs and | -- The rest of the module contains locally defined OIDs and | |||
| -- constructs | -- constructs: | |||
| CMPCertificate ::= CHOICE { | CMPCertificate ::= CHOICE { | |||
| x509v3PKCert Certificate | x509v3PKCert Certificate | |||
| } | } | |||
| -- This syntax, while bits-on-the-wire compatible with the | -- This syntax, while bits-on-the-wire compatible with the | |||
| -- standard X.509 definition of "Certificate", allows the | -- standard X.509 definition of "Certificate", allows the | |||
| -- possibility of future certificate types (such as X.509 | -- possibility of future certificate types (such as X.509 | |||
| -- attribute certificates, WAP WTLS certificates, or other kinds | -- attribute certificates, card-verifiable | |||
| -- of certificates) within this certificate management protocol, | -- certificates, or other kinds of certificates) within this | |||
| -- should a need ever arise to support such generality. Those | -- Certificate Management Protocol, should a need ever arise to | |||
| -- implementations that do not foresee a need to ever support | -- support such generality. Those implementations that do not | |||
| -- other certificate types MAY, if they wish, comment out the | -- foresee a need to ever support other certificate types MAY, if | |||
| -- above structure and "un-comment" the following one prior to | -- they wish, comment out the above structure and "uncomment" the | |||
| -- compiling this ASN.1 module. (Note that interoperability | -- following one prior to compiling this ASN.1 module. (Note that | |||
| -- with implementations that don't do this will be unaffected by | -- interoperability with implementations that don't do this will be | |||
| -- this change.) | -- unaffected by this change.) | |||
| -- CMPCertificate ::= Certificate | -- CMPCertificate ::= Certificate | |||
| PKIMessage ::= SEQUENCE { | PKIMessage ::= SEQUENCE { | |||
| header PKIHeader, | header PKIHeader, | |||
| body PKIBody, | body PKIBody, | |||
| protection [0] PKIProtection OPTIONAL, | protection [0] PKIProtection OPTIONAL, | |||
| extraCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | extraCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | |||
| OPTIONAL | OPTIONAL | |||
| } | } | |||
| skipping to change at page 40, line 30 ¶ | skipping to change at line 1730 ¶ | |||
| PKIMessages ::= SEQUENCE SIZE (1..MAX) OF PKIMessage | PKIMessages ::= SEQUENCE SIZE (1..MAX) OF PKIMessage | |||
| PKIHeader ::= SEQUENCE { | PKIHeader ::= SEQUENCE { | |||
| pvno INTEGER { cmp1999(1), cmp2000(2), | pvno INTEGER { cmp1999(1), cmp2000(2), | |||
| cmp2021(3) }, | cmp2021(3) }, | |||
| sender GeneralName, | sender GeneralName, | |||
| -- identifies the sender | -- identifies the sender | |||
| recipient GeneralName, | recipient GeneralName, | |||
| -- identifies the intended recipient | -- identifies the intended recipient | |||
| messageTime [0] GeneralizedTime OPTIONAL, | messageTime [0] GeneralizedTime OPTIONAL, | |||
| -- time of production of this message (used when sender | -- time of production of this message (used when the sender | |||
| -- believes that the transport will be "suitable"; i.e., | -- believes that the transport will be "suitable", i.e., | |||
| -- that the time will still be meaningful upon receipt) | -- that the time will still be meaningful upon receipt) | |||
| protectionAlg [1] AlgorithmIdentifier OPTIONAL, | protectionAlg [1] AlgorithmIdentifier OPTIONAL, | |||
| -- algorithm used for calculation of protection bits | -- algorithm used for the calculation of protection bits | |||
| senderKID [2] KeyIdentifier OPTIONAL, | senderKID [2] KeyIdentifier OPTIONAL, | |||
| recipKID [3] KeyIdentifier OPTIONAL, | recipKID [3] KeyIdentifier OPTIONAL, | |||
| -- to identify specific keys used for protection | -- to identify specific keys used for protection | |||
| transactionID [4] OCTET STRING OPTIONAL, | transactionID [4] OCTET STRING OPTIONAL, | |||
| -- identifies the transaction; i.e., this will be the same in | -- identifies the transaction, i.e., this will be the same in | |||
| -- corresponding request, response, certConf, and PKIConf | -- corresponding request, response, certConf, and PKIConf | |||
| -- messages | -- messages | |||
| senderNonce [5] OCTET STRING OPTIONAL, | senderNonce [5] OCTET STRING OPTIONAL, | |||
| recipNonce [6] OCTET STRING OPTIONAL, | recipNonce [6] OCTET STRING OPTIONAL, | |||
| -- nonces used to provide replay protection, senderNonce | -- nonces used to provide replay protection, senderNonce | |||
| -- is inserted by the creator of this message; recipNonce | -- is inserted by the creator of this message; recipNonce | |||
| -- is a nonce previously inserted in a related message by | -- is a nonce previously inserted in a related message by | |||
| -- the intended recipient of this message | -- the intended recipient of this message. | |||
| freeText [7] PKIFreeText OPTIONAL, | freeText [7] PKIFreeText OPTIONAL, | |||
| -- this may be used to indicate context-specific instructions | -- this may be used to indicate context-specific instructions | |||
| -- (this field is intended for human consumption) | -- (this field is intended for human consumption) | |||
| generalInfo [8] SEQUENCE SIZE (1..MAX) OF | generalInfo [8] SEQUENCE SIZE (1..MAX) OF | |||
| InfoTypeAndValue OPTIONAL | InfoTypeAndValue OPTIONAL | |||
| -- this may be used to convey context-specific information | -- this may be used to convey context-specific information | |||
| -- (this field not primarily intended for human consumption) | -- (this field not primarily intended for human consumption) | |||
| } | } | |||
| PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | |||
| -- text encoded as UTF-8 String [RFC3629] | -- text encoded as a UTF-8 string [RFC3629] | |||
| PKIBody ::= CHOICE { -- message-specific body elements | PKIBody ::= CHOICE { -- message-specific body elements | |||
| ir [0] CertReqMessages, --Initialization Request | ir [0] CertReqMessages, --Initialization Request | |||
| ip [1] CertRepMessage, --Initialization Response | ip [1] CertRepMessage, --Initialization Response | |||
| cr [2] CertReqMessages, --Certification Request | cr [2] CertReqMessages, --Certification Request | |||
| cp [3] CertRepMessage, --Certification Response | cp [3] CertRepMessage, --Certification Response | |||
| p10cr [4] CertificationRequest, --imported from [RFC2986] | p10cr [4] CertificationRequest, --imported from [RFC2986] | |||
| popdecc [5] POPODecKeyChallContent, --pop Challenge | popdecc [5] POPODecKeyChallContent, --pop Challenge | |||
| popdecr [6] POPODecKeyRespContent, --pop Response | popdecr [6] POPODecKeyRespContent, --pop Response | |||
| kur [7] CertReqMessages, --Key Update Request | kur [7] CertReqMessages, --Key Update Request | |||
| skipping to change at page 41, line 37 ¶ | skipping to change at line 1785 ¶ | |||
| ccp [14] CertRepMessage, --Cross-Cert. Response | ccp [14] CertRepMessage, --Cross-Cert. Response | |||
| ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann. | ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann. | |||
| cann [16] CertAnnContent, --Certificate Ann. | cann [16] CertAnnContent, --Certificate Ann. | |||
| rann [17] RevAnnContent, --Revocation Ann. | rann [17] RevAnnContent, --Revocation Ann. | |||
| crlann [18] CRLAnnContent, --CRL Announcement | crlann [18] CRLAnnContent, --CRL Announcement | |||
| pkiconf [19] PKIConfirmContent, --Confirmation | pkiconf [19] PKIConfirmContent, --Confirmation | |||
| nested [20] NestedMessageContent, --Nested Message | nested [20] NestedMessageContent, --Nested Message | |||
| genm [21] GenMsgContent, --General Message | genm [21] GenMsgContent, --General Message | |||
| genp [22] GenRepContent, --General Response | genp [22] GenRepContent, --General Response | |||
| error [23] ErrorMsgContent, --Error Message | error [23] ErrorMsgContent, --Error Message | |||
| certConf [24] CertConfirmContent, --Certificate confirm | certConf [24] CertConfirmContent, --Certificate Confirm | |||
| pollReq [25] PollReqContent, --Polling request | pollReq [25] PollReqContent, --Polling Request | |||
| pollRep [26] PollRepContent --Polling response | pollRep [26] PollRepContent --Polling Response | |||
| } | } | |||
| PKIProtection ::= BIT STRING | PKIProtection ::= BIT STRING | |||
| ProtectedPart ::= SEQUENCE { | ProtectedPart ::= SEQUENCE { | |||
| header PKIHeader, | header PKIHeader, | |||
| body PKIBody | body PKIBody | |||
| } | } | |||
| id-PasswordBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 13} | id-PasswordBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 13} | |||
| PBMParameter ::= SEQUENCE { | PBMParameter ::= SEQUENCE { | |||
| salt OCTET STRING, | salt OCTET STRING, | |||
| -- note: implementations MAY wish to limit acceptable sizes | -- Note: Implementations MAY wish to limit acceptable sizes | |||
| -- of this string to values appropriate for their environment | -- of this string to values appropriate for their environment | |||
| -- in order to reduce the risk of denial-of-service attacks | -- in order to reduce the risk of denial-of-service attacks. | |||
| owf AlgorithmIdentifier, | owf AlgorithmIdentifier, | |||
| -- AlgId for a One-Way Function | -- AlgId for a One-Way Function (OWF) | |||
| iterationCount INTEGER, | iterationCount INTEGER, | |||
| -- number of times the OWF is applied | -- number of times the OWF is applied | |||
| -- note: implementations MAY wish to limit acceptable sizes | -- Note: Implementations MAY wish to limit acceptable sizes | |||
| -- of this integer to values appropriate for their environment | -- of this integer to values appropriate for their environment | |||
| -- in order to reduce the risk of denial-of-service attacks | -- in order to reduce the risk of denial-of-service attacks. | |||
| mac AlgorithmIdentifier | mac AlgorithmIdentifier | |||
| -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11], | -- the MAC AlgId (e.g., HMAC-SHA256, AES-GMAC [RFC9481], | |||
| } -- or HMAC [RFC2104, RFC2202]) | } -- or HMAC [RFC2104, RFC2202]) | |||
| id-DHBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 30} | id-DHBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 30} | |||
| DHBMParameter ::= SEQUENCE { | DHBMParameter ::= SEQUENCE { | |||
| owf AlgorithmIdentifier, | owf AlgorithmIdentifier, | |||
| -- AlgId for a One-Way Function | -- AlgId for a One-Way Function | |||
| mac AlgorithmIdentifier | mac AlgorithmIdentifier | |||
| -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11], | -- the MAC AlgId (e.g., HMAC-SHA256, AES-GMAC [RFC9481], | |||
| } -- or HMAC [RFC2104, RFC2202]) | } -- or HMAC [RFC2104, RFC2202]) | |||
| NestedMessageContent ::= PKIMessages | NestedMessageContent ::= PKIMessages | |||
| PKIStatus ::= INTEGER { | PKIStatus ::= INTEGER { | |||
| accepted (0), | accepted (0), | |||
| -- you got exactly what you asked for | -- you got exactly what you asked for | |||
| grantedWithMods (1), | grantedWithMods (1), | |||
| -- you got something like what you asked for; the | -- you got something like what you asked for; the | |||
| -- requester is responsible for ascertaining the differences | -- requester is responsible for ascertaining the differences | |||
| rejection (2), | rejection (2), | |||
| -- you don't get it, more information elsewhere in the message | -- you don't get it, more information elsewhere in the message | |||
| waiting (3), | waiting (3), | |||
| -- the request body part has not yet been processed; expect to | -- the request body part has not yet been processed; expect to | |||
| -- hear more later (note: proper handling of this status | -- hear more later (note: proper handling of this status | |||
| -- response MAY use the polling req/rep PKIMessages specified | -- response MAY use the polling req/rep PKIMessages specified | |||
| skipping to change at page 43, line 4 ¶ | skipping to change at line 1847 ¶ | |||
| -- underlying transport layer MAY have some utility in this | -- underlying transport layer MAY have some utility in this | |||
| -- regard) | -- regard) | |||
| revocationWarning (4), | revocationWarning (4), | |||
| -- this message contains a warning that a revocation is | -- this message contains a warning that a revocation is | |||
| -- imminent | -- imminent | |||
| revocationNotification (5), | revocationNotification (5), | |||
| -- notification that a revocation has occurred | -- notification that a revocation has occurred | |||
| keyUpdateWarning (6) | keyUpdateWarning (6) | |||
| -- update already done for the oldCertId specified in | -- update already done for the oldCertId specified in | |||
| -- CertReqMsg | -- CertReqMsg | |||
| } | } | |||
| PKIFailureInfo ::= BIT STRING { | PKIFailureInfo ::= BIT STRING { | |||
| -- since we can fail in more than one way! | -- since we can fail in more than one way! | |||
| -- More codes may be added in the future if/when required. | -- More codes may be added in the future if/when required. | |||
| badAlg (0), | badAlg (0), | |||
| -- unrecognized or unsupported Algorithm Identifier | -- unrecognized or unsupported algorithm identifier | |||
| badMessageCheck (1), | badMessageCheck (1), | |||
| -- integrity check failed (e.g., signature did not verify) | -- integrity check failed (e.g., signature did not verify) | |||
| badRequest (2), | badRequest (2), | |||
| -- transaction not permitted or supported | -- transaction not permitted or supported | |||
| badTime (3), | badTime (3), | |||
| -- messageTime was not sufficiently close to the system time, | -- messageTime was not sufficiently close to the system time, | |||
| -- as defined by local policy | -- as defined by local policy | |||
| badCertId (4), | badCertId (4), | |||
| -- no certificate could be found matching the provided criteria | -- no certificate could be found matching the provided criteria | |||
| badDataFormat (5), | badDataFormat (5), | |||
| skipping to change at page 43, line 34 ¶ | skipping to change at line 1876 ¶ | |||
| -- the authority indicated in the request is different from the | -- the authority indicated in the request is different from the | |||
| -- one creating the response token | -- one creating the response token | |||
| incorrectData (7), | incorrectData (7), | |||
| -- the requester's data is incorrect (for notary services) | -- the requester's data is incorrect (for notary services) | |||
| missingTimeStamp (8), | missingTimeStamp (8), | |||
| -- when the timestamp is missing but should be there | -- when the timestamp is missing but should be there | |||
| -- (by policy) | -- (by policy) | |||
| badPOP (9), | badPOP (9), | |||
| -- the proof-of-possession failed | -- the proof-of-possession failed | |||
| certRevoked (10), | certRevoked (10), | |||
| -- the certificate has already been revoked | -- the certificate has already been revoked | |||
| certConfirmed (11), | certConfirmed (11), | |||
| -- the certificate has already been confirmed | -- the certificate has already been confirmed | |||
| wrongIntegrity (12), | wrongIntegrity (12), | |||
| -- not valid integrity, password based instead of signature or | -- not valid integrity, based on the password instead of the | |||
| -- vice versa | -- signature or vice versa | |||
| badRecipientNonce (13), | badRecipientNonce (13), | |||
| -- not valid recipient nonce, either missing or wrong value | -- not valid recipient nonce, either missing or wrong value | |||
| timeNotAvailable (14), | timeNotAvailable (14), | |||
| -- the TSA's time source is not available | -- the time source of the Time Stamping Authority (TSA) is | |||
| -- not available | ||||
| unacceptedPolicy (15), | unacceptedPolicy (15), | |||
| -- the requested TSA policy is not supported by the TSA. | -- the requested TSA policy is not supported by the TSA | |||
| unacceptedExtension (16), | unacceptedExtension (16), | |||
| -- the requested extension is not supported by the TSA. | -- the requested extension is not supported by the TSA | |||
| addInfoNotAvailable (17), | addInfoNotAvailable (17), | |||
| -- the additional information requested could not be | -- the additional information requested could not be | |||
| -- understood or is not available | -- understood or is not available | |||
| badSenderNonce (18), | badSenderNonce (18), | |||
| -- not valid sender nonce, either missing or wrong size | -- not valid sender nonce, either missing or wrong size | |||
| badCertTemplate (19), | badCertTemplate (19), | |||
| -- not valid cert. template or missing mandatory information | -- not valid cert. template or missing mandatory information | |||
| signerNotTrusted (20), | signerNotTrusted (20), | |||
| -- signer of the message unknown or not trusted | -- signer of the message unknown or not trusted | |||
| transactionIdInUse (21), | transactionIdInUse (21), | |||
| -- the transaction identifier is already in use | -- the transaction identifier is already in use | |||
| unsupportedVersion (22), | unsupportedVersion (22), | |||
| -- the version of the message is not supported | -- the version of the message is not supported | |||
| notAuthorized (23), | notAuthorized (23), | |||
| -- the sender was not authorized to make the preceding | -- the sender was not authorized to make the preceding | |||
| -- request or perform the preceding action | -- request or perform the preceding action | |||
| systemUnavail (24), | systemUnavail (24), | |||
| -- the request cannot be handled due to system unavailability | -- the request cannot be handled due to system unavailability | |||
| systemFailure (25), | systemFailure (25), | |||
| -- the request cannot be handled due to system failure | -- the request cannot be handled due to system failure | |||
| duplicateCertReq (26) | duplicateCertReq (26) | |||
| -- certificate cannot be issued because a duplicate | -- the certificate cannot be issued because a duplicate | |||
| -- certificate already exists | -- certificate already exists | |||
| } | } | |||
| PKIStatusInfo ::= SEQUENCE { | PKIStatusInfo ::= SEQUENCE { | |||
| status PKIStatus, | status PKIStatus, | |||
| statusString PKIFreeText OPTIONAL, | statusString PKIFreeText OPTIONAL, | |||
| failInfo PKIFailureInfo OPTIONAL | failInfo PKIFailureInfo OPTIONAL | |||
| } | } | |||
| OOBCert ::= CMPCertificate | OOBCert ::= CMPCertificate | |||
| OOBCertHash ::= SEQUENCE { | OOBCertHash ::= SEQUENCE { | |||
| hashAlg [0] AlgorithmIdentifier OPTIONAL, | hashAlg [0] AlgorithmIdentifier OPTIONAL, | |||
| certId [1] CertId OPTIONAL, | certId [1] CertId OPTIONAL, | |||
| hashVal BIT STRING | hashVal BIT STRING | |||
| -- hashVal is calculated over the DER encoding of the | -- hashVal is calculated over the DER encoding of the | |||
| -- self-signed certificate with the identifier certID. | -- self-signed certificate with the identifier certID. | |||
| } | } | |||
| POPODecKeyChallContent ::= SEQUENCE OF Challenge | POPODecKeyChallContent ::= SEQUENCE OF Challenge | |||
| -- One Challenge per encryption key certification request (in the | -- one Challenge per encryption key certification request (in the | |||
| -- same order as these requests appear in CertReqMessages). | -- same order as these requests appear in CertReqMessages) | |||
| Challenge ::= SEQUENCE { | Challenge ::= SEQUENCE { | |||
| owf AlgorithmIdentifier OPTIONAL, | owf AlgorithmIdentifier OPTIONAL, | |||
| -- MUST be present in the first Challenge; MAY be omitted in | -- MUST be present in the first Challenge; MAY be omitted in | |||
| -- any subsequent Challenge in POPODecKeyChallContent (if | -- any subsequent Challenge in POPODecKeyChallContent (if | |||
| -- omitted, then the owf used in the immediately preceding | -- omitted, then the owf used in the immediately preceding | |||
| -- Challenge is to be used). | -- Challenge is to be used) | |||
| witness OCTET STRING, | witness OCTET STRING, | |||
| -- the result of applying the one-way function (owf) to a | -- the result of applying the One-Way Function (owf) to a | |||
| -- randomly-generated INTEGER, A. [Note that a different | -- randomly generated INTEGER, A (Note that a different | |||
| -- INTEGER MUST be used for each Challenge.] | -- INTEGER MUST be used for each Challenge.) | |||
| challenge OCTET STRING | challenge OCTET STRING | |||
| -- the encryption (under the public key for which the cert. | -- the encryption (under the public key for which the cert. | |||
| -- request is being made) of Rand. | -- request is being made) of Rand | |||
| } | } | |||
| -- Added in CMP Updates [RFCXXXX] | -- Rand was added in CMP Updates [RFC9480] | |||
| Rand ::= SEQUENCE { | Rand ::= SEQUENCE { | |||
| -- Rand is encrypted under the public key to form the challenge | -- Rand is encrypted under the public key to form the challenge | |||
| -- in POPODecKeyChallContent | -- in POPODecKeyChallContent | |||
| int INTEGER, | int INTEGER, | |||
| -- the randomly-generated INTEGER A (above) | -- the randomly generated INTEGER A (above) | |||
| sender GeneralName | sender GeneralName | |||
| -- the sender's name (as included in PKIHeader) | -- the sender's name (as included in PKIHeader) | |||
| } | } | |||
| POPODecKeyRespContent ::= SEQUENCE OF INTEGER | POPODecKeyRespContent ::= SEQUENCE OF INTEGER | |||
| -- One INTEGER per encryption key certification request (in the | -- One INTEGER per encryption key certification request (in the | |||
| -- same order as these requests appear in CertReqMessages). The | -- same order as these requests appear in CertReqMessages). The | |||
| -- retrieved INTEGER A (above) is returned to the sender of the | -- retrieved INTEGER A (above) is returned to the sender of the | |||
| -- corresponding Challenge. | -- corresponding Challenge. | |||
| skipping to change at page 45, line 48 ¶ | skipping to change at line 1988 ¶ | |||
| subjectPublicKeyInfo SEQUENCE { | subjectPublicKeyInfo SEQUENCE { | |||
| algorithm AlgorithmIdentifier, | algorithm AlgorithmIdentifier, | |||
| subjectPublicKey BIT STRING }, | subjectPublicKey BIT STRING }, | |||
| attributes [0] IMPLICIT SET OF Attribute }, | attributes [0] IMPLICIT SET OF Attribute }, | |||
| signatureAlgorithm AlgorithmIdentifier, | signatureAlgorithm AlgorithmIdentifier, | |||
| signature BIT STRING | signature BIT STRING | |||
| } | } | |||
| CertResponse ::= SEQUENCE { | CertResponse ::= SEQUENCE { | |||
| certReqId INTEGER, | certReqId INTEGER, | |||
| -- to match this response with corresponding request (a value | -- to match this response with the corresponding request (a value | |||
| -- of -1 is to be used if certReqId is not specified in the | -- of -1 is to be used if certReqId is not specified in the | |||
| -- corresponding request, which can only be a p10cr) | -- corresponding request, which can only be a p10cr) | |||
| status PKIStatusInfo, | status PKIStatusInfo, | |||
| certifiedKeyPair CertifiedKeyPair OPTIONAL, | certifiedKeyPair CertifiedKeyPair OPTIONAL, | |||
| rspInfo OCTET STRING OPTIONAL | rspInfo OCTET STRING OPTIONAL | |||
| -- analogous to the id-regInfo-utf8Pairs string defined | -- analogous to the id-regInfo-utf8Pairs string defined | |||
| -- for regInfo in CertReqMsg [RFC4211] | -- for regInfo in CertReqMsg [RFC4211] | |||
| } | } | |||
| CertifiedKeyPair ::= SEQUENCE { | CertifiedKeyPair ::= SEQUENCE { | |||
| certOrEncCert CertOrEncCert, | certOrEncCert CertOrEncCert, | |||
| privateKey [0] EncryptedKey OPTIONAL, | privateKey [0] EncryptedKey OPTIONAL, | |||
| -- see [RFC4211] for comment on encoding | -- See [RFC4211] for comments on encoding. | |||
| -- Changed from Encrypted Value to EncryptedKey as a CHOICE of | -- Changed from Encrypted Value to EncryptedKey as a CHOICE of | |||
| -- EncryptedValue and EnvelopedData due to the changes made in | -- EncryptedValue and EnvelopedData due to the changes made in | |||
| -- CMP Updates [RFCXXXX] | -- CMP Updates [RFC9480]. | |||
| -- Using the choice EncryptedValue is bit-compatible to the | -- Using the choice EncryptedValue is bit-compatible to the | |||
| -- syntax without this change | -- syntax without this change. | |||
| publicationInfo [1] PKIPublicationInfo OPTIONAL | publicationInfo [1] PKIPublicationInfo OPTIONAL | |||
| } | } | |||
| CertOrEncCert ::= CHOICE { | CertOrEncCert ::= CHOICE { | |||
| certificate [0] CMPCertificate, | certificate [0] CMPCertificate, | |||
| encryptedCert [1] EncryptedKey | encryptedCert [1] EncryptedKey | |||
| -- Changed from Encrypted Value to EncryptedKey as a CHOICE of | -- Changed from Encrypted Value to EncryptedKey as a CHOICE of | |||
| -- EncryptedValue and EnvelopedData due to the changes made in | -- EncryptedValue and EnvelopedData due to the changes made in | |||
| -- CMP Updates [RFCXXXX] | -- CMP Updates [RFC9480]. | |||
| -- Using the choice EncryptedValue is bit-compatible to the | -- Using the choice EncryptedValue is bit-compatible to the | |||
| -- syntax without this change | -- syntax without this change. | |||
| } | } | |||
| KeyRecRepContent ::= SEQUENCE { | KeyRecRepContent ::= SEQUENCE { | |||
| status PKIStatusInfo, | status PKIStatusInfo, | |||
| newSigCert [0] CMPCertificate OPTIONAL, | newSigCert [0] CMPCertificate OPTIONAL, | |||
| caCerts [1] SEQUENCE SIZE (1..MAX) OF | caCerts [1] SEQUENCE SIZE (1..MAX) OF | |||
| CMPCertificate OPTIONAL, | CMPCertificate OPTIONAL, | |||
| keyPairHist [2] SEQUENCE SIZE (1..MAX) OF | keyPairHist [2] SEQUENCE SIZE (1..MAX) OF | |||
| CertifiedKeyPair OPTIONAL | CertifiedKeyPair OPTIONAL | |||
| } | } | |||
| RevReqContent ::= SEQUENCE OF RevDetails | RevReqContent ::= SEQUENCE OF RevDetails | |||
| RevDetails ::= SEQUENCE { | RevDetails ::= SEQUENCE { | |||
| certDetails CertTemplate, | certDetails CertTemplate, | |||
| -- allows requester to specify as much as they can about | -- allows the requester to specify as much as they can about | |||
| -- the cert. for which revocation is requested | -- the cert. for which revocation is requested | |||
| -- (e.g., for cases in which serialNumber is not available) | -- (e.g., for cases in which serialNumber is not available) | |||
| crlEntryDetails Extensions OPTIONAL | crlEntryDetails Extensions OPTIONAL | |||
| -- requested crlEntryExtensions | -- requested crlEntryExtensions | |||
| } | } | |||
| RevRepContent ::= SEQUENCE { | RevRepContent ::= SEQUENCE { | |||
| status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo, | status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo, | |||
| -- in same order as was sent in RevReqContent | -- in the same order as was sent in RevReqContent | |||
| revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId | revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId | |||
| OPTIONAL, | OPTIONAL, | |||
| -- IDs for which revocation was requested | -- IDs for which revocation was requested | |||
| -- (same order as status) | -- (same order as status) | |||
| crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList | crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList | |||
| OPTIONAL | OPTIONAL | |||
| -- the resulting CRLs (there may be more than one) | -- the resulting CRLs (there may be more than one) | |||
| } | } | |||
| CAKeyUpdAnnContent ::= SEQUENCE { | CAKeyUpdAnnContent ::= SEQUENCE { | |||
| skipping to change at page 48, line 4 ¶ | skipping to change at line 2087 ¶ | |||
| certReqId INTEGER, | certReqId INTEGER, | |||
| -- to match this confirmation with the corresponding req/rep | -- to match this confirmation with the corresponding req/rep | |||
| statusInfo PKIStatusInfo OPTIONAL, | statusInfo PKIStatusInfo OPTIONAL, | |||
| hashAlg [0] AlgorithmIdentifier OPTIONAL | hashAlg [0] AlgorithmIdentifier OPTIONAL | |||
| -- the hash algorithm to use for calculating certHash | -- the hash algorithm to use for calculating certHash | |||
| -- SHOULD NOT be used in all cases where the AlgorithmIdentifier | -- SHOULD NOT be used in all cases where the AlgorithmIdentifier | |||
| -- of the certificate signature specifies a hash algorithm | -- of the certificate signature specifies a hash algorithm | |||
| } | } | |||
| PKIConfirmContent ::= NULL | PKIConfirmContent ::= NULL | |||
| -- CertReqTemplateContent, id-regCtrl-algId, id-regCtrl-algId, and | -- CertReqTemplateContent, id-regCtrl-algId, id-regCtrl-algId, and | |||
| -- id-regCtrl-rsaKeyLen were added in CMP Updates [RFCXXXX] | -- id-regCtrl-rsaKeyLen were added in CMP Updates [RFC9480] | |||
| CertReqTemplateContent ::= SEQUENCE { | CertReqTemplateContent ::= SEQUENCE { | |||
| certTemplate CertTemplate, | certTemplate CertTemplate, | |||
| -- prefilled certTemplate structure elements | -- prefilled certTemplate structure elements | |||
| -- The SubjectPublicKeyInfo field in the certTemplate MUST NOT | -- The SubjectPublicKeyInfo field in the certTemplate MUST NOT | |||
| -- be used. | -- be used. | |||
| keySpec Controls OPTIONAL | keySpec Controls OPTIONAL | |||
| -- MAY be used to specify supported algorithms. | -- MAY be used to specify supported algorithms | |||
| -- Controls ::= SEQUENCE SIZE (1..MAX) OF AttributeTypeAndValue | -- Controls ::= SEQUENCE SIZE (1..MAX) OF AttributeTypeAndValue | |||
| -- as specified in CRMF (RFC4211) | -- as specified in CRMF [RFC4211] | |||
| } | } | |||
| id-regCtrl-altCertTemplate OBJECT IDENTIFIER ::= { id-regCtrl 7 } | id-regCtrl-altCertTemplate OBJECT IDENTIFIER ::= { id-regCtrl 7 } | |||
| AltCertTemplate ::= AttributeTypeAndValue | AltCertTemplate ::= AttributeTypeAndValue | |||
| -- specifies a template for a certificate other than an X.509v3 | -- specifies a template for a certificate other than an X.509v3 | |||
| -- public-key certificate | -- public key certificate | |||
| id-regCtrl-algId OBJECT IDENTIFIER ::= { id-regCtrl 11 } | id-regCtrl-algId OBJECT IDENTIFIER ::= { id-regCtrl 11 } | |||
| AlgIdCtrl ::= AlgorithmIdentifier | AlgIdCtrl ::= AlgorithmIdentifier | |||
| -- SHALL be used to specify supported algorithms other than RSA | -- SHALL be used to specify supported algorithms other than RSA | |||
| id-regCtrl-rsaKeyLen OBJECT IDENTIFIER ::= { id-regCtrl 12 } | id-regCtrl-rsaKeyLen OBJECT IDENTIFIER ::= { id-regCtrl 12 } | |||
| RsaKeyLenCtrl ::= INTEGER (1..MAX) | RsaKeyLenCtrl ::= INTEGER (1..MAX) | |||
| -- SHALL be used to specify supported RSA key lengths | -- SHALL be used to specify supported RSA key lengths | |||
| -- RootCaKeyUpdateContent, CRLSource, and CRLStatus were added in | -- RootCaKeyUpdateContent, CRLSource, and CRLStatus were added in | |||
| -- CMP Updates [RFCXXXX] | -- CMP Updates [RFC9480] | |||
| RootCaKeyUpdateContent ::= SEQUENCE { | RootCaKeyUpdateContent ::= SEQUENCE { | |||
| newWithNew CMPCertificate, | newWithNew CMPCertificate, | |||
| -- new root CA certificate | -- new root CA certificate | |||
| newWithOld [0] CMPCertificate OPTIONAL, | newWithOld [0] CMPCertificate OPTIONAL, | |||
| -- X.509 certificate containing the new public root CA key | -- X.509 certificate containing the new public root CA key | |||
| -- signed with the old private root CA key | -- signed with the old private root CA key | |||
| oldWithNew [1] CMPCertificate OPTIONAL | oldWithNew [1] CMPCertificate OPTIONAL | |||
| -- X.509 certificate containing the old public root CA key | -- X.509 certificate containing the old public root CA key | |||
| -- signed with the new private root CA key | -- signed with the new private root CA key | |||
| skipping to change at page 49, line 10 ¶ | skipping to change at line 2142 ¶ | |||
| CRLStatus ::= SEQUENCE { | CRLStatus ::= SEQUENCE { | |||
| source CRLSource, | source CRLSource, | |||
| thisUpdate Time OPTIONAL } | thisUpdate Time OPTIONAL } | |||
| InfoTypeAndValue ::= SEQUENCE { | InfoTypeAndValue ::= SEQUENCE { | |||
| infoType OBJECT IDENTIFIER, | infoType OBJECT IDENTIFIER, | |||
| infoValue ANY DEFINED BY infoType OPTIONAL | infoValue ANY DEFINED BY infoType OPTIONAL | |||
| } | } | |||
| -- Example InfoTypeAndValue contents include, but are not limited | -- Example InfoTypeAndValue contents include, but are not limited | |||
| -- to, the following (un-comment in this ASN.1 module and use as | -- to, the following (uncomment in this ASN.1 module and use as | |||
| -- appropriate for a given environment): | -- appropriate for a given environment): | |||
| -- | -- | |||
| -- id-it-caProtEncCert OBJECT IDENTIFIER ::= {id-it 1} | -- id-it-caProtEncCert OBJECT IDENTIFIER ::= {id-it 1} | |||
| -- CAProtEncCertValue ::= CMPCertificate | -- CAProtEncCertValue ::= CMPCertificate | |||
| -- id-it-signKeyPairTypes OBJECT IDENTIFIER ::= {id-it 2} | -- id-it-signKeyPairTypes OBJECT IDENTIFIER ::= {id-it 2} | |||
| -- SignKeyPairTypesValue ::= SEQUENCE SIZE (1..MAX) OF | -- SignKeyPairTypesValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- AlgorithmIdentifier | -- AlgorithmIdentifier | |||
| -- id-it-encKeyPairTypes OBJECT IDENTIFIER ::= {id-it 3} | -- id-it-encKeyPairTypes OBJECT IDENTIFIER ::= {id-it 3} | |||
| -- EncKeyPairTypesValue ::= SEQUENCE SIZE (1..MAX) OF | -- EncKeyPairTypesValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- AlgorithmIdentifier | -- AlgorithmIdentifier | |||
| skipping to change at page 49, line 38 ¶ | skipping to change at line 2170 ¶ | |||
| -- UnsupportedOIDsValue ::= SEQUENCE SIZE (1..MAX) OF | -- UnsupportedOIDsValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- OBJECT IDENTIFIER | -- OBJECT IDENTIFIER | |||
| -- id-it-keyPairParamReq OBJECT IDENTIFIER ::= {id-it 10} | -- id-it-keyPairParamReq OBJECT IDENTIFIER ::= {id-it 10} | |||
| -- KeyPairParamReqValue ::= OBJECT IDENTIFIER | -- KeyPairParamReqValue ::= OBJECT IDENTIFIER | |||
| -- id-it-keyPairParamRep OBJECT IDENTIFIER ::= {id-it 11} | -- id-it-keyPairParamRep OBJECT IDENTIFIER ::= {id-it 11} | |||
| -- KeyPairParamRepValue ::= AlgorithmIdentifier | -- KeyPairParamRepValue ::= AlgorithmIdentifier | |||
| -- id-it-revPassphrase OBJECT IDENTIFIER ::= {id-it 12} | -- id-it-revPassphrase OBJECT IDENTIFIER ::= {id-it 12} | |||
| -- RevPassphraseValue ::= EncryptedKey | -- RevPassphraseValue ::= EncryptedKey | |||
| -- - Changed from Encrypted Value to EncryptedKey as a CHOICE | -- - Changed from Encrypted Value to EncryptedKey as a CHOICE | |||
| -- - of EncryptedValue and EnvelopedData due to the changes | -- - of EncryptedValue and EnvelopedData due to the changes | |||
| -- - made in CMP Updates [RFCXXXX] | -- - made in CMP Updates [RFC9480]. | |||
| -- - Using the choice EncryptedValue is bit-compatible to the | -- - Using the choice EncryptedValue is bit-compatible to the | |||
| -- - syntax without this change | -- - syntax without this change. | |||
| -- id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13} | -- id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13} | |||
| -- ImplicitConfirmValue ::= NULL | -- ImplicitConfirmValue ::= NULL | |||
| -- id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14} | -- id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14} | |||
| -- ConfirmWaitTimeValue ::= GeneralizedTime | -- ConfirmWaitTimeValue ::= GeneralizedTime | |||
| -- id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} | -- id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} | |||
| -- OrigPKIMessageValue ::= PKIMessages | -- OrigPKIMessageValue ::= PKIMessages | |||
| -- id-it-suppLangTags OBJECT IDENTIFIER ::= {id-it 16} | -- id-it-suppLangTags OBJECT IDENTIFIER ::= {id-it 16} | |||
| -- SuppLangTagsValue ::= SEQUENCE OF UTF8String | -- SuppLangTagsValue ::= SEQUENCE OF UTF8String | |||
| -- id-it-caCerts OBJECT IDENTIFIER ::= {id-it 17} | -- id-it-caCerts OBJECT IDENTIFIER ::= {id-it 17} | |||
| -- CaCertsValue ::= SEQUENCE SIZE (1..MAX) OF | -- CaCertsValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- CMPCertificate | -- CMPCertificate | |||
| -- - id-it-caCerts added in CMP Updates [RFCXXXX] | -- - id-it-caCerts added in CMP Updates [RFC9480] | |||
| -- id-it-rootCaKeyUpdate OBJECT IDENTIFIER ::= {id-it 18} | -- id-it-rootCaKeyUpdate OBJECT IDENTIFIER ::= {id-it 18} | |||
| -- RootCaKeyUpdateValue ::= RootCaKeyUpdateContent | -- RootCaKeyUpdateValue ::= RootCaKeyUpdateContent | |||
| -- - id-it-rootCaKeyUpdate added in CMP Updates [RFCXXXX] | -- - id-it-rootCaKeyUpdate added in CMP Updates [RFC9480] | |||
| -- id-it-certReqTemplate OBJECT IDENTIFIER ::= {id-it 19} | -- id-it-certReqTemplate OBJECT IDENTIFIER ::= {id-it 19} | |||
| -- CertReqTemplateValue ::= CertReqTemplateContent | -- CertReqTemplateValue ::= CertReqTemplateContent | |||
| -- - id-it-certReqTemplate added in CMP Updates [RFCXXXX] | -- - id-it-certReqTemplate added in CMP Updates [RFC9480] | |||
| -- id-it-rootCaCert OBJECT IDENTIFIER ::= {id-it 20} | -- id-it-rootCaCert OBJECT IDENTIFIER ::= {id-it 20} | |||
| -- RootCaCertValue ::= CMPCertificate | -- RootCaCertValue ::= CMPCertificate | |||
| -- - id-it-rootCaCert added in CMP Updates [RFCXXXX] | -- - id-it-rootCaCert added in CMP Updates [RFC9480] | |||
| -- id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21} | -- id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21} | |||
| -- CertProfileValue ::= SEQUENCE SIZE (1..MAX) OF | -- CertProfileValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- UTF8String | -- UTF8String | |||
| -- - id-it-certProfile added in CMP Updates [RFCXXXX] | -- - id-it-certProfile added in CMP Updates [RFC9480] | |||
| -- id-it-crlStatusList OBJECT IDENTIFIER ::= {id-it 22} | -- id-it-crlStatusList OBJECT IDENTIFIER ::= {id-it 22} | |||
| -- CRLStatusListValue ::= SEQUENCE SIZE (1..MAX) OF | -- CRLStatusListValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- CRLStatus | -- CRLStatus | |||
| -- - id-it-crlStatusList added in CMP Updates [RFCXXXX] | -- - id-it-crlStatusList added in CMP Updates [RFC9480] | |||
| -- id-it-crls OBJECT IDENTIFIER ::= {id-it 23} | -- id-it-crls OBJECT IDENTIFIER ::= {id-it 23} | |||
| -- CRLsValue ::= SEQUENCE SIZE (1..MAX) OF | -- CRLsValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- CertificateList | -- CertificateList | |||
| -- - id-it-crls added in CMP Updates [RFCXXXX] | -- - id-it-crls added in CMP Updates [RFC9480] | |||
| -- | -- | |||
| -- where | -- where | |||
| -- | -- | |||
| -- id-pkix OBJECT IDENTIFIER ::= { | -- id-pkix OBJECT IDENTIFIER ::= { | |||
| -- iso(1) identified-organization(3) | -- iso(1) identified-organization(3) | |||
| -- dod(6) internet(1) security(5) mechanisms(5) pkix(7)} | -- dod(6) internet(1) security(5) mechanisms(5) pkix(7)} | |||
| -- and | -- and | |||
| -- id-it OBJECT IDENTIFIER ::= {id-pkix 4} | -- id-it OBJECT IDENTIFIER ::= {id-pkix 4} | |||
| -- | -- | |||
| -- | -- | |||
| -- This construct MAY also be used to define new PKIX Certificate | -- This construct MAY also be used to define new PKIX Certificate | |||
| -- Management Protocol request and response messages, or general- | -- Management Protocol request and response messages or general- | |||
| -- purpose (e.g., announcement) messages for future needs or for | -- purpose (e.g., announcement) messages for future needs or for | |||
| -- specific environments. | -- specific environments. | |||
| GenMsgContent ::= SEQUENCE OF InfoTypeAndValue | GenMsgContent ::= SEQUENCE OF InfoTypeAndValue | |||
| -- May be sent by EE, RA, or CA (depending on message content). | -- May be sent by EE, RA, or CA (depending on message content). | |||
| -- The OPTIONAL infoValue parameter of InfoTypeAndValue will | -- The OPTIONAL infoValue parameter of InfoTypeAndValue will | |||
| -- typically be omitted for some of the examples given above. | -- typically be omitted for some of the examples given above. | |||
| -- The receiver is free to ignore any contained OBJ. IDs that it | -- The receiver is free to ignore any contained OIDs that it | |||
| -- does not recognize. If sent from EE to CA, the empty set | -- does not recognize. If sent from EE to CA, the empty set | |||
| -- indicates that the CA may send | -- indicates that the CA may send | |||
| -- any/all information that it wishes. | -- any/all information that it wishes. | |||
| GenRepContent ::= SEQUENCE OF InfoTypeAndValue | GenRepContent ::= SEQUENCE OF InfoTypeAndValue | |||
| -- Receiver MAY ignore any contained OIDs that it does not | -- The receiver MAY ignore any contained OIDs that it does not | |||
| -- recognize. | -- recognize. | |||
| ErrorMsgContent ::= SEQUENCE { | ErrorMsgContent ::= SEQUENCE { | |||
| pKIStatusInfo PKIStatusInfo, | pKIStatusInfo PKIStatusInfo, | |||
| errorCode INTEGER OPTIONAL, | errorCode INTEGER OPTIONAL, | |||
| -- implementation-specific error codes | -- implementation-specific error codes | |||
| errorDetails PKIFreeText OPTIONAL | errorDetails PKIFreeText OPTIONAL | |||
| -- implementation-specific error details | -- implementation-specific error details | |||
| } | } | |||
| skipping to change at page 51, line 25 ¶ | skipping to change at line 2254 ¶ | |||
| certReqId INTEGER | certReqId INTEGER | |||
| } | } | |||
| PollRepContent ::= SEQUENCE OF SEQUENCE { | PollRepContent ::= SEQUENCE OF SEQUENCE { | |||
| certReqId INTEGER, | certReqId INTEGER, | |||
| checkAfter INTEGER, -- time in seconds | checkAfter INTEGER, -- time in seconds | |||
| reason PKIFreeText OPTIONAL | reason PKIFreeText OPTIONAL | |||
| } | } | |||
| -- | -- | |||
| -- Extended Key Usage extension for PKI entities used in CMP | -- Extended key usage extension for PKI entities used in CMP | |||
| -- operations, added due to the changes made in | -- operations, added due to the changes made in | |||
| -- CMP Updates [RFCXXXX] | -- CMP Updates [RFC9480] | |||
| -- The EKUs for the CA and RA are reused from CMC as defined in | -- The EKUs for the CA and RA are reused from CMC, as defined in | |||
| -- [RFC6402] | -- [RFC6402] | |||
| -- | -- | |||
| -- id-kp-cmcCA OBJECT IDENTIFIER ::= { id-kp 27 } | -- id-kp-cmcCA OBJECT IDENTIFIER ::= { id-kp 27 } | |||
| -- id-kp-cmcRA OBJECT IDENTIFIER ::= { id-kp 28 } | -- id-kp-cmcRA OBJECT IDENTIFIER ::= { id-kp 28 } | |||
| id-kp-cmKGA OBJECT IDENTIFIER ::= { id-kp 32 } | id-kp-cmKGA OBJECT IDENTIFIER ::= { id-kp 32 } | |||
| -- There is no 1988 ASN.1 module of PKCS#9 available to import the | -- There is no 1988 ASN.1 module of PKCS #9 available to import the | |||
| -- syntax of the localKeyId attribute type and value from. Therefore, | -- syntax of the localKeyId attribute type and value from. Therefore, | |||
| -- the syntax is added here as needed for the updates made in | -- the syntax is added here as needed for the updates made in | |||
| -- CMP Updates [RFCXXXX] | -- CMP Updates [RFC9480]. | |||
| pkcs-9 OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) | pkcs-9 OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) | |||
| rsadsi(113549) pkcs(1) 9} | rsadsi(113549) pkcs(1) 9} | |||
| pkcs-9-at-localKeyId OBJECT IDENTIFIER ::= {pkcs-9 21} | pkcs-9-at-localKeyId OBJECT IDENTIFIER ::= {pkcs-9 21} | |||
| LocalKeyIdValue ::= OCTET STRING | LocalKeyIdValue ::= OCTET STRING | |||
| END -- of CMP module | END -- of CMP module | |||
| A.2. Update to RFC5912 - 2002 ASN.1 Module | A.2. Update to RFC 5912 - 2002 ASN.1 Module | |||
| This section contains the updated 2002 ASN.1 module for [RFC5912]. | This section contains the updated 2002 ASN.1 module for [RFC5912]. | |||
| This module replaces the module in Section 9 of [RFC5912]. The | This module replaces the module in Section 9 of [RFC5912]. The | |||
| module contains those changes to the normative ASN.1 module from | module contains those changes to the normative ASN.1 module from | |||
| RFC4210 Appendix F [RFC4210] that were to update to 2002 ASN.1 | Appendix F of [RFC4210] that were to update to the 2002 ASN.1 | |||
| standard done in [RFC5912] as well as changes made in this document. | standard done in [RFC5912], as well as changes made in this document. | |||
| PKIXCMP-2021 | PKIXCMP-2021 | |||
| { iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
| security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
| id-mod-cmp2021-02(100) } | id-mod-cmp2021-02(100) } | |||
| DEFINITIONS EXPLICIT TAGS ::= | DEFINITIONS EXPLICIT TAGS ::= | |||
| BEGIN | BEGIN | |||
| IMPORTS | IMPORTS | |||
| AttributeSet{}, SingleAttribute{}, Extensions{}, EXTENSION, ATTRIBUTE | AttributeSet{}, SingleAttribute{}, Extensions{}, EXTENSION, ATTRIBUTE | |||
| skipping to change at page 52, line 50 ¶ | skipping to change at line 2324 ¶ | |||
| {iso(1) identified-organization(3) dod(6) internet(1) security(5) | {iso(1) identified-organization(3) dod(6) internet(1) security(5) | |||
| mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59)} | mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59)} | |||
| CertTemplate, PKIPublicationInfo, EncryptedKey, CertId, | CertTemplate, PKIPublicationInfo, EncryptedKey, CertId, | |||
| CertReqMessages, Controls, RegControlSet, id-regCtrl | CertReqMessages, Controls, RegControlSet, id-regCtrl | |||
| FROM PKIXCRMF-2009 | FROM PKIXCRMF-2009 | |||
| { iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
| security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
| id-mod-crmf2005-02(55) } | id-mod-crmf2005-02(55) } | |||
| -- The import of EncryptedKey is added due to the updates made | -- The import of EncryptedKey is added due to the updates made | |||
| -- in CMP Updates [RFCXXXX]. EncryptedValue does not need to | -- in CMP Updates [RFC9480]. EncryptedValue does not need to | |||
| -- be imported anymore and is therefore removed here. | -- be imported anymore and is therefore removed here. | |||
| -- see also the behavioral clarifications to CRMF codified in | -- See also the behavioral clarifications to CRMF codified in | |||
| -- Appendix C of this specification | -- Appendix C of this specification. | |||
| CertificationRequest | CertificationRequest | |||
| FROM PKCS-10 | FROM PKCS-10 | |||
| {iso(1) identified-organization(3) dod(6) internet(1) security(5) | {iso(1) identified-organization(3) dod(6) internet(1) security(5) | |||
| mechanisms(5) pkix(7) id-mod(0) id-mod-pkcs10-2009(69)} | mechanisms(5) pkix(7) id-mod(0) id-mod-pkcs10-2009(69)} | |||
| -- (specified in RFC 2986 with 1993 ASN.1 syntax and IMPLICIT | -- (specified in [RFC2986] with 1993 ASN.1 syntax and IMPLICIT | |||
| -- tags). Alternatively, implementers may directly include | -- tags). Alternatively, implementers may directly include | |||
| -- the [RFC2986] syntax in this module | -- the syntax of [RFC2986] in this module. | |||
| localKeyId | localKeyId | |||
| FROM PKCS-9 | FROM PKCS-9 | |||
| {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | |||
| modules(0) pkcs-9(1)} | modules(0) pkcs-9(1)} | |||
| -- The import of localKeyId is added due to the updates made in | -- The import of localKeyId is added due to the updates made in | |||
| -- CMP Updates [RFCXXXX] | -- CMP Updates [RFC9480]. | |||
| EnvelopedData, SignedData | EnvelopedData, SignedData | |||
| FROM CryptographicMessageSyntax-2009 | FROM CryptographicMessageSyntax-2009 | |||
| {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | |||
| smime(16) modules(0) id-mod-cms-2004-02(41)} | smime(16) modules(0) id-mod-cms-2004-02(41)} | |||
| -- The import of EnvelopedData and SignedData is added due to | -- The import of EnvelopedData and SignedData is added due to | |||
| -- the updates made in CMP Updates [RFCXXXX] | -- the updates made in CMP Updates [RFC9480]. | |||
| ; | ; | |||
| -- the rest of the module contains locally defined OIDs and | -- The rest of the module contains locally defined OIDs and | |||
| -- constructs | -- constructs: | |||
| CMPCertificate ::= CHOICE { x509v3PKCert Certificate, ... } | CMPCertificate ::= CHOICE { x509v3PKCert Certificate, ... } | |||
| -- This syntax, while bits-on-the-wire compatible with the | -- This syntax, while bits-on-the-wire compatible with the | |||
| -- standard X.509 definition of "Certificate", allows the | -- standard X.509 definition of "Certificate", allows the | |||
| -- possibility of future certificate types (such as X.509 | -- possibility of future certificate types (such as X.509 | |||
| -- attribute certificates, WAP WTLS certificates, or other kinds | -- attribute certificates, card-verifiable | |||
| -- of certificates) within this certificate management protocol, | -- certificates, or other kinds of certificates) within this | |||
| -- should a need ever arise to support such generality. Those | -- Certificate Management Protocol, should a need ever arise to | |||
| -- implementations that do not foresee a need to ever support | -- support such generality. Those implementations that do not | |||
| -- other certificate types MAY, if they wish, comment out the | -- foresee a need to ever support other certificate types MAY, if | |||
| -- above structure and "uncomment" the following one prior to | -- they wish, comment out the above structure and "uncomment" the | |||
| -- compiling this ASN.1 module. (Note that interoperability | -- following one prior to compiling this ASN.1 module. (Note that | |||
| -- with implementations that don't do this will be unaffected by | -- interoperability with implementations that don't do this will be | |||
| -- this change.) | -- unaffected by this change.) | |||
| -- CMPCertificate ::= Certificate | -- CMPCertificate ::= Certificate | |||
| PKIMessage ::= SEQUENCE { | PKIMessage ::= SEQUENCE { | |||
| header PKIHeader, | header PKIHeader, | |||
| body PKIBody, | body PKIBody, | |||
| protection [0] PKIProtection OPTIONAL, | protection [0] PKIProtection OPTIONAL, | |||
| extraCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | extraCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | |||
| OPTIONAL } | OPTIONAL } | |||
| PKIMessages ::= SEQUENCE SIZE (1..MAX) OF PKIMessage | PKIMessages ::= SEQUENCE SIZE (1..MAX) OF PKIMessage | |||
| PKIHeader ::= SEQUENCE { | PKIHeader ::= SEQUENCE { | |||
| pvno INTEGER { cmp1999(1), cmp2000(2), | pvno INTEGER { cmp1999(1), cmp2000(2), | |||
| cmp2012(3) }, | cmp2012(3) }, | |||
| sender GeneralName, | sender GeneralName, | |||
| -- identifies the sender | -- identifies the sender | |||
| recipient GeneralName, | recipient GeneralName, | |||
| -- identifies the intended recipient | -- identifies the intended recipient | |||
| messageTime [0] GeneralizedTime OPTIONAL, | messageTime [0] GeneralizedTime OPTIONAL, | |||
| -- time of production of this message (used when sender | -- time of production of this message (used when the sender | |||
| -- believes that the transport will be "suitable"; i.e., | -- believes that the transport will be "suitable", i.e., | |||
| -- that the time will still be meaningful upon receipt) | -- that the time will still be meaningful upon receipt) | |||
| protectionAlg [1] AlgorithmIdentifier{ALGORITHM, {...}} | protectionAlg [1] AlgorithmIdentifier{ALGORITHM, {...}} | |||
| OPTIONAL, | OPTIONAL, | |||
| -- algorithm used for calculation of protection bits | -- algorithm used for the calculation of protection bits | |||
| senderKID [2] KeyIdentifier OPTIONAL, | senderKID [2] KeyIdentifier OPTIONAL, | |||
| recipKID [3] KeyIdentifier OPTIONAL, | recipKID [3] KeyIdentifier OPTIONAL, | |||
| -- to identify specific keys used for protection | -- to identify specific keys used for protection | |||
| transactionID [4] OCTET STRING OPTIONAL, | transactionID [4] OCTET STRING OPTIONAL, | |||
| -- identifies the transaction; i.e., this will be the same in | -- identifies the transaction, i.e., this will be the same in | |||
| -- corresponding request, response, certConf, and PKIConf | -- corresponding request, response, certConf, and PKIConf | |||
| -- messages | -- messages | |||
| senderNonce [5] OCTET STRING OPTIONAL, | senderNonce [5] OCTET STRING OPTIONAL, | |||
| recipNonce [6] OCTET STRING OPTIONAL, | recipNonce [6] OCTET STRING OPTIONAL, | |||
| -- nonces used to provide replay protection, senderNonce | -- nonces used to provide replay protection, senderNonce | |||
| -- is inserted by the creator of this message; recipNonce | -- is inserted by the creator of this message; recipNonce | |||
| -- is a nonce previously inserted in a related message by | -- is a nonce previously inserted in a related message by | |||
| -- the intended recipient of this message | -- the intended recipient of this message. | |||
| freeText [7] PKIFreeText OPTIONAL, | freeText [7] PKIFreeText OPTIONAL, | |||
| -- this may be used to indicate context-specific instructions | -- this may be used to indicate context-specific instructions | |||
| -- (this field is intended for human consumption) | -- (this field is intended for human consumption) | |||
| generalInfo [8] SEQUENCE SIZE (1..MAX) OF | generalInfo [8] SEQUENCE SIZE (1..MAX) OF | |||
| InfoTypeAndValue OPTIONAL | InfoTypeAndValue OPTIONAL | |||
| -- this may be used to convey context-specific information | -- this may be used to convey context-specific information | |||
| -- (this field not primarily intended for human consumption) | -- (this field not primarily intended for human consumption) | |||
| } | } | |||
| PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | |||
| -- text encoded as UTF-8 String [RFC3629] | -- text encoded as a UTF-8 string [RFC3629] | |||
| PKIBody ::= CHOICE { -- message-specific body elements | PKIBody ::= CHOICE { -- message-specific body elements | |||
| ir [0] CertReqMessages, --Initialization Request | ir [0] CertReqMessages, --Initialization Request | |||
| ip [1] CertRepMessage, --Initialization Response | ip [1] CertRepMessage, --Initialization Response | |||
| cr [2] CertReqMessages, --Certification Request | cr [2] CertReqMessages, --Certification Request | |||
| cp [3] CertRepMessage, --Certification Response | cp [3] CertRepMessage, --Certification Response | |||
| p10cr [4] CertificationRequest, --imported from [RFC2986] | p10cr [4] CertificationRequest, --imported from [RFC2986] | |||
| popdecc [5] POPODecKeyChallContent, --pop Challenge | popdecc [5] POPODecKeyChallContent, --pop Challenge | |||
| popdecr [6] POPODecKeyRespContent, --pop Response | popdecr [6] POPODecKeyRespContent, --pop Response | |||
| kur [7] CertReqMessages, --Key Update Request | kur [7] CertReqMessages, --Key Update Request | |||
| skipping to change at page 55, line 26 ¶ | skipping to change at line 2445 ¶ | |||
| ccp [14] CertRepMessage, --Cross-Cert. Response | ccp [14] CertRepMessage, --Cross-Cert. Response | |||
| ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann. | ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann. | |||
| cann [16] CertAnnContent, --Certificate Ann. | cann [16] CertAnnContent, --Certificate Ann. | |||
| rann [17] RevAnnContent, --Revocation Ann. | rann [17] RevAnnContent, --Revocation Ann. | |||
| crlann [18] CRLAnnContent, --CRL Announcement | crlann [18] CRLAnnContent, --CRL Announcement | |||
| pkiconf [19] PKIConfirmContent, --Confirmation | pkiconf [19] PKIConfirmContent, --Confirmation | |||
| nested [20] NestedMessageContent, --Nested Message | nested [20] NestedMessageContent, --Nested Message | |||
| genm [21] GenMsgContent, --General Message | genm [21] GenMsgContent, --General Message | |||
| genp [22] GenRepContent, --General Response | genp [22] GenRepContent, --General Response | |||
| error [23] ErrorMsgContent, --Error Message | error [23] ErrorMsgContent, --Error Message | |||
| certConf [24] CertConfirmContent, --Certificate confirm | certConf [24] CertConfirmContent, --Certificate Confirm | |||
| pollReq [25] PollReqContent, --Polling request | pollReq [25] PollReqContent, --Polling Request | |||
| pollRep [26] PollRepContent --Polling response | pollRep [26] PollRepContent --Polling Response | |||
| } | } | |||
| PKIProtection ::= BIT STRING | PKIProtection ::= BIT STRING | |||
| ProtectedPart ::= SEQUENCE { | ProtectedPart ::= SEQUENCE { | |||
| header PKIHeader, | header PKIHeader, | |||
| body PKIBody } | body PKIBody } | |||
| id-PasswordBasedMac OBJECT IDENTIFIER ::= { iso(1) member-body(2) | id-PasswordBasedMac OBJECT IDENTIFIER ::= { iso(1) member-body(2) | |||
| usa(840) nt(113533) nsn(7) algorithms(66) 13 } | usa(840) nt(113533) nsn(7) algorithms(66) 13 } | |||
| PBMParameter ::= SEQUENCE { | PBMParameter ::= SEQUENCE { | |||
| salt OCTET STRING, | salt OCTET STRING, | |||
| -- note: implementations MAY wish to limit acceptable sizes | -- Note: Implementations MAY wish to limit acceptable sizes | |||
| -- of this string to values appropriate for their environment | -- of this string to values appropriate for their environment | |||
| -- in order to reduce the risk of denial-of-service attacks | -- in order to reduce the risk of denial-of-service attacks. | |||
| owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}}, | owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}}, | |||
| -- AlgId for a One-Way Function | -- AlgId for a One-Way Function | |||
| iterationCount INTEGER, | iterationCount INTEGER, | |||
| -- number of times the OWF is applied | -- number of times the OWF is applied | |||
| -- note: implementations MAY wish to limit acceptable sizes | -- Note: Implementations MAY wish to limit acceptable sizes | |||
| -- of this integer to values appropriate for their environment | -- of this integer to values appropriate for their environment | |||
| -- in order to reduce the risk of denial-of-service attacks | -- in order to reduce the risk of denial-of-service attacks. | |||
| mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | |||
| -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11], | -- the MAC AlgId (e.g., HMAC-SHA256, AES-GMAC [RFC9481], | |||
| -- or HMAC [RFC2104, RFC2202]) | -- or HMAC [RFC2104, RFC2202]) | |||
| } | } | |||
| id-DHBasedMac OBJECT IDENTIFIER ::= { iso(1) member-body(2) | id-DHBasedMac OBJECT IDENTIFIER ::= { iso(1) member-body(2) | |||
| usa(840) nt(113533) nsn(7) algorithms(66) 30 } | usa(840) nt(113533) nsn(7) algorithms(66) 30 } | |||
| DHBMParameter ::= SEQUENCE { | DHBMParameter ::= SEQUENCE { | |||
| owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}}, | owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}}, | |||
| -- AlgId for a One-Way Function | -- AlgId for a One-Way Function | |||
| mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | |||
| -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11], | -- the MAC AlgId (e.g., HMAC-SHA256, AES-GMAC [RFC9481], | |||
| -- or HMAC [RFC2104, RFC2202]) | -- or HMAC [RFC2104, RFC2202]) | |||
| } | } | |||
| PKIStatus ::= INTEGER { | PKIStatus ::= INTEGER { | |||
| accepted (0), | accepted (0), | |||
| -- you got exactly what you asked for | -- you got exactly what you asked for | |||
| grantedWithMods (1), | grantedWithMods (1), | |||
| -- you got something like what you asked for; the | -- you got something like what you asked for; the | |||
| -- requester is responsible for ascertaining the differences | -- requester is responsible for ascertaining the differences | |||
| rejection (2), | rejection (2), | |||
| skipping to change at page 56, line 47 ¶ | skipping to change at line 2514 ¶ | |||
| -- notification that a revocation has occurred | -- notification that a revocation has occurred | |||
| keyUpdateWarning (6) | keyUpdateWarning (6) | |||
| -- update already done for the oldCertId specified in | -- update already done for the oldCertId specified in | |||
| -- CertReqMsg | -- CertReqMsg | |||
| } | } | |||
| PKIFailureInfo ::= BIT STRING { | PKIFailureInfo ::= BIT STRING { | |||
| -- since we can fail in more than one way! | -- since we can fail in more than one way! | |||
| -- More codes may be added in the future if/when required. | -- More codes may be added in the future if/when required. | |||
| badAlg (0), | badAlg (0), | |||
| -- unrecognized or unsupported Algorithm Identifier | -- unrecognized or unsupported algorithm identifier | |||
| badMessageCheck (1), | badMessageCheck (1), | |||
| -- integrity check failed (e.g., signature did not verify) | -- integrity check failed (e.g., signature did not verify) | |||
| badRequest (2), | badRequest (2), | |||
| -- transaction not permitted or supported | -- transaction not permitted or supported | |||
| badTime (3), | badTime (3), | |||
| -- messageTime was not sufficiently close to the system time, | -- messageTime was not sufficiently close to the system time, | |||
| -- as defined by local policy | -- as defined by local policy | |||
| badCertId (4), | badCertId (4), | |||
| -- no certificate could be found matching the provided criteria | -- no certificate could be found matching the provided criteria | |||
| badDataFormat (5), | badDataFormat (5), | |||
| skipping to change at page 57, line 26 ¶ | skipping to change at line 2541 ¶ | |||
| missingTimeStamp (8), | missingTimeStamp (8), | |||
| -- when the timestamp is missing but should be there | -- when the timestamp is missing but should be there | |||
| -- (by policy) | -- (by policy) | |||
| badPOP (9), | badPOP (9), | |||
| -- the proof-of-possession failed | -- the proof-of-possession failed | |||
| certRevoked (10), | certRevoked (10), | |||
| -- the certificate has already been revoked | -- the certificate has already been revoked | |||
| certConfirmed (11), | certConfirmed (11), | |||
| -- the certificate has already been confirmed | -- the certificate has already been confirmed | |||
| wrongIntegrity (12), | wrongIntegrity (12), | |||
| -- not valid integrity, password based instead of signature or | -- not valid integrity, based on the password instead of the | |||
| -- vice versa | -- signature or vice versa | |||
| badRecipientNonce (13), | badRecipientNonce (13), | |||
| -- not valid recipient nonce, either missing or wrong value | -- not valid recipient nonce, either missing or wrong value | |||
| timeNotAvailable (14), | timeNotAvailable (14), | |||
| -- the TSA's time source is not available | -- the TSA's time source is not available | |||
| unacceptedPolicy (15), | unacceptedPolicy (15), | |||
| -- the requested TSA policy is not supported by the TSA | -- the requested TSA policy is not supported by the TSA | |||
| unacceptedExtension (16), | unacceptedExtension (16), | |||
| -- the requested extension is not supported by the TSA | -- the requested extension is not supported by the TSA | |||
| addInfoNotAvailable (17), | addInfoNotAvailable (17), | |||
| -- the additional information requested could not be | -- the additional information requested could not be | |||
| skipping to change at page 58, line 9 ¶ | skipping to change at line 2572 ¶ | |||
| unsupportedVersion (22), | unsupportedVersion (22), | |||
| -- the version of the message is not supported | -- the version of the message is not supported | |||
| notAuthorized (23), | notAuthorized (23), | |||
| -- the sender was not authorized to make the preceding | -- the sender was not authorized to make the preceding | |||
| -- request or perform the preceding action | -- request or perform the preceding action | |||
| systemUnavail (24), | systemUnavail (24), | |||
| -- the request cannot be handled due to system unavailability | -- the request cannot be handled due to system unavailability | |||
| systemFailure (25), | systemFailure (25), | |||
| -- the request cannot be handled due to system failure | -- the request cannot be handled due to system failure | |||
| duplicateCertReq (26) | duplicateCertReq (26) | |||
| -- certificate cannot be issued because a duplicate | -- the certificate cannot be issued because a duplicate | |||
| -- certificate already exists | -- certificate already exists | |||
| } | } | |||
| PKIStatusInfo ::= SEQUENCE { | PKIStatusInfo ::= SEQUENCE { | |||
| status PKIStatus, | status PKIStatus, | |||
| statusString PKIFreeText OPTIONAL, | statusString PKIFreeText OPTIONAL, | |||
| failInfo PKIFailureInfo OPTIONAL } | failInfo PKIFailureInfo OPTIONAL } | |||
| OOBCert ::= CMPCertificate | OOBCert ::= CMPCertificate | |||
| skipping to change at page 58, line 31 ¶ | skipping to change at line 2594 ¶ | |||
| hashAlg [0] AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} | hashAlg [0] AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} | |||
| OPTIONAL, | OPTIONAL, | |||
| certId [1] CertId OPTIONAL, | certId [1] CertId OPTIONAL, | |||
| hashVal BIT STRING | hashVal BIT STRING | |||
| -- hashVal is calculated over the DER encoding of the | -- hashVal is calculated over the DER encoding of the | |||
| -- self-signed certificate with the identifier certID. | -- self-signed certificate with the identifier certID. | |||
| } | } | |||
| POPODecKeyChallContent ::= SEQUENCE OF Challenge | POPODecKeyChallContent ::= SEQUENCE OF Challenge | |||
| -- One Challenge per encryption key certification request (in the | -- One Challenge per encryption key certification request (in the | |||
| -- same order as these requests appear in CertReqMessages). | -- same order as these requests appear in CertReqMessages) | |||
| Challenge ::= SEQUENCE { | Challenge ::= SEQUENCE { | |||
| owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} | owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} | |||
| OPTIONAL, | OPTIONAL, | |||
| -- MUST be present in the first Challenge; MAY be omitted in | -- MUST be present in the first Challenge; MAY be omitted in | |||
| -- any subsequent Challenge in POPODecKeyChallContent (if | -- any subsequent Challenge in POPODecKeyChallContent (if | |||
| -- omitted, then the owf used in the immediately preceding | -- omitted, then the owf used in the immediately preceding | |||
| -- Challenge is to be used). | -- Challenge is to be used) | |||
| witness OCTET STRING, | witness OCTET STRING, | |||
| -- the result of applying the one-way function (owf) to a | -- the result of applying the One-Way Function (owf) to a | |||
| -- randomly-generated INTEGER, A. [Note that a different | -- randomly generated INTEGER, A (Note that a different | |||
| -- INTEGER MUST be used for each Challenge.] | -- INTEGER MUST be used for each Challenge.) | |||
| challenge OCTET STRING | challenge OCTET STRING | |||
| -- the encryption (under the public key for which the cert. | -- the encryption (under the public key for which the cert. | |||
| -- request is being made) of Rand. | -- request is being made) of Rand | |||
| } | } | |||
| -- Added in CMP Updates [RFCXXXX] | -- Rand was added in CMP Updates [RFC9480] | |||
| Rand ::= SEQUENCE { | Rand ::= SEQUENCE { | |||
| -- Rand is encrypted under the public key to form the challenge | -- Rand is encrypted under the public key to form the challenge | |||
| -- in POPODecKeyChallContent | -- in POPODecKeyChallContent | |||
| int INTEGER, | int INTEGER, | |||
| -- the randomly-generated INTEGER A (above) | -- the randomly generated INTEGER A (above) | |||
| sender GeneralName | sender GeneralName | |||
| -- the sender's name (as included in PKIHeader) | -- the sender's name (as included in PKIHeader) | |||
| } | } | |||
| POPODecKeyRespContent ::= SEQUENCE OF INTEGER | POPODecKeyRespContent ::= SEQUENCE OF INTEGER | |||
| -- One INTEGER per encryption key certification request (in the | -- One INTEGER per encryption key certification request (in the | |||
| -- same order as these requests appear in CertReqMessages). The | -- same order as these requests appear in CertReqMessages). The | |||
| -- retrieved INTEGER A (above) is returned to the sender of the | -- retrieved INTEGER A (above) is returned to the sender of the | |||
| -- corresponding Challenge. | -- corresponding Challenge. | |||
| skipping to change at page 59, line 38 ¶ | skipping to change at line 2649 ¶ | |||
| status PKIStatusInfo, | status PKIStatusInfo, | |||
| certifiedKeyPair CertifiedKeyPair OPTIONAL, | certifiedKeyPair CertifiedKeyPair OPTIONAL, | |||
| rspInfo OCTET STRING OPTIONAL | rspInfo OCTET STRING OPTIONAL | |||
| -- analogous to the id-regInfo-utf8Pairs string defined | -- analogous to the id-regInfo-utf8Pairs string defined | |||
| -- for regInfo in CertReqMsg [RFC4211] | -- for regInfo in CertReqMsg [RFC4211] | |||
| } | } | |||
| CertifiedKeyPair ::= SEQUENCE { | CertifiedKeyPair ::= SEQUENCE { | |||
| certOrEncCert CertOrEncCert, | certOrEncCert CertOrEncCert, | |||
| privateKey [0] EncryptedKey OPTIONAL, | privateKey [0] EncryptedKey OPTIONAL, | |||
| -- see [RFC4211] for comment on encoding | -- See [RFC4211] for comments on encoding. | |||
| -- Changed from Encrypted Value to EncryptedKey as a CHOICE of | -- Changed from Encrypted Value to EncryptedKey as a CHOICE of | |||
| -- EncryptedValue and EnvelopedData due to the changes made in | -- EncryptedValue and EnvelopedData due to the changes made in | |||
| -- CMP Updates [RFCXXXX] | -- CMP Updates [RFC9480]. | |||
| -- Using the choice EncryptedValue is bit-compatible to the | -- Using the choice EncryptedValue is bit-compatible to the | |||
| -- syntax without this change | -- syntax without this change. | |||
| publicationInfo [1] PKIPublicationInfo OPTIONAL } | publicationInfo [1] PKIPublicationInfo OPTIONAL } | |||
| CertOrEncCert ::= CHOICE { | CertOrEncCert ::= CHOICE { | |||
| certificate [0] CMPCertificate, | certificate [0] CMPCertificate, | |||
| encryptedCert [1] EncryptedKey | encryptedCert [1] EncryptedKey | |||
| -- Changed from Encrypted Value to EncryptedKey as a CHOICE of | -- Changed from Encrypted Value to EncryptedKey as a CHOICE of | |||
| -- EncryptedValue and EnvelopedData due to the changes made in | -- EncryptedValue and EnvelopedData due to the changes made in | |||
| -- CMP Updates [RFCXXXX] | -- CMP Updates [RFC9480]. | |||
| -- Using the choice EncryptedValue is bit-compatible to the | -- Using the choice EncryptedValue is bit-compatible to the | |||
| -- syntax without this change | -- syntax without this change. | |||
| } | } | |||
| KeyRecRepContent ::= SEQUENCE { | KeyRecRepContent ::= SEQUENCE { | |||
| status PKIStatusInfo, | status PKIStatusInfo, | |||
| newSigCert [0] CMPCertificate OPTIONAL, | newSigCert [0] CMPCertificate OPTIONAL, | |||
| caCerts [1] SEQUENCE SIZE (1..MAX) OF | caCerts [1] SEQUENCE SIZE (1..MAX) OF | |||
| CMPCertificate OPTIONAL, | CMPCertificate OPTIONAL, | |||
| keyPairHist [2] SEQUENCE SIZE (1..MAX) OF | keyPairHist [2] SEQUENCE SIZE (1..MAX) OF | |||
| CertifiedKeyPair OPTIONAL } | CertifiedKeyPair OPTIONAL } | |||
| RevReqContent ::= SEQUENCE OF RevDetails | RevReqContent ::= SEQUENCE OF RevDetails | |||
| RevDetails ::= SEQUENCE { | RevDetails ::= SEQUENCE { | |||
| certDetails CertTemplate, | certDetails CertTemplate, | |||
| -- allows requester to specify as much as they can about | -- allows the requester to specify as much as they can about | |||
| -- the cert. for which revocation is requested | -- the cert. for which revocation is requested | |||
| -- (e.g., for cases in which serialNumber is not available) | -- (e.g., for cases in which serialNumber is not available) | |||
| crlEntryDetails Extensions{{...}} OPTIONAL | crlEntryDetails Extensions{{...}} OPTIONAL | |||
| -- requested crlEntryExtensions | -- requested crlEntryExtensions | |||
| } | } | |||
| RevRepContent ::= SEQUENCE { | RevRepContent ::= SEQUENCE { | |||
| status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo, | status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo, | |||
| -- in same order as was sent in RevReqContent | -- in the same order as was sent in RevReqContent | |||
| revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId OPTIONAL, | revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId OPTIONAL, | |||
| -- IDs for which revocation was requested | -- IDs for which revocation was requested | |||
| -- (same order as status) | -- (same order as status) | |||
| crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL | crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL | |||
| -- the resulting CRLs (there may be more than one) | -- the resulting CRLs (there may be more than one) | |||
| } | } | |||
| CAKeyUpdAnnContent ::= SEQUENCE { | CAKeyUpdAnnContent ::= SEQUENCE { | |||
| oldWithNew CMPCertificate, -- old pub signed with new priv | oldWithNew CMPCertificate, -- old pub signed with new priv | |||
| newWithOld CMPCertificate, -- new pub signed with old priv | newWithOld CMPCertificate, -- new pub signed with old priv | |||
| skipping to change at page 61, line 4 ¶ | skipping to change at line 2711 ¶ | |||
| CertAnnContent ::= CMPCertificate | CertAnnContent ::= CMPCertificate | |||
| RevAnnContent ::= SEQUENCE { | RevAnnContent ::= SEQUENCE { | |||
| status PKIStatus, | status PKIStatus, | |||
| certId CertId, | certId CertId, | |||
| willBeRevokedAt GeneralizedTime, | willBeRevokedAt GeneralizedTime, | |||
| badSinceDate GeneralizedTime, | badSinceDate GeneralizedTime, | |||
| crlDetails Extensions{{...}} OPTIONAL | crlDetails Extensions{{...}} OPTIONAL | |||
| -- extra CRL details (e.g., crl number, reason, location, etc.) | -- extra CRL details (e.g., crl number, reason, location, etc.) | |||
| } | } | |||
| CRLAnnContent ::= SEQUENCE OF CertificateList | CRLAnnContent ::= SEQUENCE OF CertificateList | |||
| PKIConfirmContent ::= NULL | PKIConfirmContent ::= NULL | |||
| NestedMessageContent ::= PKIMessages | NestedMessageContent ::= PKIMessages | |||
| -- CertReqTemplateContent, AttributeTypeAndValue, | -- CertReqTemplateContent, AttributeTypeAndValue, | |||
| -- ExpandedRegControlSet, id-regCtrl-altCertTemplate, | -- ExpandedRegControlSet, id-regCtrl-altCertTemplate, | |||
| -- AltCertTemplate, regCtrl-algId, id-regCtrl-algId, AlgIdCtrl, | -- AltCertTemplate, regCtrl-algId, id-regCtrl-algId, AlgIdCtrl, | |||
| -- regCtrl-rsaKeyLen, id-regCtrl-rsaKeyLen, and RsaKeyLenCtrl | -- regCtrl-rsaKeyLen, id-regCtrl-rsaKeyLen, and RsaKeyLenCtrl | |||
| -- were added in CMP Updates [RFCXXXX] | -- were added in CMP Updates [RFC9480] | |||
| CertReqTemplateContent ::= SEQUENCE { | CertReqTemplateContent ::= SEQUENCE { | |||
| certTemplate CertTemplate, | certTemplate CertTemplate, | |||
| -- prefilled certTemplate structure elements | -- prefilled certTemplate structure elements | |||
| -- The SubjectPublicKeyInfo field in the certTemplate MUST NOT | -- The SubjectPublicKeyInfo field in the certTemplate MUST NOT | |||
| -- be used. | -- be used. | |||
| keySpec Controls OPTIONAL | keySpec Controls OPTIONAL | |||
| -- MAY be used to specify supported algorithms. | -- MAY be used to specify supported algorithms | |||
| -- Controls ::= SEQUENCE SIZE (1..MAX) OF AttributeTypeAndValue | -- Controls ::= SEQUENCE SIZE (1..MAX) OF AttributeTypeAndValue | |||
| -- as specified in CRMF (RFC4211) | -- as specified in CRMF [RFC4211] | |||
| } | } | |||
| AttributeTypeAndValue ::= SingleAttribute{{ ... }} | AttributeTypeAndValue ::= SingleAttribute{{ ... }} | |||
| ExpandedRegControlSet ATTRIBUTE ::= { RegControlSet | | ExpandedRegControlSet ATTRIBUTE ::= { RegControlSet | | |||
| regCtrl-altCertTemplate | regCtrl-algId | regCtrl-rsaKeyLen, ... } | regCtrl-altCertTemplate | regCtrl-algId | regCtrl-rsaKeyLen, ... } | |||
| regCtrl-altCertTemplate ATTRIBUTE ::= | regCtrl-altCertTemplate ATTRIBUTE ::= | |||
| { TYPE AltCertTemplate IDENTIFIED BY id-regCtrl-altCertTemplate } | { TYPE AltCertTemplate IDENTIFIED BY id-regCtrl-altCertTemplate } | |||
| id-regCtrl-altCertTemplate OBJECT IDENTIFIER ::= { id-regCtrl 7 } | id-regCtrl-altCertTemplate OBJECT IDENTIFIER ::= { id-regCtrl 7 } | |||
| AltCertTemplate ::= AttributeTypeAndValue | AltCertTemplate ::= AttributeTypeAndValue | |||
| -- specifies a template for a certificate other than an X.509v3 | -- specifies a template for a certificate other than an X.509v3 | |||
| -- public-key certificate | -- public key certificate | |||
| regCtrl-algId ATTRIBUTE ::= | regCtrl-algId ATTRIBUTE ::= | |||
| { TYPE AlgIdCtrl IDENTIFIED BY id-regCtrl-algId } | { TYPE AlgIdCtrl IDENTIFIED BY id-regCtrl-algId } | |||
| id-regCtrl-algId OBJECT IDENTIFIER ::= { id-regCtrl 11 } | id-regCtrl-algId OBJECT IDENTIFIER ::= { id-regCtrl 11 } | |||
| AlgIdCtrl ::= AlgorithmIdentifier{ALGORITHM, {...}} | AlgIdCtrl ::= AlgorithmIdentifier{ALGORITHM, {...}} | |||
| -- SHALL be used to specify supported algorithms other than RSA | -- SHALL be used to specify supported algorithms other than RSA | |||
| regCtrl-rsaKeyLen ATTRIBUTE ::= | regCtrl-rsaKeyLen ATTRIBUTE ::= | |||
| { TYPE RsaKeyLenCtrl IDENTIFIED BY id-regCtrl-rsaKeyLen } | { TYPE RsaKeyLenCtrl IDENTIFIED BY id-regCtrl-rsaKeyLen } | |||
| id-regCtrl-rsaKeyLen OBJECT IDENTIFIER ::= { id-regCtrl 12 } | id-regCtrl-rsaKeyLen OBJECT IDENTIFIER ::= { id-regCtrl 12 } | |||
| RsaKeyLenCtrl ::= INTEGER (1..MAX) | RsaKeyLenCtrl ::= INTEGER (1..MAX) | |||
| -- SHALL be used to specify supported RSA key lengths | -- SHALL be used to specify supported RSA key lengths | |||
| -- RootCaKeyUpdateContent, CRLSource, and CRLStatus were added in | -- RootCaKeyUpdateContent, CRLSource, and CRLStatus were added in | |||
| -- CMP Updates [RFCXXXX] | -- CMP Updates [RFC9480] | |||
| RootCaKeyUpdateContent ::= SEQUENCE { | RootCaKeyUpdateContent ::= SEQUENCE { | |||
| newWithNew CMPCertificate, | newWithNew CMPCertificate, | |||
| -- new root CA certificate | -- new root CA certificate | |||
| newWithOld [0] CMPCertificate OPTIONAL, | newWithOld [0] CMPCertificate OPTIONAL, | |||
| -- X.509 certificate containing the new public root CA key | -- X.509 certificate containing the new public root CA key | |||
| -- signed with the old private root CA key | -- signed with the old private root CA key | |||
| oldWithNew [1] CMPCertificate OPTIONAL | oldWithNew [1] CMPCertificate OPTIONAL | |||
| -- X.509 certificate containing the old public root CA key | -- X.509 certificate containing the old public root CA key | |||
| -- signed with the new private root CA key | -- signed with the new private root CA key | |||
| skipping to change at page 63, line 22 ¶ | skipping to change at line 2826 ¶ | |||
| -- UnsupportedOIDsValue ::= SEQUENCE SIZE (1..MAX) OF | -- UnsupportedOIDsValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- OBJECT IDENTIFIER | -- OBJECT IDENTIFIER | |||
| -- id-it-keyPairParamReq OBJECT IDENTIFIER ::= {id-it 10} | -- id-it-keyPairParamReq OBJECT IDENTIFIER ::= {id-it 10} | |||
| -- KeyPairParamReqValue ::= OBJECT IDENTIFIER | -- KeyPairParamReqValue ::= OBJECT IDENTIFIER | |||
| -- id-it-keyPairParamRep OBJECT IDENTIFIER ::= {id-it 11} | -- id-it-keyPairParamRep OBJECT IDENTIFIER ::= {id-it 11} | |||
| -- KeyPairParamRepValue ::= AlgorithmIdentifier{{...}} | -- KeyPairParamRepValue ::= AlgorithmIdentifier{{...}} | |||
| -- id-it-revPassphrase OBJECT IDENTIFIER ::= {id-it 12} | -- id-it-revPassphrase OBJECT IDENTIFIER ::= {id-it 12} | |||
| -- RevPassphraseValue ::= EncryptedKey | -- RevPassphraseValue ::= EncryptedKey | |||
| -- - Changed from Encrypted Value to EncryptedKey as a CHOICE | -- - Changed from Encrypted Value to EncryptedKey as a CHOICE | |||
| -- - of EncryptedValue and EnvelopedData due to the changes | -- - of EncryptedValue and EnvelopedData due to the changes | |||
| -- - made in CMP Updates [RFCXXXX] | -- - made in CMP Updates [RFC9480] | |||
| -- - Using the choice EncryptedValue is bit-compatible to | -- - Using the choice EncryptedValue is bit-compatible to | |||
| -- - the syntax without this change | -- - the syntax without this change | |||
| -- id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13} | -- id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13} | |||
| -- ImplicitConfirmValue ::= NULL | -- ImplicitConfirmValue ::= NULL | |||
| -- id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14} | -- id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14} | |||
| -- ConfirmWaitTimeValue ::= GeneralizedTime | -- ConfirmWaitTimeValue ::= GeneralizedTime | |||
| -- id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} | -- id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} | |||
| -- OrigPKIMessageValue ::= PKIMessages | -- OrigPKIMessageValue ::= PKIMessages | |||
| -- id-it-suppLangTags OBJECT IDENTIFIER ::= {id-it 16} | -- id-it-suppLangTags OBJECT IDENTIFIER ::= {id-it 16} | |||
| -- SuppLangTagsValue ::= SEQUENCE OF UTF8String | -- SuppLangTagsValue ::= SEQUENCE OF UTF8String | |||
| -- id-it-caCerts OBJECT IDENTIFIER ::= {id-it 17} | -- id-it-caCerts OBJECT IDENTIFIER ::= {id-it 17} | |||
| -- CaCertsValue ::= SEQUENCE SIZE (1..MAX) OF | -- CaCertsValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- CMPCertificate | -- CMPCertificate | |||
| -- - id-it-caCerts added in CMP Updates [RFCXXXX] | -- - id-it-caCerts added in CMP Updates [RFC9480] | |||
| -- id-it-rootCaKeyUpdate OBJECT IDENTIFIER ::= {id-it 18} | -- id-it-rootCaKeyUpdate OBJECT IDENTIFIER ::= {id-it 18} | |||
| -- RootCaKeyUpdateValue ::= RootCaKeyUpdateContent | -- RootCaKeyUpdateValue ::= RootCaKeyUpdateContent | |||
| -- - id-it-rootCaKeyUpdate added in CMP Updates [RFCXXXX] | -- - id-it-rootCaKeyUpdate added in CMP Updates [RFC9480] | |||
| -- id-it-certReqTemplate OBJECT IDENTIFIER ::= {id-it 19} | -- id-it-certReqTemplate OBJECT IDENTIFIER ::= {id-it 19} | |||
| -- CertReqTemplateValue ::= CertReqTemplateContent | -- CertReqTemplateValue ::= CertReqTemplateContent | |||
| -- - id-it-certReqTemplate added in CMP Updates [RFCXXXX] | -- - id-it-certReqTemplate added in CMP Updates [RFC9480] | |||
| -- id-it-rootCaCert OBJECT IDENTIFIER ::= {id-it 20} | -- id-it-rootCaCert OBJECT IDENTIFIER ::= {id-it 20} | |||
| -- RootCaCertValue ::= CMPCertificate | -- RootCaCertValue ::= CMPCertificate | |||
| -- - id-it-rootCaCert added in CMP Updates [RFCXXXX] | -- - id-it-rootCaCert added in CMP Updates [RFC9480] | |||
| -- id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21} | -- id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21} | |||
| -- CertProfileValue ::= SEQUENCE SIZE (1..MAX) OF | -- CertProfileValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- UTF8String | -- UTF8String | |||
| -- - id-it-certProfile added in CMP Updates [RFCXXXX] | -- - id-it-certProfile added in CMP Updates [RFC9480] | |||
| -- id-it-crlStatusList OBJECT IDENTIFIER ::= {id-it 22} | -- id-it-crlStatusList OBJECT IDENTIFIER ::= {id-it 22} | |||
| -- CRLStatusListValue ::= SEQUENCE SIZE (1..MAX) OF | -- CRLStatusListValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- CRLStatus | -- CRLStatus | |||
| -- - id-it-crlStatusList added in CMP Updates [RFCXXXX] | -- - id-it-crlStatusList added in CMP Updates [RFC9480] | |||
| -- id-it-crls OBJECT IDENTIFIER ::= {id-it 23} | -- id-it-crls OBJECT IDENTIFIER ::= {id-it 23} | |||
| -- CRLsValue ::= SEQUENCE SIZE (1..MAX) OF | -- CRLsValue ::= SEQUENCE SIZE (1..MAX) OF | |||
| -- CertificateList | -- CertificateList | |||
| -- - id-it-crls added in CMP Updates [RFCXXXX] | -- - id-it-crls added in CMP Updates [RFC9480] | |||
| -- | -- | |||
| -- where | -- where | |||
| -- | -- | |||
| -- id-pkix OBJECT IDENTIFIER ::= { | -- id-pkix OBJECT IDENTIFIER ::= { | |||
| -- iso(1) identified-organization(3) | -- iso(1) identified-organization(3) | |||
| -- dod(6) internet(1) security(5) mechanisms(5) pkix(7)} | -- dod(6) internet(1) security(5) mechanisms(5) pkix(7)} | |||
| -- and | -- and | |||
| -- id-it OBJECT IDENTIFIER ::= {id-pkix 4} | -- id-it OBJECT IDENTIFIER ::= {id-pkix 4} | |||
| -- | -- | |||
| -- | -- | |||
| -- This construct MAY also be used to define new PKIX Certificate | -- This construct MAY also be used to define new PKIX Certificate | |||
| -- Management Protocol request and response messages, or general- | -- Management Protocol request and response messages or general- | |||
| -- purpose (e.g., announcement) messages for future needs or for | -- purpose (e.g., announcement) messages for future needs or for | |||
| -- specific environments. | -- specific environments. | |||
| GenMsgContent ::= SEQUENCE OF InfoTypeAndValue | GenMsgContent ::= SEQUENCE OF InfoTypeAndValue | |||
| -- May be sent by EE, RA, or CA (depending on message content). | -- May be sent by EE, RA, or CA (depending on message content). | |||
| -- The OPTIONAL infoValue parameter of InfoTypeAndValue will | -- The OPTIONAL infoValue parameter of InfoTypeAndValue will | |||
| -- typically be omitted for some of the examples given above. | -- typically be omitted for some of the examples given above. | |||
| -- The receiver is free to ignore any contained OBJECT IDs that it | -- The receiver is free to ignore any contained OIDs that it | |||
| -- does not recognize. If sent from EE to CA, the empty set | -- does not recognize. If sent from EE to CA, the empty set | |||
| -- indicates that the CA may send | -- indicates that the CA may send | |||
| -- any/all information that it wishes. | -- any/all information that it wishes. | |||
| GenRepContent ::= SEQUENCE OF InfoTypeAndValue | GenRepContent ::= SEQUENCE OF InfoTypeAndValue | |||
| -- Receiver MAY ignore any contained OIDs that it does not | -- The receiver MAY ignore any contained OIDs that it does not | |||
| -- recognize. | -- recognize. | |||
| ErrorMsgContent ::= SEQUENCE { | ErrorMsgContent ::= SEQUENCE { | |||
| pKIStatusInfo PKIStatusInfo, | pKIStatusInfo PKIStatusInfo, | |||
| errorCode INTEGER OPTIONAL, | errorCode INTEGER OPTIONAL, | |||
| -- implementation-specific error codes | -- implementation-specific error codes | |||
| errorDetails PKIFreeText OPTIONAL | errorDetails PKIFreeText OPTIONAL | |||
| -- implementation-specific error details | -- implementation-specific error details | |||
| } | } | |||
| skipping to change at page 65, line 23 ¶ | skipping to change at line 2923 ¶ | |||
| PollReqContent ::= SEQUENCE OF SEQUENCE { | PollReqContent ::= SEQUENCE OF SEQUENCE { | |||
| certReqId INTEGER } | certReqId INTEGER } | |||
| PollRepContent ::= SEQUENCE OF SEQUENCE { | PollRepContent ::= SEQUENCE OF SEQUENCE { | |||
| certReqId INTEGER, | certReqId INTEGER, | |||
| checkAfter INTEGER, -- time in seconds | checkAfter INTEGER, -- time in seconds | |||
| reason PKIFreeText OPTIONAL } | reason PKIFreeText OPTIONAL } | |||
| -- | -- | |||
| -- Extended Key Usage extension for PKI entities used in CMP | -- Extended key usage extension for PKI entities used in CMP | |||
| -- operations, added due to the changes made in | -- operations, added due to the changes made in | |||
| -- CMP Updates [RFCXXXX] | -- CMP Updates [RFC9480] | |||
| -- The EKUs for the CA and RA are reused from CMC as defined in | -- The EKUs for the CA and RA are reused from CMC, as defined in | |||
| -- [RFC6402] | -- [RFC6402] | |||
| -- | -- | |||
| -- id-kp-cmcCA OBJECT IDENTIFIER ::= { id-kp 27 } | -- id-kp-cmcCA OBJECT IDENTIFIER ::= { id-kp 27 } | |||
| -- id-kp-cmcRA OBJECT IDENTIFIER ::= { id-kp 28 } | -- id-kp-cmcRA OBJECT IDENTIFIER ::= { id-kp 28 } | |||
| id-kp-cmKGA OBJECT IDENTIFIER ::= { id-kp 32 } | id-kp-cmKGA OBJECT IDENTIFIER ::= { id-kp 32 } | |||
| END | END | |||
| Appendix B. History of Changes | Acknowledgements | |||
| [RFC Editor: This appendix must be deleted in the final version of | ||||
| the document.] | ||||
| From version 22 -> 23: | ||||
| * Addressed comments from IESG discussion (see thread "Francesca | ||||
| Palombini's No Objection on draft-ietf-lamps-cmp-updates-22: (with | ||||
| COMMENT)") | ||||
| * Addressed comment from Carl (see thread "Paul Wouters' Discuss on | ||||
| draft-ietf-lamps-cmp-updates-21: (with DISCUSS and COMMENT)") | ||||
| From version 21 -> 22: | ||||
| * Addressed comments from IESG discussion (see thread " Paul | ||||
| Wouters' Discuss on draft-ietf-lamps-cmp-updates-21: (with DISCUSS | ||||
| and COMMENT)") | ||||
| From version 20 -> 21: | ||||
| * Extended Section 1 based on feedback from the IESG telechat | ||||
| * Removed a redundant paragraph from the Abstract | ||||
| From version 19 -> 20: | ||||
| * Addressed comments reported after GEN AD review | ||||
| From version 18 -> 19: | ||||
| * Deleted the Comments on IANA ToDos and changed the decimals TBD1 | ||||
| -> 22 and TBD2 -> 23 | ||||
| * Updated Section 3.4 regarding ToDos updating the well-known URI | ||||
| registration | ||||
| From version 17 -> 18: | ||||
| * Addressed comments from AD Evaluation (see thread "AD Review of | ||||
| draft-ietf-lamps-cmp-updates-17") | ||||
| * Added Section 2.8 to clarify on the usage of GeneralizedTime (see | ||||
| thread "draft-ietf-lamps-cmp-updates: fractional seconds") | ||||
| * Updated Section 3.4 introducing the path segment 'p' to indicate | ||||
| the following arbitrary label according to the discussion during | ||||
| IETF 113 (see thread "/.well-known/brski reference to brski- | ||||
| registry") | ||||
| * Capitalized all headlines | ||||
| From version 16 -> 17: | ||||
| * Removed the pre-RFC5378 work disclaimer after the RFC 4210 authors | ||||
| granted BCP78 rights to the IETF Trust | ||||
| * Removed note on usage of language tags in UTF8String due to | ||||
| reference to references to outdated/historic RFCs | ||||
| * Resolved some nits reported by I-D nit checker tool | ||||
| From version 15 -> 16: | ||||
| * Updated IPR disclaimer | ||||
| From version 14 -> 15: | ||||
| * Updated Section 2.16 clarifying the usage of CRLSource (see thread | ||||
| "CRL update retrieval - WG Last Call for draft-ietf-lamps-cmp- | ||||
| updates-14 and draft-ietf-lamps-lightweight-cmp-profile-08") | ||||
| * Updated Section 2.22 adding further references regarding random | ||||
| number generation (see thread "CMP draft WGLC: measuring entropy, | ||||
| CA certificates") | ||||
| * Fixed some nits | ||||
| From version 13 -> 14: | ||||
| * Extended id-it-caCerts support message to allow transporting to- | ||||
| be-trusted root CA certificates; added respective security | ||||
| consideration (see thread "Generalizing the CMP "Get CA | ||||
| certificates" use case") | ||||
| * Rolled back changes made in previous version regarding root CA | ||||
| update to avoid registration of new OIDs. Yet we sticked to using | ||||
| id-it-rootCaCert in the genm body instead its headers' generalInfo | ||||
| field and removed the ToDos and TBDs on re-arranging id-it OIDs | ||||
| (see thread "Allocation of OIDs for CRL update retrieval (draft- | ||||
| ietf-lamps-cmp-updates-13)") | ||||
| From version 12 -> 13: | ||||
| * Added John Gray to the list of authors due to fruitful discussion | ||||
| and important proposals | ||||
| * Fixed errata no. 2615, 2616, 3949, 4078, and 5201 on RFC 4210 | ||||
| * Added reference on RFC 8933 regarding CMS signedAttrs to | ||||
| Section 2.7 | ||||
| * Updated Section 2.9 and the ASN.1 modules moving the position of | ||||
| the hashAlg field (see thread "[CMP Updates] position of hashAlg | ||||
| in certStatus") | ||||
| * Changed "rootCaCert" from generalInfo to genm body and generalized | ||||
| to "oldTrustAnchor", renaming "rootCaKeyUpdate" to | ||||
| "trustAnchorUpdate" in Sections 2.14, A.1, and A.2, removing | ||||
| former Section 2.4 | ||||
| * Added genm use case "CRL update retrieval" in Section 2.16, A.1, | ||||
| and A.2. (see thread "[CMP Updates] Requesting a current CRL") | ||||
| * Updated Section 2.18 and 2.17 to support polling for all kinds of | ||||
| CMP request messages initiated by an error message with status | ||||
| "waiting" as initially discussed at IETF 111 | ||||
| * Updated Sections 2.19 and 2.20 regarding version handling | ||||
| * Added further OIDs and a TBD regarding reordering of the OIDs | ||||
| * Added Sections 2.21 to 2.23 with new security considerations and | ||||
| updated Section 5 accordingly | ||||
| * Added a ToDo regarding OID registration, renaming, and re-ordering | ||||
| * Added Section 3.1 updating the introduction of RFC 6712 | ||||
| * Fixed some nits in the ASN.1 modules (see thread "draft-ietf- | ||||
| lamps-cmp-updates-12: Comments on A.1. 1988 ASN.1 Module" and | ||||
| "draft-ietf-lamps-cmp-updates-12: Comments on A.2. 2002 ASN.1 | ||||
| Module") | ||||
| * Replaced the term "transport" by "transfer" where appropriate to | ||||
| prevent confusion | ||||
| * Minor editorial changes | ||||
| From version 11 -> 12: | ||||
| * Extended Section 2.5 and the ASN.1 modules in Appendix A to allow | ||||
| a sequence of certificate profiles in CertProfileValue (see thread | ||||
| "id-it-CertProfile in draft-ietf-lamps-cmp-updates") | ||||
| From version 10 -> 11: | ||||
| * Add Section 2.10 to add an additional hashAlg field to the | ||||
| CertStatus type to support certificates signed with a signature | ||||
| algorithm not explicitly indicating a hash algorithm in the | ||||
| AlgorithmIdentifier (see thread "Hash algorithm to us for | ||||
| calculating certHash") | ||||
| * Added newly registered OIDs and temporarily registered URI suffix | ||||
| * Exchanged the import of CertificationRequest from RFC 2986 to the | ||||
| definition from RFC 6402 Appendix A.1 (see thread "CMP Update of | ||||
| CertificationRequest") | ||||
| * Corrected the definition of LocalKeyIdValue in Appendix A.1 | ||||
| * Updated new RFC numbers for draft-lamps-crmf-update-algs | ||||
| From version 9 -> 10: | ||||
| * Added 1988 ASN.1 syntax for localKeyId attribute to Appendix A.1 | ||||
| From version 08 -> 09: | ||||
| * Deleted specific definition of CMP CA and CMP RA in Section 2.2 | ||||
| and only reference RFC 6402 for definition of id-kp-cmcCA and id- | ||||
| kp-cmcRA to resolve the ToDo below based on feedback of Tomas | ||||
| Gustavsson | ||||
| * Added Section 2.4. and 2.5 to define id-it-rootCaCert and id-it- | ||||
| certProfile to be used in Section 2.14 and 2.15 | ||||
| * Added reference to CMP Algorithms in Section 2.8 | ||||
| * Extended Section 2.14 to explicitly indicate the root CA an update | ||||
| is requested for by using id-it-rootCaCert and changing the ASN.1 | ||||
| syntax to require providing the newWithOld certificate in the | ||||
| response message | ||||
| * Extended Section 2.15 to explicitly indicate the certificate | ||||
| request template by using id-it-certProfile and on further details | ||||
| of the newly introduced controls | ||||
| * Deleted the table on id-kp-cmcCA and id-kp-cmcRA and adding id-it- | ||||
| rootCaCert and id-it-certProfile in Section 2.19 | ||||
| * Adding the definition of id-it-rootCaCert and id-it-certProfile in | ||||
| both ASN.1 modules in Appendix A | ||||
| * Minor editorial changes reflecting the above changes | ||||
| From version 07 -> 08: | ||||
| * Added a ToDo to Section 2.2 to reflect a current discussion on the | ||||
| need of an additional CMP-CA role and EKU and differentiation from | ||||
| CMP-RA | ||||
| * Added ToDos to Section 2.12 and 2.13 | ||||
| From version 06 -> 07: | ||||
| * Added David von Oheimb as co-author | ||||
| * Changed to XML V3 | ||||
| * Added Section 2.3 to enable a CMP protocol version number 3 in the | ||||
| PKIHeader for cases where EnvelopedData is to be used (see thread | ||||
| "Mail regarding draft-ietf-lamps-cmp-updates"). | ||||
| * Added Section 2.4 to refer to draft-ietf-lamps-crmf-update-algs | ||||
| for the update of id-PasswordBasedMac for PKI message protection | ||||
| using passwords or shared secrets. | ||||
| * Updated Section 2.6 to introduce the protocol version number 3 to | ||||
| properly indicate support of EnvelopedData instead of | ||||
| EncryptedValue in case a transaction requires use of EnvelopedData | ||||
| (see thread "Mail regarding draft-ietf-lamps-cmp-updates"). | ||||
| * Update Section 2.14 to make the minimal changes to the respective | ||||
| section in CMP more explicit. | ||||
| * Added Sections 2.15 and 2.16 to address the new cmp2021 protocol | ||||
| version in Section 7 Version Negotiation. | ||||
| * Updated Section 2.17 to add new OIDs for id-regCtrl-algId and id- | ||||
| regCtrl-rsaKeyLen for registration at IANA. | ||||
| * Added Section 2.20 to update the general rules of interpretation | ||||
| in Appendix D.1 regarding the new cmp2021 version. | ||||
| * Added Section 2.21 to update the Algorithm Use Profile in | ||||
| Appendix D.2 with the reference to the new CMP Algorithms document | ||||
| as decided at IETF 108. | ||||
| * Updates Section 3.1 to delete the description of a discovery | ||||
| mechanism as decided at IETF 108. | ||||
| * Various changes and corrections in wording. | ||||
| From version 05 -> 06: | ||||
| * Added the update of Appendix D.2 with the reference to the new CMP | ||||
| Algorithms document as decided in IETF 108 | ||||
| * Updated the IANA considerations to register new OIDs for id- | ||||
| regCtrl-algId and d-regCtrl-rsaKeyLen. | ||||
| * Minor changes and corrections | ||||
| From version 04 -> 05: | ||||
| * Added Section 2.11 and Section 2.12 to clarify the usage of these | ||||
| general messages types with EC curves (see thread | ||||
| "AlgorithmIdentifier parameters NULL value - Re: InfoTypeAndValue | ||||
| in CMP headers") | ||||
| * Split former section 2.7 on adding 'CA Certificates', 'Root CA | ||||
| Certificates Update', and 'Certificate Request Template' in three | ||||
| separate sections for easier readability | ||||
| * Changed in Section 2.15 the ASN.1 syntax of CertReqTemplateValue | ||||
| from using rsaKeyLen to usage of controls as specified in CRMF | ||||
| Section 6 [RFC4211] (see thread "dtaft-ietf-lamps-cmp-updates and | ||||
| rsaKeyLen") | ||||
| * Updated the IANA considerations in Section 4 to introduce new OID | ||||
| for id-regCtrl-algId and id-regCtrl-rsaKeyLen (see thread "dtaft- | ||||
| ietf-lamps-cmp-updates and rsaKeyLen") | ||||
| * Updated the IANA Considerations in and the Appendixes to introduce | ||||
| new OID for the updates ASN.1 modules (see thread "I-D Action: | ||||
| draft-ietf-lamps-cmp-updates-04.txt") | ||||
| * Removed EncryptedValue from and added Controls to the list of | ||||
| types imported from CRMF [RFC4211] in ASN.1 modules (see thread | ||||
| "draft-ietf-lamps-cmp-updates and the ASN.1 modules") | ||||
| * Moved declaration of Rand out of the comment in ASN.1 modules (see | ||||
| thread "draft-ietf-lamps-cmp-updates and the ASN.1 modules") | ||||
| * Minor changes and corrections | ||||
| From version 03 -> 04: | ||||
| * Added Section 2.7 to introduce three new id-it IDs for uses in | ||||
| general messages as discussed (see thread "draft-ietf-lamps-cmp- | ||||
| updates add section to introduce id-it-caCerts, id-it- | ||||
| rootCaKeyUpdate, and id-it-certReqTemplate") | ||||
| * Added the new id-it IDs and the /.well-known/cmp to the IANA | ||||
| Considerations of [RFC4210] in Section 2.9 | ||||
| * Updated the IANA Considerations of [RFC4210] in Section 2.26 | ||||
| * Some changes in wording on Section 3 due to review comments from | ||||
| Martin Peylo | ||||
| From version 02 -> 03: | ||||
| * Added a ToDo on aligning with the CMP Algorithms draft that will | ||||
| be set up as decided in IETF 108 | ||||
| * Updated section on Encrypted Values in Section 2.7 to add the | ||||
| AsymmetricKey Package structure to transport a newly generated | ||||
| private key as decided in IETF 108 | ||||
| * Updated the IANA Considerations of [RFC4210] in Section 2.26 | ||||
| * Added the pre-registered OID in Section 2.26 and the ASN.1 module | ||||
| * Added Section 3 to document the changes to RFC 6712 [RFC6712] | ||||
| regarding URI discovery and using the path-prefix of '/.well- | ||||
| known/' as discussed in IETF 108 | ||||
| * Updated the IANA Considerations section | ||||
| * Added a complete updated ASN.1 module in 1988 syntax to update | ||||
| Appendix F of [RFC4210] and a complete updated ASN.1 module in | ||||
| 2002 syntax to update Section 9 of [RFC5912] | ||||
| * Minor changes in wording | ||||
| From version 01 -> 02: | ||||
| * Updated section on EKU OIDs in Section 2.2 as decided in IETF 107 | ||||
| * Changed from symmetric key-encryption to password-based key | ||||
| management technique in Section 2.7 as discussed with Russ and Jim | ||||
| on the mailing list | ||||
| * Defined the attribute containing the key identifier for the | ||||
| revocation passphrase in Section 2.26 | ||||
| * Moved the change history to the Appendix | ||||
| From version 00 -> 01: | ||||
| * Minor changes in wording | ||||
| From draft-brockhaus-lamps-cmp-updates-03 -> draft-ietf-lamps-cmp- | ||||
| updates-00: | ||||
| * Changes required to reflect WG adoption | ||||
| From version 02 -> 03: | ||||
| * Added some clarification in Section 2.1 | ||||
| From version 01 -> 02: | ||||
| * Added clarification to section on multiple protection | ||||
| * Added clarification on new EKUs after some exchange with Tomas | ||||
| Gustavsson | ||||
| * Reused OIDs from RFC 6402 [RFC6402] as suggested by Sean Turner at | ||||
| IETF 106 | ||||
| * Added clarification on the field containing the key identifier for | ||||
| a revocation passphrase | ||||
| * Minor changes in wording | ||||
| From version 00 -> 01: | Special thanks goes to Jim Schaad for his guidance and the | |||
| inspiration to structure and write this document like [RFC6402], | ||||
| which updates CMC. Special thanks also goes to Russ Housley, Lijun | ||||
| Liao, Martin Peylo, and Tomas Gustavsson for reviewing and providing | ||||
| valuable suggestions on improving this document. | ||||
| * Added a section describing the new extended key usages | We also thank all reviewers of this document for their valuable | |||
| * Completed the section on changes to the specification of encrypted | feedback. | |||
| values | ||||
| * Added a section on clarification to Appendix D.4 | ||||
| * Minor generalization in RFC 4210 [RFC4210] Sections 5.1.3.4 and | ||||
| 5.3.22 | ||||
| * Minor changes in wording | ||||
| Authors' Addresses | Authors' Addresses | |||
| Hendrik Brockhaus (editor) | Hendrik Brockhaus | |||
| Siemens | Siemens | |||
| Werner-von-Siemens-Strasse 1 | Werner-von-Siemens-Strasse 1 | |||
| 80333 Munich | 80333 Munich | |||
| Germany | Germany | |||
| Email: hendrik.brockhaus@siemens.com | Email: hendrik.brockhaus@siemens.com | |||
| URI: https://www.siemens.com | URI: https://www.siemens.com | |||
| David von Oheimb | David von Oheimb | |||
| Siemens | Siemens | |||
| Werner-von-Siemens-Strasse 1 | Werner-von-Siemens-Strasse 1 | |||
| End of changes. 341 change blocks. | ||||
| 1022 lines changed or deleted | 710 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||