You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<pid="section-4.2.1-1">Given a subtree inclusion proof, <code>inclusion_proof</code>, for entry <code>index</code>, with hash <code>entry_hash</code>, of a subtree <code>[start, end)</code>, the subtree inclusion proof can be <em>evaluated</em> to compute the expected subtree hash:<ahref="#section-4.2.1-1" class="pilcrow">¶</a></p>
<pid="section-4.2.1-2.1.1">Check <code>start<= index < end</code>. If this does not hold, fail proof evaluation.<ahref="#section-4.2.1-2.1.1" class="pilcrow">¶</a></p>
1917
+
<pid="section-4.2.1-2.1.1">Check that <code>[start, end)</code> is a valid subtree (<ahref="#definition-of-a-subtree" class="auto internal xref">Section 4.1</a>), and that <code>start <= index < end</code>. If either do not hold, fail proof evaluation.<ahref="#section-4.2.1-2.1.1" class="pilcrow">¶</a></p>
1918
1918
</li>
1919
1919
<liid="section-4.2.1-2.2">
1920
1920
<pid="section-4.2.1-2.2.1">Set <code>fn</code> to <code>index - start</code> and <code>sn</code> to <code>end - start - 1</code>.<ahref="#section-4.2.1-2.2.1" class="pilcrow">¶</a></p>
<pid="section-7.2-2.3.1">Let <code>index</code> be the certificate's serial number. If <code>index</code> is contained in one of the relying party's revoked ranges (<ahref="#revocation-by-index" class="auto internal xref">Section 7.5</a>), abort this process and fail verification.<ahref="#section-7.2-2.3.1" class="pilcrow">¶</a></p>
3388
3388
</li>
3389
3389
<liid="section-7.2-2.4">
3390
-
<pid="section-7.2-2.4.1">Check the MTCProof's <code>start</code> and <code>end</code> describe a subtree per <ahref="#definition-of-a-subtree" class="auto internal xref">Section 4.1</a>. If not, abort this process and fail verification.<ahref="#section-7.2-2.4.1" class="pilcrow">¶</a></p>
3390
+
<pid="section-7.2-2.4.1">Construct a TBSCertificateLogEntry as follows:<ahref="#section-7.2-2.4.1" class="pilcrow">¶</a></p>
<pid="section-7.2-2.4.2.1.1">Copy the <code>version</code>, <code>issuer</code>, <code>validity</code>, <code>subject</code>, <code>issuerUniqueID</code>, <code>subjectUniqueID</code>, and <code>extensions</code> fields from the TBSCertificate.<ahref="#section-7.2-2.4.2.1.1" class="pilcrow">¶</a></p>
3391
3394
</li>
3392
-
<liid="section-7.2-2.5">
3393
-
<pid="section-7.2-2.5.1">Construct a TBSCertificateLogEntry as follows:<ahref="#section-7.2-2.5.1" class="pilcrow">¶</a></p>
<pid="section-7.2-2.5.2.1.1">Copy the <code>version</code>, <code>issuer</code>, <code>validity</code>, <code>subject</code>, <code>issuerUniqueID</code>, <code>subjectUniqueID</code>, and <code>extensions</code> fields from the TBSCertificate.<ahref="#section-7.2-2.5.2.1.1" class="pilcrow">¶</a></p>
3397
-
</li>
3398
-
<liid="section-7.2-2.5.2.2">
3399
-
<pid="section-7.2-2.5.2.2.1">Set <code>subjectPublicKeyInfoHash</code> to the hash of the DER encoding of <code>subjectPublicKeyInfo</code>.<ahref="#section-7.2-2.5.2.2.1" class="pilcrow">¶</a></p>
3395
+
<liid="section-7.2-2.4.2.2">
3396
+
<pid="section-7.2-2.4.2.2.1">Set <code>subjectPublicKeyInfoHash</code> to the hash of the DER encoding of <code>subjectPublicKeyInfo</code>.<ahref="#section-7.2-2.4.2.2.1" class="pilcrow">¶</a></p>
3400
3397
</li>
3401
3398
</ol>
3399
+
</li>
3400
+
<liid="section-7.2-2.5">
3401
+
<pid="section-7.2-2.5.1">Construct a MerkleTreeCertEntry of type <code>tbs_cert_entry</code> with contents the TBSCertificateLogEntry. Let <code>entry_hash</code> be the hash of the entry, <code>MTH({entry}) = HASH(0x00 || entry)</code>, as defined in <span><ahref="https://rfc-editor.org/rfc/rfc9162#section-2.1.1" class="relref">Section 2.1.1</a> of [<ahref="#RFC9162" class="cite xref">RFC9162</a>]</span>.<ahref="#section-7.2-2.5.1" class="pilcrow">¶</a></p>
3402
3402
</li>
3403
3403
<liid="section-7.2-2.6">
3404
-
<pid="section-7.2-2.6.1">Construct a MerkleTreeCertEntry of type <code>tbs_cert_entry</code>with contents the TBSCertificateLogEntry. Let<code>entry_hash</code> be the hash of the entry,<code>MTH({entry}) = HASH(0x00 || entry)</code>, as defined in <span><ahref="https://rfc-editor.org/rfc/rfc9162#section-2.1.1" class="relref">Section 2.1.1</a> of [<ahref="#RFC9162" class="cite xref">RFC9162</a>]</span>.<ahref="#section-7.2-2.6.1" class="pilcrow">¶</a></p>
3404
+
<pid="section-7.2-2.6.1">Let <code>expected_subtree_hash</code> be the result of evaluating the MTCProof's <code>inclusion_proof</code>for entry <code>index</code>, with hash<code>entry_hash</code>, of a subtree<code>[start, end)</code>, as described in <ahref="#evaluating-a-subtree-inclusion-proof" class="auto internal xref">Section 4.2.1</a>. If evaluation fails, abort this process and fail verification.<ahref="#section-7.2-2.6.1" class="pilcrow">¶</a></p>
3405
3405
</li>
3406
3406
<liid="section-7.2-2.7">
3407
-
<pid="section-7.2-2.7.1">Let<code>expected_subtree_hash</code> be the result of evaluating the MTCProof's <code>inclusion_proof</code> for entry <code>index</code>, with hash <code>entry_hash</code>, of a subtree <code>[start, end)</code>, as described in <ahref="#evaluating-a-subtree-inclusion-proof" class="auto internal xref">Section 4.2.1</a>. If evaluation fails, abort this process and fail verification.<ahref="#section-7.2-2.7.1" class="pilcrow">¶</a></p>
3407
+
<pid="section-7.2-2.7.1">If<code>[start, end)</code> matches a trusted subtree (<ahref="#trusted-subtrees" class="auto internal xref">Section 7.4</a>), check that <code>expected_subtree_hash</code> is equal to the trusted subtree's hash. Return success if it matches and failure if it does not.<ahref="#section-7.2-2.7.1" class="pilcrow">¶</a></p>
3408
3408
</li>
3409
3409
<liid="section-7.2-2.8">
3410
-
<pid="section-7.2-2.8.1">If <code>[start, end)</code> matches a trusted subtree (<ahref="#trusted-subtrees" class="auto internal xref">Section 7.4</a>), check that <code>expected_subtree_hash</code> is equal to the trusted subtree's hash. Return success if it matches and failure if it does not.<ahref="#section-7.2-2.8.1" class="pilcrow">¶</a></p>
3411
-
</li>
3412
-
<liid="section-7.2-2.9">
3413
-
<pid="section-7.2-2.9.1">Otherwise, check that the MTCProof's <code>signatures</code> contain a sufficient set of valid signatures from cosigners to satisfy the relying party's cosigner requirements (<ahref="#trusted-cosigners" class="auto internal xref">Section 7.3</a>). Unrecognized cosigners MUST be ignored. Signatures are verified as described in <ahref="#signature-format" class="auto internal xref">Section 5.4.1</a>. The <code>hash</code> field of the MTCSubtree is set to <code>expected_subtree_hash</code>.<ahref="#section-7.2-2.9.1" class="pilcrow">¶</a></p>
3410
+
<pid="section-7.2-2.8.1">Otherwise, check that the MTCProof's <code>signatures</code> contain a sufficient set of valid signatures from cosigners to satisfy the relying party's cosigner requirements (<ahref="#trusted-cosigners" class="auto internal xref">Section 7.3</a>). Unrecognized cosigners MUST be ignored. Signatures are verified as described in <ahref="#signature-format" class="auto internal xref">Section 5.4.1</a>. The <code>hash</code> field of the MTCSubtree is set to <code>expected_subtree_hash</code>.<ahref="#section-7.2-2.8.1" class="pilcrow">¶</a></p>
3414
3411
</li>
3415
3412
</ol>
3416
3413
<pid="section-7.2-3">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.<ahref="#section-7.2-3" class="pilcrow">¶</a></p>
0 commit comments