<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.35 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-rfc4210bis-07" category="std" consensus="true" submissionType="IETF" xml:lang="en" obsoletes="4210" updates="5912" tocDepth="4" tocInclude="true" sortRefs="false" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.3 -->
  <front>
    <title abbrev="RFC4210bis">Internet X.509 Public Key Infrastructure -- Certificate Management Protocol (CMP)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc4210bis-07"/>
    <author initials="H." surname="Brockhaus" fullname="Hendrik Brockhaus">
      <organization abbrev="Siemens">Siemens</organization>
      <address>
        <postal>
          <street>Werner-von-Siemens-Strasse 1</street>
          <city>Munich</city>
          <code>80333</code>
          <country>Germany</country>
        </postal>
        <email>hendrik.brockhaus@siemens.com</email>
        <uri>https://www.siemens.com</uri>
      </address>
    </author>
    <author initials="D." surname="von Oheimb" fullname="David von Oheimb">
      <organization abbrev="Siemens">Siemens</organization>
      <address>
        <postal>
          <street>Werner-von-Siemens-Strasse 1</street>
          <city>Munich</city>
          <code>80333</code>
          <country>Germany</country>
        </postal>
        <email>david.von.oheimb@siemens.com</email>
        <uri>https://www.siemens.com</uri>
      </address>
    </author>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust</organization>
      <address>
        <postal>
          <street>1187 Park Place</street>
          <city>Minneapolis</city>
          <region>MN</region>
          <code>55379</code>
          <country>United States of America</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
        <uri>https://www.entrust.com</uri>
      </address>
    </author>
    <author initials="J." surname="Gray" fullname="John Gray">
      <organization abbrev="Entrust">Entrust</organization>
      <address>
        <postal>
          <street>1187 Park Place</street>
          <city>Minneapolis</city>
          <region>MN</region>
          <code>55379</code>
          <country>United States of America</country>
        </postal>
        <email>john.gray@entrust.com</email>
        <uri>https://www.entrust.com</uri>
      </address>
    </author>
    <date year="2023"/>
    <workgroup>LAMPS Working Group</workgroup>
    <abstract>
      <?line 160?>

<t>This document describes the Internet X.509 Public Key Infrastructure (PKI)
Certificate Management Protocol (CMP).  Protocol messages are defined for
X.509v3 certificate creation and management. CMP provides interactions between
client systems and PKI components such as a Registration Authority (RA) and
a Certification Authority (CA).</t>
      <t>This document obsoletes RFC 4210 by including the updates specified by CMP
Updates [RFCAAAA] Section 2 and Appendix A.2 maintaining backward compatibility
with CMP version 2 wherever possible and obsoletes both documents.  Updates
to CMP version 2 are: improving crypto agility, extending the polling mechanism,
adding new general message types, and adding extended key usages to identify
special CMP server authorizations.  Introducing version 3 to be used only
for changes to the ASN.1 syntax, which are: support of EnvelopedData instead
of EncryptedValue and hashAlg for indicating a hash AlgorithmIdentifier in
certConf messages.</t>
      <t>In addition to the changes specified in CMP Updates [RFCAAAA] this document
adds support for management of KEM certificates.</t>
      <t>Appendix F of this document updates the 2002 ASN.1 module in RFC 5912 Section 9.</t>
    </abstract>
  </front>
  <middle>
    <?line 184?>

<section anchor="sect-1">
      <name>Introduction</name>
      <t>[RFC Editor: please delete:</t>
      <t>During IESG telechat the CMP Updates document was approved on condition that
LAMPS provides a RFC4210bis document.  Version -00 of this document shall
be identical to RFC 4210 and version -01 incorporates the changes specified
in CMP Updates Section 2 and Appendix A.2.</t>
      <t>A history of changes is available in <xref target="sect-g"/> of this document.</t>
      <t>The authors of this document wish to thank Carlisle Adams, Stephen Farrell,
Tomi Kause, and Tero Mononen, the original authors of RFC4210, for their
work and invite them, next to further volunteers, to join the -bis activity
as co-authors.</t>
      <t>]</t>
      <t>[RFC Editor:</t>
      <t>Please perform the following substitution.</t>
      <ul spacing="normal">
        <li>RFCXXXX --&gt; the assigned numerical RFC value for this draft</li>
        <li>
          <t>RFCAAAA --&gt; the assigned numerical RFC value for <xref target="I-D.ietf-lamps-cmp-updates"/>  </t>
          <t>
Add this RFC number to the list of obsoleted RFCs.</t>
        </li>
        <li>RFCBBBB --&gt; the assigned numerical RFC value for <xref target="I-D.ietf-lamps-lightweight-cmp-profile"/></li>
        <li>RFCCCCC --&gt; the assigned numerical RFC value for <xref target="I-D.ietf-lamps-cmp-algorithms"/></li>
        <li>RFCDDDD --&gt; the assigned numerical RFC value for <xref target="I-D.ietf-lamps-rfc6712bis"/></li>
        <li>RFCEEEE --&gt; the assigned numerical RFC value for <xref target="I-D.ietf-ace-cmpv2-coap-transport"/></li>
        <li>RFCFFFF --&gt; the assigned numerical RFC value for <xref target="I-D.ietf-lamps-cms-kemri"/>
]</li>
      </ul>
      <t>This document describes the Internet X.509 Public Key Infrastructure
(PKI) Certificate Management Protocol (CMP).  Protocol messages are
defined for certificate creation and management.  The term
"certificate" in this document refers to an X.509v3 Certificate as
defined in <xref target="ITU.X509.2000"/>.</t>
      <section anchor="sect-1.1">
        <name>Changes Since RFC 2510</name>
        <t><xref target="RFC4210">RFC 4210</xref> differs from <xref target="RFC2510">RFC 2510</xref> in the following areas:</t>
        <ul spacing="normal">
          <li>The PKI management message profile section is split to two
appendices: the required profile and the optional profile.  Some
of the formerly mandatory functionality is moved to the optional
profile.</li>
          <li>The message confirmation mechanism has changed substantially.</li>
          <li>A new polling mechanism is introduced, deprecating the old polling
method at the CMP transport level.</li>
          <li>The CMP transport protocol issues are handled in a separate
document <xref target="I-D.ietf-lamps-rfc6712bis"/>, thus the Transports section is removed.</li>
          <li>A new implicit confirmation method is introduced to reduce the
number of protocol messages exchanged in a transaction.</li>
          <li>The new specification contains some less prominent protocol
enhancements and improved explanatory text on several issues.</li>
        </ul>
      </section>
      <section anchor="sect-1.2">
        <name>Changes Since RFC 4210</name>
        <t>CMP Updates [RFCAAAA] and CMP Algorithms [RFCCCCC] updated <xref target="RFC4210">RFC 4210</xref>, supporting the PKI management operations specified in the Lightweight CMP
Profile [RFCBBBB], in the following areas:</t>
        <ul spacing="normal">
          <li>Add new extended key usages for various CMP server types, e.g., registration
authority and certification authority, to express the authorization of the
certificate holder to act as the indicated type of PKI management entity.</li>
          <li>Extend the description of multiple protection to cover additional use cases,
e.g., batch processing of messages.</li>
          <li>
            <t>Use the type EnvelopedData as the preferred choice next to EncryptedValue
to better support crypto agility in CMP.  </t>
            <t>
For reasons of completeness and consistency the type EncryptedValue has been
exchanged in all occurrences.  This includes the protection of centrally
generated private keys, encryption of certificates, and protection of revocation
passphrases. To properly differentiate the support of EnvelopedData instead
of EncryptedValue, the CMP version 3 is introduced in case a transaction
is supposed to use EnvelopedData.  </t>
            <t>
Note: According to <xref target="RFC4211">RFC 4211</xref> Section 2.1. point 9 the use of the EncryptedValue structure has been deprecated
in favor of the EnvelopedData structure. <xref target="RFC4211">RFC 4211</xref> offers the EncryptedKey structure, a choice of EncryptedValue and EnvelopedData
for migration to EnvelopedData.</t>
          </li>
          <li>Offer an optional hashAlg field in CertStatus supporting case that a certificate
needs to be confirmed that has a signature algorithm that does not indicate
a specific hash algorithm to use for computing the certHash.</li>
          <li>Add new general message types to request CA certificates, a root CA update,
a certificate request template, or CRL updates.</li>
          <li>Extend the use of polling to p10cr, certConf, rr, genm, and error messages.</li>
          <li>Incorporated the request message behavioral clarifications from former Appendix
C to <xref target="sect-5"/>. The definition of altCertTemplate was incorporated into <xref target="sect-5.2.1"/>, the clarification on POPOSigningKey was incorporated into <xref target="sect-5.2.8"/>, and the clarification on POPOPrivKey was incorporated into <xref target="sect-5.2.8.1"/>.</li>
          <li>Delete the mandatory algorithm profile in <xref target="sect-c.2"/> and refer instead to CMP Algorithms Section 7 [RFCCCCC].</li>
        </ul>
      </section>
      <section anchor="sect-1.3">
        <name>Changes Made by This Document</name>
        <t>This document obsoletes <xref target="RFC4210">RFC 4210</xref>. It includes the changes specified by CMP Updates [RFCAAAA] Section 2 and <xref target="sect-c.2"/> as described in <xref target="sect-1.2"/>.</t>
      </section>
    </section>
    <section anchor="sect-2">
      <name>Requirements</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="sect-3">
      <name>PKI Management Overview</name>
      <t>The PKI must be structured to be consistent with the types of
individuals who must administer it.  Providing such administrators
with unbounded choices not only complicates the software required,
but also increases the chances that a subtle mistake by an
administrator or software developer will result in broader
compromise.  Similarly, restricting administrators with cumbersome
mechanisms will cause them not to use the PKI.</t>
      <t>Management protocols are <bcp14>REQUIRED</bcp14> to support on-line interactions
between Public Key Infrastructure (PKI) components.  For example, a
management protocol might be used between a Certification Authority
(CA) and a client system with which a key pair is associated, or
between two CAs that issue cross-certificates for each other.</t>
      <section anchor="sect-3.1">
        <name>PKI Management Model</name>
        <t>Before specifying particular message formats and procedures, we first
define the entities involved in PKI management and their interactions
(in terms of the PKI management functions required).  We then group
these functions in order to accommodate different identifiable types
of end entities.</t>
        <section anchor="sect-3.1.1">
          <name>Definitions of PKI Entities</name>
          <t>The entities involved in PKI management include the end entity (i.e.,
the entity to whom the certificate is issued) and the certification
authority (i.e., the entity that issues the certificate).  A
registration authority <bcp14>MAY</bcp14> also be involved in PKI management.</t>
          <section anchor="sect-3.1.1.1">
            <name>Subjects and End Entities</name>
            <t>The term "subject" is used here to refer to the entity to whom the
certificate is issued, typically named in the subject or
subjectAltName field of a certificate.  When we wish to distinguish
the tools and/or software used by the subject (e.g., a local
certificate management module), we will use the term "subject equipment".
In general, the term "end entity" (EE), rather than
"subject", is preferred in order to avoid confusion with the field
name.  It is important to note that the end entities here will
include not only human users of applications, but also applications
themselves (e.g., for IP security) or devices (e.g., routers or industrial
control systems).  This factor influences the
protocols that the PKI management operations use; for example,
application software is far more likely to know exactly which
certificate extensions are required than are human users.  PKI
management entities are also end entities in the sense that they are
sometimes named in the subject or subjectAltName field of a
certificate or cross-certificate.  Where appropriate, the term "end entity"
will be used to refer to end entities who are not PKI
management entities.</t>
            <t>All end entities require secure local access to some information --
at a minimum, their own name and private key, the name of a CA that
is directly trusted by this entity, and that CA's public key (or a
fingerprint of the public key where a self-certified version is
available elsewhere).  Implementations <bcp14>MAY</bcp14> use secure local storage
for more than this minimum (e.g., the end entity's own certificates or
application-specific information).  The form of storage will also
vary -- from files to tamper-resistant cryptographic tokens.  The
information stored in such local, trusted storage is referred to here
as the end entity's Personal Security Environment (PSE).</t>
            <t>Though PSE formats are beyond the scope of this document (they are
very dependent on equipment, et cetera), a generic interchange format
for PSEs is defined here: a certification response message <bcp14>MAY</bcp14> be
used.</t>
          </section>
          <section anchor="sect-3.1.1.2">
            <name>Certification Authority</name>
            <t>The certification authority (CA) may or may not actually be a real
"third party" from the end entity's point of view.  Quite often, the
CA will actually belong to the same organization as the end entities
it supports.</t>
            <t>Again, we use the term "CA" to refer to the entity named in the
issuer field of a certificate.  When it is necessary to distinguish
the software or hardware tools used by the CA, we use the term "CA equipment".</t>
            <t>The CA equipment will often include both an "off-line" component and
an "on-line" component, with the CA private key only available to the
"off-line" component.  This is, however, a matter for implementers
(though it is also relevant as a policy issue).</t>
            <t>We use the term "root CA" to indicate a CA that is directly trusted
by an end entity; that is, securely acquiring the value of a root CA
public key requires some out-of-band step(s).  This term is not meant
to imply that a root CA is necessarily at the top of any hierarchy,
simply that the CA in question is trusted directly.</t>
            <t>A "subordinate CA" is one that is not a root CA for the end entity in
question.  Often, a subordinate CA will not be a root CA for any
entity, but this is not mandatory.</t>
          </section>
          <section anchor="sect-3.1.1.3">
            <name>Registration Authority</name>
            <t>In addition to end-entities and CAs, many environments call for the
existence of a Registration Authority (RA) separate from the
Certification Authority.  The functions that the registration
authority may carry out will vary from case to case but <bcp14>MAY</bcp14> include
personal authentication, token distribution, checking certificate requests
and authentication of their origin, revocation reporting,
name assignment, key generation, archival of key pairs, et cetera.</t>
            <t>This document views the RA as an <bcp14>OPTIONAL</bcp14> component: when it is not
present, the CA is assumed to be able to carry out the RA's functions
so that the PKI management protocols are the same from the end-entity's
point of view.</t>
            <t>Again, we distinguish, where necessary, between the RA and the tools
used (the "RA equipment").</t>
            <t>Note that an RA is itself an end entity.  We further assume that all
RAs are in fact certified end entities and that RAs have private keys
that are usable for signing.  How a particular CA equipment
identifies some end entities as RAs is an implementation issue (i.e.,
this document specifies no special RA certification operation).  We
do not mandate that the RA is certified by the CA with which it is
interacting at the moment (so one RA may work with more than one CA
whilst only being certified once).</t>
            <t>In some circumstances, end entities will communicate directly with a
CA even where an RA is present.  For example, for initial
registration and/or certification, the end entity may use its RA, but
communicate directly with the CA in order to refresh its certificate.</t>
          </section>
          <section anchor="sect-3.1.1.4">
            <name>Key Generation Authority</name>
            <t>A Key Generation Authority (KGA) is a PKI management entity generating key
pairs on behalf of an end entity.  Typically, such central key generation
is performed by the CA itself.  The KGA knows the private key that it generated
for the end entity.  The CA may delegate its authorization for generating
key pairs on behalf of an end entity to another PKI management entity, such
as an RA or a separate entity (see Section 4.5 for respective extended key
usages).</t>
            <t>Note: When doing central generation of key pairs, implementers should consider
the implications of server-side retention on the overall security of the
system; in some case retention is good, for example for escrow reasons, but
in other cases the server should clear its copy after delivery to the end
entity.</t>
          </section>
        </section>
        <section anchor="sect-3.1.2">
          <name>PKI Management Requirements</name>
          <t>The protocols given here meet the following requirements on PKI
management</t>
          <ol spacing="normal" type="1"><li>PKI management must conform to the ISO/IEC 9594-8/ITU-T X.509
  standards.</li>
            <li>It must be possible to regularly update any key pair without
  affecting any other key pair.</li>
            <li>The use of confidentiality in PKI management protocols must be
  kept to a minimum in order to ease acceptance in environments
  where strong confidentiality might cause regulatory problems.</li>
            <li>PKI management protocols must allow the use of different
  industry-standard cryptographic algorithms, see CMP Algorithms [RFCCCCC].
  This means that any given
  CA, RA, or end entity may, in principle, use whichever
  algorithms suit it for its own key pair(s).</li>
            <li>PKI management protocols must not preclude the generation of key
  pairs by the end entity concerned, by a KGA, by an RA, or by a CA.  Key
  generation may also occur elsewhere, but for the purposes of PKI
  management we can regard key generation as occurring wherever
  the key is first present at an end entity, RA, or CA.</li>
            <li>PKI management protocols must support the publication of
  certificates by the end entity concerned, by an RA, or by a CA.
  Different implementations and different environments may choose
  any of the above approaches.</li>
            <li>PKI management protocols must support the production of
  Certificate Revocation Lists (CRLs) by allowing certified end
  entities to make requests for the revocation of certificates.
  This must be done in such a way that the denial-of-service
  attacks, which are possible, are not made simpler.</li>
            <li>PKI management protocols must be usable over a variety of
  "transport" mechanisms, specifically including mail, HTTP,
  TCP/IP, CoAP, and off-line file-based.</li>
            <li>Final authority for certification creation rests with the CA.
  No RA or end entity equipment can assume that any certificate
  issued by a CA will contain what was requested; a CA may alter
  certificate field values or may add, delete, or alter extensions
  according to its operating policy.  In other words, all PKI
  entities (end-entities, RAs, and CAs) must be capable of
  handling responses to requests for certificates in which the
  actual certificate issued is different from that requested (for
  example, a CA may shorten the validity period requested).  Note
  that policy may dictate that the CA must not publish or
  otherwise distribute the certificate until the requesting entity
  has reviewed and accepted the newly-created certificate or the indirect POP is completed
  (typically through use of the certConf message). In case of publication of the certificate or a precertificate in a Certificate Transparency log <xref target="RFC9162"/>, the certificate must be revoked if it was not accepted or the indirect POP could not be completed.</li>
            <li>A graceful, scheduled change-over from one non-compromised CA
  key pair to the next (CA key update) must be supported (note
  that if the CA key is compromised, re-initialization must be
  performed for all entities in the domain of that CA).  An end
  entity whose PSE contains the new CA public key (following a CA
  key update) must also be able to verify certificates verifiable
  using the old public key.  End entities who directly trust the
  old CA key pair must also be able to verify certificates signed
  using the new CA private key (required for situations where the
  old CA public key is "hardwired" into the end entity's
  cryptographic equipment).</li>
            <li>The functions of an RA may, in some implementations or
  environments, be carried out by the CA itself.  The protocols
  must be designed so that end entities will use the same protocol
  regardless of whether the communication is with an RA or CA.
  Naturally, the end entity must use the correct RA or CA public
  key to protect the communication.</li>
            <li>Where an end entity requests a certificate containing a given
  public key value, the end entity must be ready to demonstrate
  possession of the corresponding private key value.  This may be
  accomplished in various ways, depending on the type of
  certification request.  See <xref target="sect-4.3"/> for details of the in-
  band methods defined for the PKIX-CMP (i.e., Certificate
  Management Protocol) messages.</li>
          </ol>
        </section>
        <section anchor="sect-3.1.3">
          <name>PKI Management Operations</name>
          <t>The following diagram shows the relationship between the entities
defined above in terms of the PKI management operations.  The letters
in the diagram indicate "protocols" in the sense that a defined set
of PKI management messages can be sent along each of the lettered
lines.</t>
          <figure anchor="ure-pki-entities">
            <name>PKI Entities</name>
            <artwork align="left"><![CDATA[
  +---+     cert. publish        +------------+      j
  |   |  <---------------------  | End Entity | <-------
  | C |             g            +------------+      "out-of-band"
  | e |                            | ^                loading
  | r |                            | |      initial
  | t |                          a | | b     registration/
  |   |                            | |       certification
  | / |                            | |      key pair recovery
  |   |                            | |      key pair update
  | C |                            | |      certificate update
  | R |  PKI "USERS"               V |      revocation request
  | L | -------------------+-+-----+-+------+-+-------------------
  |   |  PKI MANAGEMENT    | ^              | ^
  |   |    ENTITIES      a | | b          a | | b
  | R |                    V |              | |
  | e |             g   +------+    d       | |
  | p |   <------------ | RA   | <-----+    | |
  | o |      cert.      |      | ----+ |    | |
  | s |       publish   +------+   c | |    | |
  | i |                              | |    | |
  | t |                              V |    V |
  | o |          g                 +------------+   i
  | r |   <------------------------|     CA     |------->
  | y |          h                 +------------+  "out-of-band"
  |   |      cert. publish              | ^         publication
  |   |      CRL publish                | |
  +---+                                 | |    cross-certification
                                      e | | f  cross-certificate
                                        | |       update
                                        | |
                                        V |
                                      +------+
                                      | CA-2 |
                                      +------+
]]></artwork>
          </figure>
          <t>At a high level, the set of operations for which management
