pub struct LogInclusion {
pub log_id: String,
pub leaf_index: u64,
pub tree_size: u64,
pub inclusion_path: Vec<String>,
pub log_checkpoint: LogCheckpoint,
pub leaf: Option<LogLeaf>,
}Expand description
An inclusion proof that one leaf is committed by a checkpointed
transparency-log tree (RFC-ACDP-0012 §8.2, §9.1): the RFC 6962
§2.1.1 audit path for leaf_index at tree_size, together with the
signed checkpoint it verifies against.
Returned by GET /log/proof (inclusion mode) and OPTIONALLY carried
as the top-level log_inclusion member of the full-retrieval
envelope (§10 — a sibling of registry_receipt, never a member
of it). CLOSED schema: a proof is arithmetic evidence with no
extension surface.
Fields§
§log_id: StringThe log instantiation this proof belongs to. MUST equal
log_checkpoint.log_id (§9.1 step 4).
leaf_index: u64The 0-based append-order position of the leaf. MUST be
< tree_size.
tree_size: u64The tree size the proof is computed against. MUST equal
log_checkpoint.tree_size (§9.1 step 4).
inclusion_path: Vec<String>The RFC 6962 §2.1.1 audit path PATH(leaf_index, D[tree_size]),
ordered from the lowest tree level upward, each element
"sha256:<hex>". May be empty (tree_size 1).
log_checkpoint: LogCheckpointThe signed checkpoint this proof verifies against (§9.3).
leaf: Option<LogLeaf>OPTIONAL convenience echo of the leaf, present on inclusion-mode
GET /log/proof responses only when the requester is authorized
to retrieve the context (§8.2), and absent from the
retrieval-envelope log_inclusion member (§10). Verifiers MUST
NOT trust it — the leaf is independently reconstructed from
verified body and receipt material (§9.1 step 1).
Implementations§
Source§impl LogInclusion
impl LogInclusion
Sourcepub fn from_value(value: &Value) -> Result<Self, AcdpError>
pub fn from_value(value: &Value) -> Result<Self, AcdpError>
Parse an inclusion proof from the JSON value carried in
crate::body::FullContext::log_inclusion (or a
GET /log/proof inclusion-mode response), enforcing the closed
schema, the embedded checkpoint’s §9.3 step 1 form, and
tree_size ≥ 1.
Sourcepub fn cross_check_binding(&self) -> Result<(), AcdpError>
pub fn cross_check_binding(&self) -> Result<(), AcdpError>
§9.1 step 4 — binding checks: tree_size equals
log_checkpoint.tree_size, log_id equals
log_checkpoint.log_id, and leaf_index < tree_size.
Sourcepub fn verify_leaf_hash(&self, leaf_hash: &[u8; 32]) -> Result<(), AcdpError>
pub fn verify_leaf_hash(&self, leaf_hash: &[u8; 32]) -> Result<(), AcdpError>
§9.1 steps 4–6 — the pure arithmetic half of inclusion
verification: binding checks, then fold the audit path over
leaf_hash (the §5.1 hash of the independently reconstructed
leaf — never an echoed one) and compare against the checkpoint’s
root_hash. Checkpoint signature verification (§9.3 step 2) is
separate — see LogCheckpoint::verify_signature_with_key and
the client feature’s verify_log_inclusion_value.
Sourcepub fn verify_reconstructed_leaf(&self, leaf: &LogLeaf) -> Result<(), AcdpError>
pub fn verify_reconstructed_leaf(&self, leaf: &LogLeaf) -> Result<(), AcdpError>
Convenience: Self::verify_leaf_hash over a reconstructed
LogLeaf (§9.1 steps 1–2 + 4–6). Pass the leaf built from
verified material — never the echoed leaf member.
Trait Implementations§
Source§impl Clone for LogInclusion
impl Clone for LogInclusion
Source§fn clone(&self) -> LogInclusion
fn clone(&self) -> LogInclusion
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more