<?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.24 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-rfc4210bis-04" 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.16.0 -->
  <front>
    <title abbrev="RFC4210bis">Internet X.509 Public Key Infrastructure -- Certificate Management Protocol (CMP)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc4210bis-04"/>
    <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>
      <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>
    <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-f"/> 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>
      </ul>
      <t>]</t>
      <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>
    </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>In order to prevent certain attacks and to allow a CA/RA to properly
check the validity of the binding between an end entity and a key
pair, the PKI management operations specified here make it possible
for an end entity to prove 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 where the recipient's KEM key is used.</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 also uses the recipient's KEM key).
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 an ir/cr/kur/genm, the value <bcp14>MUST NOT</bcp14> contain more elements
than the number of CertReqMsg or InfoTypeAndValue elements and the certificate
profile names refer to the elements in the given order.</t>
            <t>When used in a p10cr, the value <bcp14>MUST NOT</bcp14> contain multiple certificate profile
names.</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>
            <t>Note: As alternative to this mechanism, the mechanism described in <xref target="sect-5.1.3.4"/> can be applies.</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>&lt; ToDo: The WG recommended use of HPKE for establishing a shared secret key.  Today HPKE specifies only a D-H bases KEM in <xref target="RFC9180">RFC 9180 Section 4.1</xref>.  To be independent to HPKE this document could also use the approach shown in <xref target="I-D.ietf-lamps-cms-kemri">draft-ietf-lamps-cms-kemri</xref> only relying on the availability of a KeyGen, Encapsulate, and Decapsulate function.  This would ease this specification and allow further reuse of profiling KEM algorithms for use in CMS.  What do others think? &gt;</t>
            <t>In this case, an initial exchange using general messages is required to contribute to establishing a shared symmetric key as follows.  Both PKI entities require a certificate of the other
side and send a symmetric key in form of a KEM encapsulated ciphertext according
to <xref target="RFC9180">Hybrid Public Key Encryption</xref> to the respective recipient.
Each sender uses the SendExportBase to get
the fixed-length symmetric key (the KEM shared secret) and a fixed-length
encapsulation of that key and provide it to the recipient using the id-it-KemCiphertext as defined below.  The respective recipient uses ReveipExportBase
to recover the ephemeral symmetric key (the KEM shared secret) from the encapsulated
representation received from the sender.  Both functions are used as specified
in <xref target="RFC9180">RFC 9180 Section 6.2</xref>.
The symmetric key resulting from the first HPKE key exchange is to be
part of the input to the second HPKE key exchange.  Doing so, a symmetric
key authenticated by both PKI entities is established and used for MAC-based
message protection.</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>In this case, an initial exchange using general messages is required to establish
a shared symmetric key using two <xref target="RFC9180">Hybrid Public Key Encryption</xref> exchanges.</t>
            <t>The object identifier used for HPKE key exchanges is id-it-KemCiphertext,
which is defined in this document as:</t>
            <sourcecode type="asn.1"><![CDATA[
  id-it-KemCiphertext OBJECT IDENTIFIER ::= { id-it TBD1 }
]]></sourcecode>
            <t>When id-it-KemCiphertext is used, the value is either absent or of type
KemCiphertext.  The syntax for KemCiphertext is as follows:</t>
            <sourcecode type="asn.1"><![CDATA[
  KemCiphertext ::= SEQUENCE {
    kem              AlgorithmIdentifier,
    -- AlgId of the Key Encapsulation Mechanism
    kdf              AlgorithmIdentifier,
    -- AlgId of the Key Derivation Function
    len              INTEGER,
    -- Defines the length of the keying material output of the KDF
    -- SHOULD be the maximum key length of the MAC function
    -- MUST NOT be bigger that 255*Nh of the KDF where Nh is output
    --   size of the KDF
    enc              OCTET STRING
    -- Encrypted symmetric key from HPKE SendExportBase
  }
]]></sourcecode>
            <t>The messages protected using the key derived from the HPKE-exchanges will contain a MAC value in PKIProtection and the protectionAlg <bcp14>MAY</bcp14> be one of the options described
