<?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.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-liao-ace-est-c509-04" category="std" consensus="true" submissionType="IETF" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="EST-C509">EST for C509 Certificates</title>
    <seriesInfo name="Internet-Draft" value="draft-liao-ace-est-c509-04"/>
    <author initials="L." surname="Liao" fullname="Lijun Liao">
      <organization>NIO Inc.</organization>
      <address>
        <email>lijun.liao@nio.io</email>
      </address>
    </author>
    <date year="2026" month="November" day="01"/>
    <abstract>
      <?line 73?>

<t>This document defines Enrollment over Secure Transport (EST) protocol operations over HTTPS and secure CoAP for use with C509 certificates. The operations specified in this document support CA certificate distribution, C509 certificate enrollment, C509 certificate re-enrollment, and server-side key generation using C509 certificates. This document also defines operations for server capability discovery, Certificate Revocation List (CRL) distribution, and a challenge-response proof of possession for KEM-only keys.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-liao-ace-est-c509/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Authentication and Authorization for Constrained Environments Working Group mailing list (<eref target="mailto:ace@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ace/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ace/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ace-wg/xxx"/>.</t>
    </note>
  </front>
  <middle>
    <?line 77?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Enrollment over Secure Transport (EST) <xref target="RFC7030"/> defines HTTPS-based operations for X.509 <xref target="RFC5280"/> certificate enrollment and CA certificate distribution.  Payloads are DER-encoded and wrapped in CMS (Cryptographic Message Syntax, <xref target="RFC5652"/>) structures.  C509 <xref target="I-D.ietf-cose-cbor-encoded-cert"/> defines a compact, CBOR-encoded alternative to DER X.509 certificates.  C509 certificates are substantially smaller.</t>
      <t>Although C509 was developed with constrained devices in mind, its benefits extend to unconstrained devices operating over low-bandwidth links and to large-scale deployments.  Smaller, CBOR-encoded certificates reduce bandwidth and storage requirements, accelerate TLS handshakes, and lower parsing and serialization overhead even on powerful endpoints; because C509 does not use ASN.1/DER, implementations can avoid complex ASN.1 parsing code, which reduces code size and complexity and lowers the attack surface for certificate parsing libraries.  In complex systems (for example, connected cars) that contain diverse device classes—microcontrollers, sensor chips, and SoCs—using a common certificate format wherever practical simplifies integration and provisioning.  Using C509 consistently across device classes simplifies provisioning, interoperability, and over-the-air updates, and can reduce overall operational costs and latency.</t>
      <t>This document defines EST operations that carry C509 objects in place of DER X.509 objects, following the same secure transport and URI path structure as <xref target="RFC7030"/> and <xref target="RFC9148"/>.</t>
      <t>A key property of this design is that EST clients need only minimal CBOR processing:</t>
      <ul spacing="normal">
        <li>
          <t>For non-KEM-only key types, the C509 CSR is typically pre-provisioned as an opaque binary blob by the device manufacturer or a provisioning tool; the EST client sends it verbatim as the POST body of <tt>simpleenroll</tt> / <tt>sen</tt> or <tt>simplereenroll</tt> / <tt>sren</tt> without interpreting its contents.</t>
        </li>
        <li>
          <t>For KEM-only key types, the EST client needs to communicate with the component that holds the private key (for example, a secure element or a hardware security module) to get the public key (<tt>C509SubjectPublicKeyInfo</tt>) and, after receiving the KEM challenge object (<tt>C509KemChall</tt>) from the EST server, the certification request (<tt>C509CertificationRequest</tt>); in this case, the EST client treats the <tt>C509SubjectPublicKeyInfo</tt>, <tt>C509KemChall</tt>, and <tt>C509CertificationRequest</tt> as opaque binary blobs.</t>
        </li>
        <li>
          <t>For all key types, the C509 certificate (and private key in the operation <tt>serverkeygen</tt> / <tt>skc</tt>) returned in the response is stored directly in persistent memory without modification.  The EST client <bcp14>MUST</bcp14> validate received C509 certificates against a trust anchor (see <xref target="cert-validation"/>); apart from this validation, no parsing of the response is required.  This property makes the EST client implementation lightweight.</t>
        </li>
      </ul>
      <t>This document uses <tt>C509CertificationRequest</tt> as defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/> as the C509 Certificate Signing Request (C509 CSR) format.  An EST client uses a C509 CSR to request issuance of a C509 certificate from an EST server.</t>
      <t>The operations for EST over HTTPS used in this document (those marked <tt>new</tt> are new operations defined in this document) are listed in <xref target="tab-ops-https-overview"/>, and those for EST over CoAP in <xref target="tab-ops-coaps-overview"/>.</t>
      <figure anchor="tab-ops-https-overview">
        <name>Operations for EST over HTTPS Used in This Document (M/O: MANDATORY / OPTIONAL)</name>
        <artwork><![CDATA[
+==========+===+=============+==============+===================+
| Opera-   | M | Description |  Request     | Response          |
| tion     | / |             |  Media Type  | Media Type        |
|          | O |             |              |                   |
+==========+===+=============+==============+===================+
| caps     | M | Capability  | (none)       | text/plain;       |
| (new)    |   | discovery   |              | charset=utf-8     |
+----------+---+-------------+--------------+-------------------+
| cacerts  | M | CA          | (none)       | - application/    |
|          |   | certificate |              |   cose-c509+cbor  |
|          |   | retrieval   |              | - application/    |
|          |   |             |              |   cose-c509+cbor, |
|          |   |             |              |   usage=chain     |
|          |   |             |              | - application/    |
|          |   |             |              |   cose-c509-cert  |
|          |   |             |              |   +cbor           |
+----------+---+-------------+--------------+-------------------+
| crli     | O | CRL         | (none)       | application/      |
| (new)    |   | metadata    |              | c509-crlinfo+cbor |
|          |   | retrieval   |              |                   |
+----------+---+-------------+--------------+-------------------+
| crl      | O | CRL         | (none)       | application/      |
| (new)    |   | retrieval   |              | c509-crl+cbor     |
+----------+---+-------------+--------------+-------------------+
| csr      | O | CSR         | (none)       | application/      |
| attrs    |   | attributes  |              | cose-c509-        |
|          |   | retrieval   |              | crtemplate+cbor   |
+----------+---+-------------+--------------+-------------------+
| kemc     | O | KEM         | application/ | application/      |
| (new)    |   | challenge   | cose-c509-   | c509-kemchall     |
|          |   | issuance    | pubkey+cbor  | +cbor             |
+----------+---+-------------+--------------+-------------------+
| simple   | M | Certificate | application/ | application/      |
| enroll   |   | enrollment  | cose-c509-   | cose-c509-        |
|          |   |             | pkcs10+cbor  | cert+cbor         |
+----------+---+-------------+--------------+-------------------+
| simple   | M | Certificate | application/ | application/      |
| reenroll |   | reenroll-   | cose-c509-   | cose-c509-        |
|          |   | ment        | pkcs10+cbor  | cert+cbor         |
+----------+---+-------------+--------------+-------------------+
| server   | O | Server-side | application/ | application/      |
| keygen   |   | key         | cose-c509-   | cose-c509-        |
|          |   | generation  | pkcs10+cbor  | pem+cbor          |
+----------+---+-------------+--------------+-------------------+
]]></artwork>
      </figure>
      <figure anchor="tab-ops-coaps-overview">
        <name>Operations for EST over CoAP/DTLS Used in This Document (M/O: MANDATORY / OPTIONAL)</name>
        <artwork><![CDATA[
+===============+================+=====+==========+==========+
| EST over      | Corresponding  | M/O | Request  | Response |
| CoAP/DTLS     | EST over HTTPS |     | Content- | Content- |
| Operation     | Operation      |     | Format   | Format   |
+===============+================+=====+==========+==========+
| (Not Related) | caps           | N/A | N/A      | N/A      |
+---------------+----------------+-----+----------+----------+
| crts          | cacerts        | M   | (none)   | - TBD    |
|               |                |     |          | - TBD    |
|               |                |     |          | - TBD    |
+---------------+----------------+-----+----------+----------+
| crli (new)    | crli           | O   | (none)   | TBD      |
+---------------+----------------+-----+----------+----------+
| crl (new)     | crl            | O   | (none)   | TBD      |
+---------------+----------------+-----+----------+----------+
| attr          | csrattrs       | O   | (none)   | TBD      |
+---------------+----------------+-----+----------+----------+
| kemc (new)    | kemc           | O   | TBD      | TBD      |
+---------------+----------------+-----+----------+----------+
| sen           | simpleenroll   | M   | TBD      | TBD      |
+---------------+----------------+-----+----------+----------+
| sren          | simplereenroll | M   | TBD      | TBD      |
+---------------+----------------+-----+----------+----------+
| skc           | serverkeygen   | O   | TBD      | TBD      |
+---------------+----------------+-----+----------+----------+
]]></artwork>
      </figure>
    </section>
    <section anchor="conventions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The following terms are used in this document:</t>
      <dl>
        <dt>EST client:</dt>
        <dd>
          <t>The entity that contacts the EST server to obtain certificates or CA information, as defined in <xref section="1" sectionFormat="comma" target="RFC7030"/>.</t>
        </dd>
        <dt>EST server:</dt>
        <dd>
          <t>The entity that processes EST requests, typically acting as an RA between the EST client and the CA, as defined in <xref section="1" sectionFormat="comma" target="RFC7030"/>.</t>
        </dd>
        <dt>CA:</dt>
        <dd>
          <t>Certification Authority.  The entity that issues C509 certificates.</t>
        </dd>
        <dt>C509 CSR:</dt>
        <dd>
          <t>C509 Certification Request.  A CBOR-encoded certification request used by an EST client to request issuance of a C509 certificate.</t>
        </dd>
        <dt>PoP:</dt>
        <dd>
          <t>Proof of Possession.  Verification that the requester holds the private key corresponding to the public key in the C509 CSR.</t>
        </dd>
      </dl>
    </section>
    <section anchor="protocol-design">
      <name>Protocol Design</name>
      <section anchor="client-auth">
        <name>Client Authentication</name>
        <t>While <xref target="RFC7030"/> permits a number of the EST functions to be used without authentication, this document requires that the client <bcp14>MUST</bcp14> be authenticated for all functions, as in <xref target="RFC9148"/>. This document requires EST to support certificate-based client authentication only; neither HTTP Basic nor Digest authentication (as described in <xref section="3.2.3" sectionFormat="of" target="RFC7030"/>) is supported, as in <xref target="RFC9148"/>.</t>
      </section>
      <section anchor="tls-cert-type">
        <name>TLS Certificate Type Negotiation</name>
        <t>When C509 certificates are used for TLS or DTLS authentication, the client and server negotiate the certificate type using the <tt>server_certificate_type</tt> and <tt>client_certificate_type</tt> TLS extensions as defined in <xref target="RFC7250"/>.</t>
      </section>
      <section anchor="discovery-uris">
        <name>Discovery and URIs</name>
        <t>In EST over HTTPS, the capabilities of the EST server are retrieved by using the operation <tt>caps</tt>.</t>
        <t>In EST over CoAP/DTLS, the capabilities are retrieved by sending a GET method to the EST server (as in <xref section="4.1" sectionFormat="of" target="RFC9148"/>). As in <xref target="RFC9148"/>, the <tt>ct</tt> attribute lists the Content-Formats of both the request and the response. Linefeeds are included only for readability.</t>
        <artwork><![CDATA[
REQ: GET /.well-known/core?rt=ace.est*

RES: 2.05 Content
</.well-known/est/crts>;rt="ace.est.crts";ct="TBD TBD TBD",
</.well-known/est/sen>;rt="ace.est.sen";ct="TBD TBD",
</.well-known/est/sren>;rt="ace.est.sren";ct="TBD TBD",
</.well-known/est/att>;rt="ace.est.att";ct=TBD,
</.well-known/est/skc>;rt="ace.est.skc";ct="TBD TBD",
</.well-known/est/crli>;rt="ace.est.crli";ct=TBD,
</.well-known/est/crl>;rt="ace.est.crl";ct=TBD,
</.well-known/est/kemc>;rt="ace.est.kemc";ct="TBD3 TBD7"
]]></artwork>
        <t>(TODO: the TBD values will be replaced with the real values once the Content-Formats are assigned in <xref target="I-D.ietf-cose-cbor-encoded-cert"/> and <xref target="I-D.liao-cose-c509-revocation"/>.)</t>
      </section>
      <section anchor="est-url-structure">
        <name>EST URL Structure and Path Components</name>
        <t>The operations in this document follow the same URI path structure defined in <xref section="3.2.2" sectionFormat="comma" target="RFC7030"/> for HTTPS and the corresponding secure CoAP mapping defined in <xref target="RFC9148"/>.  Retrieval operations <tt>caps</tt>, <tt>cacerts</tt> / <tt>crts</tt>, <tt>csrattrs</tt> / <tt>att</tt>, <tt>crli</tt>, and <tt>crl</tt> use the GET method.</t>
        <artwork><![CDATA[
Method: GET
Request target: /.well-known/est/<operation>
Request target: /.well-known/est/<label>/<operation>
]]></artwork>
        <t>Enrollment operations <tt>kemc</tt>, <tt>simpleenroll</tt> / <tt>sen</tt>, <tt>simplereenroll</tt> / <tt>sren</tt>, and <tt>serverkeygen</tt> / <tt>skc</tt> use HTTP POST or CoAP POST:</t>
        <artwork><![CDATA[
Method: POST
Request target: /.well-known/est/<operation>
Request target: /.well-known/est/<label>/<operation>
]]></artwork>
        <t>An EST server <bcp14>MUST</bcp14> return HTTP 405 / CoAP 4.05 (Method Not Allowed) if a client uses POST for a retrieval operation or GET for an enrollment operation.</t>
        <t>The optional <tt>&lt;label&gt;</tt> path segment follows <xref section="3.2.2" sectionFormat="comma" target="RFC7030"/> for HTTPS and the equivalent path structure in <xref target="RFC9148"/> for CoAP: an EST server <bcp14>MAY</bcp14> use an additional path segment before the operation name to distinguish services for multiple CAs and / or certificate profiles.</t>
      </section>
      <section anchor="channel-binding">
        <name>Channel Binding</name>
        <t>Channel binding is <bcp14>OPTIONAL</bcp14>. The channel binding mechanisms specified in <xref target="RFC7030"/> and <xref target="RFC9148"/> apply.</t>
      </section>
      <section anchor="message-binding">
        <name>Message Binding</name>
        <t>The message binding mechanism specified in <xref section="4.4" sectionFormat="comma" target="RFC9148"/> applies for CoAP in this document.</t>
      </section>
      <section anchor="message-fragmentation">
        <name>Message Fragmentation</name>
        <t>The message fragmentation mechanism specified in <xref section="4.6" sectionFormat="comma" target="RFC9148"/> applies for CoAP in this document.</t>
      </section>
      <section anchor="delayed-responses">
        <name>Delayed Responses</name>
        <t>The mechanism for delayed responses specified in <xref section="4.7" sectionFormat="comma" target="RFC9148"/> applies for CoAP in this document. The retry-later mechanism for the operations <tt>simpleenroll</tt> and <tt>simplereenroll</tt> specified in <xref section="4.2.3" sectionFormat="comma" target="RFC7030"/> applies for HTTPS in this document.</t>
      </section>
      <section anchor="response-cache">
        <name>Response Cache</name>
        <t>Successful responses whose content is not expected to change in the near future may include caching metadata:</t>
        <ul spacing="normal">
          <li>
            <t>For EST over HTTPS, EST servers <bcp14>SHOULD</bcp14> include <tt>ETag</tt>, <tt>Last-Modified</tt>, <tt>Cache-Control</tt>, and <tt>Expires</tt> headers.</t>
          </li>
          <li>
            <t>For EST over secure CoAP, EST servers <bcp14>SHOULD</bcp14> include the options <tt>ETag</tt> and <tt>Max-Age</tt>.</t>
          </li>
        </ul>
      </section>
      <section anchor="cbor-transfer">
        <name>CBOR Transfer</name>
        <t>All POST request bodies and all response bodies in this document, except the <tt>caps</tt> response, are CBOR-encoded.  The CBOR encoding <bcp14>MUST</bcp14> be deterministic as specified in Sections <xref target="RFC8949" section="4.2.1" sectionFormat="bare"/> and <xref target="RFC8949" section="4.2.2" sectionFormat="bare"/> of <xref target="RFC8949"/>.</t>
        <t>For HTTPS, following <xref target="RFC8951"/>, the POST request bodies and the CBOR-based response bodies are base64-encoded as specified in <xref section="4" sectionFormat="of" target="RFC4648"/>; the CBOR encoding is the input to the base64 encoding routine.  This format is used regardless of any <tt>Content-Transfer-Encoding</tt> header, and any value in such a header <bcp14>MUST</bcp14> be ignored.  As specified in <xref section="3.1" sectionFormat="comma" target="RFC8951"/>, white space including CR, LF, spaces (ASCII 32), and tabs (ASCII 9) <bcp14>SHOULD</bcp14> be tolerated by receivers; senders are not required to insert any kind of white space.</t>
        <t>For CoAP, CBOR payloads are carried directly in binary form, without base64 encoding, in the message body using the relevant CoAP Content-Format.</t>
        <t>An EST server that serves both X.509 and C509 certificates under the same path distinguishes the requests by the media type (HTTP <tt>Content-Type</tt>) or Content-Format (CoAP) of the request.  If the media type or Content-Format of a POST request is not supported, the EST server <bcp14>MUST</bcp14> return HTTP 415 / CoAP 4.15 (Unsupported Media Type / Unsupported Content-Format).</t>
        <t>The media types used in this document are:</t>
        <table anchor="tab-media-types">
          <name>Media Types Used in This Document</name>
          <thead>
            <tr>
              <th align="left">Media Type</th>
              <th align="left">CoAP Content Format</th>
              <th align="left">Structure</th>
              <th align="left">Defined in</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/cose-c509-cert+cbor</td>
              <td align="left">TBD</td>
              <td align="left">C509Certificate</td>
              <td align="left">
                <xref target="I-D.ietf-cose-cbor-encoded-cert"/></td>
            </tr>
            <tr>
              <td align="left">application/cose-c509+cbor</td>
              <td align="left">TBD</td>
              <td align="left">COSE_C509</td>
              <td align="left">
                <xref target="I-D.ietf-cose-cbor-encoded-cert"/></td>
            </tr>
            <tr>
              <td align="left">application/cose-c509+cbor;usage=chain</td>
              <td align="left">TBD</td>
              <td align="left">COSE_C509</td>
              <td align="left">
                <xref target="I-D.ietf-cose-cbor-encoded-cert"/></td>
            </tr>
            <tr>
              <td align="left">application/cose-c509-pkcs10+cbor</td>
              <td align="left">TBD</td>
              <td align="left">C509CertificationRequest</td>
              <td align="left">
                <xref target="I-D.ietf-cose-cbor-encoded-cert"/></td>
            </tr>
            <tr>
              <td align="left">application/cose-c509-pubkey+cbor</td>
              <td align="left">TBD3</td>
              <td align="left">C509SubjectPublicKeyInfo</td>
              <td align="left">
                <xref target="I-D.liao-cose-c509-additions"/></td>
            </tr>
            <tr>
              <td align="left">application/c509-kemchall+cbor</td>
              <td align="left">TBD7</td>
              <td align="left">C509KemChall</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">application/cose-c509-crtemplate+cbor</td>
              <td align="left">TBD</td>
              <td align="left">C509CertificationRequestTemplate</td>
              <td align="left">
                <xref target="I-D.ietf-cose-cbor-encoded-cert"/></td>
            </tr>
            <tr>
              <td align="left">application/cose-c509-pem+cbor</td>
              <td align="left">TBD</td>
              <td align="left">C509PEM (key + certificate)</td>
              <td align="left">
                <xref target="I-D.ietf-cose-cbor-encoded-cert"/></td>
            </tr>
            <tr>
              <td align="left">application/c509-crl+cbor</td>
              <td align="left">TBD</td>
              <td align="left">C509CRL</td>
              <td align="left">
                <xref target="I-D.liao-cose-c509-revocation"/></td>
            </tr>
            <tr>
              <td align="left">application/c509-crlinfo+cbor</td>
              <td align="left">TBD</td>
              <td align="left">C509CRLInfo</td>
              <td align="left">
                <xref target="I-D.liao-cose-c509-revocation"/></td>
            </tr>
          </tbody>
        </table>
        <t>The <tt>caps</tt> operation returns <tt>text/plain; charset=utf-8</tt> with a list of capability keywords.</t>
      </section>
    </section>
    <section anchor="c509-csr">
      <name>C509 Certification Request (C509 CSR)</name>
      <t>A C509 CSR is a CBOR-encoded certification request used to request issuance of a C509 certificate.  It is the C509 analogue of the PKCS#10 CSR <xref target="RFC2986"/> used in standard EST operations.</t>
      <t>This document uses <tt>C509CertificationRequest</tt> as defined in <xref section="4" sectionFormat="comma" target="I-D.ietf-cose-cbor-encoded-cert"/>.  An EST client sends a C509 CSR to request certificate issuance or re-enrollment. The media type is <tt>application/cose-c509-pkcs10+cbor</tt>.</t>
      <t>For server-side key generation requests (<xref target="skc"/>), the EST client does not possess the private key and does not know the public key that the EST server will generate.  In this case, the <tt>subjectPublicKeyAlgorithm</tt> in <tt>TBSCertificationRequest</tt> <bcp14>MUST</bcp14> be set to the integer code for <tt>empty-publickey</tt> (see <xref target="empty-publickey"/>) and <tt>subjectPublicKey</tt> <bcp14>MUST</bcp14> be a zero-length byte string (<tt>h''</tt>).  Because no private/public key is available, no PoP signature can be computed/verified: the <tt>signatureAlgorithm</tt> <bcp14>MUST</bcp14> be set to the <tt>id-alg-unsigned</tt> integer code (see <xref target="I-D.ietf-cose-cbor-encoded-cert"/>) and <tt>signatureValue</tt> <bcp14>MUST</bcp14> be a zero-length byte string.  EST servers <bcp14>MUST</bcp14> accept C509 CSRs using <tt>empty-publickey</tt> and <tt>id-alg-unsigned</tt> for <tt>serverkeygen</tt> / <tt>skc</tt> requests and <bcp14>MUST NOT</bcp14> verify a PoP signature in this case.</t>
      <section anchor="empty-publickey">
        <name>empty-publickey Algorithm</name>
        <t>This document defines a new C509 public key algorithm, <tt>empty-publickey</tt>, to be used exclusively in C509 CSRs for <tt>serverkeygen</tt> / <tt>skc</tt> (server key generation) requests to indicate that no public key is available in the CSR.</t>
        <t>The <tt>empty-publickey</tt> algorithm code (TBD1) <bcp14>MUST NOT</bcp14> appear in C509 certificates.  It is only valid in the <tt>subjectPublicKeyAlgorithm</tt> field of <tt>TBSCertificationRequest</tt> when the corresponding <tt>subjectPublicKey</tt> is a zero-length byte string (<tt>h''</tt>).  EST servers <bcp14>MUST</bcp14> reject any C509 CSR using <tt>empty-publickey</tt> in a <tt>simpleenroll</tt> / <tt>sen</tt> or <tt>simplereenroll</tt> / <tt>sren</tt> request.</t>
      </section>
      <section anchor="change-subject-name">
        <name>CRAttribute C509ChangeSubjectName</name>
        <t>The ChangeSubjectName attribute for X.509 PKI is defined in <xref target="RFC6402"/>. The corresponding definition for C509 certification requests is a CBOR array consisting of a <tt>subject</tt> and a <tt>subjectAlt</tt>. At least one of <tt>subject</tt> and <tt>subjectAlt</tt> <bcp14>MUST NOT</bcp14> be <tt>null</tt>.</t>
        <sourcecode type="cddl" name="c509est.cddl"><![CDATA[
C509ChangeSubjectName = [
  subject     C509Name / null,
  subjectAlt  SubjectAltName / null
]
]]></sourcecode>
        <t>This CRAttribute <bcp14>MAY</bcp14> be included in a <tt>simplereenroll</tt> / <tt>sren</tt> request to change the <tt>Subject</tt> field and/or the <tt>SubjectAltName</tt> extension in the newly generated certificate.</t>
      </section>
      <section anchor="pop">
        <name>Proof of Possession</name>
        <t><tt>simpleenroll</tt> / <tt>sen</tt> and <tt>simplereenroll</tt> / <tt>sren</tt> <bcp14>MUST</bcp14> verify the PoP signature in the C509 CSR before issuing a certificate.  As an exception, if the <tt>subjectPublicKeyAlgorithm</tt> in the C509 CSR is a KEM algorithm, the EST server <bcp14>MUST</bcp14> instead verify the PoP MAC as specified in <xref target="pop-kem"/>.  The <tt>serverkeygen</tt> / <tt>skc</tt> operation does not require PoP verification because the EST server generates the key pair itself.</t>
        <section anchor="pop-kem">
          <name>Proof of Possession for KEM Private Keys</name>
          <t>Some public-key algorithms are KEM-only (key-encapsulation mechanisms) and do not provide a signature operation suitable for the traditional PoP signature carried in a <tt>C509CertificationRequest</tt>.  For CSRs whose <tt>subjectPublicKeyAlgorithm</tt> is a KEM algorithm, an EST server <bcp14>MUST</bcp14> obtain explicit proof that the requester holds the corresponding KEM private key.</t>
          <t>This document specifies an interactive KEM challenge-response PoP mechanism based on the unilateral key confirmation specified in Section 4.4 of <xref target="NIST.SP.800-227"/>, in which the EST client (the decapsulator) is the key-confirmation provider and the EST server (the encapsulator) is the key-confirmation recipient.  Together with the client authentication required by this document (<xref target="client-auth"/>), this provides PoP as described in Section 4.5 of <xref target="NIST.SP.800-227"/>.</t>
          <section anchor="pop-kem-chall">
            <name>Challenge Issuance</name>
            <t>Upon receipt of a KEM public key (<tt>C509SubjectPublicKeyInfo</tt>) in the <tt>kemc</tt> operation (<xref target="kemc"/>), the EST server runs the encapsulation algorithm of the KEM with this public key, which produces a shared secret key <tt>K</tt> and a ciphertext <tt>c</tt>, and returns a CBOR-encoded KEM challenge object (<tt>C509KemChall</tt>) with media type <tt>application/c509-kemchall+cbor</tt>.</t>
            <sourcecode type="cddl" name="c509est.cddl"><![CDATA[
C509KemChall = [
  keyId         : bstr .size 32,
  serverId      : bstr .size 32,
  encapsulation : bstr,
  ? lifetime    : uint
]
]]></sourcecode>
            <t>The media type of <tt>C509KemChall</tt> is <tt>application/c509-kemchall+cbor</tt> (see <xref target="iana-c509-kemchall"/>); the corresponding CoAP Content-Format is defined in <xref target="content-format"/>.  The "magic number" is TBD6, using the reserved CBOR tag 55799 and Content-Format TBD7, as described in <xref section="2.2" sectionFormat="comma" target="RFC9277"/>.</t>
            <t>The fields are:</t>
            <ul spacing="normal">
              <li>
                <t><tt>keyId</tt> is the SHA-256 hash of the deterministically encoded (see <xref target="cbor-transfer"/>) <tt>C509SubjectPublicKeyInfo</tt> received in the <tt>kemc</tt> request.</t>
              </li>
              <li>
                <t><tt>serverId</tt> is a 32-byte identifier of the EST server, chosen by the EST server.  It is <bcp14>RECOMMENDED</bcp14> to use the SHA-256 hash of the certificate that the EST server uses for TLS or DTLS server authentication.</t>
              </li>
              <li>
                <t><tt>encapsulation</tt> is the ciphertext <tt>c</tt>.</t>
              </li>
              <li>
                <t><tt>lifetime</tt>, if present, is the number of seconds, counted from the sending of the response, after which the EST server considers the challenge expired.  A relative value is used so that the EST client does not need a synchronized clock.  If <tt>lifetime</tt> is absent, the lifetime is determined by the EST server policy and is not communicated to the EST client.  An EST client <bcp14>SHOULD</bcp14> submit the enrollment request before the lifetime has elapsed; if the challenge has expired, the EST client needs to request a new challenge.</t>
              </li>
            </ul>
            <t>The KEM algorithm is the one identified by the <tt>subjectPublicKeyAlgorithm</tt> of the <tt>C509SubjectPublicKeyInfo</tt> received in the <tt>kemc</tt> request.</t>
            <t>The EST server <bcp14>MUST</bcp14> retain the challenge state, consisting of at least <tt>keyId</tt>, <tt>serverId</tt>, <tt>c</tt>, <tt>K</tt>, the identity of the authenticated EST client, and the expiry time of the challenge, until the challenge is used or has expired.  A new challenge replaces any outstanding challenge for the same <tt>keyId</tt> and EST client.</t>
          </section>
          <section anchor="pop-kem-nonce">
            <name>PoP Nonce</name>
            <t>Because the KEM key pair to be certified is a static key pair, the key-confirmation provider (the EST client) contributes a nonce as its ephemeral data, as required by Section 4.4.1 of <xref target="NIST.SP.800-227"/>.  The nonce is carried in the C509 CSR in the CR attribute <tt>C509KemPopNonce</tt>:</t>
            <sourcecode type="cddl" name="c509est.cddl"><![CDATA[
C509KemPopNonce = bstr .size 32
]]></sourcecode>
            <t>The EST client <bcp14>MUST</bcp14> generate a fresh random nonce for each C509 CSR.  The 256-bit length satisfies the requirement of Appendix C.2 of <xref target="NIST.SP.800-227"/> for all security strengths up to 256 bits.  The <tt>C509KemPopNonce</tt> attribute <bcp14>MUST</bcp14> be present in a C509 CSR whose <tt>subjectPublicKeyAlgorithm</tt> is a KEM algorithm, and <bcp14>MUST NOT</bcp14> be present otherwise.</t>
          </section>
          <section anchor="pop-kem-mac">
            <name>MAC Computation by the EST Client</name>
            <t>The EST client decapsulates <tt>encapsulation</tt> with its KEM private key to obtain the shared secret key <tt>K</tt>.  The key-confirmation key <tt>KC_Key</tt> is <tt>K</tt> in its entirety (Section 4.4.2 of <xref target="NIST.SP.800-227"/>); no data key is derived.</t>
            <t>The EST client constructs the <tt>TBSCertificationRequest</tt>, which includes the <tt>C509KemPopNonce</tt> attribute, and then constructs <tt>MAC_Data</tt> as specified in Section 4.4.1 of <xref target="NIST.SP.800-227"/>:</t>
            <artwork><![CDATA[
MAC_Data = KC_Step_Label || ID_P || ID_R || Eph_P || Eph_R
           || Extra_P || Extra_R
]]></artwork>
            <t>where:</t>
            <ul spacing="normal">
              <li>
                <t><tt>KC_Step_Label</tt> is the 6-byte ASCII string "KC_1_D", indicating that the decapsulator provides the first key-confirmation message;</t>
              </li>
              <li>
                <t><tt>ID_P</tt> is <tt>keyId</tt> (32 bytes), identifying the KEM key pair of the EST client;</t>
              </li>
              <li>
                <t><tt>ID_R</tt> is <tt>serverId</tt> (32 bytes) from the <tt>C509KemChall</tt>;</t>
              </li>
              <li>
                <t><tt>Eph_P</tt> is the value of the <tt>C509KemPopNonce</tt> attribute (32 bytes);</t>
              </li>
              <li>
                <t><tt>Eph_R</tt> is the ciphertext <tt>encapsulation</tt>, whose length is fixed by the KEM algorithm;</t>
              </li>
              <li>
                <t><tt>Extra_P</tt> is the CBOR-encoded <tt>TBSCertificationRequest</tt>; and</t>
              </li>
              <li>
                <t><tt>Extra_R</tt> is empty.</t>
              </li>
            </ul>
            <t>All fields except <tt>Extra_P</tt> have a fixed length, so <tt>MAC_Data</tt> can be parsed unambiguously.</t>
            <t>The EST client computes the MAC tag over <tt>MAC_Data</tt> with <tt>KC_Key</tt> and places it in the <tt>C509CertificationRequest</tt>: the <tt>signatureAlgorithm</tt> <bcp14>MUST</bcp14> be set to the integer code of the MAC algorithm (e.g., TBD4 for HMAC-SHA256, see <xref target="iana-sigalg"/>) and the <tt>signatureValue</tt> <bcp14>MUST</bcp14> contain the MAC tag.  The EST client then destroys <tt>K</tt> and submits a <tt>simpleenroll</tt> / <tt>sen</tt> or <tt>simplereenroll</tt> / <tt>sren</tt> request as usual.</t>
          </section>
          <section anchor="pop-kem-verify">
            <name>Verification by the EST Server</name>
            <t>The EST server:</t>
            <ol spacing="normal" type="1"><li>
                <t>constructs a <tt>C509SubjectPublicKeyInfo</tt> from the <tt>subjectPublicKeyAlgorithm</tt> and <tt>subjectPublicKey</tt> fields of the <tt>TBSCertificationRequest</tt>, encodes it deterministically, and computes <tt>keyId</tt> from this encoding as described in <xref target="pop-kem-chall"/>;</t>
              </li>
              <li>
                <t>retrieves the challenge state for this <tt>keyId</tt> and verifies that the challenge has not expired and that the request is sent by the same authenticated EST client to which the challenge was issued;</t>
              </li>
              <li>
                <t>verifies that the <tt>C509KemPopNonce</tt> attribute is present and is 32 bytes long;</t>
              </li>
              <li>
                <t>constructs <tt>MAC_Data</tt> as specified in <xref target="pop-kem-mac"/>, using <tt>serverId</tt> and <tt>c</tt> from the challenge state; and</t>
              </li>
              <li>
                <t>verifies the MAC tag in <tt>signatureValue</tt> over <tt>MAC_Data</tt>, using the MAC algorithm indicated by <tt>signatureAlgorithm</tt> and <tt>K</tt> from the challenge state.</t>
              </li>
            </ol>
            <t>Each challenge <bcp14>MUST</bcp14> be used at most once: the EST server <bcp14>MUST</bcp14> delete the challenge state, including <tt>K</tt>, after the first enrollment request that refers to it, whether or not the verification succeeds.  If any step fails, the EST server <bcp14>MUST</bcp14> reject the request.  Otherwise, the EST server proceeds with certificate issuance as for signature-based PoP.</t>
          </section>
          <section anchor="pop-kem-mac-alg">
            <name>MAC Algorithms</name>
            <t>The MAC algorithm <bcp14>MUST</bcp14> be one of the approved MAC algorithms for key confirmation listed in Appendix C.1 of <xref target="NIST.SP.800-227"/>, and the length of <tt>KC_Key</tt> <bcp14>MUST</bcp14> be permitted for that algorithm.  EST servers <bcp14>MUST</bcp14> support HMAC-SHA256 (with integer value TBD4).  EST clients <bcp14>SHOULD</bcp14> use HMAC-SHA256 and <bcp14>MAY</bcp14> use another approved MAC algorithm, for example if required by the security strength of the KEM.  If the EST server does not support the MAC algorithm indicated by <tt>signatureAlgorithm</tt>, it <bcp14>MUST</bcp14> reject the request with HTTP 400 / CoAP 4.00 (Bad Request).  EST servers <bcp14>MUST</bcp14> enforce challenge expiry and limit the number of outstanding challenges per EST client to mitigate denial-of-service risks.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="caps-section">
      <name>EST Operations for Server Capability Discovery</name>
      <section anchor="caps">
        <name>caps</name>
        <t>This operation applies only to EST over HTTPS, not to EST over CoAP/DTLS.</t>
        <t>The <tt>caps</tt> operation allows an EST client to discover which C509-specific operations the EST server supports before invoking them. EST clients and EST servers <bcp14>MUST</bcp14> support <tt>caps</tt>.</t>
        <section anchor="caps-request">
          <name>Request</name>
          <t>The EST client sends a GET request for the server's C509 capability list.  No request body is sent.</t>
          <artwork><![CDATA[
Method: GET
HTTP request target: /.well-known/est/<label>/caps
]]></artwork>
        </section>
        <section anchor="caps-response">
          <name>Response</name>
          <t>On success, the EST server returns an HTTP 200 response with:</t>
          <ul spacing="normal">
            <li>
              <t>Media type: <tt>text/plain; charset=utf-8</tt></t>
            </li>
            <li>
              <t>Body: A plain-text list of capability keywords, one keyword per line.  The EST server <bcp14>MUST</bcp14> terminate each line with <tt>&lt;CR&gt;&lt;LF&gt;</tt>.  The EST client <bcp14>MUST</bcp14> be able to parse lines terminated by <tt>&lt;CR&gt;&lt;LF&gt;</tt>, <tt>&lt;CR&gt;</tt>, or <tt>&lt;LF&gt;</tt>.  Keywords are unquoted and case-insensitive.</t>
            </li>
          </ul>
          <t>The following keywords are defined.  An EST server <bcp14>MUST</bcp14> include a keyword in the <tt>caps</tt> response if and only if it supports the corresponding operation.</t>
          <table anchor="tab-caps-keywords">
            <name>caps Keywords Defined in This Document</name>
            <thead>
              <tr>
                <th align="left">Keyword</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>cacerts</tt></td>
                <td align="left">EST server supports <tt>cacerts</tt> (<xref target="crts"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>crli</tt></td>
                <td align="left">EST server supports <tt>crli</tt> (<xref target="crli"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>crl</tt></td>
                <td align="left">EST server supports <tt>crl</tt> (<xref target="crl"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>csrattrs</tt></td>
                <td align="left">EST server supports <tt>csrattrs</tt> (<xref target="att"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>kemc</tt></td>
                <td align="left">EST server supports <tt>kemc</tt> (<xref target="kemc"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>simpleenroll</tt></td>
                <td align="left">EST server supports <tt>simpleenroll</tt> (<xref target="sen"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>simplereenroll</tt></td>
                <td align="left">EST server supports <tt>simplereenroll</tt> (<xref target="sren"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>serverkeygen</tt></td>
                <td align="left">EST server supports <tt>serverkeygen</tt> (<xref target="skc"/>)</td>
              </tr>
            </tbody>
          </table>
          <t>If an EST client receives an error response to a <tt>caps</tt> request, it cannot determine which <bcp14>OPTIONAL</bcp14> operations the EST server supports.  In this case, the EST client <bcp14>MAY</bcp14> still attempt the MANDATORY operations <tt>cacerts</tt>, <tt>simpleenroll</tt>, and <tt>simplereenroll</tt>, and <bcp14>SHOULD NOT</bcp14> attempt the <bcp14>OPTIONAL</bcp14> operations.  An EST client <bcp14>MUST</bcp14> be prepared to receive an error response for any operation.</t>
          <t>Successful <tt>caps</tt> responses <bcp14>MAY</bcp14> include caching metadata as specified in <xref target="response-cache"/>.</t>
          <t>Example response:</t>
          <artwork><![CDATA[
cacerts
crli
crl
csrattrs
kemc
simpleenroll
simplereenroll
serverkeygen
]]></artwork>
        </section>
      </section>
      <section anchor="att">
        <name>csrattrs / att</name>
        <t>The <tt>csrattrs</tt> / <tt>att</tt> operation returns a <tt>C509CertificationRequestTemplate</tt> that an EST client <bcp14>MAY</bcp14> use to construct a C509 CSR.</t>
        <section anchor="att-request">
          <name>Request</name>
          <t>The EST client sends a GET request for the CSR template.  No request body is sent.</t>
          <artwork><![CDATA[
Method: GET
HTTP Request target: /.well-known/est/<label>/csrattrs
CoAP Request target: /.well-known/est/<label>/att
]]></artwork>
        </section>
        <section anchor="att-response">
          <name>Response</name>
          <t>On success, the EST server returns an HTTP 200 / CoAP 2.05 response with:</t>
          <ul spacing="normal">
            <li>
              <t>Media type: <tt>application/cose-c509-crtemplate+cbor</tt> (HTTP) / Content-Format TBD (CoAP)</t>
            </li>
            <li>
              <t>Body: A <tt>C509CertificationRequestTemplate</tt> as defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
            </li>
          </ul>
          <t>A response code of HTTP 404 / CoAP 4.04 indicates that CSR attributes are not available.</t>
          <t>Successful <tt>csrattrs</tt> / <tt>att</tt> responses <bcp14>MAY</bcp14> include caching metadata as specified in <xref target="response-cache"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="ca-certificates">
      <name>EST Operations for Distribution of CA Certificates</name>
      <section anchor="crts">
        <name>cacerts / crts</name>
        <t>Depending on the <tt>Accept</tt> option, the <tt>cacerts</tt> / <tt>crts</tt> operation returns different forms of the CA certificates (TODO: the TBD will be replaced with the real value once the Content-Formats are assigned in <xref target="I-D.ietf-cose-cbor-encoded-cert"/> and <xref target="I-D.liao-cose-c509-revocation"/>):</t>
        <ul spacing="normal">
          <li>
            <t><tt>Accept: application/cose-c509-cert+cbor</tt> (HTTP) / <tt>Accept=TBD</tt> (CoAP): C509Certificate (the issuing CA certificate)</t>
          </li>
          <li>
            <t><tt>Accept: application/cose-c509+cbor; usage=chain</tt> (HTTP) / <tt>Accept=TBD</tt> (CoAP): COSE_C509 (certificate chain)</t>
          </li>
          <li>
            <t>No Accept or <tt>Accept: application/cose-c509+cbor</tt> (HTTP) / <tt>Accept=TBD</tt> (CoAP): COSE_C509 (certificate set)</t>
          </li>
        </ul>
        <section anchor="request">
          <name>Request</name>
          <t>The EST client sends a GET request for the CA certificate(s).  No request body is sent. The <tt>Accept</tt> option specifies the expected media type / Content-Format of the response. If an <tt>Accept</tt> option is not included in the request, the client is not expressing any preference and the server <bcp14>SHOULD</bcp14> return the CA certificate set with media type <tt>application/cose-c509+cbor</tt> (HTTP) / Content-Format TBD (CoAP).</t>
          <artwork><![CDATA[
Method: GET

HTTP request target: /.well-known/est/<label>/cacerts
                     (Accept: <accepted media type>)
CoAP request target: /.well-known/est/<label>/crts
                     (Accept=<accepted Content-Format>)
]]></artwork>
        </section>
        <section anchor="response">
          <name>Response</name>
          <t>On success, the EST server returns an HTTP 200 / CoAP 2.05 response with:</t>
          <ul spacing="normal">
            <li>
              <t>For Request with <tt>Accept: application/cose-c509-cert+cbor</tt> (HTTP) / <tt>Accept=TBD</tt> (CoAP):  </t>
              <ul spacing="normal">
                <li>
                  <t>Media type: application/cose-c509-cert+cbor (HTTP) / Content-Format TBD (CoAP)</t>
                </li>
                <li>
                  <t>Body: A <tt>C509Certificate</tt> representing the issuing CA certificate, i.e., the CA certificate whose key is used to issue certificates to the EST client.  This form cannot carry the "Root CA Key Update" certificates defined in <xref section="4.4" sectionFormat="comma" target="RFC9810"/>; an EST client that needs them uses one of the other forms.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>For Request with <tt>Accept: application/cose-c509+cbor; usage=chain</tt> (HTTP) / <tt>Accept=TBD</tt> (CoAP):  </t>
              <ul spacing="normal">
                <li>
                  <t>Media type: application/cose-c509+cbor; usage=chain (HTTP) / Content-Format TBD (CoAP)</t>
                </li>
                <li>
                  <t>Body: A <tt>COSE_C509</tt> representing an ordered certificate chain.  The first element is the issuing CA certificate; subsequent elements are intermediate and root CA certificates in chain order. If a Root CA key update applies, the EST server <bcp14>SHOULD</bcp14> include the four "Root CA Key Update" certificates defined in <xref section="4.4" sectionFormat="comma" target="RFC9810"/> in the response chain.  If present, these certificates <bcp14>SHALL</bcp14> take the place of the root CA certificate at the end of the chain, in the order NewWithNew, NewWithOld, OldWithOld, and OldWithNew; that is, the chain is: issuing CA certificate, intermediate CA certificates (if any), NewWithNew, NewWithOld, OldWithOld, OldWithNew.  In this case, the last intermediate CA certificate (or the issuing CA certificate if there is no intermediate CA) is issued under the new root CA key.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>For Request without <tt>Accept</tt> option or with <tt>Accept: application/cose-c509+cbor</tt> (HTTP) / <tt>Accept=TBD</tt> (CoAP):  </t>
              <ul spacing="normal">
                <li>
                  <t>Media type: application/cose-c509+cbor (HTTP) / Content-Format TBD (CoAP)</t>
                </li>
                <li>
                  <t>Body: A <tt>COSE_C509</tt> representing a certificate set.  The first element is the issuing CA certificate; no order is defined for the subsequent elements. If a Root CA key update applies, the EST server <bcp14>SHOULD</bcp14> include the four "Root CA Key Update" certificates defined in <xref section="4.4" sectionFormat="comma" target="RFC9810"/> in the certificate set. No order is defined for these certificates.</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>If the server cannot return the CA certificates in the form requested by the <tt>Accept</tt> option, it <bcp14>MUST</bcp14> return HTTP 406 / CoAP 4.06 (Not Acceptable).</t>
          <t>Successful <tt>cacerts</tt> / <tt>crts</tt> responses <bcp14>MAY</bcp14> include caching metadata as specified in <xref target="response-cache"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="crl-operations">
      <name>EST Operations for Distribution of C509 CRLs</name>
      <t>The <tt>crli</tt> and <tt>crl</tt> operations provide C509 CRL access.  The C509 CRL format is defined in <xref target="I-D.liao-cose-c509-revocation"/>.</t>
      <section anchor="crli">
        <name>crli</name>
        <t>The <tt>crli</tt> operation returns metadata about the current C509 CRL for the target CA as a <tt>C509CRLInfo</tt> object without the full revocation list.  This enables an EST client to check whether its locally cached CRL is still current before requesting the full <tt>crl</tt>.  <tt>C509CRLInfo</tt> is defined in <xref target="I-D.liao-cose-c509-revocation"/>.</t>
        <section anchor="crli-request">
          <name>Request</name>
          <t>The EST client sends a GET request for CRL metadata.  No request body is sent.</t>
          <artwork><![CDATA[
Method: GET
Request target: /.well-known/est/<label>/crli
                [?crlnumber=<n>][&crldp=<dp>]
]]></artwork>
          <t>The optional <tt>crlnumber</tt> query parameter carries the decimal representation of the CRL number the client is interested in.  When present, the EST server <bcp14>MUST</bcp14> return the <tt>C509CRLInfo</tt> for the CRL with that exact <tt>crlNumber</tt>.  If no CRL with the requested <tt>crlnumber</tt> is available, the EST server <bcp14>MUST</bcp14> return HTTP 404 / CoAP 4.04 (Not Found).  When <tt>crlnumber</tt> is absent, the server returns the <tt>C509CRLInfo</tt> for the most recent CRL.</t>
          <t>The optional <tt>crldp</tt> query parameter carries a distribution point name extracted from the CRL Distribution Points extension of the certificate whose revocation status is to be checked (see <xref target="I-D.ietf-cose-cbor-encoded-cert"/>).  The value is the URI of the distribution point, percent-encoded as specified in <xref section="2.1" sectionFormat="of" target="RFC3986"/>.  When present, the EST server <bcp14>MUST</bcp14> return the <tt>C509CRLInfo</tt> for the CRL associated with that distribution point.  When both <tt>crlnumber</tt> and <tt>crldp</tt> are present, the server <bcp14>MUST</bcp14> return the <tt>C509CRLInfo</tt> matching both criteria.</t>
          <t>For CoAP, each query parameter is carried in its own Uri-Query option, for example <tt>crlnumber=5</tt> and <tt>crldp=&lt;percent-encoded URI&gt;</tt>.</t>
        </section>
        <section anchor="crli-response">
          <name>Response</name>
          <t>On success, the EST server returns an HTTP 200 / CoAP 2.05 response with:</t>
          <ul spacing="normal">
            <li>
              <t>Media type: <tt>application/c509-crlinfo+cbor</tt> (HTTP) / Content-Format TBD (CoAP)</t>
            </li>
            <li>
              <t>Body: A <tt>C509CRLInfo</tt> as defined in <xref target="I-D.liao-cose-c509-revocation"/>.</t>
            </li>
          </ul>
          <t><tt>C509CRLInfo</tt> carries all CRL fields from <tt>C509CRLInfoData</tt> — including <tt>crlType</tt>, <tt>signatureAlgorithm</tt>, <tt>authoritySubject</tt>, <tt>authorityKeyIdentifier</tt>, <tt>crlNumber</tt>, <tt>thisUpdate</tt>, <tt>nextUpdate</tt>, <tt>baseCrlNumber</tt>, and <tt>crlExtensions</tt> — without the <tt>revokedCertsList</tt>.  An EST client can use these fields to compare <tt>crlNumber</tt>, <tt>nextUpdate</tt>, or perform a freshness check against its local cache before deciding whether to download the full <tt>C509CRL</tt> via <tt>crl</tt>.</t>
          <t>If no matching CRL is available, the EST server <bcp14>MUST</bcp14> return HTTP 404 / CoAP 4.04 (Not Found).</t>
          <t>Successful <tt>crli</tt> responses <bcp14>MAY</bcp14> include caching metadata as specified in <xref target="response-cache"/>.</t>
        </section>
      </section>
      <section anchor="crl">
        <name>crl</name>
        <t>The <tt>crl</tt> operation returns the C509 CRL for the target CA.</t>
        <section anchor="crl-request">
          <name>Request</name>
          <t>The EST client sends a GET request for the C509 CRL.  No request body is sent.</t>
          <artwork><![CDATA[
Method: GET
Request target: /.well-known/est/<label>/crl
                [?crlnumber=<n>][&crldp=<dp>]
]]></artwork>
          <t>The optional <tt>crlnumber</tt> query parameter carries the decimal representation of the CRL number.  When present, the EST server <bcp14>MUST</bcp14> return the full <tt>C509CRL</tt> with that exact <tt>crlNumber</tt>.  When <tt>crlnumber</tt> is absent, the server returns the most recent CRL.</t>
          <t>The optional <tt>crldp</tt> query parameter is encoded as specified for <tt>crli</tt> (<xref target="crli-request"/>).  When present, the EST server <bcp14>MUST</bcp14> return the full <tt>C509CRL</tt> for the CRL associated with that distribution point.  When both <tt>crlnumber</tt> and <tt>crldp</tt> are present, the server <bcp14>MUST</bcp14> return the <tt>C509CRL</tt> matching both criteria.</t>
          <t>For CoAP, the query parameters are carried in Uri-Query options as specified for <tt>crli</tt> (<xref target="crli-request"/>).</t>
        </section>
        <section anchor="crl-response">
          <name>Response</name>
          <t>On success, the EST server returns an HTTP 200 / CoAP 2.05 response with:</t>
          <ul spacing="normal">
            <li>
              <t>Media type: <tt>application/c509-crl+cbor</tt> (HTTP) / Content-Format TBD (CoAP)</t>
            </li>
            <li>
              <t>Body: A <tt>C509CRL</tt> as defined in <xref target="I-D.liao-cose-c509-revocation"/>.</t>
            </li>
          </ul>
          <t>If no matching CRL is available, the EST server <bcp14>MUST</bcp14> return HTTP 404 / CoAP 4.04 (Not Found).</t>
          <t>Successful <tt>crl</tt> responses <bcp14>MAY</bcp14> include caching metadata as specified in <xref target="response-cache"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="enrollment-ops">
      <name>EST Operations for Certificate Enrollment</name>
      <section anchor="kemc">
        <name>kemc</name>
        <t>The <tt>kemc</tt> operation requests a KEM-based Proof-of-Possession challenge for a submitted C509 public key whose <tt>subjectPublicKeyAlgorithm</tt> is a KEM algorithm.</t>
        <section anchor="kemc-request">
          <name>Request</name>
          <t>An authenticated EST client sends a POST request containing a <tt>C509SubjectPublicKeyInfo</tt> (<xref target="I-D.liao-cose-c509-additions"/>) to request a KEM challenge.</t>
          <artwork><![CDATA[
Method: POST
Request target: /.well-known/est/<label>/kemc
Media type: application/cose-c509-pubkey+cbor (HTTP) /
            Content-Format TBD (CoAP)
Body: C509SubjectPublicKeyInfo
]]></artwork>
          <t>If the request does not contain a KEM public key, the EST server <bcp14>MUST</bcp14> return HTTP 400 / CoAP 4.00 (Bad Request).  If the server supports KEM PoP for the submitted algorithm, it issues a challenge; otherwise, it <bcp14>MUST</bcp14> return HTTP 501 / CoAP 5.01 (Not Implemented).</t>
        </section>
        <section anchor="kemc-response">
          <name>Response</name>
          <t>On success, the EST server returns an HTTP 200 / CoAP 2.05 response with:</t>
          <ul spacing="normal">
            <li>
              <t>Media type: <tt>application/c509-kemchall+cbor</tt> (HTTP) / Content-Format TBD7 (CoAP)</t>
            </li>
            <li>
              <t>Body: A <tt>C509KemChall</tt> (<xref target="pop-kem"/>).</t>
            </li>
          </ul>
          <t>A client that receives a <tt>C509KemChall</tt> decapsulates the shared secret key, computes the PoP MAC as specified in <xref target="pop-kem-mac"/>, and then proceeds with a normal enrollment request (<tt>simpleenroll</tt> / <tt>sen</tt> or <tt>simplereenroll</tt> / <tt>sren</tt>) carrying the MAC in the C509 CSR.  The EST server verifies the MAC as specified in <xref target="pop-kem-verify"/> and issues the certificate on success.</t>
        </section>
      </section>
      <section anchor="sen">
        <name>simpleenroll / sen</name>
        <t>The <tt>simpleenroll</tt> / <tt>sen</tt> operation requests issuance of a new C509 certificate from the EST server.</t>
        <section anchor="sen-request">
          <name>Request</name>
          <t>An authenticated EST client sends a POST request containing a C509 CSR (<xref target="c509-csr"/>).</t>
          <artwork><![CDATA[
Method: POST
HTTP Request target: /.well-known/est/<label>/simpleenroll
CoAP Request target: /.well-known/est/<label>/sen
Media type: application/cose-c509-pkcs10+cbor (HTTP) /
            Content-Format TBD (CoAP)
Body: C509CertificationRequest
]]></artwork>
          <t>The <tt>C509CertificationRequest</tt> <bcp14>MUST</bcp14> include a valid PoP signature.  The EST server <bcp14>MUST</bcp14> verify the PoP signature against the public key in the C509 CSR before issuing a certificate, as required by <xref section="3.4" sectionFormat="comma" target="RFC7030"/>.  As an exception, if the public key in the C509 CSR is a KEM public key, the <tt>C509CertificationRequest</tt> <bcp14>MUST</bcp14> instead include a valid PoP MAC, and the EST server <bcp14>MUST</bcp14> verify it as specified in <xref target="pop-kem"/>.</t>
        </section>
        <section anchor="sen-response">
          <name>Response</name>
          <t>On success, the EST server returns an HTTP 200 / CoAP 2.05 response with:</t>
          <ul spacing="normal">
            <li>
              <t>Media type: <tt>application/cose-c509-cert+cbor</tt> (HTTP) / Content-Format TBD (CoAP)</t>
            </li>
            <li>
              <t>Body: A <tt>C509Certificate</tt> issued for the subject in the C509 CSR, as defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="sren">
        <name>simplereenroll / sren</name>
        <t>The <tt>simplereenroll</tt> / <tt>sren</tt> operation renews or rekeys an existing C509 certificate.</t>
        <section anchor="sren-request">
          <name>Request</name>
          <t>An authenticated EST client sends a POST request containing a C509 CSR for re-enrollment.  The request Subject field and SubjectAltName extension <bcp14>MUST</bcp14> be identical to the corresponding fields in the certificate being renewed or rekeyed.</t>
          <t>The <tt>C509ChangeSubjectName</tt> attribute defined in <xref target="change-subject-name"/> <bcp14>MAY</bcp14> be included in the CSR to request that these fields be changed in the new certificate.</t>
          <artwork><![CDATA[
Method: POST
HTTP Request target: /.well-known/est/<label>/simplereenroll
CoAP Request target: /.well-known/est/<label>/sren
Media type: application/cose-c509-pkcs10+cbor (HTTP) /
            Content-Format TBD (CoAP)
Body: C509CertificationRequest
]]></artwork>
          <t>Re-enrollment processing follows <xref section="4.2.2" sectionFormat="comma" target="RFC7030"/>.  The EST server <bcp14>MUST</bcp14> verify the PoP signature in the C509 CSR or, if the public key in the C509 CSR is a KEM public key, the PoP MAC as specified in <xref target="pop-kem"/>.</t>
        </section>
        <section anchor="sren-response">
          <name>Response</name>
          <t>On success, the EST server returns an HTTP 200 / CoAP 2.05 response with:</t>
          <ul spacing="normal">
            <li>
              <t>Media type: <tt>application/cose-c509-cert+cbor</tt> (HTTP) / Content-Format TBD (CoAP)</t>
            </li>
            <li>
              <t>Body: A renewed <tt>C509Certificate</tt>, as defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="skc">
        <name>serverkeygen / skc</name>
        <t>The <tt>serverkeygen</tt> / <tt>skc</tt> operation requests server-side key generation and returns the generated private key and the issued C509 certificate.</t>
        <t>As discussed in <xref section="9" sectionFormat="comma" target="RFC9148"/>, transporting private keys generated by the EST server is inherently risky. The use of server-generated private keys increases the risk of digital identity theft. Therefore, implementations <bcp14>SHOULD NOT</bcp14> use EST functions that rely on server-generated private keys.</t>
        <section anchor="skc-request">
          <name>Request</name>
          <t>An authenticated EST client sends a POST request containing a C509 CSR.  The <tt>subjectPublicKeyAlgorithm</tt> in the C509 CSR <bcp14>MUST</bcp14> be set to <tt>empty-publickey</tt> (<xref target="empty-publickey"/>) and <tt>subjectPublicKey</tt> <bcp14>MUST</bcp14> be a zero-length byte string (<tt>h''</tt>), because the key pair is generated by the EST server.  The <tt>signatureAlgorithm</tt> <bcp14>MUST</bcp14> be the <tt>id-alg-unsigned</tt> integer code (see <xref target="I-D.ietf-cose-cbor-encoded-cert"/>) and <tt>signatureValue</tt> <bcp14>MUST</bcp14> be a zero-length byte string.  EST servers <bcp14>MUST</bcp14> accept C509 CSRs that use <tt>empty-publickey</tt> and <tt>id-alg-unsigned</tt> for <tt>serverkeygen</tt> / <tt>skc</tt> and <bcp14>MUST NOT</bcp14> verify a PoP signature in this case.</t>
          <artwork><![CDATA[
Method: POST
HTTP Request target: /.well-known/est/<label>/serverkeygen
CoAP Request target: /.well-known/est/<label>/skc
Media type: application/cose-c509-pkcs10+cbor (HTTP) /
            Content-Format TBD (CoAP)
Body: C509CertificationRequest
]]></artwork>
        </section>
        <section anchor="skc-response">
          <name>Response</name>
          <t>On success, the EST server returns an HTTP 200 / CoAP 2.05 response with:</t>
          <ul spacing="normal">
            <li>
              <t>Media type: <tt>application/cose-c509-pem+cbor</tt> (HTTP) / Content-Format TBD (CoAP)</t>
            </li>
            <li>
              <t>Body: A <tt>C509PEM</tt>.</t>
            </li>
          </ul>
          <t>The <tt>C509CertData</tt> field in the <tt>C509PEM</tt> <bcp14>MUST</bcp14> contain only the issued C509 certificate for the generated key pair.</t>
          <t>The EST server <bcp14>SHOULD</bcp14> delete the private key from its storage as soon as the response has been transmitted successfully, unless the deployment policy requires retention for key escrow or disaster recovery (see <xref target="security"/>).  The private key is protected only by the TLS or DTLS channel; no additional encryption is applied.</t>
        </section>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The security requirements of <xref target="RFC7030"/> apply in full to all operations defined in this document.</t>
      <section anchor="transport-security">
        <name>Transport Security</name>
        <t>All operations defined in this document <bcp14>MUST</bcp14> be carried out over HTTPS (HTTP over TLS) or secure CoAP (CoAP over DTLS) as required by <xref section="3" sectionFormat="comma" target="RFC7030"/> and <xref target="RFC9148"/>.  Implementations <bcp14>MUST NOT</bcp14> fall back to plain HTTP or unsecured CoAP.</t>
        <t>EST clients and servers <bcp14>SHOULD</bcp14> use C509 certificates <xref target="I-D.ietf-cose-cbor-encoded-cert"/> for TLS or DTLS authentication when both peers support C509.  This enables end-to-end C509 usage, including the handshake itself, and reduces size and parsing overhead consistently.  EST servers <bcp14>SHOULD</bcp14> continue to accept X.509 certificates <xref target="RFC5280"/> for TLS or DTLS client authentication for interoperability with clients that do not yet support C509.</t>
        <t>All operations <bcp14>MUST</bcp14> require client authentication (see <xref target="client-auth"/>).</t>
      </section>
      <section anchor="server-key-generation">
        <name>Server Key Generation</name>
        <t>The <tt>serverkeygen</tt> / <tt>skc</tt> operation delivers a generated private key to the EST client over TLS or DTLS (see <xref target="skc"/>).  EST servers <bcp14>SHOULD</bcp14> delete the private key after successful transmission.  EST clients <bcp14>MUST</bcp14> store the key material securely immediately upon receipt.</t>
        <t>Because the C509 CSR in a <tt>serverkeygen</tt> / <tt>skc</tt> request carries no proof of possession, the EST server <bcp14>MUST</bcp14> verify that the authenticated EST client is authorized to request a certificate for the subject and subject alternative names in the C509 CSR.</t>
      </section>
      <section anchor="cert-validation">
        <name>C509 Certificate Validation</name>
        <t>EST clients <bcp14>MUST</bcp14> validate received C509 certificates against an independently configured trust anchor according to <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
      </section>
      <section anchor="c509-crl-validation">
        <name>C509 CRL Validation</name>
        <t>A C509 CRL received via the <tt>crl</tt> operation is protected by the secure transport only while in transit.  Before using a C509 CRL, an EST client <bcp14>MUST</bcp14> verify its signature and validate the CRL issuer as specified in <xref target="I-D.liao-cose-c509-revocation"/>.  An EST client uses a <tt>C509CRLInfo</tt> received via the <tt>crli</tt> operation only to decide whether to retrieve the full <tt>C509CRL</tt>; it <bcp14>MUST NOT</bcp14> use a <tt>C509CRLInfo</tt> in place of a validated <tt>C509CRL</tt> for revocation decisions.</t>
      </section>
      <section anchor="kem-proof-of-possession">
        <name>KEM Proof of Possession</name>
        <t>The KEM PoP mechanism (<xref target="pop-kem"/>) follows the key confirmation specified in Section 4.4 of <xref target="NIST.SP.800-227"/>.  The MAC tag can only be computed by a party that can decapsulate the ciphertext, i.e., that holds the KEM private key.  <tt>MAC_Data</tt> binds the tag to the KEM public key (<tt>keyId</tt>), the EST server (<tt>serverId</tt>), the ciphertext, a fresh client nonce, and the complete <tt>TBSCertificationRequest</tt>, so that a tag cannot be reused for a different CSR, a different challenge, or a different EST server.  Binding the challenge state to the authenticated EST client prevents another client from using the challenge, and the single-use requirement prevents replay.</t>
        <t>The shared secret key <tt>K</tt> is used only as the key-confirmation key.  Both the EST client and the EST server <bcp14>MUST</bcp14> destroy <tt>K</tt> after use, as required by Section 4.4.2 of <xref target="NIST.SP.800-227"/>.</t>
      </section>
      <section anchor="capability-discovery">
        <name>Capability Discovery</name>
        <t>An attacker that could modify a <tt>caps</tt> response could make an EST client believe that an operation is not supported, or that an operation is supported when it is not.  This is prevented by the requirement that all operations are carried out over TLS or DTLS with an authenticated EST server (see <xref target="transport-security"/>).</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="iana-pubkey">
        <name>C509 Public Key Algorithms Registry</name>
        <t>IANA is requested to register the following entry in the "C509 Public Key Algorithms" registry under the registry group "CBOR Encoded X.509 (C509)" defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>:</t>
        <table anchor="tab-iana-pubkey">
          <name>empty-publickey Registration</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Value</td>
              <td align="left">TBD1</td>
            </tr>
            <tr>
              <td align="left">Name</td>
              <td align="left">empty-publickey</td>
            </tr>
            <tr>
              <td align="left">Identifiers</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">OID</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">Parameters</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">DER</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">Comments</td>
              <td align="left">Exclusively for use in <tt>subjectPublicKeyAlgorithm</tt> of a <tt>TBSCertificationRequest</tt> for server-side key generation (<tt>serverkeygen</tt> / <tt>skc</tt>).  <bcp14>MUST NOT</bcp14> appear in C509 certificates.</td>
            </tr>
            <tr>
              <td align="left">Reference</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-sigalg">
        <name>C509 Signature Algorithms Registry</name>
        <t>IANA is requested to register the following entry in the "C509 Signature Algorithms" registry under the registry group "CBOR Encoded X.509 (C509)" defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>:</t>
        <table anchor="tab-iana-sigalg">
          <name>HMAC-SHA256 Registration</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Value</td>
              <td align="left">TBD4</td>
            </tr>
            <tr>
              <td align="left">Name</td>
              <td align="left">hmacWithSHA256</td>
            </tr>
            <tr>
              <td align="left">Identifiers</td>
              <td align="left">id-hmacWithSHA256</td>
            </tr>
            <tr>
              <td align="left">OID</td>
              <td align="left">1.2.840.113549.2.9</td>
            </tr>
            <tr>
              <td align="left">Parameters</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">DER</td>
              <td align="left">06 08 2A 86 48 86 F7 0D 02 09</td>
            </tr>
            <tr>
              <td align="left">Comments</td>
              <td align="left">HMAC over SHA256.  Exclusively for use in the <tt>signatureAlgorithm</tt> of a <tt>C509CertificationRequest</tt> for the KEM proof of possession.  <bcp14>MUST NOT</bcp14> appear in C509 certificates.</td>
            </tr>
            <tr>
              <td align="left">Reference</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-cratttype">
        <name>C509 CR Attributes Registry</name>
        <t>IANA is requested to register the following entries in the "C509 CR Attributes" registry under the registry group "CBOR Encoded X.509 (C509)" defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>:</t>
        <figure anchor="tab-iana-cratttype">
          <name>C509 CR Attribute Registrations</name>
          <artwork><![CDATA[
+-------+-----------------------------------------------------------+
| Value | CR Attribute                                              |
+=======+===========================================================+
|  TBD5 | Name:            CMC Change Subject Name                  |
|       | Identifiers:     id-cmc-changeSubjectName                 |
|       | OID:             1.3.6.1.5.5.7.7.36                       |
|       | DER:             06 08 2B 06 01 05 05 07 07 24            |
|       | Comments:        RFC 6402                                 |
|       | attributeValue:  C509ChangeSubjectName                    |
+-------+-----------------------------------------------------------+
|  TBD8 | Name:            KEM PoP Nonce                            |
|       | Identifiers:     N/A                                      |
|       | OID:             N/A                                      |
|       | DER:             N/A                                      |
|       | Comments:        Nonce for the KEM proof of possession    |
|       |                  in C509 CSRs (RFC XXXX)                  |
|       | attributeValue:  C509KemPopNonce                          |
+-------+-----------------------------------------------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="iana-media-types">
        <name>Media Types Registry</name>
        <t>IANA is requested to register the following media type in the "Media Types" registry.</t>
        <section anchor="iana-c509-kemchall">
          <name>Media Type application/c509-kemchall+cbor</name>
          <t>When the <tt>application/c509-kemchall+cbor</tt> media type is used, the payload is a <tt>C509KemChall</tt> structure.</t>
          <t>Type name: application</t>
          <t>Subtype name: c509-kemchall+cbor</t>
          <t>Required parameters: N/A</t>
          <t>Optional parameters: N/A</t>
          <t>Encoding considerations: binary</t>
          <t>Security considerations: See <xref target="security"/> of RFC XXXX.</t>
          <t>Interoperability considerations: N/A</t>
          <t>Published specification: RFC XXXX</t>
          <t>Applications that use this media type: Applications that employ C509 KEM challenges.</t>
          <t>Fragment identifier considerations: N/A</t>
          <t>Additional information:</t>
          <ul spacing="normal">
            <li>
              <t>Deprecated alias names for this type: N/A</t>
            </li>
            <li>
              <t>Magic number(s): TBD6 (derived from the CoAP Content-Format TBD7 as described in <xref section="2.2" sectionFormat="comma" target="RFC9277"/>)</t>
            </li>
            <li>
              <t>File extension(s): .c509</t>
            </li>
            <li>
              <t>Macintosh file type code(s): N/A</t>
            </li>
          </ul>
          <t>Person &amp; email address to contact for further information: iesg@ietf.org</t>
          <t>Intended usage: COMMON</t>
          <t>Restrictions on usage: N/A</t>
          <t>Author: ACE WG</t>
          <t>Change controller: IETF</t>
        </section>
      </section>
      <section anchor="content-format">
        <name>CoAP Content-Formats Registry</name>
        <t>IANA is requested to add the entry for <tt>application/c509-kemchall+cbor</tt> to the "CoAP Content-Formats" registry in the registry group "Constrained RESTful Environments (CoRE) Parameters".</t>
        <figure anchor="tab-format-ids">
          <name>CoAP Content-Format IDs</name>
          <artwork><![CDATA[
+----------------------+---------+-----------+-------+------------+
| Content              | Content | Media     | ID    | Reference  |
| Format               | Coding  | Type      |       |            |
+======================+=========+===========+=======+============+
| application/         | -       | RFC XXXX  | TBD7  | RFC XXXX   |
| c509-kemchall+cbor   |         |           |       |            |
+----------------------+---------+-----------+-------+------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="iana-rt">
        <name>Resource Type (rt=) Link Target Attribute Values Registry</name>
        <t>IANA is requested to add the following entries to the "Resource Type (rt=) Link Target Attribute Values" registry in the registry group "Constrained RESTful Environments (CoRE) Parameters":</t>
        <table anchor="tab-iana-rt">
          <name>Resource Type Registrations</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ace.est.crli</td>
              <td align="left">C509 CRL metadata retrieval</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">ace.est.crl</td>
              <td align="left">C509 CRL retrieval</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">ace.est.kemc</td>
              <td align="left">KEM challenge issuance</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>RFC Editor: Please replace "RFC XXXX" with the RFC number of this document and remove this note.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC6402">
          <front>
            <title>Certificate Management over CMS (CMC) Updates</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="November" year="2011"/>
            <abstract>
              <t>This document contains a set of updates to the base syntax for CMC, a Certificate Management protocol using the Cryptographic Message Syntax (CMS). This document updates RFC 5272, RFC 5273, and RFC 5274.</t>
              <t>The new items in this document are: new controls for future work in doing server side key generation, definition of a Subject Information Access value to identify CMC servers, and the registration of a port number for TCP/IP for the CMC service to run on. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6402"/>
          <seriesInfo name="DOI" value="10.17487/RFC6402"/>
        </reference>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="RFC9148">
          <front>
            <title>EST-coaps: Enrollment over Secure Transport with the Secure Constrained Application Protocol</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="S. Raza" initials="S." surname="Raza"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>Enrollment over Secure Transport (EST) is used as a certificate provisioning protocol over HTTPS. Low-resource devices often use the lightweight Constrained Application Protocol (CoAP) for message exchanges. This document defines how to transport EST payloads over secure CoAP (EST-coaps), which allows constrained devices to use existing EST functionality for provisioning certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9148"/>
          <seriesInfo name="DOI" value="10.17487/RFC9148"/>
        </reference>
        <reference anchor="RFC7250">
          <front>
            <title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="J. Gilmore" initials="J." surname="Gilmore"/>
            <author fullname="S. Weiler" initials="S." surname="Weiler"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS). The new certificate type allows raw public keys to be used for authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7250"/>
          <seriesInfo name="DOI" value="10.17487/RFC7250"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8951">
          <front>
            <title>Clarification of Enrollment over Secure Transport (EST): Transfer Encodings and ASN.1</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Werner" initials="T." surname="Werner"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="November" year="2020"/>
            <abstract>
              <t>This document updates RFC 7030: Enrollment over Secure Transport to resolve some errata that were reported and that have proven to cause interoperability issues when RFC 7030 was extended.</t>
              <t>This document deprecates the specification of "Content-Transfer-Encoding" headers for Enrollment over Secure Transport (EST) endpoints. This document fixes some syntactical errors in ASN.1 that were present.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8951"/>
          <seriesInfo name="DOI" value="10.17487/RFC8951"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC9277">
          <front>
            <title>On Stable Storage for Items in Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document defines a stored ("file") format for Concise Binary Object Representation (CBOR) data items that is friendly to common systems that recognize file types, such as the Unix file(1) command.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9277"/>
          <seriesInfo name="DOI" value="10.17487/RFC9277"/>
        </reference>
        <reference anchor="RFC9810">
          <front>
            <title>Internet X.509 Public Key Infrastructure -- Certificate Management Protocol (CMP)</title>
            <author fullname="H. Brockhaus" initials="H." surname="Brockhaus"/>
            <author fullname="D. von Oheimb" initials="D." surname="von Oheimb"/>
            <author fullname="M. Ounsworth" initials="M." surname="Ounsworth"/>
            <author fullname="J. Gray" initials="J." surname="Gray"/>
            <date month="July" year="2025"/>
            <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 adds support for management of certificates containing a Key Encapsulation Mechanism (KEM) public key and uses EnvelopedData instead of EncryptedValue. This document also includes the updates specified in Section 2 and Appendix A.2 of RFC 9480.</t>
              <t>This document obsoletes RFC 4210, and together with RFC 9811, it also obsoletes RFC 9480. Appendix F of this document updates Section 9 of RFC 5912.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9810"/>
          <seriesInfo name="DOI" value="10.17487/RFC9810"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>University of Glasgow</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>IN Groupe</organization>
            </author>
            <author fullname="Lijun Liao" initials="L." surname="Liao">
              <organization>NIO Inc.</organization>
            </author>
            <date day="24" month="September" year="2026"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and common certificate
   profiles, and it is extensible.

   Two types of C509 certificates are defined.  One type is an
   invertible CBOR re-encoding of DER-encoded X.509 certificates with
   the signature field copied from the DER encoding.  The other type is
   identical except that the signature is computed over the CBOR
   encoding instead of the DER encoding, thereby avoiding the use of
   ASN.1.  Both types of certificates have the same semantics as X.509
   while providing comparable size reduction.

   This document also specifies CBOR-encoded data structures for
   certification requests and certification request templates, new COSE
   headers, as well as a TLS certificate type and a file format for
   C509.  This document updates RFC 6698 by extending the TLSA selectors
   registry to include C509 certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-21"/>
        </reference>
        <reference anchor="I-D.liao-cose-c509-revocation">
          <front>
            <title>CBOR Encoded Certificate Revocation Management</title>
            <author fullname="Lijun Liao" initials="L." surname="Liao">
              <organization>NIO</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>University of Glasgow</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document specifies CBOR-encoded PKI structures for use with C509
   certificates (draft-ietf-cose-cbor-encoded-cert), X.509 certificates
   (RFC 5280), and future certificate types.  It defines C509 CRL and
   C509 OCSP, compact CBOR encodings of X.509 Certificate Revocation
   Lists (RFC 5280) and OCSP messages (RFC 6960), respectively.  The
   structures defined in this document are certificate-type agnostic and
   can be used with C509 certificates, X.509 certificates, or future
   certificate types without modification.  C509 OCSP improves on RFC
   6960 by signing a wider set of fields to prevent algorithm-
   substitution and certificate-chain substitution attacks, replacing
   plaintext serial numbers with hashes to preserve requestor privacy,
   replacing the two-hash issuer identity with a single certificate
   hash, and identifying all participants (requestor, responder, issuer)
   by a uniform certificate hash rather than type-specific fields.  C509
   CRL and C509 OCSP are not wire-format-compatible with their DER-
   encoded X.509 counterparts and cannot be converted to or from them
   without semantic interpretation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-liao-cose-c509-revocation-00"/>
        </reference>
        <reference anchor="I-D.liao-cose-c509-additions">
          <front>
            <title>Additions to C509 Structures</title>
            <author fullname="Lijun Liao" initials="L." surname="Liao">
              <organization>NIO</organization>
            </author>
            <date day="17" month="September" year="2026"/>
            <abstract>
              <t>   This document defines additions to CBOR Encoded X.509 Certificates
   (C509).

   This document defines a new C509SubjectPublicKeyInfo type, a CBOR
   representation of the X.509 SubjectDirectoryAttributes extension, and
   a mechanism that allows organizations assigned a Private Enterprise
   Number (PEN) to define organization-specific integer identifiers
   without registering each identifier in the C509 RDN attribute type,
   CR attribute type, extension ID, certificate policy, or extended key
   usage registries.

   This document also defines textual encoding labels for C509 objects
   using the textual encoding conventions specified in RFC 7468.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-liao-cose-c509-additions-00"/>
        </reference>
        <reference anchor="NIST.SP.800-227" target="https://doi.org/10.6028/NIST.SP.800-227">
          <front>
            <title>Recommendation for Key-Encapsulation Mechanisms</title>
            <author initials="G." surname="Alagic">
              <organization/>
            </author>
            <author initials="E." surname="Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen">
              <organization/>
            </author>
            <author initials="D." surname="Moody">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky">
              <organization/>
            </author>
            <author initials="H." surname="Silberg">
              <organization/>
            </author>
            <author initials="N." surname="Waller">
              <organization/>
            </author>
            <date year="2025" month="September"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-227"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2986">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </reference>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
      </references>
    </references>
    <?line 932?>

<section anchor="flows-http">
      <name>Message Flow Diagrams of EST over HTTPS Operations</name>
      <section anchor="flow-caps-http">
        <name>caps</name>
        <figure anchor="fig-caps-http">
          <name>Message flow of EST over HTTPS operation caps</name>
          <artwork><![CDATA[
EST Client                                   EST Server
  |                                               |
  | Method: GET                                   |
  | Request target: /.well-known/est/<label>/caps |
  |---------------------------------------------->|
  |                                               |
  | Status: 200 OK                                |
  | Media type: text/plain;charset=utf-8          |
  |                                               |
  | <CR-LF separated list of supported            |
  |  operations>                                  |
  |<----------------------------------------------|
  |                                               |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-crts-single-http">
        <name>cacerts for single CA certificate</name>
        <figure anchor="fig-crts-single-http">
          <name>Message flow of EST over HTTPS operation cacerts for single CA certificate</name>
          <artwork><![CDATA[
EST Client                                      EST Server
  |                                                  |
  | Method: GET                                      |
  | Request target: /.well-known/est/<label>/cacerts |
  | Accept: application/cose-c509-cert+cbor          |
  |------------------------------------------------->|
  |                                                  |
  | Status: 200 OK                                   |
  | Media type: application/cose-c509-cert+cbor      |
  |                                                  |
  | <Base64-encoded C509Certificate>                 |
  |<-------------------------------------------------|
  |                                                  |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-crts-set-http">
        <name>cacerts for CA certificate set</name>
        <figure anchor="fig-crts-set-http">
          <name>Message flow of EST over HTTPS operation cacerts for CA certificate set</name>
          <artwork><![CDATA[
EST Client                                      EST Server
  |                                                  |
  | Method: GET                                      |
  | Request target: /.well-known/est/<label>/cacerts |
  |------------------------------------------------->|
  |                                                  |
  | Status: 200 OK                                   |
  | Media type: application/cose-c509+cbor           |
  |                                                  |
  | <Base64-encoded COSE_C509>                       |
  |<-------------------------------------------------|
  |                                                  |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-crts-chain-http">
        <name>cacerts for CA certificate chain</name>
        <figure anchor="fig-crts-chain-http">
          <name>Message flow of EST over HTTPS cacerts for CA certificate chain</name>
          <artwork><![CDATA[
EST Client                                      EST Server
  |                                                  |
  | Method: GET                                      |
  | Request target: /.well-known/est/<label>/cacerts |
  | Accept: application/cose-c509+cbor;              |
  |         usage=chain                              |
  |------------------------------------------------->|
  |                                                  |
  | Status: 200 OK                                   |
  | Media type: application/cose-c509+cbor;          |
  |             usage=chain                          |
  |                                                  |
  | <Base64-encoded COSE_C509>                       |
  |<-------------------------------------------------|
  |                                                  |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-crli-http">
        <name>crli</name>
        <figure anchor="fig-crli-http">
          <name>Message flow of EST over HTTPS operation crli</name>
          <artwork><![CDATA[
EST Client                                     EST Server
  |                                                |
  | Method: GET                                    |
  | Request target: /.well-known/est/<label>/crli  |
  |   [?crlnumber=<n>][&crldp=<dp>]                |
  |----------------------------------------------->|
  |                                                |
  | Status: 200 OK                                 |
  | Media type: application/c509-crlinfo+cbor      |
  |                                                |
  | <Base64-encoded C509CRLInfo>                   |
  |<-----------------------------------------------|
  |                                                |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-crl-http">
        <name>crl</name>
        <figure anchor="fig-crl-http">
          <name>Message flow of EST over HTTPS operation crl</name>
          <artwork><![CDATA[
EST Client                                    EST Server
  |                                                |
  | Method: GET                                    |
  | Request target: /.well-known/est/<label>/crl   |
  |   [?crlnumber=<n>][&crldp=<dp>]                |
  |----------------------------------------------->|
  |                                                |
  |  Status: 200 OK                                |
  |  Media type: application/c509-crl+cbor         |
  |                                                |
  |  <Base64-encoded C509CRL>                      |
  |<-----------------------------------------------|
  |                                                |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-kemc-http">
        <name>kemc</name>
        <figure anchor="fig-kemc-http">
          <name>Message flow of EST over HTTPS operation kemc</name>
          <artwork><![CDATA[
EST Client                                  EST Server
  |                                                |
  | [TLS client certificate]                       |
  |                                                |
  | Method: POST                                   |
  | Request target: /.well-known/est/<label>/kemc  |
  | Media type: application/cose-c509-pubkey+cbor  |
  |                                                |
  | <Base64-encoded C509SubjectPublicKeyInfo>      |
  |----------------------------------------------->|
  |                                                |
  |                                                |
  | Status: 200 OK                                 |
  | Media type: application/c509-kemchall+cbor     |
  |                                                |
  | <Base64-encoded C509KemChall>                  |
  |<-----------------------------------------------|
  |                                                |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-sen-http">
        <name>simpleenroll</name>
        <figure anchor="fig-sen-http">
          <name>Message flow of EST over HTTPS operation simpleenroll</name>
          <artwork><![CDATA[
EST Client                                  EST Server
  |                                                |
  | [TLS client certificate]                       |
  |                                                |
  | Method: POST                                   |
  | Request target: /.well-known/est/<label>       |
  |                   /simpleenroll                |
  | Media type: application/cose-c509-pkcs10+cbor  |
  |                                                |
  | <Base64-encoded C509CertificationRequest>      |
  |----------------------------------------------->| Verify PoP,
  |                                                | Issue C509
  |                                                | cert
  | Status: 200 OK                                 |
  | Media type: application/cose-c509-cert+cbor    |
  |                                                |
  | <Base64-encoded C509Certificate>               |
  |<-----------------------------------------------|
  |                                                |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-sren-http">
        <name>simplereenroll</name>
        <figure anchor="fig-sren-http">
          <name>Message flow of EST over HTTPS operation simplereenroll</name>
          <artwork><![CDATA[
EST Client                                  EST Server
  |                                                |
  | [TLS client certificate]                       |
  |                                                |
  | Method: POST                                   |
  | Request target: /.well-known/est/<label>       |
  |                   /simplereenroll              |
  | Media type: application/cose-c509-pkcs10+cbor  |
  |                                                |
  | <Base64-encoded C509CertificationRequest>      |
  |----------------------------------------------->| Verify PoP,
  |                                                | Issue C509
  |                                                | cert
  | Status: 200 OK                                 |
  | Media type: application/cose-c509-cert+cbor    |
  |                                                |
  | <Base64-encoded C509Certificate>               |
  |<-----------------------------------------------|
  |                                                |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-skc-http">
        <name>serverkeygen</name>
        <figure anchor="fig-skc-http">
          <name>Message flow of EST over HTTPS operation serverkeygen</name>
          <artwork><![CDATA[
EST Client                                   EST Server
  |                                                |
  | [TLS client certificate]                       |
  |                                                |
  | Method: POST                                   |
  | Request target: /.well-known/est/<label>       |
  |                   /serverkeygen                |
  | Media type: application/cose-c509-pkcs10+cbor  |
  |                                                |
  | <Base64-encoded C509 CSR (no public key)>      |
  |----------------------------------------------->|
  |                                                | Generate
  |                                                | keypair,
  |                                                | Issue C509
  | Status: 200 OK                                 | cert, Delete
  | Media type: application/cose-c509-pem+cbor     | key from server
  |                                                |
  | <Base64-encoded C509PEM>                       |
  |<-----------------------------------------------|
  | (key no longer on EST server)                  |
  |                                                |
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="flows-coap">
      <name>Message Flow Diagrams of EST over CoAP/DTLS Operations</name>
      <section anchor="flow-crts-single-coap">
        <name>crts for single CA certificate</name>
        <figure anchor="fig-crts-single-coap">
          <name>Message flow of EST over CoAP/DTLS operation crts for single CA certificate</name>
          <artwork><![CDATA[
EST Client                                   EST Server
  |                                               |
  | GET example.com/.well-known/est/<label>/crts  |
  | (Accept: TBD)                                 |
  |---------------------------------------------->|
  |                                               |
  | 2.05 Content (Content-Format: TBD)            |
  | { payload with CBOR-encoded C509Certificate   |
  |   in binary format }                          |
  |<----------------------------------------------|
  |                                               |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-crts-set-coap">
        <name>crts for CA certificate set</name>
        <figure anchor="fig-crts-set-coap">
          <name>Message flow of EST over CoAP/DTLS operation crts for CA certificate set</name>
          <artwork><![CDATA[
EST Client                                   EST Server
  |                                               |
  | GET example.com/.well-known/est/<label>/crts  |
  |---------------------------------------------->|
  |                                               |
  | 2.05 Content (Content-Format: TBD)            |
  | { payload with CBOR-encoded COSE_C509         |
  |   (certificate set) in binary format }        |
  |<----------------------------------------------|
  |                                               |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-crts-chain-coap">
        <name>crts for CA certificate chain</name>
        <figure anchor="fig-crts-chain-coap">
          <name>Message flow of EST over CoAP/DTLS operation crts for CA certificate chain</name>
          <artwork><![CDATA[
EST Client                                   EST Server
  |                                               |
  | GET example.com/.well-known/est/<label>/crts  |
  | (Accept: TBD)                                 |
  |---------------------------------------------->|
  |                                               |
  | 2.05 Content (Content-Format: TBD)            |
  | { payload with CBOR-encoded COSE_C509         |
  |   (certificate chain) in binary format }      |
  |<----------------------------------------------|
  |                                               |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-crli-coap">
        <name>crli</name>
        <figure anchor="fig-crli-coap">
          <name>Message flow of EST over CoAP/DTLS operation crli</name>
          <artwork><![CDATA[
EST Client                                   EST Server
  |                                               |
  | GET example.com/.well-known/est/<label>/crli  |
  |   [?crlnumber=<n>][&crldp=<dp>]               |
  |---------------------------------------------->|
  |                                               |
  | 2.05 Content (Content-Format: TBD)            |
  | { payload with CBOR-encoded C509CRLInfo       |
  |   in binary format }                          |
  |<----------------------------------------------|
  |                                               |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-crl-coap">
        <name>crl</name>
        <figure anchor="fig-crl-coap">
          <name>Message flow of EST over CoAP/DTLS operation crl</name>
          <artwork><![CDATA[
EST Client                                   EST Server
  |                                               |
  | GET example.com/.well-known/est/<label>/crl   |
  |   [?crlnumber=<n>][&crldp=<dp>]               |
  |---------------------------------------------->|
  |                                               |
  | 2.05 Content (Content-Format: TBD)            |
  | { payload with CBOR-encoded C509CRL           |
  |   in binary format }                          |
  |<----------------------------------------------|
  |                                               |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-kemc-coap">
        <name>kemc</name>
        <figure anchor="fig-kemc-coap">
          <name>Message flow of EST over CoAP/DTLS operation kemc</name>
          <artwork><![CDATA[
EST Client                                    EST Server
  |                                                |
  | POST example.com/.well-known/est/<label>/kemc  |
  | (Content-Format: TBD)                          |
  | { payload with CBOR-encoded                    |
  |   C509SubjectPublicKeyInfo in binary format }  |
  |----------------------------------------------->|
  |                                                |
  | 2.05 Content (Content-Format: TBD)             |
  | { payload with CBOR-encoded C509KemChall       |
  |   in binary format }                           |
  |<-----------------------------------------------|
  |                                                |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-sen-coap">
        <name>sen</name>
        <figure anchor="fig-sen-coap">
          <name>Message flow of EST over CoAP/DTLS operation sen</name>
          <artwork><![CDATA[
EST Client                                   EST Server
  |                                               |
  | POST example.com/.well-known/est/<label>/sen  |
  | (Content-Format: TBD)                         |
  | { payload with CBOR-encoded                   |
  |  C509CertificationRequest in binary format }  |
  |---------------------------------------------->|
  |                                               |
  | 2.05 Content (Content-Format: TBD)            |
  | { payload with CBOR-encoded C509Certificate   |
  |   in binary format }                          |
  |<----------------------------------------------|
  |                                               |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-sren-coap">
        <name>sren</name>
        <figure anchor="fig-sren-coap">
          <name>Message flow of EST over CoAP/DTLS operation sren</name>
          <artwork><![CDATA[
EST Client                                   EST Server
  |                                               |
  | POST example.com/.well-known/est/<label>/sren |
  | (Content-Format: TBD)                         |
  | { payload with CBOR-encoded                   |
  |  C509CertificationRequest in binary format }  |
  |---------------------------------------------->|
  |                                               |
  | 2.05 Content (Content-Format: TBD)            |
  | { payload with CBOR-encoded C509Certificate   |
  |   in binary format }                          |
  |<----------------------------------------------|
  |                                               |
]]></artwork>
        </figure>
      </section>
      <section anchor="flow-skc-coap">
        <name>skc</name>
        <figure anchor="fig-skc-coap">
          <name>Message flow of EST over CoAP/DTLS operation skc</name>
          <artwork><![CDATA[
EST Client                                    EST Server
  |                                                |
  | POST example.com/.well-known/est/<label>/skc   |
  | (Content-Format: TBD)                          |
  | { payload with CBOR-encoded                    |
  |   C509CertificationRequest in binary format }  |
  |----------------------------------------------->|
  |                                                |
  | 2.05 Content (Content-Format: TBD)             |
  | { payload with CBOR-encoded C509PEM            |
  |   in binary format }                           |
  |<-----------------------------------------------|
  |                                                |
]]></artwork>
        </figure>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The author thanks the members of the ACE and COSE working groups for reviewing and commenting on intermediate versions of this draft.</t>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change log</name>
      <ul empty="true">
        <li>
          <t><strong>RFC Editor's Note:</strong> Please remove this section prior to publication of a
final version of this document.</t>
        </li>
      </ul>
      <section numbered="false" anchor="since-draft-liao-ace-est-c509-03">
        <name>Since draft-liao-ace-est-c509-03</name>
        <ul spacing="normal">
          <li>
            <t>Use <tt>C509SubjectPublicKeyInfo</tt> defined in <xref target="I-D.liao-cose-c509-additions"/> instead of <tt>C509PublicKey</tt> and the media type <tt>application/c509-pubkey+cbor</tt> previously defined in this document.</t>
          </li>
          <li>
            <t>Specify the order of the "Root CA Key Update" certificates in the CA certificate chain, and state that no order is defined for them in the CA certificate set.</t>
          </li>
          <li>
            <t>Allow a PoP MAC instead of a PoP signature for KEM public keys, and specify how the MAC is carried in the C509 CSR and how the server locates the challenge state.</t>
          </li>
          <li>
            <t>Align the KEM PoP with the key confirmation of <xref target="NIST.SP.800-227"/>: define <tt>MAC_Data</tt>, add the <tt>serverId</tt> field to <tt>C509KemChall</tt>, add the CR attribute <tt>C509KemPopNonce</tt> for the client nonce, and require single-use challenges bound to the authenticated EST client, remove the <tt>encapAlg</tt> field from <tt>C509KemChall</tt>, add the optional <tt>lifetime</tt> field to <tt>C509KemChall</tt>, and make HMAC-SHA256 mandatory to implement for EST servers.</t>
          </li>
          <li>
            <t>Require (<bcp14>MUST</bcp14> instead of <bcp14>SHOULD</bcp14>) <tt>empty-publickey</tt> and <tt>id-alg-unsigned</tt> in <tt>serverkeygen</tt> / <tt>skc</tt> requests.</t>
          </li>
          <li>
            <t>Follow <xref target="RFC8951"/> for the base64 encoding of HTTPS payloads; CoAP payloads are binary.</t>
          </li>
          <li>
            <t>Require EST clients to validate received C509 certificates against a trust anchor.</t>
          </li>
          <li>
            <t>Specify HTTP 406 / CoAP 4.06 and HTTP 415 / CoAP 4.15 error responses.</t>
          </li>
          <li>
            <t>Add security considerations for server key generation, C509 CRL validation, and capability discovery.</t>
          </li>
          <li>
            <t>Add IANA registrations for the resource types <tt>ace.est.crli</tt>, <tt>ace.est.crl</tt>, and <tt>ace.est.kemc</tt>.</t>
          </li>
          <li>
            <t>Move RFC 5652 to the informative references.</t>
          </li>
          <li>
            <t>Use <tt>/.well-known/est/</tt> as the path prefix for EST over CoAP, and <tt>&lt;label&gt;</tt> in the message flow diagrams.</t>
          </li>
          <li>
            <t>Specify the <tt>crldp</tt> query parameter as a percent-encoded distribution point URI taken from the certificate, and its encoding as CoAP Uri-Query options.</t>
          </li>
          <li>
            <t>Relax the client behavior after an error response to <tt>caps</tt>.</t>
          </li>
          <li>
            <t>Specify that the single-certificate form of <tt>cacerts</tt> / <tt>crts</tt> returns the issuing CA certificate.</t>
          </li>
          <li>
            <t>Editorial changes.</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-liao-ace-est-c509-02">
        <name>Since draft-liao-ace-est-c509-02</name>
        <ul spacing="normal">
          <li>
            <t>Use both long name and short name of operations.</t>
          </li>
          <li>
            <t>Add message flows for the cacerts / crts operation to retrieve single CA certificate, and CA certificate chain.</t>
          </li>
          <li>
            <t>Add message flows for EST over CoAP/DTLS.</t>
          </li>
          <li>
            <t>Editorial changes.</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-liao-ace-est-c509-01">
        <name>Since draft-liao-ace-est-c509-01</name>
        <ul spacing="normal">
          <li>
            <t>Add EST of C509 certificate over secure CoAP.</t>
          </li>
          <li>
            <t>Use short operation names defined in <xref target="RFC9148"/> to replace the long names defined in <xref target="RFC7030"/>.</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
zipA3N5zFWDi54VZBX5Fr1dU1K1C47TZi/vtZpiXEWg5wH0UJB4GDufROLTg
gFq9GdRZ+Jy7aWyCysLlbuKQ+FITHLSuQ9/AUAHNWHHVCm0/FBzYABRaXjjc
fi44sOmoV2E5SWvgMA8+uAgwOQ+L9TUNB+SNLix+LXBQRrTGav5as/A54cAw
/NZw4FCAootjK+4wJxzYntOrQNPPrGIROFixjiocJtHYI42HgIOtY19vi0f1
mjyHFV8vfZxpbHySxgbZY7va2DhY/bgtDnofdnsnH4/+Corzx8OT/Y8feu9X
lm4blfx6Bfax/9j+CPDUE5JA3clytjkxXk8Yv4p7rVV9S8/H7UCrZHUXfdjc
3Fvfje6VHEMd56OyLywTwf2um79jT6v78cvXvvwhK2E5KECGK8LS8tXoH1Z7
8r/Wgyoi1SPLY/+x/ZF0hrKwB9PauXpwIBy5i5rkydvdCiFYkKo8cOjl4Zo/
wNpBb7SEpNYj1WAf/bXLsR9qdDO4sLS3bzI6KkX2YKB1abXp649Ouo0Fea3r
uKObIR909CJKncFs57MwOP+1Rs/t4dXolmz+uqOfu4C2PZxfG/JNMst1Id0l
swyzX0huPULef4GJWtgzurl20V3GKT3i+lFofr1lTx3qB5dZPizEEnpkl9r8
r/jwkT4f7f3p0/7R3i5+Pv5j7/17/aEl3zj+48dP73fNJ9Ny5+PBwd6HXW4M
T4XzqLV00PvrEvviltQilqpuQfTqlZkYRCYWQkGd1pA8ZQOG0tudw//3f9c3
xfX1/8FUl/X1F7e38svz9Web8OXyLJLZERQu4a/lWXTVwlyAIMde0DoACRWX
QYJRvEIUZ9llKjD62G21fvobQubv2+LVIJysb76RD3DBzkMFM+chwaz6pNKY
gVjzqGYYDU3nuQdpd769vzrfFdyth69+D8Z/JDrrz3//psU4YsUOo3zMOQe1
PtztVsv4lbdb2+TzR3wrr6ywcVgWXmwGNzgbUEDZcf1jTmFP6FQmSm/xHOUy
LtnGDBTSatbJS2v6rpuGjDPK4Kp0dmMkRQcRMcyMQWmKHR71AP3KS2BifgSA
HckRzHLume30cEZOFEClUpZXMkxizxXNUphoNcEIupIee+rQjQNgr1KhRH9/
U0qFHQSjHR1cKX++im/NGwyA+RxmhziVQ5VodKgTjWAOf45yMyatjIMv1Deg
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

-->

</rfc>
