draft-ietf-lamps-cmp-updates-02.txt | draft-ietf-lamps-cmp-updates-03.txt | |||
---|---|---|---|---|
LAMPS Working Group H. Brockhaus | LAMPS Working Group H. Brockhaus | |||
Internet-Draft Siemens | Internet-Draft Siemens | |||
Updates: 4210 (if approved) July 6, 2020 | Updates: 4210, 6712 (if approved) August 7, 2020 | |||
Intended status: Standards Track | Intended status: Standards Track | |||
Expires: January 7, 2021 | Expires: February 8, 2021 | |||
CMP Updates | CMP Updates | |||
draft-ietf-lamps-cmp-updates-02 | draft-ietf-lamps-cmp-updates-03 | |||
Abstract | Abstract | |||
This document contains a set of updates to the base syntax of | This document contains a set of updates to the base syntax and | |||
Certificate Management Protocol (CMP) version 2. This document | transport of Certificate Management Protocol (CMP) version 2. This | |||
updates RFC 4210. | document updates RFC 4210 and RFC 6712. | |||
Specifically, the CMP services updated in this document comprise the | Specifically, the CMP services updated in this document comprise the | |||
enabling of using EnvelopedData instead of EncryptedValue and the | enabling of using EnvelopedData instead of EncryptedValue, the | |||
definition of extended key usages to identify certificates of CMP | definition of extended key usages to identify certificates of CMP | |||
endpoints on certification and registration authorities. | endpoints on certification and registration authorities, and adds an | |||
HTTP URI discovery mechanism and extend the URI structure. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on January 7, 2021. | This Internet-Draft will expire on February 8, 2021. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 18 ¶ | skipping to change at page 2, line 19 ¶ | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Convention and Terminology . . . . . . . . . . . . . . . 3 | 1.1. Convention and Terminology . . . . . . . . . . . . . . . 3 | |||
2. Updates to RFC 4210 - Certificate Management Protocol (CMP) . 3 | 2. Updates to RFC 4210 - Certificate Management Protocol (CMP) . 3 | |||
2.1. New Section 1.1. - Changes since RFC 4210 . . . . . . . . 3 | 2.1. New Section 1.1. - Changes since RFC 4210 . . . . . . . . 3 | |||
2.2. New Section 4.5 - Extended Key Usage . . . . . . . . . . 4 | 2.2. New Section 4.5 - Extended Key Usage . . . . . . . . . . 4 | |||
2.3. Replace Section 5.1.3.4 - Multiple Protection . . . . . . 6 | 2.3. Replace Section 5.1.3.4 - Multiple Protection . . . . . . 6 | |||
2.4. Replace Section 5.2.2. - Encrypted Values . . . . . . . . 7 | 2.4. Replace Section 5.2.2. - Encrypted Values . . . . . . . . 7 | |||
2.5. Update Section 5.3.4. - Certification Response . . . . . 8 | 2.5. Update Section 5.3.4. - Certification Response . . . . . 9 | |||
2.6. Replace Section 5.3.19.9. - Revocation Passphrase . . . . 9 | 2.6. Replace Section 5.3.19.9. - Revocation Passphrase . . . . 9 | |||
2.7. Update Section 5.3.22 - Polling Request and Response . . 9 | 2.7. Update Section 5.3.22 - Polling Request and Response . . 10 | |||
2.8. Update Appendix B - The Use of Revocation Passphrase . . 10 | 2.8. IANA Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
2.9. Update Appendix C - Request Message Behavioral | 2.9. Update Appendix B - The Use of Revocation Passphrase . . 11 | |||
Clarifications . . . . . . . . . . . . . . . . . . . . . 11 | 2.10. Update Appendix C - Request Message Behavioral | |||
2.10. Update Appendix D.4. - Initial Registration/Certification | Clarifications . . . . . . . . . . . . . . . . . . . . . 12 | |||
2.11. Update Appendix D.4. - Initial Registration/Certification | ||||
(Basic Authenticated Scheme) . . . . . . . . . . . . . . 12 | (Basic Authenticated Scheme) . . . . . . . . . . . . . . 12 | |||
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 3. Updates to RFC 6712 - HTTP Transfer for the Certificate | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | Management Protocol (CMP) . . . . . . . . . . . . . . . . . . 13 | |||
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | 3.1. New Section 1.1. - Changes since RFC 6712 . . . . . . . . 13 | |||
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 3.2. New Section 3.6. - HTTP Request-URI . . . . . . . . . . . 13 | |||
6.1. Normative References . . . . . . . . . . . . . . . . . . 12 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
6.2. Informative References . . . . . . . . . . . . . . . . . 13 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
Appendix A. ASN.1 Modules . . . . . . . . . . . . . . . . . . . 14 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 15 | |||
Appendix B. History of changes . . . . . . . . . . . . . . . . . 15 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 16 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 15 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 16 | ||||
Appendix A. ASN.1 Modules . . . . . . . . . . . . . . . . . . . 17 | ||||
A.1. 1988 ASN.1 Module . . . . . . . . . . . . . . . . . . . . 17 | ||||
A.2. 2002 ASN.1 Module . . . . . . . . . . . . . . . . . . . . 28 | ||||
Appendix B. History of changes . . . . . . . . . . . . . . . . . 39 | ||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 41 | ||||
1. Introduction | 1. Introduction | |||
While using CMP [RFC4210] in industrial and IoT environments and | While using CMP [RFC4210] in industrial and IoT environments and | |||
developing the Lightweight CMP Profile | developing the Lightweight CMP Profile | |||
[I-D.ietf-lamps-lightweight-cmp-profile] some limitations were | [I-D.ietf-lamps-lightweight-cmp-profile] some limitations were | |||
identified in the original CMP specification. This document updates | identified in the original CMP specification. This document updates | |||
RFC 4210 [RFC4210] to overcome these limitations. | RFC 4210 [RFC4210] and RFC 6712 [RFC6712] to overcome these | |||
limitations. | ||||
In general, this document aims to improve the crypto agility of CMP | In general, this document aims to improve the crypto agility of CMP | |||
to be flexible to react on future advances in cryptography. | to be flexible to react on 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. | |||
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", | |||
skipping to change at page 3, line 45 ¶ | skipping to change at page 3, line 51 ¶ | |||
The following subsection describes feature updates to RFC 4210 | The following subsection describes feature updates to RFC 4210 | |||
[RFC4210]. They are always related to the base specification. Hence | [RFC4210]. They are always related to the base specification. Hence | |||
references to the original sections in RFC 4210 [RFC4210] are used | references to the original sections in RFC 4210 [RFC4210] are used | |||
whenever possible. | whenever possible. | |||
Insert this section at the end of the current Section 1. | Insert this section at the end of the current Section 1. | |||
1.1 Changes since RFC 4210 | 1.1 Changes since RFC 4210 | |||
The following updates are made in draft-ietf-lamps-cmp-updates: | The following updates are made in [thisRFC]: | |||
o Add new extended key usages for different CMP server types, e.g. | o Add new extended key usages for different 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 to act as | |||
the indicated PKI management entity. | the indicated PKI management entity. | |||
o Extend the description of multiple protection to cover additional | o Extend the description of multiple protection to cover additional | |||
use cases, e.g., batch processing of messages. | use cases, e.g., batch processing of messages. | |||
o Offering EnvelopedData as the prefered choice next to | o Offering EnvelopedData as the preferred choice next to | |||
EncryptedValue to extend crypto agility in CMP. Note that | EncryptedValue to extend crypto agility in CMP. Note that | |||
according to RFC 4211 [RFC4211] section 2.1.9 the use of the | according to RFC 4211 [RFC4211] section 2.1.9 the use of 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. RFC 4211 [RFC4211] offers the | |||
EncryptedKey structure, a choice of EncryptedValue and | EncryptedKey structure, a choice of EncryptedValue and | |||
EnvelopedData for migration to EnvelopedData. For reasons of | EnvelopedData for migration to EnvelopedData. For reasons of | |||
completeness and consistency the exchange of EncryptedValue is | completeness and consistency the exchange of EncryptedValue is | |||
performed for all usages in RFC 4210 [RFC4210]. This includes the | performed for all usages in RFC 4210 [RFC4210]. This includes the | |||
protection of centrally generated private keys, encryption of | protection of centrally generated private keys, encryption of | |||
certificates, and revocation passphrases. | certificates, and revocation passphrases. | |||
o Extend the usage of polling also to p10cr messages. | o Extend the usage of polling also to p10cr messages. | |||
< TBD: The specification of algorithm profiles seed to be moved to a | ||||
separate document. > | ||||
2.2. New Section 4.5 - Extended Key Usage | 2.2. New Section 4.5 - Extended Key Usage | |||
The following subsection describes new extended key usages for | The following subsection describes new extended key usages for | |||
different CMP server typesspecitied in RFC 4210 [RFC4210]. | different CMP server types specified in RFC 4210 [RFC4210]. | |||
Insert this section at the end of the current Section 4. | Insert this section at the end of the current Section 4. | |||
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 public key may be used. It therefore restricts | which the certified public key may be used. It therefore restricts | |||
the use of a certificate to specific applications. | the use of a certificate to specific applications. | |||
A CA may want to delegate parts of their duties to other PKI | A CA may want to delegate parts of their duties to other PKI | |||
skipping to change at page 4, line 50 ¶ | skipping to change at page 5, line 10 ¶ | |||
To offer automatic validation means for the delegation of a role by a | To offer automatic validation means for the delegation of a role by a | |||
CA, the certificates used by PKI management entities for CMP message | CA, the certificates used by PKI management entities for CMP message | |||
protection or signed data for central key generation MUST be issued | protection or signed data for central key generation MUST be issued | |||
by the delegating CA and MUST contain the respective EKUs. This | by the delegating CA and MUST contain the respective EKUs. This | |||
proves the authorization of this entity by the delegating CA to act | proves the authorization of this entity by the delegating CA to act | |||
as the PKI management entity as described below. | as the PKI management entity as described below. | |||
The ASN.1 to define these EKUs is: | The ASN.1 to define these EKUs is: | |||
id-kp OBJECT IDENTIFIER ::= | ||||
{ iso(1) identified-organization(3) dod(6) internet(1) | ||||
security(5) mechanisms(5) pkix(7) kp(3) } | ||||
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 ... } | id-kp-cmKGA OBJECT IDENTIFIER ::= { id-kp 32 } | |||
< TBD: id-kp-cmKGA to be defined. > | ||||
Note: RFC 6402 section 2.10 [RFC6402] specifies OIDs for a CMC CA and | Note: RFC 6402 section 2.10 [RFC6402] specifies OIDs for a CMC CA and | |||
a CMC RA. As the functionality of a CA and RA is not specific to | a CMC RA. As the functionality of a CA and RA is not specific to | |||
whether use CMC or CMP as certificate management protocol, the same | whether use CMC or CMP as certificate management protocol, the same | |||
OIDs SHALL be used for a CMP CA and a CMP RA. | OIDs SHALL be used for a CMP CA and a CMP RA. | |||
< TBD: The Description of the OIDs needs to be extended to avoid | < TBD: The Description of the OIDs for id-kp-cmcCA and id-kp-cmcRA | |||
confusion as they currently only refer to CMC endpoints. > | needs to be extended to avoid confusion as they currently only refer | |||
to CMC. > | ||||
The description of the PKI management entity for each of the EKUs is | The description of the PKI management entity for each of the EKUs is | |||
as follows: | as follows: | |||
CMP CA: CMP Certification Authorities are CMP endpoints on CA | CMP CA: CMP Certification Authorities are CMP endpoints on CA | |||
equipment as described in section 3.1.1.2. The key used in | equipment as described in section 3.1.1.2. The key used in | |||
the context of CMP management operations, especially CMP | the context of CMP management operations, especially CMP | |||
message protection, need not be the same key that signs the | message protection, need not be the same key that signs the | |||
certificates. It is necessary, however, to ensure that the | certificates. It is necessary, however, to ensure that the | |||
entity acting as CMP CA is authorized to do so. Therefore, | entity acting as CMP CA is authorized to do so. Therefore, | |||
skipping to change at page 5, line 49 ¶ | skipping to change at page 6, line 15 ¶ | |||
CMP RA: CMP Registration Authorities are CMP endpoints on RA | CMP RA: CMP Registration Authorities are CMP endpoints on RA | |||
equipment as described in Section 3.1.1.3. A CMP RA is | equipment as described in Section 3.1.1.3. A CMP RA is | |||
identified by the id-kp-cmcRA extended key usage. This | identified by the id-kp-cmcRA extended key usage. This | |||
extended key usage is placed into RA certificates. The CA | extended key usage is placed into RA certificates. The CA | |||
that delegated this role is identified by the CA that issued | that delegated this role is identified by the CA that issued | |||
the CMP RA certificate. | the CMP RA certificate. | |||
CMP KGA: CMP Key Generation Authorities are identified by the id-kp- | CMP KGA: CMP Key Generation Authorities are identified by the id-kp- | |||
cmKGA extended key usage. Though the CMP KGA knows the | cmKGA extended key usage. Though 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 sensible service and needs specific authorization. | is a very sensitive service and needs specific | |||
This authorization is either with the CA certificate itself, | authorization. This authorization is either with the CA | |||
or indicated by placing the id-kp-cmKGA extended key usage | certificate itself, or indicated by placing the id-kp-cmKGA | |||
into the CMP RA or CMP CA certificate used to authenticate | extended key usage into the CMP RA or CMP CA certificate | |||
the origin of the private key, and to express the | used to authenticate the origin of the private key, and to | |||
authorization to offer this service. | express the authorization to offer this service. | |||
Note: In device PKIs, especially those issuing IDevID certificates, | Note: In device PKIs, especially those issuing IDevID certificates, | |||
CA may have very long validity (including the GeneralizedTime value | CA may have very long validity (including the GeneralizedTime value | |||
99991231235959Z to indicate a not well-defined expiration date as | 99991231235959Z to indicate a not well-defined expiration date as | |||
specified in IEEE 802.1AR Section 8.5 [IEEE802.1AR] and RFC 5280 | specified in IEEE 802.1AR Section 8.5 [IEEE802.1AR] and RFC 5280 | |||
Section 4.1.2.5 [RFC5280]). Such validity periods SHOULD NOT be used | Section 4.1.2.5 [RFC5280]). Such validity periods SHOULD NOT be used | |||
for protection of CMP messages. Certificates for delegated CMP | for protection of CMP messages. Certificates for delegated CMP | |||
message protection (CMP CA, CMP RA, CMP KGA) MUST NOT use indefinite | message protection (CMP CA, CMP RA, CMP KGA) MUST NOT use indefinite | |||
expiration date. | expiration date. | |||
skipping to change at page 7, line 40 ¶ | skipping to change at page 8, line 5 ¶ | |||
envelopedData [0] EnvelopedData } | envelopedData [0] EnvelopedData } | |||
See CRMF [RFC4211] for EncryptedKey and EncryptedValue syntax and for | See CRMF [RFC4211] for EncryptedKey and EncryptedValue syntax and for | |||
EnvelopedData syntax see CMS [RFC5652]. Using the EncryptedKey data | EnvelopedData syntax see CMS [RFC5652]. Using the EncryptedKey data | |||
structure, the choice to either use EncryptedValue (for backward | structure, the choice to either use EncryptedValue (for backward | |||
compatibility only) or EnvelopedData is offered. The use of the | compatibility only) or EnvelopedData is offered. The use of the | |||
EncryptedValue structure has been deprecated in favor of the | EncryptedValue structure has been deprecated in favor of the | |||
EnvelopedData structure. Therefore, it is recommended to use | EnvelopedData structure. Therefore, it is recommended to use | |||
EnvelopedData. | EnvelopedData. | |||
Note: As we reuse the EncryptedKey structure defined in CRMF | ||||
[RFC4211], the update is backward compatible. Using the new syntax | ||||
with the untagged default choice EncryptedValue is bitwise compatible | ||||
with the old syntax. | ||||
The EncryptedKey data structure is used in CMP to either transport a | The EncryptedKey data structure is used in CMP to either transport a | |||
private key, certificate or revocation passphrase in encrypted form. | private key, certificate or revocation passphrase in encrypted form. | |||
EnvelopedData is used as follows: | EnvelopedData is used as follows: | |||
o Contains only one recepientInfo structure because the content is | o Contains only one recepientInfo structure because the content is | |||
encrypted only for one recipient. | encrypted only for one recipient. | |||
o Contains a private key in a SignedData structure as specified in | o Contains a private key in the AsymmetricKeyPackage structure as | |||
CMS section 5 [RFC5652] signed by the Key Generation Authority. | defined in RFC 5958 [RFC5958] wrapped in a SignedData structure as | |||
specified in CMS section 5 [RFC5652] signed by the Key Generation | ||||
Authority. | ||||
o Contains a certificate or revocation passphrase directly in the | o Contains a certificate or revocation passphrase directly in the | |||
encryptedContent field. | encryptedContent field. | |||
Note: When transferring a centrally generated private key in a | Note: To ensure explicit control of the encoding of the private key | |||
certificate response message to the EE, the algorithm identifier and | according to the specific algorithm the new key pair in an asymmetric | |||
the associated public key will anyhow be transported in this response | key package structure as specified in [RFC5958]. | |||
message. Therefore, the private key will not be delivered in a key | ||||
package structure as specified in [RFC5958] and [RFC6032]. But the | ||||
wrapping of the private key in a SignedData structure that is wrapped | ||||
in the EnvelopedData structure as specified in [RFC6032] is applied. | ||||
The content of the EnvelopedData structure, as specified in CMS | The content of the EnvelopedData structure, as specified in CMS | |||
section 6 [RFC5652], MUST be encrypted using a newly generated | section 6 [RFC5652], MUST be encrypted using a newly generated | |||
symmetric content-encryption key. This content-encryption key MUST | symmetric content-encryption key. This content-encryption key MUST | |||
be securely provided to the recipient using one of three key | be securely provided to the recipient using one of three key | |||
management techniques. | management 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 for the recipient: | depends on the credential available for the recipient: | |||
o Jointly shared secret: The content-encryption key will be | ||||
protected using the password-based key management technique, as | ||||
specified in CMS section 6.2.4 [RFC5652]. | ||||
o Recipient's certificate that contains a key usage extension | o Recipient's certificate that contains a key usage extension | |||
asserting keyAgreement: The content-encryption key will be | asserting keyAgreement: The content-encryption key will be | |||
protected using the key agreement key management technique, as | protected using the key agreement key management technique, as | |||
specified in CMS section 6.2.2 [RFC5652]. | specified in CMS section 6.2.2 [RFC5652]. | |||
o Recipient's certificate that contains a key usage extension | o Recipient's certificate that contains a key usage extension | |||
asserting keyEncipherment: The content-encryption key will be | asserting keyEncipherment: The content-encryption key will be | |||
protected using the key transport key management technique, as | protected using the key transport key management technique, as | |||
specified in CMS section 6.2.1 [RFC5652]. | specified in CMS section 6.2.1 [RFC5652]. | |||
o Jointly shared secret: The content-encryption key will be | ||||
protected using the password-based key management technique, as | ||||
specified in CMS section 6.2.4 [RFC5652]. | ||||
2.5. Update Section 5.3.4. - Certification Response | 2.5. Update Section 5.3.4. - Certification Response | |||
Section 5.3.4 of RFC 4210 [RFC4210] describes the Certification | Section 5.3.4 of RFC 4210 [RFC4210] describes the Certification | |||
Response. This document updates the syntax by using the parent | Response. This document updates the syntax by using the parent | |||
structure EncryptedKey instead of EncryptedValue as described in | structure EncryptedKey instead of EncryptedValue as described in | |||
Section 2.1 above. | Section 2.1 above. | |||
Replace the ASN.1 syntax of CertifiedKeyPair and CertOrEncCert with | Replace the ASN.1 syntax of CertifiedKeyPair and CertOrEncCert with | |||
the following text. | the following text. | |||
skipping to change at page 10, line 40 ¶ | skipping to change at page 11, line 5 ¶ | |||
the checkAfter value before sending another pollReq. | the checkAfter value before sending another pollReq. | |||
4 If an ip, cp, or kup is received in response to a pollReq, then it | 4 If an ip, cp, or kup is received in response to a pollReq, then it | |||
will be treated in the same way as the initial response. | will be treated in the same way as the initial response. | |||
Note: A p10cr message contains exactly one CertificationRequestInfo | Note: A p10cr message contains exactly one CertificationRequestInfo | |||
data structure as specified in PKCS#10 [RFC2986] but no certificate | data structure as specified in PKCS#10 [RFC2986] but no certificate | |||
request number. Therefore, the certReqId MUST be set to 0 in all | request number. Therefore, the certReqId MUST be set to 0 in all | |||
following messages of this transaction. | following messages of this transaction. | |||
2.8. Update Appendix B - The Use of Revocation Passphrase | 2.8. IANA Considerations | |||
Section 9 of RFC 4210 [RFC4210] contains the IANA Considerations of | ||||
that document. As this document defines a new and updates two | ||||
existing Extended Key Usages, the IANA Considerations need to be | ||||
updated accordingly. | ||||
Add the following paragraphs between the first and second paragraph | ||||
of the section. | ||||
Within the SMI-numbers registry "SMI Security for PKIX Extended Key | ||||
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] three | ||||
changes have been performed. | ||||
Two existing entries have been updated to also point to this | ||||
document: | ||||
Decimal Description References | ||||
------- ----------- ------------------ | ||||
27 id-kp-cmcCA [RFC6402][thisRFC] | ||||
28 id-kp-cmcRA [RFC6402][thisRFC] | ||||
One new entry has been added: | ||||
Decimal Description References | ||||
------- ----------- ---------- | ||||
32 id-kp-cmKGA [thisRFC] | ||||
2.9. Update Appendix B - The Use of Revocation Passphrase | ||||
Appendix B of RFC 4210 [RFC4210] describes the usage of the | Appendix B of RFC 4210 [RFC4210] describes the usage of the | |||
revocation passphrase. As this document updates RFC 4210 [RFC4210] | revocation passphrase. As this document updates RFC 4210 [RFC4210] | |||
to utilize the parent structure EncryptedKey instead of | to utilize the parent structure EncryptedKey instead of | |||
EncryptedValue as described in Section 2.1 above, the description is | EncryptedValue as described in Section 2.1 above, the description is | |||
updated accordingly. | updated 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. | |||
skipping to change at page 11, line 29 ¶ | skipping to change at page 12, line 21 ¶ | |||
Replace the third bullet point of this section with the following | Replace the third bullet point of this section with the following | |||
text. | text. | |||
o When using EnvelopedData the localKeyId attribute as specified in | o When using EnvelopedData the localKeyId attribute as specified in | |||
RFC 2985 [RFC2985] and when using EncryptedValue the valueHint | RFC 2985 [RFC2985] and when using EncryptedValue the valueHint | |||
field MAY contain a key identifier (chosen by the entity, along | field MAY contain a key identifier (chosen by the entity, along | |||
with the passphrase itself) to assist in later retrieval of the | with the passphrase itself) to assist in later retrieval of the | |||
correct passphrase (e.g., when the revocation request is | correct passphrase (e.g., when the revocation request is | |||
constructed by the entity and received by the CA/RA). | constructed by the entity and received by the CA/RA). | |||
2.9. Update Appendix C - Request Message Behavioral Clarifications | 2.10. Update Appendix C - Request Message Behavioral Clarifications | |||
Appendix C of RFC 4210 [RFC4210] provides clarifications to the | Appendix C of RFC 4210 [RFC4210] provides clarifications to the | |||
request message behavior. As this document updates RFC 4210 | request message behavior. As this document updates RFC 4210 | |||
[RFC4210] to utilize the parent structure EncryptedKey instead of | [RFC4210] to utilize the parent structure EncryptedKey instead of | |||
EncryptedValue as described in Section 2.1 above, the description is | EncryptedValue as described in Section 2.1 above, the description is | |||
updated accordingly. | updated accordingly. | |||
Replace the note coming after the ASN.1 syntax of POPOPrivKey of this | Replace the note coming after the ASN.1 syntax of POPOPrivKey of this | |||
section with the following text. | section with the following text. | |||
skipping to change at page 12, line 5 ¶ | skipping to change at page 12, line 45 ¶ | |||
-- * Section 5.2.2 of this specification). Therefore, this document | -- * Section 5.2.2 of this specification). Therefore, this document | |||
-- * makes the behavioral clarification of specifying that the | -- * makes the behavioral clarification of specifying that the | |||
-- * contents of "thisMessage" MUST be encoded either as | -- * contents of "thisMessage" MUST be encoded either as | |||
-- * "EnvelopedData" or "EncryptedValue" (only for backward | -- * "EnvelopedData" or "EncryptedValue" (only for backward | |||
-- * compatibility) and then wrapped in a BIT STRING. This allows | -- * compatibility) and then wrapped in a BIT STRING. This allows | |||
-- * the necessary conveyance and protection of the private key | -- * the necessary conveyance and protection of the private key | |||
-- * while maintaining bits-on-the-wire compatibility with RFC 4211 | -- * while maintaining bits-on-the-wire compatibility with RFC 4211 | |||
-- * [RFC4211]. | -- * [RFC4211]. | |||
-- ********** | -- ********** | |||
2.10. Update Appendix D.4. - Initial Registration/Certification (Basic | 2.11. 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 RFC 4210 [RFC4210] provides the initial registration/ | |||
certification scheme. This scheme shall continue to use | certification scheme. This scheme shall continue to use | |||
EncryptedValue for backward compatibility reasons. | EncryptedValue for backward compatibility reasons. | |||
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. IANA Considerations | 3. Updates to RFC 6712 - HTTP Transfer for the Certificate Management | |||
Protocol (CMP) | ||||
< TBD: A new OID for id-kp-cmKGA needs to be requested. > | 3.1. New Section 1.1. - Changes since RFC 6712 | |||
The following subsection describes feature updates to RFC 6712 | ||||
[RFC6712]. They are always related to the base specification. Hence | ||||
references to the original sections in RFC 6712 [RFC6712] are used | ||||
whenever possible. | ||||
Insert this section at the end of the current Section 1. | ||||
1.1 Changes since RFC 6712 | ||||
The following updates are made in draft-ietf-lamps-cmp-updates: | ||||
o Add an HTTP URI discovery mechanism and extend the URI structure. | ||||
3.2. New Section 3.6. - HTTP Request-URI | ||||
Section 3.6 of RFC 6712 [RFC6712] specifies the used HTTP URIs. This | ||||
document adds a discovery mechanism and extends the URIs. | ||||
Replace the text of the section with the following text. | ||||
Each PKI management entity supporting HTTP or HTTPS transport MUST | ||||
support the use of the path-prefix of '/.well-known/' as defined in | ||||
RFC 5785 [RFC5785] and the registered name of 'cmp' to ease | ||||
interworking in a multi-vendor environment. | ||||
The CMP client MUST be configured with sufficient information to form | ||||
the CMP server URI. This MUST be at least the authority portion of | ||||
the URI, e.g., 'www.example.com:80', or the full operational path of | ||||
the PKI management entity. Additional arbitrary label, e.g., | ||||
'profileLabel' and 'operationLabel', MAY be configured as a separate | ||||
component or as part of the full operational path to provide further | ||||
information. The 'profileLabel' MAY support addressing multiple CAs | ||||
or certificate profiles and the 'operationLabel' may support | ||||
addressing PKI management operation specific endpoints. A valid full | ||||
operational path can look like this: | ||||
1 http://www.example.com/.well-known/cmp | ||||
2 http://www.example.com/.well-known/cmp/operationLabel | ||||
3 http://www.example.com/.well-known/cmp/profileLabel | ||||
4 http://www.example.com/.well-known/cmp/profileLabel/operationLabel | ||||
The discovery of supported endpoints as defined above will provide | ||||
the information to the EE, how to contact the PKI management entity | ||||
and, if available, how to request enrolment for a specific | ||||
certificate profile or revoke a certificate at a specific CA. | ||||
Querying the PKI management entity, the EE will get a list of | ||||
potential endpoints supported by the PKI management entity. | ||||
Performing a GET on "/.well-known/cmp" to the default port MUST | ||||
return a set of links to endpoints available from the server. In | ||||
addition to the link also the expected format of the data object is | ||||
provided as content type (ct). | ||||
< TBD: It needs to be discussed if the discovery should be performed | ||||
using GET on "/.well-known/cmp" or GET on "/.well-known" only. > | ||||
The following provides an illustrative example for a PKI management | ||||
entity supporting different PKI management operations for different | ||||
certificate profiles and CAs. | ||||
Detailed message description: | ||||
REQ: GET /.well-known/cmp | ||||
RES: Content | ||||
</cmp/certprofile1/operation1>;ct=pkixcmp | ||||
</cmp/certprofile2/operation1>;ct=pkixcmp | ||||
</cmp/certprofile3/operation1>;ct=pkixcmp | ||||
</cmp/certprofile1/operation2>;ct=pkixcmp | ||||
</cmp/certprofile2/operation2>;ct=pkixcmp | ||||
</cmp/certprofile3/operation2>;ct=pkixcmp | ||||
</cmp/ca1/operation3>;ct=pkixcmp | ||||
</cmp/ca2/operation3>;ct=pkixcmp | ||||
4. IANA Considerations | ||||
This document contains an update to the IANA Considerations section | ||||
to be added to [RFC4210]. | ||||
< TBD: The existing description and information of id-kp-cmcRA and | < TBD: The existing description and information of id-kp-cmcRA and | |||
id-kp-cmcCA need to be updated to reflect their extended usage. > | id-kp-cmcCA need to be updated to reflect their extended usage. > | |||
4. Security Considerations | 5. Security Considerations | |||
No changes are made to the existing security considerations of | No changes are made to the existing security considerations of | |||
RFC 4210 [RFC4210]. | RFC 4210 [RFC4210] and RFC 6712 [RFC6712]. | |||
5. Acknowledgements | 6. Acknowledgements | |||
Special thank goes to Jim Schaad for his guidance and the inspiration | Special thank goes to Jim Schaad for his guidance and the inspiration | |||
on structuring and writing this document I got from [RFC6402] that | on structuring and writing this document I got from [RFC6402] that | |||
updates CMC. | updates CMC. Special thank also goes also to Russ Housley and Tomas | |||
Gustavsson for reviewing and providing valuable suggestions on the | ||||
approvement of this document. | ||||
I also like to thank all reviewers of this document for their | I also like to thank all reviewers of this document for their | |||
valuable feedback. | valuable feedback. | |||
6. References | 7. References | |||
6.1. Normative References | 7.1. Normative References | |||
[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>. | |||
[RFC2985] Nystrom, M. and B. Kaliski, "PKCS #9: Selected Object | [RFC2985] Nystrom, M. and B. Kaliski, "PKCS #9: Selected Object | |||
Classes and Attribute Types Version 2.0", RFC 2985, | Classes and Attribute Types Version 2.0", RFC 2985, | |||
DOI 10.17487/RFC2985, November 2000, | DOI 10.17487/RFC2985, November 2000, | |||
<https://www.rfc-editor.org/info/rfc2985>. | <https://www.rfc-editor.org/info/rfc2985>. | |||
skipping to change at page 13, line 31 ¶ | skipping to change at page 16, line 15 ¶ | |||
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
<https://www.rfc-editor.org/info/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
[RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | |||
RFC 5652, DOI 10.17487/RFC5652, September 2009, | RFC 5652, DOI 10.17487/RFC5652, September 2009, | |||
<https://www.rfc-editor.org/info/rfc5652>. | <https://www.rfc-editor.org/info/rfc5652>. | |||
[RFC5785] Nottingham, M. and E. Hammer-Lahav, "Defining Well-Known | ||||
Uniform Resource Identifiers (URIs)", RFC 5785, | ||||
DOI 10.17487/RFC5785, April 2010, | ||||
<https://www.rfc-editor.org/info/rfc5785>. | ||||
[RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | ||||
Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | ||||
DOI 10.17487/RFC5912, June 2010, | ||||
<https://www.rfc-editor.org/info/rfc5912>. | ||||
[RFC5958] Turner, S., "Asymmetric Key Packages", RFC 5958, | ||||
DOI 10.17487/RFC5958, August 2010, | ||||
<https://www.rfc-editor.org/info/rfc5958>. | ||||
[RFC6402] Schaad, J., "Certificate Management over CMS (CMC) | [RFC6402] Schaad, J., "Certificate Management over CMS (CMC) | |||
Updates", RFC 6402, DOI 10.17487/RFC6402, November 2011, | Updates", RFC 6402, DOI 10.17487/RFC6402, November 2011, | |||
<https://www.rfc-editor.org/info/rfc6402>. | <https://www.rfc-editor.org/info/rfc6402>. | |||
6.2. Informative References | [RFC6712] Kause, T. and M. Peylo, "Internet X.509 Public Key | |||
Infrastructure -- HTTP Transfer for the Certificate | ||||
Management Protocol (CMP)", RFC 6712, | ||||
DOI 10.17487/RFC6712, September 2012, | ||||
<https://www.rfc-editor.org/info/rfc6712>. | ||||
[RFC7299] Housley, R., "Object Identifier Registry for the PKIX | ||||
Working Group", RFC 7299, DOI 10.17487/RFC7299, July 2014, | ||||
<https://www.rfc-editor.org/info/rfc7299>. | ||||
7.2. Informative References | ||||
[I-D.ietf-lamps-lightweight-cmp-profile] | [I-D.ietf-lamps-lightweight-cmp-profile] | |||
Brockhaus, H., Fries, S., and D. Oheimb, "Lightweight CMP | Brockhaus, H., Fries, S., and D. Oheimb, "Lightweight CMP | |||
Profile", draft-ietf-lamps-lightweight-cmp-profile-01 | Profile", draft-ietf-lamps-lightweight-cmp-profile-02 | |||
(work in progress), March 2020. | (work in progress), July 2020. | |||
[RFC5958] Turner, S., "Asymmetric Key Packages", RFC 5958, | ||||
DOI 10.17487/RFC5958, August 2010, | ||||
<https://www.rfc-editor.org/info/rfc5958>. | ||||
[RFC6032] Turner, S. and R. Housley, "Cryptographic Message Syntax | [IEEE802.1AR] | |||
(CMS) Encrypted Key Package Content Type", RFC 6032, | IEEE, "802.1AR Secure Device Identifier", June 2018, | |||
DOI 10.17487/RFC6032, December 2010, | <http://standards.ieee.org/findstds/standard/802.1AR- | |||
<https://www.rfc-editor.org/info/rfc6032>. | 2009.html>. | |||
Appendix A. ASN.1 Modules | Appendix A. ASN.1 Modules | |||
Changes to the following parts are needed | A.1. 1988 ASN.1 Module | |||
o Import from PKCS-9 | This section contains the updated ASN.1 module for [RFC4210]. This | |||
module replaces the module in Appendix F of that document. Although | ||||
a 2002 ASN.1 module is provided, this remains the normative module as | ||||
per the policy of the PKIX working group. | ||||
localKeyId | PKIXCMP {iso(1) identified-organization(3) | |||
FROM PKCS-9 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) | dod(6) internet(1) security(5) mechanisms(5) pkix(7) | |||
pkcs-9(9) modules(0) pkcs-9(1)} | id-mod(0) id-mod-cmp2000(16)} | |||
o Import from PKIKXCRMF-2005 | DEFINITIONS EXPLICIT TAGS ::= | |||
CertTemplate, PKIPublicationInfo, EncryptedKey, EncryptedValue, | BEGIN | |||
CertId, CertReqMessages | ||||
FROM PKIXCRMF-2005 {iso(1) identified-organization(3) | ||||
dod(6) internet(1) security(5) mechanisms(5) pkix(7) | ||||
id-mod(0) id-mod-crmf2005(36)} | ||||
o Import from CryptographicMessageSyntax2004 | -- EXPORTS ALL -- | |||
EnvelopedData, SignedData | IMPORTS | |||
FROM CryptographicMessageSyntax2004 { iso(1) member-body(2) | ||||
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) | Certificate, CertificateList, Extensions, AlgorithmIdentifier, | |||
modules(0) cms-2004(24) } | UTF8String, id-kp -- if required; otherwise, comment out | |||
FROM PKIX1Explicit88 {iso(1) identified-organization(3) | ||||
dod(6) internet(1) security(5) mechanisms(5) pkix(7) | ||||
id-mod(0) id-pkix1-explicit-88(1)} | ||||
GeneralName, KeyIdentifier | ||||
FROM PKIX1Implicit88 {iso(1) identified-organization(3) | ||||
dod(6) internet(1) security(5) mechanisms(5) pkix(7) | ||||
id-mod(0) id-pkix1-implicit-88(2)} | ||||
CertTemplate, PKIPublicationInfo, EncryptedKey, EncryptedValue, | ||||
CertId, CertReqMessages | ||||
FROM PKIXCRMF-2005 {iso(1) identified-organization(3) | ||||
dod(6) internet(1) security(5) mechanisms(5) pkix(7) | ||||
id-mod(0) id-mod-crmf2005(36)} | ||||
-- The import of EncryptedKey is added due to the updates made | ||||
-- in this document | ||||
-- see also the behavioral clarifications to CRMF codified in | ||||
-- Appendix C of this specification | ||||
CertificationRequest | ||||
FROM PKCS-10 {iso(1) member-body(2) | ||||
us(840) rsadsi(113549) | ||||
pkcs(1) pkcs-10(10) modules(1) pkcs-10(1)} | ||||
-- (specified in RFC 2986 with 1993 ASN.1 syntax and IMPLICIT | ||||
-- tags). Alternatively, implementers may directly include | ||||
-- the [PKCS10] syntax in this module | ||||
localKeyId | ||||
FROM PKCS-9 {iso(1) member-body(2) us(840) rsadsi(113549) | ||||
pkcs(1) pkcs-9(9) modules(0) pkcs-9(1)} | ||||
-- The import of localKeyId is added due to the updates made in | ||||
-- this document | ||||
EnvelopedData, SignedData | ||||
FROM CryptographicMessageSyntax2004 { iso(1) | ||||
member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | ||||
smime(16) modules(0) cms-2004(24) } | ||||
-- The import of EnvelopedData and SignedData is added due to | ||||
-- the updates made in this document | ||||
; | ||||
-- the rest of the module contains locally-defined OIDs and | ||||
-- constructs | ||||
CMPCertificate ::= CHOICE { | ||||
x509v3PKCert Certificate | ||||
} | ||||
-- This syntax, while bits-on-the-wire compatible with the | ||||
-- standard X.509 definition of "Certificate", allows the | ||||
-- possibility of future certificate types (such as X.509 | ||||
-- attribute certificates, WAP WTLS certificates, or other kinds | ||||
-- of certificates) within this certificate management protocol, | ||||
-- should a need ever arise to support such generality. Those | ||||
-- implementations that do not foresee a need to ever support | ||||
-- other certificate types MAY, if they wish, comment out the | ||||
-- above structure and "un-comment" the following one prior to | ||||
-- compiling this ASN.1 module. (Note that interoperability | ||||
-- with implementations that don't do this will be unaffected by | ||||
-- this change.) | ||||
-- CMPCertificate ::= Certificate | ||||
PKIMessage ::= SEQUENCE { | ||||
header PKIHeader, | ||||
body PKIBody, | ||||
protection [0] PKIProtection OPTIONAL, | ||||
extraCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | ||||
OPTIONAL | ||||
} | ||||
PKIMessages ::= SEQUENCE SIZE (1..MAX) OF PKIMessage | ||||
PKIHeader ::= SEQUENCE { | ||||
pvno INTEGER { cmp1999(1), cmp2000(2) }, | ||||
sender GeneralName, | ||||
-- identifies the sender | ||||
recipient GeneralName, | ||||
-- identifies the intended recipient | ||||
messageTime [0] GeneralizedTime OPTIONAL, | ||||
-- time of production of this message (used when sender | ||||
-- believes that the transport will be "suitable"; i.e., | ||||
-- that the time will still be meaningful upon receipt) | ||||
protectionAlg [1] AlgorithmIdentifier OPTIONAL, | ||||
-- algorithm used for calculation of protection bits | ||||
senderKID [2] KeyIdentifier OPTIONAL, | ||||
recipKID [3] KeyIdentifier OPTIONAL, | ||||
-- to identify specific keys used for protection | ||||
transactionID [4] OCTET STRING OPTIONAL, | ||||
-- identifies the transaction; i.e., this will be the same in | ||||
-- corresponding request, response, certConf, and PKIConf | ||||
-- messages | ||||
senderNonce [5] OCTET STRING OPTIONAL, | ||||
recipNonce [6] OCTET STRING OPTIONAL, | ||||
-- nonces used to provide replay protection, senderNonce | ||||
-- is inserted by the creator of this message; recipNonce | ||||
-- is a nonce previously inserted in a related message by | ||||
-- the intended recipient of this message | ||||
freeText [7] PKIFreeText OPTIONAL, | ||||
-- this may be used to indicate context-specific instructions | ||||
-- (this field is intended for human consumption) | ||||
generalInfo [8] SEQUENCE SIZE (1..MAX) OF | ||||
InfoTypeAndValue OPTIONAL | ||||
-- this may be used to convey context-specific information | ||||
-- (this field not primarily intended for human consumption) | ||||
} | ||||
PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | ||||
-- text encoded as UTF-8 String [RFC3629] (note: each | ||||
-- UTF8String MAY include an [RFC3066] language tag | ||||
-- to indicate the language of the contained text | ||||
-- see [RFC2482] for details) | ||||
PKIBody ::= CHOICE { -- message-specific body elements | ||||
ir [0] CertReqMessages, --Initialization Request | ||||
ip [1] CertRepMessage, --Initialization Response | ||||
cr [2] CertReqMessages, --Certification Request | ||||
cp [3] CertRepMessage, --Certification Response | ||||
p10cr [4] CertificationRequest, --imported from [PKCS10] | ||||
popdecc [5] POPODecKeyChallContent, --pop Challenge | ||||
popdecr [6] POPODecKeyRespContent, --pop Response | ||||
kur [7] CertReqMessages, --Key Update Request | ||||
kup [8] CertRepMessage, --Key Update Response | ||||
krr [9] CertReqMessages, --Key Recovery Request | ||||
krp [10] KeyRecRepContent, --Key Recovery Response | ||||
rr [11] RevReqContent, --Revocation Request | ||||
rp [12] RevRepContent, --Revocation Response | ||||
ccr [13] CertReqMessages, --Cross-Cert. Request | ||||
ccp [14] CertRepMessage, --Cross-Cert. Response | ||||
ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann. | ||||
cann [16] CertAnnContent, --Certificate Ann. | ||||
rann [17] RevAnnContent, --Revocation Ann. | ||||
crlann [18] CRLAnnContent, --CRL Announcement | ||||
pkiconf [19] PKIConfirmContent, --Confirmation | ||||
nested [20] NestedMessageContent, --Nested Message | ||||
genm [21] GenMsgContent, --General Message | ||||
genp [22] GenRepContent, --General Response | ||||
error [23] ErrorMsgContent, --Error Message | ||||
certConf [24] CertConfirmContent, --Certificate confirm | ||||
pollReq [25] PollReqContent, --Polling request | ||||
pollRep [26] PollRepContent --Polling response | ||||
} | ||||
PKIProtection ::= BIT STRING | ||||
ProtectedPart ::= SEQUENCE { | ||||
header PKIHeader, | ||||
body PKIBody | ||||
} | ||||
id-PasswordBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 13} | ||||
PBMParameter ::= SEQUENCE { | ||||
salt OCTET STRING, | ||||
-- note: implementations MAY wish to limit acceptable sizes | ||||
-- of this string to values appropriate for their environment | ||||
-- in order to reduce the risk of denial-of-service attacks | ||||
owf AlgorithmIdentifier, | ||||
-- AlgId for a One-Way Function (SHA-1 recommended) | ||||
iterationCount INTEGER, | ||||
-- number of times the OWF is applied | ||||
-- note: implementations MAY wish to limit acceptable sizes | ||||
-- of this integer to values appropriate for their environment | ||||
-- in order to reduce the risk of denial-of-service attacks | ||||
mac AlgorithmIdentifier | ||||
-- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11], | ||||
} -- or HMAC [RFC2104, RFC2202]) | ||||
id-DHBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 30} | ||||
DHBMParameter ::= SEQUENCE { | ||||
owf AlgorithmIdentifier, | ||||
-- AlgId for a One-Way Function (SHA-1 recommended) | ||||
mac AlgorithmIdentifier | ||||
-- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11], | ||||
} -- or HMAC [RFC2104, RFC2202]) | ||||
NestedMessageContent ::= PKIMessages | ||||
PKIStatus ::= INTEGER { | ||||
accepted (0), | ||||
-- you got exactly what you asked for | ||||
grantedWithMods (1), | ||||
-- you got something like what you asked for; the | ||||
-- requester is responsible for ascertaining the differences | ||||
rejection (2), | ||||
-- you don't get it, more information elsewhere in the message | ||||
waiting (3), | ||||
-- the request body part has not yet been processed; expect to | ||||
-- hear more later (note: proper handling of this status | ||||
-- response MAY use the polling req/rep PKIMessages specified | ||||
-- in Section 5.3.22; alternatively, polling in the underlying | ||||
-- transport layer MAY have some utility in this regard) | ||||
revocationWarning (4), | ||||
-- this message contains a warning that a revocation is | ||||
-- imminent | ||||
revocationNotification (5), | ||||
-- notification that a revocation has occurred | ||||
keyUpdateWarning (6) | ||||
-- update already done for the oldCertId specified in | ||||
-- CertReqMsg | ||||
} | ||||
PKIFailureInfo ::= BIT STRING { | ||||
-- since we can fail in more than one way! | ||||
-- More codes may be added in the future if/when required. | ||||
badAlg (0), | ||||
-- unrecognized or unsupported Algorithm Identifier | ||||
badMessageCheck (1), | ||||
-- integrity check failed (e.g., signature did not verify) | ||||
badRequest (2), | ||||
-- transaction not permitted or supported | ||||
badTime (3), | ||||
-- messageTime was not sufficiently close to the system time, | ||||
-- as defined by local policy | ||||
badCertId (4), | ||||
-- no certificate could be found matching the provided criteria | ||||
badDataFormat (5), | ||||
-- the data submitted has the wrong format | ||||
wrongAuthority (6), | ||||
-- the authority indicated in the request is different from the | ||||
-- one creating the response token | ||||
incorrectData (7), | ||||
-- the requester's data is incorrect (for notary services) | ||||
missingTimeStamp (8), | ||||
-- when the timestamp is missing but should be there | ||||
-- (by policy) | ||||
badPOP (9), | ||||
-- the proof-of-possession failed | ||||
certRevoked (10), | ||||
-- the certificate has already been revoked | ||||
certConfirmed (11), | ||||
-- the certificate has already been confirmed | ||||
wrongIntegrity (12), | ||||
-- invalid integrity, password based instead of signature or | ||||
-- vice versa | ||||
badRecipientNonce (13), | ||||
-- invalid recipient nonce, either missing or wrong value | ||||
timeNotAvailable (14), | ||||
-- the TSA's time source is not available | ||||
unacceptedPolicy (15), | ||||
-- the requested TSA policy is not supported by the TSA. | ||||
unacceptedExtension (16), | ||||
-- the requested extension is not supported by the TSA. | ||||
addInfoNotAvailable (17), | ||||
-- the additional information requested could not be | ||||
-- understood or is not available | ||||
badSenderNonce (18), | ||||
-- invalid sender nonce, either missing or wrong size | ||||
badCertTemplate (19), | ||||
-- invalid cert. template or missing mandatory information | ||||
signerNotTrusted (20), | ||||
-- signer of the message unknown or not trusted | ||||
transactionIdInUse (21), | ||||
-- the transaction identifier is already in use | ||||
unsupportedVersion (22), | ||||
-- the version of the message is not supported | ||||
notAuthorized (23), | ||||
-- the sender was not authorized to make the preceding | ||||
-- request or perform the preceding action | ||||
systemUnavail (24), | ||||
-- the request cannot be handled due to system unavailability | ||||
systemFailure (25), | ||||
-- the request cannot be handled due to system failure | ||||
duplicateCertReq (26) | ||||
-- certificate cannot be issued because a duplicate | ||||
-- certificate already exists | ||||
} | ||||
PKIStatusInfo ::= SEQUENCE { | ||||
status PKIStatus, | ||||
statusString PKIFreeText OPTIONAL, | ||||
failInfo PKIFailureInfo OPTIONAL | ||||
} | ||||
OOBCert ::= CMPCertificate | ||||
OOBCertHash ::= SEQUENCE { | ||||
hashAlg [0] AlgorithmIdentifier OPTIONAL, | ||||
certId [1] CertId OPTIONAL, | ||||
hashVal BIT STRING | ||||
-- hashVal is calculated over the DER encoding of the | ||||
-- self-signed certificate with the identifier certID. | ||||
} | ||||
POPODecKeyChallContent ::= SEQUENCE OF Challenge | ||||
-- One Challenge per encryption key certification request (in the | ||||
-- same order as these requests appear in CertReqMessages). | ||||
Challenge ::= SEQUENCE { | ||||
owf AlgorithmIdentifier OPTIONAL, | ||||
-- MUST be present in the first Challenge; MAY be omitted in | ||||
-- any subsequent Challenge in POPODecKeyChallContent (if | ||||
-- omitted, then the owf used in the immediately preceding | ||||
-- Challenge is to be used). | ||||
witness OCTET STRING, | ||||
-- the result of applying the one-way function (owf) to a | ||||
-- randomly-generated INTEGER, A. [Note that a different | ||||
-- INTEGER MUST be used for each Challenge.] | ||||
challenge OCTET STRING | ||||
-- the encryption (under the public key for which the cert. | ||||
-- request is being made) of Rand, where Rand is specified as | ||||
-- Rand ::= SEQUENCE { | ||||
-- int INTEGER, | ||||
-- - the randomly-generated INTEGER A (above) | ||||
-- sender GeneralName | ||||
-- - the sender's name (as included in PKIHeader) | ||||
-- } | ||||
} | ||||
POPODecKeyRespContent ::= SEQUENCE OF INTEGER | ||||
-- One INTEGER per encryption key certification request (in the | ||||
-- same order as these requests appear in CertReqMessages). The | ||||
-- retrieved INTEGER A (above) is returned to the sender of the | ||||
-- corresponding Challenge. | ||||
CertRepMessage ::= SEQUENCE { | ||||
caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | ||||
OPTIONAL, | ||||
response SEQUENCE OF CertResponse | ||||
} | ||||
CertResponse ::= SEQUENCE { | ||||
certReqId INTEGER, | ||||
-- to match this response with corresponding request (a value | ||||
-- of -1 is to be used if certReqId is not specified in the | ||||
-- corresponding request) | ||||
status PKIStatusInfo, | ||||
certifiedKeyPair CertifiedKeyPair OPTIONAL, | ||||
rspInfo OCTET STRING OPTIONAL | ||||
-- analogous to the id-regInfo-utf8Pairs string defined | ||||
-- for regInfo in CertReqMsg [CRMF] | ||||
} | ||||
o In CertifiedKeyPair, CertOrEncCert and id-it-revPassphrase | ||||
CertifiedKeyPair ::= SEQUENCE { | CertifiedKeyPair ::= SEQUENCE { | |||
certOrEncCert CertOrEncCert, | certOrEncCert CertOrEncCert, | |||
privateKey [0] EncryptedKey OPTIONAL, | privateKey [0] EncryptedKey OPTIONAL, | |||
-- see [CRMF] for comment on encoding | -- see [CRMF] for comment on encoding | |||
-- Changed from Encrypted Value to EncryptedKey as a CHOICE of | ||||
-- EncryptedValue and EnvelopedData due to the changes made in | ||||
-- this document | ||||
-- Using the choice EncryptedValue is bit-compatible to the | ||||
-- 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 | ||||
-- EncryptedValue and EnvelopedData due to the changes made in | ||||
-- this document | ||||
-- Using the choice EncryptedValue is bit-compatible to the | ||||
-- syntax without this change | ||||
} | ||||
KeyRecRepContent ::= SEQUENCE { | ||||
status PKIStatusInfo, | ||||
newSigCert [0] CMPCertificate OPTIONAL, | ||||
caCerts [1] SEQUENCE SIZE (1..MAX) OF | ||||
CMPCertificate OPTIONAL, | ||||
keyPairHist [2] SEQUENCE SIZE (1..MAX) OF | ||||
CertifiedKeyPair OPTIONAL | ||||
} | ||||
RevReqContent ::= SEQUENCE OF RevDetails | ||||
RevDetails ::= SEQUENCE { | ||||
certDetails CertTemplate, | ||||
-- allows requester to specify as much as they can about | ||||
-- the cert. for which revocation is requested | ||||
-- (e.g., for cases in which serialNumber is not available) | ||||
crlEntryDetails Extensions OPTIONAL | ||||
-- requested crlEntryExtensions | ||||
} | ||||
RevRepContent ::= SEQUENCE { | ||||
status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo, | ||||
-- in same order as was sent in RevReqContent | ||||
revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId | ||||
OPTIONAL, | ||||
-- IDs for which revocation was requested | ||||
-- (same order as status) | ||||
crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList | ||||
OPTIONAL | ||||
-- the resulting CRLs (there may be more than one) | ||||
} | ||||
CAKeyUpdAnnContent ::= SEQUENCE { | ||||
oldWithNew CMPCertificate, -- old pub signed with new priv | ||||
newWithOld CMPCertificate, -- new pub signed with old priv | ||||
newWithNew CMPCertificate -- new pub signed with new priv | ||||
} | } | |||
CertAnnContent ::= CMPCertificate | ||||
RevAnnContent ::= SEQUENCE { | ||||
status PKIStatus, | ||||
certId CertId, | ||||
willBeRevokedAt GeneralizedTime, | ||||
badSinceDate GeneralizedTime, | ||||
crlDetails Extensions OPTIONAL | ||||
-- extra CRL details (e.g., crl number, reason, location, etc.) | ||||
} | ||||
CRLAnnContent ::= SEQUENCE OF CertificateList | ||||
CertConfirmContent ::= SEQUENCE OF CertStatus | ||||
CertStatus ::= SEQUENCE { | ||||
certHash OCTET STRING, | ||||
-- the hash of the certificate, using the same hash algorithm | ||||
-- as is used to create and verify the certificate signature | ||||
certReqId INTEGER, | ||||
-- to match this confirmation with the corresponding req/rep | ||||
statusInfo PKIStatusInfo OPTIONAL | ||||
} | ||||
PKIConfirmContent ::= NULL | ||||
InfoTypeAndValue ::= SEQUENCE { | ||||
infoType OBJECT IDENTIFIER, | ||||
infoValue ANY DEFINED BY infoType OPTIONAL | ||||
} | ||||
-- Example InfoTypeAndValue contents include, but are not limited | ||||
-- to, the following (un-comment in this ASN.1 module and use as | ||||
-- appropriate for a given environment): | ||||
-- | ||||
-- id-it-caProtEncCert OBJECT IDENTIFIER ::= {id-it 1} | ||||
-- CAProtEncCertValue ::= CMPCertificate | ||||
-- id-it-signKeyPairTypes OBJECT IDENTIFIER ::= {id-it 2} | ||||
-- SignKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier | ||||
-- id-it-encKeyPairTypes OBJECT IDENTIFIER ::= {id-it 3} | ||||
-- EncKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier | ||||
-- id-it-preferredSymmAlg OBJECT IDENTIFIER ::= {id-it 4} | ||||
-- PreferredSymmAlgValue ::= AlgorithmIdentifier | ||||
-- id-it-caKeyUpdateInfo OBJECT IDENTIFIER ::= {id-it 5} | ||||
-- CAKeyUpdateInfoValue ::= CAKeyUpdAnnContent | ||||
-- id-it-currentCRL OBJECT IDENTIFIER ::= {id-it 6} | ||||
-- CurrentCRLValue ::= CertificateList | ||||
-- id-it-unsupportedOIDs OBJECT IDENTIFIER ::= {id-it 7} | ||||
-- UnsupportedOIDsValue ::= SEQUENCE OF OBJECT IDENTIFIER | ||||
-- id-it-keyPairParamReq OBJECT IDENTIFIER ::= {id-it 10} | ||||
-- KeyPairParamReqValue ::= OBJECT IDENTIFIER | ||||
-- id-it-keyPairParamRep OBJECT IDENTIFIER ::= {id-it 11} | ||||
-- KeyPairParamRepValue ::= AlgorithmIdentifer | ||||
-- 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 | ||||
-- -- of EncryptedValue and EnvelopedData due to the changes | ||||
-- -- made in this document | ||||
-- -- Using the choice EncryptedValue is bit-compatible to the | ||||
-- -- syntax without this change | ||||
-- id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13} | ||||
-- ImplicitConfirmValue ::= NULL | ||||
-- id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14} | ||||
-- ConfirmWaitTimeValue ::= GeneralizedTime | ||||
-- id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} | ||||
-- OrigPKIMessageValue ::= PKIMessages | ||||
-- id-it-suppLangTags OBJECT IDENTIFIER ::= {id-it 16} | ||||
-- SuppLangTagsValue ::= SEQUENCE OF UTF8String | ||||
-- | ||||
-- where | ||||
-- | ||||
-- id-pkix OBJECT IDENTIFIER ::= { | ||||
-- iso(1) identified-organization(3) | ||||
-- dod(6) internet(1) security(5) mechanisms(5) pkix(7)} | ||||
-- and | ||||
-- id-it OBJECT IDENTIFIER ::= {id-pkix 4} | ||||
-- | ||||
-- | ||||
-- This construct MAY also be used to define new PKIX Certificate | ||||
-- Management Protocol request and response messages, or general- | ||||
-- purpose (e.g., announcement) messages for future needs or for | ||||
-- specific environments. | ||||
GenMsgContent ::= SEQUENCE OF InfoTypeAndValue | ||||
-- May be sent by EE, RA, or CA (depending on message content). | ||||
-- The OPTIONAL infoValue parameter of InfoTypeAndValue will | ||||
-- typically be omitted for some of the examples given above. | ||||
-- The receiver is free to ignore any contained OBJ. IDs that it | ||||
-- does not recognize. If sent from EE to CA, the empty set | ||||
-- indicates that the CA may send | ||||
-- any/all information that it wishes. | ||||
GenRepContent ::= SEQUENCE OF InfoTypeAndValue | ||||
-- Receiver MAY ignore any contained OIDs that it does not | ||||
-- recognize. | ||||
ErrorMsgContent ::= SEQUENCE { | ||||
pKIStatusInfo PKIStatusInfo, | ||||
errorCode INTEGER OPTIONAL, | ||||
-- implementation-specific error codes | ||||
errorDetails PKIFreeText OPTIONAL | ||||
-- implementation-specific error details | ||||
} | ||||
PollReqContent ::= SEQUENCE OF SEQUENCE { | ||||
certReqId INTEGER | ||||
} | ||||
PollRepContent ::= SEQUENCE OF SEQUENCE { | ||||
certReqId INTEGER, | ||||
checkAfter INTEGER, -- time in seconds | ||||
reason PKIFreeText OPTIONAL | ||||
} | ||||
-- | -- | |||
-- Extended Key Usage extension for PKI entities used in | -- Extended Key Usage extension for PKI entities used in CMP | |||
-- CMP operations | -- operations, added due to the changes made in this document | |||
-- The EKUs for the CA and RA are reused from CMC as defined in | ||||
-- [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 ... } | id-kp-cmKGA OBJECT IDENTIFIER ::= { id-kp 32 } | |||
< TBD: id-kp-cmKGA to be defined. > | END -- of CMP module | |||
< TBD: If needed the complete ASN.1 Module from RFC 4210 section | A.2. 2002 ASN.1 Module | |||
needs to be copied here. > | ||||
This section contains the updated 2002 ASN.1 module for [RFC5912]. | ||||
This module replaces the module in Section 9 of that document. The | ||||
module contains those changes that were done to update to 2002 ASN.1 | ||||
standard done in [RFC5912] as well as changes made for this document. | ||||
< TBD: Dose this document then also updates [RFC5912]? > | ||||
< In case the working group sees a need to provide this ASN.1 module | ||||
in 2015 syntax, please let me know. > | ||||
PKIXCMP-2009 | ||||
{ iso(1) identified-organization(3) dod(6) internet(1) | ||||
security(5) mechanisms(5) pkix(7) id-mod(0) | ||||
id-mod-cmp2000-02(50) } DEFINITIONS EXPLICIT TAGS ::= | ||||
BEGIN | ||||
IMPORTS | ||||
AttributeSet{}, Extensions{}, EXTENSION, ATTRIBUTE | ||||
FROM PKIX-CommonTypes-2009 | ||||
{iso(1) identified-organization(3) dod(6) internet(1) security(5) | ||||
mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57)} | ||||
AlgorithmIdentifier{}, SIGNATURE-ALGORITHM, ALGORITHM, | ||||
DIGEST-ALGORITHM, MAC-ALGORITHM | ||||
FROM AlgorithmInformation-2009 | ||||
{iso(1) identified-organization(3) dod(6) internet(1) security(5) | ||||
mechanisms(5) pkix(7) id-mod(0) | ||||
id-mod-algorithmInformation-02(58)} | ||||
Certificate, CertificateList, id-kp | ||||
FROM PKIX1Explicit-2009 | ||||
{iso(1) identified-organization(3) dod(6) internet(1) security(5) | ||||
mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51)} | ||||
GeneralName, KeyIdentifier | ||||
FROM PKIX1Implicit-2009 | ||||
{iso(1) identified-organization(3) dod(6) internet(1) security(5) | ||||
mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59)} | ||||
CertTemplate, PKIPublicationInfo, EncryptedKey, EncryptedValue, | ||||
CertId,CertReqMessages | ||||
FROM PKIXCRMF-2009 | ||||
{ iso(1) identified-organization(3) dod(6) internet(1) | ||||
security(5) mechanisms(5) pkix(7) id-mod(0) | ||||
id-mod-crmf2005-02(55) } | ||||
-- see also the behavioral clarifications to CRMF codified in | ||||
-- Appendix C of this specification | ||||
CertificationRequest | ||||
FROM PKCS-10 | ||||
{iso(1) identified-organization(3) dod(6) internet(1) security(5) | ||||
mechanisms(5) pkix(7) id-mod(0) id-mod-pkcs10-2009(69)} | ||||
-- (specified in RFC 2986 with 1993 ASN.1 syntax and IMPLICIT | ||||
-- tags). Alternatively, implementers may directly include | ||||
-- the [PKCS10] syntax in this module | ||||
localKeyId | ||||
FROM PKCS-9 | ||||
{iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | ||||
modules(0) pkcs-9(1)} | ||||
-- The import of localKeyId is added due to the updates made in | ||||
-- this document | ||||
EnvelopedData, SignedData | ||||
FROM CryptographicMessageSyntax-2009 | ||||
{iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) | ||||
smime(16) modules(0) id-mod-cms-2004-02(41)} | ||||
-- The import of EnvelopedData and SignedData is added due to | ||||
-- the updates made in this document | ||||
; | ||||
-- the rest of the module contains locally defined OIDs and | ||||
-- constructs | ||||
CMPCertificate ::= CHOICE { x509v3PKCert Certificate, ... } | ||||
-- This syntax, while bits-on-the-wire compatible with the | ||||
-- standard X.509 definition of "Certificate", allows the | ||||
-- possibility of future certificate types (such as X.509 | ||||
-- attribute certificates, WAP WTLS certificates, or other kinds | ||||
-- of certificates) within this certificate management protocol, | ||||
-- should a need ever arise to support such generality. Those | ||||
-- implementations that do not foresee a need to ever support | ||||
-- other certificate types MAY, if they wish, comment out the | ||||
-- above structure and "uncomment" the following one prior to | ||||
-- compiling this ASN.1 module. (Note that interoperability | ||||
-- with implementations that don't do this will be unaffected by | ||||
-- this change.) | ||||
-- CMPCertificate ::= Certificate | ||||
PKIMessage ::= SEQUENCE { | ||||
header PKIHeader, | ||||
body PKIBody, | ||||
protection [0] PKIProtection OPTIONAL, | ||||
extraCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | ||||
OPTIONAL } | ||||
PKIMessages ::= SEQUENCE SIZE (1..MAX) OF PKIMessage | ||||
PKIHeader ::= SEQUENCE { | ||||
pvno INTEGER { cmp1999(1), cmp2000(2) }, | ||||
sender GeneralName, | ||||
-- identifies the sender | ||||
recipient GeneralName, | ||||
-- identifies the intended recipient | ||||
messageTime [0] GeneralizedTime OPTIONAL, | ||||
-- time of production of this message (used when sender | ||||
-- believes that the transport will be "suitable"; i.e., | ||||
-- that the time will still be meaningful upon receipt) | ||||
protectionAlg [1] AlgorithmIdentifier{ALGORITHM, {...}} | ||||
OPTIONAL, | ||||
-- algorithm used for calculation of protection bits | ||||
senderKID [2] KeyIdentifier OPTIONAL, | ||||
recipKID [3] KeyIdentifier OPTIONAL, | ||||
-- to identify specific keys used for protection | ||||
transactionID [4] OCTET STRING OPTIONAL, | ||||
-- identifies the transaction; i.e., this will be the same in | ||||
-- corresponding request, response, certConf, and PKIConf | ||||
-- messages | ||||
senderNonce [5] OCTET STRING OPTIONAL, | ||||
recipNonce [6] OCTET STRING OPTIONAL, | ||||
-- nonces used to provide replay protection, senderNonce | ||||
-- is inserted by the creator of this message; recipNonce | ||||
-- is a nonce previously inserted in a related message by | ||||
-- the intended recipient of this message | ||||
freeText [7] PKIFreeText OPTIONAL, | ||||
-- this may be used to indicate context-specific instructions | ||||
-- (this field is intended for human consumption) | ||||
generalInfo [8] SEQUENCE SIZE (1..MAX) OF | ||||
InfoTypeAndValue OPTIONAL | ||||
-- this may be used to convey context-specific information | ||||
-- (this field not primarily intended for human consumption) | ||||
} | ||||
PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | ||||
-- text encoded as UTF-8 String [RFC3629] (note: each | ||||
-- UTF8String MAY include an [RFC3066] language tag | ||||
-- to indicate the language of the contained text; | ||||
-- see [RFC2482] for details) | ||||
PKIBody ::= CHOICE { -- message-specific body elements | ||||
ir [0] CertReqMessages, --Initialization Request | ||||
ip [1] CertRepMessage, --Initialization Response | ||||
cr [2] CertReqMessages, --Certification Request | ||||
cp [3] CertRepMessage, --Certification Response | ||||
p10cr [4] CertificationRequest, --imported from [PKCS10] | ||||
popdecc [5] POPODecKeyChallContent, --pop Challenge | ||||
popdecr [6] POPODecKeyRespContent, --pop Response | ||||
kur [7] CertReqMessages, --Key Update Request | ||||
kup [8] CertRepMessage, --Key Update Response | ||||
krr [9] CertReqMessages, --Key Recovery Request | ||||
krp [10] KeyRecRepContent, --Key Recovery Response | ||||
rr [11] RevReqContent, --Revocation Request | ||||
rp [12] RevRepContent, --Revocation Response | ||||
ccr [13] CertReqMessages, --Cross-Cert. Request | ||||
ccp [14] CertRepMessage, --Cross-Cert. Response | ||||
ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann. | ||||
cann [16] CertAnnContent, --Certificate Ann. | ||||
rann [17] RevAnnContent, --Revocation Ann. | ||||
crlann [18] CRLAnnContent, --CRL Announcement | ||||
pkiconf [19] PKIConfirmContent, --Confirmation | ||||
nested [20] NestedMessageContent, --Nested Message | ||||
genm [21] GenMsgContent, --General Message | ||||
genp [22] GenRepContent, --General Response | ||||
error [23] ErrorMsgContent, --Error Message | ||||
certConf [24] CertConfirmContent, --Certificate confirm | ||||
pollReq [25] PollReqContent, --Polling request | ||||
pollRep [26] PollRepContent --Polling response | ||||
} | ||||
PKIProtection ::= BIT STRING | ||||
ProtectedPart ::= SEQUENCE { | ||||
header PKIHeader, | ||||
body PKIBody } | ||||
id-PasswordBasedMac OBJECT IDENTIFIER ::= { iso(1) member-body(2) | ||||
usa(840) nt(113533) nsn(7) algorithms(66) 13 } | ||||
PBMParameter ::= SEQUENCE { | ||||
salt OCTET STRING, | ||||
-- note: implementations MAY wish to limit acceptable sizes | ||||
-- of this string to values appropriate for their environment | ||||
-- in order to reduce the risk of denial-of-service attacks | ||||
owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}}, | ||||
-- AlgId for a One-Way Function (SHA-1 recommended) | ||||
iterationCount INTEGER, | ||||
-- number of times the OWF is applied | ||||
-- note: implementations MAY wish to limit acceptable sizes | ||||
-- of this integer to values appropriate for their environment | ||||
-- in order to reduce the risk of denial-of-service attacks | ||||
mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | ||||
-- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11], | ||||
-- or HMAC [RFC2104, RFC2202]) | ||||
} | ||||
id-DHBasedMac OBJECT IDENTIFIER ::= { iso(1) member-body(2) | ||||
usa(840) nt(113533) nsn(7) algorithms(66) 30 } | ||||
DHBMParameter ::= SEQUENCE { | ||||
owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}}, | ||||
-- AlgId for a One-Way Function (SHA-1 recommended) | ||||
mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | ||||
-- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11], | ||||
-- or HMAC [RFC2104, RFC2202]) | ||||
} | ||||
PKIStatus ::= INTEGER { | ||||
accepted (0), | ||||
-- you got exactly what you asked for | ||||
grantedWithMods (1), | ||||
-- you got something like what you asked for; the | ||||
-- requester is responsible for ascertaining the differences | ||||
rejection (2), | ||||
-- you don't get it, more information elsewhere in the message | ||||
waiting (3), | ||||
-- the request body part has not yet been processed; expect to | ||||
-- hear more later (note: proper handling of this status | ||||
-- response MAY use the polling req/rep PKIMessages specified | ||||
-- in Section 5.3.22; alternatively, polling in the underlying | ||||
-- transport layer MAY have some utility in this regard) | ||||
revocationWarning (4), | ||||
-- this message contains a warning that a revocation is | ||||
-- imminent | ||||
revocationNotification (5), | ||||
-- notification that a revocation has occurred | ||||
keyUpdateWarning (6) | ||||
-- update already done for the oldCertId specified in | ||||
-- CertReqMsg | ||||
} | ||||
PKIFailureInfo ::= BIT STRING { | ||||
-- since we can fail in more than one way! | ||||
-- More codes may be added in the future if/when required. | ||||
badAlg (0), | ||||
-- unrecognized or unsupported Algorithm Identifier | ||||
badMessageCheck (1), | ||||
-- integrity check failed (e.g., signature did not verify) | ||||
badRequest (2), | ||||
-- transaction not permitted or supported | ||||
badTime (3), | ||||
-- messageTime was not sufficiently close to the system time, | ||||
-- as defined by local policy | ||||
badCertId (4), | ||||
-- no certificate could be found matching the provided criteria | ||||
badDataFormat (5), | ||||
-- the data submitted has the wrong format | ||||
wrongAuthority (6), | ||||
-- the authority indicated in the request is different from the | ||||
-- one creating the response token | ||||
incorrectData (7), | ||||
-- the requester's data is incorrect (for notary services) | ||||
missingTimeStamp (8), | ||||
-- when the timestamp is missing but should be there | ||||
-- (by policy) | ||||
badPOP (9), | ||||
-- the proof-of-possession failed | ||||
certRevoked (10), | ||||
-- the certificate has already been revoked | ||||
certConfirmed (11), | ||||
-- the certificate has already been confirmed | ||||
wrongIntegrity (12), | ||||
-- invalid integrity, password based instead of signature or | ||||
-- vice versa | ||||
badRecipientNonce (13), | ||||
-- invalid recipient nonce, either missing or wrong value | ||||
timeNotAvailable (14), | ||||
-- the TSA's time source is not available | ||||
unacceptedPolicy (15), | ||||
-- the requested TSA policy is not supported by the TSA | ||||
unacceptedExtension (16), | ||||
-- the requested extension is not supported by the TSA | ||||
addInfoNotAvailable (17), | ||||
-- the additional information requested could not be | ||||
-- understood or is not available | ||||
badSenderNonce (18), | ||||
-- invalid sender nonce, either missing or wrong size | ||||
badCertTemplate (19), | ||||
-- invalid cert. template or missing mandatory information | ||||
signerNotTrusted (20), | ||||
-- signer of the message unknown or not trusted | ||||
transactionIdInUse (21), | ||||
-- the transaction identifier is already in use | ||||
unsupportedVersion (22), | ||||
-- the version of the message is not supported | ||||
notAuthorized (23), | ||||
-- the sender was not authorized to make the preceding | ||||
-- request or perform the preceding action | ||||
systemUnavail (24), | ||||
-- the request cannot be handled due to system unavailability | ||||
systemFailure (25), | ||||
-- the request cannot be handled due to system failure | ||||
duplicateCertReq (26) | ||||
-- certificate cannot be issued because a duplicate | ||||
-- certificate already exists | ||||
} | ||||
PKIStatusInfo ::= SEQUENCE { | ||||
status PKIStatus, | ||||
statusString PKIFreeText OPTIONAL, | ||||
failInfo PKIFailureInfo OPTIONAL } | ||||
OOBCert ::= CMPCertificate | ||||
OOBCertHash ::= SEQUENCE { | ||||
hashAlg [0] AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} | ||||
OPTIONAL, | ||||
certId [1] CertId OPTIONAL, | ||||
hashVal BIT STRING | ||||
-- hashVal is calculated over the DER encoding of the | ||||
-- self-signed certificate with the identifier certID. | ||||
} | ||||
POPODecKeyChallContent ::= SEQUENCE OF Challenge | ||||
-- One Challenge per encryption key certification request (in the | ||||
-- same order as these requests appear in CertReqMessages). | ||||
Challenge ::= SEQUENCE { | ||||
owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} | ||||
OPTIONAL, | ||||
-- MUST be present in the first Challenge; MAY be omitted in | ||||
-- any subsequent Challenge in POPODecKeyChallContent (if | ||||
-- omitted, then the owf used in the immediately preceding | ||||
-- Challenge is to be used). | ||||
witness OCTET STRING, | ||||
-- the result of applying the one-way function (owf) to a | ||||
-- randomly-generated INTEGER, A. [Note that a different | ||||
-- INTEGER MUST be used for each Challenge.] | ||||
challenge OCTET STRING | ||||
-- the encryption (under the public key for which the cert. | ||||
-- request is being made) of Rand, where Rand is specified as | ||||
-- Rand ::= SEQUENCE { | ||||
-- int INTEGER, | ||||
-- - the randomly-generated INTEGER A (above) | ||||
-- sender GeneralName | ||||
-- - the sender's name (as included in PKIHeader) | ||||
-- } | ||||
} | ||||
POPODecKeyRespContent ::= SEQUENCE OF INTEGER | ||||
-- One INTEGER per encryption key certification request (in the | ||||
-- same order as these requests appear in CertReqMessages). The | ||||
-- retrieved INTEGER A (above) is returned to the sender of the | ||||
-- corresponding Challenge. | ||||
CertRepMessage ::= SEQUENCE { | ||||
caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | ||||
OPTIONAL, | ||||
response SEQUENCE OF CertResponse } | ||||
CertResponse ::= SEQUENCE { | ||||
certReqId INTEGER, | ||||
-- to match this response with the corresponding request (a value | ||||
-- of -1 is to be used if certReqId is not specified in the | ||||
-- corresponding request) | ||||
status PKIStatusInfo, | ||||
certifiedKeyPair CertifiedKeyPair OPTIONAL, | ||||
rspInfo OCTET STRING OPTIONAL | ||||
-- analogous to the id-regInfo-utf8Pairs string defined | ||||
-- for regInfo in CertReqMsg [RFC4211] | ||||
} | ||||
CertifiedKeyPair ::= SEQUENCE { | ||||
certOrEncCert CertOrEncCert, | ||||
privateKey [0] EncryptedKey OPTIONAL, | ||||
-- see [RFC4211] for comment on encoding | ||||
-- Changed from Encrypted Value to EncryptedKey as a CHOICE of | ||||
-- EncryptedValue and EnvelopedData due to the changes made in | ||||
-- this document | ||||
-- Using the choice EncryptedValue is bit-compatible to the | ||||
-- syntax without this change | ||||
publicationInfo [1] PKIPublicationInfo OPTIONAL } | ||||
CertOrEncCert ::= CHOICE { | ||||
certificate [0] CMPCertificate, | ||||
encryptedCert [1] EncryptedKey | ||||
-- Changed from Encrypted Value to EncryptedKey as a CHOICE of | ||||
-- EncryptedValue and EnvelopedData due to the changes made in | ||||
-- this document | ||||
-- Using the choice EncryptedValue is bit-compatible to the | ||||
-- syntax without this change | ||||
} | ||||
KeyRecRepContent ::= SEQUENCE { | ||||
status PKIStatusInfo, | ||||
newSigCert [0] CMPCertificate OPTIONAL, | ||||
caCerts [1] SEQUENCE SIZE (1..MAX) OF | ||||
CMPCertificate OPTIONAL, | ||||
keyPairHist [2] SEQUENCE SIZE (1..MAX) OF | ||||
CertifiedKeyPair OPTIONAL } | ||||
RevReqContent ::= SEQUENCE OF RevDetails | ||||
RevDetails ::= SEQUENCE { | ||||
certDetails CertTemplate, | ||||
-- allows requester to specify as much as they can about | ||||
-- the cert. for which revocation is requested | ||||
-- (e.g., for cases in which serialNumber is not available) | ||||
crlEntryDetails Extensions{{...}} OPTIONAL | ||||
-- requested crlEntryExtensions | ||||
} | ||||
RevRepContent ::= SEQUENCE { | ||||
status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo, | ||||
-- in same order as was sent in RevReqContent | ||||
revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId OPTIONAL, | ||||
-- IDs for which revocation was requested | ||||
-- (same order as status) | ||||
crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL | ||||
-- the resulting CRLs (there may be more than one) | ||||
} | ||||
CAKeyUpdAnnContent ::= SEQUENCE { | ||||
oldWithNew CMPCertificate, -- old pub signed with new priv | ||||
newWithOld CMPCertificate, -- new pub signed with old priv | ||||
newWithNew CMPCertificate -- new pub signed with new priv | ||||
} | ||||
CertAnnContent ::= CMPCertificate | ||||
RevAnnContent ::= SEQUENCE { | ||||
status PKIStatus, | ||||
certId CertId, | ||||
willBeRevokedAt GeneralizedTime, | ||||
badSinceDate GeneralizedTime, | ||||
crlDetails Extensions{{...}} OPTIONAL | ||||
-- extra CRL details (e.g., crl number, reason, location, etc.) | ||||
} | ||||
CRLAnnContent ::= SEQUENCE OF CertificateList | ||||
PKIConfirmContent ::= NULL | ||||
NestedMessageContent ::= PKIMessages | ||||
INFO-TYPE-AND-VALUE ::= TYPE-IDENTIFIER | ||||
InfoTypeAndValue ::= SEQUENCE { | ||||
infoType INFO-TYPE-AND-VALUE. | ||||
&id({SupportedInfoSet}), | ||||
infoValue INFO-TYPE-AND-VALUE. | ||||
&Type({SupportedInfoSet}{@infoType}) } | ||||
SupportedInfoSet INFO-TYPE-AND-VALUE ::= { ... } | ||||
-- Example InfoTypeAndValue contents include, but are not limited | ||||
-- to, the following (uncomment in this ASN.1 module and use as | ||||
-- appropriate for a given environment): | ||||
-- | ||||
-- id-it-caProtEncCert OBJECT IDENTIFIER ::= {id-it 1} | ||||
-- CAProtEncCertValue ::= CMPCertificate | ||||
-- id-it-signKeyPairTypes OBJECT IDENTIFIER ::= {id-it 2} | ||||
-- SignKeyPairTypesValue ::= SEQUENCE OF | ||||
-- AlgorithmIdentifier{{...}} | ||||
-- id-it-encKeyPairTypes OBJECT IDENTIFIER ::= {id-it 3} | ||||
-- EncKeyPairTypesValue ::= SEQUENCE OF | ||||
-- AlgorithmIdentifier{{...}} | ||||
-- id-it-preferredSymmAlg OBJECT IDENTIFIER ::= {id-it 4} | ||||
-- PreferredSymmAlgValue ::= AlgorithmIdentifier{{...}} | ||||
-- id-it-caKeyUpdateInfo OBJECT IDENTIFIER ::= {id-it 5} | ||||
-- CAKeyUpdateInfoValue ::= CAKeyUpdAnnContent | ||||
-- id-it-currentCRL OBJECT IDENTIFIER ::= {id-it 6} | ||||
-- CurrentCRLValue ::= CertificateList | ||||
-- id-it-unsupportedOIDs OBJECT IDENTIFIER ::= {id-it 7} | ||||
-- UnsupportedOIDsValue ::= SEQUENCE OF OBJECT IDENTIFIER | ||||
-- id-it-keyPairParamReq OBJECT IDENTIFIER ::= {id-it 10} | ||||
-- KeyPairParamReqValue ::= OBJECT IDENTIFIER | ||||
-- id-it-keyPairParamRep OBJECT IDENTIFIER ::= {id-it 11} | ||||
-- KeyPairParamRepValue ::= AlgorithmIdentifer | ||||
-- id-it-revPassphrase OBJECT IDENTIFIER ::= {id-it 12} | ||||
-- RevPassphraseValue ::= EncryptedKey | ||||
-- -- Changed from Encrypted Value to EncryptedKey as a CHOICE | ||||
-- -- of EncryptedValue and EnvelopedData due to the changes | ||||
-- -- made in this document | ||||
-- -- Using the choice EncryptedValue is bit-compatible to | ||||
-- -- the syntax without this change | ||||
-- id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13} | ||||
-- ImplicitConfirmValue ::= NULL | ||||
-- id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14} | ||||
-- ConfirmWaitTimeValue ::= GeneralizedTime | ||||
-- id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} | ||||
-- OrigPKIMessageValue ::= PKIMessages | ||||
-- id-it-suppLangTags OBJECT IDENTIFIER ::= {id-it 16} | ||||
-- SuppLangTagsValue ::= SEQUENCE OF UTF8String | ||||
-- | ||||
-- where | ||||
-- | ||||
-- id-pkix OBJECT IDENTIFIER ::= { | ||||
-- iso(1) identified-organization(3) | ||||
-- dod(6) internet(1) security(5) mechanisms(5) pkix(7)} | ||||
-- and | ||||
-- id-it OBJECT IDENTIFIER ::= {id-pkix 4} | ||||
-- | ||||
-- | ||||
-- This construct MAY also be used to define new PKIX Certificate | ||||
-- Management Protocol request and response messages, or general- | ||||
-- purpose (e.g., announcement) messages for future needs or for | ||||
-- specific environments. | ||||
GenMsgContent ::= SEQUENCE OF InfoTypeAndValue | ||||
-- May be sent by EE, RA, or CA (depending on message content). | ||||
-- The OPTIONAL infoValue parameter of InfoTypeAndValue will | ||||
-- typically be omitted for some of the examples given above. | ||||
-- The receiver is free to ignore any contained OBJECT IDs that it | ||||
-- does not recognize. If sent from EE to CA, the empty set | ||||
-- indicates that the CA may send | ||||
-- any/all information that it wishes. | ||||
GenRepContent ::= SEQUENCE OF InfoTypeAndValue | ||||
-- Receiver MAY ignore any contained OIDs that it does not | ||||
-- recognize. | ||||
ErrorMsgContent ::= SEQUENCE { | ||||
pKIStatusInfo PKIStatusInfo, | ||||
errorCode INTEGER OPTIONAL, | ||||
-- implementation-specific error codes | ||||
errorDetails PKIFreeText OPTIONAL | ||||
-- implementation-specific error details | ||||
} | ||||
CertConfirmContent ::= SEQUENCE OF CertStatus | ||||
CertStatus ::= SEQUENCE { | ||||
certHash OCTET STRING, | ||||
-- the hash of the certificate, using the same hash algorithm | ||||
-- as is used to create and verify the certificate signature | ||||
certReqId INTEGER, | ||||
-- to match this confirmation with the corresponding req/rep | ||||
statusInfo PKIStatusInfo OPTIONAL } | ||||
PollReqContent ::= SEQUENCE OF SEQUENCE { | ||||
certReqId INTEGER } | ||||
PollRepContent ::= SEQUENCE OF SEQUENCE { | ||||
certReqId INTEGER, | ||||
checkAfter INTEGER, -- time in seconds | ||||
reason PKIFreeText OPTIONAL } | ||||
-- | ||||
-- Extended Key Usage extension for PKI entities used in CMP | ||||
-- operations, added due to the changes made in this document | ||||
-- The EKUs for the CA and RA are reused from CMC as defined in | ||||
-- [RFC6402] | ||||
-- | ||||
-- id-kp-cmcCA OBJECT IDENTIFIER ::= { id-kp 27 } | ||||
-- id-kp-cmcRA OBJECT IDENTIFIER ::= { id-kp 28 } | ||||
id-kp-cmKGA OBJECT IDENTIFIER ::= { id-kp 32 } | ||||
END | ||||
Appendix B. History of changes | Appendix B. History of changes | |||
Note: This appendix will be deleted in the final version of the | ||||
document. | ||||
From version 02 -> 03: | ||||
o Added a ToDo on aligning with the CMP Algorithms draft that will | ||||
be set up as decided in IETF 108 | ||||
o Updated section on Encrypted Values in Section 2.4 to add the | ||||
AsymmetricKey Package structure to transport a newly generated | ||||
private key as decided in IETF 108 | ||||
o Updated the IANA Considerations of [RFC4210] in Section 2.9 | ||||
o Added the pre-registered OID in Section 2.9 and the ASN.1 module | ||||
o Added Section 3Section 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 | ||||
o Updated the IANA Considerations section | ||||
o 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] | ||||
o Minor changes in wording | ||||
From version 01 -> 02: | From version 01 -> 02: | |||
o Updated section on EKU OIDs in Section 2.2 as decided in IETF 107 | o Updated section on EKU OIDs in Section 2.2 as decided in IETF 107 | |||
o Changed from symmetric key-encryption to password-based key | o Changed from symmetric key-encryption to password-based key | |||
management technique in Section 2.4 as discussed with Russ and Jim | management technique in Section 2.4 as discussed with Russ and Jim | |||
on the mailing list | on the mailing list | |||
o Defined the attribute containing the key identifier for the | o Defined the attribute containing the key identifier for the | |||
revocation passphrase in Section 2.8 | revocation passphrase in Section 2.9 | |||
o Moved the change history to the Appendix | o Moved the change history to the Appendix | |||
From version 00 -> 01: | From version 00 -> 01: | |||
o Minor changes in wording | o Minor changes in wording | |||
From draft-brockhaus-lamps-cmp-updates-03 -> draft-ietf-lamps-cmp- | From draft-brockhaus-lamps-cmp-updates-03 -> draft-ietf-lamps-cmp- | |||
updates-00: | updates-00: | |||
o Changes required to reflect WG adoption | o Changes required to reflect WG adoption | |||
From version 02 -> 03: | From version 02 -> 03: | |||
o Added some clarification in Section 2.1 | o Added some clarification in Section 2.1 | |||
From version 01 -> 02: | From version 01 -> 02: | |||
End of changes. 58 change blocks. | ||||
99 lines changed or deleted | 1319 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |