<?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.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-cose-merkle-tree-proofs-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title>COSE Receipts</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-cose-merkle-tree-proofs-04"/>
    <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@sit.fraunhofer.de</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="March" day="02"/>
    <area>Security</area>
    <workgroup>COSE</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 57?>

<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 65?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Merkle trees are one of many verifiable data structures that enable tamper evident secure information storage, through their ability to protect the integrity of batches of documents or collections of statements.
Merkle trees can be constructed from simple operations such as concatenation and digest via a cryptographic hash function, however, more advanced constructions enable proofs of different properties of the underlying verifiable data structure.
Verifiable data structure proofs can be used to prove 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).
Differences in the representation of verifiable data structures, and verifiable data structure proof types, can increase the burden for implementers, and create interoperability challenges for transparency services.
This document describes how to convey verifiable data structures, and associated proof types in COSE envelopes.
For conciseness, we refer to a COSE object securing a verifiable data structure and its associated proof types, as a COSE Receipt.</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>-111 is TBD_1:</dt>
        <dd>
          <t>A requested cose header parameter representing the verifiable data structure used.</t>
        </dd>
        <dt>-222 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>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 messsage 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.</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 containing the header parameters necessary to convey a proof types for verifiable data structures.</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.
In order to improve interoperability we define two extension points for enabling verifiable data structures with COSE, and we provide 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>
      <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>
        <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: The identifier for the verifiable data structure</t>
          </li>
          <li>
            <t>Reference: Where the verifiable data structure is defined</t>
          </li>
        </ul>
        <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>
          </tbody>
        </table>
        <t>When desigining 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>
          </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 accross "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.
Protocols requiring proof of inclusion ought to be able to preserve their functionality, while switching from one verifiable data structure to another, so long as both structures support the same proof types.
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 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>
        </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.
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: int

    ; index of leaf in tree
    leaf-index: int

    ; path from leaf to current merkle root
    inclusion-path: [ + bstr ]
]
]]></sourcecode>
        </figure>
        <section anchor="receipt-of-inclusion">
          <name>Receipt of Inclusion</name>
          <t>In a signed inclusion proof, the previous merkle tree root, maps to tree-size-1, and is a detached payload.
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: -111) => 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: -111): <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: -222) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
          </figure>
          <ul spacing="normal">
            <li>
              <t>vdp (label: -222): <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 previous Merkle tree hash as defined in <xref target="RFC9162"/>.
The payload <bcp14>MUST</bcp14> be detached.
Detaching the payload forces verifiers to recompute the root from the inclusion proof signature, this protects against implementation errors where the signature is verified but the merkle root does not match the inclusion proof.
The CBOR Extended Diagnostic Notation (EDN) for a Receipt containing an inclusion proof for RFC9162_SHA256 is:</t>
          <figure anchor="rfc9162_sha256_inclusion_receipt">
            <name>Example inclusion receipt</name>
            <sourcecode type="cbor-diag"><![CDATA[
18(                                 / COSE Sign 1                   /
    [
      h'a4012604...6d706c65',       / Protected                     /
      {                             / Unprotected                   /
        -222: {                     / Proofs                        /
          -1: [                     / Inclusion proofs (1)          /
            h'83080783...32568964', / Inclusion proof 1             /
          ]
        },
      },
      nil,                          / Detached payload              /
      h'2e34df43...8d74d55e'        / Signature                     /
    ]
)
]]></sourcecode>
          </figure>
          <t>The CBOR Extended Diagnostic Notation (EDN) for the Protected Header in the example above is:</t>
          <figure anchor="rfc9162_sha256_inclusion_receipt_header">
            <name>Example inclusion receipt decoded protected header</name>
            <sourcecode type="cbor-diag"><![CDATA[
{                                   / Protected                     /
  1: -7,                            / Algorithm                     /
  4: h'4930714e...7163316b',        / Key identifier                /
  -111: 1,                          / Verifiable Data Structure     /
}
]]></sourcecode>
          </figure>
          <t>The vds in the protected header is necessary to understand the vdp in the unprotected header.</t>
          <t>The CBOR Extended Diagnostic Notation (EDN) for the inclusion proof in the Unprotected Header is:</t>
          <figure anchor="rfc9162_sha256_inclusion_receipt_inclusion_proof">
            <name>Example inclusion receipt decoded inclusion proof</name>
            <sourcecode type="cbor-diag"><![CDATA[
[                                   / Inclusion proof 1             /
  8,                                / Tree size                     /
  7,                                / Leaf index                    /
  [                                 / Inclusion hashes (3)          /
     h'2a8d7dfc...15d10b22'         / Intermediate hash 1           /
     h'75f177fd...2e73a8ab'         / Intermediate hash 2           /
     h'0bdaaed3...32568964'         / Intermediate hash 3           /
  ]
]
]]></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 [

    ; previous merkle root tree size
    tree-size-1: int

    ; latest merkle root tree size
    tree-size-2: int

    ; path from previous merkle root to latest merkle root.
    consistency-path: [ + bstr ]

]
]]></sourcecode>
        </figure>
        <t>Editors note: tree-size-1, could be omitted, if an inclusion-proof is always present, since the inclusion proof contains, tree-size-1.</t>
        <section anchor="receipt-of-consistency">
          <name>Receipt of Consistency</name>
          <t>In a signed consistency proof, the latest merkle tree root, maps to tree-size-2, and is an attached payload.</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: -111) => 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: -222) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
          <ul spacing="normal">
            <li>
              <t>vdp (label: -222): <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 latest Merkle tree hash as defined in <xref target="RFC9162"/>.
