<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-ietf-cose-key-thumbprint-06" number="9679" updates="" obsoletes="" submissionType="IETF" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" xml:lang="en" prepTime="2024-12-20T14:04:42" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-cose-key-thumbprint-06" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9679" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="COSE Key Thumbprint">CBOR Object Signing and Encryption (COSE) Key Thumbprint</title>
    <seriesInfo name="RFC" value="9679" stream="IETF"/>
    <author initials="K." surname="Isobe" fullname="Kohei Isobe">
      <organization showOnFrontPage="true">SECOM CO., LTD.</organization>
      <address>
        <postal>
          <country>Japan</country>
        </postal>
        <email>isobekohei@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS" showOnFrontPage="true">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="O." surname="Steele" fullname="Orie Steele">
      <organization showOnFrontPage="true">Transmute</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>orie@transmute.industries</email>
      </address>
    </author>
    <date month="12" year="2024"/>
    <area>SEC</area>
    <workgroup>cose</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This specification defines a method for computing a hash value over a CBOR
Object Signing and Encryption (COSE) Key. It specifies which fields within
the COSE Key structure are included in the cryptographic hash computation,
the process for creating a canonical representation of these fields, and how
to hash the resulting byte sequence. The resulting hash value, referred to
as a "thumbprint", can be used to identify or select the corresponding key.</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/rfc9679" 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) 2024 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>
          </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-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" 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-cose-key-thumbprint">COSE Key Thumbprint</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-required-cose-key-parameter">Required COSE Key Parameters</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-octet-key-pair-okp">Octet Key Pair (OKP)</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-elliptic-curve-keys-with-x-">Elliptic Curve Keys with X- and Y-Coordinates</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-rsa-public-keys">RSA Public Keys</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.4">
                <t indent="0" pn="section-toc.1-1.4.2.4.1"><xref derivedContent="4.4" format="counter" sectionFormat="of" target="section-4.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-symmetric-keys">Symmetric Keys</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.5">
                <t indent="0" pn="section-toc.1-1.4.2.5.1"><xref derivedContent="4.5" format="counter" sectionFormat="of" target="section-4.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-hss-lms-keys">HSS-LMS Keys</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.6">
                <t indent="0" pn="section-toc.1-1.4.2.6.1"><xref derivedContent="4.6" format="counter" sectionFormat="of" target="section-4.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-others">Others</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-miscellaneous-consideration">Miscellaneous Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-why-not-include-optional-co">Why Not Include Optional COSE Key Parameters?</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-selection-of-hash-function">Selection of Hash Function</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-thumbprints-of-keys-not-in-">Thumbprints of Keys Not in COSE Key Format</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-relationship-to-digests-of-">Relationship to Digests of X.509 Values</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.5">
                <t indent="0" pn="section-toc.1-1.5.2.5.1"><xref derivedContent="5.5" format="counter" sectionFormat="of" target="section-5.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-relationship-to-json-web-ke">Relationship to JSON Web Key Thumbprints</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.6">
                <t indent="0" pn="section-toc.1-1.5.2.6.1"><xref derivedContent="5.6" format="counter" sectionFormat="of" target="section-5.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-confirmation-method">Confirmation Method</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.7">
                <t indent="0" pn="section-toc.1-1.5.2.7.1"><xref derivedContent="5.7" format="counter" sectionFormat="of" target="section-5.7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cose-key-thumbprint-uris">COSE Key Thumbprint URIs</xref></t>
              </li>
            </ul>
          </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-example">Example</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <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.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.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.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">This specification defines a method for applying a cryptographic
hash function to a CBOR Object Signing and Encryption (COSE) Key
structure <xref target="RFC9052" format="default" sectionFormat="of" derivedContent="RFC9052"/>, resulting in a hash value known as a
"thumbprint". To achieve this, the document specifies which fields
in the COSE Key structure are included in the hash computation, the
process for creating a canonical form of these fields, and how to
hash the resulting byte sequence. One of the primary use cases for
this thumbprint is as a naming scheme for identifying or selecting
the key, such as by using the COSE Key Thumbprint value as a "kid"
(key ID). Another key use case involves key derivation functions
that use the thumbprints of public keys from the endpoints, along
with other application context, to derive a symmetric key.</t>
      <t indent="0" pn="section-1-2">This specification outlines how thumbprints of COSE Keys are generated
