<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-cose-key-thumbprint-03" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="COSE Key Thumbprint">CBOR Object Signing and Encryption (COSE) Key Thumbprint</title>

    <author initials="K." surname="Isobe" fullname="Kohei Isobe">
      <organization>SECOM CO., LTD.</organization>
      <address>
        <email>isobekohei@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization></organization>
      <address>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>

    <date year="2023" month="October" day="11"/>

    <area>Security</area>
    <workgroup>COSE</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 52?>

<t>This specification defines a method for computing a hash value over a
COSE Key. It defines which fields in a COSE Key structure are used in the
hash computation, the method of creating a canonical form of the fields,
and how to hash the byte sequence. The resulting hash value can be used
for identifying or selecting a key that is the subject of the thumbprint.</t>



    </abstract>



  </front>

  <middle>


<?line 60?>

<section anchor="introduction"><name>Introduction</name>

<t>This specification defines a method for computing a hash value (a.k.a. digest)
over a COSE Key structure <xref target="RFC9052"/>.  It defines which fields in a COSE Key
structure are used in the hash computation, the method of creating a canonical
form for those fields, and how to hash the byte sequence.  The resulting hash
value can be used for identifying or selecting the key that is the subject of
the thumbprint, for instance, by using the COSE Key Thumbprint value as a "kid"
(key ID) value.</t>

<t>This specification defines how thumbprints of COSE keys are created.
Additionally, a new CWT confirmation method is registered in the registry
created by <xref target="RFC8747"/>. See Section 3.1 of <xref target="RFC8747"/> for details
about the use of a confirmation claim in a CWT with a proof-of-possession
key.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>

</section>
<section anchor="cose-key-thumbprint"><name>COSE Key Thumbprint</name>

<t>The thumbprint of a COSE Key MUST be computed as follows:</t>

<t><list style="numbers">
  <t>Construct a COSE_Key structure (see Section 7 of <xref target="RFC9052"/>) containing
only the required parameters representing the key. This specification
describes what those required parameters are and what, if necessary,
what the unique encoding is.</t>
  <t>Apply the deterministic encoding described in Section 4.2.1 of <xref target="RFC8949"/>
to the representation constructed in step (1).</t>
  <t>Hash the bytes produced in step (2) with a cryptographic hash function H.
For example, SHA-256 <xref target="RFC6234"/> may be used as a hash function.</t>
</list></t>

<t>The resulting value is the COSE Key Thumbprint with H of the COSE Key. The
details of this computation are further described in subsequent
sections.</t>

</section>
<section anchor="required"><name>Required COSE Key Parameters</name>

<t>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>The "kty" (label: 1) element MUST be present for all key types and the integer
value found in the IANA COSE Key Types registry MUST be used. The tstr data
type is not used with the kty element.</t>

<t>Many COSE Key parameters depend on the chosen key type. The subsection below list
the required parameters for commonly used key types.</t>

<section anchor="octet-key-pair-okp"><name>Octet Key Pair (OKP)</name>

<t>The required parameters for elliptic curve public keys that use the OKP key type,
such as X25519, are:</t>

<t><list style="symbols">
  <t>"kty" (label: 1, data type: int, value: 1)</t>
  <t>"crv" (label: -1, value: int)</t>
  <t>"x" (label: -2, value: bstr)</t>
</list></t>

<t>Details can be found in Section 7.1 of <xref target="RFC9053"/>.</t>

</section>
<section anchor="elliptic-curve-keys-w-x-and-y-coordinate-pair"><name>Elliptic Curve Keys w/ x- and y-coordinate pair</name>

<t>The required parameters for elliptic curve public keys that use the EC2 key type, such
as NIST P-256, are:</t>

<t><list style="symbols">
  <t>"kty" (label: 1, data type: int, value: 2)</t>
  <t>"crv" (label: -1, data type: int)</t>
  <t>"x" (label: -2, data type: bstr)</t>
  <t>"y" (label: -3, data type: bstr)</t>
</list></t>

<t>Details can be found in Section 7.1 of <xref target="RFC9053"/>.</t>

<t>Note: <xref target="RFC9052"/> offers both compressed as well as uncompressed point
representations. For interoperability, implementations following this
specification MUST use the uncompressed point representation. Hence,
the y-coordinate is expressed as a bstr. An implementation that uses
the compressed point representation MUST compute the uncompressed
representation for the purpose of the thumbprint calculation.</t>

</section>
<section anchor="rsa-public-keys"><name>RSA Public Keys</name>

<t>The required parameters for an RSA public key are:</t>

<t><list style="symbols">
  <t>"kty" (label: 1, data type: int, value: 3)</t>
  <t>"n" (label: -1, data type: bstr)</t>
  <t>"e" (label: -2, data type: bstr)</t>
</list></t>

</section>
<section anchor="symmetric-keys"><name>Symmetric Keys</name>

<t>The required parameters for a symmetric key are:</t>

<t><list style="symbols">
  <t>"kty" (label: 1, data type: int, value: 4)</t>
  <t>"k" (label: -1, data type: bstr)</t>
