Skip to main content

LogInclusion

Struct LogInclusion 

Source
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: String

The log instantiation this proof belongs to. MUST equal log_checkpoint.log_id (§9.1 step 4).

§leaf_index: u64

The 0-based append-order position of the leaf. MUST be < tree_size.

§tree_size: u64

The 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: LogCheckpoint

The 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

Source

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.

Source

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.

Source

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.

Source

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

Source§

fn clone(&self) -> LogInclusion

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LogInclusion

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for LogInclusion

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for LogInclusion

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.