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

<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 Certificate Revocation List (CRL) distribution.</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 51?>

<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 do not require a CBOR parser or generator:</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>sen</tt> (simple enroll) or <tt>sren</tt> (simple reenroll) without interpreting its contents.</t>
        </li>
        <li>
          <t>For KEM-only key types, the EST client needs to communicate with the key device to get the public key (<tt>C509PublicKey</tt>) and the certification request (<tt>C509CertificationRequest</tt>) after receiving the KEM challenge object (<tt>KemChall</tt>) from the EST server; in this case, the EST client considers the <tt>C509PublicKey</tt>, <tt>KemChall</tt>, and <tt>C509CertificationRequest</tt> opaque binary blobs.</t>
        </li>
        <li>
          <t>For all key types, the C509 certificate returned in the response is stored directly to persistent memory without parsing.  This property makes the EST client implementation extremely 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 are (those wit <tt>new</tt> marked are new operations defined in this document) in <xref target="tab-ops-https-overview"/>, and for EST over CoAP in <xref target="tab-ops-coaps-overview"/>:</t>
      <figure anchor="tab-ops-https-overview">
        <name>Operations for EST over CoAP/DTLS Used in This Document (M/O: MANDDATORY / 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,    |
|          |   |             |              | - cose-c509-cert  |
|          |   |             |              |   +cbor           |
+----------+---+-------------+--------------+-------------------+
| crli     | O | CRL         | (none)       | application/      |
| (new)    |   | metadata    |              | c509-crlinfo      |
|          |   | retrieval   |              | +cbor             |
+----------+---+-------------+--------------+-------------------+
| 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   | c509-pubkey  | c509-kemchall     |
|          |   | issuance    | +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: MANDDATORY / OPTIONAL</name>
        <artwork><![CDATA[
+=================+====================+=====+
| EST over HTTPS  | EST over CoAP/DTLS | M/O |
| Operations      | Operations         |     |
+=================+====================+=====+
| caps            | (Not Related)      |     |
+-----------------+--------------------+-----+
| cacerts         | crts               | M   |
+-----------------+--------------------+-----+
| crli            | crli (new)         | O   |
+-----------------+--------------------+-----+
| crl             | crl (new)          | O   |
+-----------------+--------------------+-----+
| csrattrs        | attr               | O   |
+-----------------+--------------------+-----+
| kemc            | kemc (new)         | O   |
+-----------------+--------------------+-----+
| simpleenroll    | sen                | M   |
+-----------------+--------------------+-----+
| simplereenroll  | sren               | M   |
+-----------------+--------------------+-----+
| serverkeygen    | skc                | O   |
+-----------------+--------------------+-----+
]]></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 require the use of EST to support certificate-based client authentication only, neither HTTP Basic nor Digest authentication (as described in Section 3.2.3 of <xref target="RFC7030"/>) is supported, as in <xref target="RFC9148"/>.</t>
      </section>
      <section anchor="discovery-uris">
        <name>Discovery and URIs</name>
        <t>In EST over HTTPS, the capabilities of EST server is retrieved by using the operation <tt>caps</tt>.</t>
        <t>In EST over CoAP/DTLS, the capabilities is retrieved by sending a GET method to the EST server (as in <xref section="4.1" sectionFormat="of" target="RFC9148"/>) (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>
        <artwork><![CDATA[
REQ: GET /.well-known/core?rt=ace.est*

RES: 2.05 Content
</est/crts>;rt="ace.est.crts";ct="TBD TBD",
</est/sen>;rt="ace.est.sen";ct="TBD TBD",
</est/sren>;rt="ace.est.sren";ct="TBD TBD",
</est/att>;rt="ace.est.att";ct=TBD,
</est/skc>;rt="ace.est.skc";ct=TBD,
</est/crli>;rt="ace.est.crli";ct=TBD,
</est/crl>;rt="ace.est.crl";ct=TBD,
</est/kemc>;rt="ace.est.kemc";ct=TBD7
]]></artwork>
      </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>cacaps</tt>, <tt>cacerts</tt>, <tt>crli</tt>, <tt>crl</tt>) use HTTP GET, and (<tt>crts</tt>, <tt>crli</tt>, <tt>crl</tt>) use CoAP GET:</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>, <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 or certificate profiles.</t>
      </section>
      <section anchor="channel-binding">
        <name>Channel Binding</name>
        <t>Channel binding is <bcp14>OPTIONAL</bcp14>. The challel binding mechanisms specified in {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. And the mechanism with retry-later for the operarions <tt>simpleenroll</tt> / <tt>sen</tt> and <tt>simplereenroll</tt> / <tt>sren</tt> specified in <xref section="4.2.3" sectionFormat="comma" target="RFC7030"/> applies for HTTP in this document.</t>
      </section>
      <section anchor="response-cache">
        <name>Response Cache</name>
        <t>Successful responses, if will not be changed in the next short period, 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>E-Tag</tt> and <tt>Max-Age</tt>.</t>
          </li>
        </ul>
      </section>
      <section anchor="cbor-transfer">
        <name>CBOR Transfer</name>
        <t>All POST request bodies in this document are CBOR-encoded.  For the HTTPS binding, CBOR-based response bodies are base64-encoded for transport.  For the CoAP binding, CBOR payloads are carried directly in the message body using the relevant CoAP Content-Format.  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"/>.  Servers <bcp14>MUST NOT</bcp14> include a <tt>Content-Transfer-Encoding</tt> header for CBOR payloads.</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 (single certificate)</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/c509-pubkey+cbor</td>
              <td align="left">TBD3</td>
              <td align="left">C509PublicKey</td>
              <td align="left">this document</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 an empty 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 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>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> / skc` (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 an empty byte string (<tt>h''</tt>).  EST servers <bcp14>MUST</bcp14> reject any C509 CSR using <tt>empty-publickey</tt> in a <tt>sen</tt> or <tt>sren</tt> request.</t>
      </section>
      <section anchor="change-subject-name">
        <name>CRAttribute ChangeSubjectName</name>
        <t>The ChangeSubjectName for X.509 PKI is defined in <xref target="RFC6402"/>. The corresponding definition for C509 certification request 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[
ChangeSubjectName = [
  subject     C509Name / null,
  subjectAlt  SubjectAltName / null
]
]]></sourcecode>
        <t>This CRAttribute <bcp14>MAY</bcp14> be included in a <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="proof-of-possession">
        <name>Proof of Possession</name>
        <t><tt>simpleenroll</tt> / sen<tt> and </tt>simplereenroll<tt> / </tt>sren<tt> MUST verify the PoP signature in the C509 CSR before issuing a certificate.  The </tt>simplereenroll<tt> / </tt>skc` operation does not require PoP verification because the EST server generates the key pair itself.</t>
        <section anchor="c509pubkey">
          <name>C509PublicKey</name>
          <t>A <tt>C509PublicKey</tt> contains a subject public key in the C509 encoding.  It uses the same field types as <tt>TbsCertificate</tt> in <xref target="I-D.ietf-cose-cbor-encoded-cert"/> and is defined as:</t>
          <artwork name="c509est.cddl"><![CDATA[
C509PublicKey = [
  subjectPublicKeyAlgorithm : AlgorithmIdentifier,
  subjectPublicKey          : Defined
]
]]></artwork>
          <t>The <tt>subjectPublicKeyAlgorithm</tt> field uses the full <tt>AlgorithmIdentifier</tt> encoding as defined in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>, without limitation.
The <tt>subjectPublicKey</tt> field uses the same encoding as in C509 certificates: for most algorithms it is a CBOR byte string, but for RSA public keys it is encoded as an array of two unwrapped CBOR unsigned bignums <tt>[~biguint, ~biguint]</tt> when the exponent is not 65537, as specified in <xref target="I-D.ietf-cose-cbor-encoded-cert"/>.</t>
          <t>The media type of <tt>C509PublicKey</tt> is <tt>application/c509-pubkey+cbor</tt> (see <xref target="iana-c509-pubkey"/>); the corresponding CoAP Content-Format is defined in <xref target="content-format"/>.  The "magic number" is TBD2, using the reserved CBOR tag 55799 and Content-Format TBD3, as described in <xref section="2.2" sectionFormat="comma" target="RFC9277"/>.</t>
        </section>
        <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.  This document specifies an interactive KEM challenge–response PoP mechanism.</t>
          <t>The recommended KEM PoP flow is:</t>
          <ul spacing="normal">
            <li>
              <t>Challenge issuance: Upon receipt of a KEM public key (<tt>C509PublicKey</tt>) in the <tt>kemc</tt> operation, an EST server returns a CBOR-encoded KEM challenge object (<tt>C509KemChall</tt>) with media type <tt>application/cbor</tt>.</t>
            </li>
          </ul>
          <sourcecode type="cddl" name="c509est.cddl"><![CDATA[
C509KemChall = [
  keyId         : bstr,
  encapAlg      : int,
  encapsulation : bstr
]
]]></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>In particular:</t>
          <ul spacing="normal">
            <li>
              <t><tt>keyId</tt> is the SHA-256 fingerprint of the CBOR-encoded <tt>C509PublicKey</tt>,</t>
            </li>
            <li>
              <t><tt>encapAlg</tt> is the encapsulation algorithm (TBD: define a new registry or reuse a COSE algorithm), and</t>
            </li>
            <li>
              <t><tt>encapsulation</tt> is the KEM ciphertext produced by encapsulating a freshly generated one-time secret key <tt>K</tt> to the client's KEM public key.</t>
            </li>
          </ul>
          <t>The server <bcp14>MUST</bcp14> retain the challenge state (at least <tt>keyId</tt>, <tt>K</tt>, and the lifetime) for the duration of the challenge.</t>
          <ul spacing="normal">
            <li>
              <t>Client decapsulation and response: The client decapsulates <tt>encapsulation</tt> to recover the one-time secret key <tt>K</tt>.  The client computes a MAC value over the CBOR-encoded <tt>TBSCertificationRequest</tt> with the key <tt>K</tt>.  The client then submits a follow-up operation as usual.</t>
            </li>
            <li>
              <t>Server verification: The server computes the <tt>keyId</tt>, retrieves the challenge state for that <tt>keyId</tt>, and verifies that the state is still within its validity period.  The server then verifies the received <tt>mac</tt> against the saved <tt>TBSCertificationRequest</tt>.  The server proceeds with certificate issuance as for signature-based PoP.  If verification fails or the challenge has expired, the server <bcp14>MUST</bcp14> reject the request.</t>
            </li>
          </ul>
          <t>Implementations <bcp14>SHOULD</bcp14> use HMAC-SHA256 (with integer value TBD4) by default, unless constrained by the KEM's security requirements.  Servers <bcp14>MUST</bcp14> enforce challenge timeouts and retry limits to mitigate replay and denial-of-service risks.</t>
          <t>IANA is requested to register MAC algorithms to be used in <tt>C509CertificationRequest</tt> (<xref target="iana-sigalg"/>).</t>
        </section>
      </section>
    </section>
    <section anchor="caps-section">
      <name>EST Operations for Server Capability Discovery</name>
      <section anchor="caps">
        <name>caps</name>
        <t>This operation is only related to EST over HTTPS, but not 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 a HTTP 200 response with:</t>
          <ul spacing="normal">
            <li>
              <t>Media type: <tt>text/plain; charset=utf-8</tt> (HTTP)</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>An EST client that receives an error response to a <tt>caps</tt> request <bcp14>MUST NOT</bcp14> attempt the operations defined in this document.</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>/attr
]]></artwork>
        </section>
        <section anchor="att-response">
          <name>Response</name>
          <t>On success, the EST server returns a 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>An response code of HTTP 404 / CoAP 4.04 indicates that CSR attributes are not available.</t>
          <t>Successful <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>Successful <tt>cacerts</tt> / <tt>crts</tt> responses <bcp14>MAY</bcp14> include caching metadata as specified in <xref target="response-cache"/>.</t>
        <t>Depending on the <tt>Accept</tt> option, the cacerts / <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</tt> (HTTP) / <tt>Accept=TBD</tt> (CoAP): a single certificate</t>
          </li>
          <li>
            <t><tt>Accept: application/cose-c509; usage=chain</tt> (HTTP) / <tt>Accept=TBD</tt> (CoAP): certificate chain</t>
          </li>
          <li>
            <t>No Accept or <tt>Accept: application/cose-c509</tt> (HTTP) / <tt>Accept=TBD</tt> (CoAP): certificate set (unsorted certificates)</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-Formats 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> choose format TBD for certificate set.</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 a 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 a single certificate.</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 three "Root CA Key Update" certificates OldWithOld, OldWithNew, NewWithOld, and NewWIthNew in the response chain.  These are defined in <xref section="4.4" sectionFormat="comma" target="RFC9810"/>.</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 an unordered certificate set.  The first element is the issuing CA certificate; subsequent elements are not sorted. If a Root CA key update applies, the EST server <bcp14>SHOULD</bcp14> include the three "Root CA Key Update" certificates OldWithOld, OldWithNew, NewWithOld, and NewWithNew in the response chain.  These are defined in <xref section="4.4" sectionFormat="comma" target="RFC9810"/>.</t>
                </li>
              </ul>
            </li>
          </ul>
          <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
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 status 404 (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 the CRL Distribution Point identifier.  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>
        </section>
        <section anchor="crli-response">
          <name>Response</name>
          <t>On success, the EST server returns a 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 compute 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
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 carries the CRL Distribution Point identifier.  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>If no matching CRL is available, the EST server <bcp14>MUST</bcp14> return HTTP 404 / CoAP 4.04 (Not Found).</t>
        </section>
        <section anchor="crl-response">
          <name>Response</name>
          <t>On success, the EST server returns a 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>C509PublicKey</tt> (<xref target="c509pubkey"/>) to request a KEM challenge.</t>
          <artwork><![CDATA[
Method: POST
Request target: /.well-known/est/<label>/kemc
Media type: application/c509-pubkey+cbor (HTTP)/ Content-Type TBD (CoAP)
Body: C509PublicKey
]]></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 a 200 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> uses the recovered one-time secret key to produce the PoP MAC and then proceeds with a normal enrollment request (<tt>sen</tt> or <tt>sren</tt>) including the computed MAC in the request (see <xref target="pop-kem"/> for the PoP flow). The EST server verifies the MAC using the stored challenge state 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
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"/>.</t>
        </section>
        <section anchor="sen-response">
          <name>Response</name>
          <t>On success, the EST server returns a HTTP 200 / CoAP 2.04 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>ChangeSubjectName</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
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.</t>
        </section>
        <section anchor="sren-response">
          <name>Response</name>
          <t>On success, the EST server returns a 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>SHOULD</bcp14> be set to <tt>empty-publickey</tt> (<xref target="empty-publickey"/>) and <tt>subjectPublicKey</tt> <bcp14>SHOULD</bcp14> be an empty byte string (<tt>h''</tt>), because the key pair is generated by the EST server.  The <tt>signatureAlgorithm</tt> <bcp14>SHOULD</bcp14> be the <tt>id-alg-unsigned</tt> integer code and <tt>signatureValue</tt> <bcp14>SHOULD</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>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 a 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 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>
        <section anchor="tls-certificate-type-negotiation">
          <name>TLS Certificate Type Negotiation</name>
          <t>When C509 certificates are used for TLS 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="client-authentication">
          <name>Client Authentication</name>
          <t>All operations <bcp14>MUST</bcp14> require client authentication.</t>
        </section>
      </section>
      <section anchor="server-key-generation">
        <name>Server Key Generation</name>
        <t>The <tt>skc</tt> operation delivers a generated private key to the EST client over TLS.  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>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>
      <section anchor="c509-certificate-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"/>.  The trust model for C509 certificates differs from classical X.509 certificate chain validation when C509 is used in the HyPKI trust architecture; in that case, validation uses the cosigner-signed Merkle tree or signed allowlist rather than a certificate chain.</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>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">OID</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</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 entry 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>
        <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:  ChangeSubjectName                        |
+-------+-----------------------------------------------------------+
]]></artwork>
        <section anchor="iana-c509-pubkey">
          <name>Media Type application/c509-pubkey+cbor</name>
          <t>When the <tt>application/c509-pubkey+cbor</tt> media type is used, the payload is a <tt>C509PublicKey</tt> structure.</t>
          <t>Type name: application</t>
          <t>Subtype name: c509-pubkey+cbor</t>
          <t>Required parameters: N/A</t>
          <t>Optional parameters: N/A</t>
          <t>Encoding considerations: binary</t>
          <t>Security considerations: See the Security Considerations section of [[this document]].</t>
          <t>Interoperability considerations: N/A</t>
          <t>Published specification: [[this document]]</t>
          <t>Applications that use this media type: Applications that employ C509 public keys.</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): TBD2</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 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 the Security Considerations section of [[this document]].</t>
          <t>Interoperability considerations: N/A</t>
          <t>Published specification: [[this document]]</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</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 entries for "application/c509-pubkey+cbor" 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/         | -       | [[link    | TBD3  | [[this     |
| c509-pubkey+cbor     |         | to x.y]]  |       | document]] |
+----------------------+---------+-----------+-------+------------+
| application/         | -       | [[link    | TBD7  | [[this     |
| c509-kemchall+cbor   |         | to x.y]]  |       | document]] |
+----------------------+---------+-----------+-------+------------+
]]></artwork>
        </figure>
      </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="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="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="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</organization>
            </author>
            <date day="30" month="June" 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-20"/>
        </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="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>
      </references>
    </references>
    <?line 853?>

