<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.22 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-steele-cose-merkle-tree-proofs-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="CoMETRE">Concise Encoding of Signed Merkle Tree Proofs</title>
    <seriesInfo name="Internet-Draft" value="draft-steele-cose-merkle-tree-proofs-00"/>
    <author initials="O." surname="Steele" fullname="Orie Steele">
      <organization>Transmute</organization>
      <address>
        <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="M." surname="Riechert" fullname="Maik Riechert">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>Maik.Riechert@microsoft.com</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="2023" month="March" day="14"/>
    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This specification describes three CBOR data structures for primary use in COSE envelopes. A format for Merkle Tree Root Signatures with metadata, a format for Inclusions Paths, and a format for disclosure of a single hadh tree leaf payload (Merkle Tree Proofs).</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Merkle proofs are verifiable data structures that support secure data storage,
through their ability to protect the integrity of batches of documents or collections of statements.</t>
      <t>Merkle proofs can be used to prove a document is in a database (proof of existence),
or that a smaller set of statements are contained in a large set of statements (proof of disclosure).</t>
      <t>A merkle proof is a path from a leaf to a root in a merkle tree.</t>
      <t>Merkle trees are constructed from simple operations such as concatenation and digest via a cryptographic hash function.</t>
      <t>The simple design and valuable cryptographic properties of merkle trees have been leveraged in many network and database applications.</t>
      <t>Differences in the representation of a merkle tree, merkle leaf and merkle inclusion proof can increase the
burden for implementers, and create interoperability challenges.</t>
      <t>This document describes the three data structures necessary to use merkle proofs with 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&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <dl>
        <dt>Leaf Bytes:</dt>
        <dd>
          <t>A merkle tree leaf is labelled with the cryptographic hash of a sequence of bytes.
These bytes may be structured as a combination of Payload and Extra Data.</t>
        </dd>
        <dt>Merkle Tree:</dt>
        <dd>
          <t>A Merkle tree is a tree where every leaf is labelled with the cryptographic hash of a sequence of
bytes and every node that is not a leaf is labeled with the cryptographic hash of the labels of its child nodes.</t>
        </dd>
        <dt>Merkle Tree Root:</dt>
        <dd>
          <t>A Merkle tree root is the root node of a tree which represents the cryptographic hash that commits to all leaves in the tree.</t>
        </dd>
        <dt>Merkle Tree Algorithm:</dt>
        <dd>
          <t>A Merkle tree algorithm specifies how nodes in the tree must be hashed to compute the root node.</t>
        </dd>
        <dt>Payload and Extra Data:</dt>
        <dd>
          <t>A payload is data bound to in a Merkle tree leaf.
The Merkle tree algorithm determines how a payload together with extra data is bound to a leaf.
The simplest case is that the payload is the leaf itself without extra data.</t>
        </dd>
        <dt>Inclusion Path:</dt>
        <dd>
          <t>An inclusion path confirms that a value is a leaf of a Merkle tree known only by its root hash (and tree size, possibly).</t>
        </dd>
        <dt>Signed Merkle Tree Proof:</dt>
        <dd>
          <t>A signed Merkle tree proof is the combination of signed Merkle tree root hash, inclusion path, extra data, and payload.</t>
        </dd>
      </dl>
    </section>
    <section anchor="cbor-merkle-structures">
      <name>CBOR Merkle Structures</name>
      <t>This section describes representations of merkle tree structures in CBOR.</t>
      <t>Some of the structures such as the construction of a merkle tree leaf,
or an inclusion proof from a leaf to a merkle root, might have several different representations.</t>
      <t>Some differences in representations are necessary to support efficient
verification of proofs and compatibility with deployed tree algorithms used in specific implementations.</t>
      <section anchor="signed-merkle-tree-root">
        <name>Signed Merkle Tree Root</name>
        <t>A Merkle tree root is signed with COSE_Sign1, creating a Signed Merkle Tree Root:</t>
        <sourcecode type="cddl">
