<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-plants-merkle-tree-certs-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title>Merkle Tree Certificates</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-plants-merkle-tree-certs-04"/>
    <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>Apple Inc.</organization>
      <address>
        <email>asymmetric@apple.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="May" day="24"/>
    <area>Security</area>
    <workgroup>PKI, Logs, And Tree Signatures</workgroup>
    <abstract>
      <?line 189?>

<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 existing X.509 constructions and Certificate Transparency. Merkle Tree certificates additionally admit an optional size optimization that avoids 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://ietf-plants-wg.github.io/merkle-tree-certs/draft-ietf-plants-merkle-tree-certs.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-plants-merkle-tree-certs/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        PKI, Logs, And Tree Signatures 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/ietf-plants-wg/merkle-tree-certs"/>.</t>
    </note>
  </front>
  <middle>
    <?line 193?>

<section anchor="introduction">
      <name>Introduction</name>
      <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 (MTCs), a new form of X.509 certificate that integrates logging with certificate issuance. Each CA maintains logs of everything it issues, signing views of its logs 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 logs. 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 "landmark-relative" 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"/>. It extends the numeric types defined in <xref section="3.3" sectionFormat="of" target="RFC8446"/> with a big-endian, 48-bit integer:</t>
      <sourcecode type="tls-presentation"><![CDATA[
uint8 uint48[6];
]]></sourcecode>
      <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, containing certification statements issued by that CA. A CA operates some number of issuance logs, which together contain all statements 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 landmark-relative 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 landmark-relative certificates.</t>
          </dd>
          <dt>Standalone certificate:</dt>
          <dd>
            <t>A certificate containing an inclusion proof to some subtree, and several cosignatures over that subtree.</t>
          </dd>
          <dt>Landmark-relative certificate:</dt>
          <dd>
            <t>An optimized certificate containing an inclusion proof to a landmark subtree, and no signatures.</t>
          </dd>
          <dt>Directly-signed certificate:</dt>
          <dd>
            <t>A certificate issued using the existing, non-MTC construction, where the TBSCertificate is passed directly to the private key's signing operation.</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 MTC 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="388" y="84">issuance</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   |
|       |                      |    |       issuance              |
|       |                      |    |                             |
|       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 a series of append-only <em>issuance logs</em> (<xref target="issuance-logs"/>). Unlike a CT log, these logs only contain entries added by the CA:  </t>
          <ol spacing="normal" type="a"><li>
              <t>The CA adds a TBSCertificateLogEntry (<xref target="log-entries"/>, abbreviated "tbscert entries" in the diagram) to an issuance 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 CA's issuance logs to ensure the CA is operated correctly.</t>
        </li>
      </ol>
      <t>A certificate with cosignatures is known as a <em>standalone 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>landmark-relative certificate</em>. This is an optional, optimized certificate that avoids all cosignatures, including the CA signature. Landmark-relative certificates are available after a short period of time and usable with up-to-date relying parties.</t>
      <figure anchor="fig-landmark-cert-overview">
        <name>A diagram of landmark-relative 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="20" y="148">2.</text>
                <text x="52" y="148">Make</text>
                <text x="144" y="148">landmark-relative</text>
                <text x="324" y="148">3.</text>
                <text x="380" y="148">Distribute</text>
                <text x="52" y="164">cert</text>
                <text x="376" y="164">landmarks</text>
                <text x="92" y="196">Authenticating</text>
                <text x="176" y="196">Party</text>
                <text x="88" y="228">landmark-relative</text>
                <text x="180" 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="60" y="308">standalone</text>
                <text x="124" 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 landmark-relative |           3. Distribute |
    cert                   |              landmarks  |
                           V                         |
+-- Authenticating Party --------+                   |
|                                |                   |
| landmark-relative cert         |                   V
|   tbscert                      |  +-- Up-to-date RP -----+
|   inclusion proof to landmark -+->| landmark hashes      |
|                                |  | trusted cosigners    |
|                                |  +----------------------+
| standalone cert                |
|   tbscert                      |  +-- Unupdated RP ------+
|   inclusion proof              |  | (stale or no hashes) |
|   cosignatures     ------------+->| trusted cosigners    |
|                                |  +----------------------+
+--------------------------------+
                     4. Select certificate by RP
]]></artwork>
        </artset>
      </figure>
      <t>Landmark-relative certificates are constructed and used as follows. <xref target="fig-landmark-cert-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 landmark-relative certificates.</t>
        </li>
        <li>
          <t>Once some landmark includes the TBSCertificate, the landmark-relative 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 landmark-relative certificate. Otherwise, it presents a standalone certificate. The authenticating party may also select between several landmark-relative 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 itself a Merkle Tree, built over an interval of entries from the original tree. <xref target="definition-of-a-subtree"/> defines a subtree formally, including the constraints on those intervals.</t>
      <t>As with Merkle Trees, a subtree inclusion proof, defined in <xref target="subtree-inclusion-proofs"/>, can prove an entry is contained in some subtree. Subtrees, and thus their inclusion proofs, are smaller than those of the original tree, so this document uses subtree inclusion proofs as a certificate size optimization.</t>
      <t>Not all intervals can form subtrees. Subtrees are limited to intervals that can be efficiently proven consistent with the original tree, using subtree consistency proofs defined in <xref target="subtree-consistency-proofs"/>. However, every interval of a Merkle Tree can be efficiently covered by two subtrees. <xref target="arbitrary-intervals"/> describes how to determine these subtrees.</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 (marked with double lines) because, although <tt>n</tt> (13) is not <tt>end</tt> (8), the subtree is full. <tt>[8, 13)</tt> is contained (marked with wavy lines) 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 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,192 L 232,192" 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,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 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 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 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 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">5</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| |5| |6| |7| |8|
+-+ +-+ +-+ +-+ +-+ +-+ +-+ +=+ +=+
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="certification-authorities">
      <name>Certification Authorities</name>
      <t>A CA consists of the following components:</t>
      <ul spacing="normal">
        <li>
          <t>A CA ID (<xref target="ca-ids"/>), which uniquely identifies the CA.</t>
        </li>
        <li>
          <t>A collision-resistant cryptographic hash function, used by the CA's issuance logs. SHA-256 <xref target="SHS"/> is RECOMMENDED. Throughout this document, this hash function is referred to as HASH, and the size of its output in bytes is referred to as HASH_SIZE.</t>
        </li>
        <li>
          <t>A series of issuance logs (<xref target="issuance-logs"/>), which contain all statements the CA has certified.</t>
        </li>
        <li>
          <t>A CA cosigner (<xref target="certification-authority-cosigners"/>), which signs subtrees of issuance logs to certify their contents.</t>
        </li>
        <li>
          <t>Optionally, a landmark sequence per log (<xref target="landmark-tree-sizes"/>), to support optimized landmark-relative certificates.</t>
        </li>
      </ul>
      <t><xref target="representing-certification-authorities"/> defines an X.509 certificate representation of a CA.</t>
      <section anchor="ca-ids">
        <name>Certification Authority Identifiers</name>
        <t>Each Merkle Tree Certificate CA has a <em>CA ID</em> to identify it. This CA ID is a trust anchor ID <xref target="I-D.ietf-tls-trust-anchor-ids"/>.</t>
        <t>Once allocated, the ID's entire object identifier (OID) arc is reserved by this protocol. Given a CA ID whose OID representation is <tt>caID</tt>, this document allocates the following OIDs:</t>
        <ul spacing="normal">
          <li>
            <t>For each positive integer <tt>N</tt>, the OID <tt>{caID logs(0) N}</tt> represents the issuance log <tt>N</tt> (<xref target="issuance-logs"/>).</t>
          </li>
          <li>
            <t>For each positive integer <tt>N</tt> and <tt>L</tt>, the OID <tt>{caID landmarks(1) N L}</tt> represents landmark <tt>L</tt> (<xref target="landmark-tree-sizes"/>) of issuance log <tt>N</tt>. These OIDs may be used as trust anchor IDs, as described in <xref target="landmark-relative-certificates-tls"/>. These OIDs are used when it is necessary to identify an individual landmark, e.g. as in the retry mechanism described <xref section="4.3" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>.</t>
          </li>
          <li>
            <t>For each positive integer <tt>N</tt> and <tt>L</tt>, the OID <tt>{caID landmarkGroups(2) N L}</tt> represents a trust anchor group (<xref section="5" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>) containing landmark <tt>L</tt> of log <tt>N</tt> and earlier landmarks of that log, as defined in <xref target="single-log-landmark-groups"/>. These OIDs may be used to advertise a series of landmarks at once.</t>
          </li>
        </ul>
        <t>Future extensions to this protocol MAY define further allocations.</t>
        <t>A CA ID determines a PKIX distinguished name (<xref section="4.1.2.4" sectionFormat="of" target="RFC5280"/>) that can be used in the issuer or subject field of an X.509 TBSCertificate. This 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 CA with ID <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>32473.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 CA with ID <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="issuance-logs">
        <name>Issuance Logs</name>
        <t>A CA operates a series of issuance logs, each identified by a positive integer <em>log number</em>. Log numbers are numbered consecutively starting from 1. Each log number MUST be at most 65535 (2<sup>16</sup>-1).</t>
        <t>Each issuance log has a <em>log ID</em>, which is a trust anchor ID constructed by concatenating the following OID components:</t>
        <ul spacing="normal">
          <li>
            <t>The CA ID (<xref target="ca-ids"/>)</t>
          </li>
          <li>
            <t>The constant 0</t>
          </li>
          <li>
            <t>The log number of the log</t>
          </li>
        </ul>
        <t>A log ID specifies both the CA and the log number in a single ID.</t>
        <t>Each 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>Each log additionally maintains a <em>minimum index</em> value, 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>
        <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 committed 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>
        <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 { (2^16-1) } MerkleTreeCertEntryExtensionType;

