<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-davidben-tls-merkle-tree-certs-10" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>Merkle Tree Certificates</title>
    <seriesInfo name="Internet-Draft" value="draft-davidben-tls-merkle-tree-certs-10"/>
    <author initials="D." surname="Benjamin" fullname="David Benjamin">
      <organization>Google LLC</organization>
      <address>
        <email>davidben@google.com</email>
      </address>
    </author>
    <author initials="D." surname="O'Brien" fullname="Devon O'Brien">
      <organization/>
      <address>
        <email>devon.obrien@gmail.com</email>
      </address>
    </author>
    <author initials="B. E." surname="Westerbaan" fullname="Bas Westerbaan">
      <organization>Cloudflare</organization>
      <address>
        <email>bas@cloudflare.com</email>
      </address>
    </author>
    <author initials="L." surname="Valenta" fullname="Luke Valenta">
      <organization>Cloudflare</organization>
      <address>
        <email>lvalenta@cloudflare.com</email>
      </address>
    </author>
    <author initials="F." surname="Valsorda" fullname="Filippo Valsorda">
      <organization>Geomys</organization>
      <address>
        <email>ietf@filippo.io</email>
      </address>
    </author>
    <date year="2026" month="January" day="22"/>
    <area>Security</area>
    <workgroup>PLANTS Working Group</workgroup>
    <abstract>
      <?line 187?>

<t>This document describes Merkle Tree certificates, a new form of X.509 certificates which integrate public logging of the certificate, in the style of Certificate Transparency. The integrated design reduces logging overhead in the face of both shorter-lived certificates and large post-quantum signature algorithms, while still achieving comparable security properties to traditional X.509 and Certificate Transparency. Merkle Tree certificates additionally admit an optional signatureless optimization, which decreases the message size by avoiding signatures altogether, at the cost of only applying to up-to-date relying parties and older certificates.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://davidben.github.io/merkle-tree-certs/draft-davidben-tls-merkle-tree-certs.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-davidben-tls-merkle-tree-certs/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        PLANTS Working Group mailing list (<eref target="mailto:plants@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/plants/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/plants/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/davidben/merkle-tree-certs"/>.</t>
    </note>
  </front>
  <middle>
    <?line 191?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Authors' Note: This is an early draft of a proposal with many parts. We expect most details will change as the proposal evolves. This document has a concrete specification of these details, but this is only intended as a starting point, and to help convey the overall idea. The name of the draft says "tls" to keep continuity with earlier iterations of this work, but the protocol itself is not TLS-specific.</t>
      <t>In Public Key Infrastructures (PKIs) that use Certificate Transparency (CT) <xref target="RFC6962"/> for a public logging requirement, an authenticating party must present Signed Certificate Timestamps (SCTs) alongside certificates. CT policies often require two or more SCTs per certificate <xref target="APPLE-CT"/> <xref target="CHROME-CT"/>, each of which carries a signature. These signatures are in addition to those in the certificate chain itself.</t>
      <t>Current signature schemes can use as few as 32 bytes per key and 64 bytes per signature <xref target="RFC8032"/>, but post-quantum replacements are much larger. For example, ML-DSA-44 <xref target="FIPS204"/> uses 1,312 bytes per public key and 2,420 bytes per signature. ML-DSA-65 uses 1,952 bytes per public key and 3,309 bytes per signature. Even with a directly-trusted intermediate (<xref section="7.5" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>), two SCTs and a leaf certificate signature adds 7,260 bytes of authentication overhead with ML-DSA-44 and 9,927 bytes with ML-DSA-65.</t>
      <t>This increased overhead additionally impacts CT logs themselves. Most of a log's costs scale with the total storage size of the log. Each log entry contains both a public key, and a signature from the CA. With larger public keys and signatures, the size of each log entry will grow.</t>
      <t>Additionally, as PKIs transition to shorter-lived certificates <xref target="CABF-153"/> <xref target="CABF-SC081"/>, the number of entries in the log will grow.</t>
      <t>This document introduces Merkle Tree certificates, a new form of X.509 certificate that integrates logging with certificate issuance. Each CA maintains a log of everything it issues, signing views of the log to assert it has issued the contents. The CA signature is combined with cosignatures from other parties who verify correct operation and optionally mirror the log. These signatures, together with an inclusion proof for an individual entry, constitute a certificate.</t>
      <t>This achieves the following:</t>
      <ul spacing="normal">
        <li>
          <t>Log entries do not scale with public key and signature sizes. Entries replace public keys with hashes and do not contain signatures, while preserving non-repudiability (<xref target="non-repudiation"/>).</t>
        </li>
        <li>
          <t>To bound growth, long-expired entries can be pruned from logs and mirrors without interrupting existing clients. This allows log sizes to scale by retention policies, not the lifetime of the log, even as certificate lifetimes decrease.</t>
        </li>
        <li>
          <t>After a processing delay, authenticating parties can obtain a second "signatureless" certificate for the same log entry. This second certificate is an optional size optimization that avoids the need for any signatures, assuming an up-to-date client that has some predistributed log information.</t>
        </li>
      </ul>
      <t><xref target="overview"/> gives an overview of the system. <xref target="subtrees"/> describes a Merkle Tree primitive used by this system. <xref target="issuance-logs"/> describes the log structure. Finally, <xref target="certificates"/> and <xref target="relying-parties"/> describe how to construct and consume a Merkle Tree certificate.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>
      <t>This document additionally uses the TLS presentation language defined in <xref section="3" sectionFormat="of" target="RFC8446"/>, as well as the notation defined in <xref section="2.1.1" sectionFormat="of" target="RFC9162"/>.</t>
      <t><tt>U+</tt> followed by four hexadecimal characters denotes a Unicode codepoint, to be encoded in UTF-8 <xref target="RFC3629"/>. <tt>0x</tt> followed by two hexadecimal characters denotes a byte value in the 0-255 range.</t>
      <t><tt>[start, end)</tt>, where <tt>start &lt;= end</tt>, denotes the half-open interval containing integers <tt>x</tt> such that <tt>start &lt;= x &lt; end</tt>.</t>
      <t>Given a non-negative integer <tt>n</tt>,</t>
      <ul spacing="normal">
        <li>
          <t><tt>LSB(n)</tt> refers to the least-significant bit of <tt>n</tt>'s binary representation. Equivalently, it is the remainder when <tt>n</tt> is divided by 2.</t>
        </li>
        <li>
          <t><tt>BIT_WIDTH(n)</tt> refers to the smallest number of bits needed to represent <tt>n</tt>. <tt>BIT_WIDTH(0)</tt> is zero.</t>
        </li>
        <li>
          <t><tt>POPCOUNT(n)</tt> refers to the number of set bits in <tt>n</tt>'s binary representation.</t>
        </li>
        <li>
          <t><tt>BIT_CEIL(n)</tt> refers to the smallest power of 2 that is greater or equal to <tt>n</tt>.</t>
        </li>
      </ul>
      <t>To <em>left-shift</em> a non-negative integer <tt>n</tt> is to shift each bit in its binary representation to one upper position. Equivalently, it is <tt>n</tt> times 2. Given non-negative integers <tt>a</tt> and <tt>b</tt>, <tt>a &lt;&lt; b</tt> refers to <tt>a</tt> left-shifted <tt>b</tt> times.</t>
      <t>To <em>right-shift</em> a non-negative integer <tt>n</tt> is to shift each bit in its binary representation to one lower position, discarding the least-significant bit. Equivalently, it is the floor of <tt>n</tt> divided by 2. Given non-negative integers <tt>a</tt> and <tt>b</tt>, <tt>a &gt;&gt; b</tt> refers to <tt>a</tt> right-shifted <tt>b</tt> times.</t>
      <t>Given two non-negative integers <tt>a</tt> and <tt>b</tt>, <tt>a &amp; b</tt> refers to the non-negative integer such that each bit position is set if the corresponding bit is set in both <tt>a</tt> and <tt>b</tt>, and unset otherwise. This is commonly referred to as the bitwise AND operator.</t>
      <section anchor="terminology-and-roles">
        <name>Terminology and Roles</name>
        <t>This document discusses the following roles:</t>
        <dl>
          <dt>Authenticating party:</dt>
          <dd>
            <t>The party that authenticates itself in the protocol. In TLS, this is the side sending the Certificate and CertificateVerify message.</t>
          </dd>
          <dt>Certification authority (CA):</dt>
          <dd>
            <t>The service that issues certificates to the authenticating party, after performing some validation process on the certificate contents.</t>
          </dd>
          <dt>Relying party:</dt>
          <dd>
            <t>The party to whom the authenticating party presents its identity. In TLS, this is the side receiving the Certificate and CertificateVerify message.</t>
          </dd>
          <dt>Monitor:</dt>
          <dd>
            <t>Parties who watch logs for certificates of interest, analogous to the role in <xref section="8.2" sectionFormat="of" target="RFC9162"/>.</t>
          </dd>
          <dt>Issuance log:</dt>
          <dd>
            <t>A log, maintained by the CA, of everything issued by that CA.</t>
          </dd>
          <dt>Cosigner:</dt>
          <dd>
            <t>A service that signs views of an issuance log, to assert correct operation and other properties about the entries.</t>
          </dd>
        </dl>
        <t>Additionally, there are several terms used throughout this document to describe this proposal. This section provides an overview. They will be further defined and discussed in detail throughout the document.</t>
        <dl>
          <dt>Checkpoint:</dt>
          <dd>
            <t>A description of the complete state of the log at some time.</t>
          </dd>
          <dt>Entry:</dt>
          <dd>
            <t>An individual element of the log, describing information which the CA has validated and certified.</t>
          </dd>
          <dt>Subtree:</dt>
          <dd>
            <t>A smaller Merkle Tree over a portion of the log, defined by an interior node of some snapshot of the log. Subtrees can be efficiently shown to be consistent with the whole log.</t>
          </dd>
          <dt>Inclusion proof:</dt>
          <dd>
            <t>A sequence of hashes that efficiently proves some entry is contained in some checkpoint or subtree.</t>
          </dd>
          <dt>Consistency proof:</dt>
          <dd>
            <t>A sequence of hashes that efficiently proves a checkpoint or subtree is contained within another checkpoint.</t>
          </dd>
          <dt>Cosignature:</dt>
          <dd>
            <t>A signature from either the CA or other cosigner, over some checkpoint or subtree.</t>
          </dd>
          <dt>Landmark:</dt>
          <dd>
            <t>One of an infrequent subset of tree sizes that can be used to predistribute trusted subtrees to relying parties for signatureless certificates.</t>
          </dd>
          <dt>Landmark subtree:</dt>
          <dd>
            <t>A subtree determined by a landmark. Landmark subtrees are common points of reference between relying parties and signatureless certificates.</t>
          </dd>
          <dt>Full certificate:</dt>
          <dd>
            <t>A certificate containing an inclusion proof to some subtree, and several cosignatures over that subtree.</t>
          </dd>
          <dt>Signatureless certificate:</dt>
          <dd>
            <t>An optimized certificate containing an inclusion proof to a landmark subtree, and no signatures.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>In Certificate Transparency, a CA first certifies information by signing it, then submits the resulting certificate (or precertificate) to logs for logging. Merkle Tree Certificates invert this process: the CA certifies information by logging it, then submits the log to cosigners to verify log operation. A certificate is assembled from the result and proves the information is in the CA's log.</t>
      <figure anchor="fig-issuance-overview">
        <name>A diagram of the issuance architecture, detailed below</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="528" width="544" viewBox="0 0 544 528" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,272" fill="none" stroke="black"/>
              <path d="M 8,352 L 8,480" fill="none" stroke="black"/>
              <path d="M 24,480 L 24,512" fill="none" stroke="black"/>
              <path d="M 72,80 L 72,112" fill="none" stroke="black"/>
              <path d="M 128,280 L 128,320" fill="none" stroke="black"/>
              <path d="M 256,32 L 256,272" fill="none" stroke="black"/>
              <path d="M 256,352 L 256,480" fill="none" stroke="black"/>
              <path d="M 272,384 L 272,512" fill="none" stroke="black"/>
              <path d="M 296,32 L 296,272" fill="none" stroke="black"/>
              <path d="M 296,352 L 296,464" fill="none" stroke="black"/>
              <path d="M 536,32 L 536,272" fill="none" stroke="black"/>
              <path d="M 536,352 L 536,464" fill="none" stroke="black"/>
              <path d="M 8,32 L 24,32" fill="none" stroke="black"/>
              <path d="M 232,32 L 256,32" fill="none" stroke="black"/>
              <path d="M 296,32 L 312,32" fill="none" stroke="black"/>
              <path d="M 504,32 L 536,32" fill="none" stroke="black"/>
              <path d="M 224,64 L 312,64" fill="none" stroke="black"/>
              <path d="M 72,160 L 96,160" fill="none" stroke="black"/>
              <path d="M 224,176 L 312,176" fill="none" stroke="black"/>
              <path d="M 40,224 L 104,224" fill="none" stroke="black"/>
              <path d="M 8,272 L 256,272" fill="none" stroke="black"/>
              <path d="M 296,272 L 536,272" fill="none" stroke="black"/>
              <path d="M 8,352 L 24,352" fill="none" stroke="black"/>
              <path d="M 240,352 L 256,352" fill="none" stroke="black"/>
              <path d="M 296,352 L 312,352" fill="none" stroke="black"/>
              <path d="M 400,352 L 536,352" fill="none" stroke="black"/>
              <path d="M 72,384 L 96,384" fill="none" stroke="black"/>
              <path d="M 256,384 L 272,384" fill="none" stroke="black"/>
              <path d="M 240,432 L 312,432" fill="none" stroke="black"/>
              <path d="M 40,448 L 104,448" fill="none" stroke="black"/>
              <path d="M 296,464 L 536,464" fill="none" stroke="black"/>
              <path d="M 8,480 L 256,480" fill="none" stroke="black"/>
              <path d="M 24,512 L 272,512" fill="none" stroke="black"/>
              <path d="M 72,384 L 104,448" fill="none" stroke="black"/>
              <path d="M 72,160 L 104,224" fill="none" stroke="black"/>
              <path d="M 156,280 L 176,320" fill="none" stroke="black"/>
              <path d="M 40,224 L 72,160" fill="none" stroke="black"/>
              <path d="M 80,320 L 100,280" fill="none" stroke="black"/>
              <path d="M 40,448 L 72,384" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="320,176 308,170.4 308,181.6" fill="black" transform="rotate(0,312,176)"/>
              <polygon class="arrowhead" points="248,432 236,426.4 236,437.6" fill="black" transform="rotate(180,240,432)"/>
              <polygon class="arrowhead" points="232,64 220,58.4 220,69.6" fill="black" transform="rotate(180,224,64)"/>
              <polygon class="arrowhead" points="184,320 172,314.4 172,325.6" fill="black" transform="rotate(63.43494882292201,176,320)"/>
              <polygon class="arrowhead" points="136,320 124,314.4 124,325.6" fill="black" transform="rotate(90,128,320)"/>
              <polygon class="arrowhead" points="88,320 76,314.4 76,325.6" fill="black" transform="rotate(116.56505117707799,80,320)"/>
              <polygon class="arrowhead" points="80,112 68,106.4 68,117.6" fill="black" transform="rotate(90,72,112)"/>
              <circle cx="48" cy="240" r="6" class="closeddot" fill="black"/>
              <circle cx="48" cy="464" r="6" class="closeddot" fill="black"/>
              <circle cx="64" cy="240" r="6" class="closeddot" fill="black"/>
              <circle cx="64" cy="464" r="6" class="closeddot" fill="black"/>
              <circle cx="80" cy="240" r="6" class="closeddot" fill="black"/>
              <circle cx="80" cy="464" r="6" class="closeddot" fill="black"/>
              <circle cx="96" cy="240" r="6" class="closeddot" fill="black"/>
              <circle cx="96" cy="464" r="6" class="closeddot" fill="black"/>
              <circle cx="384" cy="208" r="6" class="closeddot" fill="black"/>
              <g class="text">
                <text x="88" y="36">Certification</text>
                <text x="184" y="36">Authority</text>
                <text x="388" y="36">Authenticating</text>
                <text x="472" y="36">Party</text>
                <text x="36" y="68">2.</text>
                <text x="84" y="68">Validate</text>
                <text x="152" y="68">request</text>
                <text x="340" y="68">1.</text>
                <text x="384" y="68">Request</text>
                <text x="464" y="68">certificate</text>
                <text x="36" y="148">3.</text>
                <text x="64" y="148">Add</text>
                <text x="92" y="148">to</text>
                <text x="140" y="148">issuance</text>
                <text x="192" y="148">log</text>
                <text x="104" y="164">[</text>
                <text x="124" y="164">CA</text>
                <text x="164" y="164">cosign</text>
                <text x="200" y="164">]</text>
                <text x="340" y="180">5.</text>
                <text x="388" y="180">Download</text>
                <text x="476" y="180">certificates</text>
                <text x="432" y="212">tbscert</text>
                <text x="352" y="228">=</text>
                <text x="368" y="228">=</text>
                <text x="384" y="228">=</text>
                <text x="440" y="228">inclusion</text>
                <text x="504" y="228">proof</text>
                <text x="144" y="244">tbscert</text>
                <text x="208" y="244">entries</text>
                <text x="344" y="244">[</text>
                <text x="364" y="244">CA</text>
                <text x="384" y="244">]</text>
                <text x="452" y="244">cosignatures</text>
                <text x="312" y="260">[</text>
                <text x="348" y="260">mirror</text>
                <text x="384" y="260">]</text>
                <text x="212" y="308">4.</text>
                <text x="252" y="308">Submit</text>
                <text x="296" y="308">log</text>
                <text x="324" y="308">to</text>
                <text x="376" y="308">cosigners</text>
                <text x="240" y="324">for</text>
                <text x="308" y="324">cosignatures</text>
                <text x="68" y="356">Mirrors,</text>
                <text x="128" y="356">other</text>
                <text x="192" y="356">cosigners</text>
                <text x="356" y="356">Monitors</text>
                <text x="104" y="388">[</text>
                <text x="124" y="388">CA</text>
                <text x="164" y="388">cosign</text>
                <text x="200" y="388">]</text>
                <text x="104" y="404">[</text>
                <text x="140" y="404">mirror</text>
                <text x="196" y="404">cosign</text>
                <text x="232" y="404">]</text>
                <text x="340" y="436">6.</text>
                <text x="384" y="436">Monitor</text>
                <text x="428" y="436">CA</text>
                <text x="480" y="436">operation</text>
                <text x="80" y="500">...quorum</text>
                <text x="132" y="500">of</text>
                <text x="196" y="500">cosigners...</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+-- Certification Authority ---+    +--  Authenticating Party ----+
|                              |    |                             |
|  2. Validate request     <---+----+--  1. Request certificate   |
|       |                      |    |                             |
|       |                      |    |                             |
|       V                      |    |                             |
|                              |    |                             |
|  3. Add to issuance log      |    |                             |
|       +---[ CA cosign ]      |    |                             |
|      / \                 ----+----+->  5. Download certificates |
|     /   \                    |    |                             |
|    /     \                   |    |          *  tbscert         |
|   +-------+                  |    |      = = =  inclusion proof |
|    * * * *  tbscert entries  |    |     [ CA ]  cosignatures    |
|                              |    | [ mirror ]                  |
+------------------------------+    +-----------------------------+
           /   |   \
          /    |    \    4. Submit log to cosigners
         V     V     V      for cosignatures

+-- Mirrors, other cosigners --+    +-- Monitors -----------------+
|                              |    |                             |
|       +---[ CA cosign ]      +-+  |                             |
|      / \  [ mirror cosign ]  | |  |                             |
|     /   \                    | |  |                             |
|    /     \                 <-+-+--+--  6. Monitor CA operation  |
|   +-------+                  | |  |                             |
|    * * * *                   | |  +-----------------------------+
+-+----------------------------+ |
  |  ...quorum of cosigners...   |
  +------------------------------+
]]></artwork>
        </artset>
      </figure>
      <t>Merkle Tree Certificates are issued as follows. <xref target="fig-issuance-overview"/> depicts this process.</t>
      <ol spacing="normal" type="1"><li>
          <t>The authenticating party requests a certificate, e.g. over ACME <xref target="RFC8555"/></t>
        </li>
        <li>
          <t>The CA validates each incoming issuance request, e.g. with ACME challenges. From there, the process differs.</t>
        </li>
        <li>
          <t>The CA operates an append-only <em>issuance log</em> (<xref target="issuance-logs"/>). Unlike a CT log, this issuance log only contains entries added by the CA:  </t>
          <ol spacing="normal" type="1"><li>
              <t>The CA adds a TBSCertificateLogEntry (<xref target="log-entries"/>) to its log, describing the information it is certifying.</t>
            </li>
            <li>
              <t>The CA signs a <em>checkpoint</em>, which describes the current state of the log. A signed checkpoint certifies that the CA issued <em>every</em> entry in the Merkle Tree (<xref target="certification-authority-cosigners"/>).</t>
            </li>
            <li>
              <t>The CA additionally signs <em>subtrees</em> (<xref target="subtrees"/>) that together contain certificates added since the last checkpoint (<xref target="arbitrary-intervals"/>). This is an optimization to reduce inclusion proof sizes. A signed subtree certifies that the CA has issued <em>every</em> entry in the subtree.</t>
            </li>
          </ol>
        </li>
        <li>
          <t>The CA submits the new log state to <em>cosigners</em>. Cosigners validate the log is append-only and optionally provide additional services, such as mirroring its contents. They cosign the CA's checkpoints and subtrees.</t>
        </li>
        <li>
          <t>The CA now has enough information to construct a certificate and give it to the authenticating party. A certificate contains:  </t>
          <ul spacing="normal">
            <li>
              <t>The TBSCertificate being certified</t>
            </li>
            <li>
              <t>An inclusion proof from the TBSCertificate to some subtree</t>
            </li>
            <li>
              <t>Cosignatures from the CA and cosigners on the subtree</t>
            </li>
          </ul>
        </li>
        <li>
          <t>As in Certificate Transparency, monitors observe the issuance log to ensure the CA is operated correctly.</t>
        </li>
      </ol>
      <t>A certificate with cosignatures is known as a <em>full certificate</em>. Analogous to X.509 trust anchors and trusted CT logs, relying parties are configured with trusted cosigners (<xref target="trusted-cosigners"/>) that allow them to accept Merkle Tree certificates. The inclusion proof proves the TBSCertificate is part of some subtree, and cosignatures from trusted cosigners prove the subtree was certified by the CA and available to monitors. Where CT logs entire certificates, the issuance log's entries are smaller TBSCertificateLogEntry (<xref target="log-entries"/>) structures, which do not scale with public key or signature size.</t>
      <t>This same issuance process also produces a <em>signatureless certificate</em>. This is an optional, optimized certificate that avoids all cosignatures, including the CA signature. Signatureless certificates are available after a short period of time and usable with up-to-date relying parties.</t>
      <figure anchor="fig-signatureless-overview">
        <name>A diagram of signatureless certificate construction and usage, detailed below</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="416" width="488" viewBox="0 0 488 416" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,112" fill="none" stroke="black"/>
              <path d="M 8,192 L 8,384" fill="none" stroke="black"/>
              <path d="M 224,96 L 224,184" fill="none" stroke="black"/>
              <path d="M 272,32 L 272,112" fill="none" stroke="black"/>
              <path d="M 272,192 L 272,384" fill="none" stroke="black"/>
              <path d="M 296,48 L 296,112" fill="none" stroke="black"/>
              <path d="M 296,240 L 296,288" fill="none" stroke="black"/>
              <path d="M 296,320 L 296,368" fill="none" stroke="black"/>
              <path d="M 432,80 L 432,224" fill="none" stroke="black"/>
              <path d="M 464,48 L 464,112" fill="none" stroke="black"/>
              <path d="M 480,240 L 480,288" fill="none" stroke="black"/>
              <path d="M 480,320 L 480,368" fill="none" stroke="black"/>
              <path d="M 8,32 L 24,32" fill="none" stroke="black"/>
              <path d="M 232,32 L 272,32" fill="none" stroke="black"/>
              <path d="M 296,48 L 312,48" fill="none" stroke="black"/>
              <path d="M 448,48 L 464,48" fill="none" stroke="black"/>
              <path d="M 264,80 L 432,80" fill="none" stroke="black"/>
              <path d="M 32,96 L 72,96" fill="none" stroke="black"/>
              <path d="M 8,112 L 272,112" fill="none" stroke="black"/>
              <path d="M 296,112 L 464,112" fill="none" stroke="black"/>
              <path d="M 8,192 L 24,192" fill="none" stroke="black"/>
              <path d="M 208,192 L 272,192" fill="none" stroke="black"/>
              <path d="M 296,240 L 312,240" fill="none" stroke="black"/>
              <path d="M 440,240 L 480,240" fill="none" stroke="black"/>
              <path d="M 264,256 L 288,256" fill="none" stroke="black"/>
              <path d="M 296,288 L 480,288" fill="none" stroke="black"/>
              <path d="M 296,320 L 312,320" fill="none" stroke="black"/>
              <path d="M 432,320 L 480,320" fill="none" stroke="black"/>
              <path d="M 176,352 L 288,352" fill="none" stroke="black"/>
              <path d="M 296,368 L 480,368" fill="none" stroke="black"/>
              <path d="M 8,384 L 272,384" fill="none" stroke="black"/>
              <path d="M 52,56 L 72,96" fill="none" stroke="black"/>
              <path d="M 32,96 L 52,56" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="440,224 428,218.4 428,229.6" fill="black" transform="rotate(90,432,224)"/>
              <polygon class="arrowhead" points="296,352 284,346.4 284,357.6" fill="black" transform="rotate(0,288,352)"/>
              <polygon class="arrowhead" points="296,256 284,250.4 284,261.6" fill="black" transform="rotate(0,288,256)"/>
              <polygon class="arrowhead" points="232,184 220,178.4 220,189.6" fill="black" transform="rotate(90,224,184)"/>
              <g class="text">
                <text x="88" y="36">Certification</text>
                <text x="184" y="36">Authority</text>
                <text x="348" y="52">Update</text>
                <text x="408" y="52">Channel</text>
                <text x="92" y="84">1.</text>
                <text x="140" y="84">Allocate</text>
                <text x="216" y="84">landmarks</text>
                <text x="44" y="148">2.</text>
                <text x="76" y="148">Make</text>
                <text x="152" y="148">signatureless</text>
                <text x="316" y="148">3.</text>
                <text x="372" y="148">Distribute</text>
                <text x="76" y="164">cert</text>
                <text x="116" y="164">from</text>
                <text x="172" y="164">landmark</text>
                <text x="376" y="164">landmarks</text>
                <text x="92" y="196">Authenticating</text>
                <text x="176" y="196">Party</text>
                <text x="72" y="228">signatureless</text>
                <text x="148" y="228">cert</text>
                <text x="64" y="244">tbscert</text>
                <text x="364" y="244">Up-to-date</text>
                <text x="420" y="244">RP</text>
                <text x="72" y="260">inclusion</text>
                <text x="136" y="260">proof</text>
                <text x="172" y="260">to</text>
                <text x="220" y="260">landmark</text>
                <text x="340" y="260">landmark</text>
                <text x="404" y="260">hashes</text>
                <text x="336" y="276">trusted</text>
                <text x="408" y="276">cosigners</text>
                <text x="36" y="308">full</text>
                <text x="76" y="308">cert</text>
                <text x="64" y="324">tbscert</text>
                <text x="360" y="324">Unupdated</text>
                <text x="412" y="324">RP</text>
                <text x="72" y="340">inclusion</text>
                <text x="136" y="340">proof</text>
                <text x="332" y="340">(stale</text>
                <text x="372" y="340">or</text>
                <text x="396" y="340">no</text>
                <text x="440" y="340">hashes)</text>
                <text x="84" y="356">cosignatures</text>
                <text x="336" y="356">trusted</text>
                <text x="408" y="356">cosigners</text>
                <text x="180" y="404">4.</text>
                <text x="220" y="404">Select</text>
                <text x="296" y="404">certificate</text>
                <text x="356" y="404">by</text>
                <text x="380" y="404">RP</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+-- Certification Authority -----+
|                                |  +-- Update Channel --+
|    /\                          |  |                    |
|   /  \  1. Allocate landmarks -+--+----------------+   |
|  +----+                  |     |  |                |   |
+--------------------------+-----+  +----------------+---+
                           |                         |
    2. Make signatureless  |          3. Distribute  |
       cert from landmark  |              landmarks  |
                           V                         |
+-- Authenticating Party --------+                   |
|                                |                   |
| signatureless cert             |                   V
|   tbscert                      |  +-- Up-to-date RP -----+
|   inclusion proof to landmark -+->| landmark hashes      |
|                                |  | trusted cosigners    |
|                                |  +----------------------+
| full cert                      |
|   tbscert                      |  +-- Unupdated RP ------+
|   inclusion proof              |  | (stale or no hashes) |
|   cosignatures     ------------+->| trusted cosigners    |
|                                |  +----------------------+
+--------------------------------+
                     4. Select certificate by RP
]]></artwork>
        </artset>
      </figure>
      <t>Signatureless certificates are constructed and used as follows. <xref target="fig-signatureless-overview"/> depicts this process.</t>
      <ol spacing="normal" type="1"><li>
          <t>Periodically, the tree size of the CA's most recent checkpoint is designated as a <em>landmark</em>. This determines <em>landmark subtrees</em>, which are common points of reference between relying parties and signatureless certificates.</t>
        </li>
        <li>
          <t>Once some landmark includes the TBSCertificate, the signatureless certificate is constructed with:  </t>
          <ul spacing="normal">
            <li>
              <t>The TBSCertificate being certified</t>
            </li>
            <li>
              <t>An inclusion proof from the TBSCertificate to a landmark subtree</t>
            </li>
          </ul>
        </li>
        <li>
          <t>In the background, landmark subtrees are predistributed to relying parties, with cosignatures checked against relying party requirements. This occurs periodically in the background, separate from the application protocol.</t>
        </li>
        <li>
          <t>During the application protocol, such as TLS <xref target="RFC8446"/>, if the relying party already supports the landmark subtree, the authenticating party can present the signatureless certificate. Otherwise, it presents a full certificate. The authenticating party may also select between several signatureless certificates, as described in <xref target="certificate-renewal"/>.</t>
        </li>
      </ol>
    </section>
    <section anchor="subtrees">
      <name>Subtrees</name>
      <t>This section extends the Merkle Tree definition in <xref section="2.1" sectionFormat="of" target="RFC9162"/> by defining a <em>subtree</em> of a Merkle Tree. A subtree is an interior node of a Merkle Tree, which can be efficiently shown consistent with the original Merkle Tree and any Merkle Tree with additional elements appended. This specification uses subtrees to reduce the size of inclusion proofs.</t>
      <section anchor="definition-of-a-subtree">
        <name>Definition of a Subtree</name>
        <t>Given an ordered list of <tt>n</tt> inputs, <tt>D_n = {d[0], d[1], ..., d[n-1]}</tt>, <xref section="2.1.1" sectionFormat="of" target="RFC9162"/> defines the Merkle Tree via the Merkle Tree Hash <tt>MTH(D_n)</tt>.</t>
        <t>A <em>subtree</em> of this Merkle Tree is itself a Merkle Tree, defined by <tt>MTH(D[start:end])</tt>. <tt>start</tt> and <tt>end</tt> are integers such that:</t>
        <ul spacing="normal">
          <li>
            <t><tt>0 &lt;= start &lt; end &lt;= n</tt></t>
          </li>
          <li>
            <t><tt>start</tt> is a multiple of <tt>BIT_CEIL(end - start)</tt></t>
          </li>
        </ul>
        <t>Note that, if <tt>start</tt> is zero, the second condition is always true.</t>
        <t>In the context of a single Merkle Tree, the subtree defined by <tt>start</tt> and <tt>end</tt> is denoted by half-open interval <tt>[start, end)</tt>. It contains the entries whose indices are in that half-open interval.</t>
        <t>The <em>size</em> of the subtree is <tt>end - start</tt>. If the subtree's size is a power of two, it is said to be <em>full</em>, otherwise it is said to be <em>partial</em>.</t>
        <t>If a subtree is full, then it is directly contained in the tree of hash operations in <tt>MTH(D_n)</tt> for <tt>n &gt;= end</tt>.</t>
        <t>If a subtree is partial, it is directly contained in <tt>MTH(D_n)</tt> only if <tt>n = end</tt>.</t>
      </section>
      <section anchor="example-subtrees">
        <name>Example Subtrees</name>
        <t><xref target="fig-subtree-example"/> shows the subtrees <tt>[4, 8)</tt> and <tt>[8, 13)</tt>:</t>
        <figure anchor="fig-subtree-example">
          <name>Two example subtrees, one full and one partial</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="464" width="200" viewBox="0 0 200 464" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,96 L 8,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                <path d="M 8,352 L 8,384" fill="none" stroke="black"/>
                <path d="M 8,416 L 8,448" fill="none" stroke="black"/>
                <path d="M 24,160 L 24,192" fill="none" stroke="black"/>
                <path d="M 24,416 L 24,448" fill="none" stroke="black"/>
                <path d="M 32,32 L 32,64" fill="none" stroke="black"/>
                <path d="M 32,288 L 32,320" fill="none" stroke="black"/>
                <path d="M 40,160 L 40,192" fill="none" stroke="black"/>
                <path d="M 40,416 L 40,448" fill="none" stroke="black"/>
                <path d="M 56,96 L 56,128" fill="none" stroke="black"/>
                <path d="M 56,160 L 56,192" fill="none" stroke="black"/>
                <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                <path d="M 56,416 L 56,448" fill="none" stroke="black"/>
                <path d="M 64,352 L 64,384" fill="none" stroke="black"/>
                <path d="M 72,96 L 72,128" fill="none" stroke="black"/>
                <path d="M 72,160 L 72,192" fill="none" stroke="black"/>
                <path d="M 72,416 L 72,448" fill="none" stroke="black"/>
                <path d="M 80,352 L 80,384" fill="none" stroke="black"/>
                <path d="M 88,160 L 88,192" fill="none" stroke="black"/>
                <path d="M 96,416 L 96,448" fill="none" stroke="black"/>
                <path d="M 104,32 L 104,64" fill="none" stroke="black"/>
                <path d="M 104,160 L 104,192" fill="none" stroke="black"/>
                <path d="M 112,288 L 112,320" fill="none" stroke="black"/>
                <path d="M 112,416 L 112,448" fill="none" stroke="black"/>
                <path d="M 120,96 L 120,128" fill="none" stroke="black"/>
                <path d="M 120,160 L 120,192" fill="none" stroke="black"/>
                <path d="M 136,416 L 136,448" fill="none" stroke="black"/>
                <path d="M 144,352 L 144,384" fill="none" stroke="black"/>
                <path d="M 152,416 L 152,448" fill="none" stroke="black"/>
                <path d="M 168,264 L 168,408" fill="none" stroke="black"/>
                <path d="M 176,416 L 176,448" fill="none" stroke="black"/>
                <path d="M 192,224 L 192,256" fill="none" stroke="black"/>
                <path d="M 32,32 L 104,32" fill="none" stroke="black"/>
                <path d="M 32,64 L 104,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 56,96" fill="none" stroke="black"/>
                <path d="M 72,96 L 120,96" fill="none" stroke="black"/>
                <path d="M 8,128 L 56,128" fill="none" stroke="black"/>
                <path d="M 72,128 L 120,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 24,160" fill="none" stroke="black"/>
                <path d="M 40,160 L 56,160" fill="none" stroke="black"/>
                <path d="M 72,160 L 88,160" fill="none" stroke="black"/>
                <path d="M 104,160 L 120,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 24,192" fill="none" stroke="black"/>
                <path d="M 40,192 L 56,192" fill="none" stroke="black"/>
                <path d="M 72,192 L 88,192" fill="none" stroke="black"/>
                <path d="M 104,192 L 120,192" fill="none" stroke="black"/>
                <path d="M 56,224 L 192,224" fill="none" stroke="black"/>
                <path d="M 56,256 L 192,256" fill="none" stroke="black"/>
                <path d="M 32,288 L 112,288" fill="none" stroke="black"/>
                <path d="M 32,320 L 112,320" fill="none" stroke="black"/>
                <path d="M 8,352 L 64,352" fill="none" stroke="black"/>
                <path d="M 80,352 L 144,352" fill="none" stroke="black"/>
                <path d="M 8,384 L 64,384" fill="none" stroke="black"/>
                <path d="M 80,384 L 144,384" fill="none" stroke="black"/>
                <path d="M 8,416 L 24,416" fill="none" stroke="black"/>
                <path d="M 40,416 L 56,416" fill="none" stroke="black"/>
                <path d="M 72,416 L 96,416" fill="none" stroke="black"/>
                <path d="M 112,416 L 136,416" fill="none" stroke="black"/>
                <path d="M 152,416 L 176,416" fill="none" stroke="black"/>
                <path d="M 8,448 L 24,448" fill="none" stroke="black"/>
                <path d="M 40,448 L 56,448" fill="none" stroke="black"/>
                <path d="M 72,448 L 96,448" fill="none" stroke="black"/>
                <path d="M 112,448 L 136,448" fill="none" stroke="black"/>
                <path d="M 152,448 L 176,448" fill="none" stroke="black"/>
                <g class="text">
                  <text x="56" y="52">[4,</text>
                  <text x="84" y="52">8)</text>
                  <text x="40" y="84">/</text>
                  <text x="96" y="84">\</text>
                  <text x="32" y="116">[4,6)</text>
                  <text x="96" y="116">[6,8)</text>
                  <text x="24" y="148">/</text>
                  <text x="40" y="148">\</text>
                  <text x="88" y="148">/</text>
                  <text x="104" y="148">\</text>
                  <text x="16" y="180">4</text>
                  <text x="48" y="180">5</text>
                  <text x="80" y="180">6</text>
                  <text x="112" y="180">7</text>
                  <text x="112" y="244">[8,</text>
                  <text x="144" y="244">13)</text>
                  <text x="80" y="276">/</text>
                  <text x="56" y="308">[8,</text>
                  <text x="88" y="308">12)</text>
                  <text x="48" y="340">/</text>
                  <text x="104" y="340">\</text>
                  <text x="36" y="372">[8,10)</text>
                  <text x="112" y="372">[10,12)</text>
                  <text x="24" y="404">/</text>
                  <text x="40" y="404">\</text>
                  <text x="96" y="404">/</text>
                  <text x="112" y="404">\</text>
                  <text x="16" y="436">8</text>
                  <text x="48" y="436">9</text>
                  <text x="84" y="436">10</text>
                  <text x="124" y="436">11</text>
                  <text x="164" y="436">12</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
   +--------+
   | [4, 8) |
   +--------+
    /      \
+-----+ +-----+
|[4,6)| |[6,8)|
+-----+ +-----+
  / \     / \
+-+ +-+ +-+ +-+
|4| |5| |6| |7|
+-+ +-+ +-+ +-+

      +----------------+
      |     [8, 13)    |
      +----------------+
         /          |
   +---------+      |
   | [8, 12) |      |
   +---------+      |
     /      \       |
+------+ +-------+  |
|[8,10)| |[10,12)|  |
+------+ +-------+  |
  / \      / \      |
+-+ +-+ +--+ +--+ +--+
|8| |9| |10| |11| |12|
+-+ +-+ +--+ +--+ +--+
]]></artwork>
          </artset>
        </figure>
        <t>Both subtrees are directly contained in a Merkle Tree of size 13, depicted in <xref target="fig-subtree-containment-example"/>. <tt>[4, 8)</tt> is contained because, although <tt>n</tt> (13) is not <tt>end</tt> (8), the subtree is full. <tt>[8, 13)</tt> is contained because <tt>n</tt> (13) is <tt>end</tt> (13).</t>
        <figure anchor="fig-subtree-containment-example">
          <name>A Merkle Tree of size 13</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="456" viewBox="0 0 456 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                <path d="M 8,288 L 8,320" fill="none" stroke="black"/>
                <path d="M 24,288 L 24,320" fill="none" stroke="black"/>
                <path d="M 32,160 L 32,192" fill="none" stroke="black"/>
                <path d="M 40,288 L 40,320" fill="none" stroke="black"/>
                <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                <path d="M 56,288 L 56,320" fill="none" stroke="black"/>
                <path d="M 64,96 L 64,128" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                <path d="M 72,288 L 72,320" fill="none" stroke="black"/>
                <path d="M 88,288 L 88,320" fill="none" stroke="black"/>
                <path d="M 104,160 L 104,192" fill="none" stroke="black"/>
                <path d="M 104,288 L 104,320" fill="none" stroke="black"/>
                <path d="M 120,224 L 120,256" fill="none" stroke="black"/>
                <path d="M 120,288 L 120,320" fill="none" stroke="black"/>
                <path d="M 136,32 L 136,64" fill="none" stroke="black"/>
                <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                <path d="M 136,288 L 136,320" fill="none" stroke="black"/>
                <path d="M 152,288 L 152,320" fill="none" stroke="black"/>
                <path d="M 160,160 L 160,192" fill="none" stroke="black"/>
                <path d="M 168,288 L 168,320" fill="none" stroke="black"/>
                <path d="M 184,224 L 184,256" fill="none" stroke="black"/>
                <path d="M 184,288 L 184,320" fill="none" stroke="black"/>
                <path d="M 200,96 L 200,128" fill="none" stroke="black"/>
                <path d="M 200,224 L 200,256" fill="none" stroke="black"/>
                <path d="M 200,288 L 200,320" fill="none" stroke="black"/>
                <path d="M 216,288 L 216,320" fill="none" stroke="black"/>
                <path d="M 232,160 L 232,192" fill="none" stroke="black"/>
                <path d="M 232,288 L 232,320" fill="none" stroke="black"/>
                <path d="M 248,224 L 248,256" fill="none" stroke="black"/>
                <path d="M 248,288 L 248,320" fill="none" stroke="black"/>
                <path d="M 264,224 L 264,256" fill="none" stroke="black"/>
                <path d="M 264,288 L 264,320" fill="none" stroke="black"/>
                <path d="M 280,288 L 280,320" fill="none" stroke="black"/>
                <path d="M 288,160 L 288,192" fill="none" stroke="black"/>
                <path d="M 296,288 L 296,320" fill="none" stroke="black"/>
                <path d="M 312,96 L 312,128" fill="none" stroke="black"/>
                <path d="M 312,288 L 312,320" fill="none" stroke="black"/>
                <path d="M 320,224 L 320,256" fill="none" stroke="black"/>
                <path d="M 328,288 L 328,320" fill="none" stroke="black"/>
                <path d="M 336,224 L 336,256" fill="none" stroke="black"/>
                <path d="M 352,288 L 352,320" fill="none" stroke="black"/>
                <path d="M 368,160 L 368,192" fill="none" stroke="black"/>
                <path d="M 368,288 L 368,320" fill="none" stroke="black"/>
                <path d="M 376,32 L 376,64" fill="none" stroke="black"/>
                <path d="M 392,288 L 392,320" fill="none" stroke="black"/>
                <path d="M 400,224 L 400,256" fill="none" stroke="black"/>
                <path d="M 408,288 L 408,320" fill="none" stroke="black"/>
                <path d="M 424,144 L 424,272" fill="none" stroke="black"/>
                <path d="M 432,288 L 432,320" fill="none" stroke="black"/>
                <path d="M 448,96 L 448,128" fill="none" stroke="black"/>
                <path d="M 136,32 L 376,32" fill="none" stroke="black"/>
                <path d="M 136,64 L 376,64" fill="none" stroke="black"/>
                <path d="M 64,96 L 200,96" fill="none" stroke="black"/>
                <path d="M 312,96 Q 314,92.8 316,96 Q 318,99.2 320,96 Q 322,92.8 324,96 Q 326,99.2 328,96 Q 330,92.8 332,96 Q 334,99.2 336,96 Q 338,92.8 340,96 Q 342,99.2 344,96 Q 346,92.8 348,96 Q 350,99.2 352,96 Q 354,92.8 356,96 Q 358,99.2 360,96 Q 362,92.8 364,96 Q 366,99.2 368,96 Q 370,92.8 372,96 Q 374,99.2 376,96 Q 378,92.8 380,96 Q 382,99.2 384,96 Q 386,92.8 388,96 Q 390,99.2 392,96 Q 394,92.8 396,96 Q 398,99.2 400,96 Q 402,92.8 404,96 Q 406,99.2 408,96 Q 410,92.8 412,96 Q 414,99.2 416,96 Q 418,92.8 420,96 Q 422,99.2 424,96 Q 426,92.8 428,96 Q 430,99.2 432,96 Q 434,92.8 436,96 Q 438,99.2 440,96 Q 442,92.8 444,96 Q 446,99.2 448,96 " fill="none" stroke="black"/>
                <path d="M 64,128 L 200,128" fill="none" stroke="black"/>
                <path d="M 312,128 Q 314,124.8 316,128 Q 318,131.2 320,128 Q 322,124.8 324,128 Q 326,131.2 328,128 Q 330,124.8 332,128 Q 334,131.2 336,128 Q 338,124.8 340,128 Q 342,131.2 344,128 Q 346,124.8 348,128 Q 350,131.2 352,128 Q 354,124.8 356,128 Q 358,131.2 360,128 Q 362,124.8 364,128 Q 366,131.2 368,128 Q 370,124.8 372,128 Q 374,131.2 376,128 Q 378,124.8 380,128 Q 382,131.2 384,128 Q 386,124.8 388,128 Q 390,131.2 392,128 Q 394,124.8 396,128 Q 398,131.2 400,128 Q 402,124.8 404,128 Q 406,131.2 408,128 Q 410,124.8 412,128 Q 414,131.2 416,128 Q 418,124.8 420,128 Q 422,131.2 424,128 Q 426,124.8 428,128 Q 430,131.2 432,128 Q 434,124.8 436,128 Q 438,131.2 440,128 Q 442,124.8 444,128 Q 446,131.2 448,128 " fill="none" stroke="black"/>
                <path d="M 32,160 L 104,160" fill="none" stroke="black"/>
                <path d="M 160,158 L 232,158" fill="none" stroke="black"/>
                <path d="M 160,162 L 232,162" fill="none" stroke="black"/>
                <path d="M 288,160 Q 290,156.8 292,160 Q 294,163.2 296,160 Q 298,156.8 300,160 Q 302,163.2 304,160 Q 306,156.8 308,160 Q 310,163.2 312,160 Q 314,156.8 316,160 Q 318,163.2 320,160 Q 322,156.8 324,160 Q 326,163.2 328,160 Q 330,156.8 332,160 Q 334,163.2 336,160 Q 338,156.8 340,160 Q 342,163.2 344,160 Q 346,156.8 348,160 Q 350,163.2 352,160 Q 354,156.8 356,160 Q 358,163.2 360,160 Q 362,156.8 364,160 Q 366,163.2 368,160 " fill="none" stroke="black"/>
                <path d="M 32,192 L 104,192" fill="none" stroke="black"/>
                <path d="M 160,190 L 232,190" fill="none" stroke="black"/>
                <path d="M 160,194 L 232,194" fill="none" stroke="black"/>
                <path d="M 288,192 Q 290,188.8 292,192 Q 294,195.2 296,192 Q 298,188.8 300,192 Q 302,195.2 304,192 Q 306,188.8 308,192 Q 310,195.2 312,192 Q 314,188.8 316,192 Q 318,195.2 320,192 Q 322,188.8 324,192 Q 326,195.2 328,192 Q 330,188.8 332,192 Q 334,195.2 336,192 Q 338,188.8 340,192 Q 342,195.2 344,192 Q 346,188.8 348,192 Q 350,195.2 352,192 Q 354,188.8 356,192 Q 358,195.2 360,192 Q 362,188.8 364,192 Q 366,195.2 368,192 " fill="none" stroke="black"/>
                <path d="M 8,224 L 56,224" fill="none" stroke="black"/>
                <path d="M 72,224 L 120,224" fill="none" stroke="black"/>
                <path d="M 136,222 L 184,222" fill="none" stroke="black"/>
                <path d="M 136,226 L 184,226" fill="none" stroke="black"/>
                <path d="M 200,222 L 248,222" fill="none" stroke="black"/>
                <path d="M 200,226 L 248,226" fill="none" stroke="black"/>
                <path d="M 264,224 Q 266,220.8 268,224 Q 270,227.2 272,224 Q 274,220.8 276,224 Q 278,227.2 280,224 Q 282,220.8 284,224 Q 286,227.2 288,224 Q 290,220.8 292,224 Q 294,227.2 296,224 Q 298,220.8 300,224 Q 302,227.2 304,224 Q 306,220.8 308,224 Q 310,227.2 312,224 Q 314,220.8 316,224 Q 318,227.2 320,224 " fill="none" stroke="black"/>
                <path d="M 336,224 Q 338,220.8 340,224 Q 342,227.2 344,224 Q 346,220.8 348,224 Q 350,227.2 352,224 Q 354,220.8 356,224 Q 358,227.2 360,224 Q 362,220.8 364,224 Q 366,227.2 368,224 Q 370,220.8 372,224 Q 374,227.2 376,224 Q 378,220.8 380,224 Q 382,227.2 384,224 Q 386,220.8 388,224 Q 390,227.2 392,224 Q 394,220.8 396,224 Q 398,227.2 400,224 " fill="none" stroke="black"/>
                <path d="M 8,256 L 56,256" fill="none" stroke="black"/>
                <path d="M 72,256 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,254 L 184,254" fill="none" stroke="black"/>
                <path d="M 136,258 L 184,258" fill="none" stroke="black"/>
                <path d="M 200,254 L 248,254" fill="none" stroke="black"/>
                <path d="M 200,258 L 248,258" fill="none" stroke="black"/>
                <path d="M 264,256 Q 266,252.8 268,256 Q 270,259.2 272,256 Q 274,252.8 276,256 Q 278,259.2 280,256 Q 282,252.8 284,256 Q 286,259.2 288,256 Q 290,252.8 292,256 Q 294,259.2 296,256 Q 298,252.8 300,256 Q 302,259.2 304,256 Q 306,252.8 308,256 Q 310,259.2 312,256 Q 314,252.8 316,256 Q 318,259.2 320,256 " fill="none" stroke="black"/>
                <path d="M 336,256 Q 338,252.8 340,256 Q 342,259.2 344,256 Q 346,252.8 348,256 Q 350,259.2 352,256 Q 354,252.8 356,256 Q 358,259.2 360,256 Q 362,252.8 364,256 Q 366,259.2 368,256 Q 370,252.8 372,256 Q 374,259.2 376,256 Q 378,252.8 380,256 Q 382,259.2 384,256 Q 386,252.8 388,256 Q 390,259.2 392,256 Q 394,252.8 396,256 Q 398,259.2 400,256 " fill="none" stroke="black"/>
                <path d="M 8,288 L 24,288" fill="none" stroke="black"/>
                <path d="M 40,288 L 56,288" fill="none" stroke="black"/>
                <path d="M 72,288 L 88,288" fill="none" stroke="black"/>
                <path d="M 104,288 L 120,288" fill="none" stroke="black"/>
                <path d="M 136,286 L 152,286" fill="none" stroke="black"/>
                <path d="M 136,290 L 152,290" fill="none" stroke="black"/>
                <path d="M 168,286 L 184,286" fill="none" stroke="black"/>
                <path d="M 168,290 L 184,290" fill="none" stroke="black"/>
                <path d="M 200,286 L 216,286" fill="none" stroke="black"/>
                <path d="M 200,290 L 216,290" fill="none" stroke="black"/>
                <path d="M 232,286 L 248,286" fill="none" stroke="black"/>
                <path d="M 232,290 L 248,290" fill="none" stroke="black"/>
                <path d="M 264,288 Q 266,284.8 268,288 Q 270,291.2 272,288 Q 274,284.8 276,288 Q 278,291.2 280,288 " fill="none" stroke="black"/>
                <path d="M 296,288 Q 298,284.8 300,288 Q 302,291.2 304,288 Q 306,284.8 308,288 Q 310,291.2 312,288 " fill="none" stroke="black"/>
                <path d="M 328,288 Q 330,284.8 332,288 Q 334,291.2 336,288 Q 338,284.8 340,288 Q 342,291.2 344,288 Q 346,284.8 348,288 Q 350,291.2 352,288 " fill="none" stroke="black"/>
                <path d="M 368,288 Q 370,284.8 372,288 Q 374,291.2 376,288 Q 378,284.8 380,288 Q 382,291.2 384,288 Q 386,284.8 388,288 Q 390,291.2 392,288 " fill="none" stroke="black"/>
                <path d="M 408,288 Q 410,284.8 412,288 Q 414,291.2 416,288 Q 418,284.8 420,288 Q 422,291.2 424,288 Q 426,284.8 428,288 Q 430,291.2 432,288 " fill="none" stroke="black"/>
                <path d="M 8,320 L 24,320" fill="none" stroke="black"/>
                <path d="M 40,320 L 56,320" fill="none" stroke="black"/>
                <path d="M 72,320 L 88,320" fill="none" stroke="black"/>
                <path d="M 104,320 L 120,320" fill="none" stroke="black"/>
                <path d="M 136,318 L 152,318" fill="none" stroke="black"/>
                <path d="M 136,322 L 152,322" fill="none" stroke="black"/>
                <path d="M 168,318 L 184,318" fill="none" stroke="black"/>
                <path d="M 168,322 L 184,322" fill="none" stroke="black"/>
                <path d="M 200,318 L 216,318" fill="none" stroke="black"/>
                <path d="M 200,322 L 216,322" fill="none" stroke="black"/>
                <path d="M 232,318 L 248,318" fill="none" stroke="black"/>
                <path d="M 232,322 L 248,322" fill="none" stroke="black"/>
                <path d="M 264,320 Q 266,316.8 268,320 Q 270,323.2 272,320 Q 274,316.8 276,320 Q 278,323.2 280,320 " fill="none" stroke="black"/>
                <path d="M 296,320 Q 298,316.8 300,320 Q 302,323.2 304,320 Q 306,316.8 308,320 Q 310,323.2 312,320 " fill="none" stroke="black"/>
                <path d="M 328,320 Q 330,316.8 332,320 Q 334,323.2 336,320 Q 338,316.8 340,320 Q 342,323.2 344,320 Q 346,316.8 348,320 Q 350,323.2 352,320 " fill="none" stroke="black"/>
                <path d="M 368,320 Q 370,316.8 372,320 Q 374,323.2 376,320 Q 378,316.8 380,320 Q 382,323.2 384,320 Q 386,316.8 388,320 Q 390,323.2 392,320 " fill="none" stroke="black"/>
                <path d="M 408,320 Q 410,316.8 412,320 Q 414,323.2 416,320 Q 418,316.8 420,320 Q 422,323.2 424,320 Q 426,316.8 428,320 Q 430,323.2 432,320 " fill="none" stroke="black"/>
                <g class="text">
                  <text x="248" y="52">[0,</text>
                  <text x="280" y="52">13)</text>
                  <text x="160" y="84">/</text>
                  <text x="352" y="84">\</text>
                  <text x="120" y="116">[0,</text>
                  <text x="148" y="116">8)</text>
                  <text x="368" y="116">[8,</text>
                  <text x="400" y="116">13)</text>
                  <text x="72" y="148">/</text>
                  <text x="192" y="148">\</text>
                  <text x="336" y="148">/</text>
                  <text x="56" y="180">[0,</text>
                  <text x="84" y="180">4)</text>
                  <text x="184" y="180">[4,</text>
                  <text x="212" y="180">8)</text>
                  <text x="312" y="180">[8,</text>
                  <text x="344" y="180">12)</text>
                  <text x="40" y="212">/</text>
                  <text x="96" y="212">\</text>
                  <text x="168" y="212">/</text>
                  <text x="224" y="212">\</text>
                  <text x="304" y="212">/</text>
                  <text x="360" y="212">\</text>
                  <text x="32" y="244">[0,2)</text>
                  <text x="96" y="244">[2,4)</text>
                  <text x="160" y="244">[4,6)</text>
                  <text x="224" y="244">[6,8)</text>
                  <text x="292" y="244">[8,10)</text>
                  <text x="368" y="244">[10,12)</text>
                  <text x="24" y="276">/</text>
                  <text x="40" y="276">\</text>
                  <text x="88" y="276">/</text>
                  <text x="104" y="276">\</text>
                  <text x="152" y="276">/</text>
                  <text x="168" y="276">\</text>
                  <text x="216" y="276">/</text>
                  <text x="232" y="276">\</text>
                  <text x="280" y="276">/</text>
                  <text x="296" y="276">\</text>
                  <text x="352" y="276">/</text>
                  <text x="368" y="276">\</text>
                  <text x="16" y="308">0</text>
                  <text x="48" y="308">1</text>
                  <text x="80" y="308">2</text>
                  <text x="112" y="308">3</text>
                  <text x="144" y="308">4</text>
                  <text x="176" y="308">5</text>
                  <text x="208" y="308">6</text>
                  <text x="240" y="308">7</text>
                  <text x="272" y="308">8</text>
                  <text x="304" y="308">9</text>
                  <text x="340" y="308">10</text>
                  <text x="380" y="308">11</text>
                  <text x="420" y="308">12</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                +-----------------------------+
                |            [0, 13)          |
                +-----------------------------+
                   /                       \
       +----------------+             +~~~~~~~~~~~~~~~~+
       |     [0, 8)     |             |     [8, 13)    |
       +----------------+             +~~~~~~~~~~~~~~~~+
        /              \                 /          |
   +--------+      +========+      +~~~~~~~~~+      |
   | [0, 4) |      | [4, 8) |      | [8, 12) |      |
   +--------+      +========+      +~~~~~~~~~+      |
    /      \        /      \         /      \       |
+-----+ +-----+ +=====+ +=====+ +~~~~~~+ +~~~~~~~+  |
|[0,2)| |[2,4)| |[4,6)| |[6,8)| |[8,10)| |[10,12)|  |
+-----+ +-----+ +=====+ +=====+ +~~~~~~+ +~~~~~~~+  |
  / \     / \     / \     / \     / \      / \      |
+-+ +-+ +-+ +-+ +=+ +=+ +=+ +=+ +~+ +~+ +~~+ +~~+ +~~+
|0| |1| |2| |3| |4| |5| |6| |7| |8| |9| |10| |11| |12|
+-+ +-+ +-+ +-+ +=+ +=+ +=+ +=+ +~+ +~+ +~~+ +~~+ +~~+
]]></artwork>
          </artset>
        </figure>
        <t>In contrast, <tt>[8, 13)</tt> is not directly contained in a Merkle Tree of size 14, depicted in <xref target="fig-subtree-containment-example-2"/>. However, the subtree is still computed over consistent elements.</t>
        <figure anchor="fig-subtree-containment-example-2">
          <name>A Merkle Tree of size 14</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="488" viewBox="0 0 488 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                <path d="M 8,288 L 8,320" fill="none" stroke="black"/>
                <path d="M 24,288 L 24,320" fill="none" stroke="black"/>
                <path d="M 32,160 L 32,192" fill="none" stroke="black"/>
                <path d="M 40,288 L 40,320" fill="none" stroke="black"/>
                <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                <path d="M 56,288 L 56,320" fill="none" stroke="black"/>
                <path d="M 64,96 L 64,128" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                <path d="M 72,288 L 72,320" fill="none" stroke="black"/>
                <path d="M 88,288 L 88,320" fill="none" stroke="black"/>
                <path d="M 104,160 L 104,192" fill="none" stroke="black"/>
                <path d="M 104,288 L 104,320" fill="none" stroke="black"/>
                <path d="M 120,224 L 120,256" fill="none" stroke="black"/>
                <path d="M 120,288 L 120,320" fill="none" stroke="black"/>
                <path d="M 136,32 L 136,64" fill="none" stroke="black"/>
                <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                <path d="M 136,288 L 136,320" fill="none" stroke="black"/>
                <path d="M 152,288 L 152,320" fill="none" stroke="black"/>
                <path d="M 160,160 L 160,192" fill="none" stroke="black"/>
                <path d="M 168,288 L 168,320" fill="none" stroke="black"/>
                <path d="M 184,224 L 184,256" fill="none" stroke="black"/>
                <path d="M 184,288 L 184,320" fill="none" stroke="black"/>
                <path d="M 200,96 L 200,128" fill="none" stroke="black"/>
                <path d="M 200,224 L 200,256" fill="none" stroke="black"/>
                <path d="M 200,288 L 200,320" fill="none" stroke="black"/>
                <path d="M 216,288 L 216,320" fill="none" stroke="black"/>
                <path d="M 232,160 L 232,192" fill="none" stroke="black"/>
                <path d="M 232,288 L 232,320" fill="none" stroke="black"/>
                <path d="M 248,224 L 248,256" fill="none" stroke="black"/>
                <path d="M 248,288 L 248,320" fill="none" stroke="black"/>
                <path d="M 264,224 L 264,256" fill="none" stroke="black"/>
                <path d="M 264,288 L 264,320" fill="none" stroke="black"/>
                <path d="M 280,288 L 280,320" fill="none" stroke="black"/>
                <path d="M 288,160 L 288,192" fill="none" stroke="black"/>
                <path d="M 296,288 L 296,320" fill="none" stroke="black"/>
                <path d="M 312,96 L 312,128" fill="none" stroke="black"/>
                <path d="M 312,288 L 312,320" fill="none" stroke="black"/>
                <path d="M 320,224 L 320,256" fill="none" stroke="black"/>
                <path d="M 328,288 L 328,320" fill="none" stroke="black"/>
                <path d="M 336,224 L 336,256" fill="none" stroke="black"/>
                <path d="M 352,288 L 352,320" fill="none" stroke="black"/>
                <path d="M 368,160 L 368,192" fill="none" stroke="black"/>
                <path d="M 368,288 L 368,320" fill="none" stroke="black"/>
                <path d="M 376,32 L 376,64" fill="none" stroke="black"/>
                <path d="M 392,288 L 392,320" fill="none" stroke="black"/>
                <path d="M 400,224 L 400,256" fill="none" stroke="black"/>
                <path d="M 408,288 L 408,320" fill="none" stroke="black"/>
                <path d="M 416,224 L 416,256" fill="none" stroke="black"/>
                <path d="M 432,136 L 432,216" fill="none" stroke="black"/>
                <path d="M 432,288 L 432,320" fill="none" stroke="black"/>
                <path d="M 448,96 L 448,128" fill="none" stroke="black"/>
                <path d="M 448,288 L 448,320" fill="none" stroke="black"/>
                <path d="M 472,288 L 472,320" fill="none" stroke="black"/>
                <path d="M 480,224 L 480,256" fill="none" stroke="black"/>
                <path d="M 136,32 L 376,32" fill="none" stroke="black"/>
                <path d="M 136,64 L 376,64" fill="none" stroke="black"/>
                <path d="M 64,96 L 200,96" fill="none" stroke="black"/>
                <path d="M 312,96 L 448,96" fill="none" stroke="black"/>
                <path d="M 64,128 L 200,128" fill="none" stroke="black"/>
                <path d="M 312,128 L 448,128" fill="none" stroke="black"/>
                <path d="M 32,160 L 104,160" fill="none" stroke="black"/>
                <path d="M 160,160 L 232,160" fill="none" stroke="black"/>
                <path d="M 288,160 L 368,160" fill="none" stroke="black"/>
                <path d="M 32,192 L 104,192" fill="none" stroke="black"/>
                <path d="M 160,192 L 232,192" fill="none" stroke="black"/>
                <path d="M 288,192 L 368,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 56,224" fill="none" stroke="black"/>
                <path d="M 72,224 L 120,224" fill="none" stroke="black"/>
                <path d="M 136,224 L 184,224" fill="none" stroke="black"/>
                <path d="M 200,224 L 248,224" fill="none" stroke="black"/>
                <path d="M 264,224 L 320,224" fill="none" stroke="black"/>
                <path d="M 336,224 L 400,224" fill="none" stroke="black"/>
                <path d="M 416,224 L 480,224" fill="none" stroke="black"/>
                <path d="M 8,256 L 56,256" fill="none" stroke="black"/>
                <path d="M 72,256 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,256 L 184,256" fill="none" stroke="black"/>
                <path d="M 200,256 L 248,256" fill="none" stroke="black"/>
                <path d="M 264,256 L 320,256" fill="none" stroke="black"/>
                <path d="M 336,256 L 400,256" fill="none" stroke="black"/>
                <path d="M 416,256 L 480,256" fill="none" stroke="black"/>
                <path d="M 8,288 L 24,288" fill="none" stroke="black"/>
                <path d="M 40,288 L 56,288" fill="none" stroke="black"/>
                <path d="M 72,288 L 88,288" fill="none" stroke="black"/>
                <path d="M 104,288 L 120,288" fill="none" stroke="black"/>
                <path d="M 136,288 L 152,288" fill="none" stroke="black"/>
                <path d="M 168,288 L 184,288" fill="none" stroke="black"/>
                <path d="M 200,288 L 216,288" fill="none" stroke="black"/>
                <path d="M 232,288 L 248,288" fill="none" stroke="black"/>
                <path d="M 264,288 Q 266,284.8 268,288 Q 270,291.2 272,288 Q 274,284.8 276,288 Q 278,291.2 280,288 " fill="none" stroke="black"/>
                <path d="M 296,288 Q 298,284.8 300,288 Q 302,291.2 304,288 Q 306,284.8 308,288 Q 310,291.2 312,288 " fill="none" stroke="black"/>
                <path d="M 328,288 Q 330,284.8 332,288 Q 334,291.2 336,288 Q 338,284.8 340,288 Q 342,291.2 344,288 Q 346,284.8 348,288 Q 350,291.2 352,288 " fill="none" stroke="black"/>
                <path d="M 368,288 Q 370,284.8 372,288 Q 374,291.2 376,288 Q 378,284.8 380,288 Q 382,291.2 384,288 Q 386,284.8 388,288 Q 390,291.2 392,288 " fill="none" stroke="black"/>
                <path d="M 408,288 Q 410,284.8 412,288 Q 414,291.2 416,288 Q 418,284.8 420,288 Q 422,291.2 424,288 Q 426,284.8 428,288 Q 430,291.2 432,288 " fill="none" stroke="black"/>
                <path d="M 448,288 L 472,288" fill="none" stroke="black"/>
                <path d="M 8,320 L 24,320" fill="none" stroke="black"/>
                <path d="M 40,320 L 56,320" fill="none" stroke="black"/>
                <path d="M 72,320 L 88,320" fill="none" stroke="black"/>
                <path d="M 104,320 L 120,320" fill="none" stroke="black"/>
                <path d="M 136,320 L 152,320" fill="none" stroke="black"/>
                <path d="M 168,320 L 184,320" fill="none" stroke="black"/>
                <path d="M 200,320 L 216,320" fill="none" stroke="black"/>
                <path d="M 232,320 L 248,320" fill="none" stroke="black"/>
                <path d="M 264,320 Q 266,316.8 268,320 Q 270,323.2 272,320 Q 274,316.8 276,320 Q 278,323.2 280,320 " fill="none" stroke="black"/>
                <path d="M 296,320 Q 298,316.8 300,320 Q 302,323.2 304,320 Q 306,316.8 308,320 Q 310,323.2 312,320 " fill="none" stroke="black"/>
                <path d="M 328,320 Q 330,316.8 332,320 Q 334,323.2 336,320 Q 338,316.8 340,320 Q 342,323.2 344,320 Q 346,316.8 348,320 Q 350,323.2 352,320 " fill="none" stroke="black"/>
                <path d="M 368,320 Q 370,316.8 372,320 Q 374,323.2 376,320 Q 378,316.8 380,320 Q 382,323.2 384,320 Q 386,316.8 388,320 Q 390,323.2 392,320 " fill="none" stroke="black"/>
                <path d="M 408,320 Q 410,316.8 412,320 Q 414,323.2 416,320 Q 418,316.8 420,320 Q 422,323.2 424,320 Q 426,316.8 428,320 Q 430,323.2 432,320 " fill="none" stroke="black"/>
                <path d="M 448,320 L 472,320" fill="none" stroke="black"/>
                <g class="text">
                  <text x="248" y="52">[0,</text>
                  <text x="280" y="52">14)</text>
                  <text x="160" y="84">/</text>
                  <text x="352" y="84">\</text>
                  <text x="120" y="116">[0,</text>
                  <text x="148" y="116">8)</text>
                  <text x="368" y="116">[8,</text>
                  <text x="400" y="116">14)</text>
                  <text x="72" y="148">/</text>
                  <text x="192" y="148">\</text>
                  <text x="336" y="148">/</text>
                  <text x="56" y="180">[0,</text>
                  <text x="84" y="180">4)</text>
                  <text x="184" y="180">[4,</text>
                  <text x="212" y="180">8)</text>
                  <text x="312" y="180">[8,</text>
                  <text x="344" y="180">12)</text>
                  <text x="40" y="212">/</text>
                  <text x="96" y="212">\</text>
                  <text x="168" y="212">/</text>
                  <text x="224" y="212">\</text>
                  <text x="304" y="212">/</text>
                  <text x="360" y="212">\</text>
                  <text x="32" y="244">[0,2)</text>
                  <text x="96" y="244">[2,4)</text>
                  <text x="160" y="244">[4,6)</text>
                  <text x="224" y="244">[6,8)</text>
                  <text x="292" y="244">[8,10)</text>
                  <text x="368" y="244">[10,12)</text>
                  <text x="448" y="244">[12,14)</text>
                  <text x="24" y="276">/</text>
                  <text x="40" y="276">\</text>
                  <text x="88" y="276">/</text>
                  <text x="104" y="276">\</text>
                  <text x="152" y="276">/</text>
                  <text x="168" y="276">\</text>
                  <text x="216" y="276">/</text>
                  <text x="232" y="276">\</text>
                  <text x="280" y="276">/</text>
                  <text x="296" y="276">\</text>
                  <text x="352" y="276">/</text>
                  <text x="368" y="276">\</text>
                  <text x="432" y="276">/</text>
                  <text x="448" y="276">\</text>
                  <text x="16" y="308">0</text>
                  <text x="48" y="308">1</text>
                  <text x="80" y="308">2</text>
                  <text x="112" y="308">3</text>
                  <text x="144" y="308">4</text>
                  <text x="176" y="308">5</text>
                  <text x="208" y="308">6</text>
                  <text x="240" y="308">7</text>
                  <text x="272" y="308">8</text>
                  <text x="304" y="308">9</text>
                  <text x="340" y="308">10</text>
                  <text x="380" y="308">11</text>
                  <text x="420" y="308">12</text>
                  <text x="460" y="308">13</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                +-----------------------------+
                |            [0, 14)          |
                +-----------------------------+
                   /                       \
       +----------------+             +----------------+
       |     [0, 8)     |             |     [8, 14)    |
       +----------------+             +----------------+
        /              \                 /           |
   +--------+      +--------+      +---------+       |
   | [0, 4) |      | [4, 8) |      | [8, 12) |       |
   +--------+      +--------+      +---------+       |
    /      \        /      \         /      \        |
+-----+ +-----+ +-----+ +-----+ +------+ +-------+ +-------+
|[0,2)| |[2,4)| |[4,6)| |[6,8)| |[8,10)| |[10,12)| |[12,14)|
+-----+ +-----+ +-----+ +-----+ +------+ +-------+ +-------+
  / \     / \     / \     / \     / \      / \       / \
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +~+ +~+ +~~+ +~~+ +~~+ +--+
|0| |1| |2| |3| |4| |5| |6| |7| |8| |9| |10| |11| |12| |13|
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +~+ +~+ +~~+ +~~+ +~~+ +--+
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="subtree-inclusion-proofs">
        <name>Subtree Inclusion Proofs</name>
        <t>Subtrees are Merkle Trees, so entries can be proven to be contained in the subtree. A subtree inclusion proof for entry <tt>index</tt> of the subtree <tt>[start, end)</tt> is a Merkle inclusion proof, as defined in <xref section="2.1.3.1" sectionFormat="of" target="RFC9162"/>, where <tt>m</tt> is <tt>index - start</tt> and the tree inputs are <tt>D[start:end]</tt>.</t>
        <t>Subtree inclusion proofs contain a sequence of nodes that are sufficient to reconstruct the subtree hash, <tt>MTH(D[start:end])</tt>, out of the hash for entry <tt>index</tt>, <tt>MTH({d[index]})</tt>, thus demonstrating that the subtree hash contains the entry's hash.</t>
        <section anchor="example-subtree-inclusion-proofs">
          <name>Example Subtree Inclusion Proofs</name>
          <t>The inclusion proof for entry 10 of subtree <tt>[8, 13)</tt> contains the hashes <tt>MTH({d[11]})</tt>, <tt>MTH(D[8:10])</tt>, and <tt>MTH({d[12]})</tt>, depicted in  <xref target="fig-subtree-inclusion-proof"/>. <tt>MTH({d[10]})</tt> is not part of the proof because the verifier is assumed to already know its value.</t>
          <figure anchor="fig-subtree-inclusion-proof">
            <name>An example subtree inclusion proof</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="200" viewBox="0 0 200 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                  <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                  <path d="M 24,224 L 24,256" fill="none" stroke="black"/>
                  <path d="M 32,96 L 32,128" fill="none" stroke="black"/>
                  <path d="M 40,224 L 40,256" fill="none" stroke="black"/>
                  <path d="M 56,32 L 56,64" fill="none" stroke="black"/>
                  <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                  <path d="M 64,160 L 64,192" fill="none" stroke="black"/>
                  <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                  <path d="M 80,160 L 80,192" fill="none" stroke="black"/>
                  <path d="M 96,224 L 96,256" fill="none" stroke="black"/>
                  <path d="M 112,96 L 112,128" fill="none" stroke="black"/>
                  <path d="M 112,224 L 112,256" fill="none" stroke="black"/>
                  <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                  <path d="M 144,160 L 144,192" fill="none" stroke="black"/>
                  <path d="M 152,224 L 152,256" fill="none" stroke="black"/>
                  <path d="M 168,72 L 168,208" fill="none" stroke="black"/>
                  <path d="M 176,224 L 176,256" fill="none" stroke="black"/>
                  <path d="M 192,32 L 192,64" fill="none" stroke="black"/>
                  <path d="M 56,32 L 192,32" fill="none" stroke="black"/>
                  <path d="M 56,64 L 192,64" fill="none" stroke="black"/>
                  <path d="M 32,96 L 112,96" fill="none" stroke="black"/>
                  <path d="M 32,128 L 112,128" fill="none" stroke="black"/>
                  <path d="M 8,158 L 64,158" fill="none" stroke="black"/>
                  <path d="M 8,162 L 64,162" fill="none" stroke="black"/>
                  <path d="M 80,160 L 144,160" fill="none" stroke="black"/>
                  <path d="M 8,190 L 64,190" fill="none" stroke="black"/>
                  <path d="M 8,194 L 64,194" fill="none" stroke="black"/>
                  <path d="M 80,192 L 144,192" fill="none" stroke="black"/>
                  <path d="M 8,224 L 24,224" fill="none" stroke="black"/>
                  <path d="M 40,224 L 56,224" fill="none" stroke="black"/>
                  <path d="M 72,224 Q 74,220.8 76,224 Q 78,227.2 80,224 Q 82,220.8 84,224 Q 86,227.2 88,224 Q 90,220.8 92,224 Q 94,227.2 96,224 " fill="none" stroke="black"/>
                  <path d="M 112,222 L 136,222" fill="none" stroke="black"/>
                  <path d="M 112,226 L 136,226" fill="none" stroke="black"/>
                  <path d="M 152,222 L 176,222" fill="none" stroke="black"/>
                  <path d="M 152,226 L 176,226" fill="none" stroke="black"/>
                  <path d="M 8,256 L 24,256" fill="none" stroke="black"/>
                  <path d="M 40,256 L 56,256" fill="none" stroke="black"/>
                  <path d="M 72,256 Q 74,252.8 76,256 Q 78,259.2 80,256 Q 82,252.8 84,256 Q 86,259.2 88,256 Q 90,252.8 92,256 Q 94,259.2 96,256 " fill="none" stroke="black"/>
                  <path d="M 112,254 L 136,254" fill="none" stroke="black"/>
                  <path d="M 112,258 L 136,258" fill="none" stroke="black"/>
                  <path d="M 152,254 L 176,254" fill="none" stroke="black"/>
                  <path d="M 152,258 L 176,258" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="112" y="52">[8,</text>
                    <text x="144" y="52">13)</text>
                    <text x="80" y="84">/</text>
                    <text x="56" y="116">[8,</text>
                    <text x="88" y="116">12)</text>
                    <text x="48" y="148">/</text>
                    <text x="104" y="148">\</text>
                    <text x="36" y="180">[8,10)</text>
                    <text x="112" y="180">[10,12)</text>
                    <text x="24" y="212">/</text>
                    <text x="40" y="212">\</text>
                    <text x="96" y="212">/</text>
                    <text x="112" y="212">\</text>
                    <text x="16" y="244">8</text>
                    <text x="48" y="244">9</text>
                    <text x="84" y="244">10</text>
                    <text x="124" y="244">11</text>
                    <text x="164" y="244">12</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
      +----------------+
      |     [8, 13)    |
      +----------------+
         /          |
   +---------+      |
   | [8, 12) |      |
   +---------+      |
     /      \       |
+======+ +-------+  |
|[8,10)| |[10,12)|  |
+======+ +-------+  |
  / \      / \      |
+-+ +-+ +~~+ +==+ +==+
|8| |9| |10| |11| |12|
+-+ +-+ +~~+ +==+ +==+
]]></artwork>
            </artset>
          </figure>
        </section>
        <section anchor="evaluating-a-subtree-inclusion-proof">
          <name>Evaluating a Subtree Inclusion Proof</name>
          <t>Given a subtree inclusion proof, <tt>inclusion_proof</tt>, for entry <tt>index</tt>, with hash <tt>entry_hash</tt>, of a subtree <tt>[start, end)</tt>, the subtree inclusion proof can be <em>evaluated</em> to compute the expected subtree hash:</t>
          <!-- If changing this procedure, remember to update {{inclusion-proof-evaluation-explain}} -->

<ol spacing="normal" type="1"><li>
              <t>Check that <tt>[start, end)</tt> is a valid subtree (<xref target="definition-of-a-subtree"/>), and that <tt>start &lt;= index &lt; end</tt>. If either do not hold, fail proof evaluation.</t>
            </li>
            <li>
              <t>Set <tt>fn</tt> to <tt>index - start</tt> and <tt>sn</tt> to <tt>end - start - 1</tt>.</t>
            </li>
            <li>
              <t>Set <tt>r</tt> to <tt>entry_hash</tt>.</t>
            </li>
            <li>
              <t>For each value <tt>p</tt> in the <tt>inclusion_proof</tt> array:  </t>
              <ol spacing="normal" type="1"><li>
                  <t>If <tt>sn</tt> is 0, then stop the iteration and fail proof evaluation.</t>
                </li>
                <li>
                  <t>If <tt>LSB(fn)</tt> is set, or if <tt>fn</tt> is equal to <tt>sn</tt>, then:      </t>
                  <ol spacing="normal" type="1"><li>
                      <t>Set <tt>r</tt> to <tt>HASH(0x01 || p || r)</tt>.</t>
                    </li>
                    <li>
                      <t>Until <tt>LSB(fn)</tt> is set, right-shift <tt>fn</tt> and <tt>sn</tt> equally.</t>
                    </li>
                  </ol>
                  <t>
Otherwise:      </t>
                  <ol spacing="normal" type="1"><li>
                      <t>Set <tt>r</tt> to <tt>HASH(0x01 || r || p)</tt>.</t>
                    </li>
                  </ol>
                </li>
                <li>
                  <t>Finally, right-shift both <tt>fn</tt> and <tt>sn</tt> one time.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>If <tt>sn</tt> is not zero, fail proof evaluation.</t>
            </li>
            <li>
              <t>Return <tt>r</tt> as the expected subtree hash.</t>
            </li>
          </ol>
          <t>This is the same as the procedure in <xref section="2.1.3.2" sectionFormat="of" target="RFC9162"/>, where <tt>leaf_index</tt> is <tt>index - start</tt>, <tt>tree_size</tt> is <tt>end - start</tt>, and <tt>r</tt> is returned instead of compared with <tt>root_hash</tt>.</t>
          <t><xref target="inclusion-proof-evaluation-explain"/> explains this procedure in more detail.</t>
        </section>
        <section anchor="verifying-a-subtree-inclusion-proof">
          <name>Verifying a Subtree Inclusion Proof</name>
          <t>Given a subtree inclusion proof, <tt>inclusion_proof</tt>, for entry <tt>index</tt>, with hash <tt>entry_hash</tt>, of a subtree <tt>[start, end)</tt> with hash <tt>subtree_hash</tt>, the subtree inclusion proof can be <em>verified</em> to verify the described entry is contained in the subtree:</t>
          <ol spacing="normal" type="1"><li>
              <t>Let <tt>expected_subtree_hash</tt> be the result of evaluating the inclusion proof as described <xref target="evaluating-a-subtree-inclusion-proof"/>. If evaluation fails, fail the proof verification.</t>
            </li>
            <li>
              <t>If <tt>subtree_hash</tt> is equal to <tt>expected_subtree_hash</tt>, the entry is contained in the subtree. Otherwise, fail the proof verification.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="subtree-consistency-proofs">
        <name>Subtree Consistency Proofs</name>
        <t>A subtree <tt>[start, end)</tt> can be efficiently proven to be consistent with the full Merkle Tree. That is, given <tt>MTH(D[start:end])</tt> and <tt>MTH(D_n)</tt>, the proof demonstrates that the input <tt>D[start:end]</tt> to the subtree hash was equal to the corresponding elements of the input <tt>D_n</tt> to the Merkle Tree hash.</t>
        <t>Subtree consistency proofs contain sufficient nodes to reconstruct both the subtree hash, <tt>MTH(D[start:end])</tt>, and the full tree hash, <tt>MTH(D_n)</tt>, in such a way that every input to the subtree hash was also incorporated into the full tree hash.</t>
        <section anchor="generating-a-subtree-consistency-proof">
          <name>Generating a Subtree Consistency Proof</name>
          <t>The subtree consistency proof, <tt>SUBTREE_PROOF(start, end, D_n)</tt> is defined similarly to <xref section="2.1.4.1" sectionFormat="of" target="RFC9162"/>, in terms of a helper function that tracks whether the subtree hash is known:</t>
          <sourcecode type="pseudocode"><![CDATA[
SUBTREE_PROOF(start, end, D_n) =
    SUBTREE_SUBPROOF(start, end, D_n, true)
]]></sourcecode>
          <t>If <tt>start = 0</tt> and <tt>end = n</tt>, the subtree is the root:</t>
          <sourcecode type="pseudocode"><![CDATA[
SUBTREE_SUBPROOF(0, n, D_n, true) = {}
SUBTREE_SUBPROOF(0, n, D_n, false) = {MTH(D_n)}
]]></sourcecode>
          <t>Otherwise, <tt>n &gt; 1</tt>. Let <tt>k</tt> be the largest power of two smaller than <tt>n</tt>. The consistency proof is defined recursively as:</t>
          <ul spacing="normal">
            <li>
              <t>If <tt>end &lt;= k</tt>, the subtree is on the left of <tt>k</tt>. The proof proves consistency with the left child and includes the right child:  </t>
              <sourcecode type="pseudocode"><![CDATA[
SUBTREE_SUBPROOF(start, end, D_n, b) =
    SUBTREE_SUBPROOF(start, end, D[0:k], b) : MTH(D[k:n])
]]></sourcecode>
            </li>
            <li>
              <t>If <tt>k &lt;= start</tt>, the subtree is on the right of <tt>k</tt>. The proof proves consistency with the right child and includes the left child.  </t>
              <sourcecode type="pseudocode"><![CDATA[
SUBTREE_SUBPROOF(start, end, D_n, b) =
    SUBTREE_SUBPROOF(start - k, end - k, D[k:n], b) : MTH(D[0:k])
]]></sourcecode>
            </li>
            <li>
              <t>Otherwise, <tt>start &lt; k &lt; end</tt>, which implies <tt>start = 0</tt>. The proof proves consistency with the right child and includes the left child.  </t>
              <sourcecode type="pseudocode"><![CDATA[
SUBTREE_SUBPROOF(0, end, D_n, b) =
    SUBTREE_SUBPROOF(0, end - k, D[k:n], false) : MTH(D[0:k])
]]></sourcecode>
            </li>
          </ul>
          <t>When <tt>start</tt> is zero, this computes a Merkle consistency proof:</t>
          <sourcecode type="pseudocode"><![CDATA[
SUBTREE_PROOF(0, end, D_n) = PROOF(end, D_n)
]]></sourcecode>
          <t>When <tt>end = start + 1</tt>, this computes a Merkle inclusion proof:</t>
          <sourcecode type="pseudocode"><![CDATA[
SUBTREE_PROOF(start, start + 1, D_n) = PATH(start, D_n)
]]></sourcecode>
          <t><xref target="consistency-proof-structure"/> explains the structure of a subtree consistency proof in more detail.</t>
        </section>
        <section anchor="example-subtree-consistency-proofs">
          <name>Example Subtree Consistency Proofs</name>
          <t>The subtree consistency proof for <tt>[4, 8)</tt> and a tree of size 14 contains <tt>MTH(D[0:4])</tt> and <tt>MTH(D[8:14])</tt>, depicted in <xref target="fig-subtree-consistency-example-1"/>. The verifier is assumed to know the subtree hash, so there is no need to include <tt>MTH(D[4:8])</tt> itself in the consistency proof.</t>
          <figure anchor="fig-subtree-consistency-example-1">
            <name>An example subtree consistency proof for a subtree that is directly contained in the full tree</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="528" width="488" viewBox="0 0 488 528" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,96 L 8,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                  <path d="M 8,416 L 8,448" fill="none" stroke="black"/>
                  <path d="M 8,480 L 8,512" fill="none" stroke="black"/>
                  <path d="M 24,160 L 24,192" fill="none" stroke="black"/>
                  <path d="M 24,480 L 24,512" fill="none" stroke="black"/>
                  <path d="M 32,32 L 32,64" fill="none" stroke="black"/>
                  <path d="M 32,352 L 32,384" fill="none" stroke="black"/>
                  <path d="M 40,160 L 40,192" fill="none" stroke="black"/>
                  <path d="M 40,480 L 40,512" fill="none" stroke="black"/>
                  <path d="M 56,96 L 56,128" fill="none" stroke="black"/>
                  <path d="M 56,160 L 56,192" fill="none" stroke="black"/>
                  <path d="M 56,416 L 56,448" fill="none" stroke="black"/>
                  <path d="M 56,480 L 56,512" fill="none" stroke="black"/>
                  <path d="M 64,288 L 64,320" fill="none" stroke="black"/>
                  <path d="M 72,96 L 72,128" fill="none" stroke="black"/>
                  <path d="M 72,160 L 72,192" fill="none" stroke="black"/>
                  <path d="M 72,416 L 72,448" fill="none" stroke="black"/>
                  <path d="M 72,480 L 72,512" fill="none" stroke="black"/>
                  <path d="M 88,160 L 88,192" fill="none" stroke="black"/>
                  <path d="M 88,480 L 88,512" fill="none" stroke="black"/>
                  <path d="M 104,32 L 104,64" fill="none" stroke="black"/>
                  <path d="M 104,160 L 104,192" fill="none" stroke="black"/>
                  <path d="M 104,352 L 104,384" fill="none" stroke="black"/>
                  <path d="M 104,480 L 104,512" fill="none" stroke="black"/>
                  <path d="M 120,96 L 120,128" fill="none" stroke="black"/>
                  <path d="M 120,160 L 120,192" fill="none" stroke="black"/>
                  <path d="M 120,416 L 120,448" fill="none" stroke="black"/>
                  <path d="M 120,480 L 120,512" fill="none" stroke="black"/>
                  <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                  <path d="M 136,416 L 136,448" fill="none" stroke="black"/>
                  <path d="M 136,480 L 136,512" fill="none" stroke="black"/>
                  <path d="M 152,480 L 152,512" fill="none" stroke="black"/>
                  <path d="M 160,352 L 160,384" fill="none" stroke="black"/>
                  <path d="M 168,480 L 168,512" fill="none" stroke="black"/>
                  <path d="M 184,416 L 184,448" fill="none" stroke="black"/>
                  <path d="M 184,480 L 184,512" fill="none" stroke="black"/>
                  <path d="M 200,288 L 200,320" fill="none" stroke="black"/>
                  <path d="M 200,416 L 200,448" fill="none" stroke="black"/>
                  <path d="M 200,480 L 200,512" fill="none" stroke="black"/>
                  <path d="M 216,480 L 216,512" fill="none" stroke="black"/>
                  <path d="M 232,352 L 232,384" fill="none" stroke="black"/>
                  <path d="M 232,480 L 232,512" fill="none" stroke="black"/>
                  <path d="M 248,416 L 248,448" fill="none" stroke="black"/>
                  <path d="M 248,480 L 248,512" fill="none" stroke="black"/>
                  <path d="M 264,416 L 264,448" fill="none" stroke="black"/>
                  <path d="M 264,480 L 264,512" fill="none" stroke="black"/>
                  <path d="M 280,480 L 280,512" fill="none" stroke="black"/>
                  <path d="M 288,352 L 288,384" fill="none" stroke="black"/>
                  <path d="M 296,480 L 296,512" fill="none" stroke="black"/>
                  <path d="M 312,288 L 312,320" fill="none" stroke="black"/>
                  <path d="M 312,480 L 312,512" fill="none" stroke="black"/>
                  <path d="M 320,416 L 320,448" fill="none" stroke="black"/>
                  <path d="M 328,480 L 328,512" fill="none" stroke="black"/>
                  <path d="M 336,416 L 336,448" fill="none" stroke="black"/>
                  <path d="M 352,480 L 352,512" fill="none" stroke="black"/>
                  <path d="M 368,352 L 368,384" fill="none" stroke="black"/>
                  <path d="M 368,480 L 368,512" fill="none" stroke="black"/>
                  <path d="M 376,224 L 376,256" fill="none" stroke="black"/>
                  <path d="M 392,480 L 392,512" fill="none" stroke="black"/>
                  <path d="M 400,416 L 400,448" fill="none" stroke="black"/>
                  <path d="M 408,480 L 408,512" fill="none" stroke="black"/>
                  <path d="M 416,416 L 416,448" fill="none" stroke="black"/>
                  <path d="M 432,336 L 432,408" fill="none" stroke="black"/>
                  <path d="M 432,480 L 432,512" fill="none" stroke="black"/>
                  <path d="M 448,288 L 448,320" fill="none" stroke="black"/>
                  <path d="M 448,480 L 448,512" fill="none" stroke="black"/>
                  <path d="M 472,480 L 472,512" fill="none" stroke="black"/>
                  <path d="M 480,416 L 480,448" fill="none" stroke="black"/>
                  <path d="M 32,32 Q 34,28.8 36,32 Q 38,35.2 40,32 Q 42,28.8 44,32 Q 46,35.2 48,32 Q 50,28.8 52,32 Q 54,35.2 56,32 Q 58,28.8 60,32 Q 62,35.2 64,32 Q 66,28.8 68,32 Q 70,35.2 72,32 Q 74,28.8 76,32 Q 78,35.2 80,32 Q 82,28.8 84,32 Q 86,35.2 88,32 Q 90,28.8 92,32 Q 94,35.2 96,32 Q 98,28.8 100,32 Q 102,35.2 104,32 " fill="none" stroke="black"/>
                  <path d="M 32,64 Q 34,60.8 36,64 Q 38,67.2 40,64 Q 42,60.8 44,64 Q 46,67.2 48,64 Q 50,60.8 52,64 Q 54,67.2 56,64 Q 58,60.8 60,64 Q 62,67.2 64,64 Q 66,60.8 68,64 Q 70,67.2 72,64 Q 74,60.8 76,64 Q 78,67.2 80,64 Q 82,60.8 84,64 Q 86,67.2 88,64 Q 90,60.8 92,64 Q 94,67.2 96,64 Q 98,60.8 100,64 Q 102,67.2 104,64 " fill="none" stroke="black"/>
                  <path d="M 8,96 L 56,96" fill="none" stroke="black"/>
                  <path d="M 72,96 L 120,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 56,128" fill="none" stroke="black"/>
                  <path d="M 72,128 L 120,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 24,160" fill="none" stroke="black"/>
                  <path d="M 40,160 L 56,160" fill="none" stroke="black"/>
                  <path d="M 72,160 L 88,160" fill="none" stroke="black"/>
                  <path d="M 104,160 L 120,160" fill="none" stroke="black"/>
                  <path d="M 8,192 L 24,192" fill="none" stroke="black"/>
                  <path d="M 40,192 L 56,192" fill="none" stroke="black"/>
                  <path d="M 72,192 L 88,192" fill="none" stroke="black"/>
                  <path d="M 104,192 L 120,192" fill="none" stroke="black"/>
                  <path d="M 136,224 L 376,224" fill="none" stroke="black"/>
                  <path d="M 136,256 L 376,256" fill="none" stroke="black"/>
                  <path d="M 64,288 L 200,288" fill="none" stroke="black"/>
                  <path d="M 312,286 L 448,286" fill="none" stroke="black"/>
                  <path d="M 312,290 L 448,290" fill="none" stroke="black"/>
                  <path d="M 64,320 L 200,320" fill="none" stroke="black"/>
                  <path d="M 312,318 L 448,318" fill="none" stroke="black"/>
                  <path d="M 312,322 L 448,322" fill="none" stroke="black"/>
                  <path d="M 32,350 L 104,350" fill="none" stroke="black"/>
                  <path d="M 32,354 L 104,354" fill="none" stroke="black"/>
                  <path d="M 160,352 Q 162,348.8 164,352 Q 166,355.2 168,352 Q 170,348.8 172,352 Q 174,355.2 176,352 Q 178,348.8 180,352 Q 182,355.2 184,352 Q 186,348.8 188,352 Q 190,355.2 192,352 Q 194,348.8 196,352 Q 198,355.2 200,352 Q 202,348.8 204,352 Q 206,355.2 208,352 Q 210,348.8 212,352 Q 214,355.2 216,352 Q 218,348.8 220,352 Q 222,355.2 224,352 Q 226,348.8 228,352 Q 230,355.2 232,352 " fill="none" stroke="black"/>
                  <path d="M 288,352 L 368,352" fill="none" stroke="black"/>
                  <path d="M 32,382 L 104,382" fill="none" stroke="black"/>
                  <path d="M 32,386 L 104,386" fill="none" stroke="black"/>
                  <path d="M 160,384 Q 162,380.8 164,384 Q 166,387.2 168,384 Q 170,380.8 172,384 Q 174,387.2 176,384 Q 178,380.8 180,384 Q 182,387.2 184,384 Q 186,380.8 188,384 Q 190,387.2 192,384 Q 194,380.8 196,384 Q 198,387.2 200,384 Q 202,380.8 204,384 Q 206,387.2 208,384 Q 210,380.8 212,384 Q 214,387.2 216,384 Q 218,380.8 220,384 Q 222,387.2 224,384 Q 226,380.8 228,384 Q 230,387.2 232,384 " fill="none" stroke="black"/>
                  <path d="M 288,384 L 368,384" fill="none" stroke="black"/>
                  <path d="M 8,416 L 56,416" fill="none" stroke="black"/>
                  <path d="M 72,416 L 120,416" fill="none" stroke="black"/>
                  <path d="M 136,416 L 184,416" fill="none" stroke="black"/>
                  <path d="M 200,416 L 248,416" fill="none" stroke="black"/>
                  <path d="M 264,416 L 320,416" fill="none" stroke="black"/>
                  <path d="M 336,416 L 400,416" fill="none" stroke="black"/>
                  <path d="M 416,416 L 480,416" fill="none" stroke="black"/>
                  <path d="M 8,448 L 56,448" fill="none" stroke="black"/>
                  <path d="M 72,448 L 120,448" fill="none" stroke="black"/>
                  <path d="M 136,448 L 184,448" fill="none" stroke="black"/>
                  <path d="M 200,448 L 248,448" fill="none" stroke="black"/>
                  <path d="M 264,448 L 320,448" fill="none" stroke="black"/>
                  <path d="M 336,448 L 400,448" fill="none" stroke="black"/>
                  <path d="M 416,448 L 480,448" fill="none" stroke="black"/>
                  <path d="M 8,480 L 24,480" fill="none" stroke="black"/>
                  <path d="M 40,480 L 56,480" fill="none" stroke="black"/>
                  <path d="M 72,480 L 88,480" fill="none" stroke="black"/>
                  <path d="M 104,480 L 120,480" fill="none" stroke="black"/>
                  <path d="M 136,480 L 152,480" fill="none" stroke="black"/>
                  <path d="M 168,480 L 184,480" fill="none" stroke="black"/>
                  <path d="M 200,480 L 216,480" fill="none" stroke="black"/>
                  <path d="M 232,480 L 248,480" fill="none" stroke="black"/>
                  <path d="M 264,480 L 280,480" fill="none" stroke="black"/>
                  <path d="M 296,480 L 312,480" fill="none" stroke="black"/>
                  <path d="M 328,480 L 352,480" fill="none" stroke="black"/>
                  <path d="M 368,480 L 392,480" fill="none" stroke="black"/>
                  <path d="M 408,480 L 432,480" fill="none" stroke="black"/>
                  <path d="M 448,480 L 472,480" fill="none" stroke="black"/>
                  <path d="M 8,512 L 24,512" fill="none" stroke="black"/>
                  <path d="M 40,512 L 56,512" fill="none" stroke="black"/>
                  <path d="M 72,512 L 88,512" fill="none" stroke="black"/>
                  <path d="M 104,512 L 120,512" fill="none" stroke="black"/>
                  <path d="M 136,512 L 152,512" fill="none" stroke="black"/>
                  <path d="M 168,512 L 184,512" fill="none" stroke="black"/>
                  <path d="M 200,512 L 216,512" fill="none" stroke="black"/>
                  <path d="M 232,512 L 248,512" fill="none" stroke="black"/>
                  <path d="M 264,512 L 280,512" fill="none" stroke="black"/>
                  <path d="M 296,512 L 312,512" fill="none" stroke="black"/>
                  <path d="M 328,512 L 352,512" fill="none" stroke="black"/>
                  <path d="M 368,512 L 392,512" fill="none" stroke="black"/>
                  <path d="M 408,512 L 432,512" fill="none" stroke="black"/>
                  <path d="M 448,512 L 472,512" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="56" y="52">[4,</text>
                    <text x="84" y="52">8)</text>
                    <text x="40" y="84">/</text>
                    <text x="96" y="84">\</text>
                    <text x="32" y="116">[4,6)</text>
                    <text x="96" y="116">[6,8)</text>
                    <text x="24" y="148">/</text>
                    <text x="40" y="148">\</text>
                    <text x="88" y="148">/</text>
                    <text x="104" y="148">\</text>
                    <text x="16" y="180">4</text>
                    <text x="48" y="180">5</text>
                    <text x="80" y="180">6</text>
                    <text x="112" y="180">7</text>
                    <text x="248" y="244">[0,</text>
                    <text x="280" y="244">14)</text>
                    <text x="160" y="276">/</text>
                    <text x="352" y="276">\</text>
                    <text x="120" y="308">[0,</text>
                    <text x="148" y="308">8)</text>
                    <text x="368" y="308">[8,</text>
                    <text x="400" y="308">14)</text>
                    <text x="72" y="340">/</text>
                    <text x="192" y="340">\</text>
                    <text x="336" y="340">/</text>
                    <text x="56" y="372">[0,</text>
                    <text x="84" y="372">4)</text>
                    <text x="184" y="372">[4,</text>
                    <text x="212" y="372">8)</text>
                    <text x="312" y="372">[8,</text>
                    <text x="344" y="372">12)</text>
                    <text x="40" y="404">/</text>
                    <text x="96" y="404">\</text>
                    <text x="168" y="404">/</text>
                    <text x="224" y="404">\</text>
                    <text x="304" y="404">/</text>
                    <text x="360" y="404">\</text>
                    <text x="32" y="436">[0,2)</text>
                    <text x="96" y="436">[2,4)</text>
                    <text x="160" y="436">[4,6)</text>
                    <text x="224" y="436">[6,8)</text>
                    <text x="292" y="436">[8,10)</text>
                    <text x="368" y="436">[10,12)</text>
                    <text x="448" y="436">[12,14)</text>
                    <text x="24" y="468">/</text>
                    <text x="40" y="468">\</text>
                    <text x="88" y="468">/</text>
                    <text x="104" y="468">\</text>
                    <text x="152" y="468">/</text>
                    <text x="168" y="468">\</text>
                    <text x="216" y="468">/</text>
                    <text x="232" y="468">\</text>
                    <text x="280" y="468">/</text>
                    <text x="296" y="468">\</text>
                    <text x="352" y="468">/</text>
                    <text x="368" y="468">\</text>
                    <text x="432" y="468">/</text>
                    <text x="448" y="468">\</text>
                    <text x="16" y="500">0</text>
                    <text x="48" y="500">1</text>
                    <text x="80" y="500">2</text>
                    <text x="112" y="500">3</text>
                    <text x="144" y="500">4</text>
                    <text x="176" y="500">5</text>
                    <text x="208" y="500">6</text>
                    <text x="240" y="500">7</text>
                    <text x="272" y="500">8</text>
                    <text x="304" y="500">9</text>
                    <text x="340" y="500">10</text>
                    <text x="380" y="500">11</text>
                    <text x="420" y="500">12</text>
                    <text x="460" y="500">13</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
   +~~~~~~~~+
   | [4, 8) |
   +~~~~~~~~+
    /      \
+-----+ +-----+
|[4,6)| |[6,8)|
+-----+ +-----+
  / \     / \
+-+ +-+ +-+ +-+
|4| |5| |6| |7|
+-+ +-+ +-+ +-+

                +-----------------------------+
                |            [0, 14)          |
                +-----------------------------+
                   /                       \
       +----------------+             +================+
       |     [0, 8)     |             |     [8, 14)    |
       +----------------+             +================+
        /              \                 /           |
   +========+      +~~~~~~~~+      +---------+       |
   | [0, 4) |      | [4, 8) |      | [8, 12) |       |
   +========+      +~~~~~~~~+      +---------+       |
    /      \        /      \         /      \        |
+-----+ +-----+ +-----+ +-----+ +------+ +-------+ +-------+
|[0,2)| |[2,4)| |[4,6)| |[6,8)| |[8,10)| |[10,12)| |[12,14)|
+-----+ +-----+ +-----+ +-----+ +------+ +-------+ +-------+
  / \     / \     / \     / \     / \      / \       / \
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +--+ +--+ +--+ +--+
|0| |1| |2| |3| |4| |5| |6| |7| |8| |9| |10| |11| |12| |13|
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +--+ +--+ +--+ +--+
]]></artwork>
            </artset>
          </figure>
          <t>The subtree consistency proof for <tt>[8, 13)</tt> and a tree of size 14 contains <tt>MTH({d[12]})</tt>, <tt>MTH({d[13]})</tt>, <tt>MTH(D[8:12])</tt>, and <tt>MTH(D[0:8])</tt>, depicted in <xref target="fig-subtree-consistency-example-2"/>. <tt>[8, 13)</tt> is not directly contained in the tree, so the proof must include sufficient nodes to reconstruct both hashes.</t>
          <figure anchor="fig-subtree-consistency-example-2">
            <name>An example subtree consistency proof for a subtree that is not directly contained in the full tree</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="592" width="488" viewBox="0 0 488 592" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                  <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                  <path d="M 8,480 L 8,512" fill="none" stroke="black"/>
                  <path d="M 8,544 L 8,576" fill="none" stroke="black"/>
                  <path d="M 24,224 L 24,256" fill="none" stroke="black"/>
                  <path d="M 24,544 L 24,576" fill="none" stroke="black"/>
                  <path d="M 32,96 L 32,128" fill="none" stroke="black"/>
                  <path d="M 32,416 L 32,448" fill="none" stroke="black"/>
                  <path d="M 40,224 L 40,256" fill="none" stroke="black"/>
                  <path d="M 40,544 L 40,576" fill="none" stroke="black"/>
                  <path d="M 56,32 L 56,64" fill="none" stroke="black"/>
                  <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                  <path d="M 56,480 L 56,512" fill="none" stroke="black"/>
                  <path d="M 56,544 L 56,576" fill="none" stroke="black"/>
                  <path d="M 64,160 L 64,192" fill="none" stroke="black"/>
                  <path d="M 64,352 L 64,384" fill="none" stroke="black"/>
                  <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                  <path d="M 72,480 L 72,512" fill="none" stroke="black"/>
                  <path d="M 72,544 L 72,576" fill="none" stroke="black"/>
                  <path d="M 80,160 L 80,192" fill="none" stroke="black"/>
                  <path d="M 88,544 L 88,576" fill="none" stroke="black"/>
                  <path d="M 96,224 L 96,256" fill="none" stroke="black"/>
                  <path d="M 104,416 L 104,448" fill="none" stroke="black"/>
                  <path d="M 104,544 L 104,576" fill="none" stroke="black"/>
                  <path d="M 112,96 L 112,128" fill="none" stroke="black"/>
                  <path d="M 112,224 L 112,256" fill="none" stroke="black"/>
                  <path d="M 120,480 L 120,512" fill="none" stroke="black"/>
                  <path d="M 120,544 L 120,576" fill="none" stroke="black"/>
                  <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                  <path d="M 136,288 L 136,320" fill="none" stroke="black"/>
                  <path d="M 136,480 L 136,512" fill="none" stroke="black"/>
                  <path d="M 136,544 L 136,576" fill="none" stroke="black"/>
                  <path d="M 144,160 L 144,192" fill="none" stroke="black"/>
                  <path d="M 152,224 L 152,256" fill="none" stroke="black"/>
                  <path d="M 152,544 L 152,576" fill="none" stroke="black"/>
                  <path d="M 160,416 L 160,448" fill="none" stroke="black"/>
                  <path d="M 168,72 L 168,208" fill="none" stroke="black"/>
                  <path d="M 168,544 L 168,576" fill="none" stroke="black"/>
                  <path d="M 176,224 L 176,256" fill="none" stroke="black"/>
                  <path d="M 184,480 L 184,512" fill="none" stroke="black"/>
                  <path d="M 184,544 L 184,576" fill="none" stroke="black"/>
                  <path d="M 192,32 L 192,64" fill="none" stroke="black"/>
                  <path d="M 200,352 L 200,384" fill="none" stroke="black"/>
                  <path d="M 200,480 L 200,512" fill="none" stroke="black"/>
                  <path d="M 200,544 L 200,576" fill="none" stroke="black"/>
                  <path d="M 216,544 L 216,576" fill="none" stroke="black"/>
                  <path d="M 232,416 L 232,448" fill="none" stroke="black"/>
                  <path d="M 232,544 L 232,576" fill="none" stroke="black"/>
                  <path d="M 248,480 L 248,512" fill="none" stroke="black"/>
                  <path d="M 248,544 L 248,576" fill="none" stroke="black"/>
                  <path d="M 264,480 L 264,512" fill="none" stroke="black"/>
                  <path d="M 264,544 L 264,576" fill="none" stroke="black"/>
                  <path d="M 280,544 L 280,576" fill="none" stroke="black"/>
                  <path d="M 288,416 L 288,448" fill="none" stroke="black"/>
                  <path d="M 296,544 L 296,576" fill="none" stroke="black"/>
                  <path d="M 312,352 L 312,384" fill="none" stroke="black"/>
                  <path d="M 312,544 L 312,576" fill="none" stroke="black"/>
                  <path d="M 320,480 L 320,512" fill="none" stroke="black"/>
                  <path d="M 328,544 L 328,576" fill="none" stroke="black"/>
                  <path d="M 336,480 L 336,512" fill="none" stroke="black"/>
                  <path d="M 352,544 L 352,576" fill="none" stroke="black"/>
                  <path d="M 368,416 L 368,448" fill="none" stroke="black"/>
                  <path d="M 368,544 L 368,576" fill="none" stroke="black"/>
                  <path d="M 376,288 L 376,320" fill="none" stroke="black"/>
                  <path d="M 392,544 L 392,576" fill="none" stroke="black"/>
                  <path d="M 400,480 L 400,512" fill="none" stroke="black"/>
                  <path d="M 408,544 L 408,576" fill="none" stroke="black"/>
                  <path d="M 416,480 L 416,512" fill="none" stroke="black"/>
                  <path d="M 432,392 L 432,472" fill="none" stroke="black"/>
                  <path d="M 432,544 L 432,576" fill="none" stroke="black"/>
                  <path d="M 448,352 L 448,384" fill="none" stroke="black"/>
                  <path d="M 448,544 L 448,576" fill="none" stroke="black"/>
                  <path d="M 472,544 L 472,576" fill="none" stroke="black"/>
                  <path d="M 480,480 L 480,512" fill="none" stroke="black"/>
                  <path d="M 56,32 L 192,32" fill="none" stroke="black"/>
                  <path d="M 56,64 L 192,64" fill="none" stroke="black"/>
                  <path d="M 32,94 L 112,94" fill="none" stroke="black"/>
                  <path d="M 32,98 L 112,98" fill="none" stroke="black"/>
                  <path d="M 32,126 L 112,126" fill="none" stroke="black"/>
                  <path d="M 32,130 L 112,130" fill="none" stroke="black"/>
                  <path d="M 8,160 L 64,160" fill="none" stroke="black"/>
                  <path d="M 80,160 L 144,160" fill="none" stroke="black"/>
                  <path d="M 8,192 L 64,192" fill="none" stroke="black"/>
                  <path d="M 80,192 L 144,192" fill="none" stroke="black"/>
                  <path d="M 8,224 L 24,224" fill="none" stroke="black"/>
                  <path d="M 40,224 L 56,224" fill="none" stroke="black"/>
                  <path d="M 72,224 L 96,224" fill="none" stroke="black"/>
                  <path d="M 112,224 L 136,224" fill="none" stroke="black"/>
                  <path d="M 152,222 L 176,222" fill="none" stroke="black"/>
                  <path d="M 152,226 L 176,226" fill="none" stroke="black"/>
                  <path d="M 8,256 L 24,256" fill="none" stroke="black"/>
                  <path d="M 40,256 L 56,256" fill="none" stroke="black"/>
                  <path d="M 72,256 L 96,256" fill="none" stroke="black"/>
                  <path d="M 112,256 L 136,256" fill="none" stroke="black"/>
                  <path d="M 152,254 L 176,254" fill="none" stroke="black"/>
                  <path d="M 152,258 L 176,258" fill="none" stroke="black"/>
                  <path d="M 136,288 L 376,288" fill="none" stroke="black"/>
                  <path d="M 136,320 L 376,320" fill="none" stroke="black"/>
                  <path d="M 64,350 L 200,350" fill="none" stroke="black"/>
                  <path d="M 64,354 L 200,354" fill="none" stroke="black"/>
                  <path d="M 312,352 L 448,352" fill="none" stroke="black"/>
                  <path d="M 64,382 L 200,382" fill="none" stroke="black"/>
                  <path d="M 64,386 L 200,386" fill="none" stroke="black"/>
                  <path d="M 312,384 L 448,384" fill="none" stroke="black"/>
                  <path d="M 32,416 L 104,416" fill="none" stroke="black"/>
                  <path d="M 160,416 L 232,416" fill="none" stroke="black"/>
                  <path d="M 288,414 L 368,414" fill="none" stroke="black"/>
                  <path d="M 288,418 L 368,418" fill="none" stroke="black"/>
                  <path d="M 32,448 L 104,448" fill="none" stroke="black"/>
                  <path d="M 160,448 L 232,448" fill="none" stroke="black"/>
                  <path d="M 288,446 L 368,446" fill="none" stroke="black"/>
                  <path d="M 288,450 L 368,450" fill="none" stroke="black"/>
                  <path d="M 8,480 L 56,480" fill="none" stroke="black"/>
                  <path d="M 72,480 L 120,480" fill="none" stroke="black"/>
                  <path d="M 136,480 L 184,480" fill="none" stroke="black"/>
                  <path d="M 200,480 L 248,480" fill="none" stroke="black"/>
                  <path d="M 264,480 L 320,480" fill="none" stroke="black"/>
                  <path d="M 336,480 L 400,480" fill="none" stroke="black"/>
                  <path d="M 416,480 L 480,480" fill="none" stroke="black"/>
                  <path d="M 8,512 L 56,512" fill="none" stroke="black"/>
                  <path d="M 72,512 L 120,512" fill="none" stroke="black"/>
                  <path d="M 136,512 L 184,512" fill="none" stroke="black"/>
                  <path d="M 200,512 L 248,512" fill="none" stroke="black"/>
                  <path d="M 264,512 L 320,512" fill="none" stroke="black"/>
                  <path d="M 336,512 L 400,512" fill="none" stroke="black"/>
                  <path d="M 416,512 L 480,512" fill="none" stroke="black"/>
                  <path d="M 8,544 L 24,544" fill="none" stroke="black"/>
                  <path d="M 40,544 L 56,544" fill="none" stroke="black"/>
                  <path d="M 72,544 L 88,544" fill="none" stroke="black"/>
                  <path d="M 104,544 L 120,544" fill="none" stroke="black"/>
                  <path d="M 136,544 L 152,544" fill="none" stroke="black"/>
                  <path d="M 168,544 L 184,544" fill="none" stroke="black"/>
                  <path d="M 200,544 L 216,544" fill="none" stroke="black"/>
                  <path d="M 232,544 L 248,544" fill="none" stroke="black"/>
                  <path d="M 264,544 L 280,544" fill="none" stroke="black"/>
                  <path d="M 296,544 L 312,544" fill="none" stroke="black"/>
                  <path d="M 328,544 L 352,544" fill="none" stroke="black"/>
                  <path d="M 368,544 L 392,544" fill="none" stroke="black"/>
                  <path d="M 408,542 L 432,542" fill="none" stroke="black"/>
                  <path d="M 408,546 L 432,546" fill="none" stroke="black"/>
                  <path d="M 448,542 L 472,542" fill="none" stroke="black"/>
                  <path d="M 448,546 L 472,546" fill="none" stroke="black"/>
                  <path d="M 8,576 L 24,576" fill="none" stroke="black"/>
                  <path d="M 40,576 L 56,576" fill="none" stroke="black"/>
                  <path d="M 72,576 L 88,576" fill="none" stroke="black"/>
                  <path d="M 104,576 L 120,576" fill="none" stroke="black"/>
                  <path d="M 136,576 L 152,576" fill="none" stroke="black"/>
                  <path d="M 168,576 L 184,576" fill="none" stroke="black"/>
                  <path d="M 200,576 L 216,576" fill="none" stroke="black"/>
                  <path d="M 232,576 L 248,576" fill="none" stroke="black"/>
                  <path d="M 264,576 L 280,576" fill="none" stroke="black"/>
                  <path d="M 296,576 L 312,576" fill="none" stroke="black"/>
                  <path d="M 328,576 L 352,576" fill="none" stroke="black"/>
                  <path d="M 368,576 L 392,576" fill="none" stroke="black"/>
                  <path d="M 408,574 L 432,574" fill="none" stroke="black"/>
                  <path d="M 408,578 L 432,578" fill="none" stroke="black"/>
                  <path d="M 448,574 L 472,574" fill="none" stroke="black"/>
                  <path d="M 448,578 L 472,578" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="112" y="52">[8,</text>
                    <text x="144" y="52">13)</text>
                    <text x="80" y="84">/</text>
                    <text x="56" y="116">[8,</text>
                    <text x="88" y="116">12)</text>
                    <text x="48" y="148">/</text>
                    <text x="104" y="148">\</text>
                    <text x="36" y="180">[8,10)</text>
                    <text x="112" y="180">[10,12)</text>
                    <text x="24" y="212">/</text>
                    <text x="40" y="212">\</text>
                    <text x="96" y="212">/</text>
                    <text x="112" y="212">\</text>
                    <text x="16" y="244">8</text>
                    <text x="48" y="244">9</text>
                    <text x="84" y="244">10</text>
                    <text x="124" y="244">11</text>
                    <text x="164" y="244">12</text>
                    <text x="248" y="308">[0,</text>
                    <text x="280" y="308">14)</text>
                    <text x="160" y="340">/</text>
                    <text x="352" y="340">\</text>
                    <text x="120" y="372">[0,</text>
                    <text x="148" y="372">8)</text>
                    <text x="368" y="372">[8,</text>
                    <text x="400" y="372">14)</text>
                    <text x="72" y="404">/</text>
                    <text x="192" y="404">\</text>
                    <text x="336" y="404">/</text>
                    <text x="56" y="436">[0,</text>
                    <text x="84" y="436">4)</text>
                    <text x="184" y="436">[4,</text>
                    <text x="212" y="436">8)</text>
                    <text x="312" y="436">[8,</text>
                    <text x="344" y="436">12)</text>
                    <text x="40" y="468">/</text>
                    <text x="96" y="468">\</text>
                    <text x="168" y="468">/</text>
                    <text x="224" y="468">\</text>
                    <text x="304" y="468">/</text>
                    <text x="360" y="468">\</text>
                    <text x="32" y="500">[0,2)</text>
                    <text x="96" y="500">[2,4)</text>
                    <text x="160" y="500">[4,6)</text>
                    <text x="224" y="500">[6,8)</text>
                    <text x="292" y="500">[8,10)</text>
                    <text x="368" y="500">[10,12)</text>
                    <text x="448" y="500">[12,14)</text>
                    <text x="24" y="532">/</text>
                    <text x="40" y="532">\</text>
                    <text x="88" y="532">/</text>
                    <text x="104" y="532">\</text>
                    <text x="152" y="532">/</text>
                    <text x="168" y="532">\</text>
                    <text x="216" y="532">/</text>
                    <text x="232" y="532">\</text>
                    <text x="280" y="532">/</text>
                    <text x="296" y="532">\</text>
                    <text x="352" y="532">/</text>
                    <text x="368" y="532">\</text>
                    <text x="432" y="532">/</text>
                    <text x="448" y="532">\</text>
                    <text x="16" y="564">0</text>
                    <text x="48" y="564">1</text>
                    <text x="80" y="564">2</text>
                    <text x="112" y="564">3</text>
                    <text x="144" y="564">4</text>
                    <text x="176" y="564">5</text>
                    <text x="208" y="564">6</text>
                    <text x="240" y="564">7</text>
                    <text x="272" y="564">8</text>
                    <text x="304" y="564">9</text>
                    <text x="340" y="564">10</text>
                    <text x="380" y="564">11</text>
                    <text x="420" y="564">12</text>
                    <text x="460" y="564">13</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
      +----------------+
      |     [8, 13)    |
      +----------------+
         /          |
   +=========+      |
   | [8, 12) |      |
   +=========+      |
     /      \       |
+------+ +-------+  |
|[8,10)| |[10,12)|  |
+------+ +-------+  |
  / \      / \      |
+-+ +-+ +--+ +--+ +==+
|8| |9| |10| |11| |12|
+-+ +-+ +--+ +--+ +==+

                +-----------------------------+
                |            [0, 14)          |
                +-----------------------------+
                   /                       \
       +================+             +----------------+
       |     [0, 8)     |             |     [8, 14)    |
       +================+             +----------------+
        /              \                 /           |
   +--------+      +--------+      +=========+       |
   | [0, 4) |      | [4, 8) |      | [8, 12) |       |
   +--------+      +--------+      +=========+       |
    /      \        /      \         /      \        |
+-----+ +-----+ +-----+ +-----+ +------+ +-------+ +-------+
|[0,2)| |[2,4)| |[4,6)| |[6,8)| |[8,10)| |[10,12)| |[12,14)|
+-----+ +-----+ +-----+ +-----+ +------+ +-------+ +-------+
  / \     / \     / \     / \     / \      / \       / \
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +--+ +--+ +==+ +==+
|0| |1| |2| |3| |4| |5| |6| |7| |8| |9| |10| |11| |12| |13|
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+ +--+ +--+ +==+ +==+
]]></artwork>
            </artset>
          </figure>
        </section>
        <section anchor="verifying-a-subtree-consistency-proof">
          <name>Verifying a Subtree Consistency Proof</name>
          <t>The following procedure can be used to verify a subtree consistency proof.</t>
          <t>Given a Merkle Tree over <tt>n</tt> elements, a subtree defined by <tt>[start, end)</tt>, a consistency proof <tt>proof</tt>, a subtree hash <tt>node_hash</tt>, and a root hash <tt>root_hash</tt>:</t>
          <!-- If changing this procedure, remember to update {{consistency-proof-verification-explain}} -->

<ol spacing="normal" type="1"><li>
              <t>Check that <tt>[start, end)</tt> is a valid subtree (<xref target="definition-of-a-subtree"/>), and that <tt>end &lt;= n</tt>. If either do not hold, fail proof verification. These checks imply <tt>0 &lt;= start &lt; end &lt;= n</tt>.</t>
            </li>
            <li>
              <t>Set <tt>fn</tt> to <tt>start</tt>, <tt>sn</tt> to <tt>end - 1</tt>, and <tt>tn</tt> to <tt>n - 1</tt>.</t>
            </li>
            <li>
              <t>If <tt>sn</tt> is <tt>tn</tt>, then:
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>Until <tt>fn</tt> is <tt>sn</tt>, right-shift <tt>fn</tt>, <tt>sn</tt>, and <tt>tn</tt> equally.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>Otherwise:
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>Until <tt>fn</tt> is <tt>sn</tt> or <tt>LSB(sn)</tt> is not set, right-shift <tt>fn</tt>, <tt>sn</tt>, and <tt>tn</tt> equally.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>If <tt>fn</tt> is <tt>sn</tt>, set <tt>fr</tt> and <tt>sr</tt> to <tt>node_hash</tt>.</t>
            </li>
            <li>
              <t>Otherwise:
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>If <tt>proof</tt> is an empty array, stop and fail verification.</t>
                </li>
                <li>
                  <t>Remove the first value of the <tt>proof</tt> array and set <tt>fr</tt> and <tt>sr</tt> to the removed value.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>For each value <tt>c</tt> in the <tt>proof</tt> array:
              </t>
              <ol spacing="normal" type="1"><li>
                  <t>If <tt>tn</tt> is <tt>0</tt>, then stop the iteration and fail the proof verification.</t>
                </li>
                <li>
                  <t>If <tt>LSB(sn)</tt> is set, or if <tt>sn</tt> is equal to <tt>tn</tt>, then:
                  </t>
                  <ol spacing="normal" type="1"><li>
                      <t>If <tt>fn &lt; sn</tt>, set <tt>fr</tt> to <tt>HASH(0x01 || c || fr)</tt>.</t>
                    </li>
                    <li>
                      <t>Set <tt>sr</tt> to <tt>HASH(0x01 || c || sr)</tt>.</t>
                    </li>
                    <li>
                      <t>Until <tt>LSB(sn)</tt> is set, right-shift <tt>fn</tt>, <tt>sn</tt>, and <tt>tn</tt> equally.</t>
                    </li>
                  </ol>
                </li>
                <li>
                  <t>Otherwise:
                  </t>
                  <ol spacing="normal" type="1"><li>
                      <t>Set <tt>sr</tt> to <tt>HASH(0x01 || sr || c)</tt>.</t>
                    </li>
                  </ol>
                </li>
                <li>
                  <t>Right-shift <tt>fn</tt>, <tt>sn</tt>, and <tt>tn</tt> once more.</t>
                </li>
              </ol>
            </li>
            <li>
              <t>Compare <tt>tn</tt> to <tt>0</tt>, <tt>fr</tt> to <tt>node_hash</tt>, and <tt>sr</tt> to <tt>root_hash</tt>. If any are not equal, fail the proof verification. If all are equal, accept the proof.</t>
            </li>
          </ol>
          <t><xref target="consistency-proof-verification-explain"/> explains this procedure in more detail.</t>
        </section>
      </section>
      <section anchor="arbitrary-intervals">
        <name>Arbitrary Intervals</name>
        <t>Not all <tt>[start, end)</tt> intervals of a Merkle Tree are valid subtrees. This section describes how, for any <tt>start &lt; end</tt>, to determine up to two subtrees that efficiently cover the interval. The subtrees are determined by the following procedure:</t>
        <ol spacing="normal" type="1"><li>
            <t>If <tt>end - start</tt> is one, return a single subtree, <tt>[start, end)</tt>.</t>
          </li>
          <li>
            <t>Otherwise, run the following to return a pair of subtrees:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Let <tt>last</tt> be <tt>end - 1</tt>, the last index in <tt>[start, end)</tt>.</t>
              </li>
              <li>
                <t>Let <tt>split</tt> be the bit index of the most significant bit where <tt>start</tt> and <tt>last</tt> differ. Bits are numbered from the least significant bit, starting at zero. <tt>split</tt> is the height at which <tt>start</tt> and <tt>last</tt>'s paths in the tree diverge.</t>
              </li>
              <li>
                <t>Let <tt>mid</tt> be <tt>last</tt> with the least significant <tt>split</tt> bits set to zero. <tt>mid</tt> is the leftmost leaf node in the above divergence point's right branch.</t>
              </li>
              <li>
                <t>Within the least significant <tt>split</tt> bits of <tt>left</tt>, let <tt>b</tt> be the bit index of the most significant bit with value zero, if any:      </t>
                <ol spacing="normal" type="1"><li>
                    <t>If there is such a bit, let <tt>left_split</tt> be <tt>b + 1</tt>.</t>
                  </li>
                  <li>
                    <t>Otherwise, let <tt>left_split</tt> be zero.</t>
                  </li>
                </ol>
                <t>
<tt>left_split</tt> is the height of the lowest common ancestor of the nodes in <tt>[start, mid)</tt>.</t>
              </li>
              <li>
                <t>Let <tt>left_start</tt> be <tt>start</tt> with the least significant <tt>left_split</tt> bits set to zero. <tt>left_start</tt> is the above lowest common ancestor's leftmost leaf node.</t>
              </li>
              <li>
                <t>Return the subtrees <tt>[left_start, mid)</tt> and <tt>[mid, end)</tt>.</t>
              </li>
            </ol>
          </li>
        </ol>
        <t>When the procedure returns a single subtree, the subtree is <tt>[start, start+1)</tt>. When it returns two subtrees, <tt>left</tt> and <tt>right</tt>, the subtrees satisfy the following properties:</t>
        <ul spacing="normal">
          <li>
            <t><tt>left.end = right.start</tt>. That is, the two subtrees cover adjacent intervals.</t>
          </li>
          <li>
            <t><tt>left.start &lt;= start</tt> and <tt>end = right.end</tt>. That is, the two subtrees together cover the entire target interval, possibly with some extra entries before <tt>start</tt> left, but not after <tt>end</tt>.</t>
          </li>
          <li>
            <t><tt>left.end - left.start &lt; 2 * (end - start)</tt> and <tt>right.end - right.start &lt;= end - start</tt>. That is, the two subtrees efficiently cover the interval.</t>
          </li>
          <li>
            <t><tt>left</tt> is full, while <tt>right</tt> may be partial.</t>
          </li>
        </ul>
        <t>The following Python code implements this procedure:</t>
        <sourcecode type="python"><![CDATA[
def find_subtrees(start, end):
    """ Returns a list of one or two subtrees that efficiently
    cover [start, end). """
    assert start < end
    if end - start == 1:
        return [(start, end),]
    last = end - 1
    # Find where start and last's tree paths diverge. The two
    # subtrees will be on either side of the split.
    split = (start ^ last).bit_length() - 1
    mask = (1 << split) - 1
    mid = last & ~mask
    # Maximize the left endpoint. This is just before start's
    # path leaves the right edge of its new subtree.
    left_split = (~start & mask).bit_length()
    left_start = start & ~((1 << left_split) - 1)
    return [(left_start, mid), (mid, end)]
]]></sourcecode>
        <t><xref target="fig-subtree-pair-example"/> shows the subtrees which cover <tt>[5, 13)</tt> in a Merkle Tree of 13 elements. The two subtrees selected are <tt>[4, 8)</tt> and <tt>[8, 13)</tt>. Note that the subtrees cover a slightly larger interval than <tt>[5, 13)</tt>.</t>
        <!-- Ideally we'd use the Unicode box-drawing characters for the text form, but aasvg doesn't support them: https://github.com/martinthomson/aasvg/issues/9 -->

<figure anchor="fig-subtree-pair-example">
          <name>An example selection of subtrees to cover an interval</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="456" viewBox="0 0 456 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                <path d="M 8,288 L 8,320" fill="none" stroke="black"/>
                <path d="M 24,288 L 24,320" fill="none" stroke="black"/>
                <path d="M 32,160 L 32,192" fill="none" stroke="black"/>
                <path d="M 40,288 L 40,320" fill="none" stroke="black"/>
                <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                <path d="M 56,288 L 56,320" fill="none" stroke="black"/>
                <path d="M 64,96 L 64,128" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                <path d="M 72,288 L 72,320" fill="none" stroke="black"/>
                <path d="M 88,288 L 88,320" fill="none" stroke="black"/>
                <path d="M 104,160 L 104,192" fill="none" stroke="black"/>
                <path d="M 104,288 L 104,320" fill="none" stroke="black"/>
                <path d="M 120,224 L 120,256" fill="none" stroke="black"/>
                <path d="M 120,288 L 120,320" fill="none" stroke="black"/>
                <path d="M 136,32 L 136,64" fill="none" stroke="black"/>
                <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                <path d="M 136,288 L 136,320" fill="none" stroke="black"/>
                <path d="M 152,288 L 152,320" fill="none" stroke="black"/>
                <path d="M 160,160 L 160,192" fill="none" stroke="black"/>
                <path d="M 168,288 L 168,320" fill="none" stroke="black"/>
                <path d="M 184,224 L 184,256" fill="none" stroke="black"/>
                <path d="M 184,288 L 184,320" fill="none" stroke="black"/>
                <path d="M 200,96 L 200,128" fill="none" stroke="black"/>
                <path d="M 200,224 L 200,256" fill="none" stroke="black"/>
                <path d="M 200,288 L 200,320" fill="none" stroke="black"/>
                <path d="M 216,288 L 216,320" fill="none" stroke="black"/>
                <path d="M 232,160 L 232,192" fill="none" stroke="black"/>
                <path d="M 232,288 L 232,320" fill="none" stroke="black"/>
                <path d="M 248,224 L 248,256" fill="none" stroke="black"/>
                <path d="M 248,288 L 248,320" fill="none" stroke="black"/>
                <path d="M 264,224 L 264,256" fill="none" stroke="black"/>
                <path d="M 264,288 L 264,320" fill="none" stroke="black"/>
                <path d="M 280,288 L 280,320" fill="none" stroke="black"/>
                <path d="M 288,160 L 288,192" fill="none" stroke="black"/>
                <path d="M 296,288 L 296,320" fill="none" stroke="black"/>
                <path d="M 312,96 L 312,128" fill="none" stroke="black"/>
                <path d="M 312,288 L 312,320" fill="none" stroke="black"/>
                <path d="M 320,224 L 320,256" fill="none" stroke="black"/>
                <path d="M 328,288 L 328,320" fill="none" stroke="black"/>
                <path d="M 336,224 L 336,256" fill="none" stroke="black"/>
                <path d="M 352,288 L 352,320" fill="none" stroke="black"/>
                <path d="M 368,160 L 368,192" fill="none" stroke="black"/>
                <path d="M 368,288 L 368,320" fill="none" stroke="black"/>
                <path d="M 376,32 L 376,64" fill="none" stroke="black"/>
                <path d="M 392,288 L 392,320" fill="none" stroke="black"/>
                <path d="M 400,224 L 400,256" fill="none" stroke="black"/>
                <path d="M 408,288 L 408,320" fill="none" stroke="black"/>
                <path d="M 424,144 L 424,272" fill="none" stroke="black"/>
                <path d="M 432,288 L 432,320" fill="none" stroke="black"/>
                <path d="M 448,96 L 448,128" fill="none" stroke="black"/>
                <path d="M 136,32 L 376,32" fill="none" stroke="black"/>
                <path d="M 136,64 L 376,64" fill="none" stroke="black"/>
                <path d="M 64,96 L 200,96" fill="none" stroke="black"/>
                <path d="M 312,94 L 448,94" fill="none" stroke="black"/>
                <path d="M 312,98 L 448,98" fill="none" stroke="black"/>
                <path d="M 64,128 L 200,128" fill="none" stroke="black"/>
                <path d="M 312,126 L 448,126" fill="none" stroke="black"/>
                <path d="M 312,130 L 448,130" fill="none" stroke="black"/>
                <path d="M 32,160 L 104,160" fill="none" stroke="black"/>
                <path d="M 160,158 L 232,158" fill="none" stroke="black"/>
                <path d="M 160,162 L 232,162" fill="none" stroke="black"/>
                <path d="M 288,160 L 368,160" fill="none" stroke="black"/>
                <path d="M 32,192 L 104,192" fill="none" stroke="black"/>
                <path d="M 160,190 L 232,190" fill="none" stroke="black"/>
                <path d="M 160,194 L 232,194" fill="none" stroke="black"/>
                <path d="M 288,192 L 368,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 56,224" fill="none" stroke="black"/>
                <path d="M 72,224 L 120,224" fill="none" stroke="black"/>
                <path d="M 136,224 L 184,224" fill="none" stroke="black"/>
                <path d="M 200,224 L 248,224" fill="none" stroke="black"/>
                <path d="M 264,224 L 320,224" fill="none" stroke="black"/>
                <path d="M 336,224 L 400,224" fill="none" stroke="black"/>
                <path d="M 8,256 L 56,256" fill="none" stroke="black"/>
                <path d="M 72,256 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,256 L 184,256" fill="none" stroke="black"/>
                <path d="M 200,256 L 248,256" fill="none" stroke="black"/>
                <path d="M 264,256 L 320,256" fill="none" stroke="black"/>
                <path d="M 336,256 L 400,256" fill="none" stroke="black"/>
                <path d="M 8,288 L 24,288" fill="none" stroke="black"/>
                <path d="M 40,288 L 56,288" fill="none" stroke="black"/>
                <path d="M 72,288 L 88,288" fill="none" stroke="black"/>
                <path d="M 104,288 L 120,288" fill="none" stroke="black"/>
                <path d="M 136,288 L 152,288" fill="none" stroke="black"/>
                <path d="M 168,286 L 184,286" fill="none" stroke="black"/>
                <path d="M 168,290 L 184,290" fill="none" stroke="black"/>
                <path d="M 200,286 L 216,286" fill="none" stroke="black"/>
                <path d="M 200,290 L 216,290" fill="none" stroke="black"/>
                <path d="M 232,286 L 248,286" fill="none" stroke="black"/>
                <path d="M 232,290 L 248,290" fill="none" stroke="black"/>
                <path d="M 264,286 L 280,286" fill="none" stroke="black"/>
                <path d="M 264,290 L 280,290" fill="none" stroke="black"/>
                <path d="M 296,286 L 312,286" fill="none" stroke="black"/>
                <path d="M 296,290 L 312,290" fill="none" stroke="black"/>
                <path d="M 328,286 L 352,286" fill="none" stroke="black"/>
                <path d="M 328,290 L 352,290" fill="none" stroke="black"/>
                <path d="M 368,286 L 392,286" fill="none" stroke="black"/>
                <path d="M 368,290 L 392,290" fill="none" stroke="black"/>
                <path d="M 408,286 L 432,286" fill="none" stroke="black"/>
                <path d="M 408,290 L 432,290" fill="none" stroke="black"/>
                <path d="M 8,320 L 24,320" fill="none" stroke="black"/>
                <path d="M 40,320 L 56,320" fill="none" stroke="black"/>
                <path d="M 72,320 L 88,320" fill="none" stroke="black"/>
                <path d="M 104,320 L 120,320" fill="none" stroke="black"/>
                <path d="M 136,320 L 152,320" fill="none" stroke="black"/>
                <path d="M 168,318 L 184,318" fill="none" stroke="black"/>
                <path d="M 168,322 L 184,322" fill="none" stroke="black"/>
                <path d="M 200,318 L 216,318" fill="none" stroke="black"/>
                <path d="M 200,322 L 216,322" fill="none" stroke="black"/>
                <path d="M 232,318 L 248,318" fill="none" stroke="black"/>
                <path d="M 232,322 L 248,322" fill="none" stroke="black"/>
                <path d="M 264,318 L 280,318" fill="none" stroke="black"/>
                <path d="M 264,322 L 280,322" fill="none" stroke="black"/>
                <path d="M 296,318 L 312,318" fill="none" stroke="black"/>
                <path d="M 296,322 L 312,322" fill="none" stroke="black"/>
                <path d="M 328,318 L 352,318" fill="none" stroke="black"/>
                <path d="M 328,322 L 352,322" fill="none" stroke="black"/>
                <path d="M 368,318 L 392,318" fill="none" stroke="black"/>
                <path d="M 368,322 L 392,322" fill="none" stroke="black"/>
                <path d="M 408,318 L 432,318" fill="none" stroke="black"/>
                <path d="M 408,322 L 432,322" fill="none" stroke="black"/>
                <g class="text">
                  <text x="248" y="52">[0,</text>
                  <text x="280" y="52">13)</text>
                  <text x="160" y="84">/</text>
                  <text x="352" y="84">\</text>
                  <text x="120" y="116">[0,</text>
                  <text x="148" y="116">8)</text>
                  <text x="368" y="116">[8,</text>
                  <text x="400" y="116">13)</text>
                  <text x="72" y="148">/</text>
                  <text x="192" y="148">\</text>
                  <text x="336" y="148">/</text>
                  <text x="56" y="180">[0,</text>
                  <text x="84" y="180">4)</text>
                  <text x="184" y="180">[4,</text>
                  <text x="212" y="180">8)</text>
                  <text x="312" y="180">[8,</text>
                  <text x="344" y="180">12)</text>
                  <text x="40" y="212">/</text>
                  <text x="96" y="212">\</text>
                  <text x="168" y="212">/</text>
                  <text x="224" y="212">\</text>
                  <text x="304" y="212">/</text>
                  <text x="360" y="212">\</text>
                  <text x="32" y="244">[0,2)</text>
                  <text x="96" y="244">[2,4)</text>
                  <text x="160" y="244">[4,6)</text>
                  <text x="224" y="244">[6,8)</text>
                  <text x="292" y="244">[8,10)</text>
                  <text x="368" y="244">[10,12)</text>
                  <text x="24" y="276">/</text>
                  <text x="40" y="276">\</text>
                  <text x="88" y="276">/</text>
                  <text x="104" y="276">\</text>
                  <text x="152" y="276">/</text>
                  <text x="168" y="276">\</text>
                  <text x="216" y="276">/</text>
                  <text x="232" y="276">\</text>
                  <text x="280" y="276">/</text>
                  <text x="296" y="276">\</text>
                  <text x="352" y="276">/</text>
                  <text x="368" y="276">\</text>
                  <text x="16" y="308">0</text>
                  <text x="48" y="308">1</text>
                  <text x="80" y="308">2</text>
                  <text x="112" y="308">3</text>
                  <text x="144" y="308">4</text>
                  <text x="176" y="308">5</text>
                  <text x="208" y="308">6</text>
                  <text x="240" y="308">7</text>
                  <text x="272" y="308">8</text>
                  <text x="304" y="308">9</text>
                  <text x="340" y="308">10</text>
                  <text x="380" y="308">11</text>
                  <text x="420" y="308">12</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                +-----------------------------+
                |            [0, 13)          |
                +-----------------------------+
                   /                       \
       +----------------+             +================+
       |     [0, 8)     |             |     [8, 13)    |
       +----------------+             +================+
        /              \                 /          |
   +--------+      +========+      +---------+      |
   | [0, 4) |      | [4, 8) |      | [8, 12) |      |
   +--------+      +========+      +---------+      |
    /      \        /      \         /      \       |
+-----+ +-----+ +-----+ +-----+ +------+ +-------+  |
|[0,2)| |[2,4)| |[4,6)| |[6,8)| |[8,10)| |[10,12)|  |
+-----+ +-----+ +-----+ +-----+ +------+ +-------+  |
  / \     / \     / \     / \     / \      / \      |
+-+ +-+ +-+ +-+ +-+ +=+ +=+ +=+ +=+ +=+ +==+ +==+ +==+
|0| |1| |2| |3| |4| |5| |6| |7| |8| |9| |10| |11| |12|
+-+ +-+ +-+ +-+ +-+ +=+ +=+ +=+ +=+ +=+ +==+ +==+ +==+
]]></artwork>
          </artset>
        </figure>
        <t>Two subtrees are needed because a single subtree may not be able to efficiently cover an interval. <xref target="fig-subtree-counterexample"/> shows the smallest subtree that contains <tt>[7, 9)</tt> in a 9-element tree. The smallest single subtree that contains the interval is <tt>[0, 9)</tt> but this is the entire tree. Using two subtrees, the interval can be described by <tt>[7, 8)</tt> and <tt>[8, 9)</tt>.</t>
        <figure anchor="fig-subtree-counterexample">
          <name>An example showing an inefficient choice of a single subtree</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="304" viewBox="0 0 304 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                <path d="M 8,288 L 8,320" fill="none" stroke="black"/>
                <path d="M 24,288 L 24,320" fill="none" stroke="black"/>
                <path d="M 32,160 L 32,192" fill="none" stroke="black"/>
                <path d="M 40,288 L 40,320" fill="none" stroke="black"/>
                <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                <path d="M 56,288 L 56,320" fill="none" stroke="black"/>
                <path d="M 64,96 L 64,128" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                <path d="M 72,288 L 72,320" fill="none" stroke="black"/>
                <path d="M 88,288 L 88,320" fill="none" stroke="black"/>
                <path d="M 104,160 L 104,192" fill="none" stroke="black"/>
                <path d="M 104,288 L 104,320" fill="none" stroke="black"/>
                <path d="M 120,224 L 120,256" fill="none" stroke="black"/>
                <path d="M 120,288 L 120,320" fill="none" stroke="black"/>
                <path d="M 136,32 L 136,64" fill="none" stroke="black"/>
                <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                <path d="M 136,288 L 136,320" fill="none" stroke="black"/>
                <path d="M 152,288 L 152,320" fill="none" stroke="black"/>
                <path d="M 160,160 L 160,192" fill="none" stroke="black"/>
                <path d="M 168,288 L 168,320" fill="none" stroke="black"/>
                <path d="M 184,224 L 184,256" fill="none" stroke="black"/>
                <path d="M 184,288 L 184,320" fill="none" stroke="black"/>
                <path d="M 200,96 L 200,128" fill="none" stroke="black"/>
                <path d="M 200,224 L 200,256" fill="none" stroke="black"/>
                <path d="M 200,288 L 200,320" fill="none" stroke="black"/>
                <path d="M 216,288 L 216,320" fill="none" stroke="black"/>
                <path d="M 232,160 L 232,192" fill="none" stroke="black"/>
                <path d="M 232,288 L 232,320" fill="none" stroke="black"/>
                <path d="M 248,224 L 248,256" fill="none" stroke="black"/>
                <path d="M 248,288 L 248,320" fill="none" stroke="black"/>
                <path d="M 264,288 L 264,320" fill="none" stroke="black"/>
                <path d="M 272,80 L 272,272" fill="none" stroke="black"/>
                <path d="M 280,288 L 280,320" fill="none" stroke="black"/>
                <path d="M 296,32 L 296,64" fill="none" stroke="black"/>
                <path d="M 136,30 L 296,30" fill="none" stroke="black"/>
                <path d="M 136,34 L 296,34" fill="none" stroke="black"/>
                <path d="M 136,62 L 296,62" fill="none" stroke="black"/>
                <path d="M 136,66 L 296,66" fill="none" stroke="black"/>
                <path d="M 64,96 L 200,96" fill="none" stroke="black"/>
                <path d="M 64,128 L 200,128" fill="none" stroke="black"/>
                <path d="M 32,160 L 104,160" fill="none" stroke="black"/>
                <path d="M 160,160 L 232,160" fill="none" stroke="black"/>
                <path d="M 32,192 L 104,192" fill="none" stroke="black"/>
                <path d="M 160,192 L 232,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 56,224" fill="none" stroke="black"/>
                <path d="M 72,224 L 120,224" fill="none" stroke="black"/>
                <path d="M 136,224 L 184,224" fill="none" stroke="black"/>
                <path d="M 200,224 L 248,224" fill="none" stroke="black"/>
                <path d="M 8,256 L 56,256" fill="none" stroke="black"/>
                <path d="M 72,256 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,256 L 184,256" fill="none" stroke="black"/>
                <path d="M 200,256 L 248,256" fill="none" stroke="black"/>
                <path d="M 8,288 L 24,288" fill="none" stroke="black"/>
                <path d="M 40,288 L 56,288" fill="none" stroke="black"/>
                <path d="M 72,288 L 88,288" fill="none" stroke="black"/>
                <path d="M 104,288 L 120,288" fill="none" stroke="black"/>
                <path d="M 136,288 L 152,288" fill="none" stroke="black"/>
                <path d="M 168,288 L 184,288" fill="none" stroke="black"/>
                <path d="M 200,288 L 216,288" fill="none" stroke="black"/>
                <path d="M 232,286 L 248,286" fill="none" stroke="black"/>
                <path d="M 232,290 L 248,290" fill="none" stroke="black"/>
                <path d="M 264,286 L 280,286" fill="none" stroke="black"/>
                <path d="M 264,290 L 280,290" fill="none" stroke="black"/>
                <path d="M 8,320 L 24,320" fill="none" stroke="black"/>
                <path d="M 40,320 L 56,320" fill="none" stroke="black"/>
                <path d="M 72,320 L 88,320" fill="none" stroke="black"/>
                <path d="M 104,320 L 120,320" fill="none" stroke="black"/>
                <path d="M 136,320 L 152,320" fill="none" stroke="black"/>
                <path d="M 168,320 L 184,320" fill="none" stroke="black"/>
                <path d="M 200,320 L 216,320" fill="none" stroke="black"/>
                <path d="M 232,318 L 248,318" fill="none" stroke="black"/>
                <path d="M 232,322 L 248,322" fill="none" stroke="black"/>
                <path d="M 264,318 L 280,318" fill="none" stroke="black"/>
                <path d="M 264,322 L 280,322" fill="none" stroke="black"/>
                <g class="text">
                  <text x="200" y="52">[0,</text>
                  <text x="228" y="52">9)</text>
                  <text x="160" y="84">/</text>
                  <text x="120" y="116">[0,</text>
                  <text x="148" y="116">8)</text>
                  <text x="72" y="148">/</text>
                  <text x="192" y="148">\</text>
                  <text x="56" y="180">[0,</text>
                  <text x="84" y="180">4)</text>
                  <text x="184" y="180">[4,</text>
                  <text x="212" y="180">8)</text>
                  <text x="40" y="212">/</text>
                  <text x="96" y="212">\</text>
                  <text x="168" y="212">/</text>
                  <text x="224" y="212">\</text>
                  <text x="32" y="244">[0,2)</text>
                  <text x="96" y="244">[2,4)</text>
                  <text x="160" y="244">[4,6)</text>
                  <text x="224" y="244">[6,8)</text>
                  <text x="24" y="276">/</text>
                  <text x="40" y="276">\</text>
                  <text x="88" y="276">/</text>
                  <text x="104" y="276">\</text>
                  <text x="152" y="276">/</text>
                  <text x="168" y="276">\</text>
                  <text x="216" y="276">/</text>
                  <text x="232" y="276">\</text>
                  <text x="16" y="308">0</text>
                  <text x="48" y="308">1</text>
                  <text x="80" y="308">2</text>
                  <text x="112" y="308">3</text>
                  <text x="144" y="308">4</text>
                  <text x="176" y="308">4</text>
                  <text x="208" y="308">6</text>
                  <text x="240" y="308">7</text>
                  <text x="272" y="308">8</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                +===================+
                |      [0, 9)       |
                +===================+
                   /             |
       +----------------+        |
       |     [0, 8)     |        |
       +----------------+        |
        /              \         |
   +--------+      +--------+    |
   | [0, 4) |      | [4, 8) |    |
   +--------+      +--------+    |
    /      \        /      \     |
+-----+ +-----+ +-----+ +-----+  |
|[0,2)| |[2,4)| |[4,6)| |[6,8)|  |
+-----+ +-----+ +-----+ +-----+  |
  / \     / \     / \     / \    |
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +=+ +=+
|0| |1| |2| |3| |4| |4| |6| |7| |8|
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +=+ +=+
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="issuance-logs">
      <name>Issuance Logs</name>
      <t>This section defines the structure of an <em>issuance log</em>.</t>
      <t>An issuance log describes an append-only sequence of <em>entries</em> (<xref target="log-entries"/>), identified consecutively by an index value, starting from zero. Each entry is an assertion that the CA has certified. The entries in the issuance log are represented as a Merkle Tree, described in <xref section="2.1" sectionFormat="of" target="RFC9162"/>.</t>
      <t>Unlike <xref target="RFC6962"/> and <xref target="RFC9162"/>, an issuance log does not have a public submission interface. The log only contains entries which the log operator, i.e. the CA, chose to add. As entries are added, the Merkle Tree is updated to be computed over the new sequence.</t>
      <t>A snapshot of the log is known as a <em>checkpoint</em>. A checkpoint is identified by its <em>tree size</em>, that is the number of elements comitted to the log at the time. Its contents can be described by the Merkle Tree Hash (<xref section="2.1.1" sectionFormat="of" target="RFC9162"/>) of entries zero through <tt>tree_size - 1</tt>.</t>
      <t>Cosigners (<xref target="cosigners"/>) sign assertions about the state of the issuance log. A Merkle Tree CA operates a combination of an issuance log and one or more CA cosigners (<xref target="certification-authority-cosigners"/>) that authenticate the log state and certifies the contents. External cosigners may also be deployed to assert correct log operation or provide other services to relying parties (<xref target="trusted-cosigners"/>).</t>
      <section anchor="log-parameters">
        <name>Log Parameters</name>
        <t>An issuance log has the following parameters:</t>
        <ul spacing="normal">
          <li>
            <t>A log ID, which uniquely identifies the log. See <xref target="log-ids"/>.</t>
          </li>
          <li>
            <t>A collision-resistant cryptographic hash function. SHA-256 <xref target="SHS"/> is RECOMMENDED.</t>
          </li>
          <li>
            <t>A minimum index, which is the index of the first log entry which is available. See <xref target="log-pruning"/>. This value changes over the lifetime of the log.</t>
          </li>
        </ul>
        <t>Throughout this document, the hash algorithm in use is referred to as HASH, and the size of its output in bytes is referred to as HASH_SIZE.</t>
      </section>
      <section anchor="log-ids">
        <name>Log IDs</name>
        <t>Each issuance log is identified by a <em>log ID</em>, which is a trust anchor ID <xref target="I-D.ietf-tls-trust-anchor-ids"/>.</t>
        <t>An issuance log's log ID determines an X.509 distinguished name (<xref section="4.1.2.4" sectionFormat="of" target="RFC5280"/>). The distinguished name has a single relative distinguished name, which has a single attribute. The attribute has type <tt>id-rdna-trustAnchorID</tt>, defined below:</t>
        <sourcecode type="asn.1"><![CDATA[
id-rdna-trustAnchorID OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) rdna(25) TBD}
]]></sourcecode>
        <t>The attribute's value is a RELATIVE-OID containing the trust anchor ID's ASN.1 representation. For example, the distinguished name for a log named <tt>32473.1</tt> would be represented in syntax of <xref target="RFC4514"/> as:</t>
        <artwork><![CDATA[
1.3.6.1.5.5.7.25.TBD=#0d0481fd5901
]]></artwork>
        <t>For initial experimentation, early implementations of this design will:</t>
        <ol spacing="normal" type="1"><li>
            <t>Use UTF8String to represent the attribute's value rather than RELATIVE-OID. The UTF8String contains trust anchor ID's ASCII representation, e.g. <tt>324731.1</tt>.</t>
          </li>
          <li>
            <t>Use the OID 1.3.6.1.4.1.44363.47.1 instead of <tt>id-rdna-trustAnchorID</tt>.</t>
          </li>
        </ol>
        <t>For example, the distinguished name for a log named <tt>32473.1</tt> would be represented in syntax of <xref target="RFC4514"/> as:</t>
        <artwork><![CDATA[
1.3.6.1.4.1.44363.47.1=#0c0733323437332e31
]]></artwork>
      </section>
      <section anchor="log-entries">
        <name>Log Entries</name>
        <t>Each entry in the log is a MerkleTreeCertEntry, defined with the TLS presentation syntax below. A MerkleTreeCertEntry describes certificate information that the CA has validated and certified.</t>
        <sourcecode type="tls-presentation"><![CDATA[
struct {} Empty;

enum {
    null_entry(0), tbs_cert_entry(1), (2^16-1)
} MerkleTreeCertEntryType;

struct {
    MerkleTreeCertEntryType type;
    select (type) {
       case null_entry: Empty;
       case tbs_cert_entry: opaque tbs_cert_entry_data[N];
       /* May be extended with future types. */
    }
} MerkleTreeCertEntry;
]]></sourcecode>
        <t>When <tt>type</tt> is <tt>tbs_cert_entry</tt>, <tt>N</tt> is the number of bytes needed to consume the rest of the input. A MerkleTreeCertEntry is expected to be decoded in contexts where the total length of the entry is known.</t>
        <t><tt>tbs_cert_entry_data</tt> contains the contents octets (i.e. excluding the initial identifier and length octets) of the DER <xref target="X.690"/> encoding of a TBSCertificateLogEntry, defined below. Equivalently, <tt>tbs_cert_entry_data</tt> contains the DER encodings of each field of the TBSCertificateLogEntry, concatenated. This construction allows a single-pass implementation in <xref target="verifying-certificate-signatures"/>.</t>
        <sourcecode type="asn.1"><![CDATA[
TBSCertificateLogEntry  ::=  SEQUENCE  {
      version             [0]  EXPLICIT Version DEFAULT v1,
      issuer                   Name,
      validity                 Validity,
      subject                  Name,
      subjectPublicKeyInfoHash OCTET STRING,
      issuerUniqueID      [1]  IMPLICIT UniqueIdentifier OPTIONAL,
      subjectUniqueID     [2]  IMPLICIT UniqueIdentifier OPTIONAL,
      extensions          [3]  EXPLICIT Extensions{{CertExtensions}} OPTIONAL }
]]></sourcecode>
        <t>The <tt>version</tt>, <tt>issuer</tt>, <tt>validity</tt>, <tt>subject</tt>, <tt>issuerUniqueID</tt>, <tt>subjectUniqueID</tt>, and <tt>extensions</tt> fields have the corresponding semantics as in <xref section="4.1.2" sectionFormat="of" target="RFC5280"/>, with the exception of <tt>subjectPublicKeyInfoHash</tt>. <tt>subjectPublicKeyInfoHash</tt> contains the hash of subject's public key as a SubjectPublicKeyInfo (<xref section="4.1.2.7" sectionFormat="of" target="RFC5280"/>). The hash uses the log's hash function (<xref target="log-parameters"/>) and is computed over the SubjectPublicKeyInfo's DER <xref target="X.690"/> encoding. The <tt>issuer</tt> field MUST be the issuance log's log ID as an X.509 distinguished name, as described in <xref target="log-ids"/>.</t>
        <t>When <tt>type</tt> is <tt>null_entry</tt>, the entry does not represent any information. The entry at index zero of every issuance log MUST be of type <tt>null_entry</tt>. Other entries MUST NOT use <tt>null_entry</tt>. <tt>null_entry</tt> exists to avoid zero serial numbers in the certificate format (<xref target="certificate-format"/>).</t>
        <t>MerkleTreeCertEntry is an extensible structure. Future documents may define new values for MerkleTreeCertEntryType, with corresponding semantics. See <xref target="certification-authority-cosigners"/> and <xref target="new-log-entry-types"/> for additional discussion.</t>
      </section>
      <section anchor="cosigners">
        <name>Cosigners</name>
        <t>This section defines a log <em>cosigner</em>. A cosigner follows some append-only view of the log and signs subtrees (<xref target="subtrees"/>) consistent with that view. The signatures generated by a cosigner are known as <em>cosignatures</em>. All subtrees signed by a cosigner MUST be consistent with each other. The cosigner may be external to the log, in which case it might ensure consistency by checking consistency proofs. The cosigner may be operated together with the log, in which case it can trust its log state.</t>
        <t>A cosignature MAY implicitly make additional statements about a subtree, determined by the cosigner's role. This document defines one concrete cosigner role, a CA cosigner (<xref target="certification-authority-cosigners"/>), to authenticate the log and certify entries. Other documents and specific deployments may define other cosigner roles, to perform different functions in a PKI. For example, <xref target="TLOG-WITNESS"/> defines a cosigner that only checks the log is append-only, and <xref target="TLOG-MIRROR"/> defines a cosigner that mirrors a log.</t>
        <t>Each cosigner has a public key and a <em>cosigner ID</em>, which uniquely identifies the cosigner. The cosigner ID is a trust anchor ID <xref target="I-D.ietf-tls-trust-anchor-ids"/>. By identifying the cosigner, the cosigner ID specifies both the public key and the additional statements made by the cosigner's signatures. If a single operator performs multiple cosigner roles in an ecosystem, each role MUST use a distinct cosigner ID and SHOULD use a distinct key.</t>
        <t>A single cosigner, with a single cosigner ID and public key, MAY generate cosignatures for multiple logs. In this case, signed subtrees only need to be consistent with others for the same log.</t>
        <section anchor="signature-format">
          <name>Signature Format</name>
          <t>A cosigner computes a cosignature for a subtree in some log by signing a MTCSubtreeSignatureInput, defined below using the TLS presentation language (<xref section="3" sectionFormat="of" target="RFC8446"/>):</t>
          <sourcecode type="tls-presentation"><![CDATA[
opaque HashValue[HASH_SIZE];

/* From Section 4.1 of draft-ietf-tls-trust-anchor-ids */
opaque TrustAnchorID<1..2^8-1>;

struct {
    TrustAnchorID log_id;
    uint64 start;
    uint64 end;
    HashValue hash;
} MTCSubtree;

struct {
    uint8 label[16] = "mtc-subtree/v1\n\0";
    TrustAnchorID cosigner_id;
    MTCSubtree subtree;
} MTCSubtreeSignatureInput;
]]></sourcecode>
          <t><tt>log_id</tt> MUST be the issuance log's ID (<xref target="log-ids"/>), in its binary representation (<xref section="3" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>). <tt>start</tt> and <tt>end</tt> MUST define a valid subtree of the log, and <tt>hash</tt> MUST be the subtree's hash value in the cosigner's view of the log. The <tt>label</tt> is a fixed prefix for domain separation. Its value MUST be the string <tt>mtc-subtree/v1</tt>, followed by a newline (U+000A), followed by a zero byte (U+0000). <tt>cosigner_id</tt> MUST be the cosigner ID, in its binary representation.</t>
          <t>The resulting signature is known as a <em>subtree signature</em>. When <tt>start</tt> is zero, the resulting signature describes the checkpoint with tree size <tt>end</tt> and is also known as a <em>checkpoint signature</em>.</t>
          <t>For each supported log, a cosigner retains its checkpoint signature with the largest <tt>end</tt>. This is known as the cosigner's <em>current</em> checkpoint. If the cosigner's current checkpoint has tree size <tt>tree_size</tt>, it MUST NOT generate a signature for a subtree <tt>[start, end)</tt> if <tt>start &gt; 0</tt> and <tt>end &gt; tree_size</tt>. That is, a cosigner can only sign a non-checkpoint subtree if it is contained in its current checkpoint. In a correctly-operated cosigner, every signature made by the cosigner can be proven consistent with its current checkpoint with a subtree consistency proof (<xref target="subtree-consistency-proofs"/>). As a consequence, a cosigner that signs a subtree is held responsible for all the entries in the tree of size matching the subtree end, even if the corresponding checkpoint is erroneously unavailable.</t>
          <t>Before signing a subtree, the cosigner MUST ensure that <tt>hash</tt> is consistent with its log state. Different cosigner roles may obtain this assurance differently. For example, a cosigner may compute the hash from its saved log state (e.g. if it is the log operator or maintains a copy of the log) or by verifying a subtree consistency proof (<xref target="subtree-consistency-proofs"/>) from its current checkpoint. When a cosigner signs a subtree, it is held responsible <em>both</em> for the subtree being consistent with its other signatures, <em>and</em> for the cosigner-specific additional statements.</t>
          <t>Cosigners SHOULD publish their current checkpoint, along with the checkpoint signature.</t>
          <t>[[TODO: CT and tlog put timestamps in checkpoint signatures. Do we want them here? In CT and tlog, the timestamps are monotonically increasing as the log progresses, but we also sign subtrees. We can separate subtree and checkpoint signatures, with timestamps only in the latter, but it's unclear if there is any benefit to this.]]</t>
        </section>
        <section anchor="signature-algorithms">
          <name>Signature Algorithms</name>
          <t>The cosigner's public key specifies both the key material and the signature algorithm to use with the key material. In order to change key or signature parameters, a cosigner operator MUST deploy a new cosigner, with a new cosigner ID. Signature algorithms MUST fully specify the algorithm parameters, such as hash functions used. This document defines the following signature algorithms:</t>
          <ul spacing="normal">
            <li>
              <t>ECDSA with P-256 and SHA-256 <xref target="FIPS186-5"/></t>
            </li>
            <li>
              <t>ECDSA with P-384 and SHA-384 <xref target="FIPS186-5"/></t>
            </li>
            <li>
              <t>Ed25519 <xref target="RFC8032"/></t>
            </li>
            <li>
              <t>ML-DSA-44 <xref target="FIPS204"/></t>
            </li>
            <li>
              <t>ML-DSA-65 <xref target="FIPS204"/></t>
            </li>
            <li>
              <t>ML-DSA-87 <xref target="FIPS204"/></t>
            </li>
          </ul>
          <t>Other documents or deployments MAY define other signature schemes and formats. Log clients that accept cosignatures from some cosigner are assumed to be configured with all parameters necessary to verify that cosigner's signatures, including the signature algorithm and version of the signature format.</t>
        </section>
      </section>
      <section anchor="certification-authority-cosigners">
        <name>Certification Authority Cosigners</name>
        <t>A <em>CA cosigner</em> is a cosigner (<xref target="cosigners"/>) that certifies the contents of a log.</t>
        <t>When a CA cosigner signs a subtree, it makes the additional statement that it has certified each entry in the subtree. For example, a domain-validating CA states that it has performed domain validation for each entry, at some time consistent with the entry's validity dates. CAs are held responsible for every entry in every subtree they sign. Proving an entry is included (<xref target="subtree-inclusion-proofs"/>) in a CA-signed subtree is sufficient to prove the CA certified it.</t>
        <t>What it means to certify an entry depends on the entry type:</t>
        <ul spacing="normal">
          <li>
            <t>To certify an entry of type <tt>null_entry</tt> is a no-op. A CA MAY freely certify <tt>null_entry</tt> without being held responsible for any validation.</t>
          </li>
          <li>
            <t>To certify an entry of type <tt>tbs_cert_entry</tt> is to certify the TBSCertificateLogEntry, as defined in <xref target="log-entries"/>.</t>
          </li>
        </ul>
        <t>Entries are extensible. Future documents MAY define <tt>type</tt> values and what it means to certify them. A CA MUST NOT sign a subtree if it contains an entry with <tt>type</tt> that it does not recognize. Doing so would certify that the CA has validated the information in some not-yet-defined entry format. <xref target="new-log-entry-types"/> further discusses security implications of new formats.</t>
        <t>A CA operator MAY operate multiple CA cosigners that all certify the same log in parallel. This may be useful when, e.g., rotating CA keys. In this case, each CA instance MUST have a distinct name. The CA operator's ACME server can return all CA cosignatures together in a single certificate, with the application protocol selecting the cosignatures to use. <xref target="use-in-tls"/> describes how this is done in TLS <xref target="RFC8446"/>.</t>
        <t>If the CA operator additionally operates a traditional X.509 CA, that CA key MUST be distinct from any Merkle Tree CA cosigner keys.</t>
      </section>
      <section anchor="publishing-logs">
        <name>Publishing Logs</name>
        <t><em>[[NOTE: This section is written to avoid depending on a specific serving protocol. The current expectation is that a Web PKI deployment would derive from <xref target="TLOG-TILES"/>, to match the direction of Certificate Transparency and pick up improvements made there.</em></t>
        <t><em>For now, we avoid a normative reference on <xref target="TLOG-TILES"/> and also capture the fact that the certificate construction is independent of the choice of protocol. Similar to how the CT ecosystem is migrating to a tiled interface, were someone to improve on <xref target="TLOG-TILES"/>, a PKI could migrate to that new protocol without impacting certificate verification.</em></t>
        <t><em>That said, this is purely a starting point for describing the design. We expect the scope of this document, and other related documents to adapt as the work evolves across the IETF, C2SP, Certificate Transparency, and other communities.]]</em></t>
        <t>Issuance logs are intended to be publicly accessible in some form, to allow monitors to detect misissued certificates.</t>
        <t>The access method does not affect certificate interoperability, so this document does not prescribe a specific protocol. An individual issuance log MAY be published in any form, provided other parties in the PKI are able to consume it. Relying parties SHOULD define log serving requirements, including the allowed protocols and expected availability, as part of their policies on which CAs to support. See also <xref target="log-availability"/>.</t>
        <t>For example, a log ecosystem could use <xref target="TLOG-TILES"/> to serve logs. <xref target="TLOG-TILES"/> improves on <xref target="RFC6962"/> and <xref target="RFC9162"/> by exposing the log as a collection of cacheable, immutable "tiles". This works well with a variety of common HTTP <xref target="RFC9110"/> serving architectures. It also allows log clients to request arbitrary tree nodes, so log clients can fetch the structures described in <xref target="subtrees"/>.</t>
        <section anchor="log-pruning">
          <name>Log Pruning</name>
          <t>Over time, an issuance log's entries will expire and likely be replaced with certificate renewals. As this happens, the total size of the log grows, even if the unexpired subset remains fixed. To mitigate this, issuance logs MAY be <em>pruned</em>, as described in this section.</t>
          <t>Pruning makes some prefix of the log unavailable, without changing the tree structure. It may be used to reduce the serving cost of long-lived logs, where any entries have long expired. <xref target="log-availability"/> discusses policies on when pruning may be permitted. This section discusses how it is done and the impact on log structure.</t>
          <t>An issuance log is pruned by updating its <em>minimum index</em> parameter (<xref target="log-parameters"/>). The minimum index is the index of the first log entry that the log publishes. (See <xref target="publishing-logs"/>.) It MUST be less than or equal to the tree size of the log's current checkpoint, and also satisfy any availability policies set by relying parties who trust the CA.</t>
          <t>An entry is said to be <em>available</em> if its index is greater than or equal to the minimum index. A checkpoint is said to be available if its tree size is greater than the minimum index. A subtree <tt>[start, end)</tt> is said to be available if <tt>end</tt> is greater than the minimum index.</t>
          <t>Log protocols MUST serve enough information to allow a log client to efficiently obtain the following:</t>
          <ul spacing="normal">
            <li>
              <t>Signatures over the latest checkpoint by the CA's cosigners (<xref target="certification-authority-cosigners"/>)</t>
            </li>
            <li>
              <t>Any individual available log entry (<xref target="log-entries"/>)</t>
            </li>
            <li>
              <t>The hash value of any available checkpoint</t>
            </li>
            <li>
              <t>An inclusion proof (<xref section="2.1.3" sectionFormat="of" target="RFC9162"/>) for any available entry to any containing checkpoint</t>
            </li>
            <li>
              <t>A consistency proof (<xref section="2.1.4" sectionFormat="of" target="RFC9162"/>) between any two available checkpoints</t>
            </li>
            <li>
              <t>The hash value of any available subtree (<xref target="subtrees"/>)</t>
            </li>
            <li>
              <t>A subtree inclusion proof (<xref target="subtree-inclusion-proofs"/>) for any available entry in any containing subtree</t>
            </li>
            <li>
              <t>A subtree consistency proof (<xref target="subtree-consistency-proofs"/>) between any available subtree to any containing checkpoint</t>
            </li>
          </ul>
          <t>Meeting these requirements requires a log to retain some information about pruned entries. Given a node <tt>[start, end)</tt> in the Merkle Tree, if <tt>end</tt> is less than or equal to the minimum index, the node's children MAY be discarded in favor of the node's hash.</t>
          <t><xref target="fig-prune-tree"/> shows an example pruned tree with 13 elements, where the minimum index is 7. It shows the original tree, followed by the pruned tree. The pruned tree depicts the nodes that MUST be available or computable. Note that entry 6 MAY be discarded, only the hash of entry 6 must be available.</t>
          <figure anchor="fig-prune-tree">
            <name>An example showing the minimum nodes that must be available after pruning</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="672" width="456" viewBox="0 0 456 672" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                  <path d="M 8,288 L 8,320" fill="none" stroke="black"/>
                  <path d="M 24,288 L 24,320" fill="none" stroke="black"/>
                  <path d="M 32,160 L 32,192" fill="none" stroke="black"/>
                  <path d="M 32,496 L 32,528" fill="none" stroke="black"/>
                  <path d="M 40,288 L 40,320" fill="none" stroke="black"/>
                  <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                  <path d="M 56,288 L 56,320" fill="none" stroke="black"/>
                  <path d="M 64,96 L 64,128" fill="none" stroke="black"/>
                  <path d="M 64,432 L 64,464" fill="none" stroke="black"/>
                  <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                  <path d="M 72,288 L 72,320" fill="none" stroke="black"/>
                  <path d="M 88,288 L 88,320" fill="none" stroke="black"/>
                  <path d="M 104,160 L 104,192" fill="none" stroke="black"/>
                  <path d="M 104,288 L 104,320" fill="none" stroke="black"/>
                  <path d="M 104,496 L 104,528" fill="none" stroke="black"/>
                  <path d="M 120,224 L 120,256" fill="none" stroke="black"/>
                  <path d="M 120,288 L 120,320" fill="none" stroke="black"/>
                  <path d="M 136,32 L 136,64" fill="none" stroke="black"/>
                  <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                  <path d="M 136,288 L 136,320" fill="none" stroke="black"/>
                  <path d="M 136,368 L 136,400" fill="none" stroke="black"/>
                  <path d="M 136,560 L 136,592" fill="none" stroke="black"/>
                  <path d="M 152,288 L 152,320" fill="none" stroke="black"/>
                  <path d="M 160,160 L 160,192" fill="none" stroke="black"/>
                  <path d="M 160,496 L 160,528" fill="none" stroke="black"/>
                  <path d="M 168,288 L 168,320" fill="none" stroke="black"/>
                  <path d="M 184,224 L 184,256" fill="none" stroke="black"/>
                  <path d="M 184,288 L 184,320" fill="none" stroke="black"/>
                  <path d="M 184,560 L 184,592" fill="none" stroke="black"/>
                  <path d="M 200,96 L 200,128" fill="none" stroke="black"/>
                  <path d="M 200,224 L 200,256" fill="none" stroke="black"/>
                  <path d="M 200,288 L 200,320" fill="none" stroke="black"/>
                  <path d="M 200,432 L 200,464" fill="none" stroke="black"/>
                  <path d="M 200,560 L 200,592" fill="none" stroke="black"/>
                  <path d="M 200,624 L 200,656" fill="none" stroke="black"/>
                  <path d="M 216,288 L 216,320" fill="none" stroke="black"/>
                  <path d="M 216,624 L 216,656" fill="none" stroke="black"/>
                  <path d="M 232,160 L 232,192" fill="none" stroke="black"/>
                  <path d="M 232,288 L 232,320" fill="none" stroke="black"/>
                  <path d="M 232,496 L 232,528" fill="none" stroke="black"/>
                  <path d="M 232,624 L 232,656" fill="none" stroke="black"/>
                  <path d="M 248,224 L 248,256" fill="none" stroke="black"/>
                  <path d="M 248,288 L 248,320" fill="none" stroke="black"/>
                  <path d="M 248,560 L 248,592" fill="none" stroke="black"/>
                  <path d="M 248,624 L 248,656" fill="none" stroke="black"/>
                  <path d="M 264,224 L 264,256" fill="none" stroke="black"/>
                  <path d="M 264,288 L 264,320" fill="none" stroke="black"/>
                  <path d="M 264,560 L 264,592" fill="none" stroke="black"/>
                  <path d="M 264,624 L 264,656" fill="none" stroke="black"/>
                  <path d="M 280,288 L 280,320" fill="none" stroke="black"/>
                  <path d="M 280,624 L 280,656" fill="none" stroke="black"/>
                  <path d="M 288,160 L 288,192" fill="none" stroke="black"/>
                  <path d="M 288,496 L 288,528" fill="none" stroke="black"/>
                  <path d="M 296,288 L 296,320" fill="none" stroke="black"/>
                  <path d="M 296,624 L 296,656" fill="none" stroke="black"/>
                  <path d="M 312,96 L 312,128" fill="none" stroke="black"/>
                  <path d="M 312,288 L 312,320" fill="none" stroke="black"/>
                  <path d="M 312,432 L 312,464" fill="none" stroke="black"/>
                  <path d="M 312,624 L 312,656" fill="none" stroke="black"/>
                  <path d="M 320,224 L 320,256" fill="none" stroke="black"/>
                  <path d="M 320,560 L 320,592" fill="none" stroke="black"/>
                  <path d="M 328,288 L 328,320" fill="none" stroke="black"/>
                  <path d="M 328,624 L 328,656" fill="none" stroke="black"/>
                  <path d="M 336,224 L 336,256" fill="none" stroke="black"/>
                  <path d="M 336,560 L 336,592" fill="none" stroke="black"/>
                  <path d="M 352,288 L 352,320" fill="none" stroke="black"/>
                  <path d="M 352,624 L 352,656" fill="none" stroke="black"/>
                  <path d="M 368,160 L 368,192" fill="none" stroke="black"/>
                  <path d="M 368,288 L 368,320" fill="none" stroke="black"/>
                  <path d="M 368,496 L 368,528" fill="none" stroke="black"/>
                  <path d="M 368,624 L 368,656" fill="none" stroke="black"/>
                  <path d="M 376,32 L 376,64" fill="none" stroke="black"/>
                  <path d="M 376,368 L 376,400" fill="none" stroke="black"/>
                  <path d="M 392,288 L 392,320" fill="none" stroke="black"/>
                  <path d="M 392,624 L 392,656" fill="none" stroke="black"/>
                  <path d="M 400,224 L 400,256" fill="none" stroke="black"/>
                  <path d="M 400,560 L 400,592" fill="none" stroke="black"/>
                  <path d="M 408,288 L 408,320" fill="none" stroke="black"/>
                  <path d="M 408,624 L 408,656" fill="none" stroke="black"/>
                  <path d="M 424,136 L 424,272" fill="none" stroke="black"/>
                  <path d="M 424,472 L 424,608" fill="none" stroke="black"/>
                  <path d="M 432,288 L 432,320" fill="none" stroke="black"/>
                  <path d="M 432,624 L 432,656" fill="none" stroke="black"/>
                  <path d="M 448,96 L 448,128" fill="none" stroke="black"/>
                  <path d="M 448,432 L 448,464" fill="none" stroke="black"/>
                  <path d="M 136,32 L 376,32" fill="none" stroke="black"/>
                  <path d="M 136,64 L 376,64" fill="none" stroke="black"/>
                  <path d="M 64,96 L 200,96" fill="none" stroke="black"/>
                  <path d="M 312,96 L 448,96" fill="none" stroke="black"/>
                  <path d="M 64,128 L 200,128" fill="none" stroke="black"/>
                  <path d="M 312,128 L 448,128" fill="none" stroke="black"/>
                  <path d="M 32,160 L 104,160" fill="none" stroke="black"/>
                  <path d="M 160,160 L 232,160" fill="none" stroke="black"/>
                  <path d="M 288,160 L 368,160" fill="none" stroke="black"/>
                  <path d="M 32,192 L 104,192" fill="none" stroke="black"/>
                  <path d="M 160,192 L 232,192" fill="none" stroke="black"/>
                  <path d="M 288,192 L 368,192" fill="none" stroke="black"/>
                  <path d="M 8,224 L 56,224" fill="none" stroke="black"/>
                  <path d="M 72,224 L 120,224" fill="none" stroke="black"/>
                  <path d="M 136,224 L 184,224" fill="none" stroke="black"/>
                  <path d="M 200,224 L 248,224" fill="none" stroke="black"/>
                  <path d="M 264,224 L 320,224" fill="none" stroke="black"/>
                  <path d="M 336,224 L 400,224" fill="none" stroke="black"/>
                  <path d="M 8,256 L 56,256" fill="none" stroke="black"/>
                  <path d="M 72,256 L 120,256" fill="none" stroke="black"/>
                  <path d="M 136,256 L 184,256" fill="none" stroke="black"/>
                  <path d="M 200,256 L 248,256" fill="none" stroke="black"/>
                  <path d="M 264,256 L 320,256" fill="none" stroke="black"/>
                  <path d="M 336,256 L 400,256" fill="none" stroke="black"/>
                  <path d="M 8,286 L 24,286" fill="none" stroke="black"/>
                  <path d="M 8,290 L 24,290" fill="none" stroke="black"/>
                  <path d="M 40,286 L 56,286" fill="none" stroke="black"/>
                  <path d="M 40,290 L 56,290" fill="none" stroke="black"/>
                  <path d="M 72,286 L 88,286" fill="none" stroke="black"/>
                  <path d="M 72,290 L 88,290" fill="none" stroke="black"/>
                  <path d="M 104,286 L 120,286" fill="none" stroke="black"/>
                  <path d="M 104,290 L 120,290" fill="none" stroke="black"/>
                  <path d="M 136,286 L 152,286" fill="none" stroke="black"/>
                  <path d="M 136,290 L 152,290" fill="none" stroke="black"/>
                  <path d="M 168,286 L 184,286" fill="none" stroke="black"/>
                  <path d="M 168,290 L 184,290" fill="none" stroke="black"/>
                  <path d="M 200,286 L 216,286" fill="none" stroke="black"/>
                  <path d="M 200,290 L 216,290" fill="none" stroke="black"/>
                  <path d="M 232,286 L 248,286" fill="none" stroke="black"/>
                  <path d="M 232,290 L 248,290" fill="none" stroke="black"/>
                  <path d="M 264,286 L 280,286" fill="none" stroke="black"/>
                  <path d="M 264,290 L 280,290" fill="none" stroke="black"/>
                  <path d="M 296,286 L 312,286" fill="none" stroke="black"/>
                  <path d="M 296,290 L 312,290" fill="none" stroke="black"/>
                  <path d="M 328,286 L 352,286" fill="none" stroke="black"/>
                  <path d="M 328,290 L 352,290" fill="none" stroke="black"/>
                  <path d="M 368,286 L 392,286" fill="none" stroke="black"/>
                  <path d="M 368,290 L 392,290" fill="none" stroke="black"/>
                  <path d="M 408,286 L 432,286" fill="none" stroke="black"/>
                  <path d="M 408,290 L 432,290" fill="none" stroke="black"/>
                  <path d="M 8,318 L 24,318" fill="none" stroke="black"/>
                  <path d="M 8,322 L 24,322" fill="none" stroke="black"/>
                  <path d="M 40,318 L 56,318" fill="none" stroke="black"/>
                  <path d="M 40,322 L 56,322" fill="none" stroke="black"/>
                  <path d="M 72,318 L 88,318" fill="none" stroke="black"/>
                  <path d="M 72,322 L 88,322" fill="none" stroke="black"/>
                  <path d="M 104,318 L 120,318" fill="none" stroke="black"/>
                  <path d="M 104,322 L 120,322" fill="none" stroke="black"/>
                  <path d="M 136,318 L 152,318" fill="none" stroke="black"/>
                  <path d="M 136,322 L 152,322" fill="none" stroke="black"/>
                  <path d="M 168,318 L 184,318" fill="none" stroke="black"/>
                  <path d="M 168,322 L 184,322" fill="none" stroke="black"/>
                  <path d="M 200,318 L 216,318" fill="none" stroke="black"/>
                  <path d="M 200,322 L 216,322" fill="none" stroke="black"/>
                  <path d="M 232,318 L 248,318" fill="none" stroke="black"/>
                  <path d="M 232,322 L 248,322" fill="none" stroke="black"/>
                  <path d="M 264,318 L 280,318" fill="none" stroke="black"/>
                  <path d="M 264,322 L 280,322" fill="none" stroke="black"/>
                  <path d="M 296,318 L 312,318" fill="none" stroke="black"/>
                  <path d="M 296,322 L 312,322" fill="none" stroke="black"/>
                  <path d="M 328,318 L 352,318" fill="none" stroke="black"/>
                  <path d="M 328,322 L 352,322" fill="none" stroke="black"/>
                  <path d="M 368,318 L 392,318" fill="none" stroke="black"/>
                  <path d="M 368,322 L 392,322" fill="none" stroke="black"/>
                  <path d="M 408,318 L 432,318" fill="none" stroke="black"/>
                  <path d="M 408,322 L 432,322" fill="none" stroke="black"/>
                  <path d="M 136,368 L 376,368" fill="none" stroke="black"/>
                  <path d="M 136,400 L 376,400" fill="none" stroke="black"/>
                  <path d="M 64,432 L 200,432" fill="none" stroke="black"/>
                  <path d="M 312,432 L 448,432" fill="none" stroke="black"/>
                  <path d="M 64,464 L 200,464" fill="none" stroke="black"/>
                  <path d="M 312,464 L 448,464" fill="none" stroke="black"/>
                  <path d="M 32,496 L 104,496" fill="none" stroke="black"/>
                  <path d="M 160,496 L 232,496" fill="none" stroke="black"/>
                  <path d="M 288,496 L 368,496" fill="none" stroke="black"/>
                  <path d="M 32,528 L 104,528" fill="none" stroke="black"/>
                  <path d="M 160,528 L 232,528" fill="none" stroke="black"/>
                  <path d="M 288,528 L 368,528" fill="none" stroke="black"/>
                  <path d="M 136,560 L 184,560" fill="none" stroke="black"/>
                  <path d="M 200,560 L 248,560" fill="none" stroke="black"/>
                  <path d="M 264,560 L 320,560" fill="none" stroke="black"/>
                  <path d="M 336,560 L 400,560" fill="none" stroke="black"/>
                  <path d="M 136,592 L 184,592" fill="none" stroke="black"/>
                  <path d="M 200,592 L 248,592" fill="none" stroke="black"/>
                  <path d="M 264,592 L 320,592" fill="none" stroke="black"/>
                  <path d="M 336,592 L 400,592" fill="none" stroke="black"/>
                  <path d="M 200,624 L 216,624" fill="none" stroke="black"/>
                  <path d="M 232,622 L 248,622" fill="none" stroke="black"/>
                  <path d="M 232,626 L 248,626" fill="none" stroke="black"/>
                  <path d="M 264,622 L 280,622" fill="none" stroke="black"/>
                  <path d="M 264,626 L 280,626" fill="none" stroke="black"/>
                  <path d="M 296,622 L 312,622" fill="none" stroke="black"/>
                  <path d="M 296,626 L 312,626" fill="none" stroke="black"/>
                  <path d="M 328,622 L 352,622" fill="none" stroke="black"/>
                  <path d="M 328,626 L 352,626" fill="none" stroke="black"/>
                  <path d="M 368,622 L 392,622" fill="none" stroke="black"/>
                  <path d="M 368,626 L 392,626" fill="none" stroke="black"/>
                  <path d="M 408,622 L 432,622" fill="none" stroke="black"/>
                  <path d="M 408,626 L 432,626" fill="none" stroke="black"/>
                  <path d="M 200,656 L 216,656" fill="none" stroke="black"/>
                  <path d="M 232,654 L 248,654" fill="none" stroke="black"/>
                  <path d="M 232,658 L 248,658" fill="none" stroke="black"/>
                  <path d="M 264,654 L 280,654" fill="none" stroke="black"/>
                  <path d="M 264,658 L 280,658" fill="none" stroke="black"/>
                  <path d="M 296,654 L 312,654" fill="none" stroke="black"/>
                  <path d="M 296,658 L 312,658" fill="none" stroke="black"/>
                  <path d="M 328,654 L 352,654" fill="none" stroke="black"/>
                  <path d="M 328,658 L 352,658" fill="none" stroke="black"/>
                  <path d="M 368,654 L 392,654" fill="none" stroke="black"/>
                  <path d="M 368,658 L 392,658" fill="none" stroke="black"/>
                  <path d="M 408,654 L 432,654" fill="none" stroke="black"/>
                  <path d="M 408,658 L 432,658" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="248" y="52">[0,</text>
                    <text x="280" y="52">13)</text>
                    <text x="160" y="84">/</text>
                    <text x="352" y="84">\</text>
                    <text x="120" y="116">[0,</text>
                    <text x="148" y="116">8)</text>
                    <text x="368" y="116">[8,</text>
                    <text x="400" y="116">13)</text>
                    <text x="72" y="148">/</text>
                    <text x="192" y="148">\</text>
                    <text x="336" y="148">/</text>
                    <text x="56" y="180">[0,</text>
                    <text x="84" y="180">4)</text>
                    <text x="184" y="180">[4,</text>
                    <text x="212" y="180">8)</text>
                    <text x="312" y="180">[8,</text>
                    <text x="344" y="180">12)</text>
                    <text x="40" y="212">/</text>
                    <text x="96" y="212">\</text>
                    <text x="168" y="212">/</text>
                    <text x="224" y="212">\</text>
                    <text x="304" y="212">/</text>
                    <text x="360" y="212">\</text>
                    <text x="32" y="244">[0,2)</text>
                    <text x="96" y="244">[2,4)</text>
                    <text x="160" y="244">[4,6)</text>
                    <text x="224" y="244">[6,8)</text>
                    <text x="292" y="244">[8,10)</text>
                    <text x="368" y="244">[10,12)</text>
                    <text x="24" y="276">/</text>
                    <text x="40" y="276">\</text>
                    <text x="88" y="276">/</text>
                    <text x="104" y="276">\</text>
                    <text x="152" y="276">/</text>
                    <text x="168" y="276">\</text>
                    <text x="216" y="276">/</text>
                    <text x="232" y="276">\</text>
                    <text x="280" y="276">/</text>
                    <text x="296" y="276">\</text>
                    <text x="352" y="276">/</text>
                    <text x="368" y="276">\</text>
                    <text x="16" y="308">0</text>
                    <text x="48" y="308">1</text>
                    <text x="80" y="308">2</text>
                    <text x="112" y="308">3</text>
                    <text x="144" y="308">4</text>
                    <text x="176" y="308">5</text>
                    <text x="208" y="308">6</text>
                    <text x="240" y="308">7</text>
                    <text x="272" y="308">8</text>
                    <text x="304" y="308">9</text>
                    <text x="340" y="308">10</text>
                    <text x="380" y="308">11</text>
                    <text x="420" y="308">12</text>
                    <text x="248" y="388">[0,</text>
                    <text x="280" y="388">13)</text>
                    <text x="160" y="420">/</text>
                    <text x="352" y="420">\</text>
                    <text x="120" y="452">[0,</text>
                    <text x="148" y="452">8)</text>
                    <text x="368" y="452">[8,</text>
                    <text x="400" y="452">13)</text>
                    <text x="72" y="484">/</text>
                    <text x="192" y="484">\</text>
                    <text x="336" y="484">/</text>
                    <text x="56" y="516">[0,</text>
                    <text x="84" y="516">4)</text>
                    <text x="184" y="516">[4,</text>
                    <text x="212" y="516">8)</text>
                    <text x="312" y="516">[8,</text>
                    <text x="344" y="516">12)</text>
                    <text x="168" y="548">/</text>
                    <text x="224" y="548">\</text>
                    <text x="304" y="548">/</text>
                    <text x="360" y="548">\</text>
                    <text x="160" y="580">[4,6)</text>
                    <text x="224" y="580">[6,8)</text>
                    <text x="292" y="580">[8,10)</text>
                    <text x="368" y="580">[10,12)</text>
                    <text x="216" y="612">/</text>
                    <text x="232" y="612">\</text>
                    <text x="280" y="612">/</text>
                    <text x="296" y="612">\</text>
                    <text x="352" y="612">/</text>
                    <text x="368" y="612">\</text>
                    <text x="208" y="644">6</text>
                    <text x="240" y="644">7</text>
                    <text x="272" y="644">8</text>
                    <text x="304" y="644">9</text>
                    <text x="340" y="644">10</text>
                    <text x="380" y="644">11</text>
                    <text x="420" y="644">12</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                +-----------------------------+
                |            [0, 13)          |
                +-----------------------------+
                   /                       \
       +----------------+             +----------------+
       |     [0, 8)     |             |     [8, 13)    |
       +----------------+             +----------------+
        /              \                 /          |
   +--------+      +--------+      +---------+      |
   | [0, 4) |      | [4, 8) |      | [8, 12) |      |
   +--------+      +--------+      +---------+      |
    /      \        /      \         /      \       |
+-----+ +-----+ +-----+ +-----+ +------+ +-------+  |
|[0,2)| |[2,4)| |[4,6)| |[6,8)| |[8,10)| |[10,12)|  |
+-----+ +-----+ +-----+ +-----+ +------+ +-------+  |
  / \     / \     / \     / \     / \      / \      |
+=+ +=+ +=+ +=+ +=+ +=+ +=+ +=+ +=+ +=+ +==+ +==+ +==+
|0| |1| |2| |3| |4| |5| |6| |7| |8| |9| |10| |11| |12|
+=+ +=+ +=+ +=+ +=+ +=+ +=+ +=+ +=+ +=+ +==+ +==+ +==+


                +-----------------------------+
                |            [0, 13)          |
                +-----------------------------+
                   /                       \
       +----------------+             +----------------+
       |     [0, 8)     |             |     [8, 13)    |
       +----------------+             +----------------+
        /              \                 /          |
   +--------+      +--------+      +---------+      |
   | [0, 4) |      | [4, 8) |      | [8, 12) |      |
   +--------+      +--------+      +---------+      |
                    /      \         /      \       |
                +-----+ +-----+ +------+ +-------+  |
                |[4,6)| |[6,8)| |[8,10)| |[10,12)|  |
                +-----+ +-----+ +------+ +-------+  |
                          / \     / \      / \      |
                        +-+ +=+ +=+ +=+ +==+ +==+ +==+
                        |6| |7| |8| |9| |10| |11| |12|
                        +-+ +=+ +=+ +=+ +==+ +==+ +==+
]]></artwork>
            </artset>
          </figure>
          <t>Logs MAY retain additional nodes, or expect log clients to compute required nodes from other nodes. For example, in <xref target="fig-prune-tree"/>, the log's serving protocol MAY instead serve <tt>[0, 2)</tt> and <tt>[2, 4)</tt>, with the log client computing <tt>[0, 4)</tt> from those values.</t>
        </section>
      </section>
    </section>
    <section anchor="certificates">
      <name>Certificates</name>
      <t>This section defines how to construct Merkle Tree Certificates, which are X.509 Certificates <xref target="RFC5280"/> that assert the information in an issuance log entry. A Merkle Tree Certificate is constructed from the following:</t>
      <ul spacing="normal">
        <li>
          <t>A TBSCertificateLogEntry (<xref target="log-entries"/>) contained in the issuance log (<xref target="issuance-logs"/>)</t>
        </li>
        <li>
          <t>A subject public key whose hash matches the TBSCertificateLogEntry</t>
        </li>
        <li>
          <t>A subtree (<xref target="subtrees"/>) that contains the log entry</t>
        </li>
        <li>
          <t>Zero or more signatures (<xref target="cosigners"/>) over the subtree, which together satisfy relying party requirements (<xref target="trusted-cosigners"/>)</t>
        </li>
      </ul>
      <t>For any given TBSCertificateLogEntry, there are multiple possible certificates that may prove the entry is certified by the CA and publicly logged, varying by choice of subtree and signatures. <xref target="certificate-format"/> defines how the certificate is constructed based on those choices. <xref target="full-certificates"/> and <xref target="signatureless-certificates"/> define two profiles of Merkle Tree Certificates, full certificates and signatureless certificates, and how to select the subtree and signatures for them.</t>
      <section anchor="certificate-format">
        <name>Certificate Format</name>
        <t>The information is encoded in an X.509 Certificate <xref target="RFC5280"/> as follows:</t>
        <t>The TBSCertificate's <tt>version</tt>, <tt>issuer</tt>, <tt>validity</tt>, <tt>subject</tt>, <tt>issuerUniqueID</tt>, <tt>subjectUniqueID</tt>, and <tt>extensions</tt> MUST be equal to the corresponding fields of the TBSCertificateLogEntry. If any of <tt>issuerUniqueID</tt>, <tt>subjectUniqueID</tt>, or <tt>extensions</tt> is absent in the TBSCertificateLogEntry, the corresponding field MUST be absent in the TBSCertificate. Per <xref target="log-entries"/>, this means <tt>issuer</tt> MUST be the issuance log's log ID as an X.509 distinguished name, as described in <xref target="log-ids"/>.</t>
        <t>The TBSCertificate's <tt>serialNumber</tt> MUST contain the zero-based index of the TBSCertificateLogEntry in the log. <xref section="4.1.2.2" sectionFormat="of" target="RFC5280"/> forbids zero as a serial number, but <xref target="log-entries"/> defines a <tt>null_entry</tt> type for use in entry zero, so the index will be positive. This encoding is intended to avoid implementation errors by having the serial numbers and indices off by one.</t>
        <t>The TBSCertificate's <tt>subjectPublicKeyInfo</tt> contains the specified public key. Its hash MUST match the TBSCertificateLogEntry's <tt>subjectPublicKeyInfoHash</tt>.</t>
        <t>The TBSCertificate's <tt>signature</tt> and the Certificate's <tt>signatureAlgorithm</tt> MUST contain an AlgorithmIdentifier whose <tt>algorithm</tt> is id-alg-mtcProof, defined below, and whose <tt>parameters</tt> is omitted.</t>
        <sourcecode type="asn.1"><![CDATA[
id-alg-mtcProof OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) algorithms(6) TBD}
]]></sourcecode>
        <t>For initial experimentation, early implementations of this design will use the OID 1.3.6.1.4.1.44363.47.0 instead of <tt>id-alg-mtcProof</tt>.</t>
        <t>The <tt>signatureValue</tt> contains an MTCProof structure, defined below using the TLS presentation language (<xref section="3" sectionFormat="of" target="RFC8446"/>):</t>
        <sourcecode type="tls-presentation"><![CDATA[
opaque HashValue[HASH_SIZE];

struct {
    TrustAnchorID cosigner_id;
    opaque signature<0..2^16-1>;
} MTCSignature;

struct {
    uint64 start;
    uint64 end;
    HashValue inclusion_proof<0..2^16-1>;
    MTCSignature signatures<0..2^16-1>;
} MTCProof;
]]></sourcecode>
        <t><tt>start</tt> and <tt>end</tt> MUST contain the corresponding parameters of the chosen subtree. <tt>inclusion_proof</tt> MUST contain a subtree inclusion proof (<xref target="subtree-inclusion-proofs"/>) for the log entry and the subtree. <tt>signatures</tt> contains the chosen subtree signatures. In each signature, <tt>cosigner_id</tt> contains the cosigner ID (<xref target="cosigners"/>) in its binary representation (<xref section="3" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>), and <tt>signature</tt> contains the signature value as described in <xref target="signature-format"/>.</t>
        <t>The MTCProof is encoded into the <tt>signatureValue</tt> with no additional ASN.1 wrapping. The most significant bit of the first octet of the signature value SHALL become the first bit of the bit string, and so on through the least significant bit of the last octet of the signature value, which SHALL become the last bit of the bit string.</t>
      </section>
      <section anchor="full-certificates">
        <name>Full Certificates</name>
        <t>A <em>full certificate</em> is a Merkle Tree certificate which contains sufficient signatures to allow a relying party to trust the choice of subtree, without any predistributed information beyond the cosigner(s) parameters. Full certificates can be issued without significant processing delay.</t>
        <t>When issuing a certificate, the CA first adds the TBSCertificateLogEntry to its issuance log. It then schedules a job to construct a checkpoint and collect cosignatures. The job proceeds as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>The CA signs the checkpoint with its key(s) (<xref target="certification-authority-cosigners"/>).</t>
          </li>
          <li>
            <t>Using the procedure in <xref target="arbitrary-intervals"/>, the CA determines the two subtrees that cover the entries added between this checkpoint and the most recent checkpoint.</t>
          </li>
          <li>
            <t>The CA signs each subtree with its key(s) (<xref target="cosigners"/>).</t>
          </li>
          <li>
            <t>The CA requests sufficient checkpoint cosignatures (<xref target="cosigners"/>) from external cosigners to meet relying party requirements (<xref target="trusted-cosigners"/>).</t>
          </li>
          <li>
            <t>The CA requests subtree cosignatures (<xref target="requesting-subtree-signatures"/>) from the cosigners above.</t>
          </li>
          <li>
            <t>For each certificate in the interval, the CA constructs certificates (<xref target="certificate-format"/>) using the covering subtree.</t>
          </li>
        </ol>
        <t>Steps 4 and 5 are analogous to requesting SCTs from CT logs in Certificate Transparency, except that a single run of this job collects signatures for many certificates at once. The CA MAY request signatures from a redundant set of cosigners and select the ones that complete first.</t>
        <t>This document does not prescribe the specific cosigner roles, or a particular protocol for requesting cosignatures. Protocols for cosigners MAY vary depending on the needs for that cosigner. A consistency-only cosigner, such as <xref target="TLOG-WITNESS"/>, might only require a checkpoint signature and consistency proof, while a mirroring cosigner, such as <xref target="TLOG-MIRROR"/> might require the full log contents.</t>
        <t>A cosigner MAY expose a private interface for the CA, to reduce denial-of-service risk, or a cosigner MAY expose a public interface for other parties to request additional cosignatures. The latter may be useful if a relying party requires a cosigner that the CA does not communicate with. In this case, an authenticating party MAY request cosignatures and add them to the certificate. However, it is RECOMMENDED that the CA collect cosignatures for the authenticating party. This simplifies deployment, as relying party policies change over time.</t>
        <t>This document does not place any requirements on how frequently this job runs. More frequent runs results in lower issuance delay, but higher signing overhead. It is RECOMMENDED that CAs run at most one instance of this job at a time, starting the next instance after the previous one completes. A single run collects signatures for all entries since the most recent checkpoint, so there is little benefit to overlapping them. Less frequent runs may also aid relying parties that wish to directly audit signatures, as described in Section 5.2 of <xref target="AuditingRevisited"/>, though this document does not define such a system.</t>
      </section>
      <section anchor="signatureless-certificates">
        <name>Signatureless Certificates</name>
        <t>A <em>signatureless certificate</em> is a Merkle Tree certificate which contains no signatures and instead assumes the relying party had predistributed information about which subtrees were trusted. Signatureless certificates are an optional size optimization. They require a processing delay to construct, and only work in a sufficiently up-to-date relying party. Authenticating parties thus SHOULD deploy a corresponding full certificate alongside any signatureless certificate, and use some application-protocol-specific mechanism to select between the two. <xref target="use-in-tls"/> discusses such a mechanism for TLS <xref target="RFC8446"/>.</t>
        <section anchor="landmarks">
          <name>Landmarks</name>
          <t>A signatureless certificate is constructed based on a <em>landmark sequence</em>, which is a sequence of <em>landmarks</em>. Landmarks are agreed-upon tree sizes across the ecosystem for optimizing certificates. Landmarks SHOULD be allocated by the CA, but they can also be allocated by some other coordinating party. It is possible, but NOT RECOMMENDED, for multiple landmark sequences to exist per CA. Landmarks are allocated to balance minimizing the delay in obtaining a signatureless certificate with minimizing the size of the relying party's predistributed state.</t>
          <t>A landmark sequence has the following fixed parameters:</t>
          <ul spacing="normal">
            <li>
              <t><tt>base_id</tt>: An OID arc for trust anchor IDs of individual landmarks</t>
            </li>
            <li>
              <t><tt>max_landmarks</tt>: A positive integer, describing the maximum number of landmarks that may contain unexpired certificates at any time</t>
            </li>
            <li>
              <t><tt>landmark_url</tt>: Some URL to fetch the current list of landmarks</t>
            </li>
          </ul>
          <t>Landmarks are numbered consecutively from zero. Each landmark has a trust anchor ID, determined by appending the landmark number to <tt>base_id</tt>. For example, the trust anchor ID for landmark 42 of a sequence with <tt>base_id</tt> of <tt>32473.1</tt> would be <tt>32473.1.42</tt>.</t>
          <t>Each landmark specifies a tree size. The first landmark, numbered zero, is always a tree size of zero. The sequence of tree sizes MUST be append-only and strictly monotonically increasing.</t>
          <t>Landmarks determine <em>landmark subtrees</em>: for each landmark, other than number zero, let <tt>tree_size</tt> be the landmark's tree size and <tt>prev_tree_size</tt> be that of the previous landmark. As described in <xref target="arbitrary-intervals"/>, select the one or two subtrees that cover <tt>[prev_tree_size, tree_size)</tt>. Each of those subtrees is a landmark subtree. Landmark zero has no landmark subtrees.</t>
          <t>The most recent <tt>max_landmarks</tt> landmarks are said to be <em>active</em>. Landmarks MUST be allocated such that, at any given time, only active landmarks contain unexpired certificates. The active landmark subtrees are those determined by the active landmarks. There are at most <tt>2 * max_landmarks</tt> active landmark subtrees at any time. Every unexpired entry will be contained in one or more landmark subtree, or between the last landmark subtree and the latest checkpoint. Active landmark subtrees are predistributed to the relying party as trusted subtrees, as described in <xref target="trusted-subtrees"/>.</t>
          <t>It is RECOMMENDED that landmarks be allocated following the procedure described in <xref target="allocating-landmarks"/>. If landmarks are allocated incorrectly (e.g. past landmarks change, or <tt>max_landmarks</tt> is inaccurate), there are no security consequences, but some older certificates may fail to validate.</t>
          <t>Relying parties will locally retain up to <tt>2 * max_landmarks</tt> hashes (<xref target="trusted-subtrees"/>) per CA, so <tt>max_landmarks</tt> should be set to balance the delay between landmarks and the amount of state the relying party must maintain. Using the recommended procedure above, a CA with a maximum certificate lifetime of 7 days, allocating a landmark every hour, will have a <tt>max_landmarks</tt> of 168. The client state is then 336 hashes, or 10,752 bytes with SHA-256.</t>
          <t><tt>landmark_url</tt> MUST serve a resource with <tt>Content-Type: text/plain; charset=utf-8</tt> and the following lines. Each line MUST be terminated by a newline character (U+000A):</t>
          <ul spacing="normal">
            <li>
              <t>Two space-separated non-negative decimal integers: <tt>&lt;last_landmark&gt; &lt;num_active_landmarks&gt;</tt>.
This line MUST satisfy the following, otherwise it is invalid:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>num_active_landmarks &lt;= max_landmarks</tt></t>
                </li>
                <li>
                  <t><tt>num_active_landmarks &lt;= last_landmark</tt></t>
                </li>
              </ul>
            </li>
            <li>
              <t><tt>num_active_landmarks + 1</tt> lines each containing a single non-negative decimal integer, containing a tree size. Numbered from zero to <tt>num_active_landmarks</tt>, line <tt>i</tt> contains the tree size for landmark <tt>last_landmark - i</tt>. The integers MUST be strictly monotonically decreasing and lower or equal to the log's latest tree size.</t>
            </li>
          </ul>
        </section>
        <section anchor="allocating-landmarks">
          <name>Allocating Landmarks</name>
          <t>It is RECOMMENDED that landmarks be allocated using the following procedure:</t>
          <ol spacing="normal" type="1"><li>
              <t>Select some <tt>time_between_landmarks</tt> duration. Define a series of consecutive, non-overlapping time intervals, each of duration <tt>time_between_landmarks</tt>.</t>
            </li>
            <li>
              <t>At most once per time interval, append the latest checkpoint tree size to the landmark sequence if it is greater than the last landmark's tree size.</t>
            </li>
          </ol>
          <t>To ensure that only active landmarks contain unexpired certificates, set <tt>max_landmarks</tt> to <tt>ceil(max_cert_lifetime / time_between_landmarks) + 1</tt>, where <tt>max_cert_lifetime</tt> is the CA's maximum certificate lifetime.</t>
        </section>
        <section anchor="constructing-signatureless-certificates">
          <name>Constructing Signatureless Certificates</name>
          <t>Given a TBSCertificateLogEntry in the issuance log and a landmark sequence, a signatureless certificate is constructed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Wait for the first landmark to be allocated that contains the entry.</t>
            </li>
            <li>
              <t>Determine the landmark's subtrees and select the one that contains the entry.</t>
            </li>
            <li>
              <t>Construct a certificate (<xref target="certificate-format"/>) using the selected subtree and no signatures.</t>
            </li>
          </ol>
          <t>Before sending this certificate, the authenticating party SHOULD obtain some application-protocol-specific signal that implies the relying party has been configured with the corresponding landmark. (<xref target="trusted-subtrees"/> defines how relying parties are configured.) The trust anchor ID of the landmark may be used as an efficient identifier in the application protocol. <xref target="use-in-tls"/> discusses how to do this in TLS <xref target="RFC8446"/>.</t>
        </section>
      </section>
      <section anchor="size-estimates">
        <name>Size Estimates</name>
        <t>The inclusion proofs in full and signatureless certificates scale logarithmically with the size of the subtree. These sizes can be estimated with the CA's issuance rate. The byte counts below assume the issuance log's hash function is SHA-256.</t>
        <t>Some organizations have published statistics which can be used to estimate this rate for the Web PKI. As of June 9th, 2025:</t>
        <ul spacing="normal">
          <li>
            <t><xref target="LetsEncrypt"/> reported around 558,000,000 active certificates for a single CA</t>
          </li>
          <li>
            <t><xref target="MerkleTown"/> reported around 2,100,000,000 unexpired certificates in CT logs, across all CAs</t>
          </li>
          <li>
            <t><xref target="MerkleTown"/> reported an issuance rate of around 444,000 certificates per hour, across all CAs</t>
          </li>
        </ul>
        <t>The current issuance rate across the Web PKI may not necessarily be representative of the Web PKI after a transition to short-lived certificates. Assuming a certificate lifetime of 7 days, and that subscribers will update their certificates 75% of the way through their lifetime (see <xref target="certificate-renewal"/>), every certificate will be reissued every 126 hours. This gives issuance rate estimates of around 4,400,000 certificates per hour and 17,000,000 certificates per hour, for the first two values above. Note the larger estimate is across all CAs, while subtrees would only span one CA.</t>
        <t>Using the per-CA short lifetime estimate, if the CA mints a checkpoint every 2 seconds, full certificate subtrees will span around 2,500 certificates, leading to 12 hashes in the inclusion proof, or 384 bytes. Full certificates additionally must carry a sufficient set of signatures to meet relying party requirements.</t>
        <t>If a new landmark is allocated every hour, signatureless certificate subtrees will span around 4,400,000 certificates, leading to 23 hashes in the inclusion proof, giving an inclusion proof size of 736 bytes, with no signatures. This is significantly smaller than a single ML-DSA-44 signature, 2,420 bytes, and almost ten times smaller than the three ML-DSA-44 signatures necessary to include post-quantum SCTs.</t>
        <t>The proof sizes grow logarithmically, so 32 hashes, or 1024 bytes, is sufficient for subtrees of up to 2<sup>32</sup> (4,294,967,296) certificates.</t>
      </section>
    </section>
    <section anchor="relying-parties">
      <name>Relying Parties</name>
      <t>This section discusses how relying parties verify Merkle Tree Certificates.</t>
      <section anchor="trust-anchors">
        <name>Trust Anchors</name>
        <t>In order to accept certificates from a Merkle Tree CA, a relying party MUST be configured with:</t>
        <ul spacing="normal">
          <li>
            <t>The log ID (<xref target="log-ids"/>)</t>
          </li>
          <li>
            <t>A set of supported cosigners, as pairs of cosigner ID and public key</t>
          </li>
          <li>
            <t>A policy on which combinations of cosigners to accept in a certificate (<xref target="trusted-cosigners"/>)</t>
          </li>
          <li>
            <t>An optional list of trusted subtrees, with their hashes, that are known to be consistent with the relying party's cosigner requirements (<xref target="trusted-subtrees"/>)</t>
          </li>
          <li>
            <t>A list of revoked ranges of indices (<xref target="revocation-by-index"/>)</t>
          </li>
        </ul>
        <t>[[TODO: Define some representation for this. In a trust anchor, there's a lot of room for flexibility in what the client stores. In principle, we could even encode some of this information in an X.509 intermediate certificate, if an application wishes to use this with a delegation model with intermediates, though the security story becomes more complex. Decide how/whether to do that.]]</t>
      </section>
      <section anchor="verifying-certificate-signatures">
        <name>Verifying Certificate Signatures</name>
        <t>When verifying the signature on an X.509 certificate (Step (a)(1) of <xref section="6.1.3" sectionFormat="of" target="RFC5280"/>) whose issuer is a Merkle Tree CA, the relying party performs the following procedure:</t>
        <ol spacing="normal" type="1"><li>
            <t>Check that the TBSCertificate's <tt>signature</tt> field is <tt>id-alg-mtcProof</tt> with omitted parameters. If either check fails, abort this process and fail verification.</t>
          </li>
          <li>
            <t>Decode the <tt>signatureValue</tt> as an MTCProof, as described in <xref target="certificate-format"/>.</t>
          </li>
          <li>
            <t>Let <tt>index</tt> be the certificate's serial number. If <tt>index</tt> is contained in one of the relying party's revoked ranges (<xref target="revocation-by-index"/>), abort this process and fail verification.</t>
          </li>
          <li>
            <t>Construct a TBSCertificateLogEntry as follows:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>Copy the <tt>version</tt>, <tt>issuer</tt>, <tt>validity</tt>, <tt>subject</tt>, <tt>issuerUniqueID</tt>, <tt>subjectUniqueID</tt>, and <tt>extensions</tt> fields from the TBSCertificate.</t>
              </li>
              <li>
                <t>Set <tt>subjectPublicKeyInfoHash</tt> to the hash of the DER encoding of <tt>subjectPublicKeyInfo</tt>.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>Construct a MerkleTreeCertEntry of type <tt>tbs_cert_entry</tt> with contents the TBSCertificateLogEntry. Let <tt>entry_hash</tt> be the hash of the entry, <tt>MTH({entry}) = HASH(0x00 || entry)</tt>, as defined in <xref section="2.1.1" sectionFormat="of" target="RFC9162"/>.</t>
          </li>
          <li>
            <t>Let <tt>expected_subtree_hash</tt> be the result of evaluating the MTCProof's <tt>inclusion_proof</tt> for entry <tt>index</tt>, with hash <tt>entry_hash</tt>, of the subtree described by the MTCProof's <tt>start</tt> and <tt>end</tt>, following the procedure in <xref target="evaluating-a-subtree-inclusion-proof"/>. If evaluation fails, abort this process and fail verification.</t>
          </li>
          <li>
            <t>If <tt>[start, end)</tt> matches a trusted subtree (<xref target="trusted-subtrees"/>), check that <tt>expected_subtree_hash</tt> is equal to the trusted subtree's hash. Return success if it matches and failure if it does not.</t>
          </li>
          <li>
            <t>Otherwise, check that the MTCProof's <tt>signatures</tt> contain a sufficient set of valid signatures from cosigners to satisfy the relying party's cosigner requirements (<xref target="trusted-cosigners"/>). Unrecognized cosigners MUST be ignored. Signatures are verified as described in <xref target="signature-format"/>. The <tt>hash</tt> field of the MTCSubtree is set to <tt>expected_subtree_hash</tt>.</t>
          </li>
        </ol>
        <t>This procedure only replaces the signature verification portion of X.509 path validation. The relying party MUST continue to perform other checks, such as checking expiry.</t>
        <t>In this procedure, <tt>entry_hash</tt> can equivalently be computed in a single pass from the DER-encoded TBSCertificate, without storing the full TBSCertificateLogEntry or MerkleTreeCertEntry in memory:</t>
        <ol spacing="normal" type="1"><li>
            <t>Initialize a hash instance.</t>
          </li>
          <li>
            <t>Write the big-endian, two-byte <tt>tbs_cert_entry</tt> value to the hash.</t>
          </li>
          <li>
            <t>Write the TBSCertificate contents octets to the hash, up to the <tt>subjectPublicKeyInfo</tt> field.</t>
          </li>
          <li>
            <t>Write the octet 0x04 to the hash. This is an OCTET STRING identifer.</t>
          </li>
          <li>
            <t>Write the octet L to the hash, where L is the hash length. (This assumes L is at most 127.)</t>
          </li>
          <li>
            <t>Write H to the hash, where H is the hash of the <tt>subjectPublicKeyInfo</tt> field.</t>
          </li>
          <li>
            <t>Write the remainder of the TBSCertificate contents octets to the hash, starting just after the <tt>subjectPublicKeyInfo</tt> field.</t>
          </li>
          <li>
            <t>Finalize the hash and set <tt>entry_hash</tt> to the result.</t>
          </li>
        </ol>
        <t>This is possible because the structure in <xref target="log-entries"/> omits the TBSCertificateLogEntry's identifier and length octets.</t>
      </section>
      <section anchor="trusted-cosigners">
        <name>Trusted Cosigners</name>
        <t>A relying party's cosigner policy determines the sets of cosigners that must sign a view of the issuance log before it is trusted.</t>
        <t>This document does not prescribe a particular policy, but gives general guidance. Relying parties MAY implement policies other than those described below, and MAY incorporate cosigners acting in roles not described in this document.</t>
        <t>In picking trusted cosigners, the relying party SHOULD ensure the following security properties:</t>
        <dl>
          <dt>Authenticity:</dt>
          <dd>
            <t>The relying party only accepts entries certified by the CA</t>
          </dd>
          <dt>Transparency:</dt>
          <dd>
            <t>The relying party only accepts entries that are publicly accessible, so that monitors, particularly the subject of the certificate, can notice any unauthorized certificates</t>
          </dd>
        </dl>
        <t>Relying parties SHOULD ensure authenticity by requiring a signature from the most recent CA cosigner key. If the CA is transitioning from an old to new key, the relying party SHOULD accept both until certificates that predate the new key expire. This is analogous to the signature in a traditional X.509 certificate.</t>
        <t>While a CA signature is sufficient to prove a subtree came from the CA, this is not enough to ensure the certificate is visible to monitors. A misbehaving CA might not operate the log correctly, either presenting inconsistent versions of the log to relying parties and monitors, or refuse to publish some entries.</t>
        <t>To mitigate this, relying parties SHOULD ensure transparency by requiring a quorum of signatures from additional cosigners. At minimum, these cosigners SHOULD enforce a consistent view of the log. For example, <xref target="TLOG-WITNESS"/> describes a lightweight "witness" cosigner role that checks this with consistency proofs. This is not sufficient to ensure durable logging. <xref target="revocation-by-index"/> discusses mitigations for this. Alternatively, a relying party MAY require cosigners that serve a copy of the log, in addition to enforcing a consistent view. For example, <xref target="TLOG-MIRROR"/> describes a "mirror" cosigner role.</t>
        <t>Relying parties MAY accept the same set of additional cosigners across issuance logs.</t>
        <t>Cosigner roles are extensible without changes to certificate verification itself. Future specifications and individual deployments MAY define other cosigner roles to incorporate into relying party policies.</t>
        <t><xref target="choosing-cosigners"/> discusses additional deployment considerations in cosigner selection.</t>
      </section>
      <section anchor="trusted-subtrees">
        <name>Trusted Subtrees</name>
        <t>As an optional optimization, a relying party MAY incorporate a periodically updated, predistributed list of active landmark subtrees, determined as described in <xref target="landmarks"/>. The relying party configures these as trusted subtrees, allowing it to accept signatureless certificates (<xref target="signatureless-certificates"/>) constructed against those subtrees.</t>
        <t>Before configuring the subtrees as trusted, the relying party MUST obtain assurance that each subtree is consistent with checkpoints observed by a sufficient set of cosigners (see <xref target="cosigners"/>) to meet its cosigner requirements. It is not necessary that the cosigners have generated signatures over the specific subtrees, only that they are consistent.</t>
        <t>This criteria can be checked given:</t>
        <ul spacing="normal">
          <li>
            <t>Some <em>reference checkpoint</em> that contains the latest landmark</t>
          </li>
          <li>
            <t>For each cosigner, either:
            </t>
            <ul spacing="normal">
              <li>
                <t>A cosignature on the reference checkpoint</t>
              </li>
              <li>
                <t>A cosigned checkpoint containing the referenced checkpoint and a valid Merkle consistency proof (<xref section="2.1.4" sectionFormat="of" target="RFC9162"/>) between the two</t>
              </li>
            </ul>
          </li>
          <li>
            <t>For each subtree, a valid subtree consistency proof (<xref target="subtree-consistency-proofs"/>) between the subtree and the reference checkpoint</t>
          </li>
        </ul>
        <t>[[TODO: The subtree consistency proofs have many nodes in common. It is possible to define a single "bulk consistency proof" that verifies all the hashes at once, but it's a lot more complex.]]</t>
        <t>This document does not prescribe how relying parties obtain this information. A relying party MAY, for example, use an application-specific update service, such as the services described in <xref target="CHROMIUM"/> and <xref target="FIREFOX"/>. If the relying party considers the service sufficiently trusted (e.g. if the service provides the trust anchor list or certificate validation software), it MAY trust the update service to perform these checks.</t>
        <t>The relying party SHOULD incorporate its trusted subtree configuration in application-protocol-specific certificate selection mechanisms, to allow an authenticating party to select a signatureless certificate. The trust anchor IDs of the landmarks may be used as efficient identifiers in the application protocol. <xref target="use-in-tls"/> discusses how to do this in TLS <xref target="RFC8446"/>.</t>
      </section>
      <section anchor="revocation-by-index">
        <name>Revocation by Index</name>
        <t>For each supported Merkle Tree CA, the relying party maintains a list of revoked ranges of indices. This allows a relying party to efficiently revoke entries of an issuance log, even if the contents are not necessarily known. This may be used to mitigate the security consequences of misbehavior by a CA, or other parties in the ecosystem.</t>
        <t>When a relying party is first configured to trust a CA, it SHOULD be configured to revoke all entries from zero up to but not including the first available unexpired certificate at the time. This revocation SHOULD be periodically updated as entries expire and logs are pruned (<xref target="log-pruning"/>). In particular, when CAs prune entries, relying parties SHOULD be updated to revoke all newly unavailable entries. This gives assurance that, even if some unavailable entry had not yet expired, the relying party will not trust it. It also allows monitors to start monitoring a log without processing expired entries.</t>
        <t>A misbehaving CA might correctly construct a globally consistent log, but refuse to make some entries or intermediate nodes available. Consistency proofs between checkpoints and subtrees would pass, but monitors cannot observe the entries themselves. Relying parties whose cosigner policies (<xref target="trusted-cosigners"/>) do not require durable logging (e.g. via <xref target="TLOG-MIRROR"/>) are particularly vulnerable to this. In this case, the indices of the missing entries will still be known, so relying parties can use this mechanism to revoke the unknown entries, possibly as an initial, targeted mitigation before a complete CA removal.</t>
        <t>When a CA is found to be untrustworthy, relying parties SHOULD remove trust in that CA. To minimize the compatibility impact of this mitigation, index-based revocation can be used to only distrust entries after some index, while leaving existing entries accepted. This is analogous to the <xref target="SCTNotAfter"/> mechanism used in some PKIs.</t>
      </section>
    </section>
    <section anchor="use-in-tls">
      <name>Use in TLS</name>
      <t>Most X.509 fields such as subjectPublicKeyInfo and X.509 extensions such as subjectAltName are unmodified in Merkle Tree certificates. They apply to TLS-based applications as in a traditional X.509 certificate. The primary new considerations for use in TLS are:</t>
      <ul spacing="normal">
        <li>
          <t>Whether the authenticating party should send a certificate from one Merkle Tree CA, another Merkle Tree CA, or a traditional X.509 CA</t>
        </li>
        <li>
          <t>Whether the authenticating party should send a full or signatureless certificate</t>
        </li>
        <li>
          <t>What the relying party should communicate to the authenticating party to help it make this decision</t>
        </li>
      </ul>
      <t>Certificate selection in TLS, described in Section <xref target="RFC8446" section="4.4.2.2" sectionFormat="bare"/> and Section <xref target="RFC8446" section="4.4.2.3" sectionFormat="bare"/> of <xref target="RFC8446"/>, incorporates both explicit relying-party-provided information in the ClientHello and CertificateRequest messages and implicit deployment-specific assumptions. This section describes a RECOMMENDED integration of Merkle Tree certificates into TLS trust anchor IDs (<xref target="I-D.ietf-tls-trust-anchor-ids"/>), but applications MAY use application-specific criteria in addition to, or instead of, this recommendation.</t>
      <section anchor="extensions-to-trust-anchor-ids">
        <name>Extensions to Trust Anchor IDs</name>
        <t>[[TODO: Move this into draft-ietf-tls-trust-anchor-ids once the PLANTS WG is further along. See https://github.com/tlswg/tls-trust-anchor-ids/issues/62]]</t>
        <t>A TLS deployment may know that all relying parties that accept one trust anchor must additionally accept another trust anchor, or desire identifiers for groups of related trust anchors. For example, in this document, the relying party will recognize up to <tt>max_landmark</tt> consecutive landmarks, so the latest landmark can be used to represent the range.</t>
        <t>Incorporating this knowledge into certificate selection can optimize the ClientHello or CertificateRequest extension. It is RECOMMENDED that this information be provisioned alongside the certificate, e.g. provided by the CA. This section extends the CertificatePropertyList structure (<xref section="6" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>) with the <tt>additional_trust_anchor_ranges</tt> certificate property to do this:</t>
        <sourcecode type="tls-presentation"><![CDATA[
enum {
    additional_trust_anchor_ranges(1), (2^16-1)
} CertificatePropertyType;

struct {
    TrustAnchorID base;
    uint64 min;
    uint64 max;
} TrustAnchorRange;

TrustAnchorRange TrustAnchorRangeList<1..2^16-1>;
]]></sourcecode>
        <t>A trust anchor range <tt>r</tt> is said to <em>contain</em> a trust anchor ID <tt>id</tt>, if <tt>id</tt>, as a relative OID, is the concatenation of <tt>r.base</tt> and some integer component between <tt>min</tt> and <tt>max</tt>, inclusive.</t>
        <t>The following procedure can be used to perform this check. It succeeds if <tt>r</tt> contains <tt>id</tt> and fails otherwise:</t>
        <ol spacing="normal" type="1"><li>
            <t>Check that <tt>r.base</tt> does not end in the middle of an OID component. That is, check that the most-significant bit of the last byte of <tt>r.base</tt> is unset. If it is set, fail the procedure.</t>
          </li>
          <li>
            <t>Check that <tt>r.base</tt> is a prefix of <tt>id</tt>. If not, fail the procedure. Let <tt>rest</tt> be <tt>id</tt> with the <tt>r.base</tt> prefix removed.</t>
          </li>
          <li>
            <t>Decode <tt>rest</tt> as a minimally-encoded, big-endian, base-128 OID component as follows:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>If <tt>rest</tt> is empty, fail the procedure.</t>
              </li>
              <li>
                <t>If the most-significant bit of the last byte of <tt>rest</tt> is set, fail the procedure.</t>
              </li>
              <li>
                <t>If the most-significant bit of any other byte of <tt>rest</tt> is unset, fail the procedure.</t>
              </li>
              <li>
                <t>If the first byte of <tt>rest</tt> is 0x80, fail the procedure.</t>
              </li>
              <li>
                <t>Set <tt>v</tt> to zero. Throughout this procedure, <tt>v</tt> will be less than 2<sup>64</sup>.</t>
              </li>
              <li>
                <t>For each byte <tt>b</tt> of <tt>rest</tt>:
                </t>
                <ol spacing="normal" type="1"><li>
                    <t>If <tt>v</tt> is greater than or equal to 2<sup>57</sup>, fail the procedure.</t>
                  </li>
                  <li>
                    <t>Set <tt>v</tt> to <tt>(v &lt;&lt; 7) + (b &amp; 127)</tt>.</t>
                  </li>
                </ol>
              </li>
            </ol>
          </li>
          <li>
            <t>Check if <tt>min &lt;= v &lt;= max</tt>. If this is not true, fail the procedure. Otherwise, the procedure succeeds.</t>
          </li>
        </ol>
        <t><xref section="4.2" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/> is updated as follows. If the ClientHello or CertificateRequest contains a <tt>trust_anchors extension</tt>, the authenticating party SHOULD send a certification path such that one of the following is true:</t>
        <ul spacing="normal">
          <li>
            <t>The certification path's trust anchor ID appears in the relying party's <tt>trust_anchors</tt> extension, or</t>
          </li>
          <li>
            <t>One of the certification path's additional trust anchor ranges contains some ID in the relying party's <tt>trust_anchors</tt> extension</t>
          </li>
        </ul>
        <t>Trust anchor ranges do not impact an authenticating party's list of available trust anchors in EncryptedExtensions (see <xref section="4.3" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>) or the HTTPS/SVCB record (see <xref section="5" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>). Those continue to reference the single trust anchor ID that corresponds to each certificate.</t>
        <t>In applications that use additional trust anchor ranges, relying parties MAY send a single trust anchor ID to represent all certificates whose trust anchor ranges contain that trust anchor ID. This includes:</t>
        <ul spacing="normal">
          <li>
            <t>Trust anchors that are sent in response to an EncryptedExtensions or HTTPS/SVCB message from the authenticating party</t>
          </li>
          <li>
            <t>Trust anchors that are sent in <tt>trust_anchors</tt>, independently of the authenticating party</t>
          </li>
        </ul>
      </section>
      <section anchor="using-trust-anchor-ids">
        <name>Using Trust Anchor IDs</name>
        <t>A full certificate will generally be accepted by relying parties that trust the issuing CA. To determine this, a full certificate has a trust anchor ID of the corresponding log ID (<xref target="log-ids"/>). The authenticating party can obtain this information either by parsing the certificate's issuer field or via out-of-band information as described in <xref section="3.2" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>. Authenticating and relying parties SHOULD use the <tt>trust_anchors</tt> extension to determine whether the full certificate would be acceptable.</t>
        <t>[[TODO: Ideally we would negotiate cosigners. https://github.com/tlswg/tls-trust-anchor-ids/issues/54 has a sketch of how one might do this, though other designs are possible. Negotiating cosigners allows the ecosystem to manage cosigners efficiently, without needing to collect every possible cosignature and send them all at once. This is wasteful, particularly with post-quantum algorithms.]]</t>
        <t>A full certificate MAY also be sent without explicit relying party trust signals, however doing so means the authenticating party implicitly assumes the relying party trusts the issuing CA. This may be viable if, for example, the CA is relatively ubiquitous among supported relying parties.</t>
        <t>A signatureless certificate, defined against landmark number <tt>L</tt>, has a trust anchor ID of <tt>base_id</tt>, concatenated with <tt>L</tt>, as described in <xref target="landmarks"/>, and SHOULD be provisioned with this value. Additionally, relying parties that trust later landmarks may also be assumed to trust landmark <tt>L</tt>, so a signatureless certificate SHOULD additionally provisioned with an additional trust anchor range whose <tt>base</tt> is <tt>base_id</tt>, <tt>min</tt> is <tt>L</tt>, and <tt>max</tt> is <tt>L + max_landmarks - 1</tt>.</t>
        <t>A relying party that has been configured with trusted subtrees (<xref target="trusted-subtrees"/>) derived from a set of landmarks SHOULD configure the <tt>trust_anchors</tt> extension to advertise the highest supported landmark in the set. The selection procedures defined in <xref target="I-D.ietf-tls-trust-anchor-ids"/> and <xref target="extensions-to-trust-anchor-ids"/> will then correctly determine whether a signatureless certificate is compatible with the relying party.</t>
        <t>When both a signatureless and full certificate are supported by a relying party, an authenticating party SHOULD preferentially use the signatureless certificate. A signatureless certificate asserts the same information as its full counterpart, but is expected to be smaller. An authenticating party SHOULD NOT send a signatureless certificate without a signal that the relying party trusts the corresponding landmark subtree. Even if the relying party is assumed to trust the issuing CA, the relying party may not have sufficiently up-to-date trusted subtrees.</t>
      </section>
    </section>
    <section anchor="acme-extensions">
      <name>ACME Extensions</name>
      <t>This section describes how to issue Merkle Tree certificates using ACME <xref target="RFC8555"/>.</t>
      <t>When downloading the certificate (<xref section="7.4.2" sectionFormat="of" target="RFC8555"/>), ACME clients supporting Merkle Tree certificates SHOULD send "application/pem-certificate-chain-with-properties" in their Accept header (<xref section="12.5.1" sectionFormat="of" target="RFC9110"/>). ACME servers issuing Merkle Tree certificates SHOULD then respond with that content type and include trust anchor ID information as described in <xref section="6" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>. <xref target="use-in-tls"/> decribes the trust anchor ID assignments for full and signatureless certificates.</t>
      <t>When processing an order for a Merkle Tree certificate, the ACME server moves the order to the "valid" state once the corresponding entry is sequenced in the issuance log. The order's certificate URL then serves the full certificate, constructed as described in <xref target="full-certificates"/>.</t>
      <t>The full certificate response SHOULD additionally carry a alternate URL for the signatureless certificate, as described <xref section="7.4.2" sectionFormat="of" target="RFC8555"/>. Before the signatureless certificate is available, the alternate URL SHOULD return a HTTP 503 (Service Unavailable) response, with a Retry-After header (<xref section="10.2.3" sectionFormat="of" target="RFC9110"/>) estimating when the certificate will become available. Once the next landmark is allocated, the ACME server constructs a signatureless certificate, as described in <xref target="signatureless-certificates"/> and serves it from the alternate URL.</t>
      <t>ACME clients supporting Merkle Tree certificates SHOULD support fetching alternate chains. If an alternate chain returns an HTTP 503 with a Retry-After header, as described above, the client SHOULD retry the request at the specified time.</t>
    </section>
    <section anchor="deployment-considerations">
      <name>Deployment Considerations</name>
      <section anchor="operational-costs">
        <name>Operational Costs</name>
        <section anchor="certification-authority-costs">
          <name>Certification Authority Costs</name>
          <t>While Merkle Tree certificates expects CAs to operate logs, the costs of these logs are expected to be much lower than a CT log from <xref target="RFC6962"/> or <xref target="RFC9162"/>:</t>
          <t><xref target="publishing-logs"/> does not constrain the API to the one defined in <xref target="RFC6962"/> or <xref target="RFC9162"/>. If the PKI uses a tile-based protocol, such as <xref target="TLOG-TILES"/>, the issuance log benefits from the improved caching properties of such designs.</t>
          <t>Unlike a CT log, an issuance log does not have public submission APIs. Log entries are only added by the CA directly. The costs are thus expected to scale with the CA's own operations.</t>
          <t>A CA only needs to produce a digital signature for every checkpoint, rather than for every certificate. The lower signature rate requirements could allow more secure and/or economical key storage choices.</t>
          <t>Individual entries are kept small and do not scale with public key or signature sizes. This mitigates growth from post-quantum algorithms. Public keys in entries are replaced with fixed-sized hashes. There are no signatures in entries themselves, and only signatures on the very latest checkpoint are retained. Every new checkpoint completely subsumes the old checkpoint, so there is no need to retain older signatures. Likewise, a subtree is only signed if contained in another signed checkpoint.</t>
          <t>Log pruning (<xref target="log-pruning"/>) allows a long-lived log to serve only the more recent entries, scaling with the size of the retention window, rather than the log's total lifetime.</t>
          <t>Mirrors of the log can also reduce CA bandwidth costs, because monitors can fetch data from mirrors instead of CAs directly. In PKIs that deploy mirrors as part of cosigner policies, relying parties could set few availability requirements on CAs, as described in <xref target="log-availability"/>.</t>
        </section>
        <section anchor="cosigner-costs">
          <name>Cosigner Costs</name>
          <t>The costs of cosigners vary by cosigner role. A consistency-checking cosigner, such as <xref target="TLOG-WITNESS"/>, requires very little state and can be run with low cost.</t>
          <t>A mirroring cosigner, such as <xref target="TLOG-MIRROR"/>, performs comparable roles as CT logs, but several of the cost-saving properties in <xref target="certification-authority-costs"/> also apply: improved protocols, smaller entries, less frequent signatures, and log pruning. While a mirror does need to accommodate another party's (the CA's) growth rate, it grows only from new issuances from that one CA. If one CA's issuance rate exceeds the mirror's capacity, that does not impact the mirror's copies of other CAs. Mirrors also do not need to defend against a client uploading a large number of existing certificates all at once. Submissions are also naturally batched and serialized.</t>
        </section>
        <section anchor="monitor-costs">
          <name>Monitor Costs</name>
          <t>In a CT-based PKI, every log carries a potentially distinct subset of active certificates, so monitors must check the contents of every CT log. At the same time, certificates are commonly synchronized between CT logs. As a result, a monitor will typically download each certificate multiple times, once for every log. In Merkle Tree Certificates, each entry appears in exactly one log. A relying party might require a log to be covered by a quorum of mirrors, but each mirror is cryptographically verified to serve the same contents. Once a monitor has obtained some entry from one mirror, it does not need to download it from the others.</t>
          <t>In addition to downloading each entry only once, the entries themselves are smaller, as discussed in <xref target="certification-authority-costs"/>.</t>
        </section>
      </section>
      <section anchor="choosing-cosigners">
        <name>Choosing Cosigners</name>
        <t>In selecting trusted cosigners and cosigner requirements (<xref target="trusted-cosigners"/>), relying parties navigate a number of trade-offs:</t>
        <t>A consistency-checking cosigner, such as <xref target="TLOG-WITNESS"/>, is very cheap to run, but does not guarantee durable logging, while a mirroring cosigner is more expensive and may take longer to cosign structures. Requiring a mirror signature provides stronger guarantees to the relying party, which in turn can reduce the requirements on CAs (see <xref target="log-availability"/>), however it may cause certificate issuance to take longer. That said, mirrors are comparable to CT logs, if not cheaper (see <xref target="operational-costs"/>), so they may be appropriate in PKIs where running CT logs is already viable.</t>
        <t>Relying parties that require larger quorums of trusted cosigners can reduce the trust placed in any individual cosigner. However, these larger quorums result in larger, more expensive full certificates. The cost of this will depend on how frequently the signatureless optimization occurs in a given PKI. Conversely, relying parties that require smaller quorums have smaller full certificates, but place more trust in their cosigners.</t>
        <t>Relying party policies also impact monitor operation. If a relying party accepts any one of three cosigners, monitors SHOULD check the checkpoints of all three. Otherwise, a malicious CA may send different split views to different cosigners. More generally, monitors SHOULD check the checkpoints in the union of all cosigners trusted by all supported relying parties. This is an efficient check because, if the CA is operating correctly, all cosigners will observe the same tree. Thus the monitor only needs to check consistency proofs between the checkpoints, and check the log contents themselves once. Monitors MAY also rely on other parties in the transparency ecosystem to perform this check.</t>
      </section>
      <section anchor="log-availability">
        <name>Log Availability</name>
        <t>CAs and mirrors are expected to serve their log contents over HTTP. It is possible for the contents to be unavailable, either due to temporary service outage or because the log has been pruned (<xref target="log-pruning"/>). If some resources are unavailable, they may not be visible to monitors.</t>
        <t>As in CT, PKIs which deploy Merkle Tree certificates SHOULD establish availability policies, adhered to by trusted CAs and mirrors, and enforced by relying party vendors as a condition of trust. Exact availability policies for these services are out of scope for this document, but this section provides some general guidance.</t>
        <t>Availability policies SHOULD specify how long an entry must be made available, before a CA or mirror is permitted to prune the entry. It is RECOMMENDED to define this using a <em>retention period</em>, which is some time after the entry has expired. In such a policy, an entry could only be pruned if it, and all preceding entries, have already expired for the retention period. Policies MAY opt to set different retention periods between CAs and mirrors. Permitting limited log retention is analogous to the CT practice of temporal sharding <xref target="CHROME-CT"/>, except that a pruned issuance log remains compatible with older, unupdated relying parties.</t>
        <t>Such policies impact monitors. If the retention period is, e.g. 6 months, this means that monitors are expected to check entries of interest within 6 months. It also means that a new monitor may only be aware of a 6 month history of entries issued for a particular domain.</t>
        <t>If historical data is not available to verify the retention period, such as information in another mirror or a trusted summary of expiration dates of entries, it may not be possible to confirm correct behavior. This is mitigated by the revocation process described in <xref target="revocation-by-index"/>: if a CA were to prune a forward-dated entry and, in the 6 months when the entry was available, no monitor noticed the unusual expiry, an updated relying party would not accept it anyway.</t>
        <t>The log pruning process simply makes some resources unavailable, so availability policies SHOULD constrain log pruning in the same way as general resource availability. That is, if it would be a policy violation for the log to fail to serve a resource, it should also be a policy violation for the log to prune such that the resource is removed, and vice versa.</t>
        <t>PKIs that require mirror cosignatures (<xref target="trusted-cosigners"/>) can impose minimal to no availability requirements on CAs, all without compromising transparency goals. If a CA never makes some entry available, mirrors will be unable to update. This will prevent relying parties from accepting the undisclosed entries. However, a CA which is persistently unavailable may not offer sufficient benefit to be used by authenticating parties or trusted by relying parties.</t>
        <t>However, if a mirror's interface becomes unavailable, monitors may be unable to check for unauthorized issuance, if the entries are not available in another mirror. This does compromise transparency goals. As such, availability policies SHOULD set availability expectations on mirrors. This can also be mitigated by using multiple mirrors, either directly enforced in cosigner requirements, or by keeping mirrors up-to-date with each other.</t>
        <t>In PKIs that do not require mirroring cosigners, the CA's serving endpoint is more crucial for monitors. Such PKIs thus SHOULD set availability requirements on CAs.</t>
        <t>In each of these cases, availability failures can be mitigated by revoking the unavailable entries by index, as described in <xref target="revocation-by-index"/>, likely as a first step in a broader distrust.</t>
      </section>
      <section anchor="certificate-renewal">
        <name>Certificate Renewal</name>
        <t>When an authenticating party requests a certificate, the signatureless certificate will not be available until the next landmark is ready. From there, the signatureless certificate will not be available until relying parties receive new trusted subtrees.</t>
        <t>To maximize coverage of the signatureless certificate optimization, authenticating parties performing routine renewal SHOULD request a new Merkle Tree certificate some time before the previous Merkle Tree certificate expires. Renewing around 75% into the previous certificate's lifetime is RECOMMENDED. Authenticating parties additionally SHOULD retain both the new and old certificates in the certificate set until the old certificate expires. As the new subtrees are delivered to relying parties, certificate negotiation will transition relying parties to the new certificate, while retaining the old certificate for relying parties that are not yet updated.</t>
        <t>The above also applies if the authenticating party is performing a routine key rotation alongside the routine renewal. In this case, certificate negotiation would pick the key as part of the certificate selection. This slightly increases the lifetime of the old key but maintains the size optimization continuously.</t>
        <t>If the service is rotating keys in response to a key compromise, this option is not appropriate. Instead, the service SHOULD immediately discard the old key and request a full certificate and the revocation of the previous certificate. This will interrupt the size optimization until the new signatureless certificate is available and relying parties are updated.</t>
      </section>
      <section anchor="multiple-ca-keys">
        <name>Multiple CA Keys</name>
        <t>The separation between issuance logs and CA cosigners gives CAs additional flexibility in managing keys. A CA operator wishing to rotate keys, e.g. to guard against compromise of older key material, or upgrade to newer algorithms, could retain the same issuance log and sign its checkpoints and subtrees with both keys in parallel, until relying parties are all updated. Older relying parties would verify the older signatures, while newer relying parties would verify the newer signatures. A cosignature negotiation mechanism in the application protocol (see <xref target="use-in-tls"/>) would avoid using extra bandwidth for the two signatures.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The Privacy Considerations described in <xref section="9" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/> apply to its use with Merkle Tree Certificates.</t>
      <t>In particular, relying parties that share an update process for trusted subtrees (<xref target="trusted-subtrees"/>) will fetch the same stream of updates. However, updates may reach different users at different times, resulting in some variation across users. This variation may contribute to a fingerprinting attack <xref target="RFC6973"/>. If the Merkle Tree CA trust anchors are sent unconditionally in <tt>trust_anchors</tt>, this variation will be passively observable. If they are sent conditionally, e.g. with the DNS mechanism, the trust anchor list will require active probing.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="authenticity">
        <name>Authenticity</name>
        <t>A key security requirement of any PKI scheme is that relying parties only accept assertions that were certified by a trusted certification authority. Merkle Tree certificates achieve this by ensuring the relying party only accepts authentic subtree hashes:</t>
        <ul spacing="normal">
          <li>
            <t>In full certificates, the relying party's cosigner requirements (<xref target="trusted-cosigners"/>) are expected to include some signature by the CA's cosigner. The CA's cosigner (<xref target="certification-authority-cosigners"/>) is defined to certify the contents of every checkpoint and subtree that it signs.</t>
          </li>
          <li>
            <t>In signatureless certificates, the cosigner requirements are checked ahead of time, when the trusted subtrees are predistributed (<xref target="trusted-subtrees"/>).</t>
          </li>
        </ul>
        <t>Given such a subtree hash, computed over entries that the CA certified, it then must be computationally infeasible to construct an entry not on this list, and some inclusion proof, such that inclusion proof verification succeeds. This requires using a collision-resistant hash in the Merkle Tree construction.</t>
        <t>Log entries contain public key hashes, so it must additionally be computationally infeasible to compute a public key whose hash matches the entry, other than the intended public key. This also requires a collision-resistant hash.</t>
      </section>
      <section anchor="transparency">
        <name>Transparency</name>
        <t>The transparency mechanisms in this document do not prevent a CA from issuing an unauthorized certificate. Rather, they provide comparable security properties as Certificate Transparency <xref target="RFC9162"/> in ensuring that all certificates are either rejected by relying parties, or visible to monitors and, in particular, the subject of the certificate.</t>
        <t>Compared to Certificate Transparency, some of the responsibilities of a log have moved to the CA. All signatures generated by the CA in this system are assertions about some view of the CA's issuance log. However, a CA does not need to function correctly to ensure transparency properties. Relying parties are expected to require a quorum of additional cosigners, which together enforce properties of the log (<xref target="trusted-cosigners"/>) and prevent or detect CA misbehavior:</t>
        <t>A CA might violate the append-only property of its log and present different views to different parties. However, each individual cosigner will only follow a single append-only view of the log history. Provided the cosigners are correctly operated, relying parties and monitors will observe consistent views between each other. Views that were not cosigned at all may not be detected, but they also will not be accepted by relying parties.</t>
        <t>If the CA sends one view to some cosigners and another view to other cosigners, it is possible that multiple views will be accepted by relying parties. However, in that case monitors will observe that cosigners do not match each other. Relying parties can then react by revoking the inconsistent indices (<xref target="revocation-by-index"/>), and likely removing the CA. If the cosigners are mirrors, the underlying entries in both views will also be visible.</t>
        <t>A CA might correctly construct its log, but refuse to serve some unauthorized entry, e.g. by feigning an outage or pruning the log outside the retention policy (<xref target="log-availability"/>). If the relying party requires cosignatures from trusted mirrors, the entry will either be visible to monitors in the mirrors, or have never reached a mirror. In the latter case, the entry will not have been cosigned, so the relying party would not accept it. If the relying party accepts log views without a trusted mirror, the unauthorized entry may not be available. However, the existence of <em>some</em> entry at that index will be visible, so monitors will know the CA is failing to present an entry. Relying parties can then react by revoking the undisclosed entries by index (<xref target="revocation-by-index"/>), and likely removing the CA.</t>
      </section>
      <section anchor="public-key-hashes">
        <name>Public Key Hashes</name>
        <t>Unlike Certificate Transparency, the mechanisms in this document do not provide the subject public keys, only the hashed values. This is intended to reduce log serving costs, particularly with large post-quantum keys. As a result, monitors look for unrecognized hashes instead of unrecognized keys. Any unrecognized hash, even if the preimage is unknown, indicates an unauthorized certificate.</t>
        <t>This optimization complicates studies of weak public keys, e.g. <xref target="SharedFactors"/>. Such studies will have to retrieve the public keys separately, such as by connecting to the TLS servers, or fetching from the CA if it retains the unhashed key. This document does not define a mechanism for doing this, or require that CAs or mirrors retain unhashed keys. The transparency mechanisms in this protocol are primarily intended to allow monitors to observe certificate issuance.</t>
      </section>
      <section anchor="non-repudiation">
        <name>Non-Repudiation</name>
        <t>When a monitor finds an unauthorized certificate issuance in a log or mirror, it must be possible to prove the CA indeed certified the information in the entry. However, only the latest checkpoint signature is retained by the transparency ecosystem, so it may not be possible to reconstruct the exact certificate seen by relying parties.</t>
        <t>However, per <xref target="certification-authority-cosigners"/>, any checkpoint signature is a binding assertion by the CA that it has certified every entry in the checkpoint. Thus, given <em>any</em> signed checkpoint that contains the unauthorized entry, a Merkle inclusion proof (<xref section="2.1.3" sectionFormat="of" target="RFC9162"/>) is sufficient to prove the CA issued the entry. This is analogous to how, in <xref section="3.2.1" sectionFormat="of" target="RFC9162"/>, CAs are held accountable for signed CT precertificates.</t>
        <t>The transparency ecosystem does not retain unhashed public keys, so it also may not be possible to construct a complete certificate from the checkpoint signature and inclusion proof. However, if the log entry's <tt>subjectPublicKeyInfoHash</tt> does not correspond to an authorized key for the subject of the certificate, the entry is still unauthorized. A Merkle Tree CA is held responsible for all log entries it certifies, whether or not the preimage of the hash is known.</t>
      </section>
      <section anchor="new-log-entry-types">
        <name>New Log Entry Types</name>
        <t>MerkleTreeCertEntry (<xref target="log-entries"/>) is extensible and permits protocol extensions to define new formats for the CA to certify. This means older CAs, cosigners, relying parties, and monitors might interact with new entries:</t>
        <t><xref target="log-entries"/> and <xref target="certification-authority-cosigners"/> forbid a CA from logging or signing entries that it does not recognize. A CA cannot faithfully claim to certify information if it does not understand it. This is analogous to how a correctly-operated X.509 can never sign an unrecognized X.509 extension.</t>
        <t>External cosigners may or may not interact with the unrecognized entries. <xref target="TLOG-MIRROR"/> and <xref target="TLOG-WITNESS"/> describe cosigners whose roles do not interpret the contents of log entries. New entry types MAY be added without updating them. If a cosigner role does interpret a log entry, it MUST define how it interacts with unknown ones.</t>
        <t>If a relying party trusts an issuance log, but the issuance log contains an unrecognized entry, the entry will not cause it to accept an unexpected certificate. In <xref target="verifying-certificate-signatures"/>, the relying party constructs the MerkleTreeCertEntry that it expects. The unrecognized entry will have a different <tt>type</tt> value, so the proof will never succeed, assuming the underlying hash function remains collision-resistant.</t>
        <t>If a monitor observes an entry with unknown type, it may not be able to determine if it is of interest. For example, it may be unable to tell whether it covers some relevant DNS name. Until the monitor is updated to reflect the current state of the PKI, the monitor may be unable to detect all misissued certificates.</t>
        <t>This situation is analogous to the addition of a new X.509 extension. When relying parties add support for log entry types or new X.509 extensions, they SHOULD coordinate with monitors to ensure the transparency ecosystem is able to monitor the new formats.</t>
      </section>
      <section anchor="certificate-malleability">
        <name>Certificate Malleability</name>
        <t>An ASN.1 structure like X.509’s Certificate is an abstract data type that is independent of its serialization. There are multiple encoding rules for ASN.1. Commonly, protocols use DER <xref target="X.690"/>, such as <xref section="4.4.2" sectionFormat="of" target="RFC8446"/>. This aligns with <xref section="4.1.1.3" sectionFormat="of" target="RFC5280"/>, which says X.509 signatures are computed over the DER-encoded TBSCertificate. After signature verification, applications can assume the DER-encoded TBSCertificate is not malleable.</t>
        <t>While the signature verification process in <xref target="verifying-certificate-signatures"/> first transforms the TBSCertificate into a TBSCertificateLogEntry, it preserves this non-malleability. There is a unique valid DER encoding for every abstract TBSCertificate structure, so malleability of the DER-encoded TBSCertificate reduces to malleability of the TBSCertificate value:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>version</tt>, <tt>issuer</tt>, <tt>validity</tt>, <tt>subject</tt>, <tt>issuerUniqueID</tt>, <tt>subjectUniqueID</tt>, and <tt>extensions</tt> fields are copied from the TBSCertificate to the TBSCertificateLogEntry unmodified, so they are directly authenticated by the inclusion proof.</t>
          </li>
          <li>
            <t><tt>serialNumber</tt> is omitted from TBSCertificateLogEntry, but its value determines the inclusion proof index, which authenticates it.</t>
          </li>
          <li>
            <t>The redundant <tt>signature</tt> field in TBSCertificate is omitted from TBSCertificateLogEntry, but <xref target="verifying-certificate-signatures"/> checks for an exact value, so no other values are possible.</t>
          </li>
          <li>
            <t><tt>subjectPublicKeyInfo</tt> is hashed as <tt>subjectPublicKeyInfoHash</tt> in TBSCertificateLogEntry. Provided the underlying hash function is collision-resistant, no other values are possible for a given log entry.</t>
          </li>
        </ul>
        <t>X.509 implementations often implement <xref section="4.1.1.3" sectionFormat="of" target="RFC5280"/> by equivalently retaining the original received DER encoding, rather than recomputing the canonical DER encoding TBSCertificate. This optimization is compatible with the assumptions above.</t>
        <t>Some non-conforming X.509 implementations use a BER <xref target="X.690"/> parser instead of DER, and then apply this optimization to the received BER encoding. BER encoding is not unique, so this does not produce the same result. In such implementations, the BER-encoded TBSCertificate becomes also non-malleable, and applications may rely on this. To preserve this property in Merkle Tree Certificates, such non-conforming implementations MUST do the following when implementing <xref target="verifying-certificate-signatures"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Reparse the initial identifier (the SEQUENCE tag) and length octets of the TBSCertificate structure with a conforming DER parser and fail verification if invalid.</t>
          </li>
          <li>
            <t>When copying the <tt>version</tt>, <tt>issuer</tt>, <tt>validity</tt>, <tt>subject</tt>, <tt>issuerUniqueID</tt>, <tt>subjectUniqueID</tt>, and <tt>extensions</tt> fields, either copy over the observed BER encodings, or reparse each field with a conforming DER parser and fail verification if invalid.</t>
          </li>
          <li>
            <t>Reparse the <tt>serialNumber</tt> field with a conforming DER parser and fail verification if invalid.</t>
          </li>
          <li>
            <t>Reparse the <tt>signature</tt> field with a conforming DER parser and fail verification if invalid. Equivalently, check for an exact equality with for the expected, DER-encoded value.</t>
          </li>
          <li>
            <t>When hashing <tt>subjectPublicKeyInfo</tt>, either hash the observed BER encoding, or reparse the structure with a conforming DER parser and fail verification if invalid.</t>
          </li>
        </ul>
        <t>These additional checks are redundant in X.509 implementations that use a conforming DER parser.</t>
        <t><xref target="log-entries"/> requires that the TBSCertificateLogEntry in a MerkleTreeCertEntry be DER-encoded, so applying a stricter parser will be compatible with conforming CAs. While these existing non-conforming implementations may be unable to switch to a DER parser due to compatibility concerns, Merkle Tree Certificates is new, so there is no existing deployment of malformed BER-encoded TBSCertificateLogEntry structures.</t>
        <t>The above only ensures the TBSCertificate portion is non-malleable. In Merkle Tree Certificates, similar to ECDSA X.509 signature, the signature value is malleable. Multiple MTCProof structures may prove a single TBSCertificate structure. Additionally, in all X.509-based protocols, a BER-based parser for the outer, unsigned Certificate structure will admit malleability in those portions of the encoding. Applications that derive a unique identifier from the Certificate MUST instead use the TBSCertificate, or some portion of it, for Merkle Tree Certificates.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="module-identifier">
        <name>Module Identifier</name>
        <t>IANA is requested to add the following entry in the "SMI Security for PKIX Module Identifier" registry <xref target="RFC7299"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">id-mod-mtc-2025</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="algorithm">
        <name>Algorithm</name>
        <t>IANA is requested to add the following entry to the "SMI Security for PKIX Algorithms" registry <xref target="RFC7299"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">id-alg-mtcProof</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="relative-distinguished-name-attribute">
        <name>Relative Distinguished Name Attribute</name>
        <t>IANA is requested to add the following entry to the "SMI Security for PKIX Relative Distinguished Name Attribute" registry <xref target="I-D.ietf-lamps-x509-alg-none"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Decimal</th>
              <th align="left">Description</th>
              <th align="left">References</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">id-rdna-trustAnchorID</td>
              <td align="left">[this-RFC]</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="X.690">
          <front>
            <title>Information technology - ASN.1 encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ISO/IEC 8824-1:2021" value=""/>
        </reference>
        <reference anchor="RFC5912">
          <front>
            <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Public Key Infrastructure using X.509 (PKIX) certificate format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5912"/>
          <seriesInfo name="DOI" value="10.17487/RFC5912"/>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <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>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="FIPS204">
          <front>
            <title>Module-lattice-based digital signature standard</title>
            <author>
              <organization/>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.204"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="I-D.ietf-tls-trust-anchor-ids">
          <front>
            <title>TLS Trust Anchor Identifiers</title>
            <author fullname="Bob Beck" initials="B." surname="Beck">
              <organization>OpenSSL</organization>
            </author>
            <author fullname="David Benjamin" initials="D." surname="Benjamin">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Devon O'Brien" initials="D." surname="O'Brien">
         </author>
            <author fullname="Kyle Nekritz" initials="K." surname="Nekritz">
              <organization>Meta</organization>
            </author>
            <date day="15" month="September" year="2025"/>
            <abstract>
              <t>   This document defines the TLS Trust Anchors extension, a mechanism
   for relying parties to convey trusted certification authorities.  It
   describes individual certification authorities more succinctly than
   the TLS Certificate Authorities extension.

   Additionally, to support TLS clients with many trusted certification
   authorities, it supports a mode where servers describe their
   available certification paths and the client selects from them.
   Servers may describe this during connection setup, or in DNS for
   lower latency.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-trust-anchor-ids-02"/>
        </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>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </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="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
        <reference anchor="RFC8555">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <author fullname="D. McCarney" initials="D." surname="McCarney"/>
            <author fullname="J. Kasten" initials="J." surname="Kasten"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8555"/>
          <seriesInfo name="DOI" value="10.17487/RFC8555"/>
        </reference>
        <reference anchor="SHS">
          <front>
            <title>Secure hash standard</title>
            <author>
              <organization/>
            </author>
            <date year="2015"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.180-4"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="FIPS186-5">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <author>
              <organization/>
            </author>
            <date month="February" year="2023"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.186-5"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CHROME-CT" target="https://googlechrome.github.io/CertificateTransparency/ct_policy.html">
          <front>
            <title>Chrome Certificate Transparency Policy</title>
            <author>
              <organization>Google Chrome</organization>
            </author>
            <date year="2022" month="March" day="17"/>
          </front>
        </reference>
        <reference anchor="APPLE-CT" target="https://support.apple.com/en-us/HT205280">
          <front>
            <title>Apple's Certificate Transparency policy</title>
            <author>
              <organization>Apple</organization>
            </author>
            <date year="2021" month="March" day="05"/>
          </front>
        </reference>
        <reference anchor="CHROMIUM" target="https://chromium.googlesource.com/chromium/src/+/main/components/component_updater/README.md">
          <front>
            <title>Component Updater</title>
            <author>
              <organization>Chromium</organization>
            </author>
            <date year="2022" month="March" day="03"/>
          </front>
        </reference>
        <reference anchor="FIREFOX" target="https://wiki.mozilla.org/Firefox/RemoteSettings">
          <front>
            <title>Firefox Remote Settings</title>
            <author>
              <organization>Mozilla</organization>
            </author>
            <date year="2022" month="August" day="20"/>
          </front>
        </reference>
        <reference anchor="LetsEncrypt" target="https://letsencrypt.org/stats/">
          <front>
            <title>Let's Encrypt Stats</title>
            <author>
              <organization>Let's Encrypt</organization>
            </author>
            <date year="2023" month="March" day="07"/>
          </front>
        </reference>
        <reference anchor="MerkleTown" target="https://ct.cloudflare.com/">
          <front>
            <title>Merkle Town</title>
            <author>
              <organization>Cloudflare, Inc.</organization>
            </author>
            <date year="2023" month="March" day="07"/>
          </front>
        </reference>
        <reference anchor="SharedFactors" target="https://bora.uib.no/bora-xmlui/bitstream/handle/11250/3001128/Masters_thesis__for_University_of_Bergen.pdf">
          <front>
            <title>Finding shared RSA factors in the Certificate Transparency logs</title>
            <author initials="H. F." surname="Våge" fullname="Henry Faltin Våge">
              <organization/>
            </author>
            <author>
              <organization>University of Bergen</organization>
            </author>
            <date year="2022" month="May" day="13"/>
          </front>
        </reference>
        <reference anchor="STH-Discipline" target="https://mailarchive.ietf.org/arch/msg/trans/Zm4NqyRc7LDsOtV56EchBIT9r4c/">
          <front>
            <title>STH Discipline &amp; Security Considerations</title>
            <author initials="R." surname="Barnes" fullname="Richard Barnes">
              <organization/>
            </author>
            <date year="2017" month="March" day="03"/>
          </front>
        </reference>
        <reference anchor="CABF-153" target="https://cabforum.org/2015/11/11/ballot-153-short-lived-certificates/">
          <front>
            <title>Ballot 153 – Short-Lived Certificates</title>
            <author>
              <organization>CA/Browser Forum</organization>
            </author>
            <date year="2015" month="November" day="11"/>
          </front>
        </reference>
        <reference anchor="CABF-SC081" target="https://cabforum.org/2025/04/11/ballot-sc081v3-introduce-schedule-of-reducing-validity-and-data-reuse-periods/">
          <front>
            <title>Ballot SC081v3: Introduce Schedule of Reducing Validity and Data Reuse Periods</title>
            <author>
              <organization>CA/Browser Forum</organization>
            </author>
            <date year="2025" month="April" day="11"/>
          </front>
        </reference>
        <reference anchor="SCTNotAfter" target="https://dadrian.io/blog/posts/sct-not-after/">
          <front>
            <title>How to distrust a CA without any certificate errors</title>
            <author initials="D." surname="Adrian" fullname="David Adrian">
              <organization/>
            </author>
            <date year="2025" month="March"/>
          </front>
        </reference>
        <reference anchor="AuditingRevisited" target="https://eprint.iacr.org/2025/556.pdf">
          <front>
            <title>Private SCT Auditing, Revisited</title>
            <author initials="L." surname="Heimberger" fullname="Lena Heimberger">
              <organization/>
            </author>
            <author initials="C." surname="Patton" fullname="Christopher Patton">
              <organization/>
            </author>
            <author initials="B." surname="Westerbaan" fullname="Bas Westerbaan">
              <organization/>
            </author>
            <date year="2025" month="April" day="25"/>
          </front>
        </reference>
        <reference anchor="TLOG-TILES" target="https://c2sp.org/tlog-tiles">
          <front>
            <title>Tiled Transparency Logs</title>
            <author>
              <organization>C2SP</organization>
            </author>
            <date year="2025" month="June"/>
          </front>
        </reference>
        <reference anchor="TLOG-WITNESS" target="https://c2sp.org/tlog-witness">
          <front>
            <title>Transparency Log Witness Protocol</title>
            <author>
              <organization>C2SP</organization>
            </author>
            <date year="2025" month="June"/>
          </front>
        </reference>
        <reference anchor="TLOG-MIRROR" target="https://c2sp.org/tlog-mirror">
          <front>
            <title>Transparency Log Mirrors</title>
            <author>
              <organization>C2SP</organization>
            </author>
            <date year="2025" month="July"/>
          </front>
        </reference>
        <reference anchor="TLOG-CHECKPOINT" target="https://c2sp.org/tlog-checkpoint">
          <front>
            <title>Transparency Log Checkpoints</title>
            <author>
              <organization>C2SP</organization>
            </author>
            <date year="2024" month="March"/>
          </front>
        </reference>
        <reference anchor="SIGNED-NOTE" target="https://c2sp.org/signed-note">
          <front>
            <title>Note</title>
            <author>
              <organization>C2SP</organization>
            </author>
            <date year="2025" month="April"/>
          </front>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Kasper" initials="E." surname="Kasper"/>
            <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>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="RFC4514">
          <front>
            <title>Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names</title>
            <author fullname="K. Zeilenga" initials="K." role="editor" surname="Zeilenga"/>
            <date month="June" year="2006"/>
            <abstract>
              <t>The X.500 Directory uses distinguished names (DNs) as primary keys to entries in the directory. This document defines the string representation used in the Lightweight Directory Access Protocol (LDAP) to transfer distinguished names. The string representation is designed to give a clean representation of commonly used distinguished names, while being able to represent any distinguished name. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4514"/>
          <seriesInfo name="DOI" value="10.17487/RFC4514"/>
        </reference>
        <reference anchor="RFC6973">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
        <reference anchor="RFC7299">
          <front>
            <title>Object Identifier Registry for the PKIX Working Group</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>When the Public-Key Infrastructure using X.509 (PKIX) Working Group was chartered, an object identifier arc was allocated by IANA for use by that working group. This document describes the object identifiers that were assigned in that arc, returns control of that arc to IANA, and establishes IANA allocation policies for any future assignments within that arc.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7299"/>
          <seriesInfo name="DOI" value="10.17487/RFC7299"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-x509-alg-none">
          <front>
            <title>Unsigned X.509 Certificates</title>
            <author fullname="David Benjamin" initials="D." surname="Benjamin">
              <organization>Google LLC</organization>
            </author>
            <date day="5" month="September" year="2025"/>
            <abstract>
              <t>   This document defines a placeholder X.509 signature algorithm that
   may be used in contexts where the consumer of the certificate is not
   expected to verify the signature.  As part of this, it updates RFC
   5280.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-x509-alg-none-10"/>
        </reference>
      </references>
    </references>
    <?line 1660?>

<section anchor="asn1-module">
      <name>ASN.1 Module</name>
      <sourcecode type="asn.1"><![CDATA[
MerkleTreeCertificates
  { iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7) id-mod(0)
    id-mod-mtc-2025(TBD) }

DEFINITIONS IMPLICIT TAGS ::=
BEGIN

IMPORTS
  SIGNATURE-ALGORITHM
  FROM AlgorithmInformation-2009  -- in [RFC5912]
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-algorithmInformation-02(58) }
  Extensions{}, ATTRIBUTE
  FROM PKIX-CommonTypes-2009 -- in [RFC5912]
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-pkixCommon-02(57) }
  CertExtensions
  FROM PKIX1Implicit-2009 -- in [RFC5912]
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-pkix1-implicit-02(59) }
  Version, Name, Validity, UniqueIdentifier
  FROM PKIX1Explicit-2009 -- in [RFC5912]
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-pkix1-explicit-02(51) }
  TrustAnchorID
  FROM TrustAnchorIDs-2025 -- in [I-D.ietf-tls-trust-ancohor-ids]
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-trustAnchorIDs-2025(TBD) } ;

TBSCertificateLogEntry  ::=  SEQUENCE  {
      version             [0]  EXPLICIT Version DEFAULT v1,
      issuer                   Name,
      validity                 Validity,
      subject                  Name,
      subjectPublicKeyInfoHash OCTET STRING,
      issuerUniqueID      [1]  IMPLICIT UniqueIdentifier OPTIONAL,
      subjectUniqueID     [2]  IMPLICIT UniqueIdentifier OPTIONAL,
      extensions          [3]  EXPLICIT Extensions{{CertExtensions}} OPTIONAL }

id-alg-mtcProof OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) algorithms(6) TBD}

sa-mtcProof SIGNATURE-ALGORITHM ::= {
   IDENTIFIER id-alg-mtcProof
   PARAMS ARE absent
}

id-rdna-trustAnchorID OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) rdna(25) TBD}

at-trustAnchorID ATTRIBUTE ::= {
   TYPE TrustAnchorID
   IDENTIFIED BY id-rdna-trustAnchorID
}

END
]]></sourcecode>
    </section>
    <section anchor="merkle-tree-structure">
      <name>Merkle Tree Structure</name>
      <t>This non-normative section describes how the Merkle Tree structure relates to the binary representations of indices. It is included to help implementors understand the procedures described in <xref target="subtrees"/>.</t>
      <section anchor="binary-representations">
        <name>Binary Representations</name>
        <t>Within a Merkle Tree whose size is a power of two, the binary representation of an leaf's index gives the path to that leaf. The leaf is a left child if the least-significant bit is unset and a right child if it is set. The next bit indicates the direction of the parent node, and so on. <xref target="fig-merkle-tree-bits-full"/> demonstrates this in a Merkle Tree of size 8:</t>
        <figure anchor="fig-merkle-tree-bits-full">
          <name>An example Merkle Tree of size 8</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="328" viewBox="0 0 328 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                <path d="M 24,224 L 24,256" fill="none" stroke="black"/>
                <path d="M 32,96 L 32,128" fill="none" stroke="black"/>
                <path d="M 40,224 L 40,256" fill="none" stroke="black"/>
                <path d="M 56,160 L 56,192" fill="none" stroke="black"/>
                <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                <path d="M 64,32 L 64,64" fill="none" stroke="black"/>
                <path d="M 72,160 L 72,192" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                <path d="M 88,224 L 88,256" fill="none" stroke="black"/>
                <path d="M 104,96 L 104,128" fill="none" stroke="black"/>
                <path d="M 104,224 L 104,256" fill="none" stroke="black"/>
                <path d="M 120,160 L 120,192" fill="none" stroke="black"/>
                <path d="M 120,224 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,160 L 136,192" fill="none" stroke="black"/>
                <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                <path d="M 152,224 L 152,256" fill="none" stroke="black"/>
                <path d="M 160,96 L 160,128" fill="none" stroke="black"/>
                <path d="M 168,224 L 168,256" fill="none" stroke="black"/>
                <path d="M 184,160 L 184,192" fill="none" stroke="black"/>
                <path d="M 184,224 L 184,256" fill="none" stroke="black"/>
                <path d="M 200,32 L 200,64" fill="none" stroke="black"/>
                <path d="M 200,160 L 200,192" fill="none" stroke="black"/>
                <path d="M 200,224 L 200,256" fill="none" stroke="black"/>
                <path d="M 216,224 L 216,256" fill="none" stroke="black"/>
                <path d="M 232,96 L 232,128" fill="none" stroke="black"/>
                <path d="M 232,224 L 232,256" fill="none" stroke="black"/>
                <path d="M 248,160 L 248,192" fill="none" stroke="black"/>
                <path d="M 248,224 L 248,256" fill="none" stroke="black"/>
                <path d="M 64,32 L 200,32" fill="none" stroke="black"/>
                <path d="M 64,64 L 200,64" fill="none" stroke="black"/>
                <path d="M 32,96 L 104,96" fill="none" stroke="black"/>
                <path d="M 160,96 L 232,96" fill="none" stroke="black"/>
                <path d="M 32,128 L 104,128" fill="none" stroke="black"/>
                <path d="M 160,128 L 232,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 56,160" fill="none" stroke="black"/>
                <path d="M 72,160 L 120,160" fill="none" stroke="black"/>
                <path d="M 136,160 L 184,160" fill="none" stroke="black"/>
                <path d="M 200,160 L 248,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 56,192" fill="none" stroke="black"/>
                <path d="M 72,192 L 120,192" fill="none" stroke="black"/>
                <path d="M 136,192 L 184,192" fill="none" stroke="black"/>
                <path d="M 200,192 L 248,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 24,224" fill="none" stroke="black"/>
                <path d="M 40,224 L 56,224" fill="none" stroke="black"/>
                <path d="M 72,224 L 88,224" fill="none" stroke="black"/>
                <path d="M 104,224 L 120,224" fill="none" stroke="black"/>
                <path d="M 136,224 L 152,224" fill="none" stroke="black"/>
                <path d="M 168,224 L 184,224" fill="none" stroke="black"/>
                <path d="M 200,224 L 216,224" fill="none" stroke="black"/>
                <path d="M 232,224 L 248,224" fill="none" stroke="black"/>
                <path d="M 8,256 L 24,256" fill="none" stroke="black"/>
                <path d="M 40,256 L 56,256" fill="none" stroke="black"/>
                <path d="M 72,256 L 88,256" fill="none" stroke="black"/>
                <path d="M 104,256 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,256 L 152,256" fill="none" stroke="black"/>
                <path d="M 168,256 L 184,256" fill="none" stroke="black"/>
                <path d="M 200,256 L 216,256" fill="none" stroke="black"/>
                <path d="M 232,256 L 248,256" fill="none" stroke="black"/>
                <g class="text">
                  <text x="120" y="52">[0,</text>
                  <text x="148" y="52">8)</text>
                  <text x="288" y="52">level</text>
                  <text x="320" y="52">3</text>
                  <text x="72" y="84">/</text>
                  <text x="192" y="84">\</text>
                  <text x="56" y="116">[0,</text>
                  <text x="84" y="116">4)</text>
                  <text x="184" y="116">[4,</text>
                  <text x="212" y="116">8)</text>
                  <text x="288" y="116">level</text>
                  <text x="320" y="116">2</text>
                  <text x="40" y="148">/</text>
                  <text x="96" y="148">\</text>
                  <text x="168" y="148">/</text>
                  <text x="224" y="148">\</text>
                  <text x="32" y="180">[0,2)</text>
                  <text x="96" y="180">[2,4)</text>
                  <text x="160" y="180">[4,6)</text>
                  <text x="224" y="180">[6,8)</text>
                  <text x="288" y="180">level</text>
                  <text x="320" y="180">1</text>
                  <text x="24" y="212">/</text>
                  <text x="40" y="212">\</text>
                  <text x="88" y="212">/</text>
                  <text x="104" y="212">\</text>
                  <text x="152" y="212">/</text>
                  <text x="168" y="212">\</text>
                  <text x="216" y="212">/</text>
                  <text x="232" y="212">\</text>
                  <text x="16" y="244">0</text>
                  <text x="48" y="244">1</text>
                  <text x="80" y="244">2</text>
                  <text x="112" y="244">3</text>
                  <text x="144" y="244">4</text>
                  <text x="176" y="244">5</text>
                  <text x="208" y="244">6</text>
                  <text x="240" y="244">7</text>
                  <text x="288" y="244">level</text>
                  <text x="320" y="244">0</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
       +----------------+
       |     [0, 8)     |        level 3
       +----------------+
        /              \
   +--------+      +--------+
   | [0, 4) |      | [4, 8) |    level 2
   +--------+      +--------+
    /      \        /      \
+-----+ +-----+ +-----+ +-----+
|[0,2)| |[2,4)| |[4,6)| |[6,8)|  level 1
+-----+ +-----+ +-----+ +-----+
  / \     / \     / \     / \
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
|0| |1| |2| |3| |4| |5| |6| |7|  level 0
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
]]></artwork>
          </artset>
        </figure>
        <t>The binary representation of <tt>4</tt> is <tt>0b100</tt>. It is the left (0) child of <tt>[4, 6)</tt>, which is the left (0) child of <tt>[4, 8)</tt>, which is the right (1) child of <tt>[0, 8)</tt>.</t>
        <t>Each level in the tree corresponds to a bit position and can be correspondingly numbered, with 0 indicating the least-significant bit and the leaf level, and so on. In this numbering, a node's level can be determined as follows: if the node is a root of subtree <tt>[start, end)</tt>, the node's level is <tt>BIT_WIDTH(end - start - 1)</tt>.</t>
        <t>Comparing two indices determines the relationship between two paths. The highest differing bit gives the level at which paths from root to leaf diverge. For example, the bit representations of 4 and 6 are <tt>0b100</tt> and <tt>0b110</tt>, respectively. The highest differing bit is bit 1. Bits 2 and up are the same between the two indices. This indicates that the paths from the root to leaves 4 and 6 diverge when going to level 2 to level 1.</t>
        <t>This can be generalized to arbitrary-sized Merkle Trees. <xref target="fig-merkle-tree-bits-partial"/> depicts a Merkle Tree of size 6:</t>
        <figure anchor="fig-merkle-tree-bits-partial">
          <name>An example Merkle Tree of size 6</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="272" viewBox="0 0 272 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                <path d="M 24,224 L 24,256" fill="none" stroke="black"/>
                <path d="M 32,96 L 32,128" fill="none" stroke="black"/>
                <path d="M 40,224 L 40,256" fill="none" stroke="black"/>
                <path d="M 56,160 L 56,192" fill="none" stroke="black"/>
                <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                <path d="M 64,32 L 64,64" fill="none" stroke="black"/>
                <path d="M 72,160 L 72,192" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                <path d="M 88,224 L 88,256" fill="none" stroke="black"/>
                <path d="M 104,96 L 104,128" fill="none" stroke="black"/>
                <path d="M 104,224 L 104,256" fill="none" stroke="black"/>
                <path d="M 120,160 L 120,192" fill="none" stroke="black"/>
                <path d="M 120,224 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,160 L 136,192" fill="none" stroke="black"/>
                <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                <path d="M 152,224 L 152,256" fill="none" stroke="black"/>
                <path d="M 160,72 L 160,152" fill="none" stroke="black"/>
                <path d="M 168,224 L 168,256" fill="none" stroke="black"/>
                <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
                <path d="M 184,160 L 184,192" fill="none" stroke="black"/>
                <path d="M 184,224 L 184,256" fill="none" stroke="black"/>
                <path d="M 64,32 L 184,32" fill="none" stroke="black"/>
                <path d="M 64,64 L 184,64" fill="none" stroke="black"/>
                <path d="M 32,96 L 104,96" fill="none" stroke="black"/>
                <path d="M 32,128 L 104,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 56,160" fill="none" stroke="black"/>
                <path d="M 72,160 L 120,160" fill="none" stroke="black"/>
                <path d="M 136,160 L 184,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 56,192" fill="none" stroke="black"/>
                <path d="M 72,192 L 120,192" fill="none" stroke="black"/>
                <path d="M 136,192 L 184,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 24,224" fill="none" stroke="black"/>
                <path d="M 40,224 L 56,224" fill="none" stroke="black"/>
                <path d="M 72,224 L 88,224" fill="none" stroke="black"/>
                <path d="M 104,224 L 120,224" fill="none" stroke="black"/>
                <path d="M 136,224 L 152,224" fill="none" stroke="black"/>
                <path d="M 168,224 L 184,224" fill="none" stroke="black"/>
                <path d="M 8,256 L 24,256" fill="none" stroke="black"/>
                <path d="M 40,256 L 56,256" fill="none" stroke="black"/>
                <path d="M 72,256 L 88,256" fill="none" stroke="black"/>
                <path d="M 104,256 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,256 L 152,256" fill="none" stroke="black"/>
                <path d="M 168,256 L 184,256" fill="none" stroke="black"/>
                <circle cx="160" cy="112" r="6" class="closeddot" fill="black"/>
                <g class="text">
                  <text x="120" y="52">[0,</text>
                  <text x="148" y="52">6)</text>
                  <text x="232" y="52">level</text>
                  <text x="264" y="52">3</text>
                  <text x="72" y="84">/</text>
                  <text x="56" y="116">[0,</text>
                  <text x="84" y="116">4)</text>
                  <text x="232" y="116">level</text>
                  <text x="264" y="116">2</text>
                  <text x="40" y="148">/</text>
                  <text x="96" y="148">\</text>
                  <text x="32" y="180">[0,2)</text>
                  <text x="96" y="180">[2,4)</text>
                  <text x="160" y="180">[4,6)</text>
                  <text x="232" y="180">level</text>
                  <text x="264" y="180">1</text>
                  <text x="24" y="212">/</text>
                  <text x="40" y="212">\</text>
                  <text x="88" y="212">/</text>
                  <text x="104" y="212">\</text>
                  <text x="152" y="212">/</text>
                  <text x="168" y="212">\</text>
                  <text x="16" y="244">0</text>
                  <text x="48" y="244">1</text>
                  <text x="80" y="244">2</text>
                  <text x="112" y="244">3</text>
                  <text x="144" y="244">4</text>
                  <text x="176" y="244">5</text>
                  <text x="232" y="244">level</text>
                  <text x="264" y="244">0</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
       +--------------+
       |     [0, 6)   |   level 3
       +--------------+
        /          |
   +--------+      |
   | [0, 4) |      *      level 2
   +--------+      |
    /      \       |
+-----+ +-----+ +-----+
|[0,2)| |[2,4)| |[4,6)|   level 1
+-----+ +-----+ +-----+
  / \     / \     / \
+-+ +-+ +-+ +-+ +-+ +-+
|0| |1| |2| |3| |4| |5|   level 0
+-+ +-+ +-+ +-+ +-+ +-+
]]></artwork>
          </artset>
        </figure>
        <t>When the size of a Merkle Tree is not a power of two, some levels on the rightmost edge of the tree are skipped. The rightmost edge is the path to the last element. The skipped levels can be seen in its binary representation. Here, the last element is 5, which has binary representation <tt>0b101</tt>. When a bit is set, the corresponding node is a right child. When it is unset, the corresponding node is skipped.</t>
        <t>In a tree of the next power of two size, the skipped nodes in this path are where there <em>would</em> have been a right child, had there been enough elements to construct one. Without a right child, the hash operation is skipped and a skipped node has the same value as its singular child. <xref target="fig-merkle-tree-bits-partial-comparison"/> depicts this for a tree of size 6.</t>
        <figure anchor="fig-merkle-tree-bits-partial-comparison">
          <name>An example Merkle Tree of size 6, viewed as a subset of a tree of size 8</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="328" viewBox="0 0 328 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                <path d="M 24,224 L 24,256" fill="none" stroke="black"/>
                <path d="M 32,96 L 32,128" fill="none" stroke="black"/>
                <path d="M 40,224 L 40,256" fill="none" stroke="black"/>
                <path d="M 56,160 L 56,192" fill="none" stroke="black"/>
                <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                <path d="M 64,32 L 64,64" fill="none" stroke="black"/>
                <path d="M 72,160 L 72,192" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                <path d="M 88,224 L 88,256" fill="none" stroke="black"/>
                <path d="M 104,96 L 104,128" fill="none" stroke="black"/>
                <path d="M 104,224 L 104,256" fill="none" stroke="black"/>
                <path d="M 120,160 L 120,192" fill="none" stroke="black"/>
                <path d="M 120,224 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,160 L 136,192" fill="none" stroke="black"/>
                <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                <path d="M 152,224 L 152,256" fill="none" stroke="black"/>
                <path d="M 160,96 L 160,128" fill="none" stroke="black"/>
                <path d="M 168,224 L 168,256" fill="none" stroke="black"/>
                <path d="M 184,160 L 184,192" fill="none" stroke="black"/>
                <path d="M 184,224 L 184,256" fill="none" stroke="black"/>
                <path d="M 200,32 L 200,64" fill="none" stroke="black"/>
                <path d="M 200,160 L 200,192" fill="none" stroke="black"/>
                <path d="M 200,224 L 200,256" fill="none" stroke="black"/>
                <path d="M 216,224 L 216,256" fill="none" stroke="black"/>
                <path d="M 232,96 L 232,128" fill="none" stroke="black"/>
                <path d="M 232,224 L 232,256" fill="none" stroke="black"/>
                <path d="M 248,160 L 248,192" fill="none" stroke="black"/>
                <path d="M 248,224 L 248,256" fill="none" stroke="black"/>
                <path d="M 64,32 L 200,32" fill="none" stroke="black"/>
                <path d="M 64,64 L 200,64" fill="none" stroke="black"/>
                <path d="M 32,96 L 104,96" fill="none" stroke="black"/>
                <path d="M 160,96 L 232,96" fill="none" stroke="black"/>
                <path d="M 32,128 L 104,128" fill="none" stroke="black"/>
                <path d="M 160,128 L 232,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 56,160" fill="none" stroke="black"/>
                <path d="M 72,160 L 120,160" fill="none" stroke="black"/>
                <path d="M 136,160 L 184,160" fill="none" stroke="black"/>
                <path d="M 200,160 L 248,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 56,192" fill="none" stroke="black"/>
                <path d="M 72,192 L 120,192" fill="none" stroke="black"/>
                <path d="M 136,192 L 184,192" fill="none" stroke="black"/>
                <path d="M 200,192 L 248,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 24,224" fill="none" stroke="black"/>
                <path d="M 40,224 L 56,224" fill="none" stroke="black"/>
                <path d="M 72,224 L 88,224" fill="none" stroke="black"/>
                <path d="M 104,224 L 120,224" fill="none" stroke="black"/>
                <path d="M 136,224 L 152,224" fill="none" stroke="black"/>
                <path d="M 168,224 L 184,224" fill="none" stroke="black"/>
                <path d="M 200,224 L 216,224" fill="none" stroke="black"/>
                <path d="M 232,224 L 248,224" fill="none" stroke="black"/>
                <path d="M 8,256 L 24,256" fill="none" stroke="black"/>
                <path d="M 40,256 L 56,256" fill="none" stroke="black"/>
                <path d="M 72,256 L 88,256" fill="none" stroke="black"/>
                <path d="M 104,256 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,256 L 152,256" fill="none" stroke="black"/>
                <path d="M 168,256 L 184,256" fill="none" stroke="black"/>
                <path d="M 200,256 L 216,256" fill="none" stroke="black"/>
                <path d="M 232,256 L 248,256" fill="none" stroke="black"/>
                <g class="text">
                  <text x="120" y="52">[0,</text>
                  <text x="148" y="52">6)</text>
                  <text x="288" y="52">level</text>
                  <text x="320" y="52">3</text>
                  <text x="72" y="84">/</text>
                  <text x="192" y="84">\</text>
                  <text x="56" y="116">[0,</text>
                  <text x="84" y="116">4)</text>
                  <text x="184" y="116">[4,</text>
                  <text x="212" y="116">6)</text>
                  <text x="288" y="116">level</text>
                  <text x="320" y="116">2</text>
                  <text x="40" y="148">/</text>
                  <text x="96" y="148">\</text>
                  <text x="168" y="148">/</text>
                  <text x="224" y="148">\</text>
                  <text x="32" y="180">[0,2)</text>
                  <text x="96" y="180">[2,4)</text>
                  <text x="160" y="180">[4,6)</text>
                  <text x="288" y="180">level</text>
                  <text x="320" y="180">1</text>
                  <text x="24" y="212">/</text>
                  <text x="40" y="212">\</text>
                  <text x="88" y="212">/</text>
                  <text x="104" y="212">\</text>
                  <text x="152" y="212">/</text>
                  <text x="168" y="212">\</text>
                  <text x="216" y="212">/</text>
                  <text x="232" y="212">\</text>
                  <text x="16" y="244">0</text>
                  <text x="48" y="244">1</text>
                  <text x="80" y="244">2</text>
                  <text x="112" y="244">3</text>
                  <text x="144" y="244">4</text>
                  <text x="176" y="244">5</text>
                  <text x="288" y="244">level</text>
                  <text x="320" y="244">0</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
       +----------------+
       |     [0, 6)     |        level 3
       +----------------+
        /              \
   +--------+      +--------+
   | [0, 4) |      | [4, 6) |    level 2
   +--------+      +--------+
    /      \        /      \
+-----+ +-----+ +-----+ +-----+
|[0,2)| |[2,4)| |[4,6)| |     |  level 1
+-----+ +-----+ +-----+ +-----+
  / \     / \     / \     / \
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
|0| |1| |2| |3| |4| |5| | | | |  level 0
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
]]></artwork>
          </artset>
        </figure>
        <t>Zero bits also indicate skipped nodes in paths that have not yet diverged from the rightmost edge (i.e. the path to the last element), when viewed from root to leaf. In the example, the binary representation of 4 is <tt>0b100</tt>. While bit 0 and bit 1 are both unset, they manifest in the tree differently. Bit 0 indicates that 4 is a right child. However, at bit 1, <tt>0b100</tt> has not yet diverged from the last element, <tt>0b101</tt>. That instead indicates a skipped node, not a left child.</t>
      </section>
      <section anchor="inclusion-proof-evaluation-explain">
        <name>Inclusion Proof Evaluation</name>
        <t>The procedure in <xref target="evaluating-a-subtree-inclusion-proof"/> builds up a subtree hash in <tt>r</tt> by staring from <tt>entry_hash</tt> and iteratively hashing elements of <tt>inclusion_proof</tt> on the left or right. That means this procedure, when successful, must return <em>some</em> hash that contains <tt>entry_hash</tt>.</t>
        <t>Treating <tt>[start, end)</tt> as a Merkle Tree of size <tt>end - start</tt>, the procedure hashes by based on the path to <tt>index</tt>. Within this smaller Merkle Tree, it has index <tt>fn = index - start</tt> (first number), and the last element has index <tt>sn = end - start - 1</tt> (second number).</t>
        <t>Step 4 iterates through <tt>inclusion_proof</tt> and the paths to <tt>fn</tt> and <tt>sn</tt> in parallel. As the procedure right-shifts <tt>fn</tt> and <tt>sn</tt> and looks at the least-significant bit, it moves up the two paths, towards the root. When <tt>sn</tt> is zero, the procedure has reached the top of the tree. The procedure checks that the two iterations complete together.</t>
        <t>Iterating from level 0 up, <tt>fn</tt> and <tt>sn</tt> will initially be different. While they are different, step 4.2 hashes on the left or right based on the binary representation, as discussed in <xref target="binary-representations"/>.</t>
        <t>Once <tt>fn = sn</tt>, the remainder of the path is on the right edge. At that point, the condition in step 4.2 is always true. It only incorporates proof entries on the left, once per set bit. Unset bits are skipped.</t>
        <t>Inclusion proofs can also be evaluated by considering these two stages separately. The first stage consumes <tt>l1 = BIT_WIDTH(fn XOR sn)</tt> proof entries. The second stage consumes <tt>l2 = POPCOUNT(fn &gt;&gt; l1)</tt> proof entries. A valid inclusion proof must then have <tt>l1 + l2</tt> entries. The first <tt>l1</tt> entries are hashed based on <tt>fn</tt>'s least significant bits, and the remaining <tt>l2</tt> entries are hashed on the left.</t>
      </section>
      <section anchor="consistency-proof-structure">
        <name>Consistency Proof Structure</name>
        <t>A subtree consistency proof for <tt>[start, end)</tt> and the tree of <tt>n</tt> elements is similar to an inclusion proof for element <tt>end - 1</tt>. If one starts from <tt>end - 1</tt>'s hash, incorporating the whole inclusion proof should reconstruct <tt>root_hash</tt> and incorporating a subset of the inclusion proof should reconstruct <tt>node_hash</tt>. Thus <tt>end - 1</tt>'s hash and this inclusion proof can prove consistency. A subtree consistency proof in this document applies two optimizations over this construction:</t>
        <ol spacing="normal" type="1"><li>
            <t>Instead of starting at level 0 with <tt>end - 1</tt>, the proof can start at a higher level. Any ancestor of <tt>end - 1</tt> shared by both the subtree and the overall tree is a valid starting node to reconstruct <tt>node_hash</tt> and <tt>root_hash</tt>. Use the highest level with a commmon ancestor. This truncates the inclusion proof portion of the consistency proof.</t>
          </li>
          <li>
            <t>If this starting node is the entire subtree, omit its hash from the consistency proof. The verifier is assumed to already know <tt>node_hash</tt>.</t>
          </li>
        </ol>
        <t>A Merkle consistency proof, defined in <xref section="2.1.4" sectionFormat="of" target="RFC9162"/>, applies these same optimizations.</t>
        <t><xref target="fig-truncate-consistency-proof"/> depicts a subtree consistency proof between the subtree <tt>[0, 6)</tt> and the Merkle Tree of size 8. The consistency proof begins at level 1, or node <tt>[4, 6)</tt>. The inclusion proof portion is similarly truncated to start at level 1: <tt>[6, 8)</tt> and <tt>[0, 4)</tt>. If the consistency proof began at level 0, the starting node would be leaf 5, and the consistency proof would additionally include leaf 4.</t>
        <figure anchor="fig-truncate-consistency-proof">
          <name>A subtree consistency proof that starts at level 1 instead of level 0</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="544" width="336" viewBox="0 0 336 544" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                <path d="M 8,432 L 8,464" fill="none" stroke="black"/>
                <path d="M 8,496 L 8,528" fill="none" stroke="black"/>
                <path d="M 24,224 L 24,256" fill="none" stroke="black"/>
                <path d="M 24,496 L 24,528" fill="none" stroke="black"/>
                <path d="M 32,96 L 32,128" fill="none" stroke="black"/>
                <path d="M 32,368 L 32,400" fill="none" stroke="black"/>
                <path d="M 40,224 L 40,256" fill="none" stroke="black"/>
                <path d="M 40,496 L 40,528" fill="none" stroke="black"/>
                <path d="M 56,160 L 56,192" fill="none" stroke="black"/>
                <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                <path d="M 56,432 L 56,464" fill="none" stroke="black"/>
                <path d="M 56,496 L 56,528" fill="none" stroke="black"/>
                <path d="M 64,32 L 64,64" fill="none" stroke="black"/>
                <path d="M 64,304 L 64,336" fill="none" stroke="black"/>
                <path d="M 72,160 L 72,192" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                <path d="M 72,432 L 72,464" fill="none" stroke="black"/>
                <path d="M 72,496 L 72,528" fill="none" stroke="black"/>
                <path d="M 88,224 L 88,256" fill="none" stroke="black"/>
                <path d="M 88,496 L 88,528" fill="none" stroke="black"/>
                <path d="M 104,96 L 104,128" fill="none" stroke="black"/>
                <path d="M 104,224 L 104,256" fill="none" stroke="black"/>
                <path d="M 104,368 L 104,400" fill="none" stroke="black"/>
                <path d="M 104,496 L 104,528" fill="none" stroke="black"/>
                <path d="M 120,160 L 120,192" fill="none" stroke="black"/>
                <path d="M 120,224 L 120,256" fill="none" stroke="black"/>
                <path d="M 120,432 L 120,464" fill="none" stroke="black"/>
                <path d="M 120,496 L 120,528" fill="none" stroke="black"/>
                <path d="M 128,96 L 128,128" fill="none" stroke="black"/>
                <path d="M 136,160 L 136,192" fill="none" stroke="black"/>
                <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                <path d="M 136,432 L 136,464" fill="none" stroke="black"/>
                <path d="M 136,496 L 136,528" fill="none" stroke="black"/>
                <path d="M 152,224 L 152,256" fill="none" stroke="black"/>
                <path d="M 152,496 L 152,528" fill="none" stroke="black"/>
                <path d="M 160,368 L 160,400" fill="none" stroke="black"/>
                <path d="M 168,224 L 168,256" fill="none" stroke="black"/>
                <path d="M 168,496 L 168,528" fill="none" stroke="black"/>
                <path d="M 184,160 L 184,192" fill="none" stroke="black"/>
                <path d="M 184,224 L 184,256" fill="none" stroke="black"/>
                <path d="M 184,432 L 184,464" fill="none" stroke="black"/>
                <path d="M 184,496 L 184,528" fill="none" stroke="black"/>
                <path d="M 200,32 L 200,64" fill="none" stroke="black"/>
                <path d="M 200,96 L 200,128" fill="none" stroke="black"/>
                <path d="M 200,304 L 200,336" fill="none" stroke="black"/>
                <path d="M 200,432 L 200,464" fill="none" stroke="black"/>
                <path d="M 200,496 L 200,528" fill="none" stroke="black"/>
                <path d="M 216,496 L 216,528" fill="none" stroke="black"/>
                <path d="M 232,368 L 232,400" fill="none" stroke="black"/>
                <path d="M 232,496 L 232,528" fill="none" stroke="black"/>
                <path d="M 248,432 L 248,464" fill="none" stroke="black"/>
                <path d="M 248,496 L 248,528" fill="none" stroke="black"/>
                <path d="M 64,32 L 200,32" fill="none" stroke="black"/>
                <path d="M 64,64 L 200,64" fill="none" stroke="black"/>
                <path d="M 32,94 L 104,94" fill="none" stroke="black"/>
                <path d="M 32,98 L 104,98" fill="none" stroke="black"/>
                <path d="M 128,96 L 200,96" fill="none" stroke="black"/>
                <path d="M 32,126 L 104,126" fill="none" stroke="black"/>
                <path d="M 32,130 L 104,130" fill="none" stroke="black"/>
                <path d="M 128,128 L 200,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 56,160" fill="none" stroke="black"/>
                <path d="M 72,160 L 120,160" fill="none" stroke="black"/>
                <path d="M 136,160 Q 138,156.8 140,160 Q 142,163.2 144,160 Q 146,156.8 148,160 Q 150,163.2 152,160 Q 154,156.8 156,160 Q 158,163.2 160,160 Q 162,156.8 164,160 Q 166,163.2 168,160 Q 170,156.8 172,160 Q 174,163.2 176,160 Q 178,156.8 180,160 Q 182,163.2 184,160 " fill="none" stroke="black"/>
                <path d="M 8,192 L 56,192" fill="none" stroke="black"/>
                <path d="M 72,192 L 120,192" fill="none" stroke="black"/>
                <path d="M 136,192 Q 138,188.8 140,192 Q 142,195.2 144,192 Q 146,188.8 148,192 Q 150,195.2 152,192 Q 154,188.8 156,192 Q 158,195.2 160,192 Q 162,188.8 164,192 Q 166,195.2 168,192 Q 170,188.8 172,192 Q 174,195.2 176,192 Q 178,188.8 180,192 Q 182,195.2 184,192 " fill="none" stroke="black"/>
                <path d="M 8,224 L 24,224" fill="none" stroke="black"/>
                <path d="M 40,224 L 56,224" fill="none" stroke="black"/>
                <path d="M 72,224 L 88,224" fill="none" stroke="black"/>
                <path d="M 104,224 L 120,224" fill="none" stroke="black"/>
                <path d="M 136,224 L 152,224" fill="none" stroke="black"/>
                <path d="M 168,224 L 184,224" fill="none" stroke="black"/>
                <path d="M 8,256 L 24,256" fill="none" stroke="black"/>
                <path d="M 40,256 L 56,256" fill="none" stroke="black"/>
                <path d="M 72,256 L 88,256" fill="none" stroke="black"/>
                <path d="M 104,256 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,256 L 152,256" fill="none" stroke="black"/>
                <path d="M 168,256 L 184,256" fill="none" stroke="black"/>
                <path d="M 64,304 L 200,304" fill="none" stroke="black"/>
                <path d="M 64,336 L 200,336" fill="none" stroke="black"/>
                <path d="M 32,366 L 104,366" fill="none" stroke="black"/>
                <path d="M 32,370 L 104,370" fill="none" stroke="black"/>
                <path d="M 160,368 L 232,368" fill="none" stroke="black"/>
                <path d="M 32,398 L 104,398" fill="none" stroke="black"/>
                <path d="M 32,402 L 104,402" fill="none" stroke="black"/>
                <path d="M 160,400 L 232,400" fill="none" stroke="black"/>
                <path d="M 8,432 L 56,432" fill="none" stroke="black"/>
                <path d="M 72,432 L 120,432" fill="none" stroke="black"/>
                <path d="M 136,432 Q 138,428.8 140,432 Q 142,435.2 144,432 Q 146,428.8 148,432 Q 150,435.2 152,432 Q 154,428.8 156,432 Q 158,435.2 160,432 Q 162,428.8 164,432 Q 166,435.2 168,432 Q 170,428.8 172,432 Q 174,435.2 176,432 Q 178,428.8 180,432 Q 182,435.2 184,432 " fill="none" stroke="black"/>
                <path d="M 200,430 L 248,430" fill="none" stroke="black"/>
                <path d="M 200,434 L 248,434" fill="none" stroke="black"/>
                <path d="M 8,464 L 56,464" fill="none" stroke="black"/>
                <path d="M 72,464 L 120,464" fill="none" stroke="black"/>
                <path d="M 136,464 Q 138,460.8 140,464 Q 142,467.2 144,464 Q 146,460.8 148,464 Q 150,467.2 152,464 Q 154,460.8 156,464 Q 158,467.2 160,464 Q 162,460.8 164,464 Q 166,467.2 168,464 Q 170,460.8 172,464 Q 174,467.2 176,464 Q 178,460.8 180,464 Q 182,467.2 184,464 " fill="none" stroke="black"/>
                <path d="M 200,462 L 248,462" fill="none" stroke="black"/>
                <path d="M 200,466 L 248,466" fill="none" stroke="black"/>
                <path d="M 8,496 L 24,496" fill="none" stroke="black"/>
                <path d="M 40,496 L 56,496" fill="none" stroke="black"/>
                <path d="M 72,496 L 88,496" fill="none" stroke="black"/>
                <path d="M 104,496 L 120,496" fill="none" stroke="black"/>
                <path d="M 136,496 L 152,496" fill="none" stroke="black"/>
                <path d="M 168,496 L 184,496" fill="none" stroke="black"/>
                <path d="M 200,496 L 216,496" fill="none" stroke="black"/>
                <path d="M 232,496 L 248,496" fill="none" stroke="black"/>
                <path d="M 8,528 L 24,528" fill="none" stroke="black"/>
                <path d="M 40,528 L 56,528" fill="none" stroke="black"/>
                <path d="M 72,528 L 88,528" fill="none" stroke="black"/>
                <path d="M 104,528 L 120,528" fill="none" stroke="black"/>
                <path d="M 136,528 L 152,528" fill="none" stroke="black"/>
                <path d="M 168,528 L 184,528" fill="none" stroke="black"/>
                <path d="M 200,528 L 216,528" fill="none" stroke="black"/>
                <path d="M 232,528 L 248,528" fill="none" stroke="black"/>
                <g class="text">
                  <text x="120" y="52">[0,</text>
                  <text x="148" y="52">6)</text>
                  <text x="296" y="52">level</text>
                  <text x="328" y="52">3</text>
                  <text x="72" y="84">/</text>
                  <text x="168" y="84">|</text>
                  <text x="56" y="116">[0,</text>
                  <text x="84" y="116">4)</text>
                  <text x="152" y="116">[4,</text>
                  <text x="180" y="116">6)</text>
                  <text x="296" y="116">level</text>
                  <text x="328" y="116">2</text>
                  <text x="40" y="148">/</text>
                  <text x="96" y="148">\</text>
                  <text x="168" y="148">|</text>
                  <text x="32" y="180">[0,2)</text>
                  <text x="96" y="180">[2,4)</text>
                  <text x="160" y="180">[4,6)</text>
                  <text x="296" y="180">level</text>
                  <text x="328" y="180">1</text>
                  <text x="24" y="212">/</text>
                  <text x="40" y="212">\</text>
                  <text x="88" y="212">/</text>
                  <text x="104" y="212">\</text>
                  <text x="152" y="212">/</text>
                  <text x="168" y="212">\</text>
                  <text x="16" y="244">0</text>
                  <text x="48" y="244">1</text>
                  <text x="80" y="244">2</text>
                  <text x="112" y="244">3</text>
                  <text x="144" y="244">4</text>
                  <text x="176" y="244">5</text>
                  <text x="296" y="244">level</text>
                  <text x="328" y="244">0</text>
                  <text x="120" y="324">[0,</text>
                  <text x="148" y="324">8)</text>
                  <text x="296" y="324">level</text>
                  <text x="328" y="324">3</text>
                  <text x="72" y="356">/</text>
                  <text x="192" y="356">\</text>
                  <text x="56" y="388">[0,</text>
                  <text x="84" y="388">4)</text>
                  <text x="184" y="388">[4,</text>
                  <text x="212" y="388">8)</text>
                  <text x="296" y="388">level</text>
                  <text x="328" y="388">2</text>
                  <text x="40" y="420">/</text>
                  <text x="96" y="420">\</text>
                  <text x="168" y="420">/</text>
                  <text x="224" y="420">\</text>
                  <text x="32" y="452">[0,2)</text>
                  <text x="96" y="452">[2,4)</text>
                  <text x="160" y="452">[4,6)</text>
                  <text x="224" y="452">[6,8)</text>
                  <text x="296" y="452">level</text>
                  <text x="328" y="452">1</text>
                  <text x="24" y="484">/</text>
                  <text x="40" y="484">\</text>
                  <text x="88" y="484">/</text>
                  <text x="104" y="484">\</text>
                  <text x="152" y="484">/</text>
                  <text x="168" y="484">\</text>
                  <text x="216" y="484">/</text>
                  <text x="232" y="484">\</text>
                  <text x="16" y="516">0</text>
                  <text x="48" y="516">1</text>
                  <text x="80" y="516">2</text>
                  <text x="112" y="516">3</text>
                  <text x="144" y="516">4</text>
                  <text x="176" y="516">5</text>
                  <text x="208" y="516">6</text>
                  <text x="240" y="516">7</text>
                  <text x="296" y="516">level</text>
                  <text x="328" y="516">0</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
       +----------------+
       |     [0, 6)     |         level 3
       +----------------+
        /           |
   +========+  +--------+
   | [0, 4) |  | [4, 6) |         level 2
   +========+  +--------+
    /      \        |
+-----+ +-----+ +~~~~~+
|[0,2)| |[2,4)| |[4,6)|           level 1
+-----+ +-----+ +~~~~~+
  / \     / \     / \
+-+ +-+ +-+ +-+ +-+ +-+
|0| |1| |2| |3| |4| |5|           level 0
+-+ +-+ +-+ +-+ +-+ +-+


       +----------------+
       |     [0, 8)     |         level 3
       +----------------+
        /              \
   +========+      +--------+
   | [0, 4) |      | [4, 8) |     level 2
   +========+      +--------+
    /      \        /      \
+-----+ +-----+ +~~~~~+ +=====+
|[0,2)| |[2,4)| |[4,6)| |[6,8)|   level 1
+-----+ +-----+ +~~~~~+ +=====+
  / \     / \     / \     / \
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
|0| |1| |2| |3| |4| |5| |6| |7|   level 0
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
]]></artwork>
          </artset>
        </figure>
        <t>Note that the truncated inclusion proof may include nodes from lower levels, if the corresponding level was skipped on the right edge. <xref target="fig-truncate-consistency-proof-2"/> depicts a subtree consistency proof between the subtree <tt>[0, 6)</tt> and the Merkle Tree of size 7. As above, the starting node is <tt>[4, 6)</tt> at level 1. The inclusion proof portion includes leaf 6 at level 0. This is because leaf 6 is taking the place of its skipped parent at level 1. (A skipped node can be thought of as a duplicate of its singular child.)</t>
        <figure anchor="fig-truncate-consistency-proof-2">
          <name>The interaction between inclusion proof truncation and skipped levels</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="544" width="320" viewBox="0 0 320 544" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
                <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                <path d="M 8,432 L 8,464" fill="none" stroke="black"/>
                <path d="M 8,496 L 8,528" fill="none" stroke="black"/>
                <path d="M 24,224 L 24,256" fill="none" stroke="black"/>
                <path d="M 24,496 L 24,528" fill="none" stroke="black"/>
                <path d="M 32,96 L 32,128" fill="none" stroke="black"/>
                <path d="M 32,368 L 32,400" fill="none" stroke="black"/>
                <path d="M 40,224 L 40,256" fill="none" stroke="black"/>
                <path d="M 40,496 L 40,528" fill="none" stroke="black"/>
                <path d="M 56,160 L 56,192" fill="none" stroke="black"/>
                <path d="M 56,224 L 56,256" fill="none" stroke="black"/>
                <path d="M 56,432 L 56,464" fill="none" stroke="black"/>
                <path d="M 56,496 L 56,528" fill="none" stroke="black"/>
                <path d="M 64,32 L 64,64" fill="none" stroke="black"/>
                <path d="M 64,304 L 64,336" fill="none" stroke="black"/>
                <path d="M 72,160 L 72,192" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                <path d="M 72,432 L 72,464" fill="none" stroke="black"/>
                <path d="M 72,496 L 72,528" fill="none" stroke="black"/>
                <path d="M 88,224 L 88,256" fill="none" stroke="black"/>
                <path d="M 88,496 L 88,528" fill="none" stroke="black"/>
                <path d="M 104,96 L 104,128" fill="none" stroke="black"/>
                <path d="M 104,224 L 104,256" fill="none" stroke="black"/>
                <path d="M 104,368 L 104,400" fill="none" stroke="black"/>
                <path d="M 104,496 L 104,528" fill="none" stroke="black"/>
                <path d="M 120,160 L 120,192" fill="none" stroke="black"/>
                <path d="M 120,224 L 120,256" fill="none" stroke="black"/>
                <path d="M 120,432 L 120,464" fill="none" stroke="black"/>
                <path d="M 120,496 L 120,528" fill="none" stroke="black"/>
                <path d="M 128,96 L 128,128" fill="none" stroke="black"/>
                <path d="M 136,160 L 136,192" fill="none" stroke="black"/>
                <path d="M 136,224 L 136,256" fill="none" stroke="black"/>
                <path d="M 136,432 L 136,464" fill="none" stroke="black"/>
                <path d="M 136,496 L 136,528" fill="none" stroke="black"/>
                <path d="M 152,224 L 152,256" fill="none" stroke="black"/>
                <path d="M 152,496 L 152,528" fill="none" stroke="black"/>
                <path d="M 160,368 L 160,400" fill="none" stroke="black"/>
                <path d="M 168,224 L 168,256" fill="none" stroke="black"/>
                <path d="M 168,496 L 168,528" fill="none" stroke="black"/>
                <path d="M 184,160 L 184,192" fill="none" stroke="black"/>
                <path d="M 184,224 L 184,256" fill="none" stroke="black"/>
                <path d="M 184,432 L 184,464" fill="none" stroke="black"/>
                <path d="M 184,496 L 184,528" fill="none" stroke="black"/>
                <path d="M 200,32 L 200,64" fill="none" stroke="black"/>
                <path d="M 200,96 L 200,128" fill="none" stroke="black"/>
                <path d="M 200,304 L 200,336" fill="none" stroke="black"/>
                <path d="M 200,432 L 200,464" fill="none" stroke="black"/>
                <path d="M 200,496 L 200,528" fill="none" stroke="black"/>
                <path d="M 208,480 L 208,488" fill="none" stroke="black"/>
                <path d="M 216,432 L 216,464" fill="none" stroke="black"/>
                <path d="M 216,496 L 216,528" fill="none" stroke="black"/>
                <path d="M 232,368 L 232,400" fill="none" stroke="black"/>
                <path d="M 64,32 L 200,32" fill="none" stroke="black"/>
                <path d="M 64,64 L 200,64" fill="none" stroke="black"/>
                <path d="M 32,94 L 104,94" fill="none" stroke="black"/>
                <path d="M 32,98 L 104,98" fill="none" stroke="black"/>
                <path d="M 128,96 L 200,96" fill="none" stroke="black"/>
                <path d="M 32,126 L 104,126" fill="none" stroke="black"/>
                <path d="M 32,130 L 104,130" fill="none" stroke="black"/>
                <path d="M 128,128 L 200,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 56,160" fill="none" stroke="black"/>
                <path d="M 72,160 L 120,160" fill="none" stroke="black"/>
                <path d="M 136,160 Q 138,156.8 140,160 Q 142,163.2 144,160 Q 146,156.8 148,160 Q 150,163.2 152,160 Q 154,156.8 156,160 Q 158,163.2 160,160 Q 162,156.8 164,160 Q 166,163.2 168,160 Q 170,156.8 172,160 Q 174,163.2 176,160 Q 178,156.8 180,160 Q 182,163.2 184,160 " fill="none" stroke="black"/>
                <path d="M 8,192 L 56,192" fill="none" stroke="black"/>
                <path d="M 72,192 L 120,192" fill="none" stroke="black"/>
                <path d="M 136,192 Q 138,188.8 140,192 Q 142,195.2 144,192 Q 146,188.8 148,192 Q 150,195.2 152,192 Q 154,188.8 156,192 Q 158,195.2 160,192 Q 162,188.8 164,192 Q 166,195.2 168,192 Q 170,188.8 172,192 Q 174,195.2 176,192 Q 178,188.8 180,192 Q 182,195.2 184,192 " fill="none" stroke="black"/>
                <path d="M 8,224 L 24,224" fill="none" stroke="black"/>
                <path d="M 40,224 L 56,224" fill="none" stroke="black"/>
                <path d="M 72,224 L 88,224" fill="none" stroke="black"/>
                <path d="M 104,224 L 120,224" fill="none" stroke="black"/>
                <path d="M 136,224 L 152,224" fill="none" stroke="black"/>
                <path d="M 168,224 L 184,224" fill="none" stroke="black"/>
                <path d="M 8,256 L 24,256" fill="none" stroke="black"/>
                <path d="M 40,256 L 56,256" fill="none" stroke="black"/>
                <path d="M 72,256 L 88,256" fill="none" stroke="black"/>
                <path d="M 104,256 L 120,256" fill="none" stroke="black"/>
                <path d="M 136,256 L 152,256" fill="none" stroke="black"/>
                <path d="M 168,256 L 184,256" fill="none" stroke="black"/>
                <path d="M 64,304 L 200,304" fill="none" stroke="black"/>
                <path d="M 64,336 L 200,336" fill="none" stroke="black"/>
                <path d="M 32,366 L 104,366" fill="none" stroke="black"/>
                <path d="M 32,370 L 104,370" fill="none" stroke="black"/>
                <path d="M 160,368 L 232,368" fill="none" stroke="black"/>
                <path d="M 32,398 L 104,398" fill="none" stroke="black"/>
                <path d="M 32,402 L 104,402" fill="none" stroke="black"/>
                <path d="M 160,400 L 232,400" fill="none" stroke="black"/>
                <path d="M 8,432 L 56,432" fill="none" stroke="black"/>
                <path d="M 72,432 L 120,432" fill="none" stroke="black"/>
                <path d="M 136,432 Q 138,428.8 140,432 Q 142,435.2 144,432 Q 146,428.8 148,432 Q 150,435.2 152,432 Q 154,428.8 156,432 Q 158,435.2 160,432 Q 162,428.8 164,432 Q 166,435.2 168,432 Q 170,428.8 172,432 Q 174,435.2 176,432 Q 178,428.8 180,432 Q 182,435.2 184,432 " fill="none" stroke="black"/>
                <path d="M 200,430 L 216,430" fill="none" stroke="black"/>
                <path d="M 200,434 L 216,434" fill="none" stroke="black"/>
                <path d="M 8,464 L 56,464" fill="none" stroke="black"/>
                <path d="M 72,464 L 120,464" fill="none" stroke="black"/>
                <path d="M 136,464 Q 138,460.8 140,464 Q 142,467.2 144,464 Q 146,460.8 148,464 Q 150,467.2 152,464 Q 154,460.8 156,464 Q 158,467.2 160,464 Q 162,460.8 164,464 Q 166,467.2 168,464 Q 170,460.8 172,464 Q 174,467.2 176,464 Q 178,460.8 180,464 Q 182,467.2 184,464 " fill="none" stroke="black"/>
                <path d="M 200,462 L 216,462" fill="none" stroke="black"/>
                <path d="M 200,466 L 216,466" fill="none" stroke="black"/>
                <path d="M 8,496 L 24,496" fill="none" stroke="black"/>
                <path d="M 40,496 L 56,496" fill="none" stroke="black"/>
                <path d="M 72,496 L 88,496" fill="none" stroke="black"/>
                <path d="M 104,496 L 120,496" fill="none" stroke="black"/>
                <path d="M 136,496 L 152,496" fill="none" stroke="black"/>
                <path d="M 168,496 L 184,496" fill="none" stroke="black"/>
                <path d="M 200,496 L 216,496" fill="none" stroke="black"/>
                <path d="M 8,528 L 24,528" fill="none" stroke="black"/>
                <path d="M 40,528 L 56,528" fill="none" stroke="black"/>
                <path d="M 72,528 L 88,528" fill="none" stroke="black"/>
                <path d="M 104,528 L 120,528" fill="none" stroke="black"/>
                <path d="M 136,528 L 152,528" fill="none" stroke="black"/>
                <path d="M 168,528 L 184,528" fill="none" stroke="black"/>
                <path d="M 200,528 L 216,528" fill="none" stroke="black"/>
                <g class="text">
                  <text x="120" y="52">[0,</text>
                  <text x="148" y="52">6)</text>
                  <text x="280" y="52">level</text>
                  <text x="312" y="52">3</text>
                  <text x="72" y="84">/</text>
                  <text x="168" y="84">|</text>
                  <text x="56" y="116">[0,</text>
                  <text x="84" y="116">4)</text>
                  <text x="152" y="116">[4,</text>
                  <text x="180" y="116">6)</text>
                  <text x="280" y="116">level</text>
                  <text x="312" y="116">2</text>
                  <text x="40" y="148">/</text>
                  <text x="96" y="148">\</text>
                  <text x="168" y="148">|</text>
                  <text x="32" y="180">[0,2)</text>
                  <text x="96" y="180">[2,4)</text>
                  <text x="160" y="180">[4,6)</text>
                  <text x="280" y="180">level</text>
                  <text x="312" y="180">1</text>
                  <text x="24" y="212">/</text>
                  <text x="40" y="212">\</text>
                  <text x="88" y="212">/</text>
                  <text x="104" y="212">\</text>
                  <text x="152" y="212">/</text>
                  <text x="168" y="212">\</text>
                  <text x="16" y="244">0</text>
                  <text x="48" y="244">1</text>
                  <text x="80" y="244">2</text>
                  <text x="112" y="244">3</text>
                  <text x="144" y="244">4</text>
                  <text x="176" y="244">5</text>
                  <text x="280" y="244">level</text>
                  <text x="312" y="244">0</text>
                  <text x="120" y="324">[0,</text>
                  <text x="148" y="324">7)</text>
                  <text x="280" y="324">level</text>
                  <text x="312" y="324">3</text>
                  <text x="72" y="356">/</text>
                  <text x="192" y="356">\</text>
                  <text x="56" y="388">[0,</text>
                  <text x="84" y="388">4)</text>
                  <text x="184" y="388">[4,</text>
                  <text x="212" y="388">7)</text>
                  <text x="280" y="388">level</text>
                  <text x="312" y="388">2</text>
                  <text x="40" y="420">/</text>
                  <text x="96" y="420">\</text>
                  <text x="168" y="420">/</text>
                  <text x="208" y="420">|</text>
                  <text x="32" y="452">[0,2)</text>
                  <text x="96" y="452">[2,4)</text>
                  <text x="160" y="452">[4,6)</text>
                  <text x="208" y="452">6</text>
                  <text x="280" y="452">level</text>
                  <text x="312" y="452">1</text>
                  <text x="24" y="484">/</text>
                  <text x="40" y="484">\</text>
                  <text x="88" y="484">/</text>
                  <text x="104" y="484">\</text>
                  <text x="152" y="484">/</text>
                  <text x="168" y="484">\</text>
                  <text x="16" y="516">0</text>
                  <text x="48" y="516">1</text>
                  <text x="80" y="516">2</text>
                  <text x="112" y="516">3</text>
                  <text x="144" y="516">4</text>
                  <text x="176" y="516">5</text>
                  <text x="208" y="516">6</text>
                  <text x="280" y="516">level</text>
                  <text x="312" y="516">0</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
       +----------------+
       |     [0, 6)     |       level 3
       +----------------+
        /           |
   +========+  +--------+
   | [0, 4) |  | [4, 6) |       level 2
   +========+  +--------+
    /      \        |
+-----+ +-----+ +~~~~~+
|[0,2)| |[2,4)| |[4,6)|         level 1
+-----+ +-----+ +~~~~~+
  / \     / \     / \
+-+ +-+ +-+ +-+ +-+ +-+
|0| |1| |2| |3| |4| |5|         level 0
+-+ +-+ +-+ +-+ +-+ +-+


       +----------------+
       |     [0, 7)     |       level 3
       +----------------+
        /              \
   +========+      +--------+
   | [0, 4) |      | [4, 7) |   level 2
   +========+      +--------+
    /      \        /    |
+-----+ +-----+ +~~~~~+ +=+
|[0,2)| |[2,4)| |[4,6)| |6|     level 1
+-----+ +-----+ +~~~~~+ +=+
  / \     / \     / \    |
+-+ +-+ +-+ +-+ +-+ +-+ +-+
|0| |1| |2| |3| |4| |5| |6|     level 0
+-+ +-+ +-+ +-+ +-+ +-+ +-+
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="consistency-proof-verification-explain">
        <name>Consistency Proof Verification</name>
        <t>The procedure in <xref target="verifying-a-subtree-consistency-proof"/> is structured similarly to inclusion proof evaluation (<xref target="inclusion-proof-evaluation-explain"/>). It iteratively builds two hashes, <tt>fr</tt> and <tt>sr</tt>, which are expected to equal <tt>node_hash</tt> and <tt>root_hash</tt>, respectively. Everything hashed into <tt>fr</tt> is also hashed into <tt>sr</tt>, so success demonstrates that <tt>root_hash</tt> contains <tt>node_hash</tt>.</t>
        <t>Step 2 initializes <tt>fn</tt> (first number), <tt>sn</tt> (second number), and <tt>tn</tt> (third number) to follow, respectively, the paths to <tt>start</tt>, <tt>end - 1</tt> (the last element of the subtree), and <tt>n - 1</tt> (the last element of the tree).</t>
        <t>Steps 3 and 4 then skip to the starting node, described in <xref target="consistency-proof-structure"/>. The starting node may be:</t>
        <ul spacing="normal">
          <li>
            <t>The entire subtree <tt>[start, end)</tt> if <tt>[start, end)</tt> is directly contained in the tree. This will occur if <tt>end</tt> is <tt>n</tt> (step 3), or if <tt>[start, end)</tt> is full (exiting step 4 because <tt>fn</tt> is <tt>sn</tt>).</t>
          </li>
          <li>
            <t>Otherwise, the highest full subtree along the right edge of <tt>[start, end)</tt>. This corresponds to the process exiting step 4 because <tt>LSB(sn)</tt> is not set.</t>
          </li>
        </ul>
        <t>Steps 5 and 6 initialize the hashes <tt>fr</tt> and <tt>sr</tt>:</t>
        <ul spacing="normal">
          <li>
            <t>In the first case above, <tt>fn</tt> will equal <tt>sn</tt> after truncation. Step 5 will then initialize the hashes to <tt>node_hash</tt> because consistency proof does not need to include the starting node.</t>
          </li>
          <li>
            <t>In the second case above, <tt>fn</tt> is less than <tt>sn</tt>. Step 6 will then initialize the hashes to the first value in the consistency proof.</t>
          </li>
        </ul>
        <t>Step 7 incorporates the remainder of the consistency proof into <tt>fr</tt> and <tt>sr</tt>:</t>
        <ul spacing="normal">
          <li>
            <t>All hashes are incorporated into <tt>sr</tt>, with hashing on the left or right determined the same as in inclusion proof evaluation.</t>
          </li>
          <li>
            <t>A subset of the hashes are incorporated into <tt>fr</tt>. It skips any hash on the right because those contain elements greater than <tt>end - 1</tt>. It also stops incorporating when <tt>fn</tt> and <tt>sn</tt> have converged.</t>
          </li>
        </ul>
        <t>This reconstructs the hashes of the subtree and full tree, which are then compared to expected values in step 8.</t>
        <t>In the case when <tt>fn</tt> is <tt>sn</tt> in step 5, the condition in step 7.2.1 is always false, and <tt>fr</tt> is always equal to <tt>node_hash</tt> in step 8. In this case, steps 6 through 8 are equivalent to verifying an inclusion proof for the truncated subtree <tt>[fn, sn + 1)</tt> and truncated tree <tt>tn + 1</tt>.</t>
      </section>
    </section>
    <section anchor="extensions-to-tiled-transparency-logs-to-be-removed">
      <name>Extensions to Tiled Transparency Logs (To Be Removed)</name>
      <t>[[TODO: This section is expected to be removed. It is sketched here purely for illustrative purposes, until the features are defined somewhere else, e.g. in the upstream tlog documents.]]</t>
      <section anchor="subtree-signed-note-format">
        <name>Subtree Signed Note Format</name>
        <t>A subtree, with signatures, can be represented as a signed note <xref target="SIGNED-NOTE"/>. Trust anchor IDs can be converted into log origins and cosigner names by concatenating the ASCII string <tt>oid/1.3.6.1.4.1.</tt> and the ASCII representation of the trust anchor ID. For example, the checkpoint origin for a log named <tt>32473.1</tt> would be <tt>oid/1.3.6.1.4.1.32473.1</tt>.</t>
        <t>The note body is a sequence of the following lines, each terminated by a newline character (U+000A):</t>
        <ul spacing="normal">
          <li>
            <t>The log origin</t>
          </li>
          <li>
            <t>Two space-separated, non-negative decimal integers, <tt>&lt;start&gt; &lt;end&gt;</tt></t>
          </li>
          <li>
            <t>The subtree hash, as single hash encoded in base64</t>
          </li>
        </ul>
        <t>Each note signature has a key name of the cosigner name. The signature's key ID is computed using the reserved signature type in <xref target="SIGNED-NOTE"/>, and a fixed string, as follows:</t>
        <sourcecode type="pseudocode"><![CDATA[
key ID = SHA-256(key name || 0x0A || 0xFF || "mtc-subtree/v1")[:4]
]]></sourcecode>
        <t>A subtree whose <tt>start</tt> is zero can also be represented as a checkpoint <xref target="TLOG-CHECKPOINT"/>. A corresponding subtree signature can be represented as a note signature using a key ID computed as follows:</t>
        <sourcecode type="pseudocode"><![CDATA[
key ID = SHA-256(key name || 0x0A || 0xFF || "mtc-checkpoint/v1")[:4]
]]></sourcecode>
        <t>The only difference between the two forms is the implicit transformation from the signed note text to the MTCSubtree structure.</t>
      </section>
      <section anchor="requesting-subtree-signatures">
        <name>Requesting Subtree Signatures</name>
        <t>This section defines the <tt>sign-subtree</tt> cosigner HTTP endpoint for clients to obtain subtree signatures from non-CA cosigners, such as mirrors and witnesses. It may be used by the CA when assembling a certificate, or by an authenticating party to add a cosignature to a certificate that the CA did not themselves obtain.</t>
        <t>The cosigner MAY expose this endpoint publicly to general authenticating parties, or privately to the CA. The latter is sufficient if the CA is known to automatically request cosignatures from this cosigner when constructing certificates. If private, authenticating the CA is out of scope for this document.</t>
        <t>Clients call this endpoint as <tt>POST &lt;prefix&gt;/sign-subtree</tt>, where <tt>prefix</tt> is some URL prefix. For a mirror or witness, the URL prefix is the submission prefix. The client's request body MUST be a sequence of:</t>
        <ul spacing="normal">
          <li>
            <t>The requested subtree as a signed note (<xref target="subtree-signed-note-format"/>), with zero or more signatures. The endpoint MAY require signatures from the CA as a DoS mitigation, as described below.</t>
          </li>
          <li>
            <t>A blank line</t>
          </li>
          <li>
            <t>A checkpoint, signed by the requested cosigner. The checkpoint's tree size must be at least <tt>end</tt>.</t>
          </li>
          <li>
            <t>A blank line</t>
          </li>
          <li>
            <t>Zero or more subtree consistency proof (<xref target="subtree-consistency-proofs"/>) lines. Each line MUST encode a single hash in base64 <xref target="RFC4648"/>. The client MUST NOT send more than 63 consistency proof lines.</t>
          </li>
        </ul>
        <t>Each line MUST terminate in a newline character (U+000A).</t>
        <t>The cosigner performs the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>Check that the checkpoint contains signatures from itself</t>
          </li>
          <li>
            <t>Check that the subtree consistency proof proves consistency between the subtree hash and the checkpoint</t>
          </li>
          <li>
            <t>If all checks pass, cosign the subtree, as described in <xref target="cosigners"/></t>
          </li>
        </ol>
        <t>On success, the response body MUST be a sequence of one or more note signature lines <xref target="SIGNED-NOTE"/>, each starting with an em dash character (U+2014) and ending with a newline character (U+000A). The signatures MUST be cosignatures from the cosigner key(s) on the subtree.</t>
        <t>Instead of statelessly validating checkpoints by signature, the cosigner MAY statefully check the requested checkpoint against internal witness or mirror state. In this case, if the cosigner needs a newer checkpoint, it responds with a "409 Conflict" with its latest signed checkpoint. In this case, the subtree cosigning SHOULD remember and accept the last few signed checkpoints, to minimize conflicts.</t>
        <t>If operating statefully, the subtree cosigner process only needs read access to the mirror or witness state and can freely operate on stale state without violating any invariants.</t>
        <t>Mirrors MAY choose to check subtree hashes by querying their log state, instead of evaluating proofs.</t>
        <t>Publicly-exposed subtree cosigning endpoints MAY mitigate DoS in a variety of techniques:</t>
        <ul spacing="normal">
          <li>
            <t>Only cosigning recent subtrees, as old subtrees do not need to be co-signed</t>
          </li>
          <li>
            <t>Caching subtree signatures</t>
          </li>
          <li>
            <t>Requiring a CA signature on the subtree; CAs are only expected to sign two subtrees (<xref target="arbitrary-intervals"/>) for each checkpoint</t>
          </li>
          <li>
            <t>Rate-limiting requests</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This document stands on the shoulders of giants and builds upon decades of work in TLS authentication, X.509, and Certificate Transparency. The authors would like to thank all those who have contributed over the history of these protocols.</t>
      <t>The authors additionally thank Bob Beck, Ryan Dickson, Aaron Gable, Nick Harper, Russ Housley, Dennis Jackson, Matt Mueller, Chris Patton, Ryan Sleevi, and Emily Stark for many valuable discussions and insights which led to this document, as well as feedback on the document itself. We wish to thank Mia Celeste in particular, whose implementation of an earlier draft revealed several pitfalls.</t>
      <t>The idea to mint tree heads infrequently was originally described by Richard Barnes in <xref target="STH-Discipline"/>. The size optimization in Merkle Tree Certificates is an application of this idea to the certificate itself.</t>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change log</name>
      <ul empty="true">
        <li>
          <t><strong>RFC Editor's Note:</strong> Please remove this section prior to publication of a
final version of this document.</t>
        </li>
      </ul>
      <section numbered="false" anchor="since-draft-davidben-tls-merkle-tree-certs-00">
        <name>Since draft-davidben-tls-merkle-tree-certs-00</name>
        <ul spacing="normal">
          <li>
            <t>Simplify hashing by removing the internal padding to align with block size. #72</t>
          </li>
          <li>
            <t>Avoid the temptation of floating points. #66</t>
          </li>
          <li>
            <t>Require <tt>lifetime</tt> to be a multiple of <tt>batch_duration</tt>. #65</t>
          </li>
          <li>
            <t>Rename window to validity window. #21</t>
          </li>
          <li>
            <t>Split Assertion into Assertion and AbridgedAssertion. The latter is used in the Merkle Tree and HTTP interface. It replaces <tt>subject_info</tt> by a hash, to save space by not serving large post-quantum public keys. The original Assertion is used everywhere else, including BikeshedCertificate. #6</t>
          </li>
          <li>
            <t>Add proper context to every node in the Merkle Tree. #32</t>
          </li>
          <li>
            <t>Clarify we use a single <tt>CertificateEntry</tt>. #11</t>
          </li>
          <li>
            <t>Clarify we use POSIX time. #1</t>
          </li>
          <li>
            <t>Elaborate on CA public key and signature format. #27</t>
          </li>
          <li>
            <t>Miscellaneous changes.</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-davidben-tls-merkle-tree-certs-01">
        <name>Since draft-davidben-tls-merkle-tree-certs-01</name>
        <ul spacing="normal">
          <li>
            <t>Minor editorial changes</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-davidben-tls-merkle-tree-certs-02">
        <name>Since draft-davidben-tls-merkle-tree-certs-02</name>
        <ul spacing="normal">
          <li>
            <t>Replace the negotiation mechanism with TLS Trust Anchor Identifiers.</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-davidben-tls-merkle-tree-certs-03">
        <name>Since draft-davidben-tls-merkle-tree-certs-03</name>
        <ul spacing="normal">
          <li>
            <t>Switch terminology from "subscriber" to "authenticating party".</t>
          </li>
          <li>
            <t>Use &lt;1..2^24-1&gt; encoding for all certificate types in the CertificateEntry TLS message</t>
          </li>
          <li>
            <t>Clarify discussion and roles in transparency ecosystem</t>
          </li>
          <li>
            <t>Update references</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-davidben-tls-merkle-tree-certs-04">
        <name>Since draft-davidben-tls-merkle-tree-certs-04</name>
        <t>Substantially reworked the design. The old design was essentially the landmark checkpoint and CA-built logs ideas, but targeting only the optimized and slow issuance path, and with a more bespoke tree structure:</t>
        <t>In both draft-04 and draft-05, a CA looks like today’s CAs except that they run some software to publish what they issue and sign tree heads to certify certificates in bulk.</t>
        <t>In draft-04, the CA software publishes certificates in a bunch of independent Merkle Trees. This is very easy to do as a collection of highly cacheable, immutable static files because each tree is constructed independently, and never appended to after being built. In draft-05, the certificates are published in a single Merkle Tree. The <xref target="TLOG-TILES"/> interface allows such trees to also use highly cacheable, immutable static files.</t>
        <t>In draft-04, there only are hourly tree heads. Clients are provisioned with tree heads ahead of time so we can make small, inclusion-proof-only certificates. In draft-05, the ecosystem must coordinate on defining "landmark" checkpoints. Clients are provisioned with subtrees describing landmark checkpoints ahead of time so we can make small, inclusion-proof-only certificates.</t>
        <t>In draft-04, each tree head is independent. In draft-05, each landmark checkpoint contains all the previous checkpoints.</t>
        <t>In draft-04, the independent tree heads were easily prunable. In draft-05, we define how to prune a Merkle Tree.</t>
        <t>In draft-04, there is no fast issuance mode. In draft-05, frequent, non-landmark checkpoints can be combined with inclusion proofs and witness signatures for fast issuance. This is essentially an STH and inclusion proof in CT.</t>
      </section>
      <section numbered="false" anchor="since-draft-davidben-tls-merkle-tree-certs-05">
        <name>Since draft-davidben-tls-merkle-tree-certs-05</name>
        <ul spacing="normal">
          <li>
            <t>Add some discussion on malleability</t>
          </li>
          <li>
            <t>Discuss the monitoring impacts of the responsibility shift from CA with log quorum to CA+log with mirror quorum</t>
          </li>
          <li>
            <t>Sketch out a more concrete initial ACME extension</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-davidben-tls-merkle-tree-certs-06">
        <name>Since draft-davidben-tls-merkle-tree-certs-06</name>
        <ul spacing="normal">
          <li>
            <t>Fix mistyped reference</t>
          </li>
          <li>
            <t>Removed now unnecessary placeholder text</t>
          </li>
          <li>
            <t>First draft at IANA registration and ASN.1 module</t>
          </li>
          <li>
            <t>Added a prose version of the procedure to select subtrees</t>
          </li>
          <li>
            <t>Rename 'landmarks checkpoint' to 'landmarks'</t>
          </li>
          <li>
            <t>Clarify and fix an off-by-one error in recommended landmark allocation scheme</t>
          </li>
          <li>
            <t>Add some diagrams to the Overview section</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-davidben-tls-merkle-tree-certs-07">
        <name>Since draft-davidben-tls-merkle-tree-certs-07</name>
        <ul spacing="normal">
          <li>
            <t>Clarify landmark zero</t>
          </li>
          <li>
            <t>Clarify signature verification process</t>
          </li>
          <li>
            <t>Improve subtree consistency proof verification algorithm</t>
          </li>
          <li>
            <t>Add an appendix that explains the Merkle Tree proof procedures</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-davidben-tls-merkle-tree-certs-08">
        <name>Since draft-davidben-tls-merkle-tree-certs-08</name>
        <ul spacing="normal">
          <li>
            <t>Improvements to malleability discussion</t>
          </li>
          <li>
            <t>Improvements to subtree definition</t>
          </li>
          <li>
            <t>Improvements to <tt>trust_anchors</tt> integration</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-davidben-tls-merkle-tree-certs-09">
        <name>Since draft-davidben-tls-merkle-tree-certs-09</name>
        <ul spacing="normal">
          <li>
            <t>Editorial fixes</t>
          </li>
          <li>
            <t>Set a more accurate intended status</t>
          </li>
          <li>
            <t>Fixes to ASN.1 module</t>
          </li>
          <li>
            <t>Make log entry more friendly to single-pass verification</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
aiSmwHr5N0NimrdTvHtVhgRKsw9aSZKuqM68jivKUE/hXT2OQLnJvCLIUiq/
XRaA9MRxlpEjYTarwR81TmpI9PdSon7GI5HIm4zTSzsTKj2vmqfJapAQxQto
9ofHmgpTb633cMPCNBIedBv9E+nhkYUlUfwlwfM1605+Io9X1OlrsOYarTTY
yOz+oThTzeHvnsMCeZeDLBBduqbGHZb7g8jRLr5fcxZnrP+kX+xyq4TBkeWg
uz+Ri+0QPSQ+C2eFcH+oO2SI8FdiP8u7ZeMamnJcoZGgbWR2FvHmiBqhIC0L
OZ/8j/PrfcCKrIE0ZA7rIc3QXO8azqHovsvXEISNSVrBMKG3SucBRhMNRrAR
7yGhqMfn+di42JTeTk6QvTipSDJHRKwVie8KMZ8zVhdX5Np3sm+a5jPrD48U
wiRqDVc18iKOYcZ3CQacJ7mR9dVjoLRibk/z3QOhXOg7Y1LViNDcliHovXnM
ao+s8Lk/1vG0s7g0TfqMyxr2gSxBXK/qw5e2bgq+WQZFUJB24Cs6+dOIHpjj
som9zieR0Om4JuE8EyQdvd0gVCiW+kyyVSMgCZ7/8Mo0SBUm8CW2c9nqNPt5
mBIJhyuVYFmo66PB3srQjA2OVvGuxIH4QBlQNKf6tvW+yMVMEYc8fuwdfJF/
+Ij0CofKCbvJQhGG27ECKDVJlQVcLPj5Y8Gih0RAqtgqbI7D2MupcciNaClH
fH3xd15WvDxa3twcn+gxVqW516mrA5LRO0pDhUfDX6/r5QvzzgXkzIdXoiWm
3tWrCDQZN2Cq5krxYsoz6vxXi2Y2r7sVTL3YJ2VQAsFRkumn2XuKL1CctkiJ
fvaNT5PRzhuyCgb+B4o1ztByzqWZjEfocbV60e8bPRK3LLyDbuLYdmmYEqQH
88Uy7azZ8QAA8LGT5K4LouQHvq7XnJ7jcQCGK+fhYMqBJ9XYbKySyIevJyip
MMin9dp7hTrNu60hGk7s9PGJSaLzmhmrrygfxtdCDopkcHbsbLfAogWfAHr9
///v/4sDL1yUmp5TCYSbeRTQAHuTj1VleQDU460QIKnmrimqlHeQgrQH2Z3L
qZTooU9U/MxYG70AEIPMkIPDUyckftzc+3qLJEEAIIhID9UeFfpsjZIBsR2T
bZ/fttby452naJiDCVXqrsa8jMY/p8X1IZSKRIXDUyUhSobPz/atZGOsv2BE
2qBmL6auQJ45kG7vaFXz6ma8qnCOMgrOwibexgFUTYLJ7ydqJS0ae5DxguAC
qPWjQOJJ/Kmz9Q69qoJnTKBA0euiPzN7UbcGrl7LIv/rUnjrsdp+jwQIFL8N
az3xO5n9duYVKlpWTCd7nyoG5m/+svY0FIGnrxmRQMxBmTNiugb6G8bgmqC/
i+UeHniDcR4dmC/NR4AjD5JjpJSyvPWu6cbprym1nqmfpnU5DI1sQHdAvq+W
KZjM2HClr194aNwjPt7HgA4BbHop5ajoWdd2ADD1QpDmg26q2t6TBGJfOuam
Z3Qp2dTZp5UrxqSERn7zyoyBNrVxbO7d0XudEVwTWXilArNj7IRCg0bs+YwJ
I3geW+6HmE+536Yr75CNAeoIaqG9TiMkb7U/eis7LoWW7M/w2s8Nh2Ulldwh
3UWLaZz4K8Knd0lfJDL9dZm7F3NBVC0xfJ67ixAK7FCXEIuJGAYPJKvXS1+T
5aRrWaAENBItdXnd9Ml2QM0b5lrONqfiW7KLSMZR6aYkk7fPCxiKkudWpYEH
JrN0sdTTnmY1F5or2eigR6iROXluxrcZ/Z8qDpa0Iga0tEqc+h5kBSmP7E4P
Zd61cbCx9rxbtGr1GMOFBelPBieirFYBcu4kA0EwIfuw9BrE+2o5tJ6vgsFC
V2vrUF8BvkTx1AV2MiRi+Ue5ePtuQQBtcJphAUWagardMNIy3NzZ4f96c3i8
f5gs0kvOOHD7/JIqu92dyOPjdio3hRE2w6LNLBtHeSdjvU+WfwF9tCkU3RRm
uL7Vc/GPUmC+LI5eHmwnud3Eu1a9/TyhCGyzTP/t47erVNNjf59X1NXSb2s/
OTTSsWeqLb3+AStivpBbonq/9Nrdi+wg5nzx24K0A3WoXS/5BYQS6Vy7aOkg
Rz7b7h2igNCmALH+ZUxZtQScZGiXuYEarr0Lm02nnY/S+0zJDuMKEZo238N5
ZHlyrTnJcc5apKTOiwUj3lSa0SMJhVbhmP4CANJb+1UWwBvvEHiNq3Tlmkba
lOuIWQjBqtEusClMvEPZnAR+l9SFbsluGrC8vnuGIJwQBNMpdZQ3T4f28LNr
kNxseRfCVHxhbr2eAOldy5CM6rkDRLFyqpUQJNwkHO4fnA3q18BagaXYs+CY
8i/wZT2vhvuvYdCGMWAlOATjE7a6JH6dkIn2mdsi6FENdRzkdjSZ8jGvpgqA
0l1ZAR2iMZgO/UKZN+NZvohvQohrkVNUptRrqmBnDBosjMxtFC52RhmGiLF1
UpBGVutHoZDiiYFwgfdJ17ZkPBka5oqqkS+So8HxoK0G4JUzeNyPjnzf1tbw
qOQYZ5W4rsjxE5sKUcTvwdmro1BrQL15/aejH5utP3CtXlIut+awPtn5+msY
EB+J5BiYCPQ38klzDR3989HpFKHMrJKPax/7+k/4W+sn7lE3gQfSRj7uuxtg
f7a46O9s7Tx2n7wlm6rvevGTaxUVEVqg9YmzoBwj7bPgW61+5+Gn00saPh/I
luGfKgn5AcusZY5r2DFZwoOFJOB/1qm51xvjWfMlVdN0dl31fyFJQANzIi67
cyqTT53Q+0zrfFykXNzlSenrk+t+lpynF+9AsATfIx+NNWKUT6tic7sWEtTD
u5YkH9xcl+vbG0GAjPvl/DIt5AK0/mjDGfLj9b0Ndm0X2cI9DcZnzStff7xh
Mj/o/67f5b+sP9mQQ7G+xc/Xjsi6G+ZG8re1tYPDF0fHR8Ojk+Oz5OjV6++P
9o+GyXDw3Vny7Nk3a88Pvzs6dtvi1euT0+GZa+js6LvjwfDN6WF/8P13J6dH
w5ev3KcvTk9ehbNwFKJu7l1OvyRuipw0eUuX4a+3d35Ch37D2D999H78aVsn
t3bWHz+l2UgMO9aHv/WSwXB4evT8zfBQx0g7u89uXIR7eXz/PMOjr7l7GNQT
HhRstkD7ZcayfSTsk/+MA9nuKzcmBvM1D+bPfKnrQZL0kj/Lda6XyEUtqDs7
zsNf/pnHqcyiGOc2j3NopY6OJfqwYmUng2mvRy2lIPX3HOOi2WkRP8m/OqO3
3TAm8ZMEr0LyQdqUO31i/3m79ZM7uT+K8JIN4gz/F4M33w+T99s97Q+TDjf/
wVbSF8iGajzkd5rOh+StrGyty8eZnOwPD4fJmZMvx9/F/VOHg4xt243NC+b6
Hk9OXpPoHnxfe1/UxtudT2rC5J2EGX5kZ9gIyQ+xbHEXS22OlEvdMDl5/u+H
+8Pk6ODweHj04sjdzGiVeWl/zc60exKNtO/LUJxPv3dbz3WtSkO3WpRa6Jjp
bG049O3rweng1VkyOD2kAI7r+hoPu8Vw+J0GTz1Z33ms404XtW55HRe6M/yP
14cN+RM6fpA8/49244gGf3h8QJYPmUP22nKmNzEJYtO1tWAN/D7r4qCsVTeG
2xyojAP2ynleECCh57D3Lnot+VDoUKnOhVl7lU2vgysBoFQhJ0gyIQJZbEze
5otTOSD9nN9/Gr9/be0HRomMKQ45BwdIHDmzQdwITP1N2eseDpdqJ+7mOvmy
kvx5hsZAX9PFFc+Gu57SM0IP5f7Gb5lmE8p2zadjn8+XpUR7QmlXJHsJfo0T
KdxNOuNS4TSZc1GK/o4f8MS6gGzCr3xeOLXMcTcLUpIiIaIox5kWzCYUPf/w
YZK784TJ6dOM9l1jVZ+yuZC/NGN4woUGWRtzSd4Hmsinz9jcTqv3lyLGkq/q
pv5X+s1H0Rq9xFl94QP3zzR7n02TR3c3kfwhlvl/WbOPf1X7OX72EW/c3dC3
uf/fRQ8+hjfv3N2MvvkvtZ78Ze0r+VHHn2sf3ft3Nj4mH9/u9Hbx525vD3/u
9Z66P6UP23c2RO/8i7y78af7NT3Z+d/axy33ym33347775H7b9f999j9t+f+
e+K7sXVnQyRlPjxLvujcQ8kiX0yzbx4MCs0Fat88D/7GvrfOczfaZQrtrfPt
ra2RChM+RO5YOYtHjgg9S6u6tzEygMMrHnzaeJBPHMl38yS2KnF1H1LEgCfI
Q4hnluu0Yq8nHcrrUhCrDM1SRIpKsOiIEJD7Ft7YLT3JvjSsVUiohIR4QW+i
Y614Udw4POcpDj9BiKHv0hsfKUdAmP0L1TMVUPQLFl5O2zKgtVT+j946KU2M
0Fkx3hj1/NO+fVqs50fDn384Ohi+XCfE/H6CnxDnOSaSi5gxzJvSVwbWQvdQ
MyTKr/LrgA/vnidxK9l2ykPOaXXUIM1QkMzcIaoFxSrjl+wlxKjcamEWx4RM
dpnVMtdYGyzaNNsuZnwPIQLZmBygcn/f3hoBgYUiI8AqWdVVAtlwf2xvOjW2
qJIdtLK8FgJEiZZacHwzYZo4a8S/RBPMODGTYaw0Mdp5GTUHJy9LKckRWRj+
uq2pb7JvBI0WCY603eduAAQ+L5R/5pBXnUoGeW8p65nrnBlc26TD3t2qpUWx
7G3I/67WKK365GObEvjYpkIeWq3Vqjs+tqmMj10SvlNF3Kkb2nVClwjv1AF3
Cv/VQl/W9J5yf4/k/g+KT6I0hPEuUJy3mpUGRz266lkhIbdnxJ+SjUPVAMQV
QIHe5dfXVLEwbD6b1204Kk+iL9k05d9IA/pWOQkoIMoZR6xVfW0mLz1ypm2U
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
g0atLzeZZWQFx/YShPZ2L7duM6bJmJCHyEvIGWVUxS/QqwyHqlsXxKcUzM5z
v5x5vcLZRMkivy5R0ttOBFlj9QNdN4cv27iw6QTvDz9d+T/uUv5kE0JSGwVL
lkjEZdkn5Hz6lt1bTIgp9Cfgw5WAume6ZkILwBGwLUEBQZoocj79dVnOlyBH
3h98RR8wPyc7zfhLmCXIYUkYzQjKi7Iy5tkiMD8N9l8dBpDgT56Uva5JeZH/
QsSnZKiMgwHBlhvybBKqrFwWRUZuP6r5hz13xSTXZFhzK5RIx7drp/FAaCAc
AyHJmnH6Z4LTj/UgdU6rXWXxRdGmS9PlIgPNq0oSc2P6UjeuPYpf0m/CN19a
4wopYG7MKb1p0j+/7ZMvPsOC5MLyNmMd5M8EKQW521buLbOstpvSy3k68y7R
k/d08SHfLKvOT16rJ11rpWPwHaOonP1iNVUnPXk047Lr7rhK9Ms08HfwiNn9
QHGFX9gGklzyqnGb9FEaQfP95Gl42jUNMgaPCxYxy4Sz3faoDps12qLjqRGy
l37m7KVqxGk7vJE/eRRfd43i0N+5KFsGi3OW+fOfUr6zUKLybiT7YlnJkWW7
pH6gXpGiDAzCaGgyd6p5zKF7tob6FOmKlnntfwAg/vkDsEMCAA==

-->

</rfc>