for both asymmetric and symmetric keys (see Sections <xref target="thumbprint" format="counter" sectionFormat="of" derivedContent="3"/> and
<xref target="required" format="counter" sectionFormat="of" derivedContent="4"/>). Additionally, it introduces a new CBOR Web Token (CWT) confirmation method, which has been added to the IANA
"CWT Confirmation Methods" registry established by <xref target="RFC8747" format="default" sectionFormat="of" derivedContent="RFC8747"/>.
For further details on the use of a confirmation claim in a CWT
with a proof-of-possession key, refer to <xref target="RFC8747" sectionFormat="of" section="3.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8747#section-3.1" derivedContent="RFC8747"/>.</t>
    </section>
    <section anchor="terminology" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-2-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 anchor="thumbprint" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-cose-key-thumbprint">COSE Key Thumbprint</name>
      <t indent="0" pn="section-3-1">The thumbprint of a COSE Key <bcp14>MUST</bcp14> be computed as follows:</t>
      <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-3-2"><li pn="section-3-2.1" derivedCounter="1.">
          <t indent="0" pn="section-3-2.1.1">Construct a COSE_Key structure (see <xref target="RFC9052" sectionFormat="of" section="7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9052#section-7" derivedContent="RFC9052"/>) containing only the required
          parameters representing the key as described in <xref target="required" format="default" sectionFormat="of" derivedContent="Section 4"/> of this document.</t>
        </li>
        <li pn="section-3-2.2" derivedCounter="2.">
          <t indent="0" pn="section-3-2.2.1">Apply the deterministic encoding described in <xref target="RFC8949" sectionFormat="of" section="4.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8949#section-4.2.1" derivedContent="RFC8949"/> to the
          representation constructed in step 1.</t>
        </li>
        <li pn="section-3-2.3" derivedCounter="3.">
          <t indent="0" pn="section-3-2.3.1">Hash the bytes produced in step 2 with a cryptographic hash function H.
For example, SHA-256 <xref target="RFC6234" format="default" sectionFormat="of" derivedContent="RFC6234"/> may be used as a hash function.</t>
        </li>
      </ol>
      <t indent="0" pn="section-3-3">The details of this computation are further described in subsequent
sections.</t>
      <t indent="0" pn="section-3-4">The SHA-256 hash algorithm <bcp14>MUST</bcp14> be supported; other algorithms <bcp14>MAY</bcp14> be supported.</t>
    </section>
    <section anchor="required" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-required-cose-key-parameter">Required COSE Key Parameters</name>
      <t indent="0" pn="section-4-1">Only the required parameters of a key's representation are used when
computing its COSE Key Thumbprint value. This section summarizes the
required parameters.</t>
      <t indent="0" pn="section-4-2">The "kty" (label: 1) element <bcp14>MUST</bcp14> be present for all key types, and the integer
value specified in the IANA "COSE Key Types" registry <bcp14>MUST</bcp14> be used. The tstr data
type is not used with the "kty" element.</t>
      <t indent="0" pn="section-4-3">Many COSE Key parameters are specific to the chosen key type. The following
subsections list the required parameters for commonly used key types.</t>
      <section anchor="octet-key-pair-okp" numbered="true" removeInRFC="false" toc="include" pn="section-4.1">
        <name slugifiedName="name-octet-key-pair-okp">Octet Key Pair (OKP)</name>
        <t indent="0" pn="section-4.1-1">The required parameters for elliptic curve public keys that use the Octet Key Pair (OKP) key type,
such as X25519, are:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.1-2">
          <li pn="section-4.1-2.1">
            <t indent="0" pn="section-4.1-2.1.1">"kty" (label: 1, data type: int, value: 1)</t>
          </li>
          <li pn="section-4.1-2.2">
            <t indent="0" pn="section-4.1-2.2.1">"crv" (label: -1, value: int)</t>
          </li>
          <li pn="section-4.1-2.3">
            <t indent="0" pn="section-4.1-2.3.1">"x" (label: -2, value: bstr)</t>
          </li>
        </ul>
        <t indent="0" pn="section-4.1-3">Further details are described in <xref target="RFC9053" sectionFormat="of" section="7.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9053#section-7.1" derivedContent="RFC9053"/>.</t>
      </section>
      <section anchor="ecc" numbered="true" removeInRFC="false" toc="include" pn="section-4.2">
        <name slugifiedName="name-elliptic-curve-keys-with-x-">Elliptic Curve Keys with X- and Y-Coordinates</name>
        <t indent="0" pn="section-4.2-1">The required parameters for elliptic curve public keys that use the EC2 key type, such as NIST P-256, are:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-2">
          <li pn="section-4.2-2.1">
            <t indent="0" pn="section-4.2-2.1.1">"kty" (label: 1, data type: int, value: 2)</t>
          </li>
          <li pn="section-4.2-2.2">
            <t indent="0" pn="section-4.2-2.2.1">"crv" (label: -1, data type: int)</t>
          </li>
          <li pn="section-4.2-2.3">
            <t indent="0" pn="section-4.2-2.3.1">"x" (label: -2, data type: bstr)</t>
          </li>
          <li pn="section-4.2-2.4">
            <t indent="0" pn="section-4.2-2.4.1">"y" (label: -3, data type: bstr)</t>
          </li>
        </ul>
        <t indent="0" pn="section-4.2-3">Further details are described in <xref target="RFC9053" sectionFormat="of" section="7.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9053#section-7.1" derivedContent="RFC9053"/>.</t>
        <t indent="0" pn="section-4.2-4">Note: <xref target="RFC9052" format="default" sectionFormat="of" derivedContent="RFC9052"/> supports both compressed and uncompressed point