messages are defined can be grouped as follows.</t>
          <ol spacing="normal" type="1"><li>CA establishment: When establishing a new CA, certain steps are
  required (e.g., production of initial CRLs, export of CA public
  key).</li>
            <li>End entity initialization: this includes importing a root CA
  public key and requesting information about the options supported
  by a PKI management entity.</li>
            <li>
              <t>Certification: various operations result in the creation of new
  certificates:  </t>
              <ol spacing="normal" type="1"><li>initial registration/certification: This is the process
   whereby an end entity first makes itself known to a CA or RA,
   prior to the CA issuing a certificate or certificates for
   that end entity.  The end result of this process (when it is
   successful) is that a CA issues a certificate for an end
   entity's public key, and returns that certificate to the end
   entity and/or posts that certificate in a public repository.
   This process may, and typically will, involve multiple
   "steps", possibly including an initialization of the end
   entity's equipment.  For example, the end entity's equipment
   must be securely initialized with the public key of a CA, to
   be used in validating certificate paths.  Furthermore, an end
   entity typically needs to be initialized with its own key
   pair(s).</li>
                <li>key pair update: Every key pair needs to be updated regularly
   (i.e., replaced with a new key pair), and a new certificate
   needs to be issued.</li>
                <li>certificate update: As certificates expire, they may be
   "refreshed" if nothing relevant in the environment has
   changed.</li>
                <li>CA key pair update: As with end entities, CA key pairs need
   to be updated regularly; however, different mechanisms are
   required.</li>
                <li>
                  <t>cross-certification request: One CA requests issuance of a
   cross-certificate from another CA.  For the purposes of this
   standard, the following terms are defined.  A "cross-certificate" is a certificate
   in which the subject CA and the
   issuer CA are distinct and SubjectPublicKeyInfo contains a
   verification key (i.e., the certificate has been issued for
   the subject CA's signing key pair).  When it is necessary to
   distinguish more finely, the following terms may be used: a
   cross-certificate is called an "inter-domain cross-certificate" if the subject
   and issuer CAs belong to
   different administrative domains; it is called an "intra-domain cross-certificate"
   otherwise.      </t>
                  <ol spacing="normal" type="1"><li>Note 1.  The above definition of "cross-certificate"
   aligns with the defined term "CA-certificate" in X.509.
   Note that this term is not to be confused with the X.500
   "cACertificate" attribute type, which is unrelated.</li>
                    <li>Note 2.  In many environments, the term "cross-certificate", unless further
   qualified, will be
   understood to be synonymous with "inter-domain cross-certificate" as defined
   above.</li>
                    <li>Note 3.  Issuance of cross-certificates may be, but is
   not necessarily, mutual; that is, two CAs may issue
   cross-certificates for each other.</li>
                  </ol>
                </li>
                <li>cross-certificate update: Similar to a normal certificate
   update, but involving a cross-certificate.</li>
              </ol>
            </li>
            <li>
              <t>Certificate/CRL discovery operations: some PKI management
  operations result in the publication of certificates or CRLs:  </t>
              <ol spacing="normal" type="1"><li>certificate publication: Having gone to the trouble of
   producing a certificate, some means for publishing it is
   needed.  The "means" defined in PKIX <bcp14>MAY</bcp14> involve the messages
   specified in Sections <xref format="counter" target="sect-5.3.13"/> to <xref format="counter" target="sect-5.3.16"/>, or <bcp14>MAY</bcp14> involve other
   methods (LDAP, for example) as described in <xref target="RFC4510"/>, <xref target="RFC4510"/>
   (the "Operational Protocols" documents of the PKIX
   series of specifications).</li>
                <li>CRL publication: As for certificate publication.</li>
              </ol>
            </li>
            <li>
              <t>Recovery operations: some PKI management operations are used when
  an end entity has "lost" its PSE:  </t>
              <ol spacing="normal" type="1"><li>key pair recovery: As an option, user client key materials
   (e.g., a user's private key used for decryption purposes) <bcp14>MAY</bcp14>
   be backed up by a CA, an RA, or a key backup system
   associated with a CA or RA.  If an entity needs to recover
   these backed up key materials (e.g., as a result of a
   forgotten password or a lost key chain file), a protocol
   exchange may be needed to support such recovery.</li>
              </ol>
            </li>
            <li>
              <t>Revocation operations: some PKI management operations result in the creation
  of new CRL entries and/or new CRLs:  </t>
              <ol spacing="normal" type="1"><li>revocation request: An authorized person advises a CA of an
   abnormal situation requiring certificate revocation.</li>
              </ol>
            </li>
            <li>PSE operations: whilst the definition of PSE operations (e.g.,
  moving a PSE, changing a PIN, etc.) are beyond the scope of this
  specification, we do define a PKIMessage (CertRepMessage) that
  can form the basis of such operations.</li>
          </ol>
          <t>Note that on-line protocols are not the only way of implementing the
above operations.  For all operations, there are off-line methods of
achieving the same result, and this specification does not mandate
use of on-line protocols.  For example, when hardware tokens are
used, many of the operations <bcp14>MAY</bcp14> be achieved as part of the physical
token delivery.</t>
          <t>Later sections define a set of standard messages supporting the above
operations.  Transport protocols for conveying these exchanges in
different environments (e.g., off-line: file-based, on-line: mail,
HTTP [RFCDDDD], and CoAP [RFCEEEE]) are
beyond the scope of this document and are specified separately.</t>
        </section>
      </section>
    </section>
    <section anchor="sect-4">
      <name>Assumptions and Restrictions</name>
      <section anchor="sect-4.1">
        <name>End Entity Initialization</name>
        <t>The first step for an end entity in dealing with PKI management
entities is to request information about the PKI functions supported
and to securely acquire a copy of the relevant root CA public key(s).</t>
      </section>
      <section anchor="sect-4.2">
        <name>Initial Registration/Certification</name>
        <t>There are many schemes that can be used to achieve initial
registration and certification of end entities.  No one method is
suitable for all situations due to the range of policies that a CA
may implement and the variation in the types of end entity which can
occur.</t>
        <t>However, we can classify the initial registration/certification
schemes that are supported by this specification.  Note that the word
"initial", above, is crucial: we are dealing with the situation where
the end entity in question has had no previous contact with the PKI.
Where the end entity already possesses certified keys, then some
simplifications/alternatives are possible.</t>
        <t>Having classified the schemes that are supported by this
specification we can then specify some as mandatory and some as
optional.  The goal is that the mandatory schemes cover a sufficient
number of the cases that will arise in real use, whilst the optional
schemes are available for special cases that arise less frequently.
In this way, we achieve a balance between flexibility and ease of
implementation.</t>
        <t>We will now describe the classification of initial
registration/certification schemes.</t>
        <section anchor="sect-4.2.1">
          <name>Criteria Used</name>
          <section anchor="sect-4.2.1.1">
            <name>Initiation of Registration/Certification</name>
            <t>In terms of the PKI messages that are produced, we can regard the
initiation of the initial registration/certification exchanges as
occurring wherever the first PKI message relating to the end entity
is produced.  Note that the real-world initiation of the
registration/certification procedure may occur elsewhere (e.g., a
personnel department may telephone an RA operator).</t>
            <t>The possible locations are at the end entity, an RA, or a CA.</t>
          </section>
          <section anchor="sect-4.2.1.2">
            <name>End Entity Message Origin Authentication</name>
            <t>The on-line messages produced by the end entity that requires a
certificate may be authenticated or not.  The requirement here is to
authenticate the origin of any messages from the end entity to the
PKI (CA/RA).</t>
            <t>In this specification, such authentication is achieved by two different means:</t>
            <ul spacing="normal">
              <li>symmetric: The PKI (CA/RA) issuing the end entity with a secret value (initial
authentication key) and reference value (used to identify the secret value)
via some out-of-band means.  The initial authentication key can then be used
to protect relevant PKI messages.</li>
              <li>asymmetric: Using a private key and certificate issued by another PKI trusted
for initial authentication, e.g., an IDevID <xref target="IEEE.802.1AR-2018">IEEE 802.1AR</xref>.
The trust establishment in this external PKI is out of scope of this document.</li>
            </ul>
            <t>Thus, we can classify the initial registration/certification scheme
according to whether or not the on-line end entity -&gt; PKI messages
are authenticated or not.</t>
            <t>Note 1: We do not discuss the authentication of the PKI -&gt; end entity
messages here, as this is always <bcp14>REQUIRED</bcp14>.  In any case, it can be
achieved simply once the root-CA public key has been installed at the
end entity's equipment or it can be based on the initial
authentication key.</t>
            <t>Note 2: An initial registration/certification procedure can be secure
where the messages from the end entity are authenticated via some
out-of-band means (e.g., a subsequent visit).</t>
          </section>
          <section anchor="sect-4.2.1.3">
            <name>Location of Key Generation</name>
            <t>In this specification, "key generation" is regarded as occurring
wherever either the public or private component of a key pair first
occurs in a PKIMessage.  Note that this does not preclude a
centralized key generation service by a KGA; the actual key pair <bcp14>MAY</bcp14> have
been
generated elsewhere and transported to the end entity, RA, or CA
using a (proprietary or standardized) key generation request/response
protocol (outside the scope of this specification).</t>
            <t>Thus, there are three possibilities for the location of "key generation":
the end entity, an RA, or a CA.</t>
          </section>
          <section anchor="sect-4.2.1.4">
            <name>Confirmation of Successful Certification</name>
            <t>Following the creation of an initial certificate for an end entity,
additional assurance can be gained by having the end entity
explicitly confirm successful receipt of the message containing (or
indicating the creation of) the certificate.  Naturally, this
confirmation message must be protected (based on the initial
symmetric or asymmetric authentication key or other means).</t>
            <t>This gives two further possibilities: confirmed or not.</t>
          </section>
        </section>
        <section anchor="sect-4.2.2">
          <name>Mandatory Schemes</name>
          <t>The criteria above allow for a large number of initial
registration/certification schemes.  This specification mandates that
conforming CA equipment, RA equipment, and EE equipment <bcp14>MUST</bcp14> support
the second scheme listed below (<xref target="sect-4.2.2.2"/>).  Any entity <bcp14>MAY</bcp14>
additionally support other schemes, if desired.</t>
          <section anchor="sect-4.2.2.1">
            <name>Centralized Scheme</name>
            <t>In terms of the classification above, this scheme is, in some ways,
the simplest possible, where:</t>
            <ul spacing="normal">
              <li>initiation occurs at the certifying CA;</li>
              <li>no on-line message authentication is required;</li>
              <li>"key generation" occurs at the certifying CA (see <xref target="sect-4.2.1.3"/>);</li>
              <li>no confirmation message is required.</li>
            </ul>
            <t>In terms of message flow, this scheme means that the only message
required is sent from the CA to the end entity.  The message must
contain the entire PSE for the end entity.  Some out-of-band means
must be provided to allow the end entity to authenticate the message
received and to decrypt any encrypted values.</t>
          </section>
          <section anchor="sect-4.2.2.2">
            <name>Basic Authenticated Scheme</name>
            <t>In terms of the classification above, this scheme is where:</t>
            <ul spacing="normal">
              <li>initiation occurs at the end entity;</li>
              <li>message authentication is <bcp14>REQUIRED</bcp14>;</li>
              <li>"key generation" occurs at the end entity (see <xref target="sect-4.2.1.3"/>);</li>
              <li>a confirmation message is <bcp14>REQUIRED</bcp14>.</li>
            </ul>
            <t>Note: An Initial Authentication Key (IAK) can be either a symmetric key or
an asymmetric private key with a certificate issued by another PKI trusted
for this purpose.  The establishment of such trust is out of scope of this
document.</t>
            <artwork><![CDATA[
In terms of message flow, the basic authenticated scheme is as
follows:

   End entity                                          RA/CA
  ==========                                      =============
       out-of-band distribution of Initial Authentication
       Key (IAK) and reference value (RA/CA -> EE)
  Key generation
  Creation of certification request
  Protect request with IAK
                -->>-- certification request -->>--
                                                 verify request
                                                 process request
                                                 create response
                --<<-- certification response --<<--
  handle response
  create confirmation
                -->>-- cert conf message      -->>--
                                                 verify confirmation
                                                 create response
                --<<-- conf ack (optional)    --<<--
  handle response
]]></artwork>
            <t>(Where verification of the cert confirmation message fails, the RA/CA
<bcp14>MUST</bcp14> revoke the newly issued certificate if it has been published or
otherwise made available.)</t>
          </section>
        </section>
      </section>
      <section anchor="sect-4.3">
        <name>Proof-of-Possession (POP) of Private Key</name>
        <t>&lt; ToDo: To be aligned with <xref target="sect-5.2.8"/> if needed. &gt;</t>
        <t>Proof-of-possession (POP) is where a PKI management entity (CA/RA) challenges
an end entity to prove that it has access to the private key
corresponding to a given public key. The question of whether, and in
what circumstances, POPs add value to a PKI is a debate as old as PKI
itself! See <xref target="sect-8.POP"/> for a further discussion on the necessecity
of Proof-Of-Possession in PKI.</t>
        <t>The PKI management operations specified here make it possible
for an end entity to prove to a CA/RA that it has possession of (i.e., is able
to use) the private key corresponding to the public key for which a
certificate is requested.  A given CA/RA is free to choose how to
enforce POP (e.g., out-of-band procedural means versus PKIX-CMP
in-band messages) in its certification exchanges (i.e., this may be a
policy issue).  However, it is <bcp14>REQUIRED</bcp14> that CAs/RAs <bcp14>MUST</bcp14> enforce POP
by some means because there are currently many non-PKIX operational
protocols in use (various electronic mail protocols are one example)
that do not explicitly check the binding between the end entity and
the private key.  Until operational protocols that do verify the
binding (for signature, encryption, and key agreement key pairs)
exist, and are ubiquitous, this binding can only be assumed to have
been verified by the CA/RA.  Therefore, if the binding is not
verified by the CA/RA, certificates in the Internet Public-Key
Infrastructure end up being somewhat less meaningful.</t>
        <t>POP is accomplished in different ways depending upon the type of key
for which a certificate is requested.  If a key can be used for
multiple purposes (e.g., an RSA key) then any appropriate method <bcp14>MAY</bcp14>
be used (e.g., a key that may be used for signing, as well as other
purposes, <bcp14>SHOULD NOT</bcp14> be sent to the CA/RA in order to prove
possession).</t>
        <t>This specification explicitly allows for cases where an end entity
supplies the relevant proof to an RA and the RA subsequently attests
to the CA that the required proof has been received (and validated!).
For example, an end entity wishing to have a signing key certified
could send the appropriate signature to the RA, which then simply
notifies the relevant CA that the end entity has supplied the
required proof.  Of course, such a situation may be disallowed by
some policies (e.g., CAs may be the only entities permitted to verify
POP during certification).</t>
        <section anchor="sect-4.3.1">
          <name>Signature Keys</name>
          <t>For signature keys, the end entity can sign a value to prove
possession of the private key.</t>
        </section>
        <section anchor="sect-4.3.2">
          <name>Encryption Keys</name>
          <t>For encryption keys, the end entity can provide the private key to
the CA/RA, or can be required to decrypt a value in order to prove
possession of the private key (see <xref target="sect-5.2.8"/>).  Decrypting a
value can be achieved either directly or indirectly.</t>
          <t>The direct method is for the RA/CA to issue a random challenge to
which an immediate response by the EE is required.</t>
          <t>The indirect method is to issue a certificate that is encrypted for
the end entity (and have the end entity demonstrate its ability to
decrypt this certificate in the confirmation message).  This allows a
CA to issue a certificate in a form that can only be used by the
intended end entity.</t>
          <t>This specification encourages use of the indirect method because it
requires no extra messages to be sent (i.e., the proof can be
demonstrated using the {request, response, confirmation} triple of
messages).</t>
        </section>
        <section anchor="sect-4.3.3">
          <name>Key Agreement Keys</name>
          <t>For key agreement keys, the end entity and the PKI management entity
(i.e., CA or RA) must establish a shared secret key in order to prove
that the end entity has possession of the private key.</t>
          <t>Note that this need not impose any restrictions on the keys that can
be certified by a given CA.  In particular, for Diffie-Hellman keys
the end entity may freely choose its algorithm parameters provided
that the CA can generate a short-term (or one-time) key pair with the
appropriate parameters when necessary.</t>
        </section>
        <section anchor="sect-4.3.4">
          <name>Key Encapsulation Mechanism Keys</name>
          <t>For key encapsulation mechanism keys, the end entity can be required to decrypt
a value in order to prove possession of the private key (see <xref target="sect-5.2.8"/>).
Decrypting a value can be achieved either directly or indirectly.</t>
          <t>Note: A definition of Key Encapsulation Mechanisms can be found in <xref section="1" sectionFormat="comma" target="I-D.ietf-lamps-cms-kemri"/>.</t>
          <t>The direct method is for the RA/CA to issue a random challenge to which an
immediate response by the EE is required.</t>
          <t>The indirect method is to issue a certificate that is encrypted for the end entity using a shared secret key derived from a key encapsulated using the public key (and have the end entity demonstrate its ability to use its private key for decapsulation of the KEM ciphertext, derive the shared secret key, decrypt this certificate, and provide a hash of the certificate in the confirmation message).  This allows a CA to issue a certificate in a form that can only be used by the intended end entity.</t>
          <t>This specification encourages use of the indirect method because it requires
no extra messages to be sent (i.e., the proof can be demonstrated using the
{request, response, confirmation} triple of messages).</t>
        </section>
      </section>
      <section anchor="sect-4.4">
        <name>Root CA Key Update</name>
        <t>This discussion only applies to CAs that are directly trusted by some
end entities.  Self-signed CAs <bcp14>SHALL</bcp14> be considered as directly
trusted CAs.  Recognizing whether a non-self-signed CA is supposed to
be directly trusted for some end entities is a matter of CA policy
and is thus beyond the scope of this document.</t>
        <t>The basis of the procedure described here is that the CA protects its
new public key using its previous private key and vice versa.  Thus,
when a CA updates its key pair it must generate two extra
cACertificate attribute values if certificates are made available
using an X.500 directory (for a total of four: OldWithOld,
OldWithNew, NewWithOld, and NewWithNew).</t>
        <t>When a CA changes its key pair, those entities who have acquired the
old CA public key via "out-of-band" means are most affected.  It is
these end entities who will need access to the new CA public key
protected with the old CA private key.  However, they will only
require this for a limited period (until they have acquired the new
CA public key via the "out-of-band" mechanism).  This will typically
be easily achieved when these end entities' certificates expire.</t>
        <t>The data structure used to protect the new and old CA public keys is
a standard certificate (which may also contain extensions).  There
are no new data structures required.</t>
        <t>Note 1:  This scheme does not make use of any of the X.509 v3
extensions as it must be able to work even for version 1
certificates.  The presence of the KeyIdentifier extension would make
for efficiency improvements.</t>
        <t>Note 2:.  While the scheme could be generalized to cover cases where
the CA updates its key pair more than once during the validity period
of one of its end entities' certificates, this generalization seems
of dubious value.  Not having this generalization simply means that
the validity periods of certificates issued with the old CA key pair
cannot exceed the end of the OldWithNew validity period.</t>
        <t>Note 3:  This scheme ensures that end entities will acquire the new
CA public key, at the latest by the expiry of the last certificate
they owned that was signed with the old CA private key (via the
"out-of-band" means).  Certificate and/or key update operations
occurring at other times do not necessarily require this (depending
on the end entity's equipment).</t>
        <t>Note 4:  In practice, a new root CA may have a slightly different subject
DN, e.g., indicating a generation identifier like the year of issuance or
a version number, for instance in an OU element.  How to bridge trust to
the new root CA certificate in a CA DN change or a cross-certificate scenario
is out of scope for this document.</t>
        <section anchor="sect-4.4.1">
          <name>CA Operator Actions</name>
          <t>To change the key of the CA, the CA operator does the following:</t>
          <ol spacing="normal" type="1"><li>Generate a new key pair;</li>
            <li>Create a certificate containing the old CA public key signed with
  the new private key (the "old with new" certificate);</li>
            <li>Create a certificate containing the new CA public key signed with
  the old private key (the "new with old" certificate);</li>
            <li>Create a certificate containing the new CA public key signed with
  the new private key (the "new with new" certificate);</li>
            <li>Publish these new certificates via the repository and/or other
  means (perhaps using a CAKeyUpdAnn message or RootCaKeyUpdateContent);</li>
            <li>Export the new CA public key so that end entities may acquire it
  using the "out-of-band" mechanism (if required).</li>
          </ol>
          <t>The old CA private key is then no longer required.  However, the old
CA public key will remain in use for some time.  The old CA public
key is no longer required (other than for non-repudiation) when all
end entities of this CA have securely acquired the new CA public key.</t>
          <t>The "old with new" certificate must have a validity period with the same
notBefore and notAfter time as the "old with old" certificate.</t>
          <t>The "new with old" certificate must have a validity period with the same
notBefore time as the "new with new" certificate and a notAfter time by which
all end entities of this CA will securely possess the new CA public key (at
the latest, at the notAfter time of the "old with old" certificate).</t>
          <t>The "new with new" certificate must have a validity period with a notBefore
time that is before the notAfter time of the "old with old" certificate and
a notAfter time that is after the notBefore time of the next update of this
certificate.</t>
          <t>Note:  Further operational considerations on transition from one root CA
self-signed certificate to the next is available in <xref target="RFC8649">RFC 8649 Section 5</xref>.</t>
        </section>
        <section anchor="sect-4.4.2">
          <name>Verifying Certificates</name>
          <t>Normally when verifying a signature, the verifier verifies (among
other things) the certificate containing the public key of the
signer.  However, once a CA is allowed to update its key there are a
range of new possibilities.  These are shown in the table below.</t>
          <artwork><![CDATA[
             Repository contains NEW    Repository contains only OLD
               and OLD public keys       public key (due to, e.g.,
                                           delay in publication)
                PSE      PSE Contains  PSE Contains    PSE Contains
             Contains     OLD public    NEW public      OLD public
            NEW public       key            key            key
                key

 Signer's   Case 1:      Case 3:       Case 5:        Case 7:
 certifi-   This is      In this case  Although the   In this case
 cate is    the          the verifier  CA operator    the CA
 protected  standard     must access   has not        operator  has
 using NEW  case where   the           updated the    not updated
 key pair   the          repository in repository the the repository
            verifier     order to get  verifier can   and so the
            can          the value of  verify the     verification
            directly     the NEW       certificate    will FAIL
            verify the   public key    directly -
            certificate                this is thus
            without                    the same as
            using the                  case 1.
            repository

 Signer's   Case 2:      Case 4:       Case 6:        Case 8:
 certifi-   In this      In this case  The verifier   Although the
 cate is    case the     the verifier  thinks this    CA operator
 protected  verifier     can directly  is the         has not
 using OLD  must         verify the    situation of   updated the
 key pair   access the   certificate   case 2 and     repository the
            repository   without       will access    verifier can
            in order     using the     the            verify the
            to get the   repository    repository;    certificate
            value of                   however, the   directly -
            the OLD                    verification   this is thus
            public key                 will FAIL      the same as
                                                      case 4.
]]></artwork>
          <t>Note: Instead of using a repository, the end entity can use the root CA update
general message to request the respective certificates from a PKI management
entity, see <xref target="sect-5.3.19.15"/>, and follow the required validation steps.</t>
          <section anchor="sect-4.4.2.1">
            <name>Verification in Cases 1, 4, 5, and 8</name>
            <t>In these cases, the verifier has a local copy of the CA public key
that can be used to verify the certificate directly.  This is the
same as the situation where no key change has occurred.</t>
            <t>Note that case 8 may arise between the time when the CA operator has
generated the new key pair and the time when the CA operator stores
the updated attributes in the repository.  Case 5 can only arise if
the CA operator has issued both the signer's and verifier's
certificates during this "gap" (the CA operator <bcp14>SHOULD</bcp14> avoid this as
it leads to the failure cases described below)</t>
          </section>
          <section anchor="sect-4.4.2.2">
            <name>Verification in Case 2</name>
            <t>In case 2, the verifier must get access to the old public key of the
CA.  The verifier does the following:</t>
            <ol spacing="normal" type="1"><li>Look up the caCertificate attribute in the repository and pick
  the OldWithNew certificate (determined based on validity periods;
  note that the subject and issuer fields must match);</li>
              <li>Verify that this is correct using the new CA key (which the
  verifier has locally);</li>
              <li>If correct, check the signer's certificate using the old CA key.</li>
            </ol>
            <t>Case 2 will arise when the CA operator has issued the signer's
certificate, then changed the key, and then issued the verifier's
certificate; so it is quite a typical case.</t>
          </section>
          <section anchor="sect-4.4.2.3">
            <name>Verification in Case 3</name>
            <t>In case 3, the verifier must get access to the new public key of the
CA.  In case a repository is used, the verifier does the following:</t>
            <ol spacing="normal" type="1"><li>Look up the cACertificate attribute in the repository and pick
  the NewWithOld certificate (determined based on validity periods;
  note that the subject and issuer fields must match);</li>
              <li>Verify that this is correct using the old CA key (which the
  verifier has stored locally);</li>
              <li>If correct, check the signer's certificate using the new CA key.</li>
            </ol>
            <t>Case 3 will arise when the CA operator has issued the verifier's
certificate, then changed the key, and then issued the signer's
certificate; so it is also quite a typical case.</t>
            <t>Note: Alternatively, the verifier can use the root CA update general message
to request the respective certificates from a PKI management entity, see <xref target="sect-5.3.19.15"/>, and follow the required validation steps.</t>
          </section>
          <section anchor="sect-4.4.2.4">
            <name>Failure of Verification in Case 6</name>
            <t>In this case, the CA has issued the verifier's PSE, which contains
the new key, without updating the repository attributes.  This means
that the verifier has no means to get a trustworthy version of the
CA's old key and so verification fails.</t>
            <t>Note that the failure is the CA operator's fault.</t>
          </section>
          <section anchor="sect-4.4.2.5">
            <name>Failure of Verification in Case 7</name>
            <t>In this case, the CA has issued the signer's certificate protected
with the new key without updating the repository attributes.  This
means that the verifier has no means to get a trustworthy version of
the CA's new key and so verification fails.</t>
            <t>Note that the failure is again the CA operator's fault.</t>
          </section>
        </section>
        <section anchor="sect-4.4.3">
          <name>Revocation - Change of CA Key</name>
          <t>As we saw above, the verification of a certificate becomes more
complex once the CA is allowed to change its key.  This is also true
for revocation checks as the CA may have signed the CRL using a newer
private key than the one within the user's PSE.</t>
          <t>The analysis of the alternatives is the same as for certificate
verification.</t>
        </section>
      </section>
      <section anchor="sect-4.5">
        <name>Extended Key Usage</name>
        <t>The Extended Key Usage (EKU) extension indicates the purposes for which the
certified key pair may be used. It therefore restricts the use of a certificate
to specific applications.</t>
        <t>A CA may want to delegate parts of its duties to other PKI management entities.
This section provides a mechanism to both prove this delegation and enable
automated means for checking the authorization of this delegation. Such delegation
may also be expressed by other means, e.g., explicit configuration.</t>
        <t>To offer automatic validation for the delegation of a role by a CA to another
entity, the certificates used for CMP message protection or signed data for
central key generation <bcp14>MUST</bcp14> be issued by the delegating CA and <bcp14>MUST</bcp14> contain
the respective EKUs. This proves the authorization of this entity by the
delegating CA to act in the given role as described below.</t>
        <t>The OIDs to be used for these EKUs are:</t>
        <sourcecode type="asn.1"><![CDATA[
  id-kp-cmcCA OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) kp(3) 27 }

  id-kp-cmcRA OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) kp(3) 28 }

  id-kp-cmKGA OBJECT IDENTIFIER ::= {
     iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) kp(3) 32 }
]]></sourcecode>
        <t>Note: <xref target="RFC6402">RFC 6402 section 2.10</xref> specifies OIDs for a CMC CA and a CMC RA.
As the functionality of a CA and
RA is not specific to using CMC or CMP as the certificate management protocol,
these EKUs are re-used by CMP.</t>
        <t>The meaning of the id-kp-cmKGA EKU is as follows:</t>
        <dl indent="10">
          <dt>CMP KGA:</dt>
          <dd>
            <t>CMP Key Generation Authorities are CAs or are identified by the id-kp-cmKGA
extended key usage.  The CMP KGA knows the private key it generated on behalf
of the end entity.  This is a very sensitive service and needs specific authorization,
which by default is with the CA certificate itself.  The CA may delegate
its authorization by placing the id-kp-cmKGA extended key usage in the certificate
used to authenticate the origin of the generated private key. The authorization
may also be determined through local configuration of the end entity.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="sect-5">
      <name>Data Structures</name>
      <t>This section contains descriptions of the data structures required
for PKI management messages. <xref target="sect-6"/> describes constraints on
their values and the sequence of events for each of the various PKI
management operations.</t>
      <section anchor="sect-5.1">
        <name>Overall PKI Message</name>
        <t>All of the messages used in this specification for the purposes of PKI management
use the following structure:</t>
        <sourcecode type="asn.1"><![CDATA[
  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
]]></sourcecode>
        <t>The PKIHeader contains information that is common to many PKI
messages.</t>
        <t>The PKIBody contains message-specific information.</t>
        <t>The PKIProtection, when used, contains bits that protect the PKI
message.</t>
        <t>The extraCerts field can contain certificates that may be useful to
the recipient.  For example, this can be used by a CA or RA to
present an end entity with certificates that it needs to verify its
own new certificate (if, for example, the CA that issued the end
entity's certificate is not a root CA for the end entity).  Note that
this field does not necessarily contain a certification path; the
recipient may have to sort, select from, or otherwise process the
extra certificates in order to use them.</t>
        <section anchor="sect-5.1.1">
          <name>PKI Message Header</name>
          <t>All PKI messages require some header information for addressing and
transaction identification.  Some of this information will also be
present in a transport-specific envelope.  However, if the PKI
message is protected, then this information is also protected (i.e.,
we make no assumption about secure transport).</t>
          <t>The following data structure is used to contain this information:</t>
          <sourcecode type="asn.1"><![CDATA[
  PKIHeader ::= SEQUENCE {
     pvno                INTEGER     { cmp1999(1), cmp2000(2),
                                       cmp2021(3) },
     sender              GeneralName,
     recipient           GeneralName,
     messageTime     [0] GeneralizedTime         OPTIONAL,
     protectionAlg   [1] AlgorithmIdentifier{ALGORITHM, {...}}
                         OPTIONAL,
     senderKID       [2] KeyIdentifier           OPTIONAL,
     recipKID        [3] KeyIdentifier           OPTIONAL,
     transactionID   [4] OCTET STRING            OPTIONAL,
     senderNonce     [5] OCTET STRING            OPTIONAL,
     recipNonce      [6] OCTET STRING            OPTIONAL,
     freeText        [7] PKIFreeText             OPTIONAL,
     generalInfo     [8] SEQUENCE SIZE (1..MAX) OF
                         InfoTypeAndValue     OPTIONAL
  }

  PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
]]></sourcecode>
          <t>The usage of pvno values is described in <xref target="sect-7"/>.</t>
          <t>The sender field contains the name of the sender of the PKIMessage.
This name (in conjunction with senderKID, if supplied) should be
sufficient to indicate the key to use to verify the protection on the
message.  If nothing about the sender is known to the sending entity
(e.g., in the init. req. message, where the end entity may not know
its own Distinguished Name (DN), e-mail name, IP address, etc.), then
the "sender" field <bcp14>MUST</bcp14> contain a "NULL" value; that is, the SEQUENCE
OF relative distinguished names is of zero length.  In such a case,
the senderKID field <bcp14>MUST</bcp14> hold an identifier (i.e., a reference
number) that indicates to the receiver the appropriate shared secret
information to use to verify the message.</t>
          <t>The recipient field contains the name of the recipient of the
PKIMessage.  This name (in conjunction with recipKID, if supplied)
should be usable to verify the protection on the message.</t>
          <t>The protectionAlg field specifies the algorithm used to protect the
message.  If no protection bits are supplied (note that PKIProtection
is <bcp14>OPTIONAL</bcp14>) then this field <bcp14>MUST</bcp14> be omitted; if protection bits are
supplied, then this field <bcp14>MUST</bcp14> be supplied.</t>
          <t>senderKID and recipKID are usable to indicate which keys have been
used to protect the message (recipKID will normally only be required
where protection of the message uses Diffie-Hellman (DH) or elliptic curve Diffie-Hellman (ECDH) keys).
These fields <bcp14>MUST</bcp14> be used if required to uniquely identify a key
(e.g., if more than one key is associated with a given sender name).
The senderKID <bcp14>SHOULD</bcp14> be used in any case.</t>
          <t>Note: The recommendation of using senderKID was changed since <xref target="RFC4210"/>,
where it was recommended to be omitted if not needed to identify the protection
key.</t>
          <t>The transactionID field within the message header is to be used to
allow the recipient of a message to correlate this with an ongoing
transaction.  This is needed for all transactions that consist of
more than just a single request/response pair.  For transactions that
consist of a single request/response pair, the rules are as follows.
A client <bcp14>MAY</bcp14> populate the transactionID field of the request.  If a
server receives such a request that has the transactionID field set,
then it <bcp14>MUST</bcp14> set the transactionID field of the response to the same
value.  If a server receives such request with a missing
transactionID field, then it <bcp14>MAY</bcp14> set transactionID field of the
response.</t>
          <t>For transactions that consist of more than just a single
request/response pair, the rules are as follows.  Clients <bcp14>SHOULD</bcp14>
generate a transactionID for the first request.  If a server receives
such a request that has the transactionID field set, then it <bcp14>MUST</bcp14> set
the transactionID field of the response to the same value.  If a
server receives such request with a missing transactionID field, then
it <bcp14>MUST</bcp14> populate the transactionID field of the response with a
server-generated ID.  Subsequent requests and responses <bcp14>MUST</bcp14> all set
the transactionID field to the thus established value.  In all cases
where a transactionID is being used, a given client <bcp14>MUST NOT</bcp14> have
more than one transaction with the same transactionID in progress at
any time (to a given server).  Servers are free to require uniqueness
of the transactionID or not, as long as they are able to correctly
associate messages with the corresponding transaction.  Typically,
this means that a server will require the {client, transactionID}
tuple to be unique, or even the transactionID alone to be unique, if
it cannot distinguish clients based on transport-level information.
A server receiving the first message of a transaction (which requires
more than a single request/response pair) that contains a
transactionID that does not allow it to meet the above constraints
(typically because the transactionID is already in use) <bcp14>MUST</bcp14> send
back an ErrorMsgContent with a PKIFailureInfo of transactionIdInUse.
It is <bcp14>RECOMMENDED</bcp14> that the clients fill the transactionID field with
128 bits of (pseudo-) random data for the start of a transaction to
reduce the probability of having the transactionID in use at the
server.</t>
          <t>The senderNonce and recipNonce fields protect the PKIMessage against
replay attacks.  The senderNonce will typically be 128 bits of
(pseudo-) random data generated by the sender, whereas the recipNonce
is copied from the senderNonce of the previous message in the
transaction.</t>
          <t>The messageTime field contains the time at which the sender created
the message.  This may be useful to allow end entities to
correct/check their local time for consistency with the time on a
central system.</t>
          <t>The freeText field may be used to send a human-readable message to
the recipient (in any number of languages).  The first language used
in this sequence indicates the desired language for replies.</t>
          <t>The generalInfo field may be used to send machine-processable
additional data to the recipient.  The following generalInfo
extensions are defined and <bcp14>MAY</bcp14> be supported.</t>
          <section anchor="sect-5.1.1.1">
            <name>ImplicitConfirm</name>
            <t>This is used by the EE to inform the CA that it does not wish to send
a certificate confirmation for issued certificates.</t>
            <sourcecode type="asn.1"><![CDATA[
  id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13}
  ImplicitConfirmValue ::= NULL
]]></sourcecode>
            <t>If the CA grants the request to the EE, it <bcp14>MUST</bcp14> put the same
extension in the PKIHeader of the response.  If the EE does not find
the extension in the response, it <bcp14>MUST</bcp14> send the certificate
confirmation.</t>
          </section>
          <section anchor="sect-5.1.1.2">
            <name>ConfirmWaitTime</name>
            <t>This is used by the CA to inform the EE how long it intends to wait
for the certificate confirmation before revoking the certificate and
deleting the transaction.</t>
            <sourcecode type="asn.1"><![CDATA[
  id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14}
  ConfirmWaitTimeValue ::= GeneralizedTime
]]></sourcecode>
          </section>
          <section anchor="sect-5.1.1.3">
            <name>OrigPKIMessage</name>
            <t>An RA <bcp14>MAY</bcp14> include the original PKIMessage from the EE in this generalInfo
field of the PKIHeader of a PKIMessage.  This is used by the RA to inform
the CA of the original PKIMessage that it received from the EE and modified
in some way (e.g., added or modified particular field values or added new
extensions) before forwarding the new PKIMessage.  If the changes made by
the RA to the original PKIMessage break the POP of a certificate request,
the RA <bcp14>MUST</bcp14> set the popo field to RAVerified, see Section 5.2.8.4.  This
accommodates, for example, cases in which the CA wishes to check POP or other
information on the original EE message.</t>
            <t>Although the infoValue is PKIMessages, it <bcp14>MUST</bcp14> contain exactly one PKIMessage.</t>
            <sourcecode type="asn.1"><![CDATA[
  id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15}
  OrigPKIMessageValue ::= PKIMessages
]]></sourcecode>
          </section>
          <section anchor="sect-5.1.1.4">
            <name>CertProfile</name>
            <t>This is used by the EE to indicate specific certificate profiles, e.g., when
requesting a new certificate or a certificate request template, see <xref target="sect-5.3.19.16"/>.</t>
            <sourcecode type="asn.1"><![CDATA[
  id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21}
  CertProfileValue ::= SEQUENCE SIZE (1..MAX) OF UTF8String
]]></sourcecode>
            <t>When used in a p10cr message, the CertProfileValue sequence <bcp14>MUST NOT</bcp14> contain multiple certificate profile names. When used in an ir/cr/kur/genm message, the CertProfileValue sequence <bcp14>MUST NOT</bcp14> contain more certificate profile names than the number of CertReqMsg or GenMsgContent InfoTypeAndValue elements contained in the message body.</t>
            <t>The certificate profile names in the CertProfileValue sequence relate to the CertReqMsg or GenMsgContent InfoTypeAndValue elements in the given order. An empty string means no certificate profile name is associated with the respective CertReqMsg or GenMsgContent InfoTypeAndValue element. If the CertProfileValue sequence contains less certificate profile entries than CertReqMsg or GenMsgContent InfoTypeAndValue elements, the remaining CertReqMsg or GenMsgContent InfoTypeAndValue elements have no profile name associated with them.</t>
          </section>
        </section>
        <section anchor="sect-5.1.2">
          <name>PKI Message Body</name>
          <sourcecode type="asn.1"><![CDATA[
  PKIBody ::= CHOICE {
     ir       [0]  CertReqMessages,       --Initialization Req
     ip       [1]  CertRepMessage,        --Initialization Resp
     cr       [2]  CertReqMessages,       --Certification Req
     cp       [3]  CertRepMessage,        --Certification Resp
     p10cr    [4]  CertificationRequest,  --PKCS #10 Cert.  Req.
     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 Req
     krp      [10] KeyRecRepContent,      --Key Recovery Resp
     rr       [11] RevReqContent,         --Revocation Request
     rp       [12] RevRepContent,         --Revocation Response
     ccr      [13] CertReqMessages,       --Cross-Cert.  Request
     ccp      [14] CertRepMessage,        --Cross-Cert.  Resp
     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
  }
]]></sourcecode>
          <t>The specific types are described in <xref target="sect-5.3"/> below.</t>
        </section>
        <section anchor="sect-5.1.3">
          <name>PKI Message Protection</name>
          <t>Some PKI messages will be protected for integrity.</t>
          <t>Note If an asymmetric algorithm is used to protect a message and the relevant
public component has been certified already, then the origin of the
message can also be authenticated.  On the other hand, if the public
component is uncertified, then the message origin cannot be
automatically authenticated, but may be authenticated via out-of-band
means.</t>
          <t>When protection is applied, the following structure is used:</t>
          <sourcecode type="asn.1"><![CDATA[
  PKIProtection ::= BIT STRING
]]></sourcecode>
          <t>The input to the calculation of PKIProtection is the DER encoding of
the following data structure:</t>
          <sourcecode type="asn.1"><![CDATA[
  ProtectedPart ::= SEQUENCE {
     header    PKIHeader,
     body      PKIBody
  }
]]></sourcecode>
          <t>There <bcp14>MAY</bcp14> be cases in which the PKIProtection BIT STRING is
deliberately not used to protect a message (i.e., this <bcp14>OPTIONAL</bcp14> field
is omitted) because other protection, external to PKIX, will be
applied instead.  Such a choice is explicitly allowed in this
specification.  Examples of such external protection include CMS <xref target="RFC5652"/> and Security Multiparts <xref target="RFC1847"/> encapsulation of the
PKIMessage (or simply the PKIBody (omitting the CHOICE tag), if the
relevant PKIHeader information is securely carried in the external
mechanism).  It is noted, however, that many such external mechanisms
require that the end entity already possesses a public-key
certificate, and/or a unique Distinguished Name, and/or other such
infrastructure-related information.  Thus, they may not be
appropriate for initial registration, key-recovery, or any other
process with "boot-strapping" characteristics.  For those cases it
may be necessary that the PKIProtection parameter be used.  In the
future, if/when external mechanisms are modified to accommodate
boot-strapping scenarios, the use of PKIProtection may become rare or
non-existent.</t>
          <t>Depending on the circumstances, the PKIProtection bits may contain a
Message Authentication Code (MAC) or signature.  Only the following
cases can occur:</t>
          <section anchor="sect-5.1.3.1">
            <name>Pre-Shared Secret Information</name>
            <t>In this case, the sender and recipient share secret information with sufficient
entropy (established via out-of-band means). PKIProtection will contain a
MAC value and the protectionAlg <bcp14>MAY</bcp14> be one of the options described in CMP
Algorithms Section 6.1 [RFCCCCC].</t>
          </section>
          <section anchor="sect-5.1.3.2">
            <name>Key Agreement</name>
            <t>Where the sender and receiver possess finite-field or elliptic-curve-based
Diffie-Hellman certificates
with compatible DH parameters, in order to protect the message the
end entity must generate a symmetric key based on its private DH key
value and the DH public key of the recipient of the PKI message.
PKIProtection will contain a MAC value keyed with this derived
symmetric key and the protectionAlg will be the following:</t>
            <sourcecode type="asn.1"><![CDATA[
  id-DHBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 30}

  DHBMParameter ::= SEQUENCE {
     owf                 AlgorithmIdentifier,
     -- AlgId for a One-Way Function
     mac                 AlgorithmIdentifier
     -- the MAC AlgId
  }
]]></sourcecode>
            <t>In the above protectionAlg, OWF is applied to the result of the
Diffie-Hellman computation.  The OWF output (called "BASEKEY" for
ease of reference, with a size of "H") is what is used to form the
symmetric key.  If the MAC algorithm requires a K-bit key and K &lt;= H, then
the most significant K bits of BASEKEY are used.  If K &gt; H, then
all of BASEKEY is used for the most significant H bits of the key,
OWF("1" || BASEKEY) is used for the next most significant H bits of
the key, OWF("2" || BASEKEY) is used for the next most significant H
bits of the key, and so on, until all K bits have been derived.
[Here "N" is the ASCII byte encoding the number N and "||" represents concatenation.]</t>
            <t>Note: Hash algorithms that can be used as one-way functions are listed in
CMP Algortihms [RFCCCCC] Section 2.</t>
          </section>
          <section anchor="sect-5.1.3.3">
            <name>Signature</name>
            <t>In this case, the sender possesses a signature key pair and simply
signs the PKI message.  PKIProtection will contain the signature
value and the protectionAlg will be an AlgorithmIdentifier for a
digital signature <bcp14>MAY</bcp14> be one of the options described in CMP Algorithms Section
3 [RFCCCCC].</t>
          </section>
          <section anchor="sect-5.1.3.4">
            <name>Key Encapsulation</name>
            <t>In case the sender of a message has a KEM key pair, it can use a shared secret key obtained by KEM decapsulation of a ciphertext received using the sender's private KEM key.</t>
            <t>Note: In this section both entities in the communication need to send and receive messages. For ease of explanation we use the term "Alice" to denote the entity possessing the KEM key pair and who wishes to authenticate messages sent, and "Bob" to denote the entity who needs to authenticate the messages received.</t>
            <t>Bob must have generated the ciphertext using KEM encapsulation with Alice’s public key and have transferred it to Alice in an InfoTypeAndValue in a previous message. Using a KDF, Alice will derive a shared secret key from the KEM shared secret and other data sent by Bob. PKIProtection will contain a MAC value calculated using that shared secret key, and the protectionAlg will be the following:</t>
            <sourcecode type="asn.1"><![CDATA[
  id-KemBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 TBD4}

  KemBMParameter ::= SEQUENCE {
    kdf              AlgorithmIdentifier{KEY-DERIVATION, {...}},
    len              INTEGER (1..MAX),
    mac              AlgorithmIdentifier{MAC-ALGORITHM, {...}}
  }
]]></sourcecode>
            <t>&lt; ToDo: The new OID TBD4 for id-KemBasedMac needs to be registered. The OIDs id-PasswordBasedMac and id-DHBasedMac were registered in the tree 1.2.840.113533.7.66 by Entrust. Entrust offered using 1.2.840.113533.7.66.16 for id-KemBasedMac. &gt;</t>
            <t>kdf is the algorithm identifier of the chosen KDF, and any associated parameters, used to generate the shared secret mac key.</t>
            <t>len is the output length of the KDF and <bcp14>MUST</bcp14> be the desired size of the mac key to be used for MAC-based message protection.</t>
            <t>mac is the algorithm identifier of the chosen MAC algorithm, and any associated parameters.</t>
            <t>The KDF and MAC algorithms <bcp14>MAY</bcp14> be chosen from the options in CMP Algorithms [RFCCCCC].</t>
            <t>This approach uses the definition of Key Encapsulation Mechanism (KEM) algorithm functions in <xref section="1" sectionFormat="comma" target="I-D.ietf-lamps-cms-kemri"/>.</t>
            <t>The InfoTypeAndValue transferring the KEM ciphertext is of type id-it-KemCiphertextInfo, which is defined in this document as:</t>
            <sourcecode type="asn.1"><![CDATA[
  id-it-KemCiphertextInfo OBJECT IDENTIFIER ::= { id-it TBD1 }
  KemCiphertextInfoValue :== KemCiphertextInfo
]]></sourcecode>
            <t>Note: This InfoTypeAndValue can be carried in a genm/genp message body or in the generalInfo field of PKIHeader.</t>
            <t>When id-it-KemCiphertextInfo is used, the value is either absent or of type KemCiphertextInfo.  The syntax for KemCiphertextInfo is as follows:</t>
            <sourcecode type="asn.1"><![CDATA[
  KemCiphertextInfo ::= SEQUENCE {
    kem              AlgorithmIdentifier{KEM-ALGORITHM, {...}},
    ct               OCTET STRING
  }
]]></sourcecode>
            <t>kem is the algorithm identifier of the KEM algorithm, and any associated parameters, used by Bob to generate the ciphertext ct.</t>
            <t>ct is the ciphertext output from the Encapsulate function.</t>
            <t>This generic message flow assumes that Bob possesses the public KEM key of Alice. Alice can be the initiator of a PKI management operation or the responder. For more detailed figures see <xref target="sect-e"/>.</t>
            <t>Generic Message Flow:</t>
            <figure anchor="KEM">
              <name>Generic Message Flow when Alice has a KEM key pair</name>
              <artwork align="left"><![CDATA[
Step# Alice                                Bob
  1                                        perform KEM Encapsulate
                       <- KEM Ciphertext <-
  2   perform KEM Decapsulate
      perform key derivation
      format message with
        MAC-based protection
                       ->    message     ->
  3                                        perform key derivation
                                           verify MAC-based
                                             protection
-------------------  Alice authenticated by Bob  --------------------
]]></artwork>
            </figure>
            <ol spacing="normal" type="1"><li>
                <t>Bob needs to possess the authentic public KEM key pk of Alice, for instance contained in a KEM certificate that was received and successfully validated by Bob beforehand.  </t>
                <t>
Bob generates a shared secret ss and the associated ciphertext ct using the KEM Encapsulate function with Alice's public KEM key pk. Bob <bcp14>MUST NOT</bcp14> reuse the ss and ct for other PKI management operations. From this data, Bob produces a KemCiphertextInfo structure including the KEM algorithm identifier and the ciphertext ct and sends it to Alice in an InfoTypeAndValue structure defined above.  </t>
                <sourcecode type="asn.1"><![CDATA[
   Encapsulate(pk) -> (ct, ss)
]]></sourcecode>
              </li>
              <li>
                <t>Alice decapsulates the shared secret ss from the ciphertext ct using the KEM Decapsulate function and its private KEM key sk.  </t>
                <sourcecode type="asn.1"><![CDATA[
   Decapsulate(ct, sk) -> (ss)
]]></sourcecode>
                <t>
If the decapsulation operation outputs an error, any failInfo field in an error response message  <bcp14>SHALL</bcp14> contain the value badMessageCheck and the PKI management operation <bcp14>SHALL</bcp14> be terminated.  </t>
                <t>
Alice derives the shared secret key ssk using a KDF. The shared secret ss is used as input key material for the KDF, the value len is the desired output length of the KDF as required by the MAC algorithm to be used for message protection. The DER-encoded KemOtherInfo structure, as defined below, is used as context for the KDF.  </t>
                <sourcecode type="asn.1"><![CDATA[
   KDF(ss, len, context)->(ssk)
]]></sourcecode>
                <t>
The shared secret key ssk is used for MAC-based protection by Alice.</t>
              </li>
              <li>
                <t>Bob derives the same shared secret key ssk using the KDF. Also here the shared secret ss is used as input key material for the KDF, the value len from KemBMParameter is the desired output length for the KDF, and the DER-encoded KemOtherInfo structure constructed in the same way as on Alice’s side is used as context for the KDF.  </t>
                <sourcecode type="asn.1"><![CDATA[
   KDF(ss, len, context)->(ssk)
]]></sourcecode>
                <t>
Note: Bob performs the key derivation in step 3 and not in step 1 to make DOS attackers more difficult.  </t>
                <t>
Bob uses the shared secret key ssk for verifying the MAC-based protection of the message received and in this way authenticates Alice.</t>
              </li>
            </ol>
            <t>This shared secret key ssk can be reused by Alice for MAC-based protection of further messages sent to Bob within the current PKI management operation.</t>
            <t>This approach employs the conventions of using a KDF as described in <xref section="5" sectionFormat="comma" target="I-D.ietf-lamps-cms-kemri"/> with the following changes:</t>
            <ul spacing="normal">
              <li>L is dependent of the MAC algorithm that is used with the shared secret key for CMP message protection and is called len in this document</li>
              <li>
                <t>info is an additional input to the KDF, is called context in this document, and contains the DER-encoded KemOtherInfo structure defined as:  </t>
                <sourcecode type="asn.1"><![CDATA[
  KemOtherInfo ::= SEQUENCE {
    staticString      PKIFreeText,
    transactionID [0] OCTET STRING     OPTIONAL,
    senderNonce   [1] OCTET STRING     OPTIONAL,
    recipNonce    [2] OCTET STRING     OPTIONAL,
    len               INTEGER (1..MAX),
    mac               AlgorithmIdentifier{MAC-ALGORITHM, {...}}
    ct                OCTET STRING
  }
]]></sourcecode>
                <t>
staticString <bcp14>MUST</bcp14> be "CMP-KEM".  </t>
                <t>
transactionID, senderNonce, and recipNonce <bcp14>MUST</bcp14> be the values from the message previously received containing the ciphertext ct in KemCiphertextInfo, if present.  </t>
                <t>
len <bcp14>MUST</bcp14> be the value from KemBMParameter.  </t>
                <t>
mac <bcp14>MUST</bcp14> be the MAC algorithm identifier used for MAC-based protection of the message and <bcp14>MUST</bcp14> be value from KemBMParameter.  </t>
                <t>
ct <bcp14>MUST</bcp14> be the ciphertext from KemCiphertextInfo.</t>
              </li>
              <li>OKM is the output keying material of the KDF used for MAC-based message protection of length len and is called ssk in this document.</li>
            </ul>
            <t>There are various ways how Alice can request and Bob can provide the KEM ciphertext, see <xref target="sect-e"/> for details. The KemCiphertextInfo can be requested using a genm message with an InfoTypeAndValue structure of type id-it-KemCiphertextInfo where the value is absent and can be provided in the following genp message with an InfoTypeAndValue structure of the same type.
Alternatively, the generalInfo field of the header of a PKIMessage can be used to request and provide a KemCiphertextInfo structure, also using an InfoTypeAndValue structure of type id-it-KemCiphertextInfo in each direction.
The procedure works also without Alice explicitly requesting the KEM ciphertext, in case that Bob knows beforehand a KEM key of Alice and can expect that she is ready to use it.</t>
            <t>If both the initiator and responder in a PKI management operation have KEM key pairs, this procedure can be applied by both entities independently, establishing and using different shared secret keys on either side.</t>
          </section>
          <section anchor="sect-5.1.3.5">
            <name>Multiple Protection</name>
            <t>When receiving a protected PKI message, a PKI management entity such as an
RA <bcp14>MAY</bcp14> forward that message adding its own protection (which is a MAC or
a signature, depending on the information and certificates shared between
the RA and the CA).  Additionally, multiple PKI messages <bcp14>MAY</bcp14> be aggregated.
There are several use cases for such messages.</t>
            <ul spacing="normal">
              <li>The RA confirms having validated and authorized a message and forwards the
original message unchanged.</li>
              <li>A PKI management entity collects several messages that are to be forwarded
in the same direction and forwards them in a batch. Request messages can
be transferred as batch upstream (towards the CA); response or announce messages
can be transferred as batch downstream (towards an RA, but not to the EE).
This can for instance be used when bridging an off-line connection between
two PKI management entities.</li>
            </ul>
            <t>These use cases are accomplished by nesting the messages within a new PKI
message.  The structure used is as follows:</t>
            <sourcecode type="asn.1"><![CDATA[
  NestedMessageContent ::= PKIMessages
]]></sourcecode>
          </section>
        </section>
      </section>
      <section anchor="sect-5.2">
        <name>Common Data Structures</name>
        <t>Before specifying the specific types that may be placed in a PKIBody,
we define some data structures that are used in more than one case.</t>
        <section anchor="sect-5.2.1">
          <name>Requested Certificate Contents</name>
          <t>Various PKI management messages require that the originator of the
message indicate some of the fields that are required to be present
in a certificate.  The CertTemplate structure allows an end entity or
RA to specify as much as it wishes about the certificate it requires.
CertTemplate is identical to a Certificate, but with all fields
optional.</t>
          <t>Note: Even if the originator completely specifies the contents of
a certificate it requires, a CA is free to modify fields within the
certificate actually issued.  If the modified certificate is
unacceptable to the requester, the requester <bcp14>MUST</bcp14> send back a
certConf message that either does not include this certificate (via a
CertHash), or does include this certificate (via a CertHash) along
with a status of "rejected".  See <xref target="sect-5.3.18"/> for the definition
and use of CertHash and the certConf message.</t>
          <t>Note: Before requesting a new certificate, an end entity can request a certTemplate
structure as a kind of certificate request blueprint, in order to learn which
data the CA expects to be present in the certificate request, see <xref target="sect-5.3.19.16"/>.</t>
          <t>See <xref target="RFC4211">CRMF</xref> for CertTemplate syntax.</t>
          <t>If certTemplate is an empty SEQUENCE (i.e., all fields omitted), then the
controls field in the CertRequest structure <bcp14>MAY</bcp14> contain the id-regCtrl-altCertTemplate
control, specifying a template for a certificate other than an X.509v3 public-key
certificate.  Conversely, if certTemplate is not empty (i.e., at least one
field is present), then controls <bcp14>MUST NOT</bcp14> contain id-regCtrl-altCertTemplate.
The new control is defined as follows:</t>
          <sourcecode type="asn.1"><![CDATA[
  id-regCtrl-altCertTemplate OBJECT IDENTIFIER ::= { iso(1)
     identified-organization(3) dod(6) internet(1) security(5)
     mechanisms(5) pkix(7) pkip(5) regCtrl(1) 7}

  AltCertTemplate ::= AttributeTypeAndValue
]]></sourcecode>
        </section>
        <section anchor="sect-5.2.2">
          <name>Encrypted Values</name>
          <t>Where encrypted data (in this specification, private keys, certificates,
or revocation passphrase) are sent in PKI messages, the EncryptedKey data
structure is used.</t>
          <sourcecode type="asn.1"><![CDATA[
  EncryptedKey ::= CHOICE {
     encryptedValue       EncryptedValue, -- deprecated
     envelopedData    [0] EnvelopedData }
]]></sourcecode>
          <t>See <xref target="RFC4211">CRMF</xref> for EncryptedKey and EncryptedValue syntax and <xref target="RFC5652">CMS</xref> for EnvelopedData syntax. Using the EncryptedKey data structure offers the
choice to either use EncryptedValue (for backward compatibility only) or
EnvelopedData.  The use of the EncryptedValue structure has been deprecated
in favor of the EnvelopedData structure.  Therefore, it is <bcp14>RECOMMENDED</bcp14> to
use EnvelopedData.</t>
          <t>Note: The EncryptedKey structure defined in <xref target="RFC4211">CRMF</xref> is used here, which makes the update backward compatible. Using the new syntax
with the untagged default choice EncryptedValue is bits-on-the-wire compatible
with the old syntax.</t>
          <t>To indicate support for EnvelopedData the pvno cmp2021 has been introduced.
Details on the usage of pvno values is described in <xref target="sect-7"/>.</t>
          <t>The EncryptedKey data structure is used in CMP to transport a private key,
certificate, or revocation passphrase in encrypted form.</t>
          <t>EnvelopedData is used as follows:</t>
          <ul spacing="normal">
            <li>It contains only one RecipientInfo structure because the content is encrypted
only for one recipient.</li>
            <li>It may contain a private key in the AsymmetricKeyPackage structure as defined
in <xref target="RFC5958">RFC 5958</xref> wrapped in a SignedData structure as specified in
<xref target="RFC5652">CMS section 5</xref> and <xref target="RFC8933"/> signed by the Key Generation Authority.</li>
            <li>It may contain a certificate or revocation passphrase directly in the encryptedContent
field.</li>
          </ul>
          <t>The content of the EnvelopedData structure, as specified in <xref target="RFC5652">CMS section 6</xref>,
<bcp14>MUST</bcp14> be encrypted using a newly generated symmetric content-encryption
key. This content-encryption key <bcp14>MUST</bcp14> be securely provided to the recipient
using one of three key management techniques.</t>
          <t>The choice of the key management technique to be used by the sender depends
on the credential available at the recipient:</t>
          <ul spacing="normal">
            <li>Recipient's certificate with an algorithm identifier and a public key that supports key transport and where any given key usage extension allows keyEncipherment:
The content-encryption key will be protected using the key transport key management technique, as specified in <xref target="RFC5652">CMS Section 6.2.1</xref>.</li>
            <li>Recipient's certificate with an algorithm identifier and a public key that supports key agreement and where any given key usage extension allows keyAgreement:
The content-encryption key will be protected using the key agreement key management technique, as specified in  <xref target="RFC5652">CMS Section 6.2.2</xref>. This is the preferred technique.</li>
            <li>A password or shared secret: The content-encryption key will be protected
using the password-based key management technique, as specified in
<xref target="RFC5652">CMS Section 6.2.4</xref>.</li>
            <li>Recipient's certificate with an algorithm identifier and a public key that supports key encapsulation mechanism and where any given key usage extension allows keyEncipherment: The content-encryption key will be protected using the additional key management technique for KEM keys, as specified in <xref target="I-D.ietf-lamps-cms-kemri"/>.</li>
          </ul>
          <t>Note: There are cases where the algorithm identifier, the type of the public key,
and the key usage extension will not be sufficient to decide on the key management
technique to use, e.g., when rsaEncryption is the algorithm identifier. In
such cases it is a matter of local policy to decide.</t>
        </section>
        <section anchor="sect-5.2.3">
          <name>Status codes and Failure Information for PKI Messages</name>
          <t>All response messages will include some status information.  The
following values are defined.</t>
          <sourcecode type="asn.1"><![CDATA[
  PKIStatus ::= INTEGER {
     accepted               (0),
     grantedWithMods        (1),
     rejection              (2),
     waiting                (3),
     revocationWarning      (4),
     revocationNotification (5),
     keyUpdateWarning       (6)
  }
]]></sourcecode>
          <t>Responders may use the following syntax to provide more information
about failure cases.</t>
          <sourcecode type="asn.1"><![CDATA[
  PKIFailureInfo ::= BIT STRING {
     badAlg                 (0),
     badMessageCheck        (1),
     badRequest             (2),
     badTime                (3),
     badCertId              (4),
     badDataFormat          (5),
     wrongAuthority         (6),
     incorrectData          (7),
     missingTimeStamp       (8),
     badPOP                 (9),
     certRevoked            (10),
     certConfirmed          (11),
     wrongIntegrity         (12),
     badRecipientNonce      (13),
     timeNotAvailable       (14),
     unacceptedPolicy       (15),
     unacceptedExtension    (16),
     addInfoNotAvailable    (17),
     badSenderNonce         (18),
     badCertTemplate        (19),
     signerNotTrusted       (20),
     transactionIdInUse     (21),
     unsupportedVersion     (22),
     notAuthorized          (23),
     systemUnavail          (24),
     systemFailure          (25),
     duplicateCertReq       (26)
  }

  PKIStatusInfo ::= SEQUENCE {
     status        PKIStatus,
     statusString  PKIFreeText     OPTIONAL,
     failInfo      PKIFailureInfo  OPTIONAL
  }
]]></sourcecode>
        </section>
        <section anchor="sect-5.2.4">
          <name>Certificate Identification</name>
          <t>In order to identify particular certificates, the CertId data
structure is used.</t>
          <t>See <xref target="RFC4211"/> for CertId syntax.</t>
        </section>
        <section anchor="sect-5.2.5">
          <name>Out-of-band root CA Public Key</name>
          <t>Each root CA must be able to publish its current public key via some
"out-of-band" means.  While such mechanisms are beyond the scope of
this document, we define data structures that can support such
mechanisms.</t>
          <t>There are generally two methods available: either the CA directly
publishes its self-signed certificate, or this information is
available via the Directory (or equivalent) and the CA publishes a
hash of this value to allow verification of its integrity before use.</t>
          <sourcecode type="asn.1"><![CDATA[
  OOBCert ::= Certificate
]]></sourcecode>
          <t>The fields within this certificate are restricted as follows:</t>
          <ul spacing="normal">
            <li>The certificate <bcp14>MUST</bcp14> be self-signed (i.e., the signature must be
verifiable using the SubjectPublicKeyInfo field);</li>
            <li>The subject and issuer fields <bcp14>MUST</bcp14> be identical;</li>
            <li>If the subject field is NULL, then both subjectAltNames and
issuerAltNames extensions <bcp14>MUST</bcp14> be present and have exactly the
same value;</li>
            <li>The values of all other extensions must be suitable for a self-signed
certificate (e.g., key identifiers for subject and issuer must be the
same).</li>
          </ul>
          <sourcecode type="asn.1"><![CDATA[
  OOBCertHash ::= SEQUENCE {
     hashAlg     [0] AlgorithmIdentifier     OPTIONAL,
     certId      [1] CertId                  OPTIONAL,
     hashVal         BIT STRING
  }
]]></sourcecode>
          <t>The intention of the hash value is that anyone who has securely
received the hash value (via the out-of-band means) can verify a
self-signed certificate for that CA.</t>
        </section>
        <section anchor="sect-5.2.6">
          <name>Archive Options</name>
          <t>Requesters may indicate that they wish the PKI to archive a private
key value using the PKIArchiveOptions structure.</t>
          <t>See <xref target="RFC4211"/> for PKIArchiveOptions syntax.</t>
        </section>
        <section anchor="sect-5.2.7">
          <name>Publication Information</name>
          <t>Requesters may indicate that they wish the PKI to publish a
certificate using the PKIPublicationInfo structure.</t>
          <t>See <xref target="RFC4211"/> for PKIPublicationInfo syntax.</t>
        </section>
        <section anchor="sect-5.2.8">
          <name>Proof-of-Possession Structures</name>
          <t>&lt; ToDo: This section should be aligned with <xref target="sect-4.3"/> of this document and
RFC 4211 Section 4. It should potentially be restructured
and updated for better readability. Also some inconsistencies in Section 5.2.8.3 resulting from the update of RFC2510 to RFC4210 should be fixed. &gt;</t>
          <t>If the certification request is for a key pair that supports signing , then
the proof-of-possession of the private signing key is demonstrated through
use of the POPOSigningKey structure as defined in <xref target="RFC4211">RFC 4211</xref>.</t>
          <sourcecode type="asn.1"><![CDATA[
  POPOSigningKey ::= SEQUENCE {
     poposkInput          [0] POPOSigningKeyInput OPTIONAL,
     algorithmIdentifier  AlgorithmIdentifier,
     signature            BIT STRING
  }

  POPOSigningKeyInput ::= SEQUENCE {
     authInfo             CHOICE {
        sender            [0] GeneralName,
        publicKeyMAC      PKMACValue
     },
     publicKey            SubjectPublicKeyInfo
  }
]]></sourcecode>
          <t>The signature (using "algorithmIdentifier") is on the DER-encoded value of
