<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-cose-x509-09" indexInclude="true" ipr="trust200902" number="9360" prepTime="2023-02-16T14:32:02" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-cose-x509-09" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9360" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="COSE X.509">CBOR Object Signing and Encryption (COSE): Header Parameters for Carrying and Referencing X.509 Certificates</title>
    <seriesInfo name="RFC" value="9360" stream="IETF"/>
    <author initials="J." surname="Schaad" fullname="Jim Schaad">
      <organization showOnFrontPage="true">August Cellars</organization>
    </author>
    <date month="02" year="2023"/>
    <area>sec</area>
    <workgroup>cose</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
   The CBOR Object Signing and Encryption (COSE) message structure uses references to
   keys in general.  For some algorithms, additional properties are defined
   that carry parameters relating to keys as needed.  The COSE Key structure
   is used for transporting keys outside of COSE messages.  This document
   extends the way that keys can be identified and transported by providing
   attributes that refer to or contain X.509 certificates.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9360" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2023 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-terminology">Requirements Terminology</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-x509-cose-header-parameters">X.509 COSE Header Parameters</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-x509-certificates-and-stati">X.509 Certificates and Static-Static ECDH</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cose-header-parameters-regi">COSE Header Parameters Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cose-header-algorithm-param">COSE Header Algorithm Parameters Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-media-type-application-cose">Media Type application/cose-x509</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
   In the process of writing <xref target="RFC8152" format="default" sectionFormat="of" derivedContent="RFC8152"/> and <xref target="RFC9052" format="default" sectionFormat="of" derivedContent="RFC9052"/>, the CBOR Object Signing and Encryption (COSE) Working Group discussed X.509
   certificates <xref target="RFC5280" format="default" sectionFormat="of" derivedContent="RFC5280"/> and decided that no use cases were presented that
   showed a need to support certificates.  Since that time, a number of cases
   have been defined in which X.509 certificate support is necessary, and by
   implication, applications will need a documented and consistent way to
   handle such certificates.  This document defines a set of attributes that
   will allow applications to transport and refer to X.509 certificates in a
   consistent manner.</t>
      <t indent="0" pn="section-1-2">
   In some of these cases, a constrained device is being deployed in the
   context of an existing X.509 PKI: for example,
   <xref target="Constrained-BRSKI" format="default" sectionFormat="of" derivedContent="Constrained-BRSKI"/> describes a device enrollment solution
   that relies on the presence of a factory-installed certificate on the
   device.  <xref target="EDHOC" format="default" sectionFormat="of" derivedContent="EDHOC"/> was also written with the idea
   that long-term certificates could be used to provide for authentication of
   devices and establish session keys.  Another possible
   scenario is the use of COSE as the basis for a secure messaging
   application.  This scenario assumes the presence of long-term keys and a
   central authentication authority.  Basing such an application on public key
   certificates allows it to make use of well-established key management
   disciplines.</t>
      <section anchor="sect-1.1" numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-requirements-terminology">Requirements Terminology</name>
        <t indent="0" pn="section-1.1-1">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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only
         when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="sect-2" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-x509-cose-header-parameters">X.509 COSE Header Parameters</name>
      <t indent="0" pn="section-2-1">
   The use of X.509 certificates allows for an existing trust infrastructure
   to be used with COSE.  This includes the full suite of enrollment
   protocols, trust anchors, trust chaining, and revocation checking that have
   been defined over time by the IETF and other organizations.  The Concise Binary Object Representation (CBOR) key structures <xref target="RFC8949" format="default" sectionFormat="of" derivedContent="RFC8949"/> that have been defined in COSE currently do not support all of
   these properties, although some may be found in CBOR Web Tokens (CWTs)
   <xref target="RFC8392" format="default" sectionFormat="of" derivedContent="RFC8392"/>.</t>
      <t indent="0" pn="section-2-2">
   It is not necessarily expected that constrained devices themselves will
   evaluate and process X.509 certificates: it is perfectly reasonable for a
   constrained device to be provisioned with a certificate that it
   subsequently provides to a relying party -- along with a signature or
   encrypted message -- on the assumption that the relying party is not a
   constrained device and is capable of performing the required certificate
   evaluation and processing.  It is also reasonable that a constrained device
   would have the hash of a certificate associated with a public key and be
   configured to use a public key for that thumbprint, but without performing
   the certificate evaluation or even having the entire certificate.  In any
   case, there still needs to be an entity that is responsible for handling
   the possible certificate revocation.</t>
      <t indent="0" pn="section-2-3">
   Parties that intend to rely on the assertions made by a certificate
   obtained from any of these methods still need to validate it.  This
   validation can be done according to the PKIX rules specified in <xref target="RFC5280" format="default" sectionFormat="of" derivedContent="RFC5280"/> or by using
   a different trust structure, such as a trusted certificate distributor for
   self-signed certificates.  The PKIX validation includes matching against
   the trust anchors configured for the application.  These rules apply when
   the validation succeeds in a single step as well as when certificate chains
   need to be built.  If the application cannot establish trust in the
   certificate, the public key contained in the certificate cannot be used for
   cryptographic operations.</t>
      <t indent="0" pn="section-2-4">
   The header parameters defined in this document are as follows:</t>
      <dl spacing="normal" newline="false" indent="3" pn="section-2-5">
        <dt pn="section-2-5.1">x5bag:</dt>
        <dd pn="section-2-5.2">
          <t indent="0" pn="section-2-5.2.1">This header parameter contains a bag of X.509 certificates.  The set
   of certificates in this header parameter is unordered and may contain
   self-signed certificates.  Note that there could be duplicate certificates.
   The certificate bag can contain certificates that are completely
   extraneous to the message.  (An example of this would be where a signed
   message is being used to transport a certificate containing a key agreement
   key.)  As the certificates are unordered, the party evaluating the
   signature will need to be capable of building the certificate path as
   necessary.  That party will also have to take into account that the bag may
   not contain the full set of certificates needed to build any particular
   chain.</t>
          <t indent="0" pn="section-2-5.2.2">
   The trust mechanism <bcp14>MUST</bcp14> process any certificates in this parameter as
   untrusted input.  The presence of a self-signed certificate in the
   parameter <bcp14>MUST NOT</bcp14> cause the update of the set of trust anchors without
   some out-of-band confirmation.  As the contents of this header parameter
   are untrusted input, the header parameter can be in either the protected or
   unprotected header bucket.  Sending the header parameter in the unprotected
   header bucket allows an intermediary to remove or add certificates.</t>
          <t indent="0" pn="section-2-5.2.3">
   The end-entity certificate <bcp14>MUST</bcp14> be integrity protected by COSE.  This can,
   for example, be done by sending the header parameter in the protected header,
   sending an 'x5bag' in the unprotected header combined with an 'x5t' in the
   protected header, or including the end-entity certificate in the
   external_aad.</t>
          <t indent="0" pn="section-2-5.2.4">
   This header parameter allows for a single X.509 certificate or a bag of
   X.509 certificates to be carried in the message.
          </t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2-5.2.5">
            <li pn="section-2-5.2.5.1">If a single certificate is conveyed, it is placed in a CBOR byte string.</li>
            <li pn="section-2-5.2.5.2">If multiple certificates are conveyed, a CBOR array of byte strings is
     used, with each certificate being in its own byte string.</li>
          </ul>
        </dd>
        <dt pn="section-2-5.3">x5chain:</dt>
        <dd pn="section-2-5.4">
          <t indent="0" pn="section-2-5.4.1">This header parameter contains an ordered array of X.509
   certificates.  The certificates are to be ordered starting with the
   certificate containing the end-entity key followed by the certificate that
   signed it, and so on.  There is no requirement for the entire chain to be
   present in the element if there is reason to believe that the relying party
   already has, or can locate, the missing certificates.  This means that the
   relying party is still required to do path building but that a candidate
   path is proposed in this header parameter.</t>
          <t indent="0" pn="section-2-5.4.2">
   The trust mechanism <bcp14>MUST</bcp14> process any certificates in this parameter as
   untrusted input.  The presence of a self-signed certificate in the
   parameter <bcp14>MUST NOT</bcp14> cause the update of the set of trust anchors without
   some out-of-band confirmation.  As the contents of this header parameter
   are untrusted input, the header parameter can be in either the protected or
   unprotected header bucket.  Sending the header parameter in the unprotected
   header bucket allows an intermediary to remove or add certificates.</t>
          <t indent="0" pn="section-2-5.4.3">
   The end-entity certificate <bcp14>MUST</bcp14> be integrity protected by COSE.  This can,
   for example, be done by sending the header parameter in the protected header,
   sending an 'x5chain' in the unprotected header combined with an 'x5t' in the
   protected header, or including the end-entity certificate in the
   external_aad.</t>
          <t indent="0" pn="section-2-5.4.4">
   This header parameter allows for a single X.509 certificate or a chain of
   X.509 certificates to be carried in the message.
          </t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2-5.4.5">
            <li pn="section-2-5.4.5.1">If a single certificate is conveyed, it is placed in a CBOR byte string.</li>
            <li pn="section-2-5.4.5.2">If multiple certificates are conveyed, a CBOR array of byte strings is
     used, with each certificate being in its own byte string.</li>
          </ul>
        </dd>
        <dt pn="section-2-5.5">x5t:</dt>
        <dd pn="section-2-5.6">
          <t indent="0" pn="section-2-5.6.1">This header parameter identifies the end-entity X.509 certificate by a
   hash value (a thumbprint).  The 'x5t' header parameter is represented as an
   array of two elements.  The first element is an algorithm identifier that
   is an integer or a string containing the hash algorithm identifier
   corresponding to the Value column (integer or text string) of the algorithm
   registered in the "COSE Algorithms" registry
   (see <eref target="https://www.iana.org/assignments/cose/" brackets="angle"/>). The second
   element is a binary string containing the hash value computed over the
   DER-encoded certificate.</t>
          <t indent="0" pn="section-2-5.6.2">
   As this header parameter does not provide any trust, the header parameter
   can be in either a protected or unprotected header bucket.</t>
          <t indent="0" pn="section-2-5.6.3">
   The identification of the end-entity certificate <bcp14>MUST</bcp14> be integrity
   protected by COSE.  This can be done by sending the header parameter in the
   protected header or including the end-entity certificate in the
   external_aad.</t>
          <t indent="0" pn="section-2-5.6.4">
   The 'x5t' header parameter can be used alone or together with the 'x5bag',
   'x5chain', or 'x5u' header parameters to provide integrity protection of
   the end-entity certificate.</t>
          <t indent="0" pn="section-2-5.6.5">
   For interoperability, applications that use this header parameter <bcp14>MUST</bcp14>
   support the hash algorithm 'SHA-256' but can use other hash algorithms.
   This requirement allows for different implementations to be configured to
   use an interoperable algorithm, but does not preclude the use (by prior
   agreement) of other algorithms.</t>
        </dd>
        <dt pn="section-2-5.7">x5u:</dt>
        <dd pn="section-2-5.8">
          <t indent="0" pn="section-2-5.8.1">This header parameter provides the ability to identify an X.509
   certificate by a URI <xref target="RFC3986" format="default" sectionFormat="of" derivedContent="RFC3986"/>.  It contains a CBOR text string.  The
   referenced resource can be any of the following media types:
          </t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2-5.8.2">
            <li pn="section-2-5.8.2.1">application/pkix-cert <xref target="RFC2585" format="default" sectionFormat="of" derivedContent="RFC2585"/></li>
            <li pn="section-2-5.8.2.2">application/pkcs7-mime; smime-type="certs-only" <xref target="RFC8551" format="default" sectionFormat="of" derivedContent="RFC8551"/></li>
            <li pn="section-2-5.8.2.3">application/cose-x509 (<xref target="sect-4.3" format="default" sectionFormat="of" derivedContent="Section 4.3"/>)</li>
            <li pn="section-2-5.8.2.4">application/cose-x509; usage=chain (<xref target="sect-4.3" format="default" sectionFormat="of" derivedContent="Section 4.3"/>)</li>
          </ul>
          <t indent="0" pn="section-2-5.8.3">
   When the application/cose-x509 media type is used, the data is a CBOR
   sequence of single-entry COSE_X509 structures (encoding "bstr").  If the
   parameter "usage" is set to "chain", this sequence indicates a certificate
   chain.</t>
          <t indent="0" pn="section-2-5.8.4">
   The end-entity certificate <bcp14>MUST</bcp14> be integrity protected by COSE.  This can,
   for example, be done by sending the 'x5u' in the unprotected or protected header
   combined with an 'x5t' in the protected header, or including the end-entity
   certificate in the external_aad.  As the end-entity certificate is
   integrity protected by COSE, the URI does not need to provide any
   protection.</t>
          <t indent="0" pn="section-2-5.8.5">
   If a retrieved certificate does not chain to an existing trust anchor, that
   certificate <bcp14>MUST NOT</bcp14> be trusted unless the URI provides integrity
   protection and server authentication and the server is configured as
   trusted to provide new trust anchors or if an out-of-band confirmation can
   be received for trusting the retrieved certificate.  If an HTTP or
   Constrained Application Protocol (CoAP) GET request is used to retrieve a certificate, TLS <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/>, DTLS
   <xref target="RFC9147" format="default" sectionFormat="of" derivedContent="RFC9147"/>, or Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613" format="default" sectionFormat="of" derivedContent="RFC8613"/> <bcp14>SHOULD</bcp14> be used.</t>
        </dd>
      </dl>
      <t indent="0" pn="section-2-6">
   The header parameters are used in the following locations:
      </t>
      <dl spacing="normal" newline="false" indent="3" pn="section-2-7">
        <dt pn="section-2-7.1">COSE_Signature and COSE_Sign1 objects:</dt>
        <dd pn="section-2-7.2">In these objects, the parameters identify the
     certificate to be used for validating the signature.</dd>
        <dt pn="section-2-7.3">COSE_recipient objects:</dt>
        <dd pn="section-2-7.4">In this location, the parameters identify the certificate
     for the recipient of the message.</dd>
      </dl>
      <t indent="0" pn="section-2-8">
   The labels assigned to each header parameter can be found in <xref target="tab-1" format="default" sectionFormat="of" derivedContent="Table 1"/>.</t>
      <table anchor="tab-1" align="center" pn="table-1">
        <name slugifiedName="name-x509-cose-header-parameters-2">X.509 COSE Header Parameters</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Name</th>
            <th align="left" colspan="1" rowspan="1">Label</th>
            <th align="left" colspan="1" rowspan="1">Value Type</th>
            <th align="left" colspan="1" rowspan="1">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">x5bag</td>
            <td align="left" colspan="1" rowspan="1">32</td>
            <td align="left" colspan="1" rowspan="1">COSE_X509</td>
            <td align="left" colspan="1" rowspan="1">An unordered bag of X.509 certificates</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">x5chain</td>
            <td align="left" colspan="1" rowspan="1">33</td>
            <td align="left" colspan="1" rowspan="1">COSE_X509</td>
            <td align="left" colspan="1" rowspan="1">An ordered chain of X.509 certificates</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">x5t</td>
            <td align="left" colspan="1" rowspan="1">34</td>
            <td align="left" colspan="1" rowspan="1">COSE_CertHash</td>
            <td align="left" colspan="1" rowspan="1">Hash of an X.509 certificate</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">x5u</td>
            <td align="left" colspan="1" rowspan="1">35</td>
            <td align="left" colspan="1" rowspan="1">uri</td>
            <td align="left" colspan="1" rowspan="1">URI pointing to an X.509 certificate</td>
          </tr>
        </tbody>
      </table>
      <t indent="0" pn="section-2-10">
   Below is an equivalent Concise Data Definition Language (CDDL) description
   (see <xref target="RFC8610" format="default" sectionFormat="of" derivedContent="RFC8610"/>) of the text above.</t>
      <sourcecode name="" type="cddl" markers="false" pn="section-2-11">