<section anchor="flows-http">
      <name>Message Flow Diagrams over HTTPS</name>
      <section anchor="flow-crts-http">
        <name>cacerts</name>
        <figure anchor="fig-crts-http">
          <name>HTTP cacerts message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="440" viewBox="0 0 440 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,48 L 24,208" fill="none" stroke="black"/>
                <path d="M 400,48 L 400,208" fill="none" stroke="black"/>
                <path d="M 32,96 L 392,96" fill="none" stroke="black"/>
                <path d="M 32,192 L 392,192" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="400,96 388,90.4 388,101.6" fill="black" transform="rotate(0,392,96)"/>
                <polygon class="arrowhead" points="40,192 28,186.4 28,197.6" fill="black" transform="rotate(180,32,192)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="368" y="36">EST</text>
                  <text x="412" y="36">Server</text>
                  <text x="64" y="68">Method:</text>
                  <text x="112" y="68">GET</text>
                  <text x="64" y="84">Request</text>
                  <text x="128" y="84">target:</text>
                  <text x="276" y="84">/.well-known/est/&lt;p&gt;/cacerts</text>
                  <text x="64" y="132">Status:</text>
                  <text x="112" y="132">200</text>
                  <text x="140" y="132">OK</text>
                  <text x="56" y="148">Media</text>
                  <text x="104" y="148">type:</text>
                  <text x="236" y="148">application/cose-c509+cbor</text>
                  <text x="96" y="180">&lt;Base64-encoded</text>
                  <text x="204" y="180">COSE_C509&gt;</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                                  EST Server
  |                                              |
  | Method: GET                                  |
  | Request target: /.well-known/est/<p>/cacerts |
  |--------------------------------------------->|
  |                                              |
  | Status: 200 OK                               |
  | Media type: application/cose-c509+cbor       |
  |                                              |
  | <Base64-encoded COSE_C509>                   |
  |<---------------------------------------------|
  |                                              |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-crli-http">
        <name>crli</name>
        <figure anchor="fig-crli-http">
          <name>HTTP crli message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="456" viewBox="0 0 456 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,48 L 24,224" fill="none" stroke="black"/>
                <path d="M 408,48 L 408,224" fill="none" stroke="black"/>
                <path d="M 32,112 L 400,112" fill="none" stroke="black"/>
                <path d="M 32,208 L 400,208" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="408,112 396,106.4 396,117.6" fill="black" transform="rotate(0,400,112)"/>
                <polygon class="arrowhead" points="40,208 28,202.4 28,213.6" fill="black" transform="rotate(180,32,208)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="384" y="36">EST</text>
                  <text x="428" y="36">Server</text>
                  <text x="64" y="68">Method:</text>
                  <text x="112" y="68">GET</text>
                  <text x="64" y="84">Request</text>
                  <text x="128" y="84">target:</text>
                  <text x="264" y="84">/.well-known/est/&lt;p&gt;/crli</text>
                  <text x="168" y="100">[?crlnumber=&lt;n&gt;][&amp;crldp=&lt;dp&gt;]</text>
                  <text x="64" y="148">Status:</text>
                  <text x="112" y="148">200</text>
                  <text x="140" y="148">OK</text>
                  <text x="56" y="164">Media</text>
                  <text x="104" y="164">type:</text>
                  <text x="248" y="164">application/c509-crlinfo+cbor</text>
                  <text x="96" y="196">&lt;Base64-encoded</text>
                  <text x="212" y="196">C509CRLInfo&gt;</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                                    EST Server
  |                                               |
  | Method: GET                                   |
  | Request target: /.well-known/est/<p>/crli     |
  |   [?crlnumber=<n>][&crldp=<dp>]               |
  |---------------------------------------------->|
  |                                               |
  | Status: 200 OK                                |
  | Media type: application/c509-crlinfo+cbor     |
  |                                               |
  | <Base64-encoded C509CRLInfo>                  |
  |<----------------------------------------------|
  |                                               |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-crl-http">
        <name>crl</name>
        <figure anchor="fig-crl-http">
          <name>HTTP crl message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="448" viewBox="0 0 448 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,48 L 24,240" fill="none" stroke="black"/>
                <path d="M 408,48 L 408,240" fill="none" stroke="black"/>
                <path d="M 32,128 L 400,128" fill="none" stroke="black"/>
                <path d="M 32,224 L 400,224" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="408,128 396,122.4 396,133.6" fill="black" transform="rotate(0,400,128)"/>
                <polygon class="arrowhead" points="40,224 28,218.4 28,229.6" fill="black" transform="rotate(180,32,224)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="376" y="36">EST</text>
                  <text x="420" y="36">Server</text>
                  <text x="64" y="68">Method:</text>
                  <text x="112" y="68">GET</text>
                  <text x="64" y="84">Request</text>
                  <text x="128" y="84">target:</text>
                  <text x="260" y="84">/.well-known/est/&lt;p&gt;/crl</text>
                  <text x="168" y="100">[?crlnumber=&lt;n&gt;][&amp;crldp=&lt;dp&gt;]</text>
                  <text x="72" y="164">Status:</text>
                  <text x="120" y="164">200</text>
                  <text x="148" y="164">OK</text>
                  <text x="64" y="180">Media</text>
                  <text x="112" y="180">type:</text>
                  <text x="240" y="180">application/c509-crl+cbor</text>
                  <text x="104" y="212">&lt;Base64-encoded</text>
                  <text x="204" y="212">C509CRL&gt;</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                                   EST Server
  |                                               |
  | Method: GET                                   |
  | Request target: /.well-known/est/<p>/crl      |
  |   [?crlnumber=<n>][&crldp=<dp>]               |
  |                                               |
  |---------------------------------------------->|
  |                                               |
  |  Status: 200 OK                               |
  |  Media type: application/c509-crl+cbor        |
  |                                               |
  |  <Base64-encoded C509CRL>                     |
  |<----------------------------------------------|
  |                                               |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-kemc-http">
        <name>kemc</name>
        <figure anchor="fig-kemc-http">
          <name>HTTP kemc message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="432" viewBox="0 0 432 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,304" fill="none" stroke="black"/>
                <path d="M 392,48 L 392,304" fill="none" stroke="black"/>
                <path d="M 16,176 L 384,176" fill="none" stroke="black"/>
                <path d="M 16,288 L 384,288" fill="none" stroke="black"/>
                <path d="M 304,128 L 312,112" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="392,176 380,170.4 380,181.6" fill="black" transform="rotate(0,384,176)"/>
                <polygon class="arrowhead" points="24,288 12,282.4 12,293.6" fill="black" transform="rotate(180,16,288)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="360" y="36">EST</text>
                  <text x="404" y="36">Server</text>
                  <text x="36" y="68">[TLS</text>
                  <text x="84" y="68">client</text>
                  <text x="164" y="68">certificate]</text>
                  <text x="48" y="100">Method:</text>
                  <text x="100" y="100">POST</text>
                  <text x="48" y="116">Request</text>
                  <text x="112" y="116">target:</text>
                  <text x="228" y="116">/.well-known/est/&lt;p&gt;</text>
                  <text x="332" y="116">kemc</text>
                  <text x="40" y="132">Media</text>
                  <text x="88" y="132">type:</text>
                  <text x="208" y="132">application/c509-pubkey</text>
                  <text x="324" y="132">cbor</text>
                  <text x="80" y="164">&lt;Base64-encoded</text>
                  <text x="204" y="164">C509PublicKey&gt;</text>
                  <text x="48" y="228">Status:</text>
                  <text x="96" y="228">200</text>
                  <text x="124" y="228">OK</text>
                  <text x="40" y="244">Media</text>
                  <text x="88" y="244">type:</text>
                  <text x="236" y="244">application/c509-kemchall+cbor</text>
                  <text x="80" y="276">&lt;Base64-encoded</text>
                  <text x="200" y="276">C509KemChall&gt;</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                                 EST Server