poposkInput (i.e., the "value" OCTETs of the POPOSigningKeyInput DER).</t>
          <t>If certTemplate (or the altCertTemplate control as defined in <xref target="sect-5.2.1"/>)
contains the subject and publicKey values, then poposkInput <bcp14>MUST</bcp14> be omitted
and the signature <bcp14>MUST</bcp14> be computed on the DER-encoded value of certReq field
if the CertReqMsg (or the DER-encoded value of AltCertTemplate).  If certTemplate/altCertTemplate
does not contain both the subject and public key values (i.e., if it contains
only one of these, or neither), then poposkInput <bcp14>MUST</bcp14> be present and <bcp14>MUST</bcp14>
be signed.</t>
          <t>On the other hand, if the certification request is for a key pair that does
not support signing (i.e., a request for an encryption or KEM certificate),
then the proof-of-possession of the private decryption key may be demonstrated
in one of three ways, as detailed in the following subsections.</t>
          <section anchor="sect-5.2.8.1">
            <name>Inclusion of the Private Key</name>
            <t>By the inclusion of the private key (encrypted) in the CertRequest
(in the thisMessage field of POPOPrivKey or in the
PKIArchiveOptions control structure, depending upon whether or not
archival of the private key is also desired).</t>
            <sourcecode type="asn.1"><![CDATA[
  POPOPrivKey ::= CHOICE {
     thisMessage       [0] BIT STRING,   -- deprecated
     subsequentMessage [1] SubsequentMessage,
     dhMAC             [2] BIT STRING,   -- deprecated
     agreeMAC          [3] PKMACValue,
     encryptedKey      [4] EnvelopedData
  }
]]></sourcecode>
            <t>Note: When using CMP V2 with EcryptedValue, <xref target="RFC4210">RFC 4210 Appendix C</xref> made the behavioral clarification of specifying that the contents of "thisMessage"
<bcp14>MUST</bcp14> be encoded as an EncryptedValue and then wrapped in a BIT STRING.  This
allows the necessary conveyance and protection of the private key while maintaining
bits-on-the-wire compatibility with <xref target="RFC4211">RFC 4211</xref>.</t>
            <t>&lt; ToDo: Section 2.27 of CMP Updated should be updated during AUTH48 specifying
the use of encryptedKey field instead of thisMessage when EnvelopedData is
used. &gt;</t>
          </section>
          <section anchor="sect-5.2.8.2">
            <name>Indirect Method</name>
            <t>By having the CA return not the certificate, but an encrypted
certificate (i.e., the certificate encrypted under a randomly-generated
symmetric key, and the symmetric key encrypted under the
public key for which the certification request is being made) -- this
is the "indirect" method mentioned previously in <xref target="sect-4.3.2"/>. The
end entity proves knowledge of the private decryption key to the CA
by providing the correct CertHash for this certificate in the
certConf message.  This demonstrates POP because the EE can only
compute the correct CertHash if it is able to recover the
certificate, and it can only recover the certificate if it is able to
decrypt the symmetric key using the required private key.  Clearly,
for this to work, the CA <bcp14>MUST NOT</bcp14> publish the certificate until the
certConf message arrives (when certHash is to be used to demonstrate
POP).  See <xref target="sect-5.3.18"/> for further details.</t>
          </section>
          <section anchor="sect-5.2.8.3">
            <name>Challenge-Response Protocol</name>
            <t>By having the end entity engage in a challenge-response protocol
(using the messages POPODecKeyChall and POPODecKeyResp; see below)
between CertReqMessages and CertRepMessage -- this is the "direct"
method mentioned previously in <xref target="sect-4.3.2"/>.  (This method would
typically be used in an environment in which an RA verifies POP and
then makes a certification request to the CA on behalf of the end
entity.  In such a scenario, the CA trusts the RA to have done POP
correctly before the RA requests a certificate for the end entity.)
The complete protocol then looks as follows (note that req' does not
necessarily encapsulate req as a nested message):</t>
            <artwork><![CDATA[
                EE            RA            CA
                 ---- req ---->
                 <--- chall ---
                 ---- resp --->
                               ---- req' --->
                               <--- rep -----
                               ---- conf --->
                               <--- ack -----
                 <--- rep -----
                 ---- conf --->
                 <--- ack -----
]]></artwork>
            <t>This protocol is obviously much longer than the 3-way exchange given
in <xref target="sect-5.2.8.2"/> above, but allows a local Registration Authority to be
involved and has the property that the certificate itself is not
actually created until the proof-of-possession is complete.  In some
environments, a different order of the above messages may be
required, such as the following (this may be determined by policy):</t>
            <artwork><![CDATA[
                EE            RA            CA
                 ---- req ---->
                 <--- chall ---
                 ---- resp --->
                               ---- req' --->
                               <--- rep -----
                 <--- rep -----
                 ---- conf --->
                               ---- conf --->
                               <--- ack -----
                 <--- ack -----
]]></artwork>
            <t>If the cert. request is for a key agreement key (KAK) pair, then the
POP can use any of the 3 ways described above for enc. key pairs,
with the following changes: (1) the parenthetical text of <xref target="sect-5.2.8.2"/>
is replaced with "(i.e., the certificate encrypted under the symmetric key
derived from the CA's private KAK and the public key for which the certification
request is being made)"; (2) the first
parenthetical text of the challenge field of "Challenge" below is
replaced with "(using PreferredSymmAlg (see <xref target="sect-5.3.19.4"/> and <xref target="sect-d.5"/>)
and a symmetric key derived from the CA's private KAK and the public key
for which the certification request is being made)".  Alternatively, the
POP can use the POPOSigningKey structure
given in <xref target="RFC4211"/> (where the alg field is DHBasedMAC and the signature
field is the MAC) as a fourth alternative for demonstrating POP if
the CA already has a D-H certificate that is known to the EE.</t>
            <t>The challenge-response messages for proof-of-possession of a private
decryption key are specified as follows (see <xref target="MvOV97"/>, p.404 for
details).  Note that this challenge-response exchange is associated
with the preceding cert. request message (and subsequent cert.
response and confirmation messages) by the transactionID used in the
PKIHeader and by the protection (MACing or signing) applied to the
PKIMessage.</t>
            <sourcecode type="asn.1"><![CDATA[
  POPODecKeyChallContent ::= SEQUENCE OF Challenge

  Challenge ::= SEQUENCE {
     owf                 AlgorithmIdentifier  OPTIONAL,
     witness             OCTET STRING,
     challenge           OCTET STRING
  }

  Rand ::= SEQUENCE {
     int                 INTEGER,
     sender              GeneralName
  }
]]></sourcecode>
            <t>Note that the size of Rand needs to be appropriate for encryption
under the public key of the requester.  Given that "int" will
typically not be longer than 64 bits, this leaves well over 100 bytes
of room for the "sender" field when the modulus is 1024 bits.  If, in
some environment, names are so long that they cannot fit (e.g., very
long DNs), then whatever portion will fit should be used (as long as
it includes at least the common name, and as long as the receiver is
able to deal meaningfully with the abbreviation).</t>
            <sourcecode type="asn.1"><![CDATA[
  POPODecKeyRespContent ::= SEQUENCE OF INTEGER
]]></sourcecode>
          </section>
          <section anchor="sect-5.2.8.4">
            <name>Summary of PoP Options</name>
            <t>The text in this section provides several options with respect to POP
techniques.  Using "SK" for "signing key", "EK" for "encryption key",
and "KAK" for "key agreement key", the techniques may be summarized
as follows:</t>
            <artwork><![CDATA[
   RAVerified;
   SKPOP;
   EKPOPThisMessage;
   KAKPOPThisMessage;
   KAKPOPThisMessageDHMAC;
   EKPOPEncryptedCert;
   KAKPOPEncryptedCert;
   EKPOPChallengeResp; and
   KAKPOPChallengeResp.
]]></artwork>
            <t>Given this array of options, it is natural to ask how an end entity
can know what is supported by the CA/RA (i.e., which options it may
use when requesting certificates).  The following guidelines should
clarify this situation for EE implementers.</t>
            <t>RAVerified.  This is not an EE decision; the RA uses this if and only
if it has verified POP before forwarding the request on to the CA, so
it is not possible for the EE to choose this technique.</t>
            <t>SKPOP.  If the EE has a signing key pair, this is the only POP method
specified for use in the request for a corresponding certificate.</t>
            <t>EKPOPThisMessage and KAKPOPThisMessage.  Whether or not to give up
its private key to the CA/RA is an EE decision.  If the EE decides to
reveal its key, then these are the only POP methods available in this
specification to achieve this (and the key pair type will determine
which of these two methods to use).</t>
            <t>KAKPOPThisMessageDHMAC.  The EE can only use this method if (1) the
CA has a DH certificate available for this purpose, and (2) the EE
already has a copy of this certificate.  If both these conditions
hold, then this technique is clearly supported and may be used by the
EE, if desired.</t>
            <t>EKPOPEncryptedCert, KAKPOPEncryptedCert, EKPOPChallengeResp,
KAKPOPChallengeResp.  The EE picks one of these (in the
subsequentMessage field) in the request message, depending upon
preference and key pair type.  The EE is not doing POP at this point;
it is simply indicating which method it wants to use.  Therefore, if
the CA/RA replies with a "badPOP" error, the EE can re-request using
the other POP method chosen in subsequentMessage.  Note, however,
that this specification encourages the use of the EncryptedCert
choice and, furthermore, says that the challenge-response would
typically be used when an RA is involved and doing POP verification.
Thus, the EE should be able to make an intelligent decision regarding
which of these POP methods to choose in the request message.</t>
            <t>&lt; ToDo: Possibly add a section describing a POP mechanism for KEM keys.
&gt;</t>
          </section>
        </section>
        <section anchor="sect-5.2.9">
          <name>GeneralizedTime</name>
          <t>GeneralizedTime is a standard ASN.1 type and <bcp14>SHALL</bcp14> be used as specified in <xref target="RFC5280">RFC 5280 Section 4.1.2.5.2</xref>.</t>
        </section>
      </section>
      <section anchor="sect-5.3">
        <name>Operation-Specific Data Structures</name>
        <section anchor="sect-5.3.1">
          <name>Initialization Request</name>
          <t>An Initialization request message contains as the PKIBody a
CertReqMessages data structure, which specifies the requested
certificate(s).  Typically, SubjectPublicKeyInfo, KeyId, and Validity
are the template fields which may be supplied for each certificate
requested (see the profiles defined in [RFCBBBB] Section 4.1.1, <xref target="sect-c.4"/>
and <xref target="sect-d.7"/> for further information).  This
message is intended to be used for entities when first initializing
into the PKI.</t>
          <t>See <xref target="sect-5.2.1"/> and <xref target="RFC4211"/> for CertReqMessages syntax.</t>
        </section>
        <section anchor="sect-5.3.2">
          <name>Initialization Response</name>
          <t>An Initialization response message contains as the PKIBody an
CertRepMessage data structure, which has for each certificate
requested a PKIStatusInfo field, a subject certificate, and possibly
a private key (normally encrypted using EnvelopedData, see [RFCBBBB] Section
4.1.6 for further information).</t>
          <t>See <xref target="sect-5.3.4"/> for CertRepMessage syntax.  Note that if the PKI
Message Protection is "shared secret information" (see <xref target="sect-5.1.3"/>),
then any certificate transported in the caPubs field may be
directly trusted as a root CA certificate by the initiator.</t>
        </section>
        <section anchor="sect-5.3.3">
          <name>Certification Request</name>
          <t>A Certification request message contains as the PKIBody a
CertReqMessages data structure, which specifies the requested
certificates (see the profiles defined in [RFCBBBB] Section 4.1.2 and <xref target="sect-c.2"/>
for further information).  This message is intended to be used for existing PKI
entities who wish to obtain additional certificates.</t>
          <t>See <xref target="sect-5.2.1"/> and <xref target="RFC4211"/> for CertReqMessages syntax.</t>
          <t>Alternatively, the PKIBody <bcp14>MAY</bcp14> be a CertificationRequest (this
structure is fully specified by the ASN.1 structure
CertificationRequest given in <xref target="RFC2986"/>, see the profiles defined in
[RFCBBBB] Section 4.1.4 for further information).
This structure may be
required for certificate requests for signing key pairs when
interoperation with legacy systems is desired, but its use is
strongly discouraged whenever not absolutely necessary.</t>
        </section>
        <section anchor="sect-5.3.4">
          <name>Certification Response</name>
          <t>A Certification response message contains as the PKIBody a
CertRepMessage data structure, which has a status value for each
certificate requested, and optionally has a CA public key, failure
information, a subject certificate, and an encrypted private key.</t>
          <sourcecode type="asn.1"><![CDATA[
  CertRepMessage ::= SEQUENCE {
     caPubs          [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
                         OPTIONAL,
     response            SEQUENCE OF CertResponse
  }

  CertResponse ::= SEQUENCE {
     certReqId           INTEGER,
     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
     publicationInfo [1] PKIPublicationInfo   OPTIONAL
  }

  CertOrEncCert ::= CHOICE {
     certificate     [0] CMPCertificate,
     encryptedCert   [1] EncryptedKey
  }
]]></sourcecode>
          <t>A p10cr message contains exactly one CertificationRequestInfo data structure
as specified in <xref target="RFC2986">PKCS#10</xref> but no certReqId.
Therefore, the certReqId in the corresponding certification
response (cp) message <bcp14>MUST</bcp14> be set to -1.</t>
          <t>Only one of the failInfo (in PKIStatusInfo) and certificate (in
CertifiedKeyPair) fields can be present in each CertResponse
(depending on the status).  For some status values (e.g., waiting),
neither of the optional fields will be present.</t>
          <t>Given an EncryptedCert and the relevant decryption key, the
certificate may be obtained.  The purpose of this is to allow a CA to
return the value of a certificate, but with the constraint that only
the intended recipient can obtain the actual certificate.  The
benefit of this approach is that a CA may reply with a certificate
even in the absence of a proof that the requester is the end entity
that can use the relevant private key (note that the proof is not
obtained until the certConf message is received by the CA).  Thus,
the CA will not have to revoke that certificate in the event that
something goes wrong with the proof-of-possession (but <bcp14>MAY</bcp14> do so
anyway, depending upon policy).</t>
          <t>The use of EncryptedKey is described in <xref target="sect-5.2.2"/>.</t>
          <t>Note: To indicate support for EnvelopedData the pvno cmp2021 is introduced
by this document. Details on the usage of different pvno values are described
in <xref target="sect-7"/>.</t>
        </section>
        <section anchor="sect-5.3.5">
          <name>Key Update Request Content</name>
          <t>For key update requests the CertReqMessages syntax is used.
Typically, SubjectPublicKeyInfo, KeyId, and Validity are the template
fields that may be supplied for each key to be updated (see the profiles
defined in [RFCBBBB] Section 4.1.3 and <xref target="sect-c.6"/> for further information).
This message
is intended to be used to request updates to existing (non-revoked
and non-expired) certificates (therefore, it is sometimes referred to
as a "Certificate Update" operation).  An update is a replacement
certificate containing either a new subject public key or the current
subject public key (although the latter practice may not be
appropriate for some environments).</t>
          <t>See<xref target="sect-5.2.1"/> and <xref target="RFC4211"/> for CertReqMessages syntax.</t>
        </section>
        <section anchor="sect-5.3.6">
          <name>Key Update Response Content</name>
          <t>For key update responses, the CertRepMessage syntax is used.  The
response is identical to the initialization response.</t>
          <t>See <xref target="sect-5.3.4"/> for CertRepMessage syntax.</t>
        </section>
        <section anchor="sect-5.3.7">
          <name>Key Recovery Request Content</name>
          <t>For key recovery requests the syntax used is identical to the
initialization request CertReqMessages.  Typically,
SubjectPublicKeyInfo and KeyId are the template fields that may be
used to supply a signature public key for which a certificate is
required (see <xref target="sect-c"/> profiles for further information).</t>
          <t>See <xref target="sect-5.2.1"/> and <xref target="RFC4211"/> for CertReqMessages syntax.  Note that if a
key history is required, the requester must supply a Protocol
Encryption Key control in the request message.</t>
        </section>
        <section anchor="sect-5.3.8">
          <name>Key Recovery Response Content</name>
          <t>For key recovery responses, the following syntax is used.  For some
status values (e.g., waiting) none of the optional fields will be
present.</t>
          <sourcecode type="asn.1"><![CDATA[
  KeyRecRepContent ::= SEQUENCE {
     status            PKIStatusInfo,
     newSigCert    [0] Certificate                 OPTIONAL,
     caCerts       [1] SEQUENCE SIZE (1..MAX) OF
                                  Certificate      OPTIONAL,
     keyPairHist   [2] SEQUENCE SIZE (1..MAX) OF
                                  CertifiedKeyPair OPTIONAL
  }
]]></sourcecode>
        </section>
        <section anchor="sect-5.3.9">
          <name>Revocation Request Content</name>
          <t>When requesting revocation of a certificate (or several
certificates), the following data structure is used (see the profiles defined
in [RFCBBBB] Section 4.2 for further information).  The name of the
requester is present in the PKIHeader structure.</t>
          <sourcecode type="asn.1"><![CDATA[
  RevReqContent ::= SEQUENCE OF RevDetails

  RevDetails ::= SEQUENCE {
     certDetails         CertTemplate,
     crlEntryDetails     Extensions       OPTIONAL
  }
]]></sourcecode>
        </section>
        <section anchor="sect-5.3.10">
          <name>Revocation Response Content</name>
          <t>The revocation response is the response to the above message.  If
produced, this is sent to the requester of the revocation.  (A
separate revocation announcement message <bcp14>MAY</bcp14> be sent to the subject
of the certificate for which revocation was requested.)</t>
          <sourcecode type="asn.1"><![CDATA[
  RevRepContent ::= SEQUENCE {
     status        SEQUENCE SIZE (1..MAX) OF PKIStatusInfo,
     revCerts  [0] SEQUENCE SIZE (1..MAX) OF CertId OPTIONAL,
     crls      [1] SEQUENCE SIZE (1..MAX) OF CertificateList
                   OPTIONAL
  }
]]></sourcecode>
        </section>
        <section anchor="sect-5.3.11">
          <name>Cross Certification Request Content</name>
          <t>Cross certification requests use the same syntax (CertReqMessages) as
normal certification requests, with the restriction that the key pair
<bcp14>MUST</bcp14> have been generated by the requesting CA and the private key
<bcp14>MUST NOT</bcp14> be sent to the responding CA (see the profiles defined in <xref target="sect-d.6"/>
for further information).  This request <bcp14>MAY</bcp14> also be used
by subordinate CAs to get their certificates signed by the parent CA.</t>
          <t>See <xref target="sect-5.2.1"/> and <xref target="RFC4211"/> for CertReqMessages syntax.</t>
        </section>
        <section anchor="sect-5.3.12">
          <name>Cross Certification Response Content</name>
          <t>Cross certification responses use the same syntax (CertRepMessage) as
normal certification responses, with the restriction that no
encrypted private key can be sent.</t>
          <t>See <xref target="sect-5.3.4"/> for CertRepMessage syntax.</t>
        </section>
        <section anchor="sect-5.3.13">
          <name>CA Key Update Announcement Content</name>
          <t>When a CA updates its own key pair, the following data structure <bcp14>MAY</bcp14>
be used to announce this event.</t>
          <sourcecode type="asn.1"><![CDATA[
  CAKeyUpdAnnContent ::= SEQUENCE {
     oldWithNew         Certificate,
     newWithOld         Certificate,
     newWithNew         Certificate
  }
]]></sourcecode>
        </section>
        <section anchor="sect-5.3.14">
          <name>Certificate Announcement</name>
          <t>This structure <bcp14>MAY</bcp14> be used to announce the existence of certificates.</t>
          <t>Note that this message is intended to be used for those cases (if
any) where there is no pre-existing method for publication of
certificates; it is not intended to be used where, for example, X.500
is the method for publication of certificates.</t>
          <sourcecode type="asn.1"><![CDATA[
  CertAnnContent ::= Certificate
]]></sourcecode>
        </section>
        <section anchor="sect-5.3.15">
          <name>Revocation Announcement</name>
          <t>When a CA has revoked, or is about to revoke, a particular
certificate, it <bcp14>MAY</bcp14> issue an announcement of this (possibly upcoming)
event.</t>
          <sourcecode type="asn.1"><![CDATA[
  RevAnnContent ::= SEQUENCE {
     status              PKIStatus,
     certId              CertId,
     willBeRevokedAt     GeneralizedTime,
     badSinceDate        GeneralizedTime,
     crlDetails          Extensions  OPTIONAL
  }
]]></sourcecode>
          <t>A CA <bcp14>MAY</bcp14> use such an announcement to warn (or notify) a subject that
its certificate is about to be (or has been) revoked.  This would
typically be used where the request for revocation did not come from
the subject concerned.</t>
          <t>The willBeRevokedAt field contains the time at which a new entry will
be added to the relevant CRLs.</t>
        </section>
        <section anchor="sect-5.3.16">
          <name>CRL Announcement</name>
          <t>When a CA issues a new CRL (or set of CRLs) the following data
structure <bcp14>MAY</bcp14> be used to announce this event.</t>
          <sourcecode type="asn.1"><![CDATA[
  CRLAnnContent ::= SEQUENCE OF CertificateList
]]></sourcecode>
        </section>
        <section anchor="sect-5.3.17">
          <name>PKI Confirmation Content</name>
          <t>This data structure is used in the protocol exchange as the final
PKIMessage.  Its content is the same in all cases -- actually there
is no content since the PKIHeader carries all the required
information.</t>
          <sourcecode type="asn.1"><![CDATA[
  PKIConfirmContent ::= NULL
]]></sourcecode>
          <t>Use of this message for certificate confirmation is <bcp14>NOT RECOMMENDED</bcp14>;
certConf <bcp14>SHOULD</bcp14> be used instead.  Upon receiving a PKIConfirm for a
certificate response, the recipient <bcp14>MAY</bcp14> treat it as a certConf with
all certificates being accepted.</t>
        </section>
        <section anchor="sect-5.3.18">
          <name>Certificate Confirmation Content</name>
          <t>This data structure is used by the client to send a confirmation to
the CA/RA to accept or reject certificates.</t>
          <sourcecode type="asn.1"><![CDATA[
  CertStatus ::= SEQUENCE {
     certHash    OCTET STRING,
     certReqId   INTEGER,
     statusInfo  PKIStatusInfo OPTIONAL,
     hashAlg [0] AlgorithmIdentifier{DIGEST-ALGORITHM, {...}}
                 OPTIONAL
  }
]]></sourcecode>
          <t>The hashAlg field <bcp14>SHOULD</bcp14> be used only in exceptional cases where the signatureAlgorithm
of the certificate to be confirmed does not specify a hash algorithm in the
OID or in the parameters or does not define a hash algorithm to use with
CMP, e.g., for EdDSA in [RFCCCCC] Section 3.3). Otherwise, the certHash value
<bcp14>SHALL</bcp14> be computed using the same hash algorithm as used to create and verify
the certificate signature. If hashAlg is used, the CMP version indicated
by the certConf message header must be cmp2021(3).</t>
          <t>For any particular CertStatus, omission of the statusInfo field
indicates ACCEPTANCE of the specified certificate.  Alternatively,
explicit status details (with respect to acceptance or rejection) <bcp14>MAY</bcp14>
be provided in the statusInfo field, perhaps for auditing purposes at
the CA/RA.</t>
          <t>Within CertConfirmContent, omission of a CertStatus structure
corresponding to a certificate supplied in the previous response
message indicates REJECTION of the certificate.  Thus, an empty
CertConfirmContent (a zero-length SEQUENCE) <bcp14>MAY</bcp14> be used to indicate
rejection of all supplied certificates.  See <xref target="sect-5.2.8"/>, item (2),
for a discussion of the certHash field with respect to
proof-of-possession.</t>
        </section>
        <section anchor="sect-5.3.19">
          <name>PKI General Message Content</name>
          <sourcecode type="asn.1"><![CDATA[
  InfoTypeAndValue ::= SEQUENCE {
     infoType               OBJECT IDENTIFIER,
     infoValue              ANY DEFINED BY infoType  OPTIONAL
  }

  -- where {id-it} = {id-pkix 4} = {1 3 6 1 5 5 7 4}
  GenMsgContent ::= SEQUENCE OF InfoTypeAndValue
]]></sourcecode>
          <section anchor="sect-5.3.19.1">
            <name>CA Protocol Encryption Certificate</name>
            <t>This <bcp14>MAY</bcp14> be used by the EE to get a certificate from the CA to use to
protect sensitive information during the protocol.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 1}, < absent >
  GenRep:    {id-it 1}, Certificate | < absent >
]]></artwork>
            <t>EEs <bcp14>MUST</bcp14> ensure that the correct certificate is used for this
purpose.</t>
          </section>
          <section anchor="sect-5.3.19.2">
            <name>Signing Key Pair Types</name>
            <t>This <bcp14>MAY</bcp14> be used by the EE to get the list of signature algorithm whose subject
public key values the CA is willing to
certify.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 2}, < absent >
  GenRep:    {id-it 2}, SEQUENCE SIZE (1..MAX) OF
                          AlgorithmIdentifier
]]></artwork>
            <t>Note: For the purposes of this exchange, rsaEncryption and rsaWithSHA1, for
example, are considered to be equivalent; the question being asked is, "Is
the CA willing to certify an RSA public key?"</t>
            <t>Note: In case several EC curves are supported, several id-ecPublicKey elements
as defined in <xref target="RFC5480">RFC 5480</xref> need to be given, one per named curve.</t>
          </section>
          <section anchor="sect-5.3.19.3">
            <name>Encryption/Key Agreement Key Pair Types</name>
            <t>This <bcp14>MAY</bcp14> be used by the client to get the list of encryption/key
agreement algorithms whose subject public key values the CA is
willing to certify.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 3}, < absent >
  GenRep:    {id-it 3}, SEQUENCE SIZE (1..MAX) OF
                          AlgorithmIdentifier
]]></artwork>
            <t>Note: In case several EC curves are supported, several id-ecPublicKey elements
as defined in <xref target="RFC5480">RFC 5480</xref> need to be given, one per named curve.</t>
          </section>
          <section anchor="sect-5.3.19.4">
            <name>Preferred Symmetric Algorithm</name>
            <t>This <bcp14>MAY</bcp14> be used by the client to get the CA-preferred symmetric
encryption algorithm for any confidential information that needs to
be exchanged between the EE and the CA (for example, if the EE wants
to send its private decryption key to the CA for archival purposes).</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 4}, < absent >
  GenRep:    {id-it 4}, AlgorithmIdentifier
]]></artwork>
          </section>
          <section anchor="sect-5.3.19.5">
            <name>Updated CA Key Pair</name>
            <t>This <bcp14>MAY</bcp14> be used by the CA to announce a CA key update event.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 5}, CAKeyUpdAnnContent
]]></artwork>
          </section>
          <section anchor="sect-5.3.19.6">
            <name>CRL</name>
            <t>This <bcp14>MAY</bcp14> be used by the client to get a copy of the latest CRL.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 6}, < absent >
  GenRep:    {id-it 6}, CertificateList
]]></artwork>
          </section>
          <section anchor="sect-5.3.19.7">
            <name>Unsupported Object Identifiers</name>
            <t>This is used by the server to return a list of object identifiers
that it does not recognize or support from the list submitted by the
client.</t>
            <artwork><![CDATA[
  GenRep:    {id-it 7}, SEQUENCE SIZE (1..MAX) OF OBJECT IDENTIFIER
]]></artwork>
          </section>
          <section anchor="sect-5.3.19.8">
            <name>Key Pair Parameters</name>
            <t>This <bcp14>MAY</bcp14> be used by the EE to request the domain parameters to use
for generating the key pair for certain public-key algorithms.  It
can be used, for example, to request the appropriate P, Q, and G to
generate the DH/DSA key, or to request a set of well-known elliptic
curves.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 10}, OBJECT IDENTIFIER -- (Algorithm object-id)
  GenRep:    {id-it 11}, AlgorithmIdentifier | < absent >
]]></artwork>
            <t>An absent infoValue in the GenRep indicates that the algorithm
specified in GenMsg is not supported.</t>
            <t>EEs <bcp14>MUST</bcp14> ensure that the parameters are acceptable to it and that the
GenRep message is authenticated (to avoid substitution attacks).</t>
          </section>
          <section anchor="sect-5.3.19.9">
            <name>Revocation Passphrase</name>
            <t>This <bcp14>MAY</bcp14> 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 that the appropriate