representations. For interoperability, implementations adhering to
this specification <bcp14>MUST</bcp14> use the uncompressed point representation.
Therefore, the y-coordinate is expressed as a bstr. If an
implementation uses the compressed point representation, it
<bcp14>MUST</bcp14> first convert it to the uncompressed form for the purpose
of thumbprint calculation.</t>
      </section>
      <section anchor="rsa-public-keys" numbered="true" removeInRFC="false" toc="include" pn="section-4.3">
        <name slugifiedName="name-rsa-public-keys">RSA Public Keys</name>
        <t indent="0" pn="section-4.3-1">The required parameters for an RSA public key are:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.3-2">
          <li pn="section-4.3-2.1">
            <t indent="0" pn="section-4.3-2.1.1">"kty" (label: 1, data type: int, value: 3)</t>
          </li>
          <li pn="section-4.3-2.2">
            <t indent="0" pn="section-4.3-2.2.1">"n" (label: -1, data type: bstr)</t>
          </li>
          <li pn="section-4.3-2.3">
            <t indent="0" pn="section-4.3-2.3.1">"e" (label: -2, data type: bstr)</t>
          </li>
        </ul>
      </section>
      <section anchor="symmetric-keys" numbered="true" removeInRFC="false" toc="include" pn="section-4.4">
        <name slugifiedName="name-symmetric-keys">Symmetric Keys</name>
        <t indent="0" pn="section-4.4-1">The required parameters for a symmetric key are:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.4-2">
          <li pn="section-4.4-2.1">
            <t indent="0" pn="section-4.4-2.1.1">"kty" (label: 1, data type: int, value: 4)</t>
          </li>
          <li pn="section-4.4-2.2">
            <t indent="0" pn="section-4.4-2.2.1">"k" (label: -1, data type: bstr)</t>
          </li>
        </ul>
      </section>
      <section anchor="hss-lms" numbered="true" removeInRFC="false" toc="include" pn="section-4.5">
        <name slugifiedName="name-hss-lms-keys">HSS-LMS Keys</name>
        <t indent="0" pn="section-4.5-1">The required parameters for HSS-LMS keys are:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.5-2">
          <li pn="section-4.5-2.1">
            <t indent="0" pn="section-4.5-2.1.1">"kty" (label: 1, data type: int, value: 5)</t>
          </li>
          <li pn="section-4.5-2.2">
            <t indent="0" pn="section-4.5-2.2.1">"pub" (label: -1, data type: bstr)</t>
          </li>
        </ul>
      </section>
      <section anchor="others" numbered="true" removeInRFC="false" toc="include" pn="section-4.6">
        <name slugifiedName="name-others">Others</name>
        <t indent="0" pn="section-4.6-1">As other key type values are defined, their defining specifications
should be similarly consulted to determine which
parameters, in addition to the "kty" element, are required.</t>
      </section>
    </section>
    <section anchor="miscellaneous-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-miscellaneous-consideration">Miscellaneous Considerations</name>
      <section anchor="why-not-include-optional-cose-key-parameters" numbered="true" removeInRFC="false" toc="include" pn="section-5.1">
        <name slugifiedName="name-why-not-include-optional-co">Why Not Include Optional COSE Key Parameters?</name>
        <t indent="0" pn="section-5.1-1">Optional parameters of COSE Keys are intentionally not included in the
COSE Key Thumbprint computation so that their absence or presence
in the COSE Key does not alter the resulting value. The COSE Key Thumbprint is a digest of the ordered essential parameters needed to represent a COSE Key, with all other parameters excluded.</t>
        <t indent="0" pn="section-5.1-2">By excluding optional parameters, the COSE Key Thumbprint consistently
refers to the key itself, not to a key with additional attributes.
Different application contexts may include various optional attributes
in the COSE Key structure. If these optional parameters were included
in the thumbprint calculation, the resulting values could differ for
the same key depending on the attributes present. Including only the
required parameters ensures that the COSE Key Thumbprint remains
consistent for a given key, regardless of any additional attributes.</t>
        <t indent="0" pn="section-5.1-3">Different kinds of thumbprints could be defined by other specifications