in CMP Algorithms Section 6.2 [RFCCCCC].</t>
            <t>The message flow establishing a shared symmetric key consists of an additional
genm/genp with no protection and the desired request/response messages with
MAC-based protection and looks like this:</t>
            <figure anchor="KEM">
              <name>Message flow establishing a shared symmetric key for MAC-based protection</name>
              <artwork align="left"><![CDATA[
Message Flow:

Step# PKI entity                           PKI management entity
      (client role)                        (server role)
  1   format genm without
        protection
                         ->   genm    ->
  2                                        validate certificate of
                                             PKI entitiy
                                           perform HPKE
                                             SendExportBase
                                           format genp without
                                             protection
                         <-   genp    <-
  3   validate
        certificate of PKI
        management entity
      perform HPKE
        ReceiveExportBase
      perform HPKE
        SendExportBase
      format request
        with MAC-based
        protection
                         ->  request  ->
  4                                        perform HPKE
                                             ReceiveExportBase
                                           verify MAC-based
                                             protection
----------------  client authenticated by the server  ---------------
                                           format response with
                                             MAC-based protection
                         <-  response <-
  5   verify MAC-based protection
----------------  server authenticated by the client  ---------------
        Further messages can be exchanged with MAC-based
      protection using the established shared symmetric key
]]></artwork>
            </figure>
            <t>Note: The PKI entity has a kemCertC certificate and the PKI management entity has a kemCertS certificate.</t>
            <ol spacing="normal" type="1"><li>The PKI entity formats a genm message of type id-it-KemCiphertext and the
  value is absent.  The message has no protection and the extraCerts field
  contains the client (which is the PKI entity in <xref target="KEM"/>) KEM-certificate kemCertC.</li>
              <li>
                <t>The PKI management entity validates the client certificate kemCertC.  </t>
                <t>
The PKI management entity concatenates the transactionID and senderNonce
genm_senderNonce from the PKIHeader of the recieved genm message to context1.  </t>
                <sourcecode type="asn.1"><![CDATA[
  context1 = concat(transactionID, genm_senderNonce)
]]></sourcecode>
                <t>
Note: The function concat(x0, ..., xN) concatenates the byte strings as specified
in RFC 9180 Section 3 <xref target="RFC9180"/>.  </t>
                <t>
It generates a shared secret ss1 and the associated ciphertext enc1 using
the HPKE export function SendExportBase and the clients public key pkC:  </t>
                <sourcecode type="asn.1"><![CDATA[
  SendExportBase(pkC, "round1", context1, len) = (enc1, ss1)
]]></sourcecode>
                <t>
Note: len <bcp14>SHOULD</bcp14> be the maximum key length of the MAC function to be used for
MAC-based message protection, but it <bcp14>MUST NOT</bcp14> be bigger that 255*Nh, where
Nh is the output size of the extract function of the used KDF.  </t>
                <t>
The genp message is of type id-it-KemCiphertext and the value is of type
KemCiphertext containing OIDs of the used KEM and KDF algorithm and the
ciphertext enc1. The message has no protection and the extraCerts field contains
the server (which is the PKI management entity in <xref target="KEM"/>) KEM-certificate kemCertS.</t>
              </li>
              <li>
                <t>The PKI entity validates the server certificate kemCertS.  </t>
                <t>
The PKI entity concatenates the transactionID and senderNonce genm_senderNonce
from the PKIHeader of the initial genm message to context1 as described above.  </t>
                <t>
It decapsulates the shared secret ss1 from the ciphertext enc1 using the
HPKE export function ReceiveExportBase and its private key skC:  </t>
                <sourcecode type="asn.1"><![CDATA[
  ReceiveExportBase(enc1, skC, "round1", context1, len) = ss1
]]></sourcecode>
                <t>