signing private key is no longer available to authenticate the request).
See <xref target="sect-b"/> for further details on the use of this mechanism.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 12}, EncryptedKey
  GenRep:    {id-it 12}, < absent >
]]></artwork>
            <t>The use of EncryptedKey is described in <xref target="sect-5.2.2"/>.</t>
          </section>
          <section anchor="sect-5.3.19.10">
            <name>ImplicitConfirm</name>
            <t>See <xref target="sect-5.1.1.1"/> for the definition and use of {id-it 13}.</t>
          </section>
          <section anchor="sect-5.3.19.11">
            <name>ConfirmWaitTime</name>
            <t>See <xref target="sect-5.1.1.2"/> for the definition and use of {id-it 14}.</t>
          </section>
          <section anchor="sect-5.3.19.12">
            <name>Original PKIMessage</name>
            <t>See <xref target="sect-5.1.1.3"/> for the definition and use of {id-it 15}.</t>
          </section>
          <section anchor="sect-5.3.19.13">
            <name>Supported Language Tags</name>
            <t>This <bcp14>MAY</bcp14> be used to determine the appropriate language tag to use in
subsequent messages.  The sender sends its list of supported
languages (in order, most preferred to least); the receiver returns
the one it wishes to use.  (Note: each UTF8String <bcp14>MUST</bcp14> include a
language tag.)  If none of the offered tags are supported, an error
<bcp14>MUST</bcp14> be returned.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 16}, SEQUENCE SIZE (1..MAX) OF UTF8String
  GenRep:    {id-it 16}, SEQUENCE SIZE (1) OF UTF8String
]]></artwork>
          </section>
          <section anchor="sect-5.3.19.14">
            <name>CA Certificates</name>
            <t>This <bcp14>MAY</bcp14> be used by the client to get CA certificates.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 17}, < absent >
  GenRep:    {id-it 17}, SEQUENCE SIZE (1..MAX) OF
                           CMPCertificate | < absent >
]]></artwork>
          </section>
          <section anchor="sect-5.3.19.15">
            <name>Root CA Update</name>
            <t>This <bcp14>MAY</bcp14> be used by the client to get an update of a root CA certificate,
which is provided in the body of the request message.  In contrast to the
ckuann message this approach follows the request/response model.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 20}, RootCaCertValue | < absent >
  GenRep:    {id-it 18}, RootCaKeyUpdateContent | < absent >
]]></artwork>
            <sourcecode type="asn.1"><![CDATA[
  RootCaCertValue ::= CMPCertificate

  RootCaKeyUpdateValue ::= RootCaKeyUpdateContent

  RootCaKeyUpdateContent ::= SEQUENCE {
     newWithNew              CMPCertificate,
     newWithOld          [0] CMPCertificate OPTIONAL,
     oldWithNew          [1] CMPCertificate OPTIONAL
  }
]]></sourcecode>
            <t>Note: In contrast to CAKeyUpdAnnContent, this type offers omitting newWithOld
and oldWithNew in the GenRep message, depending on the needs of the EE.</t>
          </section>
          <section anchor="sect-5.3.19.16">
            <name>Certificate Request Template</name>
            <t>This <bcp14>MAY</bcp14> be used by the client to get a template containing requirements
for certificate request attributes and extensions. The controls id-regCtrl-algId
and id-regCtrl-rsaKeyLen <bcp14>MAY</bcp14> contain details on the types of subject public
keys the CA is willing to certify.</t>
            <t>The id-regCtrl-algId control <bcp14>MAY</bcp14> be used to identify a cryptographic algorithm,
see <xref target="RFC5280">RFC 5280 Section 4.1.2.7</xref>, other than rsaEncryption. The algorithm field <bcp14>SHALL</bcp14> identify a cryptographic
algorithm. The contents of the optional parameters field will vary according
to the algorithm identified. For example, when the algorithm is set to id-ecPublicKey,
the parameters identify the elliptic curve to be used, see <xref target="RFC5480"/>.</t>
            <t>Note: The client may specify a profile name in the certProfile field, see <xref target="sect-5.1.1.4"/>.</t>
            <t>The id-regCtrl-rsaKeyLen control <bcp14>SHALL</bcp14> be used for algorithm rsaEncryption
and <bcp14>SHALL</bcp14> contain the intended modulus bit length of the RSA key.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 19}, < absent >
  GenRep:    {id-it 19}, CertReqTemplateContent | < absent >
]]></artwork>
            <sourcecode type="asn.1"><![CDATA[
  CertReqTemplateValue  ::= CertReqTemplateContent

  CertReqTemplateContent ::= SEQUENCE {
     certTemplate           CertTemplate,
     keySpec                Controls OPTIONAL }

  Controls  ::= SEQUENCE SIZE (1..MAX) OF AttributeTypeAndValue

  id-regCtrl-algId OBJECT IDENTIFIER ::= { iso(1)
     identified-organization(3) dod(6) internet(1) security(5)
     mechanisms(5) pkix(7) pkip(5) regCtrl(1) 11 }

  AlgIdCtrl ::= AlgorithmIdentifier{ALGORITHM, {...}}

  id-regCtrl-rsaKeyLen OBJECT IDENTIFIER ::= { iso(1)
     identified-organization(3) dod(6) internet(1) security(5)
     mechanisms(5) pkix(7) pkip(5) regCtrl(1) 12 }

  RsaKeyLenCtrl ::= INTEGER (1..MAX)
]]></sourcecode>
            <t>The CertReqTemplateValue contains the prefilled certTemplate to be used for
a future certificate request.  The publicKey field in the certTemplate <bcp14>MUST
NOT</bcp14> be used.  In case the PKI management entity wishes to specify supported
public-key algorithms, the keySpec field <bcp14>MUST</bcp14> be used.  One AttributeTypeAndValue
per supported algorithm or RSA key length <bcp14>MUST</bcp14> be used.</t>
            <t>Note: The Controls ASN.1 type is defined in <xref target="RFC4211">CRMF Section 6</xref></t>
          </section>
          <section anchor="sect-5.3.19.17">
            <name>CRL Update Retrieval</name>
            <t>This <bcp14>MAY</bcp14> 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 has, if available.
A CRL source is given either by a DistributionPointName or the GeneralNames
of the issuing CA.  The DistributionPointName should be treated as an internal
pointer to 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 <bcp14>SHALL</bcp14> provide
only those CRLs that are more recent than the ones indicated by the client.</t>
            <artwork><![CDATA[
  GenMsg:    {id-it 22}, SEQUENCE SIZE (1..MAX) OF CRLStatus
  GenRep:    {id-it 23}, SEQUENCE SIZE (1..MAX) OF
                           CertificateList  |  < absent >
]]></artwork>
            <sourcecode type="asn.1"><![CDATA[
  CRLSource ::= CHOICE {
     dpn          [0] DistributionPointName,
     issuer       [1] GeneralNames }

  CRLStatus ::= SEQUENCE {
     source       CRLSource,
     thisUpdate   Time OPTIONAL }
]]></sourcecode>
          </section>
          <section anchor="sect-5.3.19.18">
            <name>KEM Ciphertext</name>
            <t>See <xref target="sect-5.1.3.4"/> for the definition and use of {id-it TBD1}.</t>
          </section>
        </section>
        <section anchor="sect-5.3.20">
          <name>PKI General Response Content</name>
          <sourcecode type="asn.1"><![CDATA[
  GenRepContent ::= SEQUENCE OF InfoTypeAndValue
]]></sourcecode>
          <t>Examples of GenReps that <bcp14>MAY</bcp14> be supported include those listed in the
subsections of <xref target="sect-5.3.19"/>.</t>
        </section>
        <section anchor="sect-5.3.21">
          <name>Error Message Content</name>
          <t>This data structure <bcp14>MAY</bcp14> be used by EE, CA, or RA to convey error info and
by a PKI management entity to initiate delayed delivery of responses.</t>
          <sourcecode type="asn.1"><![CDATA[
  ErrorMsgContent ::= SEQUENCE {
     pKIStatusInfo          PKIStatusInfo,
     errorCode              INTEGER           OPTIONAL,
     errorDetails           PKIFreeText       OPTIONAL
  }
]]></sourcecode>
          <t>This message <bcp14>MAY</bcp14> be generated at any time during a PKI transaction. If the
client sends this request, the server <bcp14>MUST</bcp14> respond with a PKIConfirm response,
or another ErrorMsg if any part of the header is not valid.</t>
          <t>In case a PKI management entity sends an error message to the EE with the
pKIStatusInfo field containing the status "waiting", the EE <bcp14>SHOULD</bcp14> initiate
polling as described in <xref target="sect-5.3.22"/>.
If the EE does not initiate polling, both sides <bcp14>MUST</bcp14> treat this message
as the end of the transaction (if a transaction is in progress).</t>
          <t>If protection is desired on the message, the client <bcp14>MUST</bcp14> protect it
using the same technique (i.e., signature or MAC) as the starting
message of the transaction.  The CA <bcp14>MUST</bcp14> always sign it with a
signature key.</t>
        </section>
        <section anchor="sect-5.3.22">
          <name>Polling Request and Response</name>
          <t>This pair of messages is intended to handle scenarios in which the client
needs to poll the server to determine the status of an outstanding response
(i.e., when the "waiting" PKIStatus has been received).</t>
          <sourcecode type="asn.1"><![CDATA[
  PollReqContent ::= SEQUENCE OF SEQUENCE {
     certReqId    INTEGER }

  PollRepContent ::= SEQUENCE OF SEQUENCE {
     certReqId    INTEGER,
     checkAfter   INTEGER,  -- time in seconds
     reason       PKIFreeText OPTIONAL }
]]></sourcecode>
          <t>In response to an ir, cr, p10cr, or kur request message, polling is initiated
with an ip, cp, or kup response message containing status "waiting". For
any type of request message, polling can be initiated with an error response
messages with status "waiting". The following clauses describe how polling
messages are used.  It is assumed that multiple certConf messages can be
sent during transactions.  There will be one sent in response to each ip,
cp, or kup that contains a CertStatus for an issued certificate.</t>
          <ol spacing="normal" type="%d"><li>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.  An EE will
  send a pollReq message in response to each CertResponse element of an ip,
  cp, or kup message with status "waiting" and in response to an error message
  with status "waiting".  Its certReqId <bcp14>MUST</bcp14> be either the index of a CertResponse
  data structure with status "waiting" or -1 referring to the complete response.</li>
            <li>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 the final response
  to some other type of request is available; otherwise, it will return a pollRep.</li>
            <li>If the EE receives a pollRep, it will wait for at least the number of seconds
  given in the checkAfter field before sending another pollReq.</li>
            <li>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 response, then this
  will be treated as the final response to the original request.</li>
          </ol>
          <t>The following client-side state machine describes polling for individual
CertResponse elements.</t>
          <artwork><![CDATA[
                            START
                              |
                              v
                           Send ir
                              | ip
                              v
                         Check status
                         of returned <------------------------+
                            certs                             |
                              |                               |
    +------------------------>|<------------------+           |
    |                         |                   |           |
    |        (issued)         v       (waiting)   |           |
  Add to <----------- Check CertResponse ------> Add to       |
 conf list           for each certificate      pending list   |
                              /                               |
                             /                                |
                (conf list) /     (empty conf list)           |
                           /                     ip           |
                          /                 +-----------------+
   (empty pending list)  /                  |    pollRep
     END <---- Send certConf        Send pollReq---------->Wait
                      |                 ^   ^               |
                      |                 |   |               |
                      +-----------------+   +---------------+
                         (pending list)
]]></artwork>
          <t>In the following exchange, the end entity is enrolling for two certificates
in one request.</t>
          <artwork><![CDATA[
 Step  End Entity                       PKI
 --------------------------------------------------------------------
 1   Format ir
 2                    -> ir      ->
 3                                    Handle ir
 4                                    Manual intervention is
                                      required for both certs.
 5                    <- ip      <-
 6   Process ip
 7   Format pollReq
 8                    -> pollReq  ->
 9                                    Check status of cert requests
 10                                   Certificates not ready
 11                                   Format pollRep
 12                   <- pollRep  <-
 13  Wait
 14  Format pollReq
 15                   -> pollReq  ->
 16                                   Check status of cert requests
 17                                   One certificate is ready
 18                                   Format ip
 19                   <- ip       <-
 20  Handle ip
 21  Format certConf
 22                   -> certConf ->
 23                                   Handle certConf
 24                                   Format ack
 25                   <- pkiConf   <-
 26  Format pollReq
 27                   -> pollReq  ->
 28                                   Check status of certificate
 29                                   Certificate is ready
 30                                   Format ip
 31                   <- ip       <-
 31  Handle ip
 32  Format certConf
 33                   -> certConf ->
 34                                   Handle certConf
 35                                   Format ack
 36                   <- pkiConf  <-
]]></artwork>
          <t>The following client-side state machine describes polling for a complete
response message.</t>
          <artwork><![CDATA[
                                Start
                                  |
                                  | Send request
                                  |
             +----------- Receive response ------------+
             |                                         |
             | ip/cp/kup/error with                    | other
             | status "waiting"                        | response
             |                                         |
             v                                         |
 +------> Polling                                      |
 |           |                                         |
 |           | Send pollReq                            |
 |           | Receive response                        |
 |           |                                         |
 |   pollRep | other response                          |
 +-----------+------------------->+<-------------------+
                                  |
                                  v
                            Handle response
                                  |
                                  v
                                 End
]]></artwork>
          <t>In the following exchange, the end entity is sending a general message request,
and the response is delayed by the server.</t>
          <artwork><![CDATA[
 Step  End Entity                       PKI
 --------------------------------------------------------------------
 1   Format genm
 2                  -> genm     ->
 3                                 Handle genm
 4                                 delay in response is necessary
 5                                 Format error message "waiting"
                                     with certReqId set to -1
 6                   <- error   <-
 7   Process error
 8   Format pollReq
 9                   -> pollReq ->
 10                                Check status of original request
                                   general message response not ready
 11                                Format pollRep
 12                  <- pollRep <-
 13  Wait
 14  Format pollReq
 15                  -> pollReq ->
 16                                Check status of original request
                                   general message response is ready
 17                                Format genp
 18                  <- genp    <-
 19  Handle genp
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="sect-6">
      <name>Mandatory PKI Management Functions</name>
      <t>Some of the PKI management functions outlined in <xref target="sect-3.1"/> above
are described in this section.</t>
      <t>This section deals with functions that are "mandatory" in the sense
that all end entity and CA/RA implementations <bcp14>MUST</bcp14> be able to provide
the functionality described.  This part is effectively the profile of
the PKI management functionality that <bcp14>MUST</bcp14> be supported.  Note,
however, that the management functions described in this section do
not need to be accomplished using the PKI messages defined in <xref target="sect-5"/>
if alternate means are suitable for a given environment (see
[RFCBBBB] Section 7 and <xref target="sect-c"/> for profiles of the PKIMessages that <bcp14>MUST</bcp14> be supported).</t>
      <section anchor="sect-6.1">
        <name>Root CA Initialization</name>
        <t>[See <xref target="sect-3.1.1.2"/> for this document's definition of "root CA".]</t>
        <t>A newly created root CA must produce a "self-certificate", which is a
Certificate structure with the profile defined for the "newWithNew"
certificate issued following a root CA key update.</t>
        <t>In order to make the CA's self certificate useful to end entities
that do not acquire the self certificate via "out-of-band" means, the
CA must also produce a fingerprint for its certificate.  End entities
that acquire this fingerprint securely via some "out-of-band" means
can then verify the CA's self-certificate and, hence, the other
attributes contained therein.</t>
        <t>The data structure used to carry the fingerprint is the OOBCertHash, see <xref target="sect-5.2.5"/>.</t>
      </section>
      <section anchor="sect-6.2">
        <name>Root CA Key Update</name>
        <t>CA keys (as all other keys) have a finite lifetime and will have to
be updated on a periodic basis.  The certificates NewWithNew,
NewWithOld, and OldWithNew (see <xref target="sect-4.4.1"/>) <bcp14>MAY</bcp14> be issued by the
CA to aid existing end entities who hold the current self-signed CA
certificate (OldWithOld) to transition securely to the new self-signed
CA certificate (NewWithNew), and to aid new end entities who
will hold NewWithNew to acquire OldWithOld securely for verification
of existing data.</t>
      </section>
      <section anchor="sect-6.3">
        <name>Subordinate CA Initialization</name>
        <t>[See <xref target="sect-3.1.1.2"/> for this document's definition of "subordinate CA".]</t>
        <t>From the perspective of PKI management protocols, the initialization of a
subordinate CA is the same as the initialization of an end entity.  The only
difference is that the subordinate CA must also produce an initial revocation
list.</t>
      </section>
      <section anchor="sect-6.4">
        <name>CRL production</name>
        <t>Before issuing any certificates, a newly established CA (which issues
CRLs) must produce "empty" versions of each CRL which are to be
periodically produced.</t>
      </section>
      <section anchor="sect-6.5">
        <name>PKI Information Request</name>
        <t>When a PKI entity (CA, RA, or EE) wishes to acquire information about
the current status of a CA, it <bcp14>MAY</bcp14> send that CA a request for such
information.</t>
        <t>The CA <bcp14>MUST</bcp14> respond to the request by providing (at least) all of the
information requested by the requester.  If some of the information
cannot be provided, then an error must be conveyed to the requester.</t>
        <t>If PKIMessages are used to request and supply this PKI information,
then the request <bcp14>MUST</bcp14> be the GenMsg message, the response <bcp14>MUST</bcp14> be the
GenRep message, and the error <bcp14>MUST</bcp14> be the Error message.  These
messages are protected using a MAC based on shared secret information
(i.e., password-based MAC, see CMP Algorithms [RFCCCCC] Section 6.1) or a
signature(if
the end entity has an existing certificate).</t>
      </section>
      <section anchor="sect-6.6">
        <name>Cross Certification</name>
        <t>The requester CA is the CA that will become the subject of the
cross-certificate; the responder CA will become the issuer of the
cross-certificate.</t>
        <t>The requester CA must be "up and running" before initiating the
cross-certification operation.</t>
        <section anchor="sect-6.6.1">
          <name>One-Way Request-Response Scheme:</name>
          <t>The cross-certification scheme is essentially a one way operation;
that is, when successful, this operation results in the creation of
one new cross-certificate.  If the requirement is that cross-certificates
be created in "both directions", then each CA, in turn,
must initiate a cross-certification operation (or use another
scheme).</t>
          <t>This scheme is suitable where the two CAs in question can already
verify each other's signatures (they have some common points of
trust) or where there is an out-of-band verification of the origin of
the certification request.</t>
          <t>Detailed Description:</t>
          <t>Cross certification is initiated at one CA known as the responder.
The CA administrator for the responder identifies the CA it wants to
cross certify and the responder CA equipment generates an
authorization code.  The responder CA administrator passes this
authorization code by out-of-band means to the requester CA
administrator.  The requester CA administrator enters the
authorization code at the requester CA in order to initiate the
on-line exchange.</t>
          <t>The authorization code is used for authentication and integrity
purposes.  This is done by generating a symmetric key based on the
authorization code and using the symmetric key for generating Message
Authentication Codes (MACs) on all messages exchanged.
(Authentication may alternatively be done using signatures instead of
MACs, if the CAs are able to retrieve and validate the required
public keys by some means, such as an out-of-band hash comparison.)</t>
          <t>The requester CA initiates the exchange by generating a cross-certification
request (ccr) with a fresh random number (requester random number).
The requester CA then sends the ccr message to the responder CA.
The fields in this message are protected from modification with a
MAC based on the authorization code.</t>
          <t>Upon receipt of the ccr message, the responder CA validates the
message and the MAC, saves the requester random number, and generates
its own random number (responder random number).  It then generates
(and archives, if desired) a new requester certificate that contains
the requester CA public key and is signed with the responder CA
signature private key.  The responder CA responds with the cross
certification response (ccp) message.  The fields in this message are
protected from modification with a MAC based on the authorization
code.</t>
          <t>Upon receipt of the ccp message, the requester CA validates the
message (including the received random numbers) and the MAC.  The
requester CA responds with the certConf message.  The fields in this
message are protected from modification with a MAC based on the
authorization code.  The requester CA <bcp14>MAY</bcp14> write the requester
certificate to the Repository as an aid to later certificate path
construction.</t>
          <t>Upon receipt of the certConf message, the responder CA validates the
message and the MAC, and sends back an acknowledgement using the
PKIConfirm message.  It <bcp14>MAY</bcp14> also publish the requester certificate as
an aid to later path construction.</t>
          <t>Notes:</t>
          <ol spacing="normal" type="1"><li>The ccr message must contain a "complete" certification request;
  that is, all fields except the serial number (including, e.g., a
  BasicConstraints extension) must be specified by the requester
  CA.</li>
            <li>The ccp message <bcp14>SHOULD</bcp14> contain the verification certificate of
  the responder CA; if present, the requester CA must then verify
  this certificate (for example, via the "out-of-band" mechanism).</li>
          </ol>
          <t>(A simpler, non-interactive model of cross-certification may also be
envisioned, in which the issuing CA acquires the subject CA's public
key from some repository, verifies it via some out-of-band mechanism,
and creates and publishes the cross-certificate without the subject
CA's explicit involvement.  This model may be perfectly legitimate
for many environments, but since it does not require any protocol
message exchanges, its detailed description is outside the scope of
this specification.)</t>
        </section>
      </section>
      <section anchor="sect-6.7">
        <name>End Entity Initialization</name>
        <t>As with CAs, end entities must be initialized.  Initialization of end
entities requires at least two steps:</t>
        <ul spacing="normal">
          <li>acquisition of PKI information</li>
          <li>out-of-band verification of one root-CA public key</li>
        </ul>
        <t>(other possible steps include the retrieval of trust condition
information and/or out-of-band verification of other CA public keys).</t>
        <section anchor="sect-6.7.1">
          <name>Acquisition of PKI Information</name>
          <t>The information <bcp14>REQUIRED</bcp14> is:</t>
          <ul spacing="normal">
            <li>the current root-CA public key</li>
            <li>(if the certifying CA is not a root-CA) the certification path
from the root CA to the certifying CA together with appropriate
revocation lists</li>
            <li>the algorithms and algorithm parameters that the certifying CA
supports for each relevant usage</li>
          </ul>
          <t>Additional information could be required (e.g., supported extensions
or CA policy information) in order to produce a certification request
that will be successful.  However, for simplicity we do not mandate
that the end entity acquires this information via the PKI messages.
The end result is simply that some certification requests may fail
(e.g., if the end entity wants to generate its own encryption key,
but the CA doesn't allow that).</t>
          <t>The required information <bcp14>MAY</bcp14> be acquired as described in <xref target="sect-6.5"/>.</t>
        </section>
        <section anchor="sect-6.7.2">
          <name>Out-of-Band Verification of Root-CA Key</name>
          <t>An end entity must securely possess the public key of its root CA.
One method to achieve this is to provide the end entity with the CA's
self-certificate fingerprint via some secure "out-of-band" means.
The end entity can then securely use the CA's self-certificate.</t>
          <t>See <xref target="sect-6.1"/> for further details.</t>
        </section>
      </section>
      <section anchor="sect-6.8">
        <name>Certificate Request</name>
        <t>An initialized end entity <bcp14>MAY</bcp14> request an additional certificate at
any time (for any purpose).  This request will be made using the
certification request (cr) message.  If the end entity already
possesses a signing key pair (with a corresponding verification
certificate), then this cr message will typically be protected by the
entity's digital signature.  The CA returns the new certificate (if
the request is successful) in a CertRepMessage.</t>
      </section>
      <section anchor="sect-6.9">
        <name>Key Update</name>
        <t>When a key pair is due to expire, the relevant end entity <bcp14>MAY</bcp14> request
a key update; that is, it <bcp14>MAY</bcp14> request that the CA issue a new
certificate for a new key pair (or, in certain circumstances, a new
certificate for the same key pair).  The request is made using a key
update request (kur) message (referred to, in some environments, as a
"Certificate Update" operation).  If the end entity already possesses
a signing key pair (with a corresponding verification certificate),
then this message will typically be protected by the entity's digital
signature.  The CA returns the new certificate (if the request is
successful) in a key update response (kup) message, which is
syntactically identical to a CertRepMessage.</t>
      </section>
    </section>
    <section anchor="sect-7">
      <name>Version Negotiation</name>
      <t>This section defines the version negotiation used to support older
protocols between client and servers.</t>
      <t>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 means), then
it <bcp14>MUST</bcp14> send a PKIMessage with the highest version supported by both it and
the server.  If a client does not know what version(s) the server supports,
then it <bcp14>MUST</bcp14> send a PKIMessage using the highest version it supports, with
the following exception. Version cmp2021 <bcp14>SHOULD</bcp14> only be used if cmp2021 syntax
is needed for the request being sent or for the expected response.</t>
      <t>Note: Using cmp2000 as the default pvno is done to avoid extra message exchanges
for version negotiation and to foster compatibility with cmp2000 implementations.
Version cmp2021 syntax is only needed if a message exchange uses hashAlg
(in CertStatus) or EnvelopedData.</t>
      <t>If a server receives a message with a version that it supports, then
the version of the response message <bcp14>MUST</bcp14> be the same as the received
version.  If a server receives a message with a version higher or
lower than it supports, then it <bcp14>MUST</bcp14> send back an ErrorMsg with the
unsupportedVersion bit set (in the failureInfo field of the
pKIStatusInfo).  If the received version is higher than the highest
supported version, then the version in the error message <bcp14>MUST</bcp14> be the
highest version the server supports; if the received version is lower
than the lowest supported version then the version in the error
message <bcp14>MUST</bcp14> be the lowest version the server supports.</t>
      <t>If a client gets back an ErrorMsgContent with the unsupportedVersion
bit set and a version it supports, then it <bcp14>MAY</bcp14> retry the request with
that version.</t>
      <section anchor="sect-7.1">
        <name>Supporting RFC 2510 Implementations</name>
        <t>RFC 2510 did not specify the behaviour of implementations receiving
versions they did not understand since there was only one version in
existence.  With the introduction of the revision in <xref target="RFC4210"/>, the following versioning behaviour is recommended.</t>
        <section anchor="sect-7.1.1">
          <name>Clients Talking to RFC 2510 Servers</name>
          <t>If, after sending a message with a protocol version number higher than cmp1999,
a client receives an ErrorMsgContent with a version of cmp1999, then it <bcp14>MUST</bcp14>
abort the current transaction.</t>
          <t>If a client receives a non-error PKIMessage with a version of
cmp1999, then it <bcp14>MAY</bcp14> decide to continue the transaction (if the
transaction hasn't finished) using RFC 2510 semantics.  If it does
not choose to do so and the transaction is not finished, then it <bcp14>MUST</bcp14>
abort the transaction and send an ErrorMsgContent with a version of
cmp1999.</t>
        </section>
        <section anchor="sect-7.1.2">
          <name>Servers Receiving Version cmp1999 PKIMessages</name>
          <t>If a server receives a version cmp1999 message it <bcp14>MAY</bcp14> revert to RFC
2510 behaviour and respond with version cmp1999 messages.  If it does
not choose to do so, then it <bcp14>MUST</bcp14> send back an ErrorMsgContent as
described above in <xref target="sect-7"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="sect-8">
      <name>Security Considerations</name>
      <section anchor="sect-8.POP">
        <name>On the Necessity of Proof-Of-Possession</name>
        <t>It is well established that the role of a Certification Authority is to
verify that the name and public key belong to the end entity prior to
issuing a certificate. On a deeper inspection however, it is not
entirely clear what security guarantees are lost if an end entity is
able to obtain a certificate containing a public key that they do not
possess the corresponding private key for. There are some scenarios,
described as "forwarding attacks" in Appendix A of <xref target="Gueneysu"/>, in
which this can lead to protocol attacks against a naively-implemented
sign-then-encrypt protocol, but in general in merely results in the
end entity obtaining a certificate that they can not use.</t>
      </section>
      <section anchor="sect-8.1">
        <name>Proof-Of-Possession with a Decryption Key</name>
        <t>Some cryptographic considerations are worth explicitly spelling out.
In the protocols specified above, when an end entity is required to
prove possession of a decryption key, it is effectively challenged to
decrypt something (its own certificate).  This scheme (and many
others!) could be vulnerable to an attack if the possessor of the
decryption key in question could be fooled into decrypting an
arbitrary challenge and returning the cleartext to an attacker.
Although in this specification a number of other failures in security
are required in order for this attack to succeed, it is conceivable
that some future services (e.g., notary, trusted time) could
potentially be vulnerable to such attacks.  For this reason, we
reiterate the general rule that implementations should be very careful
about decrypting arbitrary "ciphertext" and revealing recovered
"plaintext" since such a practice can lead to serious security
vulnerabilities.</t>
      </section>
      <section anchor="sect-8.2">
        <name>Proof-Of-Possession by Exposing the Private Key</name>
        <t>Note also that exposing a private key to the CA/RA as a
proof-of-possession technique can carry some security risks (depending
upon whether or not the CA/RA can be trusted to handle such material
appropriately).  Implementers are advised to:</t>
        <ul spacing="normal">
          <li>Exercise caution in selecting and using this particular POP
mechanism</li>
          <li>When appropriate, have the user of the application explicitly
state that they are willing to trust the CA/RA to have a copy of
their private key before proceeding to reveal the private key.</li>
        </ul>
      </section>
      <section anchor="sect-8.3">
        <name>Attack Against Diffie-Hellman Key Exchange</name>
        <t>A small subgroup attack during a Diffie-Hellman key exchange may be
carried out as follows.  A malicious end entity may deliberately
choose D-H parameters that enable him/her to derive (a significant
number of bits of) the D-H private key of the CA during a key
archival or key recovery operation.  Armed with this knowledge, the
EE would then be able to retrieve the decryption private key of
another unsuspecting end entity, EE2, during EE2's legitimate key
archival or key recovery operation with that CA.  In order to avoid
the possibility of such an attack, two courses of action are
available.  (1) The CA may generate a fresh D-H key pair to be used
as a protocol encryption key pair for each EE with which it
interacts.  (2) The CA may enter into a key validation protocol (not
specified in this document) with each requesting end entity to ensure
that the EE's protocol encryption key pair will not facilitate this
attack.  Option (1) is clearly simpler (requiring no extra protocol
exchanges from either party) and is therefore <bcp14>RECOMMENDED</bcp14>.</t>
      </section>
      <section anchor="sect-8.pfs">
        <name>Perfect Forward Secrecy</name>
        <t>Long-term security typically requires perfect forward secrecy (pfs).
When transferring encrypted long-term confidential values such as centrally generated private keys or revocation passphrases, pfs likely is important.
Yet it is not needed for CMP message protection providing integrity and authenticity because transfer of PKI messages is usually completed in very limited time.
For the same reason it typically is not required for the indirect method of providing a POP <xref target="sect-5.2.8.2"/> delivering the newly issued certificate in encrypted form.</t>
        <t>Encrypted values <xref target="sect-5.2.2"/> are transferred using CMS EnvelopedData <xref target="RFC5652"/>, which does not offer pfs. In cases where long-term security is needed, CMP messages <bcp14>SHOULD</bcp14> be transferred over a mechanism that provides pfs, such as TLS.</t>
      </section>
      <section anchor="sect-8.4">
        <name>Private Keys for Certificate Signing and CMP Message Protection</name>
        <t>A CA should not reuse its certificate signing key for other purposes such
as protecting CMP responses and TLS connections. This way, exposure to other
parts of the system and the number of uses of this particularly critical
key is reduced to a minimum.</t>
      </section>
      <section anchor="sect-8.5">
        <name>Entropy of Random Numbers, Key Pairs, and Shared Secret Information</name>
        <t>Implementations must generate nonces and private keys from random input.
The use of inadequate pseudo-random number generators (PRNGs) to generate
cryptographic keys can result in little or no security. An attacker may find
it much easier to reproduce the PRNG environment that produced the keys and
to search the resulting small set of possibilities than brute-force searching
the whole key space. As an example of predictable random numbers see <xref target="CVE-2008-0166"/>; consequences of low-entropy random numbers are discussed in <xref target="MiningPsQs">Mining Your Ps and Qs</xref>. The generation of quality random numbers is difficult. <xref target="ISO.20543-2019">ISO/IEC 20543:2019</xref>, <xref target="NIST.SP.800_90Ar1">NIST SP 800-90A Rev.1</xref>, <xref target="AIS31">BSI AIS 31 V2.0</xref>, and others offer valuable guidance in this area.</t>
        <t>If shared secret information is generated by a cryptographically secure random-number
generator (CSRNG) it is safe to assume that the entropy of the shared secret
information equals its bit length. If no CSRNG is used, the entropy of a
shared secret information depends on the details of the generation process
and cannot be measured securely after it has been generated. If user-generated
passwords are used as shared secret information, their entropy cannot be
measured and are typically insufficient for protected delivery of centrally
generated keys or trust anchors.</t>
        <t>If the entropy of a shared secret information protecting the delivery 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 information is re-used for
different key pairs, the security of the shared secret information should
exceed the security strength of each individual key pair.</t>
        <t>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 not concluded
in a timely manner or (b) where the shared secret information is re-used
for several key management operations, the entropy of the shared secret information,
if known, should not be less than the security strength of the trust anchor
being managed by the operation. The shared secret information should have
an entropy that at least matches the security strength of the key material
being managed by the operation. Certain use cases may require shared secret
information that may be of a low security strength, e.g., a human generated
password. It is <bcp14>RECOMMENDED</bcp14> that such secret information be limited to a
single PKI management operation.</t>
        <t>Importantly for this section further information about algorithm use profiles
and their security strength is available in CMP Algorithms [RFCCCC] Section
7.</t>
      </section>
      <section anchor="sect-8.kem">
        <name>Recurring Usage of KEM Keys for Message Protection</name>
        <t>Each PKI entity using key encapsulation for MAC-based message protection, see <xref target="sect-5.1.3.4"/>, <bcp14>MUST</bcp14> use a fresh shared secret key (ssk) for each PKI management operation. This can be enforced by using senderNonce and recipNonce header fields in all messages of the PKI management operation.</t>
        <t>It is assumed that the overall data size of the CMP messages
in a PKI management operation protected by a single shared secret key
is small enough not to introduce extra security risks.</t>
        <t>To be appropriate for use with this specification, the KEM algorithm
<bcp14>MUST</bcp14> explicitly be designed to be secure when the public key is used
many times. For example, a KEM algorithm with a single-use public
key is not appropriate because the public key is expected to be
carried in a long-lived certificate <xref target="RFC5280"/> and used over and over.
Thus, KEM algorithms that offer indistinguishability under adaptive
chosen ciphertext attack (IND-CCA2) security are appropriate. A
common design pattern for obtaining IND-CCA2 security with public key
reuse is to apply the Fujisaki-Okamoto (FO) transform <xref target="Fujisaki"/> or a
variant of the FO transform <xref target="Hofheinz"/>.</t>
        <t>Therefore, given a long-term public key using an IND-CCA2 secure KEM
algorithm, there is no limit to the number of CMP messages that can
be encrypted under it.</t>
      </section>
      <section anchor="sect-8.6">
        <name>Trust Anchor Provisioning Using CMP Messages</name>
        <t>A provider of trust anchors, which may be an RA involved in configuration
management of its clients, <bcp14>MUST NOT</bcp14> include to-be-trusted CA certificates
in a CMP message unless the specific deployment scenario can ensure that
it is adequate that the receiving EE trusts these certificates, e.g., by
loading them into its trust store.</t>
        <t>Whenever an EE receives in a CMP message, e.g., in the caPubs field of a
certificate response or in a general response (genp), a CA certificate for
use as a trust anchor, it <bcp14>MUST</bcp14> properly authenticate the message sender with
existing trust anchors without requiring new trust anchors included in the
message.</t>
        <t>Additionally, the EE <bcp14>MUST</bcp14> verify that the sender is an authorized source
of trust anchors.  This authorization is governed by local policy and typically
indicated using shared secret information or with a signature-based message
protection using a certificate issued by a PKI that is explicitly authorized
for this purpose.</t>
      </section>
      <section anchor="sect-8.7">
        <name>Authorizing Requests for Certificates with Specific EKUs</name>
        <t>When a CA issues a certificate containing extended key usage extensions as
defined in <xref target="sect-4.5"/>, this expresses delegation of an authorization that
originally is only with the CA certificate itself.
Such delegation is a very sensitive action in a PKI and therefore
special care must be taken when approving such certificate requests to
ensure that only legitimate entities receive a certificate containing
such an EKU.</t>
      </section>
      <section anchor="sect-8.8">
        <name>Usage of Certificate Transparency Logs</name>
        <t>CAs that support indirect POP <bcp14>MUST NOT</bcp14> also publish final certificates to Certificate Transparency logs <xref target="RFC9162"/> before having received the certConf message containing the certHash of that certificate to complete the POP. The risk is that a malicious actor could fetch the final certificate from the CT log and use that to spoof a response to the implicit POP challenge via a certConf response. This risk does not apply to CT precertificates, so those are ok to publish.</t>
        <t>If a certificate or its precertificate was published in a CT log it must be revoked, if a required certConf message could not be verified, especially when the implicit POP was used.</t>
      </section>
    </section>
    <section anchor="sect-9">
      <name>IANA Considerations</name>
      <t>This document updates the ASN.1 modules of CMP Updates Appendix A.2 [RFCAAAA]. The OID TBD2 (id-mod-cmp2023-02) was registered in the SMI Security for PKIX Module Identifier registry to identify the updated ASN.1 module.</t>
      <t>In the SMI-numbers registry "SMI Security for PKIX CMP Information 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 <xref target="RFC7299"/> one addition has been performed.</t>
      <t>One new entry has been added:</t>
      <t>Decimal: TBD1</t>
      <t>Description: id-it-KemCiphertextInfo</t>
      <t>Reference: [RFCXXXX]</t>
      <t>&lt; ToDo: The new OID TBD3 for the ASN.1 module KEMAlgorithmInformation-2023 will be defined in draft-ietf-lamps-cms-kemri. &gt;</t>
      <t>&lt; ToDo: The new OID TBD4 for id-KemBasedMac needs to be registered. The OIDs id-PasswordBasedMac and id-DHBasedMac were registered in the tree 1.2.840.113533.7.66 by Entrust. Entrust offered using 1.2.840.113533.7.66.16 for id-KemBasedMac. &gt;</t>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors of this document wish to thank Carlisle Adams, Stephen Farrell,
Tomi Kause, and Tero Mononen, the original authors of <xref target="RFC4210"/>, for their work.</t>
      <t>We also thank all reviewers of this document for their valuable feedback.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2985">
          <front>
            <title>PKCS #9: Selected Object Classes and Attribute Types Version 2.0</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #9 v2.0 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process.  The body of this document, except for the security considerations section, is taken directly from that specification.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2985"/>
          <seriesInfo name="DOI" value="10.17487/RFC2985"/>
        </reference>
        <reference anchor="RFC2986">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process.  The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </reference>
        <reference anchor="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems.  The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo.  UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values.  This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
        <reference anchor="RFC4211">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Request Message Format (CRMF)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Certificate Request Message Format (CRMF) syntax and semantics.  This syntax is used to convey a request for a certificate to a Certification Authority (CA), possibly via a Registration Authority (RA), for the purposes of X.509 certificate production.  The request will typically include a public key and the associated registration information.  This document does not define a certificate request protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4211"/>
          <seriesInfo name="DOI" value="10.17487/RFC4211"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5480">
          <front>
            <title>Elliptic Curve Cryptography Subject Public Key Information</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="D. Brown" initials="D." surname="Brown"/>
            <author fullname="K. Yiu" initials="K." surname="Yiu"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="T. Polk" initials="T." surname="Polk"/>
            <date month="March" year="2009"/>
            <abstract>
              <t>This document specifies the syntax and semantics for the Subject Public Key Information field in certificates that support Elliptic Curve Cryptography.  This document updates Sections 2.3.5 and 5, and the ASN.1 module of "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5480"/>
          <seriesInfo name="DOI" value="10.17487/RFC5480"/>
        </reference>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS).  This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC5958">
          <front>
            <title>Asymmetric Key Packages</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document defines the syntax for private-key information and a content type for it.  Private-key information includes a private key for a specified public-key algorithm and a set of attributes.  The Cryptographic Message Syntax (CMS), as defined in RFC 5652, can be used to digitally sign, digest, authenticate, or encrypt the asymmetric key format content type.  This document obsoletes RFC 5208. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5958"/>
          <seriesInfo name="DOI" value="10.17487/RFC5958"/>
        </reference>
        <reference anchor="RFC6402">
          <front>
            <title>Certificate Management over CMS (CMC) Updates</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="November" year="2011"/>
            <abstract>
              <t>This document contains a set of updates to the base syntax for CMC, a Certificate Management protocol using the Cryptographic Message Syntax (CMS). This document updates RFC 5272, RFC 5273, and RFC 5274.</t>
              <t>The new items in this document are: new controls for future work in doing server side key generation, definition of a Subject Information Access value to identify CMC servers, and the registration of a port number for TCP/IP for the CMC service to run on. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6402"/>
          <seriesInfo name="DOI" value="10.17487/RFC6402"/>
        </reference>
        <reference anchor="RFC8933">
          <front>
            <title>Update to the Cryptographic Message Syntax (CMS) for Algorithm Identifier Protection</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="October" year="2020"/>
            <abstract>
              <t>This document updates the Cryptographic Message Syntax (CMS) specified in RFC 5652 to ensure that algorithm identifiers in signed-data and authenticated-data content types are adequately protected.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8933"/>
          <seriesInfo name="DOI" value="10.17487/RFC8933"/>
        </reference>
        <reference anchor="ITU.X509.2000">
          <front>
            <title>Information technology - Open Systems Interconnection - The Directory:
Public-key and attribute certificate frameworks</title>
            <author>
              <organization>International Telecommunications Union</organization>
            </author>
            <date month="March" year="2000"/>
          </front>
          <seriesInfo name="ITU-T" value="Recommendation X.509"/>
          <seriesInfo name="ISO" value="Standard 9594-8"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-cmp-algorithms">
          <front>
            <title>Certificate Management Protocol (CMP) Algorithms</title>
            <author fullname="Hendrik Brockhaus" initials="H." surname="Brockhaus">
              <organization>Siemens AG</organization>
            </author>
            <author fullname="Hans Aschauer" initials="H." surname="Aschauer">
              <organization>Siemens AG</organization>
            </author>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <date day="2" month="June" year="2022"/>
            <abstract>
              <t>   This document describes the conventions for using several
   cryptographic algorithms with the Certificate Management Protocol
   (CMP).  CMP is used to enroll and further manage the lifecycle of
   X.509 certificates.  This document also updates the algorithm use
   profile from RFC 4210 Appendix D.2.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cmp-algorithms-15"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-kemri">
          <front>
            <title>Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <author fullname="Tomofumi Okubo" initials="T." surname="Okubo">
              <organization>DigiCert, Inc.</organization>
            </author>
            <date day="15" month="June" year="2023"/>
            <abstract>
              <t>   The Cryptographic Message Syntax (CMS) supports key transport and key
   agreement algorithms.  In recent years, cryptographers have been
   specifying Key Encapsulation Mechanism (KEM) algorithms, including
   quantum-secure KEM algorithms.  This document defines conventions for
   the use of KEM algorithms by the originator and recipients to encrypt
   CMS content.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kemri-01"/>
        </reference>
        <reference anchor="MvOV97">
          <front>
            <title>Handbook of Applied Cryptography</title>
            <author initials="A." surname="Menezes" fullname="A. Menezes">
              <organization/>
            </author>
            <author initials="P." surname="van Oorschot" fullname="P. van Oorschot">
              <organization/>
            </author>
            <author initials="S." surname="Vanstone" fullname="S. Vanstone">
              <organization/>
            </author>
            <date year="1996"/>
          </front>
          <seriesInfo name="CRC" value="Press ISBN 0-8493-8523-7"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-lamps-cmp-updates">
          <front>
            <title>Certificate Management Protocol (CMP) Updates</title>
            <author fullname="Hendrik Brockhaus" initials="H." surname="Brockhaus">
              <organization>Siemens</organization>
            </author>
            <author fullname="David von Oheimb" initials="D." surname="von Oheimb">
              <organization>Siemens</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <date day="29" month="June" year="2022"/>
            <abstract>
              <t>   This document contains a set of updates to the syntax and transfer of
   Certificate Management Protocol (CMP) version 2.  This document
   updates RFC 4210, RFC 5912, and RFC 6712.

   The aspects of CMP updated in this document are using EnvelopedData
   instead of EncryptedValue, clarifying the handling of p10cr messages,
   improving the crypto agility, as well as adding new general message
   types, extended key usages to identify certificates for use with CMP,
   and well-known URI path segments.

   CMP version 3 is introduced to enable signaling support of
   EnvelopedData instead of EncryptedValue and signaling the use of an
   explicit hash AlgorithmIdentifier in certConf messages, as far as
   needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cmp-updates-23"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-lightweight-cmp-profile">
          <front>
            <title>Lightweight Certificate Management Protocol (CMP) Profile</title>
            <author fullname="Hendrik Brockhaus" initials="H." surname="Brockhaus">
              <organization>Siemens</organization>
            </author>
            <author fullname="David von Oheimb" initials="D." surname="von Oheimb">
              <organization>Siemens</organization>
            </author>
            <author fullname="Steffen Fries" initials="S." surname="Fries">
              <organization>Siemens AG</organization>
            </author>
            <date day="17" month="February" year="2023"/>
            <abstract>
              <t>   This document aims at simple, interoperable, and automated PKI
   management operations covering typical use cases of industrial and
   IoT scenarios.  This is achieved by profiling the Certificate
   Management Protocol (CMP), the related Certificate Request Message
   Format (CRMF), and HTTP-based or CoAP-based transfer in a succinct
   but sufficiently detailed and self-contained way.  To make secure
   certificate management for simple scenarios and constrained devices
   as lightweight as possible, only the most crucial types of operations
   and options are specified as mandatory.  More specialized or complex
   use cases are supported with optional features.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-lightweight-cmp-profile-21"/>
        </reference>
        <reference anchor="I-D.ietf-ace-cmpv2-coap-transport">
          <front>
            <title>CoAP Transfer for the Certificate Management Protocol</title>
            <author fullname="Mohit Sahni" initials="M." surname="Sahni">
              <organization>Palo Alto Networks</organization>
            </author>
            <author fullname="Saurabh Tripathi" initials="S." surname="Tripathi">
              <organization>Palo Alto Networks</organization>
            </author>
            <date day="15" month="May" year="2023"/>
            <abstract>
              <t>   This document specifies the use of Constrained Application Protocol
   (CoAP) as a transfer mechanism for the Certificate Management
   Protocol (CMP).  CMP defines the interaction between various PKI
   entities for the purpose of certificate creation and management.
   CoAP is an HTTP-like client-server protocol used by various
   constrained devices in the IoT space.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ace-cmpv2-coap-transport-10"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-rfc6712bis">
          <front>
            <title>Internet X.509 Public Key Infrastructure -- HTTP Transfer for the Certificate Management Protocol (CMP)</title>
            <author fullname="Hendrik Brockhaus" initials="H." surname="Brockhaus">
              <organization>Siemens</organization>
            </author>
            <author fullname="David von Oheimb" initials="D." surname="von Oheimb">
              <organization>Siemens</organization>
            </author>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <date day="10" month="February" year="2023"/>
            <abstract>
              <t>   This document describes how to layer the Certificate Management
   Protocol (CMP) over HTTP.

   It includes the updates on RFC 6712 specified in CMP Updates
   [RFCAAAA] Section 3 and obsoleted both documents.  These updates
   introduce CMP URIs using a Well-known prefix.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc6712bis-03"/>
        </reference>
        <reference anchor="RFC1847">
          <front>
            <title>Security Multiparts for MIME: Multipart/Signed and Multipart/Encrypted</title>
            <author fullname="J. Galvin" initials="J." surname="Galvin"/>
            <author fullname="S. Murphy" initials="S." surname="Murphy"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <date month="October" year="1995"/>
            <abstract>
              <t>This document defines a framework within which security services may be applied to MIME body parts. [STANDARDS-TRACK] This memo defines a new Simple Mail Transfer Protocol (SMTP) [1] reply code, 521, which one may use to indicate that an Internet host does not accept incoming mail.  This memo defines an Experimental Protocol for the Internet community.  This memo defines an extension to the SMTP service whereby an interrupted SMTP transaction can be restarted at a later time without having to repeat all of the commands and message content sent prior to the interruption.  This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1847"/>
          <seriesInfo name="DOI" value="10.17487/RFC1847"/>
        </reference>
        <reference anchor="RFC2510">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Management Protocols</title>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <date month="March" year="1999"/>
            <abstract>
              <t>This document describes the Internet X.509 Public Key Infrastructure (PKI) Certificate Management Protocols. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2510"/>
          <seriesInfo name="DOI" value="10.17487/RFC2510"/>
        </reference>
        <reference anchor="RFC4210">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="T. Kause" initials="T." surname="Kause"/>
            <author fullname="T. Mononen" initials="T." surname="Mononen"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Internet X.509 Public Key Infrastructure (PKI) Certificate Management Protocol (CMP).  Protocol messages are defined for X.509v3 certificate creation and management.  CMP provides on-line interactions between PKI components, including an exchange between a Certification Authority (CA) and a client system. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4210"/>
          <seriesInfo name="DOI" value="10.17487/RFC4210"/>
        </reference>
        <reference anchor="RFC4510">
          <front>
            <title>Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map</title>
            <author fullname="K. Zeilenga" initials="K." role="editor" surname="Zeilenga"/>
            <date month="June" year="2006"/>
            <abstract>
              <t>The Lightweight Directory Access Protocol (LDAP) is an Internet protocol for accessing distributed directory services that act in accordance with X.500 data and service models.  This document provides a road map of the LDAP Technical Specification. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4510"/>
          <seriesInfo name="DOI" value="10.17487/RFC4510"/>
        </reference>
        <reference anchor="RFC5912">
          <front>
            <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Public Key Infrastructure using X.509 (PKIX) certificate format, and many associated formats, are expressed using ASN.1.  The current ASN.1 modules conform to the 1988 version of ASN.1.  This document updates those ASN.1 modules to conform to the 2002 version of ASN.1.  There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax.  This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5912"/>
          <seriesInfo name="DOI" value="10.17487/RFC5912"/>
        </reference>
        <reference anchor="RFC7299">
          <front>
            <title>Object Identifier Registry for the PKIX Working Group</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>When the Public-Key Infrastructure using X.509 (PKIX) Working Group was chartered, an object identifier arc was allocated by IANA for use by that working group.  This document describes the object identifiers that were assigned in that arc, returns control of that arc to IANA, and establishes IANA allocation policies for any future assignments within that arc.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7299"/>
          <seriesInfo name="DOI" value="10.17487/RFC7299"/>
        </reference>
        <reference anchor="RFC8649">
          <front>
            <title>Hash Of Root Key Certificate Extension</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>This document specifies the Hash Of Root Key certificate extension.  This certificate extension is carried in the self-signed certificate for a trust anchor, which is often called a Root Certification Authority (CA) certificate.  This certificate extension unambiguously identifies the next public key that will be used at some point in the future as the next Root CA certificate, eventually replacing the current one.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8649"/>
          <seriesInfo name="DOI" value="10.17487/RFC8649"/>
        </reference>
        <reference anchor="RFC9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="E. Messeri" initials="E." surname="Messeri"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>
        <reference anchor="NIST.SP.800_90Ar1" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-90Ar1.pdf">
          <front>
            <title>Recommendation for Random Number Generation Using Deterministic Random Bit Generators</title>
            <author fullname="Elaine B. Barker" surname="Barker">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author fullname="John M. Kelsey" surname="Kelsey">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author>
              <organization abbrev="NIST">National Institute of Standards and Technology</organization>
              <address>
                <postal>
                  <country>US</country>
                  <city>Gaithersburg</city>
                </postal>
              </address>
            </author>
            <date month="June" year="2015"/>
          </front>
          <seriesInfo name="NIST Special Publications (General)" value="800-90Ar1"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-90Ar1"/>
        </reference>
        <reference anchor="IEEE.802.1AR-2018">
          <front>
            <title>IEEE Standard for Local and Metropolitan Area Networks - Secure Device Identity</title>
            <author>
              <organization/>
            </author>
            <date month="July" year="2018"/>
          </front>
          <seriesInfo name="IEEE" value="standard"/>
          <seriesInfo name="DOI" value="10.1109/ieeestd.2018.8423794"/>
        </reference>
        <reference anchor="CVE-2008-0166" target="https://nvd.nist.gov/vuln/detail/CVE-2008-0166">
          <front>
            <title>National Vulnerability Database - CVE-2008-0166</title>
            <author>
              <organization>National Institute of Science and Technology (NIST)</organization>
            </author>
            <date year="2008" month="May"/>
          </front>
        </reference>
        <reference anchor="MiningPsQs" target="https://www.usenix.org/conference/usenixsecurity12/technical-sessions/presentation/heninger">
          <front>
            <title>Mining Your Ps and Qs: Detection of Widespread Weak Keys in Network Devices</title>
            <author>
              <organization>Security'12: Proceedings of the 21st USENIX conference on Security symposium</organization>
            </author>
            <author initials="N." surname="Heninger" fullname="Nadia Heninger">
              <organization>UC San Diego</organization>
            </author>
            <author initials="Z." surname="Durumeric" fullname="Zakir Durumeric">
              <organization>University of Michigan</organization>
            </author>
            <author initials="E." surname="Wustrow" fullname="Eric Wustrow">
              <organization>University of Michigan</organization>
            </author>
            <author initials="J. A." surname="Halderman" fullname="J. Alex Halderman">
              <organization>University of Michigan</organization>
            </author>
            <date year="2012" month="August"/>
          </front>
        </reference>
        <reference anchor="ISO.20543-2019">
          <front>
            <title>Information technology -- Security techniques -- Test and analysis methods for random bit generators within ISO/IEC 19790 and ISO/IEC 15408</title>
            <author>
              <organization>International Organization for Standardization (ISO)</organization>
            </author>
            <date year="2019" month="October"/>
          </front>
          <seriesInfo name="ISO" value="Draft Standard 20543-2019"/>
        </reference>
        <reference anchor="AIS31" target="https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Zertifizierung/Interpretationen/AIS_31_Functionality_classes_for_random_number_generators_e.pdf">
          <front>
            <title>A proposal for: Functionality classes for random number generators, version 2.0</title>
            <author>
              <organization>Bundesamt fuer Sicherheit in der Informationstechnik (BSI)</organization>
            </author>
            <author initials="W." surname="Killmann" fullname="Wolfgang Killmann">
              <organization>T-Systems GEI GmbH</organization>
            </author>
            <author initials="W." surname="Schindler" fullname="Werner Schindler">
              <organization>Bundesamt fuer Sicherheit in der Informationstechnik (BSI)</organization>
            </author>
            <date year="2011" month="September"/>
          </front>
        </reference>
        <reference anchor="Gueneysu" target="https://eprint.iacr.org/2022/703">
          <front>
            <title>Proof-of-possession for KEM certificates using verifiable generation</title>
            <author initials="T." surname="Gueneysu" fullname="Tim Gueneysu">
              <organization/>
            </author>
            <author initials="P." surname="Hodges" fullname="Philip Hodges">
              <organization/>
            </author>
            <author initials="G." surname="Land" fullname="Georg Land">
              <organization/>
            </author>
            <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
              <organization/>
            </author>
            <author initials="D." surname="Stebila" fullname="Douglas Stebila">
              <organization/>
            </author>
            <author initials="G." surname="Zaverucha" fullname="Greg Zaverucha">
              <organization/>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="Cryptology ePrint Archive" value=""/>
        </reference>
        <reference anchor="Fujisaki">
          <front>
            <title>Secure Integration of Asymmetric and Symmetric Encryption Schemes</title>
            <author fullname="Eiichiro Fujisaki" initials="E." surname="Fujisaki">
              <organization/>
            </author>
            <author fullname="Tatsuaki Okamoto" initials="T." surname="Okamoto">
              <organization/>
            </author>
            <date month="December" year="2011"/>
          </front>
          <seriesInfo name="Journal of Cryptology" value="vol. 26, no. 1, pp. 80-101"/>
          <seriesInfo name="DOI" value="10.1007/s00145-011-9114-1"/>
        </reference>
        <reference anchor="Hofheinz">
          <front>
            <title>A Modular Analysis of the Fujisaki-Okamoto Transformation</title>
            <author fullname="Dennis Hofheinz" initials="D." surname="Hofheinz">
              <organization/>
            </author>
            <author fullname="Kathrin Hövelmanns" initials="K." surname="Hövelmanns">
              <organization/>
            </author>
            <author fullname="Eike Kiltz" initials="E." surname="Kiltz">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="Theory of Cryptography" value="pp. 341-371"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-70500-2_12"/>
        </reference>
      </references>
    </references>
    <?line 3889?>

<section anchor="sect-a">
      <name>Reasons for the Presence of RAs</name>
      <t>The reasons that justify the presence of an RA can be split into
those that are due to technical factors and those which are
organizational in nature.  Technical reasons include the following.</t>
      <ul spacing="normal">
        <li>If hardware tokens are in use, then not all end entities will have
the equipment needed to initialize these; the RA equipment can
include the necessary functionality (this may also be a matter of
policy).</li>
        <li>Some end entities may not have the capability to publish
certificates; again, the RA may be suitably placed for this.</li>
        <li>The RA will be able to issue signed revocation requests on behalf
of end entities associated with it, whereas the end entity may not
be able to do this (if the key pair is completely lost).</li>
      </ul>
      <t>Some of the organizational reasons that argue for the presence of an
RA are the following.</t>
      <ul spacing="normal">
        <li>It may be more cost effective to concentrate functionality in the
RA equipment than to supply functionality to all end entities
(especially if special token initialization equipment is to be
used).</li>
        <li>Establishing RAs within an organization can reduce the number of
CAs required, which is sometimes desirable.</li>
        <li>RAs may be better placed to identify people with their
"electronic" names, especially if the CA is physically remote from
the end entity.</li>
        <li>For many applications, there will already be in place some
administrative structure so that candidates for the role of RA are
easy to find (which may not be true of the CA).</li>
      </ul>
      <t>Further reasons relevant for automated machine-to-machine certificate lifecycle
management are available in the Lightweight CMP Profile [RFCBBBB].</t>
    </section>
    <section anchor="sect-b">
      <name>The Use of Revocation Passphrase</name>
      <t>&lt; ToDo: Review this Appendix and try to push the content to Section 4 or
Section 5 of this document. &gt;</t>
      <t>&lt; ToDo: Possibly add support for certificates containing KEM keys. &gt;</t>
      <t>A revocation request must incorporate suitable security mechanisms,
including proper authentication, in order to reduce the probability
of successful denial-of-service attacks.  A digital signature on the
request -- <bcp14>REQUIRED</bcp14> to support within this specification if
revocation requests are supported -- can provide the authentication
required, but there are circumstances under which an alternative
mechanism may be desirable (e.g., when the private key is no longer
accessible and the entity wishes to request a revocation prior to
re-certification of another key pair).  In order to accommodate such
circumstances, a password-based MAC, see CMP Algorithms [RFCCCCC] Section
6.1, on the request is also <bcp14>REQUIRED</bcp14> to
support within this specification (subject to local security policy
for a given environment) if revocation requests are supported and if
shared secret information can be established between the requester
and the responder prior to the need for revocation.</t>
      <t>A mechanism that has seen use in some environments is "revocation passphrase",
in which a value of sufficient entropy (i.e., a
relatively long passphrase rather than a short password) is shared
between (only) the entity and the CA/RA at some point prior to
revocation; this value is later used to authenticate the revocation
request.</t>
      <t>In this specification, the following technique to establish shared
secret information (i.e., a revocation passphrase) is <bcp14>OPTIONAL</bcp14> to
support.  Its precise use in CMP messages is as follows.</t>
      <ul spacing="normal">
        <li>The OID and value specified in <xref target="sect-5.3.19.9"/> <bcp14>MAY</bcp14> be sent in a GenMsg message
at any time, or <bcp14>MAY</bcp14> be sent in the generalInfo
field of the PKIHeader of any PKIMessage at any time.  (In particular, the
EncryptedKey structure as described in <xref target="sect-5.2.2"/> may be sent in the header
of the certConf message that confirms acceptance
of certificates requested in an initialization request or certificate request
message.)  This conveys a revocation passphrase chosen by the entity to the
relevant CA/RA. When EnvelopedData is used, this is in the decrypted bytes
of encryptedContent field. When EncryptedValue is used, this is in the decrypted
bytes of the encValue field. Furthermore, the transfer is accomplished with
appropriate confidentiality characteristics.</li>
        <li>If a CA/RA receives the revocation passphrase (OID and value
specified in <xref target="sect-5.3.19.9"/>) in a GenMsg, it <bcp14>MUST</bcp14> construct and
send a GenRep message that includes the OID (with absent value)
specified in <xref target="sect-5.3.19.9"/>. If the CA/RA receives the
revocation passphrase in the generalInfo field of a PKIHeader of
any PKIMessage, it <bcp14>MUST</bcp14> include the OID (with absent value) in the
generalInfo field of the PKIHeader of the corresponding response
PKIMessage.  If the CA/RA is unable to return the appropriate
response message for any reason, it <bcp14>MUST</bcp14> send an error message
with a status of "rejection" and, optionally, a failInfo reason
set.</li>
        <li>Either the localKeyId attribute of EnvelopedData as specified in
<xref target="RFC2985">RFC 2985</xref> or the valueHint field of EncryptedValue <bcp14>MAY</bcp14>
contain a key identifier (chosen
by the entity, along with the passphrase itself) to assist in later retrieval
of the correct passphrase (e.g., when the revocation request is constructed
by the entity and received by the CA/RA).</li>
        <li>The revocation request message is protected by a password-based MAC, see
CMP Algorithms [RFCCCCC] Section 6.1,
with the revocation passphrase as the key.  If appropriate, the
senderKID field in the PKIHeader <bcp14>MAY</bcp14> contain the value previously
transmitted in localKeyId or valueHint.</li>
      </ul>
      <t>Using the technique specified above, the revocation passphrase may be
initially established and updated at any time without requiring extra
messages or out-of-band exchanges.  For example, the revocation
request message itself (protected and authenticated through a MAC
that uses the revocation passphrase as a key) may contain, in the
PKIHeader, a new revocation passphrase to be used for authenticating
future revocation requests for any of the entity's other
certificates.  In some environments this may be preferable to
mechanisms that reveal the passphrase in the revocation request
message, since this can allow a denial-of-service attack in which the
revealed passphrase is used by an unauthorized third party to
authenticate revocation requests on the entity's other certificates.
However, because the passphrase is not revealed in the request
message, there is no requirement that the passphrase must always be
updated when a revocation request is made (that is, the same
passphrase <bcp14>MAY</bcp14> be used by an entity to authenticate revocation
requests for different certificates at different times).</t>
      <t>Furthermore, the above technique can provide strong cryptographic
protection over the entire revocation request message even when a
digital signature is not used.  Techniques that do authentication of
the revocation request by simply revealing the revocation passphrase
typically do not provide cryptographic protection over the fields of
the request message (so that a request for revocation of one
certificate may be modified by an unauthorized third party to a
request for revocation of another certificate for that entity).</t>
    </section>
    <section anchor="sect-c">
      <name>PKI Management Message Profiles (REQUIRED)</name>
      <t>This appendix contains detailed profiles for those PKIMessages that
<bcp14>MUST</bcp14> be supported by conforming implementations (see <xref target="sect-6"/>).</t>
      <t>Note: <xref target="sect-c"/> and <xref format="counter" target="sect-d"/> focus on PKI management operations
managing certificates for human end entities.
In contrast, the Lightweight CMP Profile [RFCBBBB] focuses on typical use
cases of industrial and IoT scenarios supporting highly automated certificate
lifecycle management scenarios.</t>
      <t>Profiles for the PKIMessages used in the following PKI management
operations are provided:</t>
      <ul spacing="normal">
        <li>initial registration/certification</li>
        <li>basic authenticated scheme</li>
        <li>certificate request</li>
        <li>key update</li>
      </ul>
      <section anchor="sect-c.1">
        <name>General Rules for Interpretation of These Profiles.</name>
        <ol spacing="normal" type="1"><li>Where <bcp14>OPTIONAL</bcp14> or DEFAULT fields are not mentioned in individual
  profiles, they <bcp14>SHOULD</bcp14> be absent from the relevant message (i.e.,
  a receiver can validly reject a message containing such fields as
  being syntactically incorrect).  Mandatory fields are not
  mentioned if they have an obvious value (e.g., if not explicitly stated,
  pvno is cmp2000(2)).</li>
          <li>Where structures occur in more than one message, they are
  separately profiled as appropriate.</li>
          <li>The algorithmIdentifiers from PKIMessage structures are profiled
  separately.</li>
          <li>A "special" X.500 DN is called the "NULL-DN"; this means a DN
  containing a zero-length SEQUENCE OF RelativeDistinguishedNames
  (its DER encoding is then '3000'H).</li>
          <li>Where a GeneralName is required for a field, but no suitable
  value is available (e.g., an end entity produces a request before
  knowing its name), then the GeneralName is to be an X.500 NULL-DN
  (i.e., the Name field of the CHOICE is to contain a NULL-DN).
  This special value can be called a "NULL-GeneralName".</li>
          <li>Where a profile omits to specify the value for a GeneralName,
  then the NULL-GeneralName value is to be present in the relevant
  PKIMessage field.  This occurs with the sender field of the
  PKIHeader for some messages.</li>
          <li>Where any ambiguity arises due to naming of fields, the profile
  names these using a "dot" notation (e.g., "certTemplate.subject"
  means the subject field within a field called certTemplate).</li>
          <li>Where a "SEQUENCE OF types" is part of a message, a zero-based
  array notation is used to describe fields within the SEQUENCE OF
  (e.g., crm[0].certReq.certTemplate.subject refers to a subfield
  of the first CertReqMsg contained in a request message).</li>
          <li>All PKI message exchanges in <xref target="sect-c.4"/> to <xref format="counter" target="sect-c.6"/> require a
  certConf message to be sent by the initiating entity and a
  PKIConfirm to be sent by the responding entity.  The PKIConfirm
  is not included in some of the profiles given since its body is
  NULL and its header contents are clear from the context.  Any
  authenticated means can be used for the protectionAlg (e.g.,
  password-based MAC, if shared secret information is known, or
  signature).</li>
        </ol>
      </section>
      <section anchor="sect-c.2">
        <name>Algorithm Use Profile</name>
        <t>For specifications of algorithm identifiers and respective conventions for
conforming implementations, please refer to CMP Algorithms Appendix 7.1 [RFCCCCC].</t>
      </section>
      <section anchor="sect-c.3">
        <name>Proof-of-Possession Profile</name>
        <t>POP fields for use (in signature field of pop field of
ProofOfPossession structure) when proving possession of a private
signing key that corresponds to a public verification key for which a
certificate has been requested.</t>
        <artwork><![CDATA[
Field               Value         Comment

algorithmIdentifier MSG_SIG_ALG   only signature protection is
                                  allowed for this proof

signature           present       bits calculated using MSG_SIG_ALG
]]></artwork>
        <t>Note: For examples of MSG_SIG_ALG OIDs see CMP Algorithms Section 3 [RFCCCCC].</t>
        <t>Proof-of-possession of a private decryption key that corresponds to a
public encryption key for which a certificate has been requested does
not use this profile; the CertHash field of the certConf message is
used instead.</t>
        <t>Not every CA/RA will do Proof-of-Possession (of signing key,
decryption key, or key agreement key) in the PKIX-CMP in-band
certification request protocol (how POP is done <bcp14>MAY</bcp14> ultimately be a
policy issue that is made explicit for any given CA in its publicized
Policy OID and Certification Practice Statement).  However, this
specification mandates that CA/RA entities <bcp14>MUST</bcp14> do POP (by some
means) as part of the certification process.  All end entities <bcp14>MUST</bcp14>
be prepared to provide POP (i.e., these components of the PKIX-CMP
protocol <bcp14>MUST</bcp14> be supported).</t>
      </section>
      <section anchor="sect-c.4">
        <name>Initial Registration/Certification (Basic Authenticated Scheme)</name>
        <t>An (uninitialized) end entity requests a (first) certificate from a
CA.  When the CA responds with a message containing a certificate,
the end entity replies with a certificate confirmation.  The CA sends
a PKIConfirm back, closing the transaction.  All messages are
authenticated.</t>
        <t>This scheme allows the end entity to request certification of a
locally-generated public key (typically a signature key).  The end
entity <bcp14>MAY</bcp14> also choose to request the centralized generation and
certification of another key pair (typically an encryption key pair).</t>
        <t>Certification may only be requested for one locally generated public
key (for more, use separate PKIMessages).</t>
        <t>The end entity <bcp14>MUST</bcp14> support proof-of-possession of the private key
associated with the locally-generated public key.</t>
        <t>Preconditions:</t>
        <ol spacing="normal" type="1"><li>The end entity can authenticate the CA's signature based on
out-of-band means</li>
          <li>The end entity and the CA share a symmetric MACing key</li>
        </ol>
        <t>Message flow:</t>
        <artwork><![CDATA[
 Step# End entity                           PKI
   1   format ir
   2                      ->   ir      ->
   3                                        handle ir
   4                                        format ip
   5                      <-   ip      <-
   6   handle ip
   7   format certConf
   8                      ->   certConf ->
   9                                        handle certConf
  10                                        format PKIConf
  11                      <-   PKIConf  <-
  12   handle PKIConf
]]></artwork>
        <t>For this profile, we mandate that the end entity <bcp14>MUST</bcp14> include all
(i.e., one or two) CertReqMsg in a single PKIMessage, and that the
PKI (CA) <bcp14>MUST</bcp14> produce a single response PKIMessage that contains the
complete response (i.e., including the <bcp14>OPTIONAL</bcp14> second key pair, if
it was requested and if centralized key generation is supported).
For simplicity, we also mandate that this message <bcp14>MUST</bcp14> be the final
one (i.e., no use of "waiting" status value).</t>
        <t>The end entity has an out-of-band interaction with the CA/RA.  This
transaction established the shared secret, the referenceNumber and
OPTIONALLY the distinguished name used for both sender and subject
name in the certificate template. See <xref target="sect-8.5"/> for security
considerations on quality of shared secret information.</t>
        <t>Initialization Request -- ir</t>
        <artwork><![CDATA[
Field                Value

recipient            CA name
  -- the name of the CA who is being asked to produce a certificate
protectionAlg        MSG_MAC_ALG
  -- only MAC protection is allowed for this request, based
  -- on initial authentication key
senderKID            referenceNum
  -- the reference number which the CA has previously issued
  -- to the end entity (together with the MACing key)
transactionID        present
  -- implementation-specific value, meaningful to end
  -- entity.
  -- [If already in use at the CA, then a rejection message MUST
  -- be produced by the CA]

senderNonce          present
  -- 128 (pseudo-)random bits
freeText             any valid value
body                 ir (CertReqMessages)
                     only one or two CertReqMsg
                     are allowed
  -- if more certificates are required, requests MUST be
  -- packaged in separate PKIMessages

CertReqMsg           one or two present
  -- see below for details, note: crm[0] means the first
  -- (which MUST be present), crm[1] means the second (which
  -- is OPTIONAL, and used to ask for a centrally-generated key)

crm[0].certReq.      fixed value of zero
   certReqId
  -- this is the index of the template within the message
crm[0].certReq       present
   certTemplate
  -- MUST include subject public key value, otherwise unconstrained
crm[0].pop...        optionally present if public key
   POPOSigningKey    from crm[0].certReq.certTemplate is
                     a signing key
  -- proof-of-possession MAY be required in this exchange
  -- (see Appendix D.3 for details)
crm[0].certReq.      optionally present
   controls.archiveOptions
  -- the end entity MAY request that the locally-generated
  -- private key be archived

crm[0].certReq.      optionally present
   controls.publicationInfo
  -- the end entity MAY ask for publication of resulting cert.

crm[1].certReq       fixed value of one
      certReqId
     -- the index of the template within the message
   crm[1].certReq       present
      certTemplate
      -- MUST NOT include actual public key bits, otherwise
      -- unconstrained (e.g., the names need not be the same as in
      -- crm[0]).  Note that subjectPublicKeyInfo MAY be present
      -- and contain an AlgorithmIdentifier followed by a
      -- zero-length BIT STRING for the subjectPublicKey if it is
      -- desired to inform the CA/RA of algorithm and parameter
      -- preferences regarding the to-be-generated key pair.

   crm[1].certReq.      present [object identifier MUST be
                                 PROT_ENC_ALG]

      controls.protocolEncrKey
     -- if centralized key generation is supported by this CA,
     -- this short-term asymmetric encryption key (generated by
     -- the end entity) will be used by the CA to encrypt (a
     -- symmetric key used to encrypt) a private key generated by
     -- the CA on behalf of the end entity

crm[1].certReq.      optionally present
   controls.archiveOptions
crm[1].certReq.      optionally present
   controls.publicationInfo
protection           present
  -- bits calculated using MSG_MAC_ALG
]]></artwork>
        <t>Initialization Response -- ip</t>
        <artwork><![CDATA[
Field                Value

sender               CA name
  -- the name of the CA who produced the message
messageTime          present
  -- time at which CA produced message
protectionAlg        MSG_MAC_ALG
  -- only MAC protection is allowed for this response
senderKID             referenceNum
  -- the reference number that the CA has previously issued to the
  -- end entity (together with the MACing key)
transactionID        present
  -- value from corresponding ir message
senderNonce          present
  -- 128 (pseudo-)random bits
recipNonce           present
  -- value from senderNonce in corresponding ir message
freeText             any valid value
body                 ip (CertRepMessage)
                     contains exactly one response
                     for each request

     -- The PKI (CA) responds to either one or two requests as
     -- appropriate.  crc[0] denotes the first (always present);
     -- crc[1] denotes the second (only present if the ir message
     -- contained two requests and if the CA supports centralized
     -- key generation).
   crc[0].              fixed value of zero
      certReqId
     -- MUST contain the response to the first request in the
     -- corresponding ir message

crc[0].status.       present, positive values allowed:
   status               "accepted", "grantedWithMods"
                     negative values allowed:
                        "rejection"
crc[0].status.       present if and only if
   failInfo          crc[0].status.status is "rejection"
crc[0].              present if and only if
   certifiedKeyPair  crc[0].status.status is
                        "accepted" or "grantedWithMods"
certificate          present unless end entity's public
                     key is an encryption key and POP
                     is done in this in-band exchange
encryptedCert        present if and only if end entity's
                     public key is an encryption key and
                     POP done in this in-band exchange
publicationInfo      optionally present

  -- indicates where certificate has been published (present
  -- at discretion of CA)

crc[1].              fixed value of one
   certReqId
  -- MUST contain the response to the second request in the
  -- corresponding ir message
crc[1].status.       present, positive values allowed:
   status               "accepted", "grantedWithMods"
                     negative values allowed:
                        "rejection"
crc[1].status.       present if and only if
   failInfo          crc[0].status.status is "rejection"
crc[1].              present if and only if
   certifiedKeyPair  crc[0].status.status is "accepted"
                     or "grantedWithMods"
certificate          present
privateKey           present
   -- Use EnvelopedData; if backward compatibility is required,
   -- use EncryptedValue, see Section 5.2.2
publicationInfo      optionally present
  -- indicates where certificate has been published (present
  -- at discretion of CA)

protection           present
  -- bits calculated using MSG_MAC_ALG
extraCerts           optionally present
  -- the CA MAY provide additional certificates to the end
  -- entity
]]></artwork>
        <t>Certificate confirm -- certConf</t>
        <artwork><![CDATA[
Field                Value

sender               present
  -- same as in ir
recipient            CA name
  -- the name of the CA who was asked to produce a certificate
transactionID        present
  -- value from corresponding ir and ip messages
senderNonce          present
  -- 128 (pseudo-) random bits
recipNonce           present
  -- value from senderNonce in corresponding ip message
protectionAlg        MSG_MAC_ALG
  -- only MAC protection is allowed for this message.  The
  -- MAC is based on the initial authentication key shared
  -- between the EE and the CA.

senderKID            referenceNum
  -- the reference number which the CA has previously issued
  -- to the end entity (together with the MACing key)

body                 certConf
  -- see Section 5.3.18, "PKI Confirmation Content", for the
  -- contents of the certConf fields.
  -- Note: two CertStatus structures are required if both an
  -- encryption and a signing certificate were sent.

protection           present
  -- bits calculated using MSG_MAC_ALG
]]></artwork>
        <t>Confirmation -- PKIConf</t>
        <artwork><![CDATA[
Field                Value

sender               present
  -- same as in ip
recipient            present
  -- sender name from certConf
transactionID        present
  -- value from certConf message
senderNonce          present
  -- 128 (pseudo-) random bits
recipNonce           present
  -- value from senderNonce from certConf message
protectionAlg        MSG_MAC_ALG
  -- only MAC protection is allowed for this message.
senderKID            referenceNum
body                 PKIConf
protection           present
  -- bits calculated using MSG_MAC_ALG
]]></artwork>
      </section>
      <section anchor="sect-c.5">
        <name>Certificate Request</name>
        <t>An (initialized) end entity requests a certificate from a CA (for any
reason).  When the CA responds with a message containing a
certificate, the end entity replies with a certificate confirmation.
The CA replies with a PKIConfirm, to close the transaction.  All
messages are authenticated.</t>
        <t>The profile for this exchange is identical to that given in <xref target="sect-c.4"/>,
with the following exceptions:</t>
        <ul spacing="normal">
          <li>sender name <bcp14>SHOULD</bcp14> be present</li>
          <li>protectionAlg of MSG_SIG_ALG <bcp14>MUST</bcp14> be supported (MSG_MAC_ALG <bcp14>MAY</bcp14>
also be supported) in request, response, certConfirm, and
PKIConfirm messages;</li>
          <li>senderKID and recipKID are only present if required for message
verification;</li>
          <li>body is cr or cp;</li>
          <li>body may contain one or two CertReqMsg structures, but either
CertReqMsg may be used to request certification of a
locally-generated public key or a centrally-generated public key
(i.e., the position-dependence requirement of <xref target="sect-c.4"/> is
removed);</li>
          <li>protection bits are calculated according to the protectionAlg
field.</li>
        </ul>
      </section>
      <section anchor="sect-c.6">
        <name>Key Update Request</name>
        <t>An (initialized) end entity requests a certificate from a CA (to
update the key pair and/or corresponding certificate that it already
possesses).  When the CA responds with a message containing a
certificate, the end entity replies with a certificate confirmation.
The CA replies with a PKIConfirm, to close the transaction.  All
messages are authenticated.</t>
        <t>The profile for this exchange is identical to that given in<xref target="sect-c.4"/>,
with the following exceptions:</t>
        <ol spacing="normal" type="1"><li>sender name <bcp14>SHOULD</bcp14> be present</li>
          <li>protectionAlg of MSG_SIG_ALG <bcp14>MUST</bcp14> be supported (MSG_MAC_ALG <bcp14>MAY</bcp14>
  also be supported) in request, response, certConfirm, and
  PKIConfirm messages;</li>
          <li>senderKID and recipKID are only present if required for message
  verification;</li>
          <li>body is kur or kup;</li>
          <li>body may contain one or two CertReqMsg structures, but either
  CertReqMsg may be used to request certification of a locally-generated
  public key or a centrally-generated public key (i.e.,the
  position-dependence requirement of <xref target="sect-c.4"/> is removed);</li>
          <li>protection bits are calculated according to the protectionAlg
  field;</li>
          <li>regCtrl OldCertId <bcp14>SHOULD</bcp14> be used (unless it is clear to both
  sender and receiver -- by means not specified in this document --
  that it is not needed).</li>
        </ol>
      </section>
    </section>
    <section anchor="sect-d">
      <name>PKI Management Message Profiles (OPTIONAL)</name>
      <t>This appendix contains detailed profiles for those PKIMessages that
<bcp14>MAY</bcp14> be supported by implementations.</t>
      <t>Profiles for the PKIMessages used in the following PKI management
operations are provided:</t>
      <ul spacing="normal">
        <li>root CA key update</li>
        <li>information request/response</li>
        <li>cross-certification request/response (1-way)</li>
        <li>in-band initialization using external identity certificate</li>
      </ul>
      <t>Later versions of this document may extend the above to include
profiles for the operations listed below (along with other
operations, if desired).</t>
      <ul spacing="normal">
        <li>revocation request</li>
        <li>certificate publication</li>
        <li>CRL publication</li>
      </ul>
      <section anchor="sect-d.1">
        <name>General Rules for Interpretation of These Profiles.</name>
        <t>Identical to <xref target="sect-c.1"/>.</t>
      </section>
      <section anchor="sect-d.2">
        <name>Algorithm Use Profile</name>
        <t>Identical to <xref target="sect-c.2"/>.</t>
      </section>
      <section anchor="sect-d.3">
        <name>Self-Signed Certificates</name>
        <t>Profile of how a Certificate structure may be "self-signed".  These
structures are used for distribution of CA public keys.  This can
occur in one of three ways (see <xref target="sect-4.4"/> above for a description
of the use of these structures):</t>
        <artwork><![CDATA[
Type          Function
-----------------------------------------------------------------
newWithNew a true "self-signed" certificate; the contained
           public key MUST be usable to verify the signature
           (though this provides only integrity and no
           authentication whatsoever)
oldWithNew previous root CA public key signed with new private key
newWithOld new root CA public key signed with previous private key
]]></artwork>
        <t>Such certificates (including relevant extensions) must contain
"sensible" values for all fields.  For example, when present,
subjectAltName <bcp14>MUST</bcp14> be identical to issuerAltName, and, when present,
keyIdentifiers must contain appropriate values, et cetera.</t>
      </section>
      <section anchor="sect-d.4">
        <name>Root CA Key Update</name>
        <t>A root CA updates its key pair.  It then produces a CA key update
announcement message that can be made available (via some transport
mechanism) to the relevant end entities.  A confirmation message is
not required from the end entities.</t>
        <t>ckuann message:</t>
        <artwork><![CDATA[
 Field        Value                        Comment
--------------------------------------------------------------
 sender       CA name CA name
 body         ckuann(CAKeyUpdAnnContent)
 oldWithNew   present                  see Appendix D.3 above
 newWithOld   present                  see Appendix D.3 above
 newWithNew   present                  see Appendix D.3 above
 extraCerts   optionally present       can be used to "publish"
                                       certificates (e.g.,
                                       certificates signed using
                                       the new private key)
]]></artwork>
      </section>
      <section anchor="sect-d.5">
        <name>PKI Information Request/Response</name>
        <t>The end entity sends a general message to the PKI requesting details
that will be required for later PKI management operations.  RA/CA
responds with a general response.  If an RA generates the response,
then it will simply forward the equivalent message that it previously
received from the CA, with the possible addition of certificates to
the extraCerts fields of the PKIMessage.  A confirmation message is
not required from the end entity.</t>
        <t>Message Flows:</t>
        <artwork><![CDATA[
Step# End entity                        PKI

   1  format genm
   2                ->   genm   ->
   3                                    handle genm
   4                                    produce genp
   5                <-   genp   <-
   6  handle genp
]]></artwork>
        <t>genM:</t>
        <artwork><![CDATA[
Field               Value

recipient           CA name
  -- the name of the CA as contained in issuerAltName
  -- extensions or issuer fields within certificates
protectionAlg       MSG_MAC_ALG or MSG_SIG_ALG
  -- any authenticated protection alg.
SenderKID           present if required
  -- must be present if required for verification of message
  -- protection
freeText            any valid value
body                genr (GenReqContent)
GenMsgContent       empty SEQUENCE
  -- all relevant information requested
protection          present
  -- bits calculated using MSG_MAC_ALG or MSG_SIG_ALG
]]></artwork>
        <t>genP:</t>
        <artwork><![CDATA[
Field                Value

sender               CA name
  -- name of the CA which produced the message
protectionAlg        MSG_MAC_ALG or MSG_SIG_ALG
  -- any authenticated protection alg.
senderKID            present if required
  -- must be present if required for verification of message
  -- protection
body                 genp (GenRepContent)
CAProtEncCert        present (object identifier one
                     of PROT_ENC_ALG), with relevant
                     value
  -- to be used if end entity needs to encrypt information for
  -- the CA (e.g., private key for recovery purposes)

SignKeyPairTypes     present, with relevant value
  -- the set of signature algorithm identifiers that this CA will
  -- certify for subject public keys
EncKeyPairTypes      present, with relevant value
  -- the set of encryption/key agreement algorithm identifiers that
  -- this CA will certify for subject public keys
PreferredSymmAlg     present (object identifier one
                     of PROT_SYM_ALG) , with relevant
                     value
  -- the symmetric algorithm that this CA expects to be used
  -- in later PKI messages (for encryption)
CAKeyUpdateInfo      optionally present, with
                     relevant value
  -- the CA MAY provide information about a relevant root CA
  -- key pair using this field (note that this does not imply
  -- that the responding CA is the root CA in question)
CurrentCRL           optionally present, with relevant value
  -- the CA MAY provide a copy of a complete CRL (i.e.,
  -- fullest possible one)
protection           present
  -- bits calculated using MSG_MAC_ALG or MSG_SIG_ALG
extraCerts           optionally present
  -- can be used to send some certificates to the end
  -- entity. An RA MAY add its certificate here.
]]></artwork>
      </section>
      <section anchor="sect-d.6">
        <name>Cross Certification Request/Response (1-way)</name>
        <t>Creation of a single cross-certificate (i.e., not two at once).  The
requesting CA <bcp14>MAY</bcp14> choose who is responsible for publication of the
cross-certificate created by the responding CA through use of the
PKIPublicationInfo control.</t>
        <t>Preconditions:</t>
        <ol spacing="normal" type="1"><li>Responding CA can verify the origin of the request (possibly
  requiring out-of-band means) before processing the request.</li>
          <li>Requesting CA can authenticate the authenticity of the origin of
  the response (possibly requiring out-of-band means) before
  processing the response</li>
        </ol>
        <t>The use of certificate confirmation and the corresponding server
confirmation is determined by the generalInfo field in the PKIHeader
(see <xref target="sect-5.1.1"/>).  The following profile does not mandate support
for either confirmation.</t>
        <t>Message Flows:</t>
        <artwork><![CDATA[
Step# Requesting CA                       Responding CA
  1   format ccr
  2                   ->    ccr    ->
  3                                       handle ccr
  4                                       produce ccp
  5                   <-    ccp    <-
  6   handle ccp
]]></artwork>
        <t>ccr:</t>
        <artwork><![CDATA[
Field                 Value

sender                Requesting CA name
  -- the name of the CA who produced the message
recipient             Responding CA name
  -- the name of the CA who is being asked to produce a certificate
messageTime           time of production of message
  -- current time at requesting CA
protectionAlg         MSG_SIG_ALG
  -- only signature protection is allowed for this request
senderKID             present if required
  -- must be present if required for verification of message
  -- protection
recipKID             present if required
  -- must be present if required for verification of message
  -- protection
transactionID         present
  -- implementation-specific value, meaningful to requesting CA.
  -- [If already in use at responding CA then a rejection message
  -- MUST be produced by responding CA]
senderNonce           present
  -- 128 (pseudo-)random bits
freeText              any valid value
body                  ccr (CertReqMessages)
                      only one CertReqMsg
                      allowed
  -- if multiple cross certificates are required, they MUST be
  -- packaged in separate PKIMessages
certTemplate          present
  -- details follow
version               v1 or v3
  -- v3 STRONGLY RECOMMENDED
signingAlg            present
  -- the requesting CA must know in advance with which algorithm it
  -- wishes the certificate to be signed

subject               present
  -- may be NULL-DN only if subjectAltNames extension value proposed
validity              present
  -- MUST be completely specified (i.e., both fields present)
issuer                present
  -- may be NULL-DN only if issuerAltNames extension value proposed
publicKey             present
  -- the key to be certified (which must be for a signing algorithm)
extensions            optionally present
  -- a requesting CA must propose values for all extensions
  -- that it requires to be in the cross-certificate
POPOSigningKey        present
  -- see Section D3: Proof-of-possession profile
protection            present
  -- bits calculated using MSG_SIG_ALG
extraCerts            optionally present
  -- MAY contain any additional certificates that requester wishes
  -- to include
]]></artwork>
        <t>ccp:</t>
        <artwork><![CDATA[
Field                 Value

sender                Responding CA name
  -- the name of the CA who produced the message
recipient             Requesting CA name
  -- the name of the CA who asked for production of a certificate
messageTime           time of production of message
  -- current time at responding CA
protectionAlg         MSG_SIG_ALG
  -- only signature protection is allowed for this message
senderKID             present if required
  -- must be present if required for verification of message
  -- protection
recipKID              present if required
transactionID         present
  -- value from corresponding ccr message
senderNonce           present
  -- 128 (pseudo-)random bits
recipNonce            present
-- senderNonce from corresponding ccr message
freeText              any valid value
body                  ccp (CertRepMessage)
                      only one CertResponse allowed
  -- if multiple cross certificates are required they MUST be
  -- packaged in separate PKIMessages
response              present
status                present

PKIStatusInfo.status  present
  -- if PKIStatusInfo.status is one of:
  --   accepted, or
  --   grantedWithMods,
  -- then certifiedKeyPair MUST be present and failInfo MUST
  -- be absent

failInfo              present depending on
                      PKIStatusInfo.status
  -- if PKIStatusInfo.status is:
  --   rejection
  -- then certifiedKeyPair MUST be absent and failInfo MUST be
  -- present and contain appropriate bit settings

certifiedKeyPair      present depending on
                      PKIStatusInfo.status
certificate           present depending on
                      certifiedKeyPair
  -- content of actual certificate must be examined by requesting CA
  -- before publication
protection            present
  -- bits calculated using MSG_SIG_ALG
extraCerts            optionally present
  -- MAY contain any additional certificates that responder wishes
  -- to include
]]></artwork>
      </section>
      <section anchor="sect-d.7">
        <name>In-Band Initialization Using External Identity Certificate</name>
        <t>An (uninitialized) end entity wishes to initialize into the PKI with
a CA, CA-1.  It uses, for authentication purposes, a pre-existing
identity certificate issued by another (external) CA, CA-X.  A trust
relationship must already have been established between CA-1 and CA-X
so that CA-1 can validate the EE identity certificate signed by CA-X.
Furthermore, some mechanism must already have been established within
the Personal Security Environment (PSE) of the EE that would allow it
to authenticate and verify PKIMessages signed by CA-1 (as one
example, the PSE may contain a certificate issued for the public key
of CA-1, signed by another CA that the EE trusts on the basis of
out-of-band authentication techniques).</t>
        <t>The EE sends an initialization request to start the transaction.
When CA-1 responds with a message containing the new certificate, the
end entity replies with a certificate confirmation.  CA-1 replies
with a PKIConfirm to close the transaction.  All messages are signed
(the EE messages are signed using the private key that corresponds to
the public key in its external identity certificate; the CA-1
messages are signed using the private key that corresponds to the
public key in a</t>
        <t>certificate that can be chained to a trust anchor in the EE's PSE).</t>
        <t>The profile for this exchange is identical to that given in <xref target="sect-c.4"/>,
with the following exceptions:</t>
        <ul spacing="normal">
          <li>the EE and CA-1 do not share a symmetric MACing key (i.e., there
is no out-of-band shared secret information between these
entities);</li>
          <li>sender name in ir <bcp14>MUST</bcp14> be present (and identical to the subject
name present in the external identity certificate);</li>
          <li>protectionAlg of MSG_SIG_ALG <bcp14>MUST</bcp14> be used in all messages;</li>
          <li>external identity cert.  <bcp14>MUST</bcp14> be carried in ir extraCerts field</li>
          <li>senderKID and recipKID are not used;</li>
          <li>body is ir or ip;</li>
          <li>protection bits are calculated according to the protectionAlg
field.</li>
        </ul>
      </section>
    </section>
    <section anchor="sect-e">
      <name>Variants of Using KEM Keys for PKI Message Protection</name>
      <t>As described in <xref target="sect-5.1.3.4"/>, any party in a PKI management operation may wish to use a KEM key pair for message protection. Below possible cases are described.</t>
      <t>In the following message flows Alice indicates the PKI entity that uses a KEM key pair for message authentication and Bob provides the KEM ciphertext using Alice's public KEM key, as described in <xref target="sect-5.1.3.4"/>.</t>
      <t>Message Flow when the PKI entity has a KEM key pair and certificate:</t>
      <figure anchor="KEM-Flow1">
        <name>Message Flow when PKI entity has a KEM key pair</name>
        <artwork align="left"><![CDATA[
Step# PKI entity                           PKI management entity
      (Alice)                              (Bob)
  1   format unprotected genm
        containing KEM
        certificate in
        extraCerts
                         ->   genm    ->
  2                                        validate KEM certificate
                                           perform KEM Encapsulate
                                           format unprotected genp
                                             containing KEM
                                             ciphertext in PKIBody
                         <-   genp    <-
  3   perform KEM Decapsulate
      perform key derivation
        to get ssk
      format request with
        MAC-based protection
                         ->  request  ->
  4                                        perform key derivation
                                             to get ssk
                                           verify MAC-based
                                             protection

--------  PKI entity authenticated by PKI management entity  --------

                                           format response with
                                             protection depending on
                                             available key material
                         <-  response <-
  5   verify protection
        provided by the
        PKI management entity

          Further messages of this PKI management operation
        can be exchanged with MAC-based protection by the PKI
         entity using the established shared secret key (ssk)
]]></artwork>
      </figure>
      <t>Message Flow when the PKI entity knows that the PKI management entity uses a KEM key pair and has the authentic public key:</t>
      <figure anchor="KEM-Flow2">
        <name>Message Flow when the PKI entity knows that the PKI management entity uses a KEM key pair and has the authentic public key</name>
        <artwork align="left"><![CDATA[
Step# PKI entity                           PKI management entity
      (Bob)                                (Alice)
  1   perform KEM Encapsulate
      format request containing
        KEM ciphertext in
        generalInfo and with
        protection depending on
        available key material
                         ->  request  ->
  2                                        perform KEM Decapsulate
                                           perform key derivation
                                             to get ssk
                                           format response with
                                             MAC-based protection
                         <-  response <-
  3   perform key derivation
        to get ssk
      verify MAC-based
        protection

--------  PKI management entity authenticated by PKI entity  --------

          Further messages of this PKI management operation
          can be exchanged with MAC-based protection by the
             PKI management entity using the established
                        shared secret key (ssk)
]]></artwork>
      </figure>
      <t>Message Flow when the PKI entity does not know that the PKI management entity uses a KEM key pair:</t>
      <figure anchor="KEM-Flow3">
        <name>Message Flow when the PKI entity does not know that the PKI management entity uses a KEM key pair</name>
        <artwork align="left"><![CDATA[
Step# PKI entity                           PKI management entity
      (Bob)                                (Alice)
  1   format request with
        protection depending
        on available key
        material
                         ->  request  ->
  2                                        format unprotected error
                                             with status "rejection"
                                             and failInfo
                                             "wrongIntegrity" and KEM
                                             certificate in
                                             extraCerts
                         <-   error   <-
  3   validate KEM certificate

                 proceed as shown in Figure 4 above
]]></artwork>
      </figure>
    </section>
    <section anchor="sect-f">
      <name>Compilable ASN.1 Definitions</name>
      <t>This section contains the updated 2002 ASN.1 module for <xref target="RFC5912"/>
as updated in [RFCAAAA].
This module replaces the module in Section 9 of <xref target="RFC5912"/>.
The module contains those changes to the normative ASN.1 module from
<xref target="RFC4210">RFC 4210 Appendix F</xref> that were specified in [RFCAAAA]
as well as changes made in this document.</t>
      <t>&lt; TBD: Should we also include the 1988 ASN.1 Module? &gt;</t>
      <sourcecode type="asn.1"><![CDATA[
PKIXCMP-2023
    { iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7) id-mod(0)
    id-mod-cmp2023-02(TBD2) }
DEFINITIONS EXPLICIT TAGS ::=
BEGIN
IMPORTS

AttributeSet{}, SingleAttribute{}, 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, KEY-DERIVATION
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, Time, 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)}

DistributionPointName, GeneralNames, 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, CertId,
    CertReqMessages, Controls, RegControlSet, id-regCtrl
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) }
    -- The import of EncryptedKey is added due to the updates made
    -- in CMP Updates [RFCAAAA]. EncryptedValue does not need to
    -- be imported anymore and is therefore removed here.

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 [RFC2986] 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
    -- CMP Updates [RFCAAAA]

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 CMP Updates [RFCAAAA]