that might include some or all additional COSE Key parameters, if use
cases arise where such different kinds of thumbprints would be useful.</t>
      </section>
      <section anchor="selection-of-hash-function" numbered="true" removeInRFC="false" toc="include" pn="section-5.2">
        <name slugifiedName="name-selection-of-hash-function">Selection of Hash Function</name>
        <t indent="0" pn="section-5.2-1">A specific hash function must be chosen by an application to compute
the hash value of the hash input. For instance, SHA-256 <xref target="RFC6234" format="default" sectionFormat="of" derivedContent="RFC6234"/>
may be used as the hash function. While SHA-256 is a good default
choice at the time of writing, the preferred hash function may evolve
as the cryptographic landscape develops.</t>
        <t indent="0" pn="section-5.2-2">In many cases, only the party that generates the key needs to be
aware of the hash function used. For example, the key producer might
use the thumbprint value as a "kid" (key ID). In such scenarios, the
consumer of the "kid" treats it as an opaque value solely for key
selection.</t>
        <t indent="0" pn="section-5.2-3">However, when multiple parties are involved in reproducing and
comparing the COSE Key Thumbprint, it is crucial that they know
and use the same hash function to ensure consistent results.</t>
      </section>
      <section anchor="thumbprints-of-keys-not-in-cose-key-format" numbered="true" removeInRFC="false" toc="include" pn="section-5.3">
        <name slugifiedName="name-thumbprints-of-keys-not-in-">Thumbprints of Keys Not in COSE Key Format</name>
        <t indent="0" pn="section-5.3-1">Keys that are in other formats can be represented as COSE Keys.
   The only prerequisites are that the COSE_Key representation
   of the key be defined and the party creating the COSE Key Thumbprint
   be in possession of the necessary key material.</t>
      </section>
      <section anchor="relationship-to-digests-of-x509-values" numbered="true" removeInRFC="false" toc="include" pn="section-5.4">
        <name slugifiedName="name-relationship-to-digests-of-">Relationship to Digests of X.509 Values</name>
        <t indent="0" pn="section-5.4-1">COSE Key Thumbprint values are computed on the COSE Key object containing only essential parameters in a specific order.  Thus, they are more analogous to applications that
use digests of X.509 Subject Public Key Info (SPKI) values, which are
defined in <xref target="RFC5280" sectionFormat="of" section="4.1.2.7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5280#section-4.1.2.7" derivedContent="RFC5280"/>, than to applications that
use digests of complete certificate values, as the "x5t" (X.509
certificate SHA-1 thumbprint) <xref target="RFC9360" format="default" sectionFormat="of" derivedContent="RFC9360"/> value defined for X.509
certificate objects does.  While logically equivalent to a digest of
the SPKI representation of the key, a COSE Key Thumbprint is computed over
the CBOR representation of that key rather than over an ASN.1
representation of it.</t>
      </section>
      <section anchor="relationship-JWT-thumbprints" numbered="true" removeInRFC="false" toc="include" pn="section-5.5">
        <name slugifiedName="name-relationship-to-json-web-ke">Relationship to JSON Web Key Thumbprints</name>
        <t indent="0" pn="section-5.5-1">
  The ckt of a COSE Key, as described in <xref target="RFC9052" sectionFormat="of" section="7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9052#section-7" derivedContent="RFC9052"/>, and the jkt of a JSON Web Key, as described in <xref target="RFC7517" sectionFormat="of" section="4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7517#section-4" derivedContent="RFC7517"/>, are different even when 
	the underlying cryptographic key material is the same.</t>
        <t indent="0" pn="section-5.5-2">
   This document does not register
   a JWT confirmation method <xref target="RFC7800" format="default" sectionFormat="of" derivedContent="RFC7800"/>
   for using "ckt" as a confirmation method for a JWT
   or a CWT confirmation method <xref target="RFC8747" format="default" sectionFormat="of" derivedContent="RFC8747"/>
   for using "jkt" as a confirmation method for a CWT.
        </t>
      </section>
      <section anchor="confirmation-method" numbered="true" removeInRFC="false" toc="include" pn="section-5.6">
        <name slugifiedName="name-confirmation-method">Confirmation Method</name>
        <t indent="0" pn="section-5.6-1"><xref target="RFC8747" format="default" sectionFormat="of" derivedContent="RFC8747"/> introduces confirmation methods for use with CWTs with the addition of the "cnf" claim. CWTs are defined in <xref target="RFC8392" format="default" sectionFormat="of" derivedContent="RFC8392"/>. This specification adds a new
confirmation method based on COSE Key Thumbprints.</t>
        <t indent="0" pn="section-5.6-2">The proof-of-possession key is identified using the "ckt" member of
