<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-cose-merkle-tree-proofs-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title>COSE Receipts</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-cose-merkle-tree-proofs-07"/>
    <author initials="O." surname="Steele" fullname="Orie Steele">
      <organization>Transmute</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>orie@transmute.industries</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>antdl@microsoft.com</email>
      </address>
    </author>
    <author initials="C." surname="Fournet" fullname="Cedric Fournet">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>fournet@microsoft.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="17"/>
    <area>Security</area>
    <workgroup>COSE</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 62?>

<t>COSE (CBOR Object Signing and Encryption) Receipts prove properties of a verifiable data structure to a verifier.
Verifiable data structures and associated proof types enable security properties, such as minimal disclosure, transparency and non-equivocation.
Transparency helps maintain trust over time, and has been applied to certificates, end to end encrypted messaging systems, and supply chain security.
This specification enables concise transparency oriented systems, by building on CBOR (Concise Binary Object Representation) and COSE.
The extensibility of the approach is demonstrated by providing CBOR encodings for RFC9162.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    CBOR Object Signing and Encryption Working Group mailing list (cose@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cose/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/cose-wg/draft-ietf-cose-merkle-tree-proofs"/>.</t>
    </note>
  </front>
  <middle>
    <?line 70?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>COSE Receipts are signed proofs that include metadata about about certain states of a verifiable data structure (VDS) that are true when the COSE Receipt was issued.
COSE Receipts can include proves that a document is in a database (proof of inclusion), that a database is append only (proof of consistency), that a smaller set of statements are contained in a large set of statements (proof of disclosure, a special case of proof of inclusion), or proof that certain data is not yet present in a database (proofs of non inclusion).
Different VDS can produce different verifiable data structure proofs (VDP).
The combination of representations of various VDS and VDP can significantly increase burden for implementers and create interoperability challenges for transparency services.
This document describes how to convey VDS and associated VDP types in unified COSE envelopes.</t>
      <section anchor="requirements-notation">
        <name>Requirements Notation</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="cbor-tags">
      <name>CBOR Tags</name>
      <t>Editorial Note (To be removed by RFC Editor).</t>
      <t>This section will be removed before the document is completed, its purpose is to track the TBD code points references throughout the draft.</t>
      <dl>
        <dt>395 is TBD_1:</dt>
        <dd>
          <t>A requested cose header parameter representing the verifiable data structure used.</t>
        </dd>
        <dt>396 is TBD_2:</dt>
        <dd>
          <t>A requested cose header parameter representing the verifiable data structure parameters map (proofs map).</t>
        </dd>
      </dl>
      <t>The other codepoints are assigned from the registries established in this draft, they are therefore not marked TBD.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <dl>
        <dt>CDDL:</dt>
        <dd>
          <t>Concise Data Definition Language (CDDL) is defined in <xref target="RFC8610"/>.</t>
        </dd>
        <dt>EDN:</dt>
        <dd>
          <t>CBOR Extended Diagnostic Notation (EDN) is defined in <xref target="RFC8949"/>, where it is referred to as "diagnostic notation", and is revised in <xref target="I-D.draft-ietf-cbor-edn-literals"/>.</t>
        </dd>
        <dt>Verifiable Data Structure (VDS):</dt>
        <dd>
          <t>A data structure which supports one or more Proof Types.
This property is conceptually similar to "alg" (1), it described an algorithm used to maintain the verifiable data structure, for example a binary merkle tree algorithm.</t>
        </dd>
        <dt>Verifiable Data Structure Parameters (VDP):</dt>
        <dd>
          <t>Parameters to a verifiable data structure that are used to prove properties, such as authentication, inclusion, consistency, and freshness.
Parameters can include multiple proofs of a given type, or multiple types of proof (inclusion and consistency).
This property is conceptually similar to COSE Header Parameter "epk" (-1) or CBOR Web Token (CWT) claim "cnf" (8), it is applied to a verifiable data structure, to confirm a property.
For example an encrypted message might be decrypted using epk and a private key, a digital signature for authentication might be verified using cnf and the (CWT) claim "nonce" and "audience", and an inclusion proof for a binary merkle tree might be verified with VDP and some entry that is being tested or inclusion in the tree.</t>
        </dd>
        <dt>Proof Type:</dt>
        <dd>
          <t>A verifiable process, that proves properties of a Verifiable Data Structure.
For example, a VDS, such as a binary merkle tree, can support multiple proofs of type "inclusion" where each proof confirms that a given entry is included in a merkle root.</t>
        </dd>
        <dt>Proof Value:</dt>
        <dd>
          <t>An encoding of a Proof Type in CBOR.</t>
        </dd>
        <dt>Entry:</dt>
        <dd>
          <t>An entry in a verifiable data structure for which proofs can be derived.</t>
        </dd>
        <dt>Receipt:</dt>
        <dd>
          <t>A COSE object, as defined in <xref target="RFC9052"/>, containing the header parameters necessary to convey VDP for an associated VDS.</t>
        </dd>
      </dl>
    </section>
    <section anchor="sec-generic-verifiable-data-structures">
      <name>Verifiable Data Structures in CBOR</name>
      <t>This section describes representations of verifiable data structure proofs in CBOR.
For example, construction of a merkle tree leaf, or an inclusion proof from a leaf to a merkle root, might have several different representations, depending on the verifiable data structure used.
Differences in representations are necessary to support efficient verification, unique security or privacy properties, and for compatibility with specific implementations.
This document defines two extension points for enabling verifiable data structures with COSE and provides concrete examples for the structures and proofs defined in <xref target="RFC9162"/>.
The design of these structures is influenced by the conventions established for COSE Keys.</t>
      <t>During testing and development the experimental range <bcp14>SHOULD</bcp14> be used, unless early assignment for a provisional entry has been completed.</t>
      <section anchor="sec-cose-verifiable-data-structures">
        <name>Structures</name>
        <t>Similar to <eref target="https://www.iana.org/assignments/cose/cose.xhtml#key-type">COSE Key Types</eref>, different verifiable data structures support different algorithms.
As EC2 keys (1: 2) support both digital signature and key agreement algorithms, RFC9162_SHA256 (TBD_1 : 1) supports both inclusion and consistency proofs.</t>
        <t>This document establishes a registry of verifiable data structure algorithms, with the following initial contents:</t>
        <table align="left" anchor="cose-verifiable-data-structures">
          <name>COSE Verifiable Data Structures</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">N/A</td>
              <td align="left">0</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">RFC9162_SHA256</td>
              <td align="left">1</td>
              <td align="left">SHA256 Binary Merkle Tree</td>
              <td align="left">
                <xref target="RFC9162"/></td>
            </tr>
            <tr>
              <td align="left">EXPERIMENTAL</td>
              <td align="left">11</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">EXPERIMENTAL</td>
              <td align="left">22</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">EXPERIMENTAL</td>
              <td align="left">33</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>When designing new verifiable data structures, please request the next available positive integer as your requested assignment, for example:</t>
        <table align="left" anchor="cose-verifiable-data-structures-registration-guidance">
          <name>How to register new structures</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">N/A</td>
              <td align="left">0</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">RFC9162_SHA256</td>
              <td align="left">1</td>
              <td align="left">SHA256 Binary Merkle Tree</td>
              <td align="left">
                <xref target="RFC9162"/></td>
            </tr>
            <tr>
              <td align="left">Your name</td>
              <td align="left">TBD (requested assignment 2)</td>
              <td align="left">tbd</td>
              <td align="left">Your specification</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-cose-verifiable-data-structure-parameters">
        <name>Parameters</name>
        <t>Similar to <eref target="https://www.iana.org/assignments/cose/cose.xhtml#key-type-parameters">COSE Key Type Parameters</eref>, as EC2 keys (1: 2) keys require and give meaning to specific parameters, such as -1 (crv), -2 (x), -3 (y), -4 (d), RFC9162_SHA256 (TBD_1 : 1) supports both (-1) inclusion and (-2) consistency proofs.</t>
        <t>This document establishes a registry of verifiable data structure algorithms, with the following initial contents:</t>
        <table align="left" anchor="cose-verifiable-data-structures-parameters">
          <name>COSE Verifiable Data Structure Parameters</name>
          <thead>
            <tr>
              <th align="left">Verifiable Data Structure</th>
              <th align="left">Name</th>
              <th align="left">Label</th>
              <th align="left">CBOR Type</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">inclusion proofs</td>
              <td align="left">-1</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Proof of inclusion</td>
              <td align="left">
                <xref target="sec-rfc9162-sha256-inclusion-proof"/></td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">consistency proofs</td>
              <td align="left">-2</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Proof of append only property</td>
              <td align="left">
                <xref target="sec-rfc9162-sha256-consistency-proof"/></td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">unknown</td>
              <td align="left">-1</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">22</td>
              <td align="left">unknown</td>
              <td align="left">-1</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">33</td>
              <td align="left">unknown</td>
              <td align="left">-1</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>Proof types are specific to their associated "verifiable data structure", for example, different Merkle trees might support different representations of "inclusion proof" or "consistency proof".
Implementers should not expect interoperability across "verifiable data structures", but they should expect conceptually similar properties across the different registered proof types.
For example, 2 different merkle tree based verifiable data structures might both support proofs of inclusion.
Security analysis <bcp14>SHOULD</bcp14> be conducted prior to migrating to new structures to ensure the new security and privacy assumptions are acceptable for the use case.
When designing new verifiable data structure parameters (or proof types), please start with -1, and count down for each proof type supported by your verifiable data structure:</t>
        <table align="left" anchor="cose-verifiable-data-structures-parameters-registration-guidance">
          <name>How to register new parameters</name>
          <thead>
            <tr>
              <th align="left">Verifiable Data Structure</th>
              <th align="left">Name</th>
              <th align="left">Label</th>
              <th align="left">CBOR Type</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">inclusion proofs</td>
              <td align="left">-1</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Proof of inclusion</td>
              <td align="left">
                <xref target="sec-rfc9162-sha256-inclusion-proof"/></td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">consistency proofs</td>
              <td align="left">-2</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Proof of append only property</td>
              <td align="left">
                <xref target="sec-rfc9162-sha256-consistency-proof"/></td>
            </tr>
            <tr>
              <td align="left">TBD (requested assignment 2)</td>
              <td align="left">new proof type</td>
              <td align="left">-1</td>
              <td align="left">tbd</td>
              <td align="left">tbd</td>
              <td align="left">Your_Specification</td>
            </tr>
            <tr>
              <td align="left">TBD (requested assignment 2)</td>
              <td align="left">new proof type</td>
              <td align="left">-2</td>
              <td align="left">tbd</td>
              <td align="left">tbd</td>
              <td align="left">Your_Specification</td>
            </tr>
            <tr>
              <td align="left">TBD (requested assignment 2)</td>
              <td align="left">new proof type</td>
              <td align="left">-3</td>
              <td align="left">tbd</td>
              <td align="left">tbd</td>
              <td align="left">Your_Specification</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="usage">
        <name>Usage</name>
        <t>This document registered a new COSE Header Parameter <tt>receipts</tt> (394) to enable this Receipts to be conveyed in the protected and unprotected headers of COSE Objects.</t>
        <t>When the receipts parameter is present, the associated verifiable data structure and verifiable data structure proofs <bcp14>MUST</bcp14> match entries present in the registries established in RFC XXXX.</t>
        <t>The following informative CDDL is provided:</t>
        <figure anchor="fig-receipts-cddl">
          <name>CDDL for a COSE Sign1 with attached receipts</name>
          <sourcecode type="cddl"><![CDATA[
Receipt = #6.18(COSE_Sign1)

Protected_Header = {
  * cose-label => cose-value
}

Unprotected_Header = {
  &(receipts: 394)  => [+ Receipt]
  * cose-label => cose-value
}

COSE_Sign1 = [
  protected   : bstr .cbor Protected_Header,
  unprotected : Unprotected_Header,
  payload     : bstr / nil,
  signature   : bstr
]
]]></sourcecode>
        </figure>
        <t>The following informative EDN is provided:</t>
        <figure anchor="fig-receipts-edn">
          <name>A COSE Signature with multiple receipts</name>
          <sourcecode type="cbor-diag"><![CDATA[
/ cose-sign1 / 18([
  / protected   / <<{
    / key / 4 : "vCl7UcS0ZZY99VpRthDc-0iUjLdfLtnmFqLJ2-Tt8N4",
    / algorithm / 1 : -7,  # ES256
  }>>,
  / unprotected / {
    / receipts / 394 : {
      <</ cose-sign1 / 18([
        / protected   / <<{
          / key / 4 : "mxA4KiOkQFZ-dkLebSo3mLOEPR7rN8XtxkJe45xuyJk",
          / algorithm / 1 : -7,  # ES256
          / vds       / 395 : 1, # RFC9162 SHA-256
        }>>,
        / unprotected / {
          / proofs / 396 : {
            / inclusion / -1 : [
              <<[
                / size / 9, / leaf / 8,
                / inclusion path /
                h'7558a95f...e02e35d6'
              ]>>
            ],
          },
        },
        / payload     / null,
        / signature   / h'02d227ed...ccd3774f'
      ])>>,
      <</ cose-sign1 / 18([
        / protected   / <<{
          / key / 4 : "ajOkeBTJou_wPrlExLMw7L9OTCD5ZIOBYc-O6LESe9c",
          / algorithm / 1 : -7,  # ES256
          / vds       / 395 : 1, # RFC9162 SHA-256
        }>>,
        / unprotected / {
          / proofs / 396 : {
            / inclusion / -1 : [
              <<[
                / size / 6, / leaf / 5,
                / inclusion path /
                h'9352f974...4ffa7ce0',
                h'54806f32...f007ea06'
              ]>>
            ],
          },
        },
        / payload     / null,
        / signature   / h'36581f38...a5581960'
      ])>>
    },
  },
  / payload     / h'0167c57c...deeed6d4',
  / signature   / h'2544f2ed...5840893b'
])
]]></sourcecode>
        </figure>
        <section anchor="registration-requirements">
          <name>Registration Requirements</name>
          <t>Each specification <bcp14>MUST</bcp14> define how to encode the verifiable data structure and its parameters (also called proof types) in CBOR.
Each specification <bcp14>MUST</bcp14> define how to produce and consume the supported proof types.
See <xref target="sec-rfc-9162-verifiable-data-structure-definition"/> as an example.</t>
          <t>Where a specification supports a choice of hash algorithm, an IANA registration must be made for each individually supported algorithm.
For example, to provide for both SHA256 and SHA3_256 with <xref target="RFC9162"/>,
both "RFC9162_SHA256" and "RFC9162_SHA3_256" require entries in the relevant IANA registries.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-rfc-9162-verifiable-data-structure-definition">
      <name>RFC9162_SHA256</name>
      <t>This section defines how the data structures described in <xref target="RFC9162"/> are mapped to the terminology defined in this document, using CBOR and COSE.</t>
      <section anchor="verifiable-data-structure">
        <name>Verifiable Data Structure</name>
        <t>The integer identifier for this Verifiable Data Structure is 1.
The string identifier for this Verifiable Data Structure is "RFC9162_SHA256".
See <xref target="cose-verifiable-data-structures"/>.
See <xref target="RFC9162"/>, 2.1.1. Definition of the Merkle Tree, for a complete description of this verifiable data structure.</t>
      </section>
      <section anchor="sec-rfc9162-sha256-inclusion-proof">
        <name>Inclusion Proof</name>
        <t>See <xref target="RFC9162"/>, 2.1.3.1. Generating an Inclusion Proof, for a complete description of this verifiable data structure proof type.</t>
        <t>The CBOR representation of an inclusion proof for RFC9162_SHA256 is:</t>
        <figure anchor="rfc9162-sha256-cbor-inclusion-proof">
          <name>CBOR Encoded RFC9162 Inclusion Proof</name>
          <sourcecode type="cddl"><![CDATA[
inclusion-proof = bstr .cbor [

    ; tree size at current merkle root
    tree-size: uint

    ; index of leaf in tree
    leaf-index: uint

    ; path from leaf to current merkle root
    inclusion-path: [ + bstr ]
]
]]></sourcecode>
        </figure>
        <t>The term <tt>leaf-index</tt> is used for alignment with the use established in <xref target="RFC9162"/></t>
        <t>Note that <xref target="RFC9162"/> defines that verification <bcp14>MUST</bcp14> fail if leaf-index is &gt;= tree-size, and inclusion proofs are defined only for leaf nodes.
The identifying index of a leaf node is relative to all nodes in the tree size for which the proof was obtained.</t>
        <section anchor="receipt-of-inclusion">
          <name>Receipt of Inclusion</name>
          <t>In a signed inclusion proof, the payload is the merkle tree root which corresponds to the log at size <tt>tree-size</tt>.
Specifications are encouraged to make payloads detached when possible, forcing validation-time comparison.
Profiles of proof signatures are encouraged to make additional protected header parameters mandatory, to ensure that claims are processed with their intended semantics.
One way to include this information in the COSE structure is use of the typ (type) Header Parameter, see <xref target="I-D.ietf-cose-typ-header-parameter"/> and the similar guidance provided in <xref target="I-D.ietf-cose-cwt-claims-in-headers"/>.
The protected header for an RFC9162_SHA256 inclusion proof signature is:</t>
          <figure anchor="vds-in-inclusion-receipt-protected-header">
            <name>Protected Header for a Receipt of Inclusion</name>
            <sourcecode type="cddl"><![CDATA[
protected-header-map = {
  &(alg: 1) => int
  &(vds: 395) => int
  * cose-label => cose-value
}
]]></sourcecode>
          </figure>
          <ul spacing="normal">
            <li>
              <t>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int.</t>
            </li>
            <li>
              <t>vds (label: 395): <bcp14>REQUIRED</bcp14>. verifiable data structure algorithm identifier. Value type: int.</t>
            </li>
          </ul>
          <t>The unprotected header for an RFC9162_SHA256 inclusion proof signature is:</t>
          <figure anchor="vdp-in-unprotected-header">
            <name>A Verifiable Data Structure Proofs in an Unprotected Header</name>
            <sourcecode type="cddl"><![CDATA[
inclusion-proofs = [ + inclusion-proof ]

verifiable-proofs = {
  &(inclusion-proof: -1) => inclusion-proofs
}

unprotected-header-map = {
  &(vdp: 396) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
          </figure>
          <ul spacing="normal">
            <li>
              <t>vdp (label: 396): <bcp14>REQUIRED</bcp14>. Verifiable data structure proofs. Value type: Map.</t>
            </li>
            <li>
              <t>inclusion-proof (label: -1): <bcp14>REQUIRED</bcp14>. Inclusion proofs. Value type: Array of bstr.</t>
            </li>
          </ul>
          <t>The payload of an RFC9162_SHA256 inclusion proof signature is the Merkle tree hash as defined in <xref target="RFC9162"/>.
The payload <bcp14>SHOULD</bcp14> be detached.
Detaching the payload forces verifiers to recompute the root from the inclusion proof, this protects against implementation errors where the signature is verified but the merkle root does not match the inclusion proof.
The EDN for a Receipt containing an inclusion proof for RFC9162_SHA256 is:</t>
          <figure anchor="rfc9162_sha256_inclusion_receipt">
            <name>Receipt of Inclusion</name>
            <sourcecode type="cbor-diag"><![CDATA[
/ cose-sign1 / 18([
  / protected   / <<{
    / algorithm / 1 : -7,  # ES256
    / vds       / 395 : 1, # RFC9162 SHA-256
  }>>,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        <<[
          / size / 20, / leaf / 17,
          / inclusion path /
          h'fc9f050f...221c92cb',
          h'bd0136ad...6b28cf21',
          h'd68af9d6...93b1632b'
        ]>>
      ],
    },
  },
  / payload     / null,
  / signature   / h'de24f0cc...9a5ade89'
])
]]></sourcecode>
          </figure>
          <t>The VDS in the protected header is necessary to understand the inclusion proof structure in the unprotected header.</t>
          <t>The inclusion proof and signature are verified in order.
First the verifiers applies the inclusion proof to a possible entry (set member) bytes.
If this process fails, the inclusion proof may have been tampered with.
If this process succeeds, the result is a merkle root, which in the attached as the COSE Sign1 payload.
Second the verifier checks the signature of the COSE Sign1.
If the resulting signature verifies, the Receipt has proved inclusion of the entry in the verifiable data structure.
If the resulting signature does not verify, the signature may have been tampered with.
It is recommended that implementations return a single boolean result for Receipt verification operations, to reduce the chance of accepting a valid signature over an invalid inclusion proof.</t>
        </section>
      </section>
      <section anchor="sec-rfc9162-sha256-consistency-proof">
        <name>Consistency Proof</name>
        <t>See <xref target="RFC9162"/>, 2.1.4.1. Generating a Consistency Proof, for a complete description of this verifiable data structure proof type.</t>
        <t>The cbor representation of a consistency proof for RFC9162_SHA256 is:</t>
        <figure anchor="rfc9162_sha256_consistency_proof">
          <name>CBOR Encoded RFC9162 Consistency Proof</name>
          <sourcecode type="cddl"><![CDATA[
consistency-proof =  bstr .cbor [

    ; older merkle root tree size
    tree-size-1: uint

    ; newer merkle root tree size
    tree-size-2: uint

    ; path from older merkle root to newer merkle root.
    consistency-path: [ + bstr ]

]
]]></sourcecode>
        </figure>
        <section anchor="receipt-of-consistency">
          <name>Receipt of Consistency</name>
          <t>In a signed consistency proof, the newer merkle tree root (proven to be consistent with an older merkle tree root) is an attached payload and corresponds to the log at size tree-size-2.</t>
          <t>The protected header for an RFC9162_SHA256 consistency proof signature is:</t>
          <figure anchor="vds-in-consistency-receipt-protected-header">
            <name>Protected Header for a Receipt of Consistency</name>
            <sourcecode type="cddl"><![CDATA[
protected-header-map = {
  &(alg: 1) => int
  &(vds: 395) => int
  * cose-label => cose-value
}
]]></sourcecode>
          </figure>
          <ul spacing="normal">
            <li>
              <t>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int.</t>
            </li>
            <li>
              <t>vds (label: TBD_1): <bcp14>REQUIRED</bcp14>. Verifiable data structure algorithm identifier. Value type: int.</t>
            </li>
          </ul>
          <t>The unprotected header for an RFC9162_SHA256 consistency proof signature is:</t>
          <sourcecode type="cddl"><![CDATA[
consistency-proofs = [ + consistency-proof ]

verifiable-proofs = {
  &(consistency-proof: -2) => consistency-proofs
}

unprotected-header-map = {
  &(vdp: 396) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
          <ul spacing="normal">
            <li>
              <t>vdp (label: 396): <bcp14>REQUIRED</bcp14>. Verifiable data structure proofs. Value type: Map.</t>
            </li>
            <li>
              <t>consistency-proof (label: -2): <bcp14>REQUIRED</bcp14>. Consistency proofs. Value type: Array of bstr.</t>
            </li>
          </ul>
          <t>The payload of an RFC9162_SHA256 consistency proof signature is:
The newer Merkle tree hash as defined in <xref target="RFC9162"/>.
The payload <bcp14>SHOULD</bcp14> be detached.
Detaching the payload forces verifiers to recompute the root from the consistency proof, this protects against implementation errors where the signature is verified but the merkle root does not match the proof.</t>
          <t>The EDN for a Receipt containing a consistency proof for RFC9162_SHA256 is:</t>
          <figure anchor="rfc9162_sha256_consistency_receipt">
            <name>Example consistency receipt</name>
            <sourcecode type="cbor-diag"><![CDATA[
/ cose-sign1 / 18([
  / protected   / <<{
    / algorithm / 1 : -7,  # ES256
    / vds       / 395 : 1, # RFC9162 SHA-256
  }>>,
  / unprotected / {
    / proofs / 396 : {
      / consistency / -2 : [
        <<[
          / old / 20, / new / 104,
          / consistency path /
          h'e5b3e764...c4a813bc',
          h'87e8a084...4f529f69',
          h'f712f76d...92a0ff36',
          h'd68af9d6...93b1632b',
          h'249efab6...b7614ccd',
          h'85dd6293...38914dc1'
        ]>>
      ],
    },
  },
  / payload     / null,
  / signature   / h'94469f73...52de67a1'
])
]]></sourcecode>
          </figure>
          <t>The VDS in the protected header is necessary to understand the consistency proof structure in the unprotected header.</t>
          <t>The signature and consistency proof are verified in order.</t>
          <t>First the verifier checks the signature on the COSE Sign1.
If the verification fails, the consistency proof is not checked.
Second the consistency proof is checked by applying a previous inclusion proof, to the consistency proof.
If the verification fails, the append only property of the verifiable data structure is not assured.
This approach is specific to RFC9162_SHA256, different verifiable data structures may not support consistency proofs.
It is recommended that implementations return a single boolean result for Receipt verification operations, to reduce the chance of accepting a valid signature over an invalid consistency proof.</t>
        </section>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>See the privacy considerations section of:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="RFC9162"/></t>
        </li>
        <li>
          <t><xref target="RFC9053"/></t>
        </li>
      </ul>
      <section anchor="log-length">
        <name>Log Length</name>
        <t>Some structures and proofs leak the size of the log at the time of inclusion.
In the case that a log only stores certain kinds of information, this can reveal details that could impact reputation.
For example, if a transparency log only stored breach notices, a receipt for a breach notice would reveal the number of previous breaches at the time the notice was made transparent.</t>
      </section>
      <section anchor="header-parameters">
        <name>Header Parameters</name>
        <t>Additional header parameters can reveal information about the transparency service or its log entries.
A privacy analysis <bcp14>MUST</bcp14> be performed for all mandatory fields in profiles based on this specification.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>See the security considerations section of:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="RFC9162"/></t>
        </li>
        <li>
          <t><xref target="RFC9053"/></t>
        </li>
      </ul>
      <section anchor="choice-of-signature-algorithms">
        <name>Choice of Signature Algorithms</name>
        <t>A security analysis <bcp14>MUST</bcp14> be performed to ensure that the digital signature algorithm <tt>alg</tt> has the appropriate strength to secure receipts.</t>
        <t>It is recommended to select signature algorithms that share cryptographic components with the verifiable data structure used, for example:
Both RFC9162_SHA256 and ES256 depend on the sha-256 hash function.</t>
      </section>
      <section anchor="validity-period">
        <name>Validity Period</name>
        <t>In some cases, receipts <bcp14>MAY</bcp14> include strict validity periods, for example, activation not too far in the future, or expiration, not too far in the past.
See the <tt>iat</tt>, <tt>nbf</tt>, and <tt>exp</tt> claims in <xref target="RFC8392"/>, for one way to accomplish this.
The details of expressing validity periods are out of scope for this document.</t>
      </section>
      <section anchor="status-updates">
        <name>Status Updates</name>
        <t>In some cases, receipts should be "revocable" or "suspendible", after being issued, regardless of their validity period.
The details of expressing statuses are out of scope for this document.</t>
      </section>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>We would like to thank
Maik Riechert,
Jon Geater,
Mike Jones,
Mike Prorock,
Ilari Liusvaara,
for their contributions (some of which substantial) to this draft and to the initial set of implementations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="additions-to-existing-registries">
        <name>Additions to Existing Registries</name>
        <section anchor="new-entries-to-the-cose-header-parameters-registry">
          <name>New Entries to the COSE Header Parameters Registry</name>
          <t>This document requests IANA to add new values to the 'COSE Header Parameters' registries in the 'Integer values between 1 and 255' range with 'Specification Required' Registration Procedure.</t>
          <section anchor="cose-header-parameters">
            <name>COSE Header Parameters</name>
            <section anchor="receipts">
              <name>Receipts</name>
              <ul spacing="normal">
                <li>
                  <t>Name: receipts</t>
                </li>
                <li>
                  <t>Label: TBD_0 (requested assignment 394)</t>
                </li>
                <li>
                  <t>Value type: array (of bstr)</t>
                </li>
                <li>
                  <t>Value registry: https://www.iana.org/assignments/cose/cose.xhtml#header-parameters</t>
                </li>
                <li>
                  <t>Description: Priority ordered list of CBOR encoded Receipts.</t>
                </li>
                <li>
                  <t>Reference: RFC XXXX</t>
                </li>
              </ul>
            </section>
            <section anchor="verifiable-data-structure-1">
              <name>Verifiable Data Structure</name>
              <ul spacing="normal">
                <li>
                  <t>Name: vds</t>
                </li>
                <li>
                  <t>Label: TBD_1 (requested assignment 395)</t>
                </li>
                <li>
                  <t>Value type: int</t>
                </li>
                <li>
                  <t>Value registry: https://www.iana.org/assignments/cose/cose.xhtml#header-parameters</t>
                </li>
                <li>
                  <t>Description: Algorithm name for verifiable data structure, used to produce verifiable data structure proofs.</t>
                </li>
                <li>
                  <t>Reference: RFC XXXX</t>
                </li>
              </ul>
            </section>
            <section anchor="verifiable-data-structure-proofs">
              <name>Verifiable Data Structure Proofs</name>
              <ul spacing="normal">
                <li>
                  <t>Name: vdp (requested assignment 396)</t>
                </li>
                <li>
                  <t>Label: TBD_2</t>
                </li>
                <li>
                  <t>Value type: map</t>
                </li>
                <li>
                  <t>Value registry: https://www.iana.org/assignments/cose/cose.xhtml#header-parameters</t>
                </li>
                <li>
                  <t>Description: Location for verifiable data structure proofs in COSE Header Parameters.</t>
                </li>
                <li>
                  <t>Reference: RFC XXXX</t>
                </li>
              </ul>
            </section>
          </section>
        </section>
        <section anchor="verifiable-data-structure-registry">
          <name>COSE Verifiable Data Structures</name>
          <t>IANA will be asked to establish a registry of verifiable data structure identifiers, named "COSE Verifiable Data Structures" to be administered under a Specification Required policy <xref target="RFC8126"/>.</t>
          <t>Template:</t>
          <ul spacing="normal">
            <li>
              <t>Name: The name of the verifiable data structure</t>
            </li>
            <li>
              <t>Value: The identifier for the verifiable data structure</t>
            </li>
            <li>
              <t>Description: A brief description of the verifiable data structure</t>
            </li>
            <li>
              <t>Reference: Where the verifiable data structure is defined</t>
            </li>
          </ul>
          <t>Initial contents: Provided in <xref target="cose-verifiable-data-structures"/></t>
          <section anchor="expert-review">
            <name>Expert Review</name>
            <t>This IANA registries is established under a Specification Required policy.</t>
            <t>This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason, so they should be given substantial latitude.</t>
            <t>Expert reviewers should take into consideration the following points:</t>
            <ul spacing="normal">
              <li>
                <t>Point squatting should be discouraged.
Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered, and that the point is likely to be used in deployments.</t>
              </li>
              <li>
                <t>Specifications are required for all point assignments.
Early Allocation is permissible, see Section 2 of <xref target="RFC7120"/>.
Provisional assignments to expired drafts <bcp14>MUST</bcp14> be removed from the registry.</t>
              </li>
              <li>
                <t>Points assigned in this registry <bcp14>MUST</bcp14> have references that match the COSE Verifiable Data Structure Parameters registry.
It is not permissible to assign points in this registry, for which no Verifiable Data Structure Parameters entries exist.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="verifiable-data-structure-parameters-registry">
          <name>COSE Verifiable Data Structure Parameters</name>
          <t>IANA will be asked to establish a registry of verifiable data structure parameters, named "COSE Verifiable Data Structure Parameters" to be administered under a Specification Required policy <xref target="RFC8126"/>.</t>
          <t>Template:</t>
          <ul spacing="normal">
            <li>
              <t>Verifiable Data Structure: The identifier for the verifiable data structure</t>
            </li>
            <li>
              <t>Name: The name of the proof type</t>
            </li>
            <li>
              <t>Label: The integer of the proof type</t>
            </li>
            <li>
              <t>CBOR Type: The cbor data type of the proof</t>
            </li>
            <li>
              <t>Description: The description of the proof type</t>
            </li>
            <li>
              <t>Reference: Where the proof type is defined</t>
            </li>
          </ul>
          <t>Initial contents: Provided in <xref target="cose-verifiable-data-structures-parameters"/></t>
          <section anchor="expert-review-1">
            <name>Expert Review</name>
            <t>This IANA registries is established under a Specification Required policy.</t>
            <t>This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason, so they should be given substantial latitude.</t>
            <t>Expert reviewers should take into consideration the following points:</t>
            <ul spacing="normal">
              <li>
                <t>Point squatting should be discouraged.
Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered, and that the point is likely to be used in deployments.</t>
              </li>
              <li>
                <t>Specifications are required for all point assignments.
Early Allocation is permissible, see Section 2 of <xref target="RFC7120"/>.
Provisional assignments to expired drafts <bcp14>MUST</bcp14> be removed from the registry.</t>
              </li>
              <li>
                <t>Points assigned in this registry <bcp14>MUST</bcp14> have references that match the COSE Verifiable Data Structures registry.
It is not permissible to assign points in this registry, for which no Verifiable Data Structure entry exists.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7049">
          <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="October" year="2013"/>
            <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>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7049"/>
          <seriesInfo name="DOI" value="10.17487/RFC7049"/>
        </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="RFC9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="E. Messeri" initials="E." surname="Messeri"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7120">
          <front>
            <title>Early IANA Allocation of Standards Track Code Points</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <date month="January" year="2014"/>
            <abstract>
              <t>This memo describes the process for early allocation of code points by IANA from registries for which "Specification Required", "RFC Required", "IETF Review", or "Standards Action" policies apply. This process can be used to alleviate the problem where code point allocation is needed to facilitate desired or required implementation and deployment experience prior to publication of an RFC, which would normally trigger code point allocation. The procedures in this document are intended to apply only to IETF Stream documents.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="100"/>
          <seriesInfo name="RFC" value="7120"/>
          <seriesInfo name="DOI" value="10.17487/RFC7120"/>
        </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="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="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="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="BCP205">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </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>
        <reference anchor="I-D.draft-ietf-cbor-edn-literals">
          <front>
            <title>CBOR Extended Diagnostic Notation (EDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="1" month="September" year="2024"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR) (STD 94, RFC 8949) 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.

   In addition to the binary interchange format, CBOR from the outset
   (RFC 7049) defined a text-based "diagnostic notation" in order to be
   able to converse about CBOR data items without having to resort to
   binary data.  RFC 8610 extended this into what is known as Extended
   Diagnostic Notation (EDN).

   This document consolidates the definition of EDN, sets forth a
   further step of its evolution, and is intended to serve as a single
   reference target in specifications that use EDN.

   It specifies an extension point for adding application-oriented
   extensions to the diagnostic notation.  It then defines two such
   extensions that enhance EDN with text representations of epoch-based
   date/times and of IP addresses and prefixes (RFC 9164).

   A few further additions close some gaps in usability.  The document
   modifies one extension originally specified in Appendix G.4 of RFC
   8610 to enable further increasing usability.  To facilitate tool
   interoperation, this document specifies a formal ABNF grammar, and it
   adds media types.


   // The present revision -12 reflects the branch "roll-up" in the
   // repository, an attempt to contain the entire specification of EDN
   // in this document, instead of describing updates to the existing
   // documents RFC 8949 and RFC 8610.  While the WG hasn't taken a
   // decision to follow this updated editorial approach, the feedback
   // has been sufficiently positive that the author believes it is not
   // misleading to make this revision available as the current WG
   // Internet-Draft as well.  That said, this is still a snapshot.  The
   // editorial work on the branch "roll-up" is not complete.  Content
   // will continue to move between sections.  The exact reflection of
   // this document being a replacement for both Section 8 of RFC 8949
   // and Appendix G of RFC 8610 needs to be recorded in the metadata
   // and in abstract and introduction.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-12"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cwt-claims-in-headers">
          <front>
            <title>CBOR Web Token (CWT) Claims in COSE Headers</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>Mattr</organization>
            </author>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <date day="29" month="November" year="2023"/>
            <abstract>
              <t>   This document describes how to include CBOR Web Token (CWT) claims in
   the header parameters of any COSE structure.  This functionality
   helps to facilitate applications that wish to make use of CBOR Web
   Token (CWT) claims in encrypted COSE structures and/or COSE
   structures featuring detached signatures, while having some of those
   claims be available before decryption and/or without inspecting the
   detached payload.  Another use case is using CWT claims with payloads
   that are not CWT Claims Sets, including payloads that are not CBOR at
   all.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cwt-claims-in-headers-10"/>
        </reference>
        <reference anchor="I-D.ietf-cose-typ-header-parameter">
          <front>
            <title>COSE "typ" (type) Header Parameter</title>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <date day="3" month="April" year="2024"/>
            <abstract>
              <t>   This specification adds the equivalent of the JSON Object Signing and
   Encryption (JOSE) typ (type) header parameter to CBOR Object Signing
   and Encryption (COSE).  This enables the benefits of explicit typing,
   as defined in the JSON Web Token Best Current Practices BCP, to be
   brought to COSE objects.  The syntax of the COSE type header
   parameter value is the same as the existing COSE content type header
   parameter.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-typ-header-parameter-05"/>
        </reference>
      </references>
    </references>
    <?line 697?>

<section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: Please remove this section as well as references to <xref target="BCP205"/> before AUTH48.</t>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="BCP205"/>.
The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.
Please note that the listing of any individual implementation here does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a catalog of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="BCP205"/>, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.
It is up to the individual working groups to use this information as they see fit".</t>
      <section anchor="transmute-prototype">
        <name>Transmute Prototype</name>
        <t>An open-source implementation was initiated and is maintained by the Transmute Industries Inc. - Transmute.
An application demonstrating the concepts is available at <eref target="https://github.com/transmute-industries/cose?tab=readme-ov-file#transparent-statement">COSE SCITT Receipts</eref></t>
        <t>Implementation URL: https://github.com/transmute-industries/cose
Maturity: The code's level of maturity is considered to be "prototype".
Coverage and Version Compatibility: The current version ('main') implements the verifiable data structure algorithm, inclusion proof and consistency proof concepts of this draft.
License: The project and all corresponding code and data maintained on GitHub are provided under the Apache License, version 2.
Contact: Orie Steele (orie@transmute.industries)</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
ef8fgI0KuM19AAA=

-->

</rfc>