SMTR = THIS.COSE.profile .and COSE_Sign1_Tagged
</sourcecode>
        <t>Protected header parameters:</t>
        <ul spacing="normal">
          <li>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm. Value type: int / tstr.</li>
          <li>tree alg (label: TBD): <bcp14>REQUIRED</bcp14>. Merkle tree algorithm. Value type: int / tstr.</li>
          <li>tree size (label: TBD): <bcp14>OPTIONAL</bcp14>. Merkle tree size as the number of leaves. Value type: uint.</li>
        </ul>
        <t>A COSE profile of this specification may add further header parameters, for example to identify the signer.</t>
        <t>Payload: Merkle tree root hash bytes according to tree alg (i.e., header params tell you what the alg id is here)</t>
        <t>Note: The payload is just a byte string representing the Merkle tree root hash (and not some wrapper structure) so that it can be detached (see defintion of payload in https://www.rfc-editor.org/rfc/rfc9052#section-4.1) and easily re-computed from an inclusion path and leaf bytes. This allows to design other structures that force re-computation and prevent faulty implementations (forgetting to match a computed root with one embedded in a signature).</t>
        <t>One example of a Signed Merkle Tree Proof is a "transparent signed statement" or "claim" as defined in <xref target="I-D.ietf-scitt-architecture"/>.</t>
      </section>
      <section anchor="inclusion-paths">
        <name>Inclusion Paths</name>
        <t><xref target="RFC6962"/> defines a merkle audit path for a leaf in a merkle tree
as the shortest list of additional nodes in the merkle tree required to compute the merkle root for that tree.</t>
        <t><xref target="RFC9162"/> changed the term from "merkle audit path" to "merkle inclusion proof".</t>
        <t>We prefer to use the term "inclusion path" to avoid confusion with Signed Merkle Tree Proof.</t>
        <t>If the tree size and leaf index is known, then a compact inclusion path variant can be used:</t>
        <sourcecode type="cddl">
IndexAwareInclusionPath = #6.1234([
    leaf_index: int
    hashes: [+ bstr]
])
</sourcecode>
        <t>Otherwise, the direction for each path step must be included:</t>
        <t>FIXME bit vector: 0 right, 1 left, so no bit labels</t>
        <sourcecode type="cddl">
IndexUnawareInclusionPath = #6.1235([
    hashes: [+ bstr]
    left: uint  ; bit vector
])
</sourcecode>
        <t>For some tree algorithms, the direction is derived from the hashes themselves and both the index and direction can be left out in the path:</t>
        <sourcecode type="cddl">
; TODO: find a better name for this
UndirectionalInclusionPath = #6.1236([+ bstr])
</sourcecode>
        <sourcecode type="cddl">
InclusionPath = IndexAwareInclusionPath / IndexUnawareInclusionPath / UndirectionalInclusionPath
</sourcecode>
        <t>Note: Including the tree size and leaf index may not be appropriate in certain privacy-focused applications as an attacker may be able to derive private information from them.</t>
        <t>TODO: Should leaf index be part of inclusion path (IndexAwareInclusionPath) or outside?</t>
        <t>TODO: Define root computation algorithm for each inclusion path type</t>
        <t>TODO: <eref target="https://github.com/ietf-scitt/cose-merkle-tree-proofs/issues/6">Do we need both inclusion path types? what properties does each type have?</eref></t>
        <t>TODO: Should the inclusion path be opaque (bstr) and fixed by the tree algorithm? It seems this is orthogonal and the choice of inclusion path type should be application-specific.</t>
      </section>
      <section anchor="signed-merkle-tree-proof">
        <name>Signed Merkle Tree Proof</name>
        <t>A signed Merkle tree proof is a CBOR array containing a signed tree root, an inclusion path, extra data for the tree algorithm, and the payload.</t>
        <sourcecode type="cddl">