The payload <bcp14>MUST</bcp14> be attached.</t>
          <t>The CBOR Extended Diagnostic Notation (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[
18(                                 / COSE Sign 1                   /
    [
      h'a3012604...392b6601',       / Protected                     /
      {                             / Unprotected                   /
        -222: {                     / Proofs                        /
          -2: [                     / Consistency proofs (1)        /
            h'83040682...2e73a8ab', / Consistency proof 1           /
          ]
        },
      },
      h'430b6fd7...f74c7fc4',       / Payload (Attached)            /
      h'd97befea...f30631cb'        / Signature                     /
    ]
)
]]></sourcecode>
          </figure>
          <t>The vds in the protected header is necessary to understand the vdp in the unprotected header.</t>
          <t>The CBOR Extended Diagnostic Notation (EDN) for the Protected Header in the example above is:</t>
          <figure anchor="rfc9162_sha256_consistency_receipt_header">
            <name>Example consistency receipt decoded protected header</name>
            <sourcecode type="cbor-diag"><![CDATA[
{                                   / Protected                     /
  1: -7,                            / Algorithm                     /
  4: h'68747470...6d706c65',        / Key identifier                /
  -111: 1,                          / Verifiable Data Structure     /
}
]]></sourcecode>
          </figure>
          <t>The CBOR Extended Diagnostic Notation (EDN) for the consistency proof in the Unprotected Header is:</t>
          <figure anchor="rfc9162_sha256_consistency_receipt_consistency_proof">
            <name>Example consistency receipt decoded consistency proof</name>
            <sourcecode type="cbor-diag"><![CDATA[
[                                   / Consistency proof 1           /
  4,                                / Tree size 1                   /
  6,                                / Tree size 2                   /
  [                                 / Consistency hashes (2)        /
     h'0bdaaed3...32568964'         / Intermediate hash 1           /
     h'75f177fd...2e73a8ab'         / Intermediate hash 2           /
  ]
]
]]></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 Algorithms' and to the 'COSE Header Algorithm Parameters' registries in the 'Standards Action With Expert Review category.</t>
          <section anchor="cose-header-algorithm-parameters">
            <name>COSE Header Algorithm Parameters</name>
            <ul spacing="normal">
              <li>
                <t>Name: vds</t>
              </li>
              <li>
                <t>Label: TBD_1</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>Name: vdp</t>
              </li>
              <li>
                <t>Label: TBD_2</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: Location for verifiable data structure proofs in COSE Header Parameters.</t>
              </li>
            </ul>
          </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 assignment before a specification is available is considered to be permissible, however, such registrations <bcp14>MUST</bcp14> be marked provisional by prefixing the entry with "PROVISIONAL: ".
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 assignment before a specification is available is considered to be permissible, however, such registrations <bcp14>MUST</bcp14> be marked provisional by prefixing the entry with "PROVISIONAL: ".
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>
      <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="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.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="26" month="February" 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) so that the benefits of explicit typing, as
   defined in the JSON Web Token Best Current Practices BCP, can 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-03"/>
        </reference>
      </references>
    </references>
    <?line 611?>