KEM-ALGORITHM
FROM KEMAlgorithmInformation-2023  -- [RFC]
    { iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7) id-mod(0)
    id-mod-kemAlgorithmInformation-2023(TBD3) }
-- RFC-Editor: Please set the new OID defined in
-- draft-ietf-lamps-cms-kemri as TBD3.
;

-- 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),
                                      cmp2012(3) },
    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]

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 [RFC2986]
    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
    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
}

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
    mac                 AlgorithmIdentifier{MAC-ALGORITHM, {...}}
    -- the MAC AlgId
}

-- id-KemBasedMac and KemBMParameter added in [RFCXXXX]

id-KemBasedMac OBJECT IDENTIFIER ::= { iso(1) member-body(2)
    usa(840) nt(113533) nsn(7) algorithms(66) TBD4 }
KemBMParameter ::= SEQUENCE {
    kdf              AlgorithmIdentifier{KEY-DERIVATION, {...}},
    -- AlgId of the Key Derivation Function algorithm
    len              INTEGER (1..MAX),
    -- Defines the length of the keying material output of the KDF
    -- SHOULD be the maximum key length of the MAC function
    mac              AlgorithmIdentifier{MAC-ALGORITHM, {...}}
    -- AlgId of the Message Authentication Code algorithm
}

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),
    -- KEM ciphertext missing for MAC-based protection of response,
    -- or not valid integrity of message received (password based
    -- instead of signature or vice versa)
    badRecipientNonce   (13),
    -- not valid 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),
    -- not valid sender nonce, either missing or wrong size
    badCertTemplate     (19),
    -- not valid 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.
}