struct {
    ExtensionType extension_type;
    opaque extension_data<0..2^16-1>;
} MerkleTreeCertEntryExtension;

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

struct {
    MerkleTreeCertEntryExtension extensions<0..2^16-1>;
    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>Field <tt>extensions</tt> is the list of tag-length-value extensions associated with the log entry. The extensions list MUST be appear in ascending order by <tt>extension_type</tt> and MUST NOT contain two extensions with the same <tt>extension_type</tt>.</t>
          <t>When <tt>type</tt> is <tt>null_entry</tt>, the entry does not represent any information. Entries at any index in the log MAY have type <tt>null_entry</tt>.</t>
          <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,
    subjectPublicKeyAlgorithm AlgorithmIdentifier{PUBLIC-KEY,
                                  {PublicKeyAlgorithms}},
    subjectPublicKeyInfoHash  OCTET STRING,
    issuerUniqueID        [1] IMPLICIT UniqueIdentifier OPTIONAL,
    subjectUniqueID       [2] IMPLICIT UniqueIdentifier OPTIONAL,
    extensions            [3] EXPLICIT Extensions{{CertExtensions}}
                                           OPTIONAL
}
]]></sourcecode>
          <t>The fields of a TBSCertificateLogEntry are defined as follows:</t>
          <ul spacing="normal">
            <li>
              <t><tt>version</tt>, <tt>validity</tt>, <tt>subject</tt>, <tt>issuerUniqueID</tt>, <tt>subjectUniqueID</tt>, and <tt>extensions</tt> have the same semantics as the corresponding TBSCertificate fields, defined in <xref section="4.1.2" sectionFormat="of" target="RFC5280"/>.</t>
            </li>
            <li>
              <t><tt>issuer</tt> is the CA ID as a PKIX distinguished name, as described in <xref target="ca-ids"/>.</t>
            </li>
            <li>
              <t><tt>subjectPublicKeyAlgorithm</tt> describes the algorithm of the subject's public key. It is constructed identically to the <tt>algorithm</tt> field of a SubjectPublicKeyInfo (<xref section="4.1.2.7" sectionFormat="of" target="RFC5280"/>).</t>
            </li>
            <li>
              <t><tt>subjectPublicKeyInfoHash</tt> contains the hash of subject's public key, encoded as a SubjectPublicKeyInfo. The hash uses the CA's hash function (<xref target="certification-authorities"/>) and is computed over the SubjectPublicKeyInfo's DER <xref target="X.690"/> encoding.</t>
            </li>
          </ul>
          <t>Note the subject's public key algorithm is incorporated into both <tt>subjectPublicKeyAlgorithm</tt> and <tt>subjectPublicKeyInfoHash</tt>.</t>
          <t>MerkleTreeCertEntry is an extensible structure. Future documents may define new values for MerkleTreeCertEntryType or MerkleTreeCertEntryExtensionType, with corresponding semantics. See <xref target="certification-authority-cosigners"/> and <xref target="extensibility"/> for additional discussion.</t>
          <t>A MerkleTreeCertEntry's size SHOULD NOT exceed 65535 (2<sup>16</sup>-1) bytes. Doing so may exceed size limits in common log-serving protocols, such as <xref target="TLOG-TILES"/>. TBSCertificateLogEntry does not include signatures and hashes public keys, so post-quantum algorithms do not contribute to this size.</t>
        </section>
        <section anchor="publishing-logs">
          <name>Publishing Logs</name>
          <t>This protocol aims to enable monitors to detect misissued certificates by observing the issuance log. See <xref target="transparency"/>.</t>
          <t>This document does not prescribe a particular method of observing the issuance log. The access protocols do not affect certificate interoperability, and different applications may have different needs. For example, a PKI that authenticates public services might publicly serve issuance logs, while a PKI that authenticates a single organization's intranet services might keep the log private to the organization. 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>
        <section anchor="log-pruning">
          <name>Log Pruning</name>
          <t>Over time, an issuance log's entries will expire and likely be replaced as certificates are renewed. 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="issuance-logs"/>). 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 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 the public key, signature algorithm, and any 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>Following the principle of key separation <xref target="KeyReuse"/>, cosigner keys SHOULD NOT be used for purposes outside this document. Additional uses MAY be defined but MUST NOT overlap with the signature format defined in <xref target="signature-format"/>. See <xref target="signature-domain-separation"/> for additional discussion.</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 <em>subtree signature</em> for a subtree in a log by signing a CosignedMessage, 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 {
    uint8 label[12] = "subtree/v1\n\0";
    opaque cosigner_name<1..2^8-1>;
    uint64 timestamp;
    opaque log_origin<1..2^8-1>;
    uint64 start;
    uint64 end;
    HashValue subtree_hash;
} CosignedMessage;
]]></sourcecode>
          <t>This signature format is designed to be compatible with the ML-DSA-44 signature construction in <xref target="TLOG-COSIGNATURE"/>, but it supports signature algorithms other than ML-DSA-44 and tree hashes other than SHA-256.</t>
          <t><tt>label</tt> is a fixed prefix for domain separation. Its value MUST be the string <tt>subtree/v1</tt>, followed by a newline (U+000A), followed by a zero byte (U+0000).</t>
          <t><tt>cosigner_name</tt> and <tt>log_origin</tt> are computed from the cosigner ID and the issuance log's ID (<xref target="ca-ids"/>), respectively. They contain the concatenation of:</t>
          <ul spacing="normal">
            <li>
              <t>The 16-byte ASCII string <tt>oid/1.3.6.1.4.1.</tt></t>
            </li>
            <li>
              <t>The trust anchor ID's ASCII representation (<xref section="3" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>)</t>
            </li>
          </ul>
          <t>This is equivalent to the concatenation of:</t>
          <ul spacing="normal">
            <li>
              <t>The four-byte ASCII string <tt>oid/</tt></t>
            </li>
            <li>
              <t>The trust anchor ID as a full OID, in dotted decimal notation</t>
            </li>
          </ul>
          <t>For example, the trust anchor ID 32473.1 would be encoded as the ASCII string <tt>oid/1.3.6.1.4.1.32473.1</tt>.</t>
          <t><tt>start</tt> and <tt>end</tt> MUST define a valid subtree of the log, and <tt>subtree_hash</tt> MUST be the subtree's hash value in the cosigner's view of the log.</t>
          <t>If <tt>timestamp</tt> is non-zero, it MUST be the time that the signature was produced. This time is represented as seconds since the Epoch, as defined in Section 4.19 of Volume 1 of <xref target="POSIX"/>. Additionally, if <tt>timestamp</tt> is non-zero, the following MUST be true:</t>
          <ul spacing="normal">
            <li>
              <t><tt>start</tt> MUST be zero.</t>
            </li>
            <li>
              <t><tt>end</tt> MUST be the size of the largest consistent tree that the cosigner has observed for the log.</t>
            </li>
          </ul>
          <t><tt>timestamp</tt> MAY be zero, in which case no additional constraints are placed on <tt>start</tt> or <tt>end</tt>, and no statement is made about the signing time or largest observed tree.</t>
        </section>
        <section anchor="signature-semantics">
          <name>Signature Semantics</name>
          <t>Before signing a subtree of some log, the cosigner MUST ensure that <tt>subtree_hash</tt> is consistent with its view of the log. Different cosigner roles may obtain this assurance differently. For example:</t>
          <ul spacing="normal">
            <li>
              <t>A cosigner may maintain a full copy of the log, e.g. if it's the log operator. The cosigner can then compute <tt>subtree_hash</tt> from this copy.</t>
            </li>
            <li>
              <t>A cosigner may maintain the hash of the largest consistent tree observed by the log. The cosigner can then check <tt>subtree_hash</tt> with a subtree consistency proof (<xref target="subtree-consistency-proofs"/>).</t>
            </li>
          </ul>
          <t>In both cases, the cosigner MUST ensure that, as it updates its view of the log, the old and new views are consistent. For example, <xref target="TLOG-WITNESS"/> defines a cosigner that checks consistency proofs (<xref section="2.1.4" sectionFormat="of" target="RFC9162"/>) between the two views.</t>
          <t>When a cosigner signs a subtree, it is held separately responsible <em>both</em> for the subtree being consistent with its other signatures, <em>and</em> for the cosigner-specific additional statements. That is, if a cosigner signs an inconsistent subtree, it is held responsible for its additional statements on all entries in the inconsistent subtree, even if some other signed subtree exists that asserts different entries.</t>
          <t>Subtree signatures can be used to sign timestamped log checkpoints with a non-zero <tt>timestamp</tt>. A signature with a non-zero <tt>timestamp</tt> asserts the complete state of the cosigner's view of the log at a given time. These signatures are not directly used in Merkle Tree Certificates (<xref target="certificate-format"/>), but cosigners MAY generate them, subject to the rules above, as part of other functions in a PKI. This may include log serving or integrating an issuance log into a transparency ecosystem. For example, <xref target="TLOG-TILES"/> and <xref target="TLOG-WITNESS"/> use such signatures.</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.</t>
          <t>In this document, any PKIX signature algorithm MAY be used, such as the ML-DSA algorithms defined in <xref target="RFC9881"/>. The signature is generated as in PKIX, except that the input is the structure defined in <xref target="signature-format"/>. In particular, in ML-DSA algorithms, the context string MUST be an empty string, as in <xref section="3" sectionFormat="of" target="RFC9881"/>.</t>
          <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. Each CA MUST operate a CA cosigner whose cosigner ID is the same as its CA ID (<xref target="ca-ids"/>). A CA cosigner MUST NOT sign checkpoints or subtrees for logs not part of this CA instance.</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> and <tt>extension_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> or <tt>extension_type</tt> that it does not recognize. Doing so would certify that the CA has validated the information in some not-yet-defined format. <xref target="extensibility"/> further discusses security implications of such extensions.</t>
        <t>If the CA issues certificate revocation lists (CRLs) <xref target="RFC5280"/> or Online Certificate Status Protocol (OCSP) responses <xref target="RFC6960"/>, the CA's cosigner key MAY be used to directly sign TBSCertList or OCSP ResponseData structures, respectively, but only for this CA instance. Such uses remain subject to other X.509 constraints, such as the key usage extension, which are out of scope for this document. See <xref target="signature-domain-separation"/> for a discussion of domain separation.</t>
        <t>If the CA operator additionally operates a directly-signing X.509 CA, that CA key MUST be distinct from any Merkle Tree CA cosigner keys. In particular, a CA cosigner key MUST NOT be used to directly sign TBSCertificate structures. A CA cosigner key issues certificates by signing subtrees.</t>
      </section>
      <section anchor="representing-certification-authorities">
        <name>Representing Certification Authorities</name>
        <t>This section defines the X.509 Certificate <xref target="RFC5280"/> representation of a Merkle Tree Certificate CA. It identifies the CA cosigner (<xref target="certification-authority-cosigners"/>) and associated issuance logs. This information is encoded as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>subject</tt> field MUST be the CA ID as a PKIX distinguished name, as described in <xref target="ca-ids"/>.</t>
          </li>
          <li>
            <t>The <tt>subjectPublicKeyInfo</tt> field MUST be the public key of the CA cosigner <xref target="certification-authority-cosigners"/>.</t>
          </li>
          <li>
            <t>The <tt>extensions</tt> field MUST contain a critical extension of type id-pe-mtcCertificationAuthority, defined below.</t>
          </li>
          <li>
            <t>The subject key identifier extension (<xref section="4.2.1.2" sectionFormat="of" target="RFC5280"/>), if present, SHOULD be set to the CA ID <xref target="ca-ids"/>. The CA ID is encoded in its binary representation, as defined in <xref section="3" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>.</t>
          </li>
        </ul>
        <t>Other fields and extensions in <xref target="RFC5280"/> apply unmodified. In particular:</t>
        <ul spacing="normal">
          <li>
            <t>The key usage extension (<xref section="4.2.1.3" sectionFormat="of" target="RFC5280"/>) MUST be present and assert at least the <tt>keyCertSign</tt> bit.</t>
          </li>
          <li>
            <t>The basic constraints extension (<xref section="4.2.1.9" sectionFormat="of" target="RFC5280"/>) MUST be present and set the <tt>cA</tt> field to TRUE.</t>
          </li>
        </ul>
        <t>The id-pe-mtcCertificationAuthority extension is defined below. This extension indicates that the subject of the certificate is a CA that issues Merkle Tree Certificates. If present, it MUST be marked as critical.</t>
        <sourcecode type="asn.1"><![CDATA[
id-pe-mtcCertificationAuthority OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) pe(1) TBD }