the CWT confirmation claim "cnf". This member contains the value of
the COSE Key Thumbprint encoded as a binary string. Instead of
communicating the actual COSE Key, only the thumbprint is conveyed.
This approach assumes that the recipient is able to obtain the
identified COSE Key using the thumbprint contained in the "ckt"
member. In this approach, the issuer of a CWT declares that the
presenter possesses a particular key and that the recipient
can cryptographically confirm the presenter's proof of possession
of the key by including a "ckt" CWT confirmation method member in the CWT.</t>
        <t indent="0" pn="section-5.6-3">The following example demonstrates the use of the "ckt" member
in a CWT as part of the confirmation method (with line breaks inserted
	for editorial reasons):</t>
        <sourcecode type="cbor-diag" markers="false" pn="section-5.6-4">
   {
    /iss/ 1 : "coaps://as.example.com",
    /aud/ 3 : "coaps://resource.example.org",
    /exp/ 4 : 1361398824,
    /cnf/ 8 : {
      /ckt/ 5 : h'496bd8afadf307e5b08c64b0421bf9dc
                  01528a344a43bda88fadd1669da253ec'
     }
   }</sourcecode>
        <t indent="0" pn="section-5.6-5"><xref target="IANA" format="default" sectionFormat="of" derivedContent="Section 8"/> registers the "ckt" CWT confirmation method member.
The "ckt" member is used in the "cnf" claim.</t>
      </section>
      <section anchor="cose-key-thumbprint-uris" numbered="true" removeInRFC="false" toc="include" pn="section-5.7">
        <name slugifiedName="name-cose-key-thumbprint-uris">COSE Key Thumbprint URIs</name>
        <t indent="0" pn="section-5.7-1">This specification defines Uniform Resource Identifiers (URIs)
to represent a COSE Key Thumbprint value. The design follows
the work of JSON Web Key (JWK) Thumbprint URIs, as specified
in <xref target="RFC9278" format="default" sectionFormat="of" derivedContent="RFC9278"/>. This enables COSE Key Thumbprints to be used,
for example, as key identifiers in contexts requiring URIs.
This specification defines a URI prefix indicating that the
portion of the URI following the prefix is a COSE Key Thumbprint.</t>
        <t indent="0" pn="section-5.7-2">The following URI prefix is defined to indicate that the portion
of the URI following the prefix is a COSE Key Thumbprint:</t>
        <t indent="3" pn="section-5.7-3">urn:ietf:params:oauth:ckt</t>
        <t indent="0" pn="section-5.7-4">To make the hash algorithm being used explicit in a URI, the prefix
is followed by a hash algorithm identifier and a COSE Key Thumbprint
value, each separated by a colon character to form a URI representing
a COSE Key Thumbprint.</t>
        <t indent="0" pn="section-5.7-5">Hash algorithm identifiers used in COSE Key Thumbprint URIs <bcp14>MUST</bcp14> be values from the "Hash Name String" column in the IANA "Named Information Hash Algorithm Registry" <xref target="IANA.Hash.Algorithms" format="default" sectionFormat="of" derivedContent="IANA.Hash.Algorithms"/>. COSE Key Thumbprint URIs with hash algorithm identifiers not found in this registry are not
considered valid, and applications <bcp14>MUST</bcp14> detect and handle this
error, should it occur.</t>
        <t indent="0" pn="section-5.7-6">Since the URN is encoded as a string, the output of the COSE Key
Thumbprint computation described in <xref target="thumbprint" format="default" sectionFormat="of" derivedContent="Section 3"/> <bcp14>MUST</bcp14> be base64url encoded without padding.</t>
        <t indent="0" pn="section-5.7-7"><xref target="RFC7515" format="default" sectionFormat="of" derivedContent="RFC7515"/> specifies base64url encoding as follows:</t>
        <blockquote pn="section-5.7-8">Base64 encoding using the URL- and filename-safe character set
	defined in Section <xref target="RFC4648" section="5" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4648#section-5" derivedContent="RFC4648"/> of RFC 4648 <xref target="RFC4648" format="default" sectionFormat="of" derivedContent="RFC4648"/>, with all trailing '='
characters omitted (as permitted by <xref target="RFC7515" sectionFormat="of" section="3.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7515#section-3.2" derivedContent="RFC7515"/>) and without the inclusion of any line breaks,
whitespace, or other additional characters.  Note that the base64url
encoding of the empty octet sequence is the empty string.
(See <xref target="RFC7515" sectionFormat="of" section="C" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7515#appendix-C" derivedContent="RFC7515"/> for notes on implementing base64url
encoding without padding.)</blockquote>
        <t indent="0" pn="section-5.7-9">The base64url encoding of the thumbprint shown in <xref target="example" format="default" sectionFormat="of" derivedContent="Section 6"/> is