Note: If the decapsulation operation outputs an error, output a PKIFailureInfo
badMessageCheck, and terminate the PKI management operation.  </t>
                <t>
It concatenates the shared secret ss1, with the transactionID, the senderNonce
genp_senderNonce, and the recipNonce genp_recipNonce from the PKIHeader of
the received genp message to context2.  </t>
                <sourcecode type="asn.1"><![CDATA[
  context2 = concat(ss1, transactionID, genp_senderNonce,
                    genp_recipNonce)
]]></sourcecode>
                <t>
It generates a shared secret ss2 and the associated ciphertext enc2 using
the HPKE export function SendExportBase and the server's public key pkS:  </t>
                <sourcecode type="asn.1"><![CDATA[
  SendExportBase(pkS, "round2", context2, len) = (enc2, ss2)
]]></sourcecode>
                <t>
Note: The shared secret ss2 is the shared symmetric key to be used for MAC-based
protection of all subsequent messages of this PKI management operation. This
construction for combining two KEM shared secrets by chaining two invocations
of HPKE is at least as strong as the KEM combiner presented in
<xref target="I-D.ounsworth-cfrg-kem-combiners"/>, also see <xref target="sect-8.8"/> for further discussion.  </t>
                <t>
The request message is of any type. The generalInfo field contains a InfoTypeAndValue
element of type id-it-KemCiphertext and the value is of type KemCiphertext
containing OIDs of the used KEM and KDF algorithm and the ciphertext enc2.
The message has a MAC-based protection using the shared secret ss2.</t>
              </li>
              <li>
                <t>PKI management entity concatenates the shared secret ss1, with the transactionID,
the senderNonce genp_senderNonce, and the recipNonce genp_recipNonce from
the PKIHeader of the received genp message to context2 as described above.  </t>
                <sourcecode type="asn.1"><![CDATA[
  context2 = concat(ss1, transactionID, genp_senderNonce,
                    genp_recipNonce)
]]></sourcecode>
                <t>
It decapsulates the shared secret ss2 from the ciphertext enc2 using the
HPKE export function ReceiveExportBase and its private key skS:  </t>
                <sourcecode type="asn.1"><![CDATA[
  ReceiveExportBase(enc2, skC, "round2", context2, len) = ss2
]]></sourcecode>
                <t>
Note: If the decapsulation operation outputs an error, output a PKIFailureInfo
badMessageCheck, and terminate the PKI management operation.  </t>
                <t>
It verifies the MAC-based protection and thus authenticates the PKI entity
as sender of the request message.  </t>
                <t>
The response message has a MAC-based protection the shared secret ss2.</t>
              </li>
              <li>The PKI entity verifies the MAC-based protection and thus authenticates the
PKI management entity as sender of the response message.</li>
            </ol>
            <t>All potential further message of this PKI management operation make use of
ss2 for MAC-based protection.</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 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 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 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>
        </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>
        <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.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.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.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>Combiner Function for Hybrid Key Encapsulation Mechanisms</name>
        <t><xref target="I-D.ounsworth-cfrg-kem-combiners"/> presents the KEM combiner
KDF( concat( H(ss1), H(ss2) ) ) for suitable choices
of a key derivation function KDF and a cryptographic hash function H. It
argues that this construction can safely be reduced to KDF( concat(ss1, ss2)
) when the KEMs being combined already include a KDF as part of computing
their output. The dual KEM construction presented in <xref target="sect-5.1.3.2"/>
conforms to this construction in the following way. The output of the first
HPKE, ss1 is computed via ReceiveExportBase(..) (<xref target="RFC9180">RFC 9180 section 6.2</xref>),
which chains to Context.Export(..) (<xref target="RFC9180">RFC 9180 section 5.3</xref>),
which chains to LabeledExpand(..) and Expand(..) (<xref target="RFC9180">RFC 9180 section 4</xref>),
which uses a KDF to expand the KEM output prk into ss1. That matches or
exceeds the security strength of H(ss1) from <xref target="I-D.ounsworth-cfrg-kem-combiners"/>.
Next, the dual KEM construction presented in <xref target="sect-5.1.3.1"/> uses the HPKE output ss1
as part of the label context2 for the second HPKE.
This in turn is passed through ReceiveExportBase(..), Context.Export(..),
LabeledExpand(..), and Expand(..) as above where finally the label context2,
which is the info parameter for the Export(prk, info, l) function, and which
contains the output of the first HPKE ss1, is concatenated with the output
of the second KEM prk to produce the final shared secret ss2. That means
the dual KEM construction defined in <xref target="sect-5.1.3.1"/> maps to the notation of
<xref target="I-D.ounsworth-cfrg-kem-combiners"/> as KDF( concat( ss2, KDF(ss1) ),
which is cryptographically stronger than
the combiner KDF( ss1 || ss2 ) so long as the underlying KEM used in the
second HPKE uses internally a KDF for deriving its output.</t>
      </section>
      <section anchor="sect-8.9">
        <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"/>. 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>The IANA has already registered what is specified in CMP Updates [RFCAAAA].</t>
      <t>No further action by the IANA is necessary for this document or any anticipated
updates.</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">
              <organization/>
            </author>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="D. Brown" initials="D." surname="Brown">
              <organization/>
            </author>
            <author fullname="K. Yiu" initials="K." surname="Yiu">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="T. Polk" initials="T." surname="Polk">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes">
              <organization/>
            </author>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan">
              <organization/>
            </author>
            <author fullname="B. Lipp" initials="B." surname="Lipp">
              <organization/>
            </author>
            <author fullname="C. Wood" initials="C." surname="Wood">
              <organization/>
            </author>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </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="24" month="February" 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-00"/>
        </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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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="27" month="January" 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-07"/>
        </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="I-D.ounsworth-cfrg-kem-combiners">
          <front>
            <title>Combiner function for hybrid key encapsulation mechanisms (Hybrid KEMs)</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <date day="25" month="November" year="2022"/>
            <abstract>
              <t>   The migration to post-quantum cryptography often calls for performing
   multiple key encapsulations in parallel and then combining their
   outputs to derive a single shared secret.

   This document defines the KEM combiner KDF( H(ss1) || H(ss2) ) which
   is considered to be a dual PRF in practice, even though not provably
   secure.  This mechanism simplifies to KDF( ss1 || ss2 ) when used
   with a KEM which internally uses a KDF to produce its shared secret.
   RSA-KEM, ECDH, Edwards curve DH, and CRYSTALS-Kyber are shown to meet
   this criteria and therefore be safe to use with the simplified KEM
   combiner.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ounsworth-cfrg-kem-combiners-00"/>
        </reference>
        <reference anchor="RFC1847">
          <front>
            <title>Security Multiparts for MIME: Multipart/Signed and Multipart/Encrypted</title>
            <author fullname="J. Galvin" initials="J." surname="Galvin">
              <organization/>
            </author>
            <author fullname="S. Murphy" initials="S." surname="Murphy">
              <organization/>
            </author>
            <author fullname="S. Crocker" initials="S." surname="Crocker">
              <organization/>
            </author>
            <author fullname="N. Freed" initials="N." surname="Freed">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="T. Kause" initials="T." surname="Kause">
              <organization/>
            </author>
            <author fullname="T. Mononen" initials="T." surname="Mononen">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <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="RFC8649">
          <front>
            <title>Hash Of Root Key Certificate Extension</title>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="E. Messeri" initials="E." surname="Messeri">
              <organization/>
            </author>
            <author fullname="R. Stradling" initials="R." surname="Stradling">
              <organization/>
            </author>
            <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" target="https://ieeexplore.ieee.org/document/8423794">
          <front>
            <title>IEEE Standard for Local and metropolitan area networks - Secure Device Identity</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2018" month="August"/>
          </front>
          <seriesInfo name="IEEE" value="802.1AR-2018"/>
          <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>
      </references>
    </references>
    <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 E.3 above
 newWithOld   present                  see Appendix E.3 above
 newWithNew   present                  see Appendix E.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>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>
      <sourcecode type="asn.1"><![CDATA[
PKIXCMP-2021
    { iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7) id-mod(0)
    id-mod-cmp2021-02(100) }
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
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]
;

-- 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
}

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),
    -- not valid integrity, 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 }

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]
--
-- 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-f">
      <name>History of Changes</name>
      <t>Note: This appendix will be deleted in the final version of the document.</t>
      <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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