ext-mtcCertificationAuthority EXTENSION ::= {
    SYNTAX MTCCertificationAuthority
    IDENTIFIED BY id-pe-mtcCertificationAuthority
    CRITICALITY TRUE
}

-- From draft-ietf-tls-trust-anchor-ids
TrustAnchorID ::= RELATIVE-OID

MTCCertificationAuthority ::= SEQUENCE {
    logHash   AlgorithmIdentifier{DIGEST-ALGORITHM, {...}},
    sigAlg    AlgorithmIdentifier{SIGNATURE-ALGORITHM, {...}},
    minSerial INTEGER
}
]]></sourcecode>
        <t>For initial experimentation, early implementations of this design will use the OID 1.3.6.1.4.1.44363.47.2 instead of <tt>id-pe-mtcCertificationAuthority</tt>.</t>
        <t>The fields of a MTCCertificationAuthority structure are defined as follows:</t>
        <ul spacing="normal">
          <li>
            <t><tt>logHash</tt> describes the hash algorithm used by all logs operated by this CA. For example, if the hash is SHA-256, it would be <tt>mda-sha256</tt> as defined in <xref section="8" sectionFormat="of" target="RFC5912"/>.</t>
          </li>
          <li>
            <t><tt>sigAlg</tt> is the CA cosigner's signature algorithm (<xref target="signature-algorithms"/>).</t>
          </li>
          <li>
            <t><tt>minSerial</tt> is an integer describing the minimum allowed serial number from this CA. Since the serial number encodes both the log number (<xref target="issuance-logs"/>) and the entry index into a specific log, it can be used to set a minimum allowed log number or a minimum allowed index in a particular log (<xref target="log-pruning"/>).</t>
          </li>
        </ul>
        <t>If this extension is present, the key described in <tt>subjectPublicKeyInfo</tt> is a CA cosigner key and subject to the usage restrictions described in <xref target="certification-authority-cosigners"/>. In particular, it MUST NOT be used to directly sign TBSCertificate structures.</t>
        <t>This extension indicates the subtree signature format defined in <xref target="signature-format"/>. If a later version of the protocol defines a new format, this SHOULD be represented in CA certificates with a new extension type.</t>
        <t>A CA certificate using this format SHOULD NOT be self-signed by the Merkle Tree Certificate CA. Doing so would require writing the information in the issuance log. Instead, if used to represent a trust anchor, the certificate should be an unsigned certificate <xref target="RFC9925"/>.</t>
      </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="standalone-certificates"/> and <xref target="landmark-relative-certificates"/> define two profiles of Merkle Tree Certificates, standalone certificates and landmark-relative 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 CA ID as a PKIX distinguished name, as described in <xref target="ca-ids"/>.</t>
        <t>The TBSCertificate's <tt>serialNumber</tt> is constructed from the zero-based index of the TBSCertificateLogEntry in the log and the log's number (<xref target="issuance-logs"/>). The <tt>serialNumber</tt> MUST be equal to <tt>(log_number &lt;&lt; 48) | index</tt>. All serial numbers constructed in this way will be positive and at most 2<sup>64</sup>-1.</t>
        <t>The TBSCertificate's <tt>subjectPublicKeyInfo</tt> contains the specified public key. Its <tt>algorithm</tt> field MUST match the TBSCertificateLogEntry's <tt>subjectPublicKeyAlgorithm</tt>. 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[
/* From Section 4.1 of draft-ietf-tls-trust-anchor-ids */
opaque TrustAnchorID<1..2^8-1>;

opaque HashValue[HASH_SIZE];

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

struct {
    MerkleTreeCertEntryExtension extensions<0..2^16-1>;
    uint48 start;
    uint48 end;
    HashValue inclusion_proof<0..2^16-1>;
    MTCSignature signatures<0..2^16-1>;
} MTCProof;
]]></sourcecode>
        <t><tt>extensions</tt> MUST contain the log entry's <tt>extensions</tt> value (<xref target="log-entries"/>).</t>
        <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"/>. The <tt>timestamp</tt> field used when computing the signature MUST be zero.</t>
        <t>Each element of the <tt>signatures</tt> field MUST have a unique <tt>cosigner_id</tt>. Elements MUST be ordered by <tt>cosigner_id</tt> as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Shorter byte strings are ordered before longer byte strings</t>
          </li>
          <li>
            <t>Byte strings of the same length are ordered lexicographically</t>
          </li>
        </ul>
        <t>An MTCProof parser MUST reject the input if there are duplicate <tt>cosigner_id</tt> values, or if they are not ordered correctly. This can be done by checking each <tt>cosigner_id</tt> value comes strictly after the previous one in the above order.</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="standalone-certificates">
        <name>Standalone Certificates</name>
        <t>A <em>standalone 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. Standalone 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 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 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>
        <t>This document does not prescribe the specific cosigner roles, or a particular protocol for requesting cosignatures. Protocols for cosigners can vary depending on the needs of that cosigner. Some example protocols are described in <xref target="TLOG-WITNESS"/> and <xref target="TLOG-MIRROR"/>. It is RECOMMENDED that the CA collect cosignatures for the authenticating party, but the authenticating party MAY collect additional cosignatures and add them to the certificate.</t>
      </section>
      <section anchor="landmark-relative-certificates">
        <name>Landmark-Relative Certificates</name>
        <t>A <em>landmark-relative 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. Landmark-relative 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 standalone certificate alongside any landmark-relative 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="landmark-tree-sizes">
          <name>Landmark Tree Sizes</name>
          <t>To issue landmark-relative certificates, a CA must additionally maintain a <em>landmark sequence</em>, which is a sequence of <em>landmarks</em>.</t>
          <t>Each landmark specifies an agreed tree size, as a common point of reference across the ecosystem for optimizing certificates. Landmarks are numbered consecutively from zero. The first landmark, numbered zero, MUST have 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>As the issuance log grows, CAs continuously allocate new landmarks. This allocation balances minimizing landmark-relative certificate delay with minimizing the size of the relying party's predistributed state. To bound the latter, each CA sets a positive integer <tt>max_active_landmarks</tt> parameter, which is the maximum number of landmarks that may contain unexpired certificates at any time.</t>
          <t>The most recent <tt>max_active_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_active_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_active_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_active_landmarks</tt> hashes (<xref target="trusted-subtrees"/>) per CA, so <tt>max_active_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 below, a CA with a maximum certificate lifetime of 7 days, allocating a landmark every hour, will have a <tt>max_active_landmarks</tt> of 169. The client state is then 338 hashes, or 10,816 bytes with SHA-256.</t>
        </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_active_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. The <tt>+ 1</tt> accounts for landmarks not allocated at the exact start of their time interval, which can push certificate expiry one interval further than <tt>ceil(max_cert_lifetime / time_between_landmarks)</tt> alone would bound.</t>
        </section>
        <section anchor="publishing-landmarks">
          <name>Publishing Landmarks</name>
          <t>CAs SHOULD publish their active landmarks, so that relying parties can configure trusted subtrees (<xref target="trusted-subtrees"/>). The following format can be used to describe this information. The format is the following sequence of 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_active_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>
          <t>It is RECOMMENDED that this format be published as an HTTP resource <xref target="RFC9110"/> with content type <tt>text/plain; charset=utf-8</tt>.</t>
        </section>
        <section anchor="constructing-landmark-relative-certificates">
          <name>Constructing Landmark-Relative Certificates</name>
          <t>Given a TBSCertificateLogEntry in the issuance log and a landmark sequence, a landmark-relative 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 an 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 standalone and landmark-relative 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, standalone certificate subtrees will span around 2,500 certificates, leading to 12 hashes in the inclusion proof, or 384 bytes. Standalone certificates additionally must carry a sufficient set of signatures to meet relying party requirements.</t>
        <t>If a new landmark is allocated every hour, landmark-relative 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>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="relying-party-configuration">
        <name>Relying Party Configuration</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 CA's ID (<xref target="ca-ids"/>)</t>
          </li>
          <li>
            <t>The CA's log hash algorithm, e.g. SHA-256</t>
          </li>
          <li>
            <t>The CA cosigner, and any other 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 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 serial numbers (<xref target="revoked-ranges"/>)</t>
          </li>
        </ul>
        <t>This information may be obtained from a CA certificate structure, defined in <xref target="representing-certification-authorities"/>:</t>
        <ul spacing="normal">
          <li>
            <t>The CA ID is determined from the certificate's subject.</t>
          </li>
          <li>
            <t>The log hash algorithm is determined from the id-pe-mtcCertificationAuthority extension.</t>
          </li>
          <li>
            <t>The CA cosigner is determined from the certificate's subject public key and id-pe-mtcCertificationAuthority extension. The CA's cosigner ID is the same as its CA ID. The relying party incorporates this cosigner into its cosigner policy based on the guidance in <xref target="trusted-cosigners"/>.</t>
          </li>
          <li>
            <t>No trusted subtrees are directly represented by the CA certificate structure, but the relying party MAY incorporate trusted subtrees from out-of-band information.</t>
          </li>
          <li>
            <t>The revoked serial number ranges include the half-open range <tt>[0, minSerial)</tt>, but the relying party MAY incorporate additional ranges from out-of-band information.</t>
          </li>
        </ul>
      </section>
      <section anchor="verifying-certificate-signatures">
        <name>Verifying Certificate Signatures</name>
        <t>When verifying the signature of 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 this 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>serial</tt> be the certificate's serial number. If <tt>serial</tt> is negative or greater than 2<sup>64</sup>-1, abort this process and fail verification.</t>
          </li>
          <li>
            <t>If <tt>serial</tt> is contained in one of the relying party's revoked ranges (<xref target="revoked-ranges"/>), abort this process and fail verification.</t>
          </li>
          <li>
            <t>Let <tt>index</tt> be the least significant 48 bits of <tt>serial</tt> and let <tt>log_number</tt> be <tt>serial &gt;&gt; 48</tt>. If <tt>log_number</tt> is zero, abort this process and fail verification.</t>
          </li>
          <li>
            <t>Let <tt>log_id</tt> be the log ID constructed from the CA ID in <tt>issuer</tt> and the <tt>log_number</tt> (<xref target="issuance-logs"/>).</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>subjectPublicKeyAlgorithm</tt> to the <tt>algorithm</tt> field of the <tt>subjectPublicKeyInfo</tt>.</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 as follows:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>Set <tt>type</tt> to <tt>tbs_cert_entry</tt>.</t>
              </li>
              <li>
                <t>Set <tt>extensions</tt> to the MTCProof's <tt>extensions</tt> value.</t>
              </li>
              <li>
                <t>Set <tt>tbs_cert_entry_data</tt> to the TBSCertificateLogEntry, encoded as described in <xref target="log-entries"/>.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>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>log_number</tt>, <tt>start</tt>, and <tt>end</tt> matches a trusted subtree (<xref target="trusted-subtrees"/>) for the CA, 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.  </t>
            <t>
Signatures are verified as described in <xref target="signature-format"/>. For each signature verification, the CosignedMessage structure is constructed as follows:  </t>
            <ol spacing="normal" type="1"><li>
                <t>Set the CosignedMessage's <tt>cosigner_name</tt> based on the cosigner ID as described in <xref target="signature-format"/>.</t>
              </li>
              <li>
                <t>Set the CosignedMessage's <tt>timestamp</tt> to zero.</t>
              </li>
              <li>
                <t>Set the CosignedMessage's <tt>log_origin</tt> based on <tt>log_id</tt> as described in <xref target="signature-format"/>.</t>
              </li>
              <li>
                <t>Set the CosignedMessage's <tt>start</tt> and <tt>end</tt> to the MTCProof's <tt>start</tt> and <tt>end</tt>, respectively.</t>
              </li>
              <li>
                <t>Set the CosignedMessage's <tt>subtree_hash</tt> to <tt>expected_subtree_hash</tt>.</t>
              </li>
            </ol>
          </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 <tt>extensions</tt> field from the MTCProof to the hash.</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 <tt>subjectPublicKeyInfo</tt>'s <tt>algorithm</tt> field to the hash.</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 entire <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 CA cosigner key. This is analogous to the signature in a directly-signed X.509 certificate. If the relying party obtains CA information from a CA certificate, the CA cosigner key is determined as in <xref target="relying-party-configuration"/>.</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 refusing 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="revoked-ranges"/> discusses mitigations for this. Alternatively, a relying party MAY require that cosigners 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 CAs.</t>
        <t>In applications that do not enforce transparency requirements, a relying party MAY implement a policy that only checks for a signature from the CA cosigner. This fits the pattern of many existing X.509 applications, where CA information is determined directly from a CA certificate, with no additional out-of-band information. Unrecognized cosignatures are ignored, so such applications can interoperate with certificates issued for transparency-enforcing applications that require additional cosigners.</t>
        <t>Cosigner roles are extensible without changes to certificate verification itself. Future specifications and individual deployments MAY define other cosigner roles to incorporate in 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 trusted subtrees from one or more of the CA's issuance logs. This allows the relying party to accept landmark-relative certificates (<xref target="landmark-relative-certificates"/>) constructed against those subtrees.</t>
        <t>Each trusted subtree contains:</t>
        <ul spacing="normal">
          <li>
            <t>The log number of the containing log</t>
          </li>
          <li>
            <t>The <tt>start</tt> and <tt>end</tt> values that define the subtree</t>
          </li>
          <li>
            <t>The hash of the subtree</t>
          </li>
        </ul>
        <t>Trusted subtrees for a given log are determined by its active landmark subtrees, as described in <xref target="landmark-tree-sizes"/>. 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 landmark-relative 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="revoked-ranges">
        <name>Revoked Ranges</name>
        <t>For each supported Merkle Tree CA, the relying party maintains a list of revoked ranges of serial numbers. A serial number combines a log number and a log index. A relying party can thus efficiently revoke both ranges of entries of an issuance log, and ranges of issuance logs, 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 an issuance log, 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 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>
        <t>The revocation mechanism in this section is complementary to certificate-level revocation mechanisms. log entries are uniquely identified by their serial number and issuer, existing revocation mechanisms like CRLs <xref target="RFC5280"/> and OCSP <xref target="RFC6960"/> apply unchanged.</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 any 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 directly-signing X.509 CA</t>
        </li>
        <li>
          <t>Whether the authenticating party should send a standalone or landmark-relative 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="standalone-certificates-tls">
        <name>Standalone Certificates</name>
        <t>Authenticating and relying parties SHOULD use the <tt>trust_anchors</tt> extension to determine whether a standalone certificate would be acceptable. A standalone certificate has a trust anchor ID of the corresponding CA ID (<xref target="ca-ids"/>). This trust anchor ID is additionally contained in the trust anchor groups defined in <xref target="single-log-landmark-groups"/>.</t>
        <t>CA IDs MAY be incorporated into other trust anchor groups, following the guidance in <xref section="5" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>.</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 standalone 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>
      </section>
      <section anchor="landmark-relative-certificates-tls">
        <name>Landmark-Relative Certificates</name>
        <t>An authenticating party SHOULD NOT send a landmark-relative 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>
        <t>TLS implementations SHOULD use the <tt>trust_anchors</tt> extension to determine this. A landmark-relative certificate's trust anchor ID is the concatenation of the following OID components:</t>
        <ul spacing="normal">
          <li>
            <t>The CA ID <xref target="ca-ids"/> of the CA that issued the certificate</t>
          </li>
          <li>
            <t>The constant 1</t>
          </li>
          <li>
            <t>The log number of the log used to construct the certificate</t>
          </li>
          <li>
            <t>The landmark number of the landmark used to construct the certificate</t>
          </li>
        </ul>
        <t>For example, the trust anchor ID for landmark 42 of CA <tt>32473.1</tt> and log number <tt>8</tt> is <tt>32473.1.1.8.42</tt>.</t>
        <t>These trust anchor IDs are used when it is necessary to identify an individual landmark, e.g. as in the retry mechanism described <xref section="4.3" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>. To more efficiently express a relying party's complete landmark state, these IDs are contained in trust anchor groups defined in <xref target="single-log-landmark-groups"/>, which allow relying paries to express their landmark state with a single ID.</t>
        <t>If both a landmark-relative and a standalone certificate are usable, an authenticating party SHOULD preferentially use the landmark-relative certificate. A landmark-relative certificate asserts the same information as its standalone counterpart, but is expected to be smaller.</t>
        <section anchor="single-log-landmark-groups">
          <name>Single-Log Landmark Groups</name>
          <t>Relying parties support many landmarks per log at a time. To compactly represent this, each log ID implicitly defines series of trust anchor groups (<xref section="5" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>) called <em>landmark groups</em>.</t>
          <t>For each Merkle Tree Certificates CA, each log number <tt>N</tt>, and each landmark number <tt>L</tt>, a landmark group is defined. The group's ID is the concatenation of the following OID components:</t>
          <ul spacing="normal">
            <li>
              <t>The CA ID <xref target="ca-ids"/> of the CA</t>
            </li>
            <li>
              <t>The constant 2</t>
            </li>
            <li>
              <t>The log number <tt>N</tt></t>
            </li>
            <li>
              <t>The landmark number <tt>L</tt></t>
            </li>
          </ul>
          <t>This group contains the following trust anchors:</t>
          <ul spacing="normal">
            <li>
              <t>The CA ID itself (see <xref target="standalone-certificates-tls"/>)</t>
            </li>
            <li>
              <t>Each landmark of log <tt>N</tt> from <tt>L - max_active_landmarks + 1</tt> to <tt>L</tt>, inclusive</t>
            </li>
          </ul>
          <t>Landmark-relative certificates SHOULD be configured with this information, as in <xref section="3.2" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>. A relying party whose latest trusted subtree (<xref target="trusted-subtrees"/>) in log <tt>N</tt> is landmark <tt>L</tt> SHOULD configure the <tt>trust_anchors</tt> extension to advertise the above landmark group. This signals support for both standalone certificates and supported landmarks.</t>
          <t>For example, a relying party which is up-to-date as of landmark 42 of log 8 of CA <tt>32473.1</tt> would send an ID of <tt>32473.1.2.8.42</tt>.</t>
        </section>
        <section anchor="timestamped-landmark-groups">
          <name>Timestamped Landmark Groups</name>
          <t>Landmark groups for an single CA, described above, allow relying parties to advertise one ID per supported CA. Depending on the number of trust anchors, this can be sufficient to efficiently represent relying party state.</t>
          <t>When needed, <xref section="5" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/> describes how PKIs requiring further size savings can use trust anchor groups that span multiple CA instances. For example, a single ID may signal support for a group of CAs across one or more CA operators. This section describes how such groups can be applied to landmarks, using a variation of the versioning construction described in <xref section="5.1" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>.</t>
          <t>Trust anchor groups containing landmarks SHOULD define versions predictably based on the time. For example, if the contained CAs allocate landmarks roughly hourly, the trust anchor group might increment the version component every hour. Each given version of the group SHOULD contain the active landmarks as of the corresponding timestamp.</t>
          <t>This predictable cadence allows the CA to construct trust anchor group inclusions (<xref section="7.2" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>) for issued certificates without additional coordination. Conversely, a relying party MAY send a version if its trusted subtrees (<xref target="trusted-subtrees"/>) are up-to-date for all contained CAs, as of the versions timestamp.</t>
          <t>In some cases, the relying party's trusted subtrees may only be partially up-to-date. The relying party, or its update service, may be unable to reach one CA in the group, e.g. due to a transient outage. This complicates timestamp-based strategies:</t>
          <ul spacing="normal">
            <li>
              <t>If the relying party sends the group with an older timestamp, it will not signal its up-to-date state for the reachable CAs. This means a single unreachable CA can disrupt service for certificates issued by unrelated CAs.</t>
            </li>
            <li>
              <t>If the relying party sends the group with a newer timestamp, the relying party may signal support for landmarks it does not have. This risks connection failures. If the unreachable CA issued recent landmark-relative certificates, those certificates will fail validation.</t>
            </li>
          </ul>
          <t>The relying party can mitigate this in a number of ways:</t>
          <ul spacing="normal">
            <li>
              <t>If the trust anchor group consists of CAs from the same operator, waiting until all CAs are reachable will be minimally disruptive.</t>
            </li>
            <li>
              <t>The relying party can opt to send the group with an older timestamp, combined with other, smaller groups at newer timestamps to better describe its state.</t>
            </li>
            <li>
              <t>A client relying party can send the newer timestamp and, in the event the unreachable CA did issue recent landmark-relative certificates, rely on the retry mechanism described in <xref section="4.3" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/> to recover from any signaling failures.</t>
            </li>
          </ul>
        </section>
      </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="7" sectionFormat="of" target="I-D.ietf-tls-trust-anchor-ids"/>. <xref target="use-in-tls"/> decribes the trust anchor ID assignments for standalone and landmark-relative 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 standalone certificate, constructed as described in <xref target="standalone-certificates"/>.</t>
      <t>The standalone certificate response SHOULD additionally carry an alternate URL for the landmark-relative certificate, as described <xref section="7.4.2" sectionFormat="of" target="RFC8555"/>. Before the landmark-relative 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 landmark-relative certificate, as described in <xref target="landmark-relative-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 expect 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. Costs are thus expected to scale with the CA's own issuance.</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 a role comparable to 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 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. 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 inexpensive to run, but does not guarantee durable logging. 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, larger quorums result in larger, more expensive standalone certificates. The cost of standalone certificates will depend on how frequently the landmark optimization occurs in a given PKI. Conversely, relying parties that require smaller quorums have smaller standalone 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 that deploy Merkle Tree certificates SHOULD establish availability policies. These policies SHOULD be 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="revoked-ranges"/>: 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. 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 without compromising transparency goals. If a CA never makes an entry available, mirrors will be unable to update. This will prevent relying parties from accepting the undisclosed entries. However, a CA that 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 SHOULD set availability requirements on CAs.</t>
        <t>In each of these cases, the serial numbers of unavailable entries are known. Availability failures can thus be mitigated by revocation, as described in <xref target="revoked-ranges"/>, 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 landmark-relative certificate will not be available until the next landmark is ready. From there, the landmark-relative certificate will not be available until relying parties receive new trusted subtrees.</t>
        <t>To maximize coverage of landmark-relative certificates, authenticating parties performing routine renewal SHOULD request a new Merkle Tree certificate before the previous Merkle Tree certificate expires. Renewing around 75% of the way through 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 standalone certificate and the revocation of the previous certificate. This will interrupt the size optimization until the new landmark-relative certificate is available and relying parties are updated.</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 their 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 standalone 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 landmark-relative certificates, the cosigner requirements are checked ahead of time, when the trusted subtrees are predistributed (<xref target="trusted-subtrees"/>).</t>
          </li>
        </ul>
        <t>Given a subtree hash computed over entries that the CA certified, it must be computationally infeasible to construct an entry not on this list, and an 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. 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. 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 range of inconsistent serials (<xref target="revoked-ranges"/>), 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"/>). The impact depends on the relying party's cosigner policy:</t>
        <ul spacing="normal">
          <li>
            <t>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.</t>
          </li>
          <li>
            <t>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. This is sufficient to determine the serial number, so relying parties can then react by revoking the undisclosed entries (<xref target="revoked-ranges"/>), and likely removing the CA.</t>
          </li>
        </ul>
      </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 signed checkpoint may be 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 subtree signature is a binding assertion by the CA that it has certified every entry in the subtree. 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 signed checkpoint 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="extensibility">
        <name>Extensibility</name>
        <t>MerkleTreeCertEntry (<xref target="log-entries"/>) contain several extension points:</t>
        <ul spacing="normal">
          <li>
            <t>New X.509 extensions can be added to TBSCertificateLogEntry.</t>
          </li>
          <li>
            <t>New MerkleTreeCertEntryType values define new formats for the entry contents.</t>
          </li>
          <li>
            <t>New MerkleTreeCertEntryExtensionType values define new entry extension fields.</t>
          </li>
        </ul>
        <t>X.509 extensions apply to Merkle Tree Certificates without any modifications. The two entry-level extension points are new to this protocol. Older CAs, cosigners, relying parties, and monitors may encounter unrecognized entries:</t>
        <t>Different cosigner roles interact with extensions differently. Some roles, e.g. <xref target="TLOG-MIRROR"/> and <xref target="TLOG-WITNESS"/>, do not interpret entry contents. Unrecognized extensions do not impact these roles. Other roles, such as CA cosigners, have semantics that depend on the entry contents. If a cosigner role interprets log entry contents, it MUST define how it interacts with unrecognized types and extensions.</t>
        <t><xref target="certification-authority-cosigners"/> forbids 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 CA can never sign an unrecognized X.509 extension.</t>
        <t>Unrecognized entry types do not impact older relying parties. 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>However, unrecognized entry extensions will be ignored by relying parties, analogously to a non-critical X.509 extension. Entry extensions thus SHOULD be defined so that this is safe.</t>
        <t>If a monitor observes an entry with unknown type or entry extension, 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>When 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 are 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 an 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 anchor="revocation">
        <name>Revocation</name>
        <t>This document does not define a new certificate-level revocation mechanism. Existing mechanisms like CRLs and OCSP apply unchanged to Merkle Tree certificates. The sequential serial numbers assigned by issuance logs may enable future improvements to revocation, but such work is out of scope for this document.</t>
      </section>
      <section anchor="signature-domain-separation">
        <name>Signature Domain Separation</name>
        <t>The signature format defined in <xref target="signature-format"/> includes a fixed label prefix to ensure domain separation. Provided other uses of the same key use a non-overlapping prefix, signatures in one context cannot be substituted for those in another.</t>
        <t><xref target="certification-authority-cosigners"/> permits a CA cosigner key to be used to sign CRLs and OCSP resposes. These signatures do not include a domain separation prefix. Instead, X.509 relies on an undocumented assumption that the TBSCertificate, TBSCertList, and OCSP ResponseData structures do not overlap at the level of individual ASN.1 fields.</t>
        <t>These ASN.1 structures all begin with a SEQUENCE tag, which is encoded in DER as 0x30 or the ASCII digit "0". The domain separation label used in <xref target="signature-format"/>, <tt>subtree/v1\n\0</tt>, does not begin with "0", so their inputs do not overlap. More generally, this label is not a prefix of any DER or BER encoding.</t>
        <t>Domain separation analysis based on the structures themselves is fragile, particularly when individual ASN.1 fields must be analyzed. This document depends on a structure-level analysis for CRLs and OCSP responses due to how these legacy protocols were defined. Future uses of the key SHOULD use a more robust mechanism, namely a fixed label prefix or a context string parameter if the signature scheme supports it.</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="certificate-extension">
        <name>Certificate Extension</name>
        <t>IANA is requested to add the following entry to the "SMI Security for PKIX Certificate Extension" 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-pe-mtcCertificationAuthority</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="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="30" month="April" year="2026"/>
            <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-04"/>
        </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="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="POSIX">
          <front>
            <title>IEEE/Open Group Standard for Information Technology--Portable Operating System Interface (POSIX™) Base Specifications, Issue 8</title>
            <author>
              <organization/>
            </author>
            <date month="June" year="2024"/>
          </front>
          <seriesInfo name="DOI" value="10.1109/ieeestd.2024.10555529"/>
          <seriesInfo name="ISBN" value="[&quot;9798855707939&quot;]"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="RFC9881">
          <front>
            <title>Internet X.509 Public Key Infrastructure -- Algorithm Identifiers for the Module-Lattice-Based Digital Signature Algorithm (ML-DSA)</title>
            <author fullname="J. Massimo" initials="J." surname="Massimo"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="B. E. Westerbaan" initials="B. E." surname="Westerbaan"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>Digital signatures are used within X.509 certificates and Certificate Revocation Lists (CRLs), and to sign messages. This document specifies the conventions for using FIPS 204, the Module-Lattice-Based Digital Signature Algorithm (ML-DSA) in Internet X.509 certificates and CRLs. The conventions for the associated signatures, subject public keys, and private key are also described.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9881"/>
          <seriesInfo name="DOI" value="10.17487/RFC9881"/>
        </reference>
        <reference anchor="RFC6960">
          <front>
            <title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="M. Myers" initials="M." surname="Myers"/>
            <author fullname="R. Ankney" initials="R." surname="Ankney"/>
            <author fullname="A. Malpani" initials="A." surname="Malpani"/>
            <author fullname="S. Galperin" initials="S." surname="Galperin"/>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document specifies a protocol useful in determining the current status of a digital certificate without requiring Certificate Revocation Lists (CRLs). Additional mechanisms addressing PKIX operational requirements are specified in separate documents. This document obsoletes RFCs 2560 and 6277. It also updates RFC 5912.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6960"/>
          <seriesInfo name="DOI" value="10.17487/RFC6960"/>
        </reference>
        <reference anchor="RFC9925">
          <front>
            <title>Unsigned X.509 Certificates</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <date month="February" year="2026"/>
            <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="RFC" value="9925"/>
          <seriesInfo name="DOI" value="10.17487/RFC9925"/>
        </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="KeyReuse" target="https://eprint.iacr.org/2019/519">
          <front>
            <title>Security in the Presence of Key Reuse: Context-Separable Interfaces and their Applications</title>
            <author initials="C." surname="Patton" fullname="Christopher Patton">
              <organization/>
            </author>
            <author initials="T." surname="Shrimpton" fullname="Thomas Shrimpton">
              <organization/>
            </author>
            <date year="2019"/>
          </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-COSIGNATURE" target="https://c2sp.org/tlog-cosignature">
          <front>
            <title>Transparency Log Cosignatures</title>
            <author>
              <organization>C2SP</organization>
            </author>
            <date year="2026" 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="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="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 1880?>

<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, DIGEST-ALGORITHM, AlgorithmIdentifier{},
  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, PublicKeyAlgorithms
  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-anchor-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,
    subjectPublicKeyAlgorithm AlgorithmIdentifier{PUBLIC-KEY,
                                  {PublicKeyAlgorithms}},
    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
}

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

ext-mtcCertificationAuthority EXTENSION ::= {
    SYNTAX MTCCertificationAuthority
    IDENTIFIED BY id-pe-mtcCertificationAuthority
    CRITICALITY TRUE
}

MTCCertificationAuthority ::= SEQUENCE {
    logHash   AlgorithmIdentifier{DIGEST-ALGORITHM, {...}},
    sigAlg    AlgorithmIdentifier{SIGNATURE-ALGORITHM, {...}},
    minSerial INTEGER
}

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 a 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 from 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 left 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 starting 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 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 the 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 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, Corey Bonnell, Ryan Dickson, Aaron Gable, Nick Harper, Russ Housley, Dennis Jackson, Ilari Liusvaara, Sanketh Menda, Matt Mueller, Chris Patton, Michael Richardson, Ryan Sleevi, and Emily Stark for many valuable discussions and insights which led to this document, as well as feedback and contributions to 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 numbered="false" anchor="since-draft-davidben-tls-merkle-tree-certs-10">
        <name>Since draft-davidben-tls-merkle-tree-certs-10</name>
        <ul spacing="normal">
          <li>
            <t>Adopted by working group</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-plants-merkle-tree-certs-00">
        <name>Since draft-ietf-plants-merkle-tree-certs-00</name>
        <ul spacing="normal">
          <li>
            <t>Address editorial comments from WG adoption call</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-plants-merkle-tree-certs-01">
        <name>Since draft-ietf-plants-merkle-tree-certs-01</name>
        <ul spacing="normal">
          <li>
            <t>Renamed full certificate to standalone certificate, signatureless certificate to landmark certificate.</t>
          </li>
          <li>
            <t>Included subject public key algorithm in log entries</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-plants-merkle-tree-certs-02">
        <name>Since draft-ietf-plants-merkle-tree-certs-02</name>
        <ul spacing="normal">
          <li>
            <t>Renamed landmark certificate to landmark-relative certificate</t>
          </li>
          <li>
            <t>Relaxed restrictions on <tt>null_entry</tt></t>
          </li>
          <li>
            <t>Clarify that CRLs and OCSPs apply to MTCs unmodified</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-plants-merkle-tree-certs-03">
        <name>Since draft-ietf-plants-merkle-tree-certs-03</name>
        <ul spacing="normal">
          <li>
            <t>Use a tlog-compatible signature scheme for ease of deployment</t>
          </li>
          <li>
            <t>Define a CA certificate representation</t>
          </li>
          <li>
            <t>Remove the one-to-many relationship between MTC CAs and CA cosigners</t>
          </li>
          <li>
            <t>Discuss domain separation for signatures</t>
          </li>
          <li>
            <t>Recommend a maximum log entry size for tlog compatibility</t>
          </li>
          <li>
            <t>Prescribe landmark OID allocation</t>
          </li>
          <li>
            <t>Update TLS integration now that trust anchor IDs extension has been moved to the base draft</t>
          </li>
          <li>
            <t>A single CA now operates a series of issuance logs, instead of a one-to-one correspondence</t>
          </li>
          <li>
            <t>Group components of a CA into a CA-specific section that enumerates the parts of a CA</t>
          </li>
          <li>
            <t>Canonicalize the order of cosignatures in MTCProofs</t>
          </li>
          <li>
            <t>Remove sketch of tlog subtree signer API in favor of https://github.com/C2SP/C2SP/pull/245 in <xref target="TLOG-WITNESS"/></t>
          </li>
          <li>
            <t>Add an extensions block to log entries</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y963rb2JUo+J9PgXZ905ZUJHWXbaUqp2VJLqsjWz4SnUra
