<?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.36 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-liao-lamps-est-lightweight-operations-01" category="std" consensus="true" submissionType="IETF" updates="7030" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="EST Lightweight Operations">EST Lightweight Operations</title>
    <seriesInfo name="Internet-Draft" value="draft-liao-lamps-est-lightweight-operations-01"/>
    <author initials="L." surname="Liao" fullname="Lijun Liao">
      <organization>NIO</organization>
      <address>
        <email>lijun.liao@nio.io</email>
      </address>
    </author>
    <date year="2026" month="May" day="04"/>
    <abstract>
      <?line 43?>

<t>This document defines eight new operations for the Enrollment over Secure Transport (EST) protocol specified in RFC 7030: <tt>ucacaps</tt>, <tt>ucacert</tt>, <tt>ucacerts</tt>, <tt>ucrlinfo</tt>, <tt>ucrl</tt>, <tt>usimpleenroll</tt>, <tt>usimplereenroll</tt>, and <tt>userverkeygen</tt>.  These operations deliver PKI objects, including CA certificates, certificate chains, CRLs, and enrolled certificates, as Base64-encoded DER or PEM, without the CMS encapsulation used by the corresponding EST operations in RFC 7030.  The <tt>ucacaps</tt> operation enables EST clients to discover which operations the EST server supports.  Eliminating the CMS wrapper for these responses reduces code size and parsing complexity.</t>
      <t>This document updates RFC 7030.</t>
    </abstract>
  </front>
  <middle>
    <?line 49?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Enrollment over Secure Transport (EST) <xref target="RFC7030"/> defines a set of HTTPS-based operations for certificate enrollment and management.  An EST server sits between a Certification Authority (CA) and an EST client and performs Registration Authority (RA) functions, as described in <xref section="1" sectionFormat="comma" target="RFC7030"/>.  <xref target="RFC8951"/> updates RFC 7030 to clarify EST transfer-encoding behavior and ASN.1 details.  <xref target="RFC9908"/> further updates RFC 7030 and RFC 9148 to clarify and enhance the <tt>csrattrs</tt> definition.</t>
      <t>The responses to the standard EST operations (<tt>cacerts</tt>, <tt>simpleenroll</tt>, <tt>simplereenroll</tt>, and <tt>serverkeygen</tt>) are encapsulated in Cryptographic Message Syntax (CMS) structures <xref target="RFC5652"/>, specifically using the <tt>application/pkcs7-mime; smime-type=certs-only</tt> content type.  While CMS provides a well-established container format, parsing it requires code that may be unnecessary or unavailable in some EST deployments <xref target="RFC7228"/>.</t>
      <t>EST-coaps <xref target="RFC9148"/> addresses EST over CoAP and DTLS by defining shorter resource paths, using CoAP Block-Wise Transfer for fragmentation, and allowing binary ASN.1 payloads.  It also defines Content-Format 287 (<tt>application/pkix-cert</tt>) as a non-CMS single-certificate response format that can be selected using CoAP content negotiation.  However, RFC 9148 primarily specifies EST semantics for CoAP-based networks and does not define the HTTPS operations or the CRL metadata and retrieval operations defined in this document.  The relationship with RFC 9148 is discussed in <xref target="rfc9148-comparison"/>.</t>
      <t>This document also addresses two functional gaps.  First, <xref target="RFC7030"/> provides no capability-discovery operation for these new operations, so an EST client would otherwise need to rely on out-of-band configuration or probing.  The <tt>ucacaps</tt> operation enables the client to discover server support explicitly.  Second, <xref target="RFC7030"/> does not define in-band CRL metadata or retrieval operations; revocation information is normally obtained from CRL Distribution Point (CDP) URIs carried in certificates.  The <tt>ucrlinfo</tt> operation supports lightweight freshness checks, and the <tt>ucrl</tt> operation provides an EST-based retrieval path when the full CRL is needed.</t>
      <t>This document adds eight new operations to <xref section="4" sectionFormat="comma" target="RFC7030"/> (Protocol Exchange Details), as summarized in <xref target="tab-ops-overview"/>:</t>
      <table anchor="tab-ops-overview">
        <name>New Operations Defined in This Document</name>
        <thead>
          <tr>
            <th align="left">New Operation</th>
            <th align="left">Based on RFC 7030 Operation</th>
            <th align="left">Auth</th>
            <th align="left">Response Format</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>ucacaps</tt></td>
            <td align="left">
              <em>(new)</em></td>
            <td align="left">No</td>
            <td align="left">
              <tt>text/plain</tt> keyword list</td>
          </tr>
          <tr>
            <td align="left">
              <tt>ucacert</tt></td>
            <td align="left">
              <em>(new)</em></td>
            <td align="left">No</td>
            <td align="left">
              <tt>application/pkix-cert</tt> (single CA cert)</td>
          </tr>
          <tr>
            <td align="left">
              <tt>ucacerts</tt></td>
            <td align="left">
              <tt>cacerts</tt> (<xref section="4.1" sectionFormat="comma" target="RFC7030"/>)</td>
            <td align="left">No</td>
            <td align="left">
              <tt>application/pem-certificate-chain</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>ucrlinfo</tt></td>
            <td align="left">
              <em>(new)</em></td>
            <td align="left">No</td>
            <td align="left">
              <tt>text/plain</tt> (CRL metadata)</td>
          </tr>
          <tr>
            <td align="left">
              <tt>ucrl</tt></td>
            <td align="left">
              <em>(new)</em></td>
            <td align="left">No</td>
            <td align="left">
              <tt>application/pkix-crl</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>usimpleenroll</tt></td>
            <td align="left">
              <tt>simpleenroll</tt> (<xref section="4.2.1" sectionFormat="comma" target="RFC7030"/>)</td>
            <td align="left">Yes</td>
            <td align="left">
              <tt>application/pkix-cert</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>usimplereenroll</tt></td>
            <td align="left">
              <tt>simplereenroll</tt> (<xref section="4.2.2" sectionFormat="comma" target="RFC7030"/>)</td>
            <td align="left">Yes</td>
            <td align="left">
              <tt>application/pkix-cert</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>userverkeygen</tt></td>
            <td align="left">
              <tt>serverkeygen</tt> (<xref section="4.4" sectionFormat="comma" target="RFC7030"/>)</td>
            <td align="left">Yes</td>
            <td align="left">
              <tt>application/x-pem-file</tt> (key + cert)</td>
          </tr>
        </tbody>
      </table>
      <t>These eight operations fall into four categories: capability discovery (<tt>ucacaps</tt>), CA certificate retrieval (<tt>ucacert</tt>, <tt>ucacerts</tt>), CRL metadata and retrieval (<tt>ucrlinfo</tt>, <tt>ucrl</tt>), and certificate enrollment and server-side key generation (<tt>usimpleenroll</tt>, <tt>usimplereenroll</tt>, <tt>userverkeygen</tt>).</t>
      <t>The "u" prefix is used consistently across all eight new operations.  For the six operations whose responses carry DER or PEM payloads (<tt>ucacert</tt>, <tt>ucacerts</tt>, <tt>ucrl</tt>, <tt>usimpleenroll</tt>, <tt>usimplereenroll</tt>, <tt>userverkeygen</tt>), it denotes "unencapsulated": their responses carry DER or PEM payloads without a CMS wrapper.  For <tt>ucacaps</tt> (capability discovery) and <tt>ucrlinfo</tt> (CRL metadata), there is no CMS equivalent; the "u" prefix is used solely to maintain a consistent naming convention with the other operations in this document.</t>
      <t>All security requirements imposed by <xref target="RFC7030"/> on the corresponding RFC 7030 operations (<tt>cacerts</tt>, <tt>simpleenroll</tt>, <tt>simplereenroll</tt>, <tt>serverkeygen</tt>) apply equally to the corresponding operations defined in this document.  Refer to <xref target="security"/> for security considerations specific to these new operations.</t>
    </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 from <xref target="RFC7030"/> 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 X.509 certificates <xref target="RFC5280"/>.</t>
        </dd>
        <dt>CSR:</dt>
        <dd>
          <t>Certificate Signing Request.  A PKCS#10 <xref target="RFC2986"/> message used by an EST client to request certificate issuance.</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 CSR, as described in <xref section="3.4" sectionFormat="comma" target="RFC7030"/>.</t>
        </dd>
      </dl>
    </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"/>.  Retrieval operations (<tt>ucacaps</tt>, <tt>ucacert</tt>, <tt>ucacerts</tt>, <tt>ucrlinfo</tt>, <tt>ucrl</tt>) use HTTP GET:</t>
      <artwork><![CDATA[
GET /.well-known/est/<operation>
GET /.well-known/est/<label>/<operation>
]]></artwork>
      <t>Enrollment operations (<tt>usimpleenroll</tt>, <tt>usimplereenroll</tt>, <tt>userverkeygen</tt>) use HTTP POST:</t>
      <artwork><![CDATA[
POST /.well-known/est/<operation>
POST /.well-known/est/<label>/<operation>
]]></artwork>
      <t>An EST server <bcp14>MUST</bcp14> return HTTP 405 (Method Not Allowed) if a client uses POST for a retrieval operation or GET for an enrollment operation.</t>
      <t>In the URI templates above, <tt>&lt;operation&gt;</tt> is one of: <tt>ucacaps</tt>, <tt>ucacert</tt>, <tt>ucacerts</tt>, <tt>ucrlinfo</tt>, <tt>ucrl</tt>, <tt>usimpleenroll</tt>, <tt>usimplereenroll</tt>, or <tt>userverkeygen</tt>.</t>
      <t>The optional <tt>&lt;label&gt;</tt> path segment follows <xref section="3.2.2" sectionFormat="comma" target="RFC7030"/>: an EST server <bcp14>MAY</bcp14> use an additional path segment before the operation name to distinguish services for multiple CAs or certificate profiles.  The <tt>&lt;label&gt;</tt> <bcp14>MUST NOT</bcp14> be the same as any defined operation name.  The internal structure and interpretation of <tt>&lt;label&gt;</tt> are outside the scope of this document; for example, it may be a single opaque token that identifies a CA and certificate profile, or a slash-separated pair of the form <tt>&lt;ca-name&gt;/&lt;cert-profile&gt;</tt>.</t>
      <section anchor="cte">
        <name>Base64 Transfer</name>
        <t><xref target="RFC8951"/> deprecates use of <tt>Content-Transfer-Encoding</tt> for EST.  The new operations defined in this document follow that guidance.</t>
        <t>For operations that return DER payloads (<tt>application/pkix-cert</tt>, <tt>application/pkix-crl</tt>), the response body <bcp14>MUST</bcp14> be the Base64 encoding defined in <xref target="RFC4648"/> of the DER object.  Servers <bcp14>MUST NOT</bcp14> include a <tt>Content-Transfer-Encoding</tt> header.</t>
        <t>For POST operations that submit a PKCS#10 CSR, the request body <bcp14>MUST</bcp14> be the Base64 encoding defined in <xref target="RFC4648"/> of the DER-encoded PKCS#10 object.  Clients and servers implementing this document <bcp14>MUST NOT</bcp14> require or generate a <tt>Content-Transfer-Encoding</tt> header for these operations.</t>
        <t>The <tt>ucacaps</tt>, <tt>ucrlinfo</tt>, <tt>ucacerts</tt>, and <tt>userverkeygen</tt> operations already return textual payloads and therefore do not require any additional transfer-encoding mechanism.</t>
        <t>The <tt>ucacert</tt>, <tt>ucacerts</tt>, and <tt>ucrl</tt> retrieval operations support HTTP caching.  EST servers <bcp14>SHOULD</bcp14> provide caching metadata on successful authoritative responses so that clients and HTTP intermediaries can reuse them.  EST clients <bcp14>SHOULD</bcp14> cache authoritative responses locally and refresh them according to the advertised freshness information.  Authoritative responses for these operations <bcp14>MUST NOT</bcp14> include <tt>Pragma: no-cache</tt>, <tt>Cache-Control: no-cache</tt>, or <tt>Cache-Control: no-store</tt>.</t>
      </section>
    </section>
    <section anchor="ucacaps-section">
      <name>EST Server Capability Discovery</name>
      <t>EST <xref target="RFC7030"/> does not provide a mechanism for EST clients to discover which operations an EST server supports before invoking them.  This section defines the <tt>ucacaps</tt> operation for that purpose.</t>
      <t>EST clients <bcp14>SHOULD</bcp14> issue a <tt>ucacaps</tt> request before using any of the other operations defined in this document, to confirm that the EST server supports the intended operation.</t>
      <section anchor="ucacaps">
        <name>ucacaps</name>
        <section anchor="ucacaps-request">
          <name>Request</name>
          <t>The EST client requests the server's capability list using the HTTP GET method.  No request body is sent.  The EST server <bcp14>SHOULD NOT</bcp14> require client authentication for this operation, consistent with <xref section="4.1.2" sectionFormat="comma" target="RFC7030"/>.</t>
          <artwork><![CDATA[
GET /.well-known/est/<label>/ucacaps
]]></artwork>
        </section>
        <section anchor="ucacaps-response">
          <name>Response</name>
          <t>On success, the EST server returns HTTP status 200 with:</t>
          <ul spacing="normal">
            <li>
              <t>Content-Type: <tt>text/plain</tt></t>
            </li>
            <li>
              <t>Body: A plain-text list of capability keywords, one keyword per line.  Lines <bcp14>MUST</bcp14> be terminated by <tt>&lt;CR&gt;&lt;LF&gt;</tt> or <tt>&lt;LF&gt;</tt>.  Keywords are unquoted and case-insensitive; EST clients <bcp14>MUST</bcp14> match them in a case-insensitive manner.</t>
            </li>
          </ul>
          <t>The EST server <bcp14>SHOULD</bcp14> use the canonical lowercase form defined in <xref target="ucacaps-keywords"/>.  The EST server <bcp14>MAY</bcp14> advertise additional, implementation-specific keywords not defined in this document.  EST clients <bcp14>MUST</bcp14> ignore any unknown keywords.</t>
          <t>If the EST server supports none of the capabilities listed in <xref target="ucacaps-keywords"/>, it <bcp14>SHOULD</bcp14> return an empty body.  An EST client that receives an empty body <bcp14>SHOULD</bcp14> interpret the response as if none of the capabilities are supported.  An EST client that receives an HTTP error response to a <tt>ucacaps</tt> request <bcp14>SHOULD</bcp14> assume that only the operations defined in <xref target="RFC7030"/> are supported and <bcp14>MUST NOT</bcp14> attempt the operations defined in this document.</t>
        </section>
        <section anchor="ucacaps-format-rationale">
          <name>Choice of Capability-List Format</name>
          <t>The <tt>ucacaps</tt> response uses <tt>text/plain</tt> rather than JSON or CBOR because the information being conveyed is intentionally limited to an unordered set of capability keywords.  A line-oriented keyword list can be parsed with minimal code, can be inspected manually, and does not require a JSON, CBOR, or CMS parser.  This is consistent with the purpose of this document: reducing parsing requirements in EST deployments that do not implement CMS.</t>
          <t>JSON and CBOR are both suitable formats when a protocol needs structured values, nested data, typed fields, or extensible objects.  The <tt>ucacaps</tt> response does not require those properties.  Each advertised capability is a single token, unknown tokens are ignored, and absence of a token has a simple meaning.  Adding a structured encoding for this operation would therefore increase implementation requirements without adding protocol semantics.</t>
          <t>Future specifications that need to advertise parameters associated with a capability, such as algorithm lists, profile identifiers, size limits, or transport-specific options, can define additional capability keywords or a separate structured discovery operation.  Such an extension would be preferable to overloading the simple <tt>ucacaps</tt> keyword list with structured data.</t>
        </section>
        <section anchor="ucacaps-keywords">
          <name>Capability Keywords</name>
          <t>The following keywords are defined.  An EST server <bcp14>MUST</bcp14> include a keyword in the <tt>ucacaps</tt> response if and only if it supports the corresponding operation.</t>
          <t>RFC 7030 operations (see also <xref target="tab-ucacaps-rfc7030"/>):</t>
          <table anchor="tab-ucacaps-rfc7030">
            <name>ucacaps Keywords for RFC 7030 Operations</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 cacerts (<xref section="4.1" sectionFormat="comma" target="RFC7030"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>simpleenroll</tt></td>
                <td align="left">EST server supports simpleenroll (<xref section="4.2.1" sectionFormat="comma" target="RFC7030"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>simplereenroll</tt></td>
                <td align="left">EST server supports simplereenroll (<xref section="4.2.2" sectionFormat="comma" target="RFC7030"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>fullcmc</tt></td>
                <td align="left">EST server supports fullcmc (<xref section="4.3" sectionFormat="comma" target="RFC7030"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>serverkeygen</tt></td>
                <td align="left">EST server supports serverkeygen (<xref section="4.4" sectionFormat="comma" target="RFC7030"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>csrattrs</tt></td>
                <td align="left">EST server supports csrattrs (<xref section="4.5" sectionFormat="comma" target="RFC7030"/>, as updated by <xref target="RFC9908"/>)</td>
              </tr>
            </tbody>
          </table>
          <t>RFC 8295 operations (see also <xref target="tab-ucacaps-rfc8295"/>):</t>
          <table anchor="tab-ucacaps-rfc8295">
            <name>ucacaps Keywords for RFC 8295 Operations</name>
            <thead>
              <tr>
                <th align="left">Keyword</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>pal</tt></td>
                <td align="left">EST server supports pal (<xref section="2" sectionFormat="comma" target="RFC8295"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>eecerts</tt></td>
                <td align="left">EST server supports eecerts (<xref section="3" sectionFormat="comma" target="RFC8295"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>crls</tt></td>
                <td align="left">EST server supports crls (<xref section="4" sectionFormat="comma" target="RFC8295"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>symmetrickeys</tt></td>
                <td align="left">EST server supports symmetrickeys (<xref section="5.1" sectionFormat="comma" target="RFC8295"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>symmetrickeys/return</tt></td>
                <td align="left">EST server supports symmetrickeys/return (<xref section="5.2" sectionFormat="comma" target="RFC8295"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>firmware</tt></td>
                <td align="left">EST server supports firmware (<xref section="6.1" sectionFormat="comma" target="RFC8295"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>firmware/return</tt></td>
                <td align="left">EST server supports firmware/return (<xref section="6.2" sectionFormat="comma" target="RFC8295"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>tamp</tt></td>
                <td align="left">EST server supports tamp (<xref section="7.1" sectionFormat="comma" target="RFC8295"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>tamp/return</tt></td>
                <td align="left">EST server supports tamp/return (<xref section="7.2" sectionFormat="comma" target="RFC8295"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>serverkeygen/return</tt></td>
                <td align="left">EST server supports serverkeygen/return (<xref section="8.2" sectionFormat="comma" target="RFC8295"/>)</td>
              </tr>
            </tbody>
          </table>
          <t>Operations defined in this document (see also <xref target="tab-ucacaps-new"/>):</t>
          <table anchor="tab-ucacaps-new">
            <name>ucacaps 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>ucacert</tt></td>
                <td align="left">EST server supports ucacert (<xref target="ucacert"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ucacerts</tt></td>
                <td align="left">EST server supports ucacerts (<xref target="ucacerts"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ucrlinfo</tt></td>
                <td align="left">EST server supports ucrlinfo (<xref target="ucrlinfo"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ucrl</tt></td>
                <td align="left">EST server supports ucrl (<xref target="ucrl"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>usimpleenroll</tt></td>
                <td align="left">EST server supports usimpleenroll (<xref target="usimpleenroll"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>usimplereenroll</tt></td>
                <td align="left">EST server supports usimplereenroll (<xref target="usimplereenroll"/>)</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>userverkeygen</tt></td>
                <td align="left">EST server supports userverkeygen (<xref target="userverkeygen"/>)</td>
              </tr>
            </tbody>
          </table>
          <t>Capability keywords are case-insensitive; the canonical (registered) form is lowercase as shown in the tables above.  An EST server <bcp14>SHOULD</bcp14> use the canonical lowercase form.  An EST client <bcp14>MUST</bcp14> accept keywords in any case and <bcp14>MUST</bcp14> ignore unknown keywords.</t>
          <t>Note: <xref target="RFC7030"/> designates <tt>cacerts</tt>, <tt>simpleenroll</tt>, and <tt>simplereenroll</tt> as <bcp14>MUST</bcp14>-implement operations.  An EST server implementing this document <bcp14>SHOULD</bcp14> include these three keywords in every <tt>ucacaps</tt> response so that a client can enumerate all capabilities from a single request.</t>
          <t>Example response:</t>
          <artwork><![CDATA[
cacerts
simpleenroll
simplereenroll
serverkeygen
crls
ucacert
ucacerts
ucrlinfo
ucrl
usimpleenroll
usimplereenroll
userverkeygen
]]></artwork>
          <t>This response indicates that the EST server supports the three mandatory RFC 7030 operations, <tt>serverkeygen</tt>, the RFC 8295 <tt>crls</tt> operation, and all operations defined in this document.</t>
        </section>
      </section>
    </section>
    <section anchor="ca-certificates">
      <name>Distribution of CA Certificates</name>
      <t>This section defines two operations that provide EST clients with CA certificate material.  <tt>ucacert</tt> is a new operation with no RFC 7030 equivalent.  <tt>ucacerts</tt> is an alternative encoding of the <tt>cacerts</tt> operation (<xref section="4.1" sectionFormat="comma" target="RFC7030"/>), returning the chain as a PEM-encoded certificate chain (<tt>application/pem-certificate-chain</tt> <xref target="RFC8555"/>) without a CMS wrapper.</t>
      <section anchor="ucacert">
        <name>ucacert</name>
        <t>The <tt>ucacert</tt> operation returns the issuing CA certificate for the requested EST service as a single DER-encoded X.509 certificate.  This differs from <tt>cacerts</tt> in two important ways: (1) only the issuing CA certificate is returned, not the full certificate chain; and (2) the certificate is returned without a CMS wrapper.</t>
        <section anchor="ucacert-request">
          <name>Request</name>
          <t>The EST client requests the CA certificate using the HTTP GET method.  No request body is sent.  The EST server <bcp14>SHOULD NOT</bcp14> require client authentication for this operation, consistent with <xref section="4.1.2" sectionFormat="comma" target="RFC7030"/>.</t>
          <artwork><![CDATA[
GET /.well-known/est/<label>/ucacert
]]></artwork>
        </section>
        <section anchor="ucacert-response">
          <name>Response</name>
          <t>On success, the EST server returns HTTP status 200 with:</t>
          <ul spacing="normal">
            <li>
              <t>Content-Type: <tt>application/pkix-cert</tt></t>
            </li>
            <li>
              <t>Body: The Base64 encoding of the DER-encoded X.509 certificate <xref target="RFC5280"/> of the issuing CA.</t>
            </li>
          </ul>
          <t>The returned certificate is the issuing CA certificate for the requested EST service context, as selected by the EST server for the target <tt>&lt;label&gt;</tt> (if any).  The response contains exactly one certificate.</t>
          <t>Successful <tt>ucacert</tt> responses <bcp14>SHOULD</bcp14> include HTTP caching metadata.  In particular, EST servers <bcp14>SHOULD</bcp14> include <tt>ETag</tt> and <tt>Last-Modified</tt> headers.  EST servers <bcp14>SHOULD</bcp14> include <tt>Cache-Control</tt> and <tt>Expires</tt> headers when the certificate lifetime or the local CA-certificate replacement policy provides a meaningful freshness bound.</t>
        </section>
        <section anchor="ucacert-vs-cacerts">
          <name>Relationship to cacerts</name>
          <t>The <tt>cacerts</tt> operation (<xref section="4.1" sectionFormat="comma" target="RFC7030"/>) returns the full certificate chain (issuing CA plus any intermediate and root CAs) wrapped in a CMS <tt>certs-only</tt> structure (<tt>application/pkcs7-mime; smime-type=certs-only</tt>).</t>
          <t><tt>ucacert</tt> differs in two respects:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Scope</strong>: <tt>ucacert</tt> returns only the issuing CA certificate; the full chain is not included.  EST clients that need the full chain for path validation should use <tt>ucacerts</tt> (<xref target="ucacerts"/>) or <tt>cacerts</tt> (<xref section="4.1" sectionFormat="comma" target="RFC7030"/>).</t>
            </li>
            <li>
              <t><strong>Format</strong>: The certificate is returned as the Base64 encoding of a single DER-encoded X.509 certificate <xref target="RFC5280"/>, with no CMS wrapper.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="ucacerts">
        <name>ucacerts</name>
        <t>The <tt>ucacerts</tt> operation returns the CA certificate chain for the requested EST service (<xref section="4.1.2" sectionFormat="comma" target="RFC7030"/>) as a PEM-encoded certificate chain (<tt>application/pem-certificate-chain</tt>), without a CMS wrapper.</t>
        <section anchor="ucacerts-request">
          <name>Request</name>
          <t>The EST client requests the CA certificate chain using the HTTP GET method.  No request body is sent.  The EST server <bcp14>SHOULD NOT</bcp14> require client authentication for this operation, consistent with <xref section="4.1.2" sectionFormat="comma" target="RFC7030"/>.</t>
          <artwork><![CDATA[
GET /.well-known/est/<label>/ucacerts
]]></artwork>
        </section>
        <section anchor="ucacerts-response">
          <name>Response</name>
          <t>On success, the EST server returns HTTP status 200 with:</t>
          <ul spacing="normal">
            <li>
              <t>Content-Type: <tt>application/pem-certificate-chain</tt></t>
            </li>
            <li>
              <t>Body: A PEM-encoded certificate chain <xref target="RFC8555"/> containing one or more certificates.  The first certificate is the issuing CA certificate; subsequent certificates are the trust chain up to and including the root CA, each encoded as a <tt>CERTIFICATE</tt> PEM block.</t>
            </li>
          </ul>
          <t>Successful <tt>ucacerts</tt> responses <bcp14>SHOULD</bcp14> include HTTP caching metadata.  In particular, EST servers <bcp14>SHOULD</bcp14> include <tt>ETag</tt> and <tt>Last-Modified</tt> headers.  EST servers <bcp14>SHOULD</bcp14> include <tt>Cache-Control</tt> and <tt>Expires</tt> headers when the chain lifetime or the local CA-certificate replacement policy provides a meaningful freshness bound.</t>
        </section>
        <section anchor="ucacerts-vs-cacerts">
          <name>Comparison to cacerts</name>
          <t>The <tt>cacerts</tt> operation (<xref section="4.1" sectionFormat="comma" target="RFC7030"/>) wraps the certificate chain in a CMS <tt>certs-only</tt> structure.  <tt>ucacerts</tt> delivers the same chain as concatenated PEM blocks that many TLS and PKI libraries can parse directly without a CMS library.</t>
        </section>
      </section>
    </section>
    <section anchor="crl-operations">
      <name>Distribution of Certificate Revocation Lists</name>
      <t>This section defines the <tt>ucrlinfo</tt> and <tt>ucrl</tt> operations.  Neither operation has an equivalent in <xref target="RFC7030"/>.  <xref target="RFC8295"/> defines the <tt>crls</tt> EST extension for distribution of one or more CRLs (and ARLs), but it does not define a lightweight CRL-metadata operation corresponding to <tt>ucrlinfo</tt>.  Revocation status is also commonly obtained via the CRL Distribution Points (CDP) extension in issued certificates.  The <tt>ucrlinfo</tt> operation returns lightweight metadata for the current CRL, including CRL number, validity window, issuer, and SHA-256 fingerprint, without downloading the full CRL body.  The <tt>ucrl</tt> operation provides an in-band retrieval path for that same current CRL when the full object is needed.</t>
      <section anchor="ucrlinfo">
        <name>ucrlinfo</name>
        <t>The <tt>ucrlinfo</tt> operation returns metadata about the current CRL for the target CA without downloading the full CRL body.  This enables an EST client to check whether its locally cached CRL is still current (by comparing <tt>nextupdate</tt>, <tt>crlnumber</tt>, or <tt>sha256sum</tt>) before deciding to issue a <tt>ucrl</tt> request.  Unlike the RFC 8295 <tt>crls</tt> operation, <tt>ucrlinfo</tt> does not describe a set of CRLs; it describes only the current CRL selected by the EST server for the target CA.</t>
        <section anchor="ucrlinfo-request">
          <name>Request</name>
          <t>The EST client requests the CRL metadata using the HTTP GET method.  No request body is sent.  The EST server <bcp14>SHOULD NOT</bcp14> require client authentication for this operation, consistent with <xref section="4.1.2" sectionFormat="comma" target="RFC7030"/>.</t>
          <artwork><![CDATA[
GET /.well-known/est/<label>/ucrlinfo
]]></artwork>
        </section>
        <section anchor="ucrlinfo-response">
          <name>Response</name>
          <t>On success, the EST server returns HTTP status 200 with:</t>
          <ul spacing="normal">
            <li>
              <t>Content-Type: <tt>text/plain</tt></t>
            </li>
            <li>
              <t>Body: A plain-text list of CRL metadata fields, one field per line.  Lines <bcp14>MUST</bcp14> be terminated by <tt>&lt;CR&gt;&lt;LF&gt;</tt> or <tt>&lt;LF&gt;</tt>.  Each line has the form <tt>&lt;name&gt;=&lt;value&gt;</tt>.  Field order is not significant; EST clients <bcp14>MUST</bcp14> accept fields in any order and <bcp14>MUST</bcp14> ignore unknown field names.</t>
            </li>
          </ul>
          <t>Field names are case-insensitive; the canonical (registered) form is lowercase as shown in <xref target="tab-ucrlinfo-fields"/>.  EST servers <bcp14>SHOULD</bcp14> use the canonical lowercase form.  EST clients <bcp14>MUST</bcp14> match field names in a case-insensitive manner.</t>
          <t>The defined fields are listed in <xref target="tab-ucrlinfo-fields"/>.  Date/time values are expressed as Unix time (seconds since 1970-01-01T00:00:00Z).</t>
          <table anchor="tab-ucrlinfo-fields">
            <name>ucrlinfo Response Fields</name>
            <thead>
              <tr>
                <th align="left">Field name</th>
                <th align="left">Value</th>
                <th align="left">Presence</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>sha256sum</tt></td>
                <td align="left">Base64-encoded SHA-256 digest of the DER-encoded CRL</td>
                <td align="left">
                  <bcp14>MUST</bcp14></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>issuer</tt></td>
                <td align="left">Single-line Base64-encoded DER encoding of the CRL <tt>issuer</tt> field (<xref section="5.1.2.3" sectionFormat="comma" target="RFC5280"/>)</td>
                <td align="left">
                  <bcp14>MUST</bcp14></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>thisupdate</tt></td>
                <td align="left">
                  <tt>thisUpdate</tt> time of the CRL as Unix time (seconds since 1970-01-01T00:00:00Z) (<xref section="5.1.2.4" sectionFormat="comma" target="RFC5280"/>)</td>
                <td align="left">
                  <bcp14>MUST</bcp14></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>nextupdate</tt></td>
                <td align="left">
                  <tt>nextUpdate</tt> time of the CRL as Unix time (seconds since 1970-01-01T00:00:00Z) (<xref section="5.1.2.5" sectionFormat="comma" target="RFC5280"/>)</td>
                <td align="left">
                  <bcp14>MUST</bcp14> if present in CRL</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>crlnumber</tt></td>
                <td align="left">Decimal representation of the CRL Number extension value (<xref section="5.2.3" sectionFormat="comma" target="RFC5280"/>)</td>
                <td align="left">
                  <bcp14>MUST</bcp14> if present in CRL</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="ucrlinfo-format-rationale">
          <name>Choice of CRL-Metadata Format</name>
          <t>The <tt>ucrlinfo</tt> response uses <tt>text/plain</tt> rather than JSON or CBOR because the response is a small set of independent <tt>name=value</tt> fields.  The values are already encoded as simple strings: Unix time values for freshness checks, decimal text for the CRL number, and Base64 text for binary DER or digest values.  A line-oriented format lets an EST client compare freshness indicators and decide whether to download the CRL without adding a JSON, CBOR, CMS, or ASN.1 parser for the metadata response itself.</t>
          <t>JSON or CBOR would be useful if <tt>ucrlinfo</tt> needed nested objects, arrays, typed alternatives, or complex policy information.  This operation deliberately avoids those semantics.  Field order is insignificant, unknown fields are ignored, and each defined field has a single textual representation, so a structured container would add implementation cost without changing the protocol semantics.</t>
          <t>Future specifications that need richer revocation metadata can define additional fields with simple textual encodings or a separate structured operation.  Such an extension would be preferable to changing the base <tt>ucrlinfo</tt> response format.</t>
          <t>Example response:</t>
          <artwork><![CDATA[
sha256sum=fcWyNz1VMfF2wj4/ozla0+Aqj5s0c4fHkkjY8d26oF0=
issuer=MIHxMQswCQYDVQQGEwJERTEP...
thisupdate=1735732800
nextupdate=1736337600
crlnumber=42
]]></artwork>
          <t>If no current CRL is available, the EST server <bcp14>MUST</bcp14> return HTTP status 503 (Service Unavailable).  The server <bcp14>MAY</bcp14> include a <tt>Retry-After</tt> header to indicate when the CRL is expected to become available.</t>
        </section>
      </section>
      <section anchor="ucrl">
        <name>ucrl</name>
        <t>The <tt>ucrl</tt> operation returns the current CRL for the target CA as a DER-encoded CRL.  Unlike the RFC 8295 <tt>crls</tt> operation, which distributes one or more CRLs in a CRL package, <tt>ucrl</tt> returns only the single current CRL selected by the EST server for the target CA.</t>
        <section anchor="ucrl-request">
          <name>Request</name>
          <t>The EST client requests the current CRL using the HTTP GET method.  No request body is sent.  The EST server <bcp14>SHOULD NOT</bcp14> require client authentication for this operation, consistent with <xref section="4.1.2" sectionFormat="comma" target="RFC7030"/>.</t>
          <artwork><![CDATA[
GET /.well-known/est/<label>/ucrl
]]></artwork>
        </section>
        <section anchor="ucrl-response">
          <name>Response</name>
          <t>On success, the EST server returns HTTP status 200 with:</t>
          <ul spacing="normal">
            <li>
              <t>Content-Type: <tt>application/pkix-crl</tt></t>
            </li>
            <li>
              <t>Body: The Base64 encoding of the DER-encoded X.509 CRL <xref target="RFC5280"/> of the target CA.</t>
            </li>
          </ul>
          <t>Successful <tt>ucrl</tt> responses <bcp14>SHOULD</bcp14> include HTTP caching metadata.  In particular, EST servers <bcp14>SHOULD</bcp14> include <tt>Last-Modified</tt>, <tt>ETag</tt>, <tt>Expires</tt>, and <tt>Cache-Control</tt> headers.  When present, <tt>Last-Modified</tt> <bcp14>SHOULD</bcp14> reflect the CRL <tt>thisUpdate</tt> value, and <tt>Expires</tt> <bcp14>SHOULD</bcp14> reflect the CRL <tt>nextUpdate</tt> value.  The <tt>Cache-Control</tt> header <bcp14>SHOULD</bcp14> include a <tt>max-age</tt> value no later than the advertised <tt>nextUpdate</tt>, together with the <tt>public</tt>, <tt>no-transform</tt>, and <tt>must-revalidate</tt> directives.</t>
          <t>If no current CRL is available, the EST server <bcp14>MUST</bcp14> return HTTP status 503 (Service Unavailable).  The server <bcp14>MAY</bcp14> include a <tt>Retry-After</tt> header to indicate when the CRL is expected to become available.</t>
        </section>
      </section>
    </section>
    <section anchor="enrollment-ops">
      <name>Client Certificate Request Functions</name>
      <t>This section defines three enrollment operations that extend the Client Certificate Request Functions of <xref section="4.2" sectionFormat="comma" target="RFC7030"/> and the Server-Side Key Generation operation of <xref section="4.4" sectionFormat="comma" target="RFC7030"/>.</t>
      <section anchor="enrollment-auth">
        <name>Client Authentication</name>
        <t>The enrollment operations defined in this section (<tt>usimpleenroll</tt>, <tt>usimplereenroll</tt>, and <tt>userverkeygen</tt>) require client authentication.  The client authentication requirements are unchanged from <xref target="RFC7030"/>.  EST clients and EST servers <bcp14>MUST</bcp14> follow <xref section="3.2.3" sectionFormat="comma" target="RFC7030"/> and <xref section="3.3.2" sectionFormat="comma" target="RFC7030"/> for client authentication, respectively.</t>
      </section>
      <section anchor="usimpleenroll">
        <name>usimpleenroll</name>
        <t>The <tt>usimpleenroll</tt> operation requests a new certificate from the EST server (<xref section="4.2.1" sectionFormat="comma" target="RFC7030"/>) and returns the issued certificate as a DER-encoded X.509 certificate.</t>
        <section anchor="usimpleenroll-request">
          <name>Request</name>
          <t>An authenticated EST client submits a PKCS#10 CSR <xref target="RFC2986"/> using the HTTP POST method.</t>
          <t>The request body is the Base64 encoding of the DER-encoded PKCS#10 CSR.</t>
          <artwork><![CDATA[
POST /.well-known/est/<label>/usimpleenroll
Content-Type: application/pkcs10

<Base64-encoded DER CSR>
]]></artwork>
          <t>The CSR <bcp14>MUST</bcp14> include a valid PoP signature.  The EST server <bcp14>MUST</bcp14> verify the PoP signature against the public key in the CSR before issuing a certificate, as required by <xref section="3.4" sectionFormat="comma" target="RFC7030"/>.</t>
        </section>
        <section anchor="usimpleenroll-response">
          <name>Response</name>
          <t>On success, the EST server returns HTTP status 200 with:</t>
          <ul spacing="normal">
            <li>
              <t>Content-Type: <tt>application/pkix-cert</tt></t>
            </li>
            <li>
              <t>Body: The Base64 encoding of the DER-encoded X.509 certificate <xref target="RFC5280"/> issued for the subject in the CSR.</t>
            </li>
          </ul>
        </section>
        <section anchor="usimpleenroll-vs-simpleenroll">
          <name>Comparison to simpleenroll</name>
          <t>The <tt>simpleenroll</tt> response (<xref section="4.2.3" sectionFormat="comma" target="RFC7030"/>) wraps the issued certificate in a CMS <tt>certs-only</tt> structure (<tt>application/pkcs7-mime; smime-type=certs-only</tt>).  <tt>usimpleenroll</tt> returns that certificate as the Base64 encoding of a single DER-encoded certificate.</t>
        </section>
      </section>
      <section anchor="usimplereenroll">
        <name>usimplereenroll</name>
        <t>The <tt>usimplereenroll</tt> operation renews or rekeys an existing certificate (<xref section="4.2.2" sectionFormat="comma" target="RFC7030"/>) and returns the renewed certificate as a DER-encoded X.509 certificate.</t>
        <section anchor="usimplereenroll-request">
          <name>Request</name>
          <t>An authenticated EST client submits a PKCS#10 CSR for re-enrollment using the HTTP POST method.</t>
          <t>The request body is the Base64 encoding of the DER-encoded PKCS#10 CSR.</t>
          <artwork><![CDATA[
POST /.well-known/est/<label>/usimplereenroll
Content-Type: application/pkcs10

<Base64-encoded DER CSR>
]]></artwork>
          <t>Re-enrollment processing follows <xref section="4.2.2" sectionFormat="comma" target="RFC7030"/>.</t>
        </section>
        <section anchor="usimplereenroll-response">
          <name>Response</name>
          <t>On success, the EST server returns HTTP status 200 with:</t>
          <ul spacing="normal">
            <li>
              <t>Content-Type: <tt>application/pkix-cert</tt></t>
            </li>
            <li>
              <t>Body: The Base64 encoding of the DER-encoded renewed X.509 certificate.</t>
            </li>
          </ul>
        </section>
        <section anchor="usimplereenroll-vs-simplereenroll">
          <name>Comparison to simplereenroll</name>
          <t>The <tt>simplereenroll</tt> response (<xref section="4.2.3" sectionFormat="comma" target="RFC7030"/>) wraps the renewed certificate in a CMS <tt>certs-only</tt> structure.  <tt>usimplereenroll</tt> returns that certificate as the Base64 encoding of a DER-encoded certificate.</t>
        </section>
      </section>
      <section anchor="userverkeygen">
        <name>userverkeygen</name>
        <t>The <tt>userverkeygen</tt> operation requests server-side key generation and returns the generated private key and certificate (<xref section="4.4" sectionFormat="comma" target="RFC7030"/>).</t>
        <section anchor="userverkeygen-request">
          <name>Request</name>
          <t>An authenticated EST client requests server-side key generation by submitting a PKCS#10 CSR using the HTTP POST method.  Because the key pair is generated by the EST server, the SubjectPublicKeyInfo in the CSR <bcp14>SHOULD</bcp14> be absent or contain a placeholder.  EST servers <bcp14>MUST NOT</bcp14> require a specific public key to be present.  Likewise, the CSR signature is only a placeholder because the client possesses no corresponding private key.  The EST client <bcp14>MAY</bcp14> use the <tt>id-alg-unsigned</tt> algorithm (OID 1.3.6.1.5.5.7.6.36) defined in <xref target="RFC9925"/> to signal explicitly that the signature field is intentionally unsigned.  EST servers <bcp14>MUST</bcp14> accept CSRs that use <tt>id-alg-unsigned</tt>.</t>
          <t>The request body is the Base64 encoding of the DER-encoded PKCS#10 CSR.</t>
          <artwork><![CDATA[
POST /.well-known/est/<label>/userverkeygen
Content-Type: application/pkcs10

<Base64-encoded DER CSR>
]]></artwork>
          <t>Unlike <tt>usimpleenroll</tt>, the EST server <bcp14>MUST NOT</bcp14> verify a PoP signature for <tt>userverkeygen</tt> because no client-generated public key is being certified (consistent with <xref section="4.4.1" sectionFormat="comma" target="RFC7030"/>).  If the CSR uses <tt>id-alg-unsigned</tt> (<xref target="RFC9925"/>), there is no signature value to check.</t>
        </section>
        <section anchor="userverkeygen-response">
          <name>Response</name>
          <t>On success, the EST server returns HTTP status 200 with:</t>
          <ul spacing="normal">
            <li>
              <t>Content-Type: <tt>application/x-pem-file</tt></t>
            </li>
            <li>
              <t>Body: A sequence of PEM textual encodings <xref target="RFC7468"/> containing exactly two label-value pairs in the following order:  </t>
              <ol spacing="normal" type="1"><li>
                  <t><tt>PRIVATE KEY</tt>: the PKCS#8 <xref target="RFC5958"/> DER-encoded private key, Base64-encoded within the PEM encapsulation boundary.</t>
                </li>
                <li>
                  <t><tt>CERTIFICATE</tt>: the DER-encoded X.509 certificate <xref target="RFC5280"/> issued for the generated key pair, Base64-encoded within the PEM encapsulation boundary.</t>
                </li>
              </ol>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>Note: The media type <tt>application/x-pem-file</tt> is a widely deployed convention for PEM-encoded (<xref target="RFC7468"/>) cryptographic objects.  It predates the IETF media type registration process and is not registered in the IANA Media Types registry.  No IANA-registered media type currently exists for a single message body carrying both a private key and a certificate in PEM textual encoding.  This document uses <tt>application/x-pem-file</tt> to remain consistent with existing deployments.  A future revision <bcp14>MAY</bcp14> register an appropriate media type with IANA and update this specification accordingly.</t>
            </li>
          </ul>
          <t>Example response body:</t>
          <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
<Base64-encoded PKCS#8 private key>
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
<Base64-encoded X.509 certificate>
-----END CERTIFICATE-----
]]></artwork>
          <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 anchor="userverkeygen-vs-serverkeygen">
          <name>Comparison to serverkeygen</name>
          <t>The <tt>serverkeygen</tt> response (<xref section="4.4.2" sectionFormat="comma" target="RFC7030"/>) uses a <tt>multipart/mixed</tt> MIME response containing a PKCS#8 part and a CMS <tt>certs-only</tt> part.  <tt>userverkeygen</tt> delivers the same material in a single PEM file, eliminating the need for a MIME multipart parser and a CMS library.</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.  The following subsections address security considerations specific to the new operations.</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) as required by <xref section="3" sectionFormat="comma" target="RFC7030"/>.  Implementations <bcp14>MUST NOT</bcp14> fall back to plain HTTP.  EST servers <bcp14>MUST</bcp14> present a TLS certificate that EST clients can validate against a configured trust anchor, and EST clients <bcp14>SHOULD</bcp14> reject server certificates that cannot be validated.</t>
        <t>Implementers <bcp14>SHOULD</bcp14> consult <xref target="RFC7925"/> for guidance on TLS version, cipher suite selection, and certificate profiles when those recommendations are applicable to the deployment.</t>
      </section>
      <section anchor="sec-authentication">
        <name>Client Authentication</name>
        <t>The <tt>ucacaps</tt>, <tt>ucacert</tt>, <tt>ucacerts</tt>, <tt>ucrlinfo</tt>, and <tt>ucrl</tt> retrieval operations follow the same authentication policy as the <tt>cacerts</tt> operation defined in <xref section="4.1.2" sectionFormat="comma" target="RFC7030"/>: the EST server <bcp14>SHOULD NOT</bcp14> require client authentication for these operations.  CRLs and related CRL metadata are public information that relying parties must be able to retrieve without impediment; requiring authentication for <tt>ucrlinfo</tt> or <tt>ucrl</tt> would hinder revocation checking, consistent with the design intent of CRL distribution points in <xref target="RFC5280"/>.</t>
        <t>Enrollment operations (<tt>usimpleenroll</tt>, <tt>usimplereenroll</tt>, <tt>userverkeygen</tt>) <bcp14>MUST</bcp14> require client authentication as specified in <xref target="enrollment-auth"/>.</t>
        <t>When HTTP Basic authentication is used, the considerations in <xref section="3.2.3" sectionFormat="comma" target="RFC7030"/> apply.  In particular, the <tt>user:password</tt> credential is Base64-encoded and visible to any observer that can read the TLS plaintext.  Basic authentication <bcp14>MUST</bcp14> therefore only be used inside a TLS session.  EST servers <bcp14>SHOULD</bcp14> rate-limit failed authentication attempts to mitigate brute-force attacks against user credentials.</t>
        <t>When TLS client certificate authentication is used, the requirements and considerations in <xref section="3.3.2" sectionFormat="comma" target="RFC7030"/> apply.</t>
      </section>
      <section anchor="proof-of-possession">
        <name>Proof of Possession</name>
        <t><tt>usimpleenroll</tt> and <tt>usimplereenroll</tt> <bcp14>MUST</bcp14> verify the PoP signature in the PKCS#10 CSR before issuing a certificate, as required by <xref section="3.4" sectionFormat="comma" target="RFC7030"/>.  An EST server that skips PoP verification may issue certificates for public keys that the requester does not control, undermining the binding between the certified key pair and the subscriber.</t>
        <t>The <tt>userverkeygen</tt> operation does not require PoP verification because the EST server generates the key pair itself (see <xref section="4.4.1" sectionFormat="comma" target="RFC7030"/>).  The authenticity of the request is therefore established solely by client authentication (<xref target="sec-authentication"/>).  EST servers <bcp14>MUST</bcp14> enforce client authentication at least as strongly for <tt>userverkeygen</tt> as for the other enrollment operations.</t>
      </section>
      <section anchor="private-key-delivery">
        <name>Private Key Delivery</name>
        <t>The <tt>userverkeygen</tt> operation delivers a generated private key to the EST client over TLS in a PEM file.  This follows the same model as the <tt>serverkeygen</tt> operation in <xref section="4.4" sectionFormat="comma" target="RFC7030"/>.  The following additional considerations apply:</t>
        <ul spacing="normal">
          <li>
            <t>The EST server <bcp14>SHOULD</bcp14> delete the generated private key immediately after the response has been transmitted successfully.  If the deployment requires the server to retain a copy (e.g., for key escrow or disaster recovery), the private key <bcp14>MUST</bcp14> be stored in encrypted form with access controls that restrict retrieval to authorized personnel only.</t>
          </li>
          <li>
            <t>EST clients <bcp14>MUST</bcp14> verify the EST server's TLS certificate before transmitting the enrollment request, as the TLS channel is the only confidentiality protection for the delivered private key.</t>
          </li>
          <li>
            <t>Server-side key generation is generally discouraged when the EST client is capable of generating its own key pair; see <xref section="6" sectionFormat="comma" target="RFC7030"/> for further guidance.</t>
          </li>
          <li>
            <t>The PEM response contains the private key in a <tt>PRIVATE KEY</tt> block with no encryption.  EST clients <bcp14>MUST</bcp14> store the key material securely immediately upon receipt (e.g., import it into a hardware security module or an encrypted key store) and <bcp14>MUST NOT</bcp14> write it to unprotected storage.</t>
          </li>
        </ul>
      </section>
      <section anchor="response-integrity">
        <name>Response Integrity and Trust Anchor Bootstrapping</name>
        <t>The <tt>ucacert</tt>, <tt>ucacerts</tt>, and <tt>ucrl</tt> operations return PKI objects over a TLS-protected channel without an additional application-layer signature.  EST clients <bcp14>MUST</bcp14> validate received certificates and CRLs against an independently configured trust anchor.</t>
        <t>When bootstrapping a device that does not yet possess a trust anchor, the initial <tt>ucacert</tt> or <tt>ucacerts</tt> exchange is subject to the same considerations as the <tt>cacerts</tt> bootstrap operation described in <xref section="4.1.1" sectionFormat="comma" target="RFC7030"/>.  EST clients <bcp14>SHOULD</bcp14> follow the guidance in <xref section="3.6" sectionFormat="comma" target="RFC7030"/> (Server Authorization) for trust anchor selection, and <bcp14>SHOULD</bcp14> use an Implicit Trust Anchor (<xref section="3.6.2" sectionFormat="comma" target="RFC7030"/>) only when an Explicit Trust Anchor is not available.</t>
      </section>
      <section anchor="subject-name-validation">
        <name>Subject Name and SAN Validation for Re-enrollment</name>
        <t>The <tt>usimplereenroll</tt> operation identifies the certificate to be renewed by the subject DN (and optionally SAN) carried in the CSR, consistent with <xref section="4.2.2" sectionFormat="comma" target="RFC7030"/>.  EST servers <bcp14>MUST</bcp14> ensure that the authenticated requester is authorized to renew the certificate identified by that subject identity.</t>
        <t>When the <tt>id-cmc-changeSubjectName</tt> attribute is present in the CSR, the EST server <bcp14>MUST</bcp14> validate that the requested new subject DN and SAN values are within the policy permitted for the authenticated requester and the selected certificate profile.</t>
      </section>
      <section anchor="capability-discovery-security">
        <name>Capability Discovery Security</name>
        <t>The <tt>ucacaps</tt> operation <bcp14>SHOULD NOT</bcp14> require client authentication (consistent with <xref section="4.1.2" sectionFormat="comma" target="RFC7030"/>) and returns its response without any application-layer signature.  Therefore, an on-path attacker that can intercept the TLS session could return a manipulated capability list.  For example, the attacker could omit <tt>userverkeygen</tt> to prevent key generation or omit <tt>ucrlinfo</tt> and <tt>ucrl</tt> to interfere with CRL checking.</t>
        <t>EST clients <bcp14>SHOULD</bcp14> treat the <tt>ucacaps</tt> response as advisory information only.  EST clients <bcp14>SHOULD NOT</bcp14> rely on it as a security enforcement mechanism.  In particular, a negative <tt>ucacaps</tt> response (e.g., an absent keyword) <bcp14>MUST NOT</bcp14> cause an EST client to fall back to less secure behavior.</t>
        <t>EST clients that obtain the <tt>ucacaps</tt> response via a TLS session in which the server certificate has been validated against an Explicit Trust Anchor <bcp14>MAY</bcp14> treat the response as reliable.</t>
      </section>
      <section anchor="dos-considerations">
        <name>Denial-of-Service Considerations</name>
        <t>The <tt>ucrl</tt> operation returns the full CRL, which may be large.  EST servers <bcp14>SHOULD</bcp14> implement rate limiting and response size limits to prevent resource exhaustion from concurrent CRL download requests.  EST clients <bcp14>SHOULD</bcp14> call <tt>ucrlinfo</tt> before <tt>ucrl</tt> to determine whether the locally cached CRL is still current.  If the <tt>crlnumber</tt>, <tt>nextupdate</tt>, or <tt>sha256sum</tt> fields indicate no change since the last download, the client <bcp14>SHOULD</bcp14> refrain from issuing a <tt>ucrl</tt> request.  EST clients that cache the CRL locally <bcp14>SHOULD</bcp14> use the <tt>nextupdate</tt> field from <tt>ucrlinfo</tt> (or from the cached CRL itself) to determine when to refresh, and <bcp14>SHOULD NOT</bcp14> poll more frequently than necessary.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document makes no requests to IANA.</t>
      <section anchor="media-types">
        <name>Media Types (Informative)</name>
        <t>The operations defined in this document use the media types listed in <xref target="tab-media-types"/>.  All types except <tt>application/x-pem-file</tt> are already registered in the IANA Media Types registry; no new registrations are requested by this document.</t>
        <table anchor="tab-media-types">
          <name>Media Types Used by Lightweight EST Operations</name>
          <thead>
            <tr>
              <th align="left">Media Type</th>
              <th align="left">Used by</th>
              <th align="left">Registered in</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>application/pkcs10</tt></td>
              <td align="left">Request body for enrollment operations</td>
              <td align="left">
                <xref target="RFC5652"/></td>
            </tr>
            <tr>
              <td align="left">
                <tt>application/pkix-cert</tt></td>
              <td align="left">Response body for ucacert, usimpleenroll, usimplereenroll</td>
              <td align="left">
                <xref target="RFC2585"/></td>
            </tr>
            <tr>
              <td align="left">
                <tt>application/pkix-crl</tt></td>
              <td align="left">Response body for ucrl</td>
              <td align="left">
                <xref target="RFC2585"/></td>
            </tr>
            <tr>
              <td align="left">
                <tt>application/pkcs7-mime</tt></td>
              <td align="left">(existing cacerts/simpleenroll format, for reference)</td>
              <td align="left">
                <xref target="RFC8551"/></td>
            </tr>
            <tr>
              <td align="left">
                <tt>application/pem-certificate-chain</tt></td>
              <td align="left">Response body for ucacerts</td>
              <td align="left">
                <xref target="RFC8555"/></td>
            </tr>
            <tr>
              <td align="left">
                <tt>application/x-pem-file</tt></td>
              <td align="left">Response body for userverkeygen (key + cert)</td>
              <td align="left">Unregistered; see note below</td>
            </tr>
            <tr>
              <td align="left">
                <tt>text/plain</tt></td>
              <td align="left">Response body for ucacaps and ucrlinfo</td>
              <td align="left">
                <xref target="RFC2046"/></td>
            </tr>
          </tbody>
        </table>
        <t>Note: <tt>application/pkix-cert</tt> and <tt>application/pkix-crl</tt> are registered in the IANA Media Types registry (see <xref target="RFC2585"/>).  Implementers should consult the IANA registry for authoritative definitions.  The media type <tt>application/x-pem-file</tt> is not registered with IANA, but it is a widely deployed convention for PEM-encoded (<xref target="RFC7468"/>) cryptographic objects.  It predates the IETF media type registration process.  No IANA-registered type currently exists for a response body containing both a private key and a certificate in PEM textual encoding.  A future revision of this document <bcp14>MAY</bcp14> register an appropriate media type and update the <tt>userverkeygen</tt> specification accordingly.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2046">
          <front>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="N. Borenstein" initials="N." surname="Borenstein"/>
            <date month="November" year="1996"/>
            <abstract>
              <t>This second document defines the general structure of the MIME media typing system and defines an initial set of media types. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2046"/>
          <seriesInfo name="DOI" value="10.17487/RFC2046"/>
        </reference>
        <reference anchor="RFC2585">
          <front>
            <title>Internet X.509 Public Key Infrastructure Operational Protocols: FTP and HTTP</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="May" year="1999"/>
            <abstract>
              <t>The protocol conventions described in this document satisfy some of the operational requirements of the Internet Public Key Infrastructure (PKI). This document specifies the conventions for using the File Transfer Protocol (FTP) and the Hypertext Transfer Protocol (HTTP) to obtain certificates and certificate revocation lists (CRLs) from PKI repositories. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2585"/>
          <seriesInfo name="DOI" value="10.17487/RFC2585"/>
        </reference>
        <reference anchor="RFC2986">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="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="RFC8551">
          <front>
            <title>Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 Message Specification</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="B. Ramsdell" initials="B." surname="Ramsdell"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document defines Secure/Multipurpose Internet Mail Extensions (S/MIME) version 4.0. S/MIME provides a consistent way to send and receive secure MIME data. Digital signatures provide authentication, message integrity, and non-repudiation with proof of origin. Encryption provides data confidentiality. Compression can be used to reduce data size. This document obsoletes RFC 5751.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8551"/>
          <seriesInfo name="DOI" value="10.17487/RFC8551"/>
        </reference>
        <reference anchor="RFC8951">
          <front>
            <title>Clarification of Enrollment over Secure Transport (EST): Transfer Encodings and ASN.1</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Werner" initials="T." surname="Werner"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="November" year="2020"/>
            <abstract>
              <t>This document updates RFC 7030: Enrollment over Secure Transport to resolve some errata that were reported and that have proven to cause interoperability issues when RFC 7030 was extended.</t>
              <t>This document deprecates the specification of "Content-Transfer-Encoding" headers for Enrollment over Secure Transport (EST) endpoints. This document fixes some syntactical errors in ASN.1 that were present.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8951"/>
          <seriesInfo name="DOI" value="10.17487/RFC8951"/>
        </reference>
        <reference anchor="RFC5958">
          <front>
            <title>Asymmetric Key Packages</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document defines the syntax for private-key information and a content type for it. Private-key information includes a private key for a specified public-key algorithm and a set of attributes. The Cryptographic Message Syntax (CMS), as defined in RFC 5652, can be used to digitally sign, digest, authenticate, or encrypt the asymmetric key format content type. This document obsoletes RFC 5208. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5958"/>
          <seriesInfo name="DOI" value="10.17487/RFC5958"/>
        </reference>
        <reference anchor="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="RFC7468">
          <front>
            <title>Textual Encodings of PKIX, PKCS, and CMS Structures</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="S. Leonard" initials="S." surname="Leonard"/>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document describes and discusses the textual encodings of the Public-Key Infrastructure X.509 (PKIX), Public-Key Cryptography Standards (PKCS), and Cryptographic Message Syntax (CMS). The textual encodings are well-known, are implemented by several applications and libraries, and are widely deployed. This document articulates the de facto rules by which existing implementations operate and defines them so that future implementations can interoperate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7468"/>
          <seriesInfo name="DOI" value="10.17487/RFC7468"/>
        </reference>
        <reference anchor="RFC8555">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <author fullname="D. McCarney" initials="D." surname="McCarney"/>
            <author fullname="J. Kasten" initials="J." surname="Kasten"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8555"/>
          <seriesInfo name="DOI" value="10.17487/RFC8555"/>
        </reference>
        <reference anchor="RFC9925">
          <front>
            <title>Unsigned X.509 Certificates</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <date month="February" year="2026"/>
            <abstract>
              <t>This document defines a placeholder X.509 signature algorithm that may be used in contexts where the consumer of the certificate is not expected to verify the signature. As part of this, it updates RFC 5280.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9925"/>
          <seriesInfo name="DOI" value="10.17487/RFC9925"/>
        </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="RFC7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC7925">
          <front>
            <title>Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things</title>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.</t>
              <t>This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery. The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7925"/>
          <seriesInfo name="DOI" value="10.17487/RFC7925"/>
        </reference>
        <reference anchor="RFC8295">
          <front>
            <title>EST (Enrollment over Secure Transport) Extensions</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="January" year="2018"/>
            <abstract>
              <t>The EST (Enrollment over Secure Transport) protocol defines the Well-Known URI (Uniform Resource Identifier) -- /.well-known/est -- along with a number of other path components that clients use for PKI (Public Key Infrastructure) services, namely certificate enrollment (e.g., /simpleenroll). This document defines a number of other PKI services as additional path components -- specifically, firmware and trust anchors as well as symmetric, asymmetric, and encrypted keys. This document also specifies the PAL (Package Availability List), which is an XML (Extensible Markup Language) file or JSON (JavaScript Object Notation) object that clients use to retrieve packages available and authorized for them. This document extends the EST server path components to provide these additional services.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8295"/>
          <seriesInfo name="DOI" value="10.17487/RFC8295"/>
        </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="RFC9908">
          <front>
            <title>Clarification and Enhancement of the CSR Attributes Definition in RFC 7030</title>
            <author fullname="M. Richardson" initials="M." role="editor" surname="Richardson"/>
            <author fullname="O. Friel" initials="O." surname="Friel"/>
            <author fullname="D. von Oheimb" initials="D." surname="von Oheimb"/>
            <author fullname="D. Harkins" initials="D." surname="Harkins"/>
            <date month="January" year="2026"/>
            <abstract>
              <t>This document updates RFC 7030, "Enrollment over Secure Transport" (EST), clarifying how the Certificate Signing Request (CSR) Attributes Response can be used by an EST server to specify both CSR attribute Object Identifiers (OIDs) and CSR attribute values, particularly X.509 extension values, that the server expects the client to include in a subsequent CSR request. RFC 9148 is derived from RFC 7030 and is also updated.</t>
              <t>RFC 7030 is ambiguous in its specification of the CSR Attributes Response. This has resulted in implementation challenges and implementor confusion because there was no universal understanding of what was specified. This document clarifies the encoding rules.</t>
              <t>This document also provides a new straightforward approach: using a template for CSR contents that may be partially filled in by the server. This also allows an EST server to specify a subject Distinguished Name (DN).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9908"/>
          <seriesInfo name="DOI" value="10.17487/RFC9908"/>
        </reference>
      </references>
    </references>
    <?line 598?>

<section anchor="flows">
      <name>Message Flow Diagrams</name>
      <t>This appendix illustrates the HTTP message flows for each operation defined in this document.  All exchanges occur within a TLS session; the TLS handshake is not shown.  For DER-carrying operations, the examples show the base64-encoded form required by this specification.</t>
      <section anchor="flow-ucacaps">
        <name>ucacaps</name>
        <figure anchor="fig-ucacaps">
          <name>ucacaps message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="400" viewBox="0 0 400 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 32,48 L 32,352" fill="none" stroke="black"/>
                <path d="M 360,48 L 360,352" fill="none" stroke="black"/>
                <path d="M 40,80 L 352,80" fill="none" stroke="black"/>
                <path d="M 40,336 L 352,336" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,80 348,74.4 348,85.6" fill="black" transform="rotate(0,352,80)"/>
                <polygon class="arrowhead" points="48,336 36,330.4 36,341.6" fill="black" transform="rotate(180,40,336)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="328" y="36">EST</text>
                  <text x="372" y="36">Server</text>
                  <text x="64" y="68">GET</text>
                  <text x="196" y="68">/.well-known/est/&lt;p&gt;/ucacaps</text>
                  <text x="84" y="116">HTTP/1.1</text>
                  <text x="136" y="116">200</text>
                  <text x="164" y="116">OK</text>
                  <text x="104" y="132">Content-Type:</text>
                  <text x="204" y="132">text/plain</text>
                  <text x="80" y="164">cacerts</text>
                  <text x="100" y="180">simpleenroll</text>
                  <text x="108" y="196">simplereenroll</text>
                  <text x="100" y="212">serverkeygen</text>
                  <text x="80" y="228">ucacert</text>
                  <text x="84" y="244">ucacerts</text>
                  <text x="68" y="260">ucrl</text>
                  <text x="84" y="276">ucrlinfo</text>
                  <text x="104" y="292">usimpleenroll</text>
                  <text x="112" y="308">usimplereenroll</text>
                  <text x="104" y="324">userverkeygen</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                             EST Server
   |                                        |
   |  GET /.well-known/est/<p>/ucacaps      |
   |--------------------------------------->|
   |                                        |
   |  HTTP/1.1 200 OK                       |
   |  Content-Type: text/plain              |
   |                                        |
   |  cacerts                               |
   |  simpleenroll                          |
   |  simplereenroll                        |
   |  serverkeygen                          |
   |  ucacert                               |
   |  ucacerts                              |
   |  ucrl                                  |
   |  ucrlinfo                              |
   |  usimpleenroll                         |
   |  usimplereenroll                       |
   |  userverkeygen                         |
   |<---------------------------------------|
   |                                        |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-ucacert">
        <name>ucacert</name>
        <figure anchor="fig-ucacert">
          <name>ucacert message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="400" viewBox="0 0 400 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 32,48 L 32,192" fill="none" stroke="black"/>
                <path d="M 360,48 L 360,192" fill="none" stroke="black"/>
                <path d="M 40,80 L 352,80" fill="none" stroke="black"/>
                <path d="M 40,176 L 352,176" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,80 348,74.4 348,85.6" fill="black" transform="rotate(0,352,80)"/>
                <polygon class="arrowhead" points="48,176 36,170.4 36,181.6" fill="black" transform="rotate(180,40,176)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="328" y="36">EST</text>
                  <text x="372" y="36">Server</text>
                  <text x="64" y="68">GET</text>
                  <text x="196" y="68">/.well-known/est/&lt;p&gt;/ucacert</text>
                  <text x="84" y="116">HTTP/1.1</text>
                  <text x="136" y="116">200</text>
                  <text x="164" y="116">OK</text>
                  <text x="104" y="132">Content-Type:</text>
                  <text x="248" y="132">application/pkix-cert</text>
                  <text x="80" y="164">&lt;Base64</text>
                  <text x="128" y="164">DER</text>
                  <text x="156" y="164">CA</text>
                  <text x="220" y="164">certificate&gt;</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                             EST Server
   |                                        |
   |  GET /.well-known/est/<p>/ucacert      |
   |--------------------------------------->|
   |                                        |
   |  HTTP/1.1 200 OK                       |
   |  Content-Type: application/pkix-cert   |
   |                                        |
   |  <Base64 DER CA certificate>           |
   |<---------------------------------------|
   |                                        |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-ucacerts">
        <name>ucacerts</name>
        <figure anchor="fig-ucacerts">
          <name>ucacerts message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="400" viewBox="0 0 400 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 32,48 L 32,256" fill="none" stroke="black"/>
                <path d="M 360,48 L 360,256" fill="none" stroke="black"/>
                <path d="M 40,80 L 352,80" fill="none" stroke="black"/>
                <path d="M 40,240 L 352,240" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,80 348,74.4 348,85.6" fill="black" transform="rotate(0,352,80)"/>
                <polygon class="arrowhead" points="48,240 36,234.4 36,245.6" fill="black" transform="rotate(180,40,240)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="328" y="36">EST</text>
                  <text x="372" y="36">Server</text>
                  <text x="56" y="68">GET</text>
                  <text x="192" y="68">/.well-known/est/&lt;p&gt;/ucacerts</text>
                  <text x="84" y="116">HTTP/1.1</text>
                  <text x="136" y="116">200</text>
                  <text x="164" y="116">OK</text>
                  <text x="104" y="132">Content-Type:</text>
                  <text x="200" y="148">application/pem-certificate-chain</text>
                  <text x="100" y="180">&lt;PEM-encoded</text>
                  <text x="164" y="180">CA</text>
                  <text x="228" y="180">certificate&gt;</text>
                  <text x="56" y="196">[</text>
                  <text x="112" y="196">PEM-encoded</text>
                  <text x="212" y="196">intermediate</text>
                  <text x="116" y="212">CA</text>
                  <text x="180" y="212">certificates</text>
                  <text x="272" y="212">]</text>
                  <text x="56" y="228">[</text>
                  <text x="116" y="228">&lt;PEM-encoded</text>
                  <text x="188" y="228">root</text>
                  <text x="260" y="228">certificate&gt;</text>
                  <text x="320" y="228">]</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                             EST Server
   |                                        |
   | GET /.well-known/est/<p>/ucacerts      |
   |--------------------------------------->|
   |                                        |
   |  HTTP/1.1 200 OK                       |
   |  Content-Type:                         |
   |    application/pem-certificate-chain   |
   |                                        |
   |  <PEM-encoded CA certificate>          |
   |  [ PEM-encoded intermediate            |
   |         CA certificates     ]          |
   |  [ <PEM-encoded root certificate> ]    |
   |<---------------------------------------|
   |                                        |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-ucrlinfo">
        <name>ucrlinfo</name>
        <figure anchor="fig-ucrlinfo">
          <name>ucrlinfo message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="400" viewBox="0 0 400 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 32,48 L 32,256" fill="none" stroke="black"/>
                <path d="M 360,48 L 360,256" fill="none" stroke="black"/>
                <path d="M 40,80 L 352,80" fill="none" stroke="black"/>
                <path d="M 40,240 L 352,240" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,80 348,74.4 348,85.6" fill="black" transform="rotate(0,352,80)"/>
                <polygon class="arrowhead" points="48,240 36,234.4 36,245.6" fill="black" transform="rotate(180,40,240)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="328" y="36">EST</text>
                  <text x="372" y="36">Server</text>
                  <text x="64" y="68">GET</text>
                  <text x="200" y="68">/.well-known/est/&lt;p&gt;/ucrlinfo</text>
                  <text x="84" y="116">HTTP/1.1</text>
                  <text x="136" y="116">200</text>
                  <text x="164" y="116">OK</text>
                  <text x="104" y="132">Content-Type:</text>
                  <text x="204" y="132">text/plain</text>
                  <text x="152" y="164">sha256sum=fcWyNz...26oF0=</text>
                  <text x="164" y="180">issuer=MIHxMQswCQYDVQQGEw...</text>
                  <text x="136" y="196">thisupdate=1735732800</text>
                  <text x="136" y="212">nextupdate=1736337600</text>
                  <text x="100" y="228">crlnumber=42</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                             EST Server
   |                                        |
   |  GET /.well-known/est/<p>/ucrlinfo     |
   |--------------------------------------->|
   |                                        |
   |  HTTP/1.1 200 OK                       |
   |  Content-Type: text/plain              |
   |                                        |
   |  sha256sum=fcWyNz...26oF0=             |
   |  issuer=MIHxMQswCQYDVQQGEw...          |
   |  thisupdate=1735732800                 |
   |  nextupdate=1736337600                 |
   |  crlnumber=42                          |
   |<---------------------------------------|
   |                                        |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-ucrl">
        <name>ucrl</name>
        <figure anchor="fig-ucrl">
          <name>ucrl message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="400" viewBox="0 0 400 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 32,48 L 32,192" fill="none" stroke="black"/>
                <path d="M 360,48 L 360,192" fill="none" stroke="black"/>
                <path d="M 40,80 L 352,80" fill="none" stroke="black"/>
                <path d="M 40,176 L 352,176" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,80 348,74.4 348,85.6" fill="black" transform="rotate(0,352,80)"/>
                <polygon class="arrowhead" points="48,176 36,170.4 36,181.6" fill="black" transform="rotate(180,40,176)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="328" y="36">EST</text>
                  <text x="372" y="36">Server</text>
                  <text x="64" y="68">GET</text>
                  <text x="184" y="68">/.well-known/est/&lt;p&gt;/ucrl</text>
                  <text x="84" y="116">HTTP/1.1</text>
                  <text x="136" y="116">200</text>
                  <text x="164" y="116">OK</text>
                  <text x="104" y="132">Content-Type:</text>
                  <text x="244" y="132">application/pkix-crl</text>
                  <text x="80" y="164">&lt;Base64</text>
                  <text x="128" y="164">DER</text>
                  <text x="164" y="164">CRL&gt;</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                             EST Server
   |                                        |
   |  GET /.well-known/est/<p>/ucrl         |
   |--------------------------------------->|
   |                                        |
   |  HTTP/1.1 200 OK                       |
   |  Content-Type: application/pkix-crl    |
   |                                        |
   |  <Base64 DER CRL>                      |
   |<---------------------------------------|
   |                                        |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-usimpleenroll">
        <name>usimpleenroll</name>
        <figure anchor="fig-usimpleenroll">
          <name>usimpleenroll message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="520" viewBox="0 0 520 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 32,48 L 32,336" fill="none" stroke="black"/>
                <path d="M 360,48 L 360,336" fill="none" stroke="black"/>
                <path d="M 40,192 L 352,192" fill="none" stroke="black"/>
                <path d="M 40,320 L 352,320" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,192 348,186.4 348,197.6" fill="black" transform="rotate(0,352,192)"/>
                <polygon class="arrowhead" points="48,320 36,314.4 36,325.6" fill="black" transform="rotate(180,40,320)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="328" y="36">EST</text>
                  <text x="372" y="36">Server</text>
                  <text x="72" y="68">[HTTP</text>
                  <text x="120" y="68">Basic</text>
                  <text x="164" y="68">auth</text>
                  <text x="216" y="68">header,</text>
                  <text x="68" y="84">or</text>
                  <text x="96" y="84">TLS</text>
                  <text x="140" y="84">client</text>
                  <text x="220" y="84">certificate]</text>
                  <text x="68" y="116">POST</text>
                  <text x="160" y="116">/.well-known/est/</text>
                  <text x="172" y="132">/&lt;p&gt;/usimpleenroll</text>
                  <text x="104" y="148">Content-Type:</text>
                  <text x="236" y="148">application/pkcs10</text>
                  <text x="80" y="180">&lt;Base64</text>
                  <text x="144" y="180">PKCS#10</text>
                  <text x="196" y="180">CSR&gt;</text>
                  <text x="404" y="212">Verify</text>
                  <text x="452" y="212">PoP,</text>
                  <text x="400" y="228">Issue</text>
                  <text x="472" y="228">certificate</text>
                  <text x="84" y="260">HTTP/1.1</text>
                  <text x="136" y="260">200</text>
                  <text x="164" y="260">OK</text>
                  <text x="104" y="276">Content-Type:</text>
                  <text x="248" y="276">application/pkix-cert</text>
                  <text x="80" y="308">&lt;Base64</text>
                  <text x="128" y="308">DER</text>
                  <text x="196" y="308">certificate&gt;</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                             EST Server
   |                                        |
   |  [HTTP Basic auth header,              |
   |   or TLS client certificate]           |
   |                                        |
   |  POST /.well-known/est/                |
   |        /<p>/usimpleenroll              |
   |  Content-Type: application/pkcs10      |
   |                                        |
   |  <Base64 PKCS#10 CSR>                  |
   |--------------------------------------->|
   |                                        |  Verify PoP,
   |                                        |  Issue certificate
   |                                        |
   |  HTTP/1.1 200 OK                       |
   |  Content-Type: application/pkix-cert   |
   |                                        |
   |  <Base64 DER certificate>              |
   |<---------------------------------------|
   |                                        |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-usimplereenroll">
        <name>usimplereenroll</name>
        <figure anchor="fig-usimplereenroll">
          <name>usimplereenroll message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="400" width="520" viewBox="0 0 520 400" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 32,48 L 32,384" fill="none" stroke="black"/>
                <path d="M 360,48 L 360,384" fill="none" stroke="black"/>
                <path d="M 40,240 L 352,240" fill="none" stroke="black"/>
                <path d="M 40,368 L 352,368" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,240 348,234.4 348,245.6" fill="black" transform="rotate(0,352,240)"/>
                <polygon class="arrowhead" points="48,368 36,362.4 36,373.6" fill="black" transform="rotate(180,40,368)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="328" y="36">EST</text>
                  <text x="372" y="36">Server</text>
                  <text x="72" y="68">[HTTP</text>
                  <text x="120" y="68">Basic</text>
                  <text x="164" y="68">auth</text>
                  <text x="216" y="68">header,</text>
                  <text x="68" y="84">or</text>
                  <text x="96" y="84">TLS</text>
                  <text x="140" y="84">client</text>
                  <text x="220" y="84">certificate]</text>
                  <text x="68" y="116">POST</text>
                  <text x="160" y="116">/.well-known/est/</text>
                  <text x="180" y="132">/&lt;p&gt;/usimplereenroll</text>
                  <text x="104" y="148">Content-Type:</text>
                  <text x="236" y="148">application/pkcs10</text>
                  <text x="80" y="180">&lt;Base64</text>
                  <text x="144" y="180">PKCS#10</text>
                  <text x="196" y="180">CSR&gt;</text>
                  <text x="84" y="196">(subject</text>
                  <text x="128" y="196">=</text>
                  <text x="156" y="196">cert</text>
                  <text x="188" y="196">to</text>
                  <text x="228" y="196">renew;</text>
                  <text x="100" y="212">optionally</text>
                  <text x="180" y="212">includes</text>
                  <text x="160" y="228">id-cmc-changeSubjectName)</text>
                  <text x="404" y="260">Verify</text>
                  <text x="452" y="260">PoP,</text>
                  <text x="400" y="276">Renew</text>
                  <text x="472" y="276">certificate</text>
                  <text x="84" y="308">HTTP/1.1</text>
                  <text x="136" y="308">200</text>
                  <text x="164" y="308">OK</text>
                  <text x="104" y="324">Content-Type:</text>
                  <text x="248" y="324">application/pkix-cert</text>
                  <text x="80" y="356">&lt;Base64</text>
                  <text x="128" y="356">DER</text>
                  <text x="196" y="356">certificate&gt;</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                             EST Server
   |                                        |
   |  [HTTP Basic auth header,              |
   |   or TLS client certificate]           |
   |                                        |
   |  POST /.well-known/est/                |
   |        /<p>/usimplereenroll            |
   |  Content-Type: application/pkcs10      |
   |                                        |
   |  <Base64 PKCS#10 CSR>                  |
   |  (subject = cert to renew;             |
   |   optionally includes                  |
   |   id-cmc-changeSubjectName)            |
   |--------------------------------------->|
   |                                        |  Verify PoP,
   |                                        |  Renew certificate
   |                                        |
   |  HTTP/1.1 200 OK                       |
   |  Content-Type: application/pkix-cert   |
   |                                        |
   |  <Base64 DER certificate>              |
   |<---------------------------------------|
   |                                        |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="flow-userverkeygen">
        <name>userverkeygen</name>
        <figure anchor="fig-userverkeygen">
          <name>userverkeygen message flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="416" width="528" viewBox="0 0 528 416" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 32,48 L 32,400" fill="none" stroke="black"/>
                <path d="M 360,48 L 360,400" fill="none" stroke="black"/>
                <path d="M 40,208 L 352,208" fill="none" stroke="black"/>
                <path d="M 40,368 L 352,368" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,208 348,202.4 348,213.6" fill="black" transform="rotate(0,352,208)"/>
                <polygon class="arrowhead" points="48,368 36,362.4 36,373.6" fill="black" transform="rotate(180,40,368)"/>
                <g class="text">
                  <text x="16" y="36">EST</text>
                  <text x="60" y="36">Client</text>
                  <text x="328" y="36">EST</text>
                  <text x="372" y="36">Server</text>
                  <text x="72" y="68">[HTTP</text>
                  <text x="120" y="68">Basic</text>
                  <text x="164" y="68">auth</text>
                  <text x="216" y="68">header,</text>
                  <text x="68" y="84">or</text>
                  <text x="96" y="84">TLS</text>
                  <text x="140" y="84">client</text>
                  <text x="220" y="84">certificate]</text>
                  <text x="68" y="116">POST</text>
                  <text x="176" y="116">/.well-known/est/&lt;p&gt;/</text>
                  <text x="160" y="132">userverkeygen</text>
                  <text x="104" y="148">Content-Type:</text>
                  <text x="236" y="148">application/pkcs10</text>
                  <text x="80" y="180">&lt;Base64</text>
                  <text x="144" y="180">PKCS#10</text>
                  <text x="196" y="180">CSR&gt;</text>
                  <text x="64" y="196">(no</text>
                  <text x="164" y="196">SubjectPublicKeyInfo</text>
                  <text x="280" y="196">needed)</text>
                  <text x="412" y="228">Generate</text>
                  <text x="464" y="228">key</text>
                  <text x="504" y="228">pair,</text>
                  <text x="400" y="244">Issue</text>
                  <text x="476" y="244">certificate,</text>
                  <text x="404" y="260">Delete</text>
                  <text x="448" y="260">key</text>
                  <text x="484" y="260">from</text>
                  <text x="404" y="276">server</text>
                  <text x="84" y="292">HTTP/1.1</text>
                  <text x="136" y="292">200</text>
                  <text x="164" y="292">OK</text>
                  <text x="104" y="308">Content-Type:</text>
                  <text x="252" y="308">application/x-pem-file</text>
                  <text x="100" y="340">&lt;PEM-encoded</text>
                  <text x="180" y="340">PKCS#8</text>
                  <text x="240" y="340">private</text>
                  <text x="292" y="340">key&gt;</text>
                  <text x="100" y="356">&lt;PEM-encoded</text>
                  <text x="204" y="356">certificate&gt;</text>
                  <text x="68" y="388">(key</text>
                  <text x="100" y="388">no</text>
                  <text x="140" y="388">longer</text>
                  <text x="180" y="388">on</text>
                  <text x="208" y="388">EST</text>
                  <text x="256" y="388">server)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
EST Client                             EST Server
   |                                        |
   |  [HTTP Basic auth header,              |
   |   or TLS client certificate]           |
   |                                        |
   |  POST /.well-known/est/<p>/            |
   |         userverkeygen                  |
   |  Content-Type: application/pkcs10      |
   |                                        |
   |  <Base64 PKCS#10 CSR>                  |
   |  (no SubjectPublicKeyInfo needed)      |
   |--------------------------------------->|
   |                                        |  Generate key pair,
   |                                        |  Issue certificate,
   |                                        |  Delete key from
   |                                        |  server
   |  HTTP/1.1 200 OK                       |
   |  Content-Type: application/x-pem-file  |
   |                                        |
   |  <PEM-encoded PKCS#8 private key>      |
   |  <PEM-encoded certificate>             |
   |<---------------------------------------|
   |  (key no longer on EST server)         |
   |                                        |
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="comparison-table">
      <name>Comparison with RFC 7030 Operations</name>
      <t>The following table summarizes how each new operation relates to its RFC 7030 counterpart, the changes in response format, and the corresponding RFC 7030 section (see <xref target="tab-comparison"/>).</t>
      <table anchor="tab-comparison">
        <name>Comparison of New Operations with RFC 7030 Counterparts</name>
        <thead>
          <tr>
            <th align="left">New Operation</th>
            <th align="left">RFC 7030 Operation</th>
            <th align="left">Auth</th>
            <th align="left">New Content-Type</th>
            <th align="left">New Format</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>ucacaps</tt></td>
            <td align="left">
              <em>(none)</em></td>
            <td align="left">No</td>
            <td align="left">
              <tt>text/plain</tt></td>
            <td align="left">Keyword list</td>
          </tr>
          <tr>
            <td align="left">
              <tt>ucacert</tt></td>
            <td align="left">
              <em>(none)</em></td>
            <td align="left">No</td>
            <td align="left">
              <tt>application/pkix-cert</tt></td>
            <td align="left">Single DER cert</td>
          </tr>
          <tr>
            <td align="left">
              <tt>ucacerts</tt></td>
            <td align="left">
              <tt>cacerts</tt> (<xref section="4.1" sectionFormat="comma" target="RFC7030"/>)</td>
            <td align="left">No</td>
            <td align="left">
              <tt>application/pem-certificate-chain</tt></td>
            <td align="left">PEM cert chain</td>
          </tr>
          <tr>
            <td align="left">
              <tt>ucrlinfo</tt></td>
            <td align="left">
              <em>(none)</em></td>
            <td align="left">No</td>
            <td align="left">
              <tt>text/plain</tt></td>
            <td align="left">CRL metadata</td>
          </tr>
          <tr>
            <td align="left">
              <tt>ucrl</tt></td>
            <td align="left">
              <em>(none)</em></td>
            <td align="left">No</td>
            <td align="left">
              <tt>application/pkix-crl</tt></td>
            <td align="left">DER CRL</td>
          </tr>
          <tr>
            <td align="left">
              <tt>usimpleenroll</tt></td>
            <td align="left">
              <tt>simpleenroll</tt> (<xref section="4.2.1" sectionFormat="comma" target="RFC7030"/>)</td>
            <td align="left">Yes</td>
            <td align="left">
              <tt>application/pkix-cert</tt></td>
            <td align="left">DER cert</td>
          </tr>
          <tr>
            <td align="left">
              <tt>usimplereenroll</tt></td>
            <td align="left">
              <tt>simplereenroll</tt> (<xref section="4.2.2" sectionFormat="comma" target="RFC7030"/>)</td>
            <td align="left">Yes</td>
            <td align="left">
              <tt>application/pkix-cert</tt></td>
            <td align="left">DER cert</td>
          </tr>
          <tr>
            <td align="left">
              <tt>userverkeygen</tt></td>
            <td align="left">
              <tt>serverkeygen</tt> (<xref section="4.4" sectionFormat="comma" target="RFC7030"/>)</td>
            <td align="left">Yes</td>
            <td align="left">
              <tt>application/x-pem-file</tt></td>
            <td align="left">PEM: PKCS#8 + certificate</td>
          </tr>
        </tbody>
      </table>
      <t>Key differences from RFC 7030 equivalents:</t>
      <ul spacing="normal">
        <li>
          <t><strong>New single-certificate retrieval operation</strong>: <tt>ucacert</tt> returns the issuing CA certificate as the Base64 encoding of a single DER-encoded X.509 certificate, with no certificate chain and no CMS wrapper.  <xref target="RFC7030"/> has no equivalent.  <tt>cacerts</tt> always returns the full chain in CMS format.</t>
        </li>
        <li>
          <t><strong>No CMS wrapper</strong>: The certificate- and CRL-returning operations deliver their payloads without CMS encapsulation.  EST clients therefore do not need a CMS library to parse those responses.</t>
        </li>
        <li>
          <t><strong>PEM instead of multipart</strong>: <tt>userverkeygen</tt> returns the private key and certificate in a single PEM file (<tt>application/x-pem-file</tt>) rather than a <tt>multipart/mixed</tt> MIME response (<xref section="4.4.2" sectionFormat="comma" target="RFC7030"/>).  EST clients do not need a MIME multipart parser or a CMS library.</t>
        </li>
        <li>
          <t><strong>New capability discovery operation</strong>: <tt>ucacaps</tt> enables EST clients to discover which operations the EST server supports.  <xref target="RFC7030"/> has no equivalent operation.</t>
        </li>
        <li>
          <t><strong>New CRL operations</strong>: <tt>ucrlinfo</tt> provides lightweight CRL metadata (number, validity window, issuer, and SHA-256 fingerprint) without downloading the full CRL body, and <tt>ucrl</tt> extends EST with in-band CRL retrieval when the full CRL is needed.  <xref target="RFC7030"/> does not define CRL distribution or CRL status operations; CRL retrieval is normally handled via the CDP extension in issued certificates.</t>
        </li>
      </ul>
    </section>
    <section anchor="rfc8295-comparison">
      <name>Comparison with RFC 8295</name>
      <t><xref target="RFC8295"/> defines EST extensions for package distribution, including the <tt>crls</tt> operation for distributing one or more CRLs (and ARLs).  This document addresses a narrower use case for the latest CRL of the selected CA.</t>
      <t>The main differences are summarized in <xref target="tab-rfc8295-comparison"/>.</t>
      <table anchor="tab-rfc8295-comparison">
        <name>Comparison with RFC 8295</name>
        <thead>
          <tr>
            <th align="left">Topic</th>
            <th align="left">RFC 8295 crls</th>
            <th align="left">This Document</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Object scope</td>
            <td align="left">Returns one or more CRLs in a CRL package and may also distribute ARLs.</td>
            <td align="left">
              <tt>ucrl</tt> returns a single current CRL; <tt>ucrlinfo</tt> returns metadata for that current CRL.</td>
          </tr>
          <tr>
            <td align="left">Metadata-only check</td>
            <td align="left">Not defined.</td>
            <td align="left">
              <tt>ucrlinfo</tt> allows freshness checks without downloading the CRL body.</td>
          </tr>
          <tr>
            <td align="left">Response format</td>
            <td align="left">Follows the RFC 7030 CMS-based response model for CRL packages.</td>
            <td align="left">Uses Base64-encoded DER for <tt>ucrl</tt> and plain text for <tt>ucrlinfo</tt>, without CMS.</td>
          </tr>
          <tr>
            <td align="left">Intended use</td>
            <td align="left">General EST extension for CRL/ARL distribution.</td>
            <td align="left">Lightweight retrieval of the current CRL and its metadata.</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="rfc9148-comparison">
      <name>Comparison with RFC 9148 (EST-coaps)</name>
      <t>RFC 9148 defines EST-coaps: a profile and transport mapping that carries EST messages over secure CoAP instead of HTTPS.  It changes the transfer substrate by using CoAP, DTLS, short CoAP resource paths, CoAP resource discovery, CoAP Block-Wise Transfer, and CoAP Content-Format identifiers.</t>
      <t>RFC 9148 is important prior art for reducing EST payload overhead.  In particular, it defines Content-Format 287 for <tt>application/pkix-cert</tt>, allowing a client to request a single DER-encoded certificate rather than a CMS <tt>certs-only</tt> object for certificate-returning EST-coaps functions.  RFC 9148 performs this selection with CoAP content negotiation, using the Accept Option, rather than by defining separate resources for each response format.</t>
      <t>This document addresses a related but different problem.  It keeps the HTTPS-based EST model of <xref target="RFC7030"/> and defines additional EST operations with simpler response payloads.  The goal is to reduce application-layer parsing requirements for EST clients that still use HTTP/TLS and to add operations that are not present in RFC 7030 or RFC 9148.</t>
      <t>The main differences are summarized in <xref target="tab-rfc9148-comparison"/>.</t>
      <table anchor="tab-rfc9148-comparison">
        <name>Comparison with RFC 9148</name>
        <thead>
          <tr>
            <th align="left">Topic</th>
            <th align="left">RFC 9148</th>
            <th align="left">This Document</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Transport</td>
            <td align="left">Defines EST over CoAP secured with DTLS.</td>
            <td align="left">Uses the existing EST HTTPS/TLS transport from RFC 7030.</td>
          </tr>
          <tr>
            <td align="left">URI design</td>
            <td align="left">Maps EST operations to short CoAP paths such as <tt>/crts</tt>, <tt>/sen</tt>, <tt>/sren</tt>, <tt>/skg</tt>, <tt>/skc</tt>, and <tt>/att</tt>.</td>
            <td align="left">Adds HTTP EST operations under the RFC 7030 <tt>/.well-known/est/</tt> path structure.</td>
          </tr>
          <tr>
            <td align="left">Discovery</td>
            <td align="left">Uses CoRE Link Format resource discovery for EST-coaps resources.</td>
            <td align="left">Defines <tt>ucacaps</tt> as an EST operation that returns supported operation keywords.</td>
          </tr>
          <tr>
            <td align="left">Response selection</td>
            <td align="left">Uses CoAP content negotiation; a client uses the Accept Option to request an available Content-Format.</td>
            <td align="left">Uses distinct HTTP EST resources for the unencapsulated operations, with <tt>ucacaps</tt> for capability discovery.</td>
          </tr>
          <tr>
            <td align="left">Certificate response format</td>
            <td align="left">Supports PKCS#7 <tt>certs-only</tt> Content-Format 281 and defines Content-Format 287 (<tt>application/pkix-cert</tt>) for a single non-CMS certificate response.</td>
            <td align="left">Defines unencapsulated HTTP operations whose successful responses use base64-encoded DER certificates or PEM certificate chains without CMS.</td>
          </tr>
          <tr>
            <td align="left">CA certificate retrieval</td>
            <td align="left">Maps the EST <tt>cacerts</tt> function to <tt>/crts</tt>; Content-Format 287 can carry a single certificate when negotiated.</td>
            <td align="left">Adds <tt>ucacert</tt> for a single issuing CA certificate and <tt>ucacerts</tt> for a PEM certificate chain.</td>
          </tr>
          <tr>
            <td align="left">Enrollment responses</td>
            <td align="left">Maps <tt>simpleenroll</tt> and <tt>simplereenroll</tt> to CoAP and permits single-certificate responses when Content-Format 287 is negotiated.</td>
            <td align="left">Defines <tt>usimpleenroll</tt> and <tt>usimplereenroll</tt> as HTTP/TLS operations that directly return a DER certificate.</td>
          </tr>
          <tr>
            <td align="left">Server-side key generation</td>
            <td align="left">Defines CoAP resources for server-side key generation and uses <tt>application/multipart-core</tt> for key-and-certificate responses.</td>
            <td align="left">Defines <tt>userverkeygen</tt>, returning a PEM-encoded private key and certificate in a single response body.</td>
          </tr>
          <tr>
            <td align="left">CRL support</td>
            <td align="left">Does not define EST-coaps CRL metadata or CRL retrieval operations.</td>
            <td align="left">Defines <tt>ucrlinfo</tt> and <tt>ucrl</tt> for CRL freshness checks and CRL retrieval.</td>
          </tr>
        </tbody>
      </table>
      <t>RFC 9148 is therefore complementary to this document rather than a substitute for it.  It already solves part of the same problem for EST-coaps by defining a non-CMS single-certificate format and negotiating it with Accept.  That mechanism may also inform implementations that expose the same semantics over transports other than CoAP.  However, RFC 9148 does not update the HTTPS resource model of RFC 7030, does not define the <tt>ucacaps</tt>, <tt>ucacert</tt>, <tt>ucacerts</tt>, <tt>ucrlinfo</tt>, <tt>ucrl</tt>, <tt>usimpleenroll</tt>, <tt>usimplereenroll</tt>, or <tt>userverkeygen</tt> HTTP operations, and does not define EST-based CRL metadata or CRL retrieval.</t>
      <t>An implementation can support both specifications.  For example, a server could offer EST-coaps resources for CoAP clients while also offering the operations defined in this document for HTTPS EST clients.  Another implementation might choose to apply RFC 9148-style content-negotiation semantics across multiple transports.  The interfaces can share the same CA, RA policy, authentication checks, and certificate issuance logic, but their standardized protocol bindings and payload formats are distinct.</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors want to thank Michael Richardson for reviewing and commenting on intermediate versions of the draft.</t>
    </section>
    <section numbered="false" anchor="implementation-notes">
      <name>Implementation Notes</name>
      <ul empty="true">
        <li>
          <t><strong>Editor's Note:</strong> This section is for author reference only.  It <bcp14>MUST</bcp14> be removed before RFC publication.</t>
        </li>
      </ul>
      <t>A reference implementation of the operations described in this document is available in the <tt>gateway</tt> module of the XiPKI open-source PKI project (https://github.com/xipki/xipki).</t>
      <t>The reference implementation supports HTTP Basic authentication and TLS client certificate authentication, consistent with <xref section="3.2.3" sectionFormat="comma" target="RFC7030"/> and <xref section="3.3.2" sectionFormat="comma" target="RFC7030"/>.  Its path routing also supports both the two-segment <tt>&lt;alias&gt;/&lt;operation&gt;</tt> form and the three-segment <tt>&lt;ca-name&gt;/&lt;cert-profile&gt;/&lt;operation&gt;</tt> form described in <xref target="est-url-structure"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
+p1WPNWZ58Zb7WSu9x0Dox+ZwJm9jSQx7Rx4OlNCKib+ZcrDINhACUgL1uh3
R6T5phoCzphoC3TJRvL2Cai0YM7AbkJ+HR6li0jyZD7N22aUoe05J/eHy2tU
1qfNePKCAp0OoMigGQK8pxzmJDUJ5VIFuj6K/0vyxEwwcF5fTok84AjFGeGd
HhXmXmGaMREjH3Jtc3+9+GFXlmECkhwnZZBFSFXcJeIo0XCOJIahEU9LLiyG
OZgjOVcYCyR0xrgHvIomo1Xx5Gw9AgYcgYCjJwe8tmzTL9qpF55TOonWjPG8
1aqIcOZWAjOLXueGsEsSL3yEWNBRamNv8DmvQ5W6I4IKO4mGcE2WcTofJzg5
HXE8ZBm0TklOsusgf2afAgMzzmrqBUlLkeygmN4gjy3NF+q1Em06h9OP3ZCO
04tk1iwdtbpp3C03LqarDafDmzYvj3UMeN8vs52tE12memxp/g6dj0v4Xn4+
8ljHeNuowgHr4MRzn0bAeek6+aeBVTb/x1p5jqaQnbZz5gwmAOHXWIKzIvLi
o93IuwoOz9JGxthSUM1Sixo4s4eSR4ssa9DE0vHk6eiYHjeG1aQ9YPdxwtPR
AT1imMV0it6uISCSHrkD5/TT0ZG3Nb3pp++ywn+22tjydMcUivTyanoNzLYJ
kw4KlKejwz5UK7cPqkWvMOyyRT9Ui67T6Wz1Q8Sno0M+UgvGh5qLXT7kssU+
UovVbEbPcDNTWjbDYztDhGEQ0d/EMOihkGG8XiGy0cVACszuXcI8ljKOdrZt
F3jkSQSJfHRwbifY3jCIUaMYNUwre7ZzGH6Sh+HPwTCr0RQ+aYfwr7cEeOfr
TRkefNEcsLpZJ5i3xXfjKzVoU9J2D9oQtsEXcUwufNprC4uXJb7uRfRl5Flt
Z1bod1qrqJoNreR1dj3lRjmjXEaW6Jk11zhQaLyloq7o3Go5Tki1TYfDbFb7
xaNfrVgkvArr0RDXU8Tt9Kqss51GTaGBxynkuST/kCvMGmiSsqdr4E3jIOs1
3PWSAJpzNrHWzvGM+hImCvaZkekSUeFtTMclPAwphQEG5xDcZBL6pyhNzJm4
4ltC1z6Hr93AktMhUOlpkPRCWPQ0xvZQM+gJ87D/4hfMBuhDL6DEXoOIegEF
sPeZUNlbLWCPcJz6xqAAA3KKdYZ1CQCM2C3NbFL2XjtJIIqR8rJLMdqqrrKw
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
fOoRN1vxzwd5Ot5uYsYNvHGB6unBan+effislSAi3N3c2KQs7dc/3PB0mL3t
mXv86U9biRVYqz0dSNMVn65ueN49rUXejWPbi3tWW/d8pW36p6slu4s9TUJz
tadXAmHj6RtA6J9eBYT89DcrIvinYhVm5KK2MM4vLKE3767TDJC7yalrmByH
4LuYviYO4dDta+cQUc1KPf1pK5EEba7oCXr5P2s9/VthFe5HYRX+2I1VpoFW
v73kuQmt/kUkz01jJ8mNZlPy2VioVd9ONLRP/yXQlINbfKLrpj/hqHwmf42N
HayFrqIIVvNX//RvSA+mQRAdfNb1XxeKcE3Yvx5Oq8Tp104RX1YXa7Yh3NjY
4E6D0ac7uw/Ca+2no40IO1cSbVDY+bRuXHjTLn8bihAUaray7aAITQ1fGSU0
nv56KSHmsdFPf9pKAp3j+MWzZU//VhilsSmKSY02NYxSjd40vzFu/aWRYS4N
4PrxpzGIEs95/mvs6U9aSbzavOtp/sNU0G0wrYKJ6Bz/Jeu2mKgSoyPY+KtS
Z5L8yNmFR+VR/1NfPWymU38FnOFLWSMdpoh7+jfhDAF6WhYRfNnNK6o4t6j+
zS9+Mb+IuUy+Nn6RJGs2OenbhG1aybF6Gt+lSg2TvnYRj5Z7uivPar399NfI
uY6zRi/Gf3OuX4NzVXHeVS3lXmGFuPCusCz835yrpdBHV8J/bnDdfoWcqyjj
baf41oZ1/fSvxl2kca+vnfrl6tEnj7DPFTW2t8Snvm40yn8pZuVDz5+NDNrF
FWn2seTpTt72eayNkh+wd3eJtxxiwqPPg1tvrXvVXYaMUNOeY4P6yxYT1C0z
KJSPlw1gOq3KdcC8XvfUAIvv7N03vpKLvk3MfDpNMcvaJBhrpXhw0GRBarop
vwrT+Nxsw3KOzk3M65QMNokN50Xz+ou+y1cOu6m5sVzzaU6bwHwPv35uoPch
eQXLclvEhJLWvuFLrAxI+FmNpPKVXBHUyGsaqPwmlwHqDiz5GzCcIlv/m/rq
VYl/L0l2+YFTVvlKOzcwpzWtMHB3RtSJa7nKapse26/6w0oXnHfM15VzhIkS
NCe702VmmzD4i8AV9AtwA5+FD30KuGxml3hxZMywVpleDb9a2l4bHv8pM8uP
p3EuzVKND+2+nEtb1n7GjEFuCW8x+Kq7S2XHBsOEMUCCHcuV/xCk0vhUraHq
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
8RLnAAA=

-->

</rfc>