</list></t>

</section>
<section anchor="hss-lms"><name>HSS-LMS</name>

<t>The required parameters for HSS-LMS keys are:</t>

<t><list style="symbols">
  <t>"kty" (label: 1, data type: int, value: 5)</t>
  <t>"pub" (label: -1, data type: bstr)</t>
</list></t>

</section>
<section anchor="others"><name>Others</name>

<t>As other key type values are defined, the specifications
defining them should be similarly consulted to determine which
parameters, in addition to the "kty" element, are required.</t>

</section>
</section>
<section anchor="miscellaneous-considerations"><name>Miscellaneous Considerations</name>

<section anchor="why-not-include-optional-cose-key-parameters"><name>Why Not Include Optional COSE Key Parameters?</name>

<t>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 value is a digest of the parameters required to represent
the key as a COSE Key -- not of additional data that may also
accompany the key.</t>

<t>Optional parameters are not included so that the COSE Key Thumbprint refers
to a key -- not a key with an associated set of key attributes.
Different application contexts might or might not include different
subsets of optional attributes about the key in the COSE Key structure.
If these were included in the calculation of the COSE Key Thumbprint,
the values would be different for those COSE Keys, even though the keys
are the same. The benefit of including only the required parameters is that the
COSE Key Thumbprint of any COSE Key representing the key remains the same,
regardless of any other attributes that are present.</t>

<t>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"><name>Selection of Hash Function</name>

<t>A specific hash function must be chosen by an application to compute
the hash value of the hash input.  For example, SHA-256 <xref target="RFC6234"/> might
be used as the hash function by the application.  While SHA-256 is a
good default choice at the time of writing, the hash function of
choice can be expected to change over time as the cryptographic
landscape evolves.</t>

<t>Note that in many cases, only the party that creates a key will need
to know the hash function used.  A typical usage is for the producer
of the key to use the thumbprint value as a "kid" (key ID) value. In
this case, the consumer of the "kid" treats it as an opaque value that
it uses to select the key.</t>

<t>However, in some cases, multiple parties will be reproducing the COSE Key
Thumbprint calculation and comparing the results.  In these cases,
the parties will need to know which hash function was used and use
the same one.</t>

</section>
<section anchor="thumbprints-of-keys-not-in-cose-key-format"><name>Thumbprints of Keys Not in COSE Key Format</name>

<t>A key need not be in COSE Key format to create a COSE Key Thumbprint
of it.  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"><name>Relationship to Digests of X.509 Values</name>

<t>COSE Key Thumbprint values are computed on the COSE Key element required to
represent a key, rather than all members of a COSE Key that the key is
represented in.  Thus, they are more analogous to applications that
use digests of X.509 Subject Public Key Info (SPKI) values, which are
defined in Section 4.1.2.7 of <xref target="RFC5280"/>, than to applications that
use digests of complete certificate values, as the "x5t" (X.509
certificate SHA-1 thumbprint) <xref target="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="confirmation-methods"><name>Confirmation Methods</name>

<t><xref target="RFC8747"/> introduced confirmation methods for use with CBOR
Web Tokens (CWTs). CWTs have been defined in <xref target="RFC8392"/>. This
specification adds a new confirmation method based on COSE Key
Thumbprints.</t>

<t>The proof-of-possession key is identified using the "ckt" claim,
the COSE Key Thumbprint claim. This claim 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"
claim. In this case, 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" claim in the CWT.</t>

<t>The following example demonstrates the use of the "ckt" claim
in a CWT (with line-breaks inserted for editorial reasons):</t>

<figure><artwork><![CDATA[
   {
    /iss/ 1 : "coaps://as.example.com",
    /aud/ 3 : "coaps://resource.example.org",
    /exp/ 4 : 1361398824,
    /cnf/ 8 : {
      /ckt/ [[TBD1]] : h'496bd8afadf307e5b08c64b0421bf9dc
                  01528a344a43bda88fadd1669da253ec'
     }
   }
]]></artwork></figure>

<t><xref target="IANA"/> registers the "ckt" claim and the confirmation method.
The "ckt" claim is expected to be used in the "cnf" claim.</t>

</section>
</section>
<section anchor="example"><name>Example</name>

<t>This section demonstrates the COSE Key Thumbprint computation for the
following example COSE Key containing an ECC public key.</t>

<t>For better readability, the example is first presented in JSON (with
the long line broken for display purposes only).</t>

<figure><artwork><![CDATA[
  {
    / 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 /
    2:'meriadoc.brandybuck@buckland.example'
  }
]]></artwork></figure>

<t>The example above corresponds to the following CBOR encoding
(with link breaks added for display purposes only):</t>

<figure><artwork><![CDATA[
A50102200121582065EDA5A12577C2BAE829437FE338701A10AAA375E1BB5B5DE108D
E439C08551D2258201E52ED75701163F7F9E40DDF9F341B3DC9BA860AF7E0CA7CA7E9
EECD0084D19C0258246D65726961646F632E6272616E64796275636B406275636B6C6
16E642E6578616D706C65
]]></artwork></figure>