shown below (with a line break added for readability purposes).</t>
        <t indent="3" pn="section-5.7-10">SWvYr63zB-WwjGSwQhv53AFSijRKQ72oj63RZp2iU-w</t>
        <t indent="0" pn="section-5.7-11">The full example of a COSE Key Thumbprint URI is shown below (with a line break added for readability).</t>
        <t indent="3" pn="section-5.7-12">urn:ietf:params:oauth:ckt:sha-256:</t>
        <t indent="3" pn="section-5.7-13">SWvYr63zB-WwjGSwQhv53AFSijRKQ72oj63RZp2iU-w</t>
        <t indent="0" pn="section-5.7-14">Note that the use of oauth in the namespace is to align with JWK Thumbprint URIs as described in <xref target="RFC9278" format="default" sectionFormat="of" derivedContent="RFC9278"/>; however, these URIs are intended for use with applications and specifications not necessarily related to OAuth.</t>
      </section>
    </section>
    <section anchor="example" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-example">Example</name>
      <t indent="0" pn="section-6-1">This section demonstrates the COSE Key Thumbprint computation for the
following example COSE Key containing an Elliptic Curve Cryptography (ECC) public key.</t>
      <t indent="0" pn="section-6-2">For better readability, the example is first presented in CBOR diagnostic format (with
the long line broken for display purposes only).</t>
      <sourcecode type="cbor-diag" markers="false" pn="section-6-3">
  {
    / kty set to EC2 = Elliptic Curve Keys /
    1:2,
    / crv set to P-256 /
    -1:1,
    / public key: x-coordinate /
    -2:h'65eda5a12577c2bae829437fe338701a10aaa375e1bb5b5de108de439c0
8551d',
    / public key: y-coordinate /
    -3:h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e9eecd008
4d19c',
    / kid is bstr, not used in COSE Key Thumbprint /
    2:h'496bd8afadf307e5b08c64b0421bf9dc01528a344a43bda88fadd1669da2
53ec'
  }</sourcecode>
      <t indent="0" pn="section-6-4">The example above corresponds to the following CBOR encoding
(with link breaks added for display purposes only):</t>
      <sourcecode type="test-vectors" markers="false" pn="section-6-5">
A50102200121582065EDA5A12577C2BAE829437FE338701A10AAA375E1BB5B5DE108D
E439C08551D2258201E52ED75701163F7F9E40DDF9F341B3DC9BA860AF7E0CA7CA7E9
EECD0084D19C025820496BD8AFADF307E5B08C64B0421BF9DC01528A344A43BDA88FA
DD1669DA253EC</sourcecode>
      <t indent="0" pn="section-6-6">Not all of the parameters from the example above are used in the COSE Key
Thumbprint computation because the required parameters of an elliptic curve
public key are (as listed in <xref target="ecc" format="default" sectionFormat="of" derivedContent="Section 4.2"/>) "kty", "crv", "x", and "y".</t>
      <t indent="0" pn="section-6-7">The resulting COSE Key structure, in CBOR diagnostic format with
line breaks added for better readability, with the minimum parameters
in the correct order are:</t>
      <sourcecode type="cbor-diag" markers="false" pn="section-6-8">
{
   1:2,
  -1:1,
  -2:h'65eda5a12577c2bae829437fe338701a
       10aaa375e1bb5b5de108de439c08551d',
  -3:h'1e52ed75701163f7f9e40ddf9f341b3d
       c9ba860af7e0ca7ca7e9eecd0084d19c'
}</sourcecode>
      <t indent="0" pn="section-6-9">In CBOR encoding, the result is (with line breaks added for display
purposes only):</t>
      <sourcecode type="test-vectors" markers="false" pn="section-6-10">
A40102200121582065EDA5A12577C2BAE829437FE338701A10AAA375E1BB5B5DE
108DE439C08551D2258201E52ED75701163F7F9E40DDF9F341B3DC9BA860AF7E0
CA7CA7E9EECD0084D19C</sourcecode>
      <t indent="0" pn="section-6-11">Using SHA-256, the resulting thumbprint is:</t>
      <sourcecode type="test-vectors" markers="false" pn="section-6-12">
496bd8afadf307e5b08c64b0421bf9dc01528a344a43bda88fadd1669da253ec</sourcecode>
    </section>
    <section anchor="security-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-7-1">A COSE Key Thumbprint will only uniquely identify a particular key if a
single unambiguous COSE Key representation for that key is defined and
used when computing the COSE Key Thumbprint. Key identifiers are not
included in the thumbprint calculation (similarly to other optional
parameters in the COSE_Key structure). If the inclusion
of specific optional parameters in the thumbprint calculation is important
for a particular application, this specification would not be suitable.</t>
      <t indent="0" pn="section-7-2">While thumbprint values are useful for identifying legitimate keys,