-- Added in CMP Updates [RFCAAAA]

Rand ::= SEQUENCE {
-- Rand is encrypted under the public key to form the challenge
-- in POPODecKeyChallContent
   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, which can only be a p10cr)
    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
    -- CMP Updates [RFCAAAA]
    -- 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
    -- CMP Updates [RFCAAAA]
    -- 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

-- CertReqTemplateContent, AttributeTypeAndValue,
-- ExpandedRegControlSet, id-regCtrl-altCertTemplate,
-- AltCertTemplate, regCtrl-algId, id-regCtrl-algId, AlgIdCtrl,
-- regCtrl-rsaKeyLen, id-regCtrl-rsaKeyLen, and RsaKeyLenCtrl
-- were added in CMP Updates [RFCAAAA]

CertReqTemplateContent ::= SEQUENCE {
   certTemplate           CertTemplate,
   -- prefilled certTemplate structure elements
   -- The SubjectPublicKeyInfo field in the certTemplate MUST NOT
   -- be used.
   keySpec                Controls OPTIONAL
   -- MAY be used to specify supported algorithms.
   -- Controls  ::= SEQUENCE SIZE (1..MAX) OF AttributeTypeAndValue
   -- as specified in CRMF (RFC4211)
   }

AttributeTypeAndValue ::= SingleAttribute{{ ... }}

ExpandedRegControlSet ATTRIBUTE ::= { RegControlSet |
   regCtrl-altCertTemplate | regCtrl-algId | regCtrl-rsaKeyLen, ... }

regCtrl-altCertTemplate ATTRIBUTE ::=
   { TYPE AltCertTemplate IDENTIFIED BY id-regCtrl-altCertTemplate }

id-regCtrl-altCertTemplate OBJECT IDENTIFIER ::= { id-regCtrl 7 }

AltCertTemplate ::= AttributeTypeAndValue
   -- specifies a template for a certificate other than an X.509v3
   -- public-key certificate

regCtrl-algId ATTRIBUTE ::=
   { TYPE AlgIdCtrl IDENTIFIED BY id-regCtrl-algId }

id-regCtrl-algId OBJECT IDENTIFIER ::= { id-regCtrl 11 }

AlgIdCtrl ::= AlgorithmIdentifier{ALGORITHM, {...}}
   -- SHALL be used to specify supported algorithms other than RSA

regCtrl-rsaKeyLen ATTRIBUTE ::=
   { TYPE RsaKeyLenCtrl IDENTIFIED BY id-regCtrl-rsaKeyLen }

id-regCtrl-rsaKeyLen OBJECT IDENTIFIER ::= { id-regCtrl 12 }

RsaKeyLenCtrl ::= INTEGER (1..MAX)
   -- SHALL be used to specify supported RSA key lengths

-- RootCaKeyUpdateContent, CRLSource, and CRLStatus were added in
-- CMP Updates [RFCAAAA]

RootCaKeyUpdateContent ::= SEQUENCE {
   newWithNew       CMPCertificate,
   -- new root CA certificate
   newWithOld   [0] CMPCertificate OPTIONAL,
   -- X.509 certificate containing the new public root CA key
   -- signed with the old private root CA key
   oldWithNew   [1] CMPCertificate OPTIONAL
   -- X.509 certificate containing the old public root CA key
   -- signed with the new private root CA key
   }

CRLSource ::= CHOICE {
   dpn          [0] DistributionPointName,
   issuer       [1] GeneralNames }

CRLStatus ::= SEQUENCE {
   source       CRLSource,
   thisUpdate   Time OPTIONAL }

-- KemCiphertextInfo and KemOtherInfo added in [RFCXXXX]

KemCiphertextInfo ::= SEQUENCE {
   kem              AlgorithmIdentifier{KEM-ALGORITHM, {...}},
   -- AlgId of the Key Encapsulation Mechanism algorithm
   ct               OCTET STRING
   -- Ciphertext output from the Encapsulate function
   }

KemOtherInfo ::= SEQUENCE {
   staticString     PKIFreeText,
   -- MUST be "CMP-KEM"
   transactionID    OCTET STRING,
   senderNonce      OCTET STRING,
   recipNonce       OCTET STRING,
   -- The tree fields above MUST contain the values from the message
   -- previously received containing the ciphertext (ct) in
   -- KemCiphertextInfo
   len              INTEGER (1..MAX),
   -- MUST be the value from  KemBMParameter
   mac              AlgorithmIdentifier{MAC-ALGORITHM, {...}}
   -- MUST be the MAC algorithm identifier used for MAC-based
   -- protection of the message and MUST be value from KemBMParameter
   ct               OCTET STRING
   -- MUST be the ciphertext from that KemCiphertextInfo
  }

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 SIZE (1..MAX) OF
--                                      AlgorithmIdentifier{{...}}
--   id-it-encKeyPairTypes  OBJECT IDENTIFIER ::= {id-it 3}
--      EncKeyPairTypesValue    ::= SEQUENCE SIZE (1..MAX) 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 SIZE (1..MAX) OF
--                                          OBJECT IDENTIFIER
--   id-it-keyPairParamReq  OBJECT IDENTIFIER ::= {id-it 10}
--      KeyPairParamReqValue    ::= OBJECT IDENTIFIER
--   id-it-keyPairParamRep  OBJECT IDENTIFIER ::= {id-it 11}
--      KeyPairParamRepValue    ::= AlgorithmIdentifier{{...}}
--   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 CMP Updates [RFCAAAA]
--      - 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
--   id-it-caCerts          OBJECT IDENTIFIER ::= {id-it 17}
--      CaCertsValue            ::= SEQUENCE SIZE (1..MAX) OF
--                                             CMPCertificate
--      - id-it-caCerts added in CMP Updates [RFCAAAA]
--   id-it-rootCaKeyUpdate  OBJECT IDENTIFIER ::= {id-it 18}
--      RootCaKeyUpdateValue    ::= RootCaKeyUpdateContent
--      - id-it-rootCaKeyUpdate added in CMP Updates [RFCAAAA]
--   id-it-certReqTemplate  OBJECT IDENTIFIER ::= {id-it 19}
--      CertReqTemplateValue    ::= CertReqTemplateContent
--      - id-it-certReqTemplate added in CMP Updates [RFCAAAA]
--   id-it-rootCaCert       OBJECT IDENTIFIER ::= {id-it 20}
--      RootCaCertValue         ::= CMPCertificate
--      - id-it-rootCaCert added in CMP Updates [RFCAAAA]
--   id-it-certProfile      OBJECT IDENTIFIER ::= {id-it 21}
--      CertProfileValue        ::= SEQUENCE SIZE (1..MAX) OF
--                                                 UTF8String
--      - id-it-certProfile added in CMP Updates [RFCAAAA]
--   id-it-crlStatusList    OBJECT IDENTIFIER ::= {id-it 22}
--      CRLStatusListValue      ::= SEQUENCE SIZE (1..MAX) OF
--                                                  CRLStatus
--      - id-it-crlStatusList added in CMP Updates [RFCAAAA]
--   id-it-crls             OBJECT IDENTIFIER ::= {id-it 23}
--      CRLsValue               ::= SEQUENCE SIZE (1..MAX) OF
--                                            CertificateList
--      - id-it-crls added in CMP Updates [RFCAAAA]
--   id-it-KemCiphertextInfo    OBJECT IDENTIFIER ::= {id-it TBD1}
--      KemCiphertextInfoValue  ::= KemCiphertextInfo
--      - id-it-KemCiphertextInfo added in [RFCXXXX]
--
-- 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,
    hashAlg [0] AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} OPTIONAL
    -- the hash algorithm to use for calculating certHash
    -- SHOULD NOT be used in all cases where the AlgorithmIdentifier
    -- of the certificate signature specifies a hash algorithm
   }

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
-- CMP Updates [RFCAAAA]
-- 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
]]></sourcecode>
    </section>
    <section anchor="sect-g">
      <name>History of Changes</name>
      <t>Note: This appendix will be deleted in the final version of the document.</t>
      <t>From version 06 -&gt; 07:</t>
      <ul spacing="normal">
        <li>Updated section 5.1.1.4 addressing a question from Liao Lijun on how to interpret less profile names than certReqMsgs</li>
        <li>Updated section 5.1.3.4 specifying establishing a shares secret key for one arbitrary side of the CMP communication only</li>
        <li>Removed the note and the security consideration regarding combiner function for HPKE</li>
        <li>Added security considerations 8.1 and 8.8</li>
        <li>Updates IANA Considerations in section 9 to add new OID for the updates ASN.1 module and for id-it-KemCiphertextInfo</li>
        <li>Added new appendix E showing different variants of using KEM keys for PKI message protection</li>
        <li>Updates ASN.1 module in appendix F</li>
      </ul>
      <t>From version 05 -&gt; 06:</t>
      <ul spacing="normal">
        <li>Updated section 5.1.3.4 exchanging HPKE with plain KEM+KDF as also used in draft-ietf-lamps-cms-kemri</li>
      </ul>
      <t>From version 04 -&gt; 05:</t>
      <ul spacing="normal">
        <li>Updated sections 5.1.3.4, 5.2.2, and 8.9 addressing comments from Russ (see thread "I-D Action: draft-ietf-lamps-rfc4210bis-04.txt")</li>
      </ul>
      <t>From version 03 -&gt; 04:</t>
      <ul spacing="normal">
        <li>Added Section 4.3.4 regarding POP for KEM keys</li>
        <li>Added Section 5.1.3.4 on message protection using KEM keys and HPKE</li>
        <li>Aligned Section 5.2.2 on guidance which CMS key management technique to use with encrypted values (see thread "CMS: selection of key management technique to use for EnvelopedData") also adding support for KEM keys</li>
        <li>Added Section 8.9 and extended Section 3.1.2 regarding use of Certificate Transparency logs</li>
        <li>Deleted former Appendix C as announced in the -03</li>
        <li>Fixed some nits resulting from XML -&gt; MD conversion</li>
      </ul>
      <t>From version 02 -&gt; 03:</t>
      <ul spacing="normal">
        <li>Updated Section 4.4.1 clarifying the definition of "new with new" certificate
validity period (see thread "RFC4210bis - notAfter time of newWithNew certificate")</li>
        <li>Added ToDo to Section 4.3 and 5.2.8 on required alignment regarding POP for
KEM keys.</li>
        <li>Updated Sections 5.2.1, 5.2.8, and 5.2.8.1 incorporating text of former Appendix
C (see thread "draft-ietf-lamps-rfc4210bis - ToDo on review of Appendix C")</li>
        <li>Added a ToDo to Appendix B to indicate additional review need to try pushing
the content to Sections 4 and Section 5</li>
      </ul>
      <t>From version 01 -&gt; 02:</t>
      <ul spacing="normal">
        <li>Added Section 3.1.1.4 introducing the Key Generation Authority</li>
        <li>Added Section 5.1.1.3 containing description of origPKIMessage content moved
here from Section 5.1.3.4</li>
        <li>Added ToDos on defining POP and message protection using KEM keys</li>
        <li>Added a ToDo to Section 4.4.3</li>
        <li>Added a ToDo to Appendix C to do a more detailed review</li>
        <li>Removed concrete algorithms and referred to CMP Algorithms instead</li>
        <li>Added references to Appendix D and E as well as the Lightweight CMP Profile
for further information</li>
        <li>Broaden the scope from human users also to devices and services</li>
        <li>Addressed idnits feedback, specifically changing from historic LDAP V2 to
LDAP V3 (RFC4510)</li>
        <li>Did some further editorial alignment to the XML</li>
      </ul>
      <t>From version 00 -&gt; 01:</t>
      <ul spacing="normal">
        <li>Performed all updates specified in CMP Updates Section 2 and Appendix A.2.</li>
        <li>Did some editorial allignment to the XML</li>
      </ul>
      <t>Version 00:</t>
      <t>This version consists of the text of RFC4210 with the following changes:</t>
      <ul spacing="normal">
        <li>Introduced the authors of this document and thanked the authors of RFC4210
for their work.</li>
        <li>Added a paragraph to the introduction explaining the background of this document.</li>
        <li>Added the change history to this appendix.</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
mEVvPF70JYvr2s/6tvDa28TrHxxG3As9Rj/0R93xIEOW7DHPdMadvCx7+qgB
Lg4rVjd5PpZ0MKH3zoveyo04LygSfZZZUvdnIFROmWvWmRncoMtVZBfpWOqg
mAGRzFR+qNrkbEYrRHKeciUnFd066yv9JuuLKRq4pKGNHjRJcLUVESRnc/W5
qFAYS1Svw2ZYuA4/MYDMePi1eqAtoqeLY5KxDG5hjr3yH21oB0nRpbcRizee
Fuf9WPjdQB7uYfIoNpOH20ge85Q8zILlyaNHmbXC1SRRK95XqG0ZyEiri5vG
M6uWpONk18Z92tHprM2mK9OMDvTKj4s6RqCsohptcti9ztO0NXpHiL+BJQew
+sqUPufl8tYBkDva9kgSzu5KshCfd3JR60MudVWO3+PAxiDGeDmILSt6NTmT
2Gpg2ExxTjw77W1CI5G500sTydxhvkUyX3BXtF72gmSLy4R7okgruD1lsSPR
Ojt5we4FpKWILA8XI1MKFf4RDzfYY4QJKeVKUZ3SN/FN2dbjIxxliSKpQmf1
Ve0J8LGpig+p/YcjM52Qr8RZtRaIKBJh7er5y7fo7DJmiXDx5szxxMEZW7Qj
qIDY1BiBCINlG/0CiWGbkWJAHegdeq4IT3vGPvOCFsa3lmSbQyg9jH7L6Bok
cWAdVwdOHVhAsGhEWaUBYUNMPm2k1KIlPWCJ0bFGMWKhp2zAq4jVQ4OxPhZa
eUYUBkH6FWW1MSFzvx19DNkGVvkLo3I4Kq33U88+NNMPeIJEWqSFgRW4Qmsm
uPmmgOdy4yWXOzCzwzbcgT3P+Ls81V6tpIBbjKRN1jBMIWfrp55xkX/gXlxK
2SEEAlDVBq42yMCtJ2wyGDdz9jLCpUe0zMWo+46sFSbsY6MVGGFhDplrexFx
EBus5cCovZWxeFLrq3/J6Us839YkeHmV05P5HDnFH4hWWjUmJ/YreGKTnohx
602zHEYygCd1yf/CGpoVdWhwIyoReUsy+y2YPU1wIJEJ0Hf7ld/hjaPAzqIh
tH02hRx252eMrOkOBEOIHcL58b/9cHJ+/NJvPi2atZzmpv8HzKsPavM9H0xG
KCjlpb55RuaDN1kR0N3FeSjpjVGDy+amwsnTlWyAoQuLJw2W8lYGbqpqoCyo
cEkWdl3r3NjuIA+VXL5tSObRupYrVLLc4YQ2ManSMBZgH43P79E9EWBFAq4i
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
Njzk16UfO+hWM95Sqhpzp7K6ueL8LMLX9rIPkn04aeuDim08J3n81lQc6X5U
AMN9NPLstg34jyd3BKeFJo5n43Lerqaf2ER+zeaf0sTahd3u3UDCNVa2/sZz
qfVN2KhVcmmCj9UuxMsqXQj5FcjWM0q4mmujwnkWceNvmrZ976I1Eakqiu3x
NxlXSDRmprWjBfqQZog+tq4Y88Cgt/p0ZrbVh6Vonemn9WmWRRMxCssM4tDJ
q/s8DwBVkfMxPoOc1Si0Pi7r4fFvo/Cv+YSMGtg+qCwHFdE3U7WOGaka3Pm8
ERlCk7xSDrjQ7/Ps1PTLGlwQnSXFc91NGrgkCaMiSnKaV+44SBQIF2WiD+9q
EJGtYhiLfCgleprFhAxQ77/wx3oI19Je4RuZVv/6Zfeu2nhPfenv8OXHZvF+
6Jnuzexfd6bV9RIMBQ/eeeDe05jOag2p5m5zuBlhIFGcj9E3fuOrEm7Bh4iS
71O+LDffHQkLDAxedzQRP8zFaaN/YBmiM/jQ8frUk9PlsFvfwJsvjU9q4h/P
pH89o/u0m6zLoey9u+3NuvZqWX9rdI9b9gLZdGt8PtP7DLYXL+E6hpHhgmvX
flvuuL+eO/6juNrnM1oN8cOAik8f2n85P90kNOaYnv4I+p1levrD78r8MnJ/
tVg0i0/jIXgY2DNkoWE/qRHrE/q0N3c+LprZzYmkxO9gU5+ugeT1v60+2yiJ
qLLg4hZGZVmr/3UbwlBesMVgNY2PaKt7Vd+A+/0Rp+ymvOBga17waw/e2iPv
voCE7DkT9uHF29Gev2av0XQNgTVs+LkWhJeWT4gtlMh57JNif3d3n9u4ayYr
Nm7+/PP5q6PHz/f2f/nF+cWRh/3yQKntQ/95N6LG+SUwQ5djNqDwd/5piZZ5
Tmg92ighUvFzZlxgrqb7QOP8Z2Sl/FAlo1w0dw4G87/+56P9vd2Qbf3qXe8L
/zV82Wf/BsJfWngdnQRM7mM1nWLGJPeLmfspBs/IuT8Wl9+8/Lq4uEV3iZR0
lBpAMNS958+e8Sjf4Cj/W/EnCp7x7c9Ge+AV/+vRm7Ph/u7+AVLjz0XdNr29
fkjsmQybxU05YwdE76DvhzDpPelT+cZZtfRP46tS77D3uB+cRS38NX9f/9R7
Cm0O/WL1dul5+ms4vptD78Pd/Z6fzn6/+MW9PH518vYE8IEuiuO/nr0+OTq5
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

-->

</rfc>