W5rs/gjl94BiEA1YsN2Sd+f87j6+u4bKFBfO7nC1WDTEmvY9iR3DX5mud3fx
l6hbhcT+cZ+JK7dO8eZyyASzpekUKz3+uO9p65T+yhAH/GLERPPuHN59JO/K
nIvsuzxluj2N5gv3W6idiABzS1TjTyG+ZKMevlYBl7vTd1ZPdk/Ltv3QLCbf
AIj/63JcvP3mfxwfXRQnz4/fXJy8OPGaKnSjtv7YkohNr9qSzImzJZoSD7w6
OmtnYF1WRaXtPXrUL0YHvtfTb16fSq3G3BTactoBSbKSr5FyAQu/YwaB4Diw
2YDMM61vAVsXQ0LRId56rVNlOBErW5IvABKOq7yYiEeOOAKnf4iNMk4Dv3bV
gvKbMMsNDZF1+w5a96qIv/khpgKSNmvIgVsuy/E7GkHz4SqdZ1ZZ7HobSWfU
hfAvnUw4jeLtrNr9wQt+CsUHz9RLBig68ryEF5ftEGE1qYACrEl9y8rT2x9e
FIT66ZXpyW++7oiiR4v3d134W0/m2yx85NSNNHVWVQA7Hxff0WF6/vLvcowO
9sCj//Kec/T3I6/fZz01NhgnJ2YzmpsEeSed9vb6Ouq7ZlVcN0stJQg4jPil
pnfQ9RSHhmtLo25LEGoJxu1rT97vqkyDGJgmb4WcmUxuftnC/WQC/Sb1lZSq
ZfX/37sxxX5Y+/GwyNp7DRFa/lZCl6MN1aqmbUVFi7oVjYsPZY2hzekaHvQH
dk8kqhEvkDlcO1BWBbTCu2rJxY8oyb2aPGOkD+PHuQFwYxwYIX30iHvM0aJN
SdBoHVdWzMHvvIacVQC8ZcXRifNw43618LdsFGcqfkrDJ2xFlv39Z/4wRW5I
aY5XaAX2kOmd1UnVbjgt76Darx8LRtZi6O1qybWoZpIqDHWG+7yJIvv9UC5m
uta9B/3EEBEHf4IF5QO/gJbI0iLv1ro69S1EqjNPDE+8aYyi13vYt/dl+KHb
MGwrQscuePneCehKNPqi96gvLTLivcQbY3E7xRxW9GvrPFaXZ0hzZZNBWU9X
C8J3iaUef+TBT1RjXmeF4ZiQuwArjnTlZ0JQtx/Ku/8Gj75u0Mk2qdQEQg5G
QY0m91h99RWajSXrhUTzy3KSpJ/GXGU1A4yL6xlWYvYzXc0CmHWAHDbRJNyo
CNo31fhdh8EENNkx/n5FiNoMqBSyvCY1mWMowLovbbNOlecSxv5JphwAiVgu
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
2YaISqMqyuzwSHUL7aqd/Qmt3uD8nmwDAA==

-->

</rfc>