XccESUhCTAIMAEpW7Kpvfs/fea15inmSWdd9A0DJTlVy5px24rJEAvuy9trr
fun1ep0qrabJfvQqKT5Mk2hQJEl0mBRVepmO4yopO5N8nMUzeGJSxJdVL02q
y958GmdV2ZvRO70K3umN4Z2yt7HTKRejWVqWaZ5Vd3N47eR48KKDQ13lxd1+
VFaTTraYjZJivzOBT/c74zwrk6xclPtRVSySzs1+tN2JiyTejx5dJONFkVZ3
jzq3efHhqsgXc/j0zR9OutFpflV2o4Nswmu+SK+yuFoUSfmoc5NkCxg4ih76
QhTxWh/9CLOk2VX0A76In8/idAqf84b/DTffz4sr/CYuxtfwzXVVzcv99XV8
ED9Kb5K+PraOH6yPivy2TNZ5CHzzKq2uFyN414Xl7dV6DZz48BQPoXIm8l/q
82D9NK+/vv6AE+tfV7Ppo04nXlTXORxJ1IM5oyjN4DQeHfWj50n2l3iWZo/o
Y0aER0fxTToJvoLtxln6t7iCg4dHfsjzK0Cn09ND/jphQE7wzVGS/dsVfd8f
57NObc6zx8+LNAmmTG7yzP8mmPFgPocJT7Jx35sxLu9ms6Qq0vG/xfhEw5TP
+8f96EeAclKM4tif93lc1r4KJj6c5ovJJRx+4k08ist/G5uvGqY97Ud/jKdJ
VsXejKeLD4n/xcPmm97wO8snfUGTlnkx8Wd9kU7T+TwPvgwPNclnd6U3KyLX
v13yy4CEnU6WFzN4/obu35/6e8829ul5ITOPTrJLfgKOs0rG11k+za/uol50
cPG6vxkl2Tif4A08X0wTWPDFPBkzKcIX8ssIDiQdR8feY9HK8+Pz1W50GGd5
Bs9Oa98fwvdRDFf/KC0r+HyRltfJpPbYETzG2yPSFL1IRsUiLu6irY2tTfrc
3JNI4AMEbvC2N6APygSws0xhh/rAycXZ+snxYfT06dZOb3OfhoGvvole5EVU
XSey61k+gQXAF+cvDnefbW7tdzqpwokhefjy/OzVce9w4EHz8LrIZx69BtoW
Z+UcDj8b30Vv8mk6vuM34uIqATqiZIQv4JgGcIiIM5Q70vq4ej+nwYhgOCCC
LW31NrZ7m09q8OkxfIQU8Fpx9wdv3pzWtkLX93HZvpd5+17KBWBfUfXNBV9P
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
LADaTi+JOHrzh5M/RRNuiL5Iy2tYWIb5/Cvu+W/2t/o7mpe5u/V0w7T6csOh
BKXIrFNQ/6kFky4gWlPKxTfU3G/MoD0u6qtg8isSlGEr9QeVMXrPx5X0aZBu
APorPYXtKKNhOukVkyxmVDkgTCE6aAKwsL+I1OEts/5mp/GF6Oz5vx8fDgC2
x68HJy9Ojs+j/f3vo09seS5zpDqGfE96eXEFl43LtK9srwK9nazsrbKKlSUV
Pl1i4iSwrZVdtmeaC1rCJ9H8Q/px5clqhCtZ2YIPBs+PIsnu9Hb6WIr3MHc6
Pz49GJz88biHN8+5COxl9agVvHhw8bq/GbAKCYth2ZdvccOhcZge4Bq5VPCW
b2/tPNnubw6j23wxRajacaXI/h3MQK5Obj2xs7uJIiLljOK2sHrEHqDhLvzv
SX9rtw87/v6bjcnGztPNy8nus41N3j0ujwLGgOZhJn6RznTtXbrUd9aJIeWi
tdY5t2AhozxHCLyFa/l28OLpRVUYb77bsaIO5SKW9GPAcxfYjH/OWFZJbwD7
4clJAHah2gaMfbM+paMKH7yqOzvbe9v9nSdwek4ZjBZU7zPM/olH6i8ZDnW8
8WR7e3tre2cb/t1KtuVoQbY7UfZ7ChKB0LPGLreeNNyVhrvmAqKkFNcZ1Boy
AI50WOvjFPJLEAKBqhnczoqzmk3AA0VGwKmQQGlHil69vRiQFaliD/7e7u72
brSy9R3Iz7/f3PtuHf/tbaJ0Q696IoZIn/gjiJ8mJ7ZJ1HTb6IwoDhYpa2aL
ZnjiW6hGDlhNCRRJ+YKGRt1wQz5wtmc72+J58EKjcp6MWd00NRGkm2Llv506
cTZwTZpAYMOJ4FK5vVTd0nRr4qxdq7dN7LoH75/dSKWk5CNf4G5wnBwgQGsy
pTtwFeRitMUHmlQ8gpO6kB3GaPYVF/6Nicuo1lfBkxVbm8Eo2GhUt6fvDFuq
EJkBHAJ+n84WM97umu7XIBTb+JxwE46nxDF56xb1tN8ihudhEDDCe14skJWw
tJMqPaRgYryR6pWeppcJdWN0GiJ3OtJimsnE3jPqZYHIwh9oGYigjzO5njjC
N8b2Ldr6ssS2vWXJPXSAoV7GY+H/+JLbsdq24+S9KW4yRckLwJw+vMrH20WT
TsktpCYTahLrNvOk3sdMPYOeGdo1TquruIV1KegFXaOCyiSjlVk8L69zJ2bm
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
L6ZVzkX9E9Rj7z3vbG54LIiUk3fojAhxwCzmzp2///3veVNtbrVSuFTXvZNl
H8Ne1/e2NqJ9MB3Xi9PAgtnHee+rjSA+pvceb3DwuiqW4dt3aHpaU3jv0YZT
v+mni3flh3tPNoS53HvA32+xmnthmRvZz0FQ7n6792rvcO/1q4Ns7+WbF3s7
e4fZ4eS7g+zp09/debb73d6rQBYv37zePzwIAx3sffdqcvh2f3c8efHd6/29
w+9fjrLne9/tHhz63xh/iXz248+j8Py3+69fuk9jakqYVVDLwl4G9v0jOca/
2dr+K2b+Kzbp9ttkG5X3zfHB9r1HX9O2Za7/ZVhYNjk83N979vZwV5dIV2DM
EV1KY2v+1ZZHH/P0sKgnvCj4b2JjT7eWrT0k2JfLf8WFbI1LnR0t5htezB/Z
wTsCyxllfxTX7igTp61R5igzj1+Ui8nidz/8Ky+++OAWv8WLP/Q8S9eS/LJh
lUMWsxbF5J+5xGV3zsK7sv8eLKR+v1lgXdEo+ogBtR15+ufHB3/Ndn8QricE
EyyKbydvXxxm77dGzDrh/e+T76AsHl6oq/sdoztm25KWvG6sthvaiLKXrb55
+yxMf/yH3T+P7vTNMf3zsYfUf/65/70acs2CGXK4e5gdBB736ju/Jxr+sO3c
+msUIu1rlr1+Q2Jm8iJ5W2uIH7dvPoLLPPNH+pU7UselP6bM7eefb7Bb9kdf
fCdIzLbW+vrZv+/uHGZ7z3dfHe59uxfsUCK/j7JNt78x/q5gkP77EnvV0fOk
tYS5NXmcV4+odjNz020tCB+/mexPXh5kk/1dyj0Js5eV9yhE/6T100zubT+y
pefL1rxMJrv5HP75zW6HN7rNeJ49+3O/3ifrX6t3/5N24qKg78o2hEuxZoa7
PxzuvjoIpOxmdvDnV4eTH8hb3/9Q/w6t2wg8sRMobm9n8mLv8M/Z4f7bXdrA
wXf0cex5fcrcp5ftdXXOj5ubm8bKytPwUDbwbK8S6x8/L6sDdjzvvTrc/W53
nya/++o5qfSk53v39YE6csS3Tu7WijVG5K73dkU/S/FaYhQCMDsRxu+4rAjc
elFIRa2ll3CtpKC2IBcRLlDYa2fF/CKGwQB4GvO8JSH5pJiyb7LVStoQdtjl
/Yzfv5++/86dPzHieNpqm0FfAOdWcvexS+mMdFmPhpcjQCBFPvu8kdpjSrPh
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
IVyyD5wuuGMq/x8abBkRenECAA==

-->

</rfc>