|                                               |
| [TLS client certificate]                      |
|                                               |
| Method: POST                                  |
| Request target: /.well-known/est/<p>/kemc     |
| Media type: application/c509-pubkey+cbor      |
|                                               |
| <Base64-encoded C509PublicKey>                |
|---------------------------------------------->|
|                                               |
|                                               |
| Status: 200 OK                                |
| Media type: application/c509-kemchall+cbor    |
|                                               |
| <Base64-encoded C509KemChall>                 |
|<----------------------------------------------|
|                                               |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-sen-htt">
        <name>simpleenroll</name>
        <figure anchor="fig-sen-http">
          <name>HTTP simpleenroll message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="512" viewBox="0 0 512 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,48 L 24,320" fill="none" stroke="black"/>
                <path d="M 408,48 L 408,320" fill="none" stroke="black"/>
                <path d="M 32,192 L 400,192" fill="none" stroke="black"/>
                <path d="M 32,304 L 400,304" fill="none" stroke="black"/>
                <path d="M 168,128 L 176,112" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="408,192 396,186.4 396,197.6" fill="black" transform="rotate(0,400,192)"/>
                <polygon class="arrowhead" points="40,304 28,298.4 28,309.6" fill="black" transform="rotate(180,32,304)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="360" y="36">EST</text>
                  <text x="404" y="36">Server</text>
                  <text x="52" y="68">[TLS</text>
                  <text x="100" y="68">client</text>
                  <text x="180" y="68">certificate]</text>
                  <text x="64" y="100">Method:</text>
                  <text x="116" y="100">POST</text>
                  <text x="64" y="116">Request</text>
                  <text x="128" y="116">target:</text>
                  <text x="168" y="116">/</text>
                  <text x="252" y="116">well-known/est/&lt;p&gt;</text>
                  <text x="220" y="132">simpleenroll</text>
                  <text x="56" y="148">Media</text>
                  <text x="104" y="148">type:</text>
                  <text x="264" y="148">application/cose-c509-pkcs10+cbor</text>
                  <text x="96" y="180">&lt;Base64-encoded</text>
                  <text x="264" y="180">C509CertificationRequest&gt;</text>
                  <text x="444" y="196">Verify</text>
                  <text x="492" y="196">PoP,</text>
                  <text x="440" y="212">Issue</text>
                  <text x="484" y="212">C509</text>
                  <text x="436" y="228">cert</text>
                  <text x="64" y="244">Status:</text>
                  <text x="112" y="244">200</text>
                  <text x="140" y="244">OK</text>
                  <text x="56" y="260">Media</text>
                  <text x="104" y="260">type:</text>
                  <text x="256" y="260">application/cose-c509-cert+cbor</text>
                  <text x="96" y="292">&lt;Base64-encoded</text>
                  <text x="228" y="292">C509Certificate&gt;</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                                 EST Server
  |                                               |
  | [TLS client certificate]                      |
  |                                               |
  | Method: POST                                  |
  | Request target: /.well-known/est/<p>          |
  |                 /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>
          </artset>
        </figure>
      </section>
      <section anchor="flow-sren-htt">
        <name>simplereenroll</name>
        <figure anchor="fig-sren-http">
          <name>HTTP simplereenroll message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="496" viewBox="0 0 496 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,320" fill="none" stroke="black"/>
                <path d="M 392,48 L 392,320" fill="none" stroke="black"/>
                <path d="M 16,192 L 384,192" fill="none" stroke="black"/>
                <path d="M 16,304 L 384,304" fill="none" stroke="black"/>
                <path d="M 152,128 L 160,112" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="392,192 380,186.4 380,197.6" fill="black" transform="rotate(0,384,192)"/>
                <polygon class="arrowhead" points="24,304 12,298.4 12,309.6" fill="black" transform="rotate(180,16,304)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="360" y="36">EST</text>
                  <text x="404" y="36">Server</text>
                  <text x="36" y="68">[TLS</text>
                  <text x="84" y="68">client</text>
                  <text x="164" y="68">certificate]</text>
                  <text x="48" y="100">Method:</text>
                  <text x="100" y="100">POST</text>
                  <text x="48" y="116">Request</text>
                  <text x="112" y="116">target:</text>
                  <text x="152" y="116">/</text>
                  <text x="236" y="116">well-known/est/&lt;p&gt;</text>
                  <text x="212" y="132">simplereenroll</text>
                  <text x="40" y="148">Media</text>
                  <text x="88" y="148">type:</text>
                  <text x="248" y="148">application/cose-c509-pkcs10+cbor</text>
                  <text x="80" y="180">&lt;Base64-encoded</text>
                  <text x="248" y="180">C509CertificationRequest&gt;</text>
                  <text x="428" y="196">Verify</text>
                  <text x="476" y="196">PoP,</text>
                  <text x="424" y="212">Issue</text>
                  <text x="468" y="212">C509</text>
                  <text x="420" y="228">cert</text>
                  <text x="48" y="244">Status:</text>
                  <text x="96" y="244">200</text>
                  <text x="124" y="244">OK</text>
                  <text x="40" y="260">Media</text>
                  <text x="88" y="260">type:</text>
                  <text x="240" y="260">application/cose-c509-cert+cbor</text>
                  <text x="80" y="292">&lt;Base64-encoded</text>
                  <text x="212" y="292">C509Certificate&gt;</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                                 EST Server
