Skip to main content

ChainStreamVerifier

Struct ChainStreamVerifier 

Source
pub struct ChainStreamVerifier { /* private fields */ }
Expand description

Streaming chain verifier that resolves the key epoch incrementally from the first chained entry it sees, without requiring the caller to buffer the whole chained region in memory.

Before the epoch is resolved, every candidate epoch in the ChainKeyRing is tried against each incoming entry in parallel (at most 2: current + previous — a small, fixed, O(1) memory cost independent of file size); once exactly one candidate’s genesis produces a valid link, verification collapses to a single incremental ChainVerifier for the rest of the stream. This lets zeph-session’s read_chunked verify a replay-trusted log’s chain without materializing the whole file — the same bounded-memory shape its chunked read already provides for the torn-tail check.

Implementations§

Source§

impl ChainStreamVerifier

Source

pub fn new( ring: &ChainKeyRing, domain: impl Into<String>, file_identity: impl Into<Vec<u8>>, ) -> Self

Start a streaming verifier for one chained region.

Source

pub fn verify_next( &mut self, content: &[u8], stored: &ChainHash, ) -> Result<(), ChainError>

Verify the next entry in on-disk order, resolving the key epoch on the first call.

§Errors

Returns ChainError::Unverifiable on the first call if no candidate epoch’s genesis produces a valid link, or ChainError::Mismatch on any call once the epoch is resolved and a later entry breaks the chain.

Source

pub fn head(&self) -> Option<ChainHash>

The verified head hash, once at least one entry has been verified.

Source

pub fn resolution(&self) -> Option<KeyResolution>

How the key epoch was resolved, once at least one entry has been verified.

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more