<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category="std" consensus="true" docName="draft-ietf-cose-x509-09" number="9360" ipr="trust200902" obsoletes="" updates="" xml:lang="en" symRefs="true" sortRefs="true" tocInclude="true" version="3">

  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <!-- Generated by id2xml 1.5.0 on 2022-11-16T00:19:45Z -->
	<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"/>
    <author initials="J." surname="Schaad" fullname="Jim Schaad">
      <organization>August Cellars</organization>
    </author>
    <date year="2023" month="February"/>

    <area>sec</area>
    <workgroup>cose</workgroup>

    <abstract>
      <t>
   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>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
   In the process of writing <xref target="RFC8152" format="default"/> and <xref target="RFC9052" format="default"/>, the CBOR Object Signing and Encryption (COSE) Working Group discussed X.509
   certificates <xref target="RFC5280" format="default"/> 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>
   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"/> describes a device enrollment solution
   that relies on the presence of a factory-installed certificate on the
   device.  <xref target="EDHOC" format="default"/> 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="default">
        <name>Requirements Terminology</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&nbsp;14
         <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
         when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="sect-2" numbered="true" toc="default">
      <name>X.509 COSE Header Parameters</name>
      <t>
   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"/> 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"/>.</t>
      <t>
   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>
   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"/> 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>
   The header parameters defined in this document are as follows:</t>
   <dl spacing="normal" newline="false">
   <dt>x5bag:</dt><dd><t>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>
   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>
   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>
   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">
        <li>If a single certificate is conveyed, it is placed in a CBOR byte string.</li>
        <li>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>x5chain:</dt><dd><t>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>
   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>
   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>
   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">
        <li>If a single certificate is conveyed, it is placed in a CBOR byte string.</li>
        <li>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>x5t:</dt><dd><t>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>
   As this header parameter does not provide any trust, the header parameter
   can be in either a protected or unprotected header bucket.</t>
      <t>
   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>
   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>
   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>x5u:</dt><dd><t>This header parameter provides the ability to identify an X.509
   certificate by a URI <xref target="RFC3986" format="default"/>.  It contains a CBOR text string.  The
   referenced resource can be any of the following media types:
      </t>
      <ul spacing="normal">
        <li>application/pkix-cert <xref target="RFC2585" format="default"/></li>
        <li>application/pkcs7-mime; smime-type="certs-only" <xref target="RFC8551" format="default"/></li>
        <li>application/cose-x509 (<xref target="sect-4.3" format="default"/>)</li>
        <li>application/cose-x509; usage=chain (<xref target="sect-4.3" format="default"/>)</li>
      </ul>
      <t>
   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>
   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>
   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"/>, DTLS
   <xref target="RFC9147" format="default"/>, or Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613" format="default"/> <bcp14>SHOULD</bcp14> be used.</t>
</dd>
   </dl>
      <t>
   The header parameters are used in the following locations:
      </t>
      <dl spacing="normal" newline="false">
        <dt>COSE_Signature and COSE_Sign1 objects:</dt><dd>In these objects, the parameters identify the
     certificate to be used for validating the signature.</dd>
        <dt>COSE_recipient objects:</dt><dd>In this location, the parameters identify the certificate
     for the recipient of the message.</dd>
      </dl>
      <t>
   The labels assigned to each header parameter can be found in <xref target="tab-1"/>.</t>

<table anchor="tab-1">
  <name>X.509 COSE Header Parameters</name>
  <thead>
    <tr>
      <th>Name</th>
      <th>Label</th>
      <th>Value Type</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>x5bag</td>
      <td>32</td>
      <td>COSE_X509</td>
      <td>An unordered bag of X.509 certificates</td>
    </tr>
    <tr>
      <td>x5chain</td>
      <td>33</td>
      <td>COSE_X509</td>
      <td>An ordered chain of X.509 certificates</td>
    </tr>
    <tr>
      <td>x5t</td>
      <td>34</td>
      <td>COSE_CertHash</td>
      <td>Hash of an X.509 certificate</td>
    </tr>
    <tr>
      <td>x5u</td>
      <td>35</td>
      <td>uri</td>
      <td>URI pointing to an X.509 certificate</td>
    </tr>
  </tbody>
</table>

      <t>
   Below is an equivalent Concise Data Definition Language (CDDL) description
   (see <xref target="RFC8610" format="default"/>) of the text above.</t>
<sourcecode name="" type="cddl"><![CDATA[
COSE_X509 = bstr / [ 2*certs: bstr ]
COSE_CertHash = [ hashAlg: (int / tstr), hashValue: bstr ]
]]></sourcecode>

      <t>The contents of "bstr" are the bytes of a DER-encoded certificate.</t>
    </section>
    <section anchor="sect-3" numbered="true" toc="default">
      <name>X.509 Certificates and Static-Static ECDH</name>
      <t>
   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>
   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">
      <dt>x5chain-sender:</dt><dd>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>x5t-sender:</dt><dd>This header parameter contains the hash value for the sender's
   key exchange certificate.  The structure is the same as 'x5t'.</dd>
   <dt>x5u-sender:</dt><dd>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">
  <name>Static ECDH Algorithm Values</name>
  <thead>
    <tr>
      <th>Name</th>
      <th>Label</th>
      <th>Type</th>
      <th>Algorithm</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>x5t-sender</td>
      <td>-27</td>
      <td>COSE_CertHash</td>
      <td>ECDH-SS+HKDF-256, ECDH-SS+HKDF-512, ECDH-SS+A128KW, ECDH-SS+A192KW, ECDH-SS+A256KW</td>
      <td>Thumbprint for the sender's X.509 certificate</td>
    </tr>
    <tr>
      <td>x5u-sender</td>
      <td>-28</td>
      <td>uri</td>
      <td>ECDH-SS+HKDF-256, ECDH-SS+HKDF-512, ECDH-SS+A128KW, ECDH-SS+A192KW, ECDH-SS+A256KW</td>
      <td>URI for the sender's X.509 certificate</td>
    </tr>
    <tr>
      <td>x5chain-sender</td>
      <td>-29</td>
      <td>COSE_X509</td>
      <td>ECDH-SS+HKDF-256, ECDH-SS+HKDF-512, ECDH-SS+A128KW, ECDH-SS+A192KW, ECDH-SS+A256KW</td>
      <td>static key X.509 certificate chain</td>
    </tr>
  </tbody>
</table>

    </section>
    <section anchor="sect-4" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="sect-4.1" numbered="true" toc="default">
        <name>COSE Header Parameters Registry</name>
        <t>
   IANA has registered the new COSE Header parameters in <xref target="tab-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="default">
        <name>COSE Header Algorithm Parameters Registry</name>
        <t>
   IANA has registered the new COSE Header Algorithm parameters in
   <xref target="tab-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="default">
        <name>Media Type application/cose-x509</name>
        <t>
   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>
   IANA has registered the following media type <xref target="RFC6838" format="default"/>:</t>
    <dl spacing="normal" newline="false">
        <dt>Type name:</dt><dd><t>application</t></dd>
        <dt>Subtype name:</dt><dd><t>cose-x509</t></dd>
        <dt>Required parameters:</dt><dd><t>N/A</t></dd>
        <dt>Optional parameters:</dt><dd><t>usage</t>
        <ul spacing="normal">
          <li>Can be absent to provide no further information about the intended
	meaning of the order in the CBOR sequence of certificates.</li>
          <li>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>Encoding considerations:</dt>
         <dd><t>binary</t></dd>
        <dt>Security considerations:</dt>
         <dd><t>See the Security Considerations section of RFC 9360.</t></dd>
        <dt>Interoperability considerations:</dt>
         <dd><t>N/A</t></dd>
        <dt>Published specification:</dt>
         <dd><t>RFC 9360</t></dd>
        <dt>Applications that use this media type:</dt>
         <dd><t>Applications that employ COSE and use X.509 as a certificate type.</t></dd>
        <dt>Fragment identifier considerations:</dt>
         <dd><t>N/A</t></dd>
        <dt>Additional information:</dt><dd>
	<t><br/></t>
        <dl spacing="compact">
        <dt>Deprecated alias names for this type:</dt><dd>N/A</dd>
          <dt>Magic number(s):</dt><dd>N/A</dd>
          <dt>File extension(s):</dt><dd>N/A</dd>
          <dt>Macintosh file type code(s):</dt><dd>N/A</dd>
        </dl>
      </dd>
      <dt>Person &amp; email address to contact for further information:</dt><dd><br/>iesg@ietf.org</dd>
      <dt>Intended usage:</dt><dd>COMMON</dd>
      <dt>Restrictions on usage:</dt><dd>N/A</dd>
      <dt>Author:</dt><dd>COSE WG</dd>
      <dt>Change controller:</dt><dd>IESG</dd>
    </dl>
      </section>
    </section>
    <section anchor="sect-5" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
   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>
   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>
   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>
   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>
   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>
   When processing the 'x5u' header parameter, the security considerations of
   <xref target="RFC3986" format="default"/>, and specifically those defined in <xref target="RFC3986" sectionFormat="of" section="7.1"/>, also
   apply.</t>
      <t>
   Regardless of the source, certification path validation is an important
   part of establishing trust in a certificate.  <xref target="RFC5280" sectionFormat="of" section="6"/>
   provides guidance for the path validation.  The security considerations of
   <xref target="RFC5280" format="default"/> are also important for the correct usage of this document.</t>
      <t>
   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.&nbsp;<xref target="RFC2634" sectionFormat="of" section="5.1"/>).</t>
      <t>
   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>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9052.xml"/>
      </references>
      <references>
        <name>Informative References</name>

<!-- Constrained-BRSKI  draft-ietf-anima-constrained-voucher (I-D Exists)
     "Long way" to change "Van" to "van" and fix version number  -->
<reference anchor="Constrained-BRSKI">
  <front>
    <title>Constrained Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
    <author fullname="Michael Richardson" initials="M." surname="Richardson">
      <organization>Sandelman Software Works</organization>
    </author>
    <author fullname="Peter van der Stok" initials="P." surname="van der Stok">
      <organization>vanderstok consultancy</organization>
    </author>
    <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
      <organization>Cisco Systems</organization>
    </author>
    <author fullname="Esko Dijk" initials="E." surname="Dijk">
      <organization>IoTconsultancy.nl</organization>
    </author>
    <date month="January" day="2" year="2023"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-19"/>
</reference>

<!-- draft-ietf-lake-edhoc (Publication Requested)
     Had to do "long way" for version # and J. Preuß Mattsson's name -->
<reference anchor="EDHOC">
  <front>
    <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
    <author fullname="Göran Selander" initials="G." surname="Selander">
      <organization>Ericsson AB</organization>
    </author>
    <author fullname="John Preuß Mattsson" initials="J." surname="Preuß Mattsson">
      <organization>Ericsson AB</organization>
    </author>
    <author fullname="Francesca Palombini" initials="F." surname="Palombini">
      <organization>Ericsson AB</organization>
    </author>
    <date day="3" month="February" year="2023"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-19"/>
</reference>

<!-- draft-ietf-tls-dtls13 (RFC 9147) -->
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9147.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2585.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2634.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6838.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8551.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml"/>
      </references>
    </references>
   <section anchor="acks" numbered="false" toc="default">
   <name>Acknowledgements</name>
   <t>
   <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>
  </back>
</rfc>