|                                               |
| [TLS client certificate]                      |
|                                               |
| Method: POST                                  |
| Request target: /.well-known/est/<p>          |
|                 /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>
          </artset>
        </figure>
      </section>
      <section anchor="flow-skc-http">
        <name>serverkeygen</name>
        <figure anchor="fig-skc-http">
          <name>HTTP serverkeygen message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="544" viewBox="0 0 544 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,48 L 24,352" fill="none" stroke="black"/>
                <path d="M 408,48 L 408,352" fill="none" stroke="black"/>
                <path d="M 32,192 L 400,192" fill="none" stroke="black"/>
                <path d="M 32,320 L 400,320" fill="none" stroke="black"/>
                <path d="M 168,128 L 176,112" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="408,192 396,186.4 396,197.6" fill="black" transform="rotate(0,400,192)"/>
                <polygon class="arrowhead" points="40,320 28,314.4 28,325.6" fill="black" transform="rotate(180,32,320)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="368" y="36">EST</text>
                  <text x="412" y="36">Server</text>
                  <text x="52" y="68">[TLS</text>
                  <text x="100" y="68">client</text>
                  <text x="180" y="68">certificate]</text>
                  <text x="64" y="100">Method:</text>
                  <text x="116" y="100">POST</text>
                  <text x="64" y="116">Request</text>
                  <text x="128" y="116">target:</text>
                  <text x="168" y="116">/</text>
                  <text x="252" y="116">well-known/est/&lt;p&gt;</text>
                  <text x="220" y="132">serverkeygen</text>
                  <text x="56" y="148">Media</text>
                  <text x="104" y="148">type:</text>
                  <text x="264" y="148">application/cose-c509-pkcs10+cbor</text>
                  <text x="56" y="180">&lt;CBOR</text>
                  <text x="100" y="180">C509</text>
                  <text x="136" y="180">CSR</text>
                  <text x="168" y="180">(no</text>
                  <text x="220" y="180">pubkey)&gt;</text>
                  <text x="452" y="212">Generate</text>
                  <text x="452" y="228">keypair,</text>
                  <text x="440" y="244">Issue</text>
                  <text x="484" y="244">C509</text>
                  <text x="64" y="260">Status:</text>
                  <text x="112" y="260">200</text>
                  <text x="140" y="260">OK</text>
                  <text x="440" y="260">cert,</text>
                  <text x="492" y="260">Delete</text>
                  <text x="56" y="276">Media</text>
                  <text x="104" y="276">type:</text>
                  <text x="252" y="276">application/cose-c509-pem+cbor</text>
                  <text x="432" y="276">key</text>
                  <text x="468" y="276">from</text>
                  <text x="516" y="276">server</text>
                  <text x="96" y="308">&lt;Base64-encoded</text>
                  <text x="196" y="308">C509PEM&gt;</text>
                  <text x="52" y="340">(key</text>
                  <text x="84" y="340">no</text>
                  <text x="124" y="340">longer</text>
                  <text x="164" y="340">on</text>
                  <text x="192" y="340">EST</text>
                  <text x="240" y="340">server)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                                  EST Server
  |                                               |
  | [TLS client certificate]                      |
  |                                               |
  | Method: POST                                  |
  | Request target: /.well-known/est/<p>          |
  |                 /serverkeygen                 |
  | Media type: application/cose-c509-pkcs10+cbor |
  |                                               |
  | <CBOR C509 CSR (no pubkey)>                   |
  |---------------------------------------------->|
  |                                               | 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>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="flows-coap">
      <name>Message Flow Diagrams over CoAP/DTLS</name>
      <section anchor="flow-crts-coap">
        <name>crts</name>
        <figure anchor="fig-crts-coap">
          <name>CoAP crts message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="48" width="32" viewBox="0 0 32 48" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <g class="text">
                  <text x="16" y="36">TBD</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