COSE_X509 = bstr / [ 2*certs: bstr ]
COSE_CertHash = [ hashAlg: (int / tstr), hashValue: bstr ]
</sourcecode>
      <t indent="0" pn="section-2-12">The contents of "bstr" are the bytes of a DER-encoded certificate.</t>
    </section>
    <section anchor="sect-3" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-x509-certificates-and-stati">X.509 Certificates and Static-Static ECDH</name>
      <t indent="0" pn="section-3-1">
   The header parameters defined in the previous section are used to identify
   the recipient certificates for the Elliptic Curve Diffie-Hellman (ECDH) key agreement algorithms.  In this
   section, we define the algorithm-specific parameters that are used for
   identifying or transporting the sender's key for static-static key
   agreement algorithms.</t>
      <t indent="0" pn="section-3-2">
   These attributes are defined analogously to those in the previous section.
   There is no definition for the certificate bag, as the same attribute would
   be used for both the sender and recipient certificates.</t>
      <dl spacing="normal" newline="true" indent="3" pn="section-3-3">
        <dt pn="section-3-3.1">x5chain-sender:</dt>
        <dd pn="section-3-3.2">This header parameter contains the chain of certificates
   starting with the sender's key exchange certificate.  The structure is the
   same as 'x5chain'.</dd>
        <dt pn="section-3-3.3">x5t-sender:</dt>
        <dd pn="section-3-3.4">This header parameter contains the hash value for the sender's
   key exchange certificate.  The structure is the same as 'x5t'.</dd>
        <dt pn="section-3-3.5">x5u-sender:</dt>
        <dd pn="section-3-3.6">This header parameter contains a URI for the sender's key
   exchange certificate.  The structure and processing are the same as 'x5u'.</dd>
      </dl>
      <table anchor="tab-2" align="center" pn="table-2">
        <name slugifiedName="name-static-ecdh-algorithm-value">Static ECDH Algorithm Values</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Name</th>
            <th align="left" colspan="1" rowspan="1">Label</th>
            <th align="left" colspan="1" rowspan="1">Type</th>
            <th align="left" colspan="1" rowspan="1">Algorithm</th>
            <th align="left" colspan="1" rowspan="1">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">x5t-sender</td>
            <td align="left" colspan="1" rowspan="1">-27</td>
            <td align="left" colspan="1" rowspan="1">COSE_CertHash</td>
            <td align="left" colspan="1" rowspan="1">ECDH-SS+HKDF-256, ECDH-SS+HKDF-512, ECDH-SS+A128KW, ECDH-SS+A192KW, ECDH-SS+A256KW</td>
            <td align="left" colspan="1" rowspan="1">Thumbprint for the sender's X.509 certificate</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">x5u-sender</td>
            <td align="left" colspan="1" rowspan="1">-28</td>
            <td align="left" colspan="1" rowspan="1">uri</td>
            <td align="left" colspan="1" rowspan="1">ECDH-SS+HKDF-256, ECDH-SS+HKDF-512, ECDH-SS+A128KW, ECDH-SS+A192KW, ECDH-SS+A256KW</td>
            <td align="left" colspan="1" rowspan="1">URI for the sender's X.509 certificate</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">x5chain-sender</td>
            <td align="left" colspan="1" rowspan="1">-29</td>
            <td align="left" colspan="1" rowspan="1">COSE_X509</td>
            <td align="left" colspan="1" rowspan="1">ECDH-SS+HKDF-256, ECDH-SS+HKDF-512, ECDH-SS+A128KW, ECDH-SS+A192KW, ECDH-SS+A256KW</td>
            <td align="left" colspan="1" rowspan="1">static key X.509 certificate chain</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="sect-4" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="sect-4.1" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-cose-header-parameters-regi">COSE Header Parameters Registry</name>
        <t indent="0" pn="section-4.1-1">
   IANA has registered the new COSE Header parameters in <xref target="tab-1" format="default" sectionFormat="of" derivedContent="Table 1"/> in
   the "COSE Header Parameters" registry.  The "Value Registry" field is empty
   for all of the items.  For each item, the "Reference" field points to this
   document.</t>
      </section>
      <section anchor="sect-4.2" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-cose-header-algorithm-param">COSE Header Algorithm Parameters Registry</name>
        <t indent="0" pn="section-4.2-1">
   IANA has registered the new COSE Header Algorithm parameters in
   <xref target="tab-2" format="default" sectionFormat="of" derivedContent="Table 2"/> in the "COSE Header Algorithm Parameters" registry.  For each item,
   the "Reference" field points to this document.</t>
      </section>
      <section anchor="sect-4.3" numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-media-type-application-cose">Media Type application/cose-x509</name>
        <t indent="0" pn="section-4.3-1">
   When the application/cose-x509 media type is used, the data is a CBOR
   sequence of single-entry COSE_X509 structures (encoding "bstr").  If the
   parameter "usage" is set to "chain", this sequence indicates a certificate
   chain.</t>
        <t indent="0" pn="section-4.3-2">
   IANA has registered the following media type <xref target="RFC6838" format="default" sectionFormat="of" derivedContent="RFC6838"/>:</t>
        <dl spacing="normal" newline="false" indent="3" pn="section-4.3-3">
          <dt pn="section-4.3-3.1">Type name:</dt>
          <dd pn="section-4.3-3.2">
            <t indent="0" pn="section-4.3-3.2.1">application</t>
          </dd>
          <dt pn="section-4.3-3.3">Subtype name:</dt>
          <dd pn="section-4.3-3.4">
            <t indent="0" pn="section-4.3-3.4.1">cose-x509</t>
          </dd>
          <dt pn="section-4.3-3.5">Required parameters:</dt>
          <dd pn="section-4.3-3.6">
            <t indent="0" pn="section-4.3-3.6.1">N/A</t>
          </dd>
          <dt pn="section-4.3-3.7">Optional parameters:</dt>
          <dd pn="section-4.3-3.8">
            <t indent="0" pn="section-4.3-3.8.1">usage</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.3-3.8.2">
              <li pn="section-4.3-3.8.2.1">Can be absent to provide no further information about the intended
	meaning of the order in the CBOR sequence of certificates.</li>
              <li pn="section-4.3-3.8.2.2">Can be set to "chain" to indicate that the sequence of data items
	is to be interpreted as a certificate chain.</li>
            </ul>
          </dd>
          <dt pn="section-4.3-3.9">Encoding considerations:</dt>
          <dd pn="section-4.3-3.10">
            <t indent="0" pn="section-4.3-3.10.1">binary</t>
          </dd>
          <dt pn="section-4.3-3.11">Security considerations:</dt>
          <dd pn="section-4.3-3.12">
            <t indent="0" pn="section-4.3-3.12.1">See the Security Considerations section of RFC 9360.</t>
          </dd>
          <dt pn="section-4.3-3.13">Interoperability considerations:</dt>
          <dd pn="section-4.3-3.14">
            <t indent="0" pn="section-4.3-3.14.1">N/A</t>
          </dd>
          <dt pn="section-4.3-3.15">Published specification:</dt>
          <dd pn="section-4.3-3.16">
            <t indent="0" pn="section-4.3-3.16.1">RFC 9360</t>
          </dd>
          <dt pn="section-4.3-3.17">Applications that use this media type:</dt>
          <dd pn="section-4.3-3.18">
            <t indent="0" pn="section-4.3-3.18.1">Applications that employ COSE and use X.509 as a certificate type.</t>
          </dd>
          <dt pn="section-4.3-3.19">Fragment identifier considerations:</dt>
          <dd pn="section-4.3-3.20">
            <t indent="0" pn="section-4.3-3.20.1">N/A</t>
          </dd>
          <dt pn="section-4.3-3.21">Additional information:</dt>
          <dd pn="section-4.3-3.22">
            <t indent="0" pn="section-4.3-3.22.1"><br/></t>
            <dl spacing="compact" indent="3" newline="false" pn="section-4.3-3.22.2">
              <dt pn="section-4.3-3.22.2.1">Deprecated alias names for this type:</dt>
              <dd pn="section-4.3-3.22.2.2">N/A</dd>
              <dt pn="section-4.3-3.22.2.3">Magic number(s):</dt>
              <dd pn="section-4.3-3.22.2.4">N/A</dd>
              <dt pn="section-4.3-3.22.2.5">File extension(s):</dt>
              <dd pn="section-4.3-3.22.2.6">N/A</dd>
              <dt pn="section-4.3-3.22.2.7">Macintosh file type code(s):</dt>
              <dd pn="section-4.3-3.22.2.8">N/A</dd>
            </dl>
          </dd>
          <dt pn="section-4.3-3.23">Person &amp; email address to contact for further information:</dt>
          <dd pn="section-4.3-3.24">
            <br/>iesg@ietf.org</dd>
          <dt pn="section-4.3-3.25">Intended usage:</dt>
          <dd pn="section-4.3-3.26">COMMON</dd>
          <dt pn="section-4.3-3.27">Restrictions on usage:</dt>
          <dd pn="section-4.3-3.28">N/A</dd>
          <dt pn="section-4.3-3.29">Author:</dt>
          <dd pn="section-4.3-3.30">COSE WG</dd>
          <dt pn="section-4.3-3.31">Change controller:</dt>
          <dd pn="section-4.3-3.32">IESG</dd>
        </dl>
      </section>
    </section>
    <section anchor="sect-5" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-5-1">
   Establishing trust in a certificate is a vital part of processing.  A major
   component of establishing trust is determining what the set of trust
   anchors are for the process.  A new self-signed certificate appearing on
   the client cannot be a trigger to modify the set of trust anchors, because
   a well-defined trust-establishment process is required.  One common way for
   a new trust anchor to be added to (or removed from) a device is by doing a new
   firmware upgrade.</t>
      <t indent="0" pn="section-5-2">
   In constrained systems, there is a trade-off between the order of checking
   the signature and checking the certificate for validity.  Validating
   certificates can require that network resources be accessed in order to get
   revocation information or retrieve certificates during path building.  The
   resulting network access can consume power and network bandwidth.  On the
   other hand, if the certificates are validated after the signature is
   validated, an oracle can potentially be built based on detecting the
   network resources, which is only done if the signature validation passes.
   In any event, both the signature validation and the certificate validation <bcp14>MUST</bcp14> be
   completed successfully before acting on any requests.</t>
      <t indent="0" pn="section-5-3">
   Unless it is known that the Certificate Authority (CA) required proof of possession of the
   subject's private key to issue an end-entity certificate, the end-entity
   certificate <bcp14>MUST</bcp14> be integrity protected by COSE.  Without
   proof of possession, an attacker can trick the CA into issuing an
   identity-misbinding certificate with someone else's "borrowed" public key
   but with a different subject.  An on-path attacker can then perform an
   identity-misbinding attack by replacing the real end-entity certificate in
   COSE with such an identity-misbinding certificate.</t>
      <t indent="0" pn="section-5-4">
   End-entity X.509 certificates contain identities that a passive on-path
   attacker eavesdropping on the conversation can use to identify and track
   the subject.  COSE does not provide identity protection by itself, and the
   'x5t' and 'x5u' header parameters are just alternative permanent identifiers
   and can also be used to track the subject.  To provide identity protection,
   COSE can be sent inside another security protocol providing
   confidentiality.</t>
      <t indent="0" pn="section-5-5">
   Before using the key in a certificate, the key <bcp14>MUST</bcp14> be checked against the
   algorithm to be used, and any algorithm-specific checks need to be made.
   These checks can include validating that points are on curves for
   elliptical curve algorithms and that the sizes of RSA keys are within an acceptable range.  The use of unvalidated keys can lead to either loss of
   security or excessive consumption of resources (for example, using a 200K
   RSA key).</t>
      <t indent="0" pn="section-5-6">
   When processing the 'x5u' header parameter, the security considerations of
   <xref target="RFC3986" format="default" sectionFormat="of" derivedContent="RFC3986"/>, and specifically those defined in <xref target="RFC3986" sectionFormat="of" section="7.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc3986#section-7.1" derivedContent="RFC3986"/>, also
   apply.</t>
      <t indent="0" pn="section-5-7">
   Regardless of the source, certification path validation is an important
   part of establishing trust in a certificate.  <xref target="RFC5280" sectionFormat="of" section="6" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5280#section-6" derivedContent="RFC5280"/>
   provides guidance for the path validation.  The security considerations of
   <xref target="RFC5280" format="default" sectionFormat="of" derivedContent="RFC5280"/> are also important for the correct usage of this document.</t>
      <t indent="0" pn="section-5-8">
   Protecting the integrity of the 'x5bag', 'x5chain', and 'x5t' contents by placing
   them in the protected header bucket can help mitigate some risks of a
   misbehaving CA (cf. <xref target="RFC2634" sectionFormat="of" section="5.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc2634#section-5.1" derivedContent="RFC2634"/>).</t>
      <t indent="0" pn="section-5-9">
   The security of the algorithm used for 'x5t' does not affect the security
   of the system, as this header parameter selects which certificate that is
   already present on the system should be used, but it does not provide any
   trust.</t>
    </section>
  </middle>
  <back>
    <references pn="section-6">
      <name slugifiedName="name-references">References</name>
      <references pn="section-6.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC5280" target="https://www.rfc-editor.org/info/rfc5280" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC8152" target="https://www.rfc-editor.org/info/rfc8152" quoteTitle="true" derivedAnchor="RFC8152">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="July" year="2017"/>
            <abstract>
              <t indent="0">Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined for this data format.  This document defines the CBOR Object Signing and Encryption (COSE) protocol.  This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization.  This specification additionally describes how to represent cryptographic keys using CBOR.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8152"/>
          <seriesInfo name="DOI" value="10.17487/RFC8152"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="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 indent="0">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>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949" quoteTitle="true" derivedAnchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t indent="0">The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t indent="0">This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052" quoteTitle="true" derivedAnchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t indent="0">Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t indent="0">This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
      </references>
      <references pn="section-6.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="Constrained-BRSKI" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-anima-constrained-voucher-19" derivedAnchor="Constrained-BRSKI">
          <front>
            <title>Constrained Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization showOnFrontPage="true">Sandelman Software Works</organization>
            </author>
            <author fullname="Peter van der Stok" initials="P." surname="van der Stok">
              <organization showOnFrontPage="true">vanderstok consultancy</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization showOnFrontPage="true">Cisco Systems</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization showOnFrontPage="true">IoTconsultancy.nl</organization>
            </author>
            <date month="January" day="2" year="2023"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-19"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="EDHOC" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-lake-edhoc-19" derivedAnchor="EDHOC">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization showOnFrontPage="true">Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J." surname="Preuß Mattsson">
              <organization showOnFrontPage="true">Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization showOnFrontPage="true">Ericsson AB</organization>
            </author>
            <date day="3" month="February" year="2023"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-19"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC2585" target="https://www.rfc-editor.org/info/rfc2585" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC2634" target="https://www.rfc-editor.org/info/rfc2634" quoteTitle="true" derivedAnchor="RFC2634">
          <front>
            <title>Enhanced Security Services for S/MIME</title>
            <author fullname="P. Hoffman" initials="P." role="editor" surname="Hoffman"/>
            <date month="June" year="1999"/>
            <abstract>
              <t indent="0">This document describes four optional security service extensions for S/MIME. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2634"/>
          <seriesInfo name="DOI" value="10.17487/RFC2634"/>
        </reference>
        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986" quoteTitle="true" derivedAnchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t indent="0">A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC6838" target="https://www.rfc-editor.org/info/rfc6838" quoteTitle="true" derivedAnchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t indent="0">This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols.  This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC8392" target="https://www.rfc-editor.org/info/rfc8392" quoteTitle="true" derivedAnchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t indent="0">CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties.  The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection.  A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value.  CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t indent="0">This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t indent="0">This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8551" target="https://www.rfc-editor.org/info/rfc8551" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC8610" target="https://www.rfc-editor.org/info/rfc8610" quoteTitle="true" derivedAnchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t indent="0">This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8613" target="https://www.rfc-editor.org/info/rfc8613" quoteTitle="true" derivedAnchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t indent="0">This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t indent="0">Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/rfc9147" quoteTitle="true" derivedAnchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t indent="0">This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t indent="0">The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t indent="0">This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
      </references>
    </references>
    <section anchor="acks" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">
   <contact fullname="Jim Schaad"/> passed on 3 October 2020.  This document is primarily his
   work.  <contact fullname="Ivaylo Petrov"/> served as the document editor after Jim's
   untimely death, mostly helping with the approval and publication
   processes.  Jim deserves all credit for the technical content.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author initials="J." surname="Schaad" fullname="Jim Schaad">
        <organization showOnFrontPage="true">August Cellars</organization>
      </author>
    </section>
  </back>
</rfc>