comparing thumbprint values is not a reliable means of excluding the
use of particular keys (or transformations thereof). The reason is
because an attacker may supply a key that is a transformation of a key
in order for it to appear as a different key.  For instance, if
a legitimate RSA key uses a modulus value N and an attacker supplies
a key with modulus 3*N, the modified key would still work about 1/3
of the time, but it would appear to be a different key.</t>
      <t indent="0" pn="section-7-3">Producing thumbprints of symmetric keys needs to be done with care. Developers
<bcp14>MUST</bcp14> ensure that the symmetric key has sufficient entropy to prevent
attackers from precomputing tables of symmetric keys with their corresponding
hash values. This can be prevented if the symmetric key is a randomly
selected key of at least a 128-bit length. Thumbprints <bcp14>MUST NOT</bcp14> be used 
with passwords or other low-entropy secrets. If a
developer is unable to determine whether all symmetric keys used in an
application have sufficient entropy, then thumbprints of symmetric keys
<bcp14>MUST NOT</bcp14> be used. In general, using thumbprints of symmetric keys should
only be used in special applications. In most other deployment scenarios,
it is more appropriate to utilize a different naming scheme for key
identifiers.</t>
    </section>
    <section anchor="IANA" numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-8-1">IANA has added the following entry to the "CWT Confirmation
Methods" registry <xref target="IANA-CWT" format="default" sectionFormat="of" derivedContent="IANA-CWT"/> established by <xref target="RFC8747" format="default" sectionFormat="of" derivedContent="RFC8747"/>:</t>
      <dl spacing="compact" newline="false" indent="3" pn="section-8-2">
        <dt pn="section-8-2.1">Confirmation Method Name:</dt>
        <dd pn="section-8-2.2">ckt</dd>
        <dt pn="section-8-2.3">Confirmation Method Description:</dt>
        <dd pn="section-8-2.4">COSE Key SHA-256 Thumbprint</dd>
        <dt pn="section-8-2.5">JWT Confirmation Method Name:</dt>
        <dd pn="section-8-2.6">(none)</dd>
        <dt pn="section-8-2.7">Confirmation Key:</dt>
        <dd pn="section-8-2.8">5</dd>
        <dt pn="section-8-2.9">Confirmation Value Type(s):</dt>
        <dd pn="section-8-2.10">binary string</dd>
        <dt pn="section-8-2.11">Change Controller:</dt>
        <dd pn="section-8-2.12">IETF</dd>
        <dt pn="section-8-2.13">Specification Document(s):</dt>
        <dd pn="section-8-2.14">RFC 9679</dd>
      </dl>
      <t indent="0" pn="section-8-3">Furthermore, IANA has added a value to the "OAuth URI" registry <xref target="IANA-OAuth" format="default" sectionFormat="of" derivedContent="IANA-OAuth"/>