TBD
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-crli-coap">
        <name>crli</name>
        <figure anchor="fig-crli-coap">
          <name>CoAP crli message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="48" width="32" viewBox="0 0 32 48" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <g class="text">
                  <text x="16" y="36">TBD</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
TBD
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-crl-coap">
        <name>crl</name>
        <figure anchor="fig-crl-coap">
          <name>CoAP crl message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="48" width="32" viewBox="0 0 32 48" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <g class="text">
                  <text x="16" y="36">TBD</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
TBD
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-kemc-coap">
        <name>kemc</name>
        <figure anchor="fig-kemc-coap">
          <name>CoAP kemc message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="48" width="32" viewBox="0 0 32 48" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <g class="text">
                  <text x="16" y="36">TBD</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
TBD
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-sen-coap">
        <name>sen</name>
        <figure anchor="fig-sen-coap">
          <name>CoAP sen message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="48" width="32" viewBox="0 0 32 48" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <g class="text">
                  <text x="16" y="36">TBD</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
TBD
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-sren-coap">
        <name>sren</name>
        <figure anchor="fig-sren-coap">
          <name>CoAP sren message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="48" width="32" viewBox="0 0 32 48" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <g class="text">
                  <text x="16" y="36">TBD</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
TBD
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-skc-coap">
        <name>skc</name>
        <figure anchor="fig-skc-coap">
          <name>CoAP skc message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="48" width="32" viewBox="0 0 32 48" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <g class="text">
                  <text x="16" y="36">TBD</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
TBD
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors thank xxx for reviewing and commenting on intermediate versions of the 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-01">
        <name>Since draft-liao-ace-est-c509-01</name>
        <ul spacing="normal">
          <li>
            <t>Add EST of C509 certificate over secure CoAP (updates <xref target="RFC9148"/>).</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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
PMwAAA==

-->

</rfc>