SignedMerkleTreeProof = [
  signed_tree_root: bstr .cbor SMTR  ; payload of COSE_Sign1_Tagged is detached
  inclusion_path: bstr .cbor InclusionPath
  extra_data: bstr / nil
  payload: bstr
]
</sourcecode>
        <t><tt>extra_data</tt> is an additional input to the tree algorithm and is used together with the payload to compute the leaf hash. A use case for this field is to implement blinding.</t>
        <t>TODO: maybe rename <tt>extra_data</tt></t>
      </section>
      <section anchor="signed-merkle-tree-multiproof">
        <name>Signed Merkle Tree Multiproof</name>
        <t>TODO: define a multi-leaf variant of a signed Merkle tree proof like in:</t>
        <ul spacing="normal">
          <li>https://github.com/transmute-industries/merkle-proof</li>
          <li>https://transmute-industries.github.io/merkle-disclosure-proof-2021/</li>
        </ul>
        <t>TODO: consider using sparse multiproofs, see https://medium.com/@jgm.orinoco/understanding-sparse-merkle-multiproofs-9b9f049e8f08 and https://arxiv.org/pdf/2002.07648.pdf</t>
      </section>
    </section>
    <section anchor="merkle-tree-algorithms">
      <name>Merkle Tree Algorithms</name>
      <t>This document establishes a registry of Merkle tree algorithms with the following initial contents:</t>
      <t>[FIXME] exploration table, what should go into -00?</t>
      <table align="left">
        <name>Merke Tree Alogrithms</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">Label</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Reserved</td>
            <td align="left">0</td>
            <td align="left">&nbsp;</td>
          </tr>
          <tr>
            <td align="left">RFC9162_SHA256</td>
            <td align="left">1</td>
            <td align="left">RFC9162 with SHA-256</td>
          </tr>
        </tbody>
      </table>
      <t>Each tree algorithm defines how to compute the root node from a sequence of leaves each represented by payload and extra data. Extra data is algorithm-specific and should be considered opaque.</t>
      <section anchor="rfc9162sha256">
        <name>RFC9162_SHA256</name>
        <t>The <tt>RFC9162_SHA256</tt> tree algorithm uses the Merkle tree definition from <xref target="RFC9162"/> with SHA-256 hash algorithm.</t>
        <t>For n &gt; 1 inputs, let k be the largest power of two smaller than n.</t>
        <artwork><![CDATA[
MTH({d(0)}) = SHA-256(0x00 || d(0))
MTH(D[n]) = SHA-256(0x01 || MTH(D[0:k]) || MTH(D[k:n]))
]]></artwork>
        <t>where <tt>d(0)</tt> is the payload. This algorithm takes no extra data.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</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>IANA will be requested to register the new COSE Header parameters defined below in the "COSE Header Parameters" registry at some point.</t>
        </section>
      </section>
      <section anchor="new-scitt-related-registries">
        <name>New SCITT-Related Registries</name>
        <t>IANA will be asked to add a new registry "TBD" to the list that appears at https://www.iana.org/assignments/.</t>
        <t>The rest of this section defines the subregistries that are to be created within the new "TBD" registry.</t>
        <section anchor="tree-alg-registry">
          <name>Tree Algorithms</name>
          <t>IANA will be asked to establish a registry of tree algorithm identifiers, named "Tree Algorithms", with the following registration procedures: TBD</t>
          <t>The "Tree Algorithms" registry initially consists of:</t>
          <table>
            <name>Initial content of Tree Algorithms registry</name>
            <thead>
              <tr>
                <th align="left">Identifier</th>
                <th align="left">Tree Algorithm</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">TBD</td>
                <td align="left">TBD tree algorithm</td>
                <td align="left">This document</td>
              </tr>
            </tbody>
          </table>
          <t>The designated expert(s) should ensure that the proposed algorithm has a public specification and is suitable for use as [TBD].</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8949"/>
            <seriesInfo name="RFC" value="8949"/>
            <seriesInfo name="STD" value="94"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <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>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <seriesInfo name="DOI" value="10.17487/RFC6962"/>
            <seriesInfo name="RFC" value="6962"/>
            <author fullname="B. Laurie" initials="B." surname="Laurie">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Kasper" initials="E." surname="Kasper">
              <organization/>
            </author>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate 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>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <seriesInfo name="DOI" value="10.17487/RFC9162"/>
            <seriesInfo name="RFC" value="9162"/>
            <author fullname="B. Laurie" initials="B." surname="Laurie">
              <organization/>
            </author>
            <author fullname="E. Messeri" initials="E." surname="Messeri">
              <organization/>
            </author>
            <author fullname="R. Stradling" initials="R." surname="Stradling">
              <organization/>
            </author>
            <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>
        </reference>
        <reference anchor="RFC6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <seriesInfo name="DOI" value="10.17487/RFC6234"/>
            <seriesInfo name="RFC" value="6234"/>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="T. Hansen" initials="T." surname="Hansen">
              <organization/>
            </author>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8032"/>
            <seriesInfo name="RFC" value="8032"/>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara">
              <organization/>
            </author>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA).  The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves.  An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6979">
          <front>
            <title>Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <seriesInfo name="DOI" value="10.17487/RFC6979"/>
            <seriesInfo name="RFC" value="6979"/>
            <author fullname="T. Pornin" initials="T." surname="Pornin">
              <organization/>
            </author>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document defines a deterministic digital signature generation procedure.  Such signatures are compatible with standard Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures and can be processed with unmodified verifiers, which need not be aware of the procedure described therein.  Deterministic signatures retain the cryptographic security features associated with digital signatures but can be more easily implemented in various environments, since they do not need access to a source of high-quality randomness.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <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>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-cose-countersign">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-cose-countersign-10"/>
            <author fullname="Jim Schaad" initials="J." surname="Schaad">
              <organization>August Cellars</organization>
            </author>
            <date day="20" month="September" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  CBOR Object Signing and Encryption (COSE) defines a set of security services for CBOR.  This document defines a countersignature algorithm along with the needed header parameters and CBOR tags for COSE.  This document updates RFC 9052.
              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-scitt-architecture">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-01"/>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>ARM</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   Traceability of physical and digital artifacts in supply chains is a
   long-standing, but increasingly serious security concern.  The rise
   in popularity of verifiable data structures as a mechanism to make
   actors more accountable for breaching their compliance promises has
   found some successful applications to specific use cases (such as the
   supply chain for digital certificates), but lacks a generic and
   scalable architecture that can address a wider range of use cases.

   This memo defines a generic and scalable architecture to enable
   transparency across any supply chain with minimum adoption barriers
   for producers (who can register their Signed Statements on any
   Transparency Service, with the guarantee that all consumers will be
   able to verify them) and enough flexibility to allow different
   implementations of Transparency Services with various auditing and
   compliance requirements.

              </t>
            </abstract>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