established by <xref target="RFC6755" format="default" sectionFormat="of" derivedContent="RFC6755"/>:</t>
      <dl spacing="compact" newline="false" indent="3" pn="section-8-4">
        <dt pn="section-8-4.1">URN:</dt>
        <dd pn="section-8-4.2">urn:ietf:params:oauth:ckt</dd>
        <dt pn="section-8-4.3">Common Name:</dt>
        <dd pn="section-8-4.4">COSE Key Thumbprint URI</dd>
        <dt pn="section-8-4.5">Change Controller:</dt>
        <dd pn="section-8-4.6">IETF</dd>
        <dt pn="section-8-4.7">Specification Document(s):</dt>
        <dd pn="section-8-4.8">RFC 9679</dd>
      </dl>
    </section>
  </middle>
  <back>
    <references pn="section-9">
      <name slugifiedName="name-references">References</name>
      <references anchor="sec-normative-references" pn="section-9.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="RFC4648" target="https://www.rfc-editor.org/info/rfc4648" quoteTitle="true" derivedAnchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t indent="0">This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC6755" target="https://www.rfc-editor.org/info/rfc6755" quoteTitle="true" derivedAnchor="RFC6755">
          <front>
            <title>An IETF URN Sub-Namespace for OAuth</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="October" year="2012"/>
            <abstract>
              <t indent="0">This document establishes an IETF URN Sub-namespace for use with OAuth-related specifications. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6755"/>
          <seriesInfo name="DOI" value="10.17487/RFC6755"/>
        </reference>
        <reference anchor="RFC7515" target="https://www.rfc-editor.org/info/rfc7515" quoteTitle="true" derivedAnchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t indent="0">JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </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="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="RFC8747" target="https://www.rfc-editor.org/info/rfc8747" quoteTitle="true" derivedAnchor="RFC8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="March" year="2020"/>
            <abstract>
              <t indent="0">This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </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>
        <reference anchor="RFC9053" target="https://www.rfc-editor.org/info/rfc9053" quoteTitle="true" derivedAnchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</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 a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t indent="0">This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
      </references>
      <references anchor="sec-informative-references" pn="section-9.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="IANA-CWT" target="https://www.iana.org/assignments/cwt" quoteTitle="true" derivedAnchor="IANA-CWT">
          <front>
            <title>CWT Confirmation Methods</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA-OAuth" target="https://www.iana.org/assignments/oauth-parameters" quoteTitle="true" derivedAnchor="IANA-OAuth">
          <front>
            <title>OAuth URI</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA.Hash.Algorithms" target="https://www.iana.org/assignments/named-information" quoteTitle="true" derivedAnchor="IANA.Hash.Algorithms">
          <front>
            <title>Named Information Hash Algorithm Registry</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
            <date/>
          </front>
        </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="RFC6234" target="https://www.rfc-editor.org/info/rfc6234" quoteTitle="true" derivedAnchor="RFC6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="May" year="2011"/>
            <abstract>
              <t indent="0">Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>
        <reference anchor="RFC7517" target="https://www.rfc-editor.org/info/rfc7517" quoteTitle="true" derivedAnchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t indent="0">A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC7638" target="https://www.rfc-editor.org/info/rfc7638" quoteTitle="true" derivedAnchor="RFC7638">
          <front>
            <title>JSON Web Key (JWK) Thumbprint</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="September" year="2015"/>
            <abstract>
              <t indent="0">This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7638"/>
          <seriesInfo name="DOI" value="10.17487/RFC7638"/>
        </reference>
        <reference anchor="RFC7800" target="https://www.rfc-editor.org/info/rfc7800" quoteTitle="true" derivedAnchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t indent="0">This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="RFC9278" target="https://www.rfc-editor.org/info/rfc9278" quoteTitle="true" derivedAnchor="RFC9278">
          <front>
            <title>JWK Thumbprint URI</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="K. Yasuda" initials="K." surname="Yasuda"/>
            <date month="August" year="2022"/>
            <abstract>
              <t indent="0">This specification registers a kind of URI that represents a JSON Web Key (JWK) Thumbprint value. JWK Thumbprints are defined in RFC 7638. This enables JWK Thumbprints to be used, for instance, as key identifiers in contexts requiring URIs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9278"/>
          <seriesInfo name="DOI" value="10.17487/RFC9278"/>
        </reference>
        <reference anchor="RFC9360" target="https://www.rfc-editor.org/info/rfc9360" quoteTitle="true" derivedAnchor="RFC9360">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Header Parameters for Carrying and Referencing X.509 Certificates</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="February" year="2023"/>
            <abstract>
              <t indent="0">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>
          <seriesInfo name="RFC" value="9360"/>
          <seriesInfo name="DOI" value="10.17487/RFC9360"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">We would like to thank the authors of <xref target="RFC7638" format="default" sectionFormat="of" derivedContent="RFC7638"/> for
      their work on the JWK Thumbprint specification. This
      document applies JWK Thumbprints to COSE Key structures.</t>
      <t indent="0" pn="section-appendix.a-2">Additionally, we would like to thank <contact fullname="Carsten       Bormann"/>, <contact fullname="Ilari Liusvaara"/>, <contact fullname="Laurence Lundblade"/>, <contact fullname="Daisuke Ajitomi"/>,
      <contact fullname="Michael Richardson"/>, <contact fullname="Michael       B. Jones"/>, <contact fullname="Mallory Knodel"/>, <contact fullname="Joel Jaeggli"/>, <contact fullname="Derrell Piper"/>, <contact fullname="Patrik Fältström"/>, <contact fullname="Warren Kumari"/>,
      <contact fullname="Deb Cooley"/>, and <contact fullname="Brendan Moran"/>
      for their feedback.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="K." surname="Isobe" fullname="Kohei Isobe">
        <organization showOnFrontPage="true">SECOM CO., LTD.</organization>
        <address>
          <postal>
            <country>Japan</country>
          </postal>
          <email>isobekohei@gmail.com</email>
        </address>
      </author>
      <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
        <organization abbrev="H-BRS" showOnFrontPage="true">University of Applied Sciences Bonn-Rhein-Sieg</organization>
        <address>
          <postal>
            <country>Germany</country>
          </postal>
          <email>hannes.tschofenig@gmx.net</email>
        </address>
      </author>
      <author initials="O." surname="Steele" fullname="Orie Steele">
        <organization showOnFrontPage="true">Transmute</organization>
        <address>
          <postal>
            <country>United States of America</country>
          </postal>
          <email>orie@transmute.industries</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