<t>Not all of the parameters from the example above are used in the COSE Key
Thumbprint since the required parameters of an elliptic curve public key are:</t>

<t><list style="symbols">
  <t>"kty"</t>
  <t>"crv"</t>
  <t>"x"</t>
  <t>"y"</t>
</list></t>

<t>The required order based on Section 4.2.1 of <xref target="RFC8949"/> is:</t>

<t><list style="symbols">
  <t>"y" (label: -3, data type: bstr)</t>
  <t>"x" (label: -2, data type: bstr)</t>
  <t>"crv" (label: -1, data type: int)</t>
  <t>"kty" (label: 1, data type: int)</t>
</list></t>

<t>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>

<figure><artwork><![CDATA[
{
   1:2,
  -1:1,
  -2:h'65eda5a12577c2bae829437fe338701a
       10aaa375e1bb5b5de108de439c08551d',
  -3:h'1e52ed75701163f7f9e40ddf9f341b3d
       c9ba860af7e0ca7ca7e9eecd0084d19c'
}
]]></artwork></figure>

<t>In CBOR encoding the result is (with line-breaks added for display
purposes only):</t>

<figure><artwork><![CDATA[
A40102200121582065EDA5A12577C2BAE829437FE338701A10AAA375E1BB5B5DE
108DE439C08551D2258201E52ED75701163F7F9E40DDF9F341B3DC9BA860AF7E0
CA7CA7E9EECD0084D19C
]]></artwork></figure>

<t>Using SHA-256, the resulting thumbprint is:</t>

<figure><artwork><![CDATA[
496bd8afadf307e5b08c64b0421bf9dc01528a344a43bda88fadd1669da253ec
]]></artwork></figure>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>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.</t>

<t>If two asymmetric keys are used by different parties with different
key identifiers then the COSE Key Thumbprints will still be equal since
the key identifier itself is not included in the thumbprint calculation
(similarly to other optional parameters in the COSE_Key structure).
When the inclusion of certain optional parameters in the thumbprint
calcuation is important for a given application, this specification
is not the appropriate choice.</t>

<t>To promote interoperability among implementations, the SHA-256 hash
algorithm is mandatory to implement.</t>

<t>While thumbprint values are valuable 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
that an attacker may supply a key that is a transformation of a key
in order to have it appear to be 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 would appear to be a different key.</t>

<t>Producing thumbprints of symmetric keys needs to be done with care. Developers
MUST ensure that the symmetric key has sufficient entropy to prevent
attackers to precompute 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 128 bit length. Using thumbprints with passwords
(i.e. low-entropy secrets) is dangerous and MUST be avoided. If a
developer is unable to determine whether all symmetric keys used in an
application have sufficient entropy, then thumbprints of symmetric keys
MUST NOT 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"><name>IANA Considerations</name>

<t>IANA is requested to add the following entry to the "CWT Confirmation
Methods" registry established by <xref target="RFC8747"/>:</t>

<t><list style="symbols">
  <t>Confirmation Method Name: ckt</t>
  <t>Confirmation Method Description: COSE Key Thumbprint</t>
  <t>JWT Confirmation Method Name: jkt</t>
  <t>Confirmation Key: [[TBD1]]</t>
  <t>Confirmation Value Type(s): binary string</t>
  <t>Change Controller: IESG</t>
  <t>Specification Document(s): [[This document]]</t>
</list></t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>We would like to thank the authors of <xref target="RFC7638"/> for their work on the
JSON Web Key (JWK) Thumbprint specification. This document applies JWK
Thumbprints to COSE Key structures.</t>

<t>Additionally, we would like to thank Carsten Bormann, Orie Steele,
Ilari Liusvaara, Laurence Lundblade, Daisuke Ajitomi, Michael Richardson,
Mike Jones, and Brendan Moran for their feedback.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8949">
  <front>
    <title>Concise Binary Object Representation (CBOR)</title>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <date month="December" year="2020"/>
    <abstract>
      <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
      <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="94"/>
  <seriesInfo name="RFC" value="8949"/>
  <seriesInfo name="DOI" value="10.17487/RFC8949"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>

<reference anchor="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>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>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">
  <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>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>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>

<reference anchor="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>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="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>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>




    </references>

    <references title='Informative References'>



<reference anchor="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>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="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>Federal Information Processing Standard, FIPS</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6234"/>
  <seriesInfo name="DOI" value="10.17487/RFC6234"/>
</reference>

<reference anchor="RFC5280">
  <front>
    <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
    <author fullname="D. Cooper" initials="D." surname="Cooper"/>
    <author fullname="S. Santesson" initials="S." surname="Santesson"/>
    <author fullname="S. Farrell" initials="S." surname="Farrell"/>
    <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <author fullname="W. Polk" initials="W." surname="Polk"/>
    <date month="May" year="2008"/>
    <abstract>
      <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5280"/>
  <seriesInfo name="DOI" value="10.17487/RFC5280"/>
</reference>

<reference anchor="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>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>



  </back>

<!-- ##markdown-source:
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

-->

</rfc>