<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="implementer">
        <name>Implementer</name>
        <t>An open-source implementation was initiated and is maintained by the Transmute Industries Inc. - Transmute.</t>
      </section>
      <section anchor="implementation-name">
        <name>Implementation Name</name>
        <t>An application demonstrating the concepts is available at <eref target="https://github.com/transmute-industries/cose?tab=readme-ov-file#scitt-receipts">COSE SCITT Receipts</eref></t>
      </section>
      <section anchor="implementation-url">
        <name>Implementation URL</name>
        <t>An open-source implementation is available at:</t>
        <ul spacing="normal">
          <li>
            <t>https://github.com/transmute-industries/cose</t>
          </li>
        </ul>
      </section>
      <section anchor="maturity">
        <name>Maturity</name>
        <t>The code's level of maturity is considered to be "prototype".</t>
      </section>
      <section anchor="coverage-and-version-compatibility">
        <name>Coverage and Version Compatibility</name>
        <t>The current version ('main') implements the verifiable data structure algorithm, inclusion proof and consistency proof concepts of this draft.</t>
      </section>
      <section anchor="license">
        <name>License</name>
        <t>The project and all corresponding code and data maintained on GitHub are provided under the Apache License, version 2.</t>
      </section>
      <section anchor="implementation-dependencies">
        <name>Implementation Dependencies</name>
        <t>The implementation uses the Concise Binary Object Representation <xref target="RFC7049"/> (https://cbor.io/).</t>
        <t>The implementation uses the CBOR Object Signing and Encryption <xref target="RFC9053"/>, maintained at:
- https://github.com/erdtman/cose-js</t>
        <t>The implementation uses an implementation of <xref target="RFC9162"/>, maintained at:</t>
        <ul spacing="normal">
          <li>
            <t>https://github.com/transmute-industries/rfc9162/tree/main/src/CoMETRE</t>
          </li>
        </ul>
      </section>
      <section anchor="contact">
        <name>Contact</name>
        <t>Orie Steele (orie@transmute.industries)</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
Qb6l/Vt9NBLE0uViOmFPvjnfaTj/mO89cbb/1mR8mxt4D8n57tdzvs1hP2PS
lwScMrItWd/mfuc90r6N1YuvRWvmt56ipDjMpoOreV/06Z1EboRdDvJ7vThc
kQFuHz1pAd2ndyvLqueE1xgI5701BqE1I9ygO1oBPhVJYkjNcpwcrk+lKxCX
J/Mw55OP1dS9pgdqtehWLjNznruL0qbFpa5EdeiKYlWO1W/kpp25VrPTDRZi
rVFF89rs9LDMTselyrUK9iEp1CY//3aSqC6DfeY0qkOcL5xIpZrJe2bTvkgm
9QEUbmoqk01tqrC1+dTG45hU3GGC10f4B+VUv0iOs4mWEn4F+kmzEPaX5Tk3
UfWq1ChfJNFptM7PCDXbk4APtqxfNgu4Z7OAe0+H44OD3cE/fxZwuDoL2ORP
Nw/YkgXc3z04GrpRaLcNSlsQS3/WZQFnW/t7u+ODSXAI8CeH+/7hxN93sa9Z
cftY86ATbrtZwODp4VhNlEQoe7sHewN//BmzgK4Xc588oMvetUzgbywN9H8q
0XhwdLgP/+y2pfN/A4nGFi66T6qxhZk2JhsfygZNffwl8oGbVcb+g/KBq5T7
wYOgDNvu3zMf6K7IZASHdVX6M3JwXyYfuC6T18ac9wve7sOnzaMMv1wdtnhF
987pVQ/bNiGtyOq1pPVWZLPiVdmsStrGyd61SCAnmwi+qqbSWh/WD2L1O2Ya
l+xp2UC/WSeVtMPaONXWau5Np3jNcvBUQYrLoUpSt4uhexqn6gne8xw2JuBw
CHOQou1A2j9ZHq6FON4jMKp8QuOk0uqUs2wsSXy/2grVlu1ChOZ5vc1nPukR
ZOE7Pj75IpmKFyqe5jMYCnuTtLcSAERda3H4yeZ1I3hXsuRgI8/aaZ1zFhef
W9dRT0B8gTgMe0Riv0bdk+86jAN92MeWten6CJ8IdKOw+YTKkV91MR0lhoDE
0qfTV0WuO49WjiRhsqja7646BRCslI6cAIthF7wunWBkHtAdXtz74pZG1fOh
gzYFZvK5jFDLJL+B6HNQQ89qGNhVVQZuq1Hdiq5emQfUPy6LDpulhg5u3HpA
cO90NUhbpz/qMJNnhAjMn4e4A3FcHhAyJ5FMnAjMj6B1VwfsAmcrHAXoyoh1
/cIUVPJhr0QXdFdK54nN7ZGnVXxujy19ZkY/mSUhy2oZOFgXFDHtHphaiYNa
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
FZ+b3vH+F6OqzEfDewAA

-->

</rfc>
