Skip to main content

ProtectedLocalKeyStore

Struct ProtectedLocalKeyStore 

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

Host-owned protected storage scoped to one database at one location.

Key material lives in the host’s secret items; a separate nonsecret marker detects loss of an established authority. Neither is part of Aven’s database export, SQLite backup, or archive backup.

Implementations§

Source§

impl ProtectedLocalKeyStore

Source

pub async fn seed_http_inputs( &self, database: &Database, ) -> Result<(SeedAuthority, SeedPublicationIntent, Option<Package>)>

Resumes sealed ownership before exposing any publication transport input.

Source

pub fn required_seed( &self, package: &ProtectedLocalPackageKey, ) -> Result<SeedAuthority>

Source

pub async fn prepare_seed_source( &self, database: &Database, ) -> Result<SeedSourceAuthority>

Explicit irreversible opt-in before capture. Early failure can leave the installation fenced; the denial marker never authorizes key regeneration.

Source

pub async fn prepare_seed_adoption_intent( &self, database: &Database, ) -> Result<SeedPublicationIntent>

Fences SQLite cancellation before persisting exact protected intent. An intent cannot be locally abandoned.

Source

pub async fn adopt_seed_publication( &self, database: &Database, outcome: &PublicationOutcome, ) -> Result<bool>

Authenticates host authority and commits adoption, then retries pin cleanup. Cleanup failure is reported without rolling back the committed adoption.

Source§

impl ProtectedLocalKeyStore

Source

pub async fn active_inputs( &self, db: &Database, locator: &str, ) -> Result<ActiveInputs>

Source

pub async fn adopt_refresh( &self, db: &Database, inputs: &mut ActiveInputs, evidence: Evidence, ) -> Result<()>

Source

pub async fn adopt_verified_refresh( &self, db: &Database, inputs: &mut ActiveInputs, evidence: Evidence, target: Membership, ) -> Result<()>

target must be what evidence verifies to.

Source

pub async fn open_invitation( &self, db: &Database, inputs: &ActiveInputs, ) -> Result<Option<OpenInvitation>>

Source

pub async fn invitation_progress( &self, db: &Database, handle: &[u8; 32], ) -> Result<InvitationProgress>

Reads only this invitation’s terminal phases, so waiting for a join can check it often without loading every journal.

Source

pub async fn retire_open_invitation( &self, db: &Database, inputs: &ActiveInputs, ) -> Result<(Option<Outbound>, Option<OpenInvitation>)>

Retires the open invitation if no grant has been sent. The returned journal remains available for best-effort server cancellation.

Source

pub async fn prepare_invitation( &self, db: &Database, inputs: &ActiveInputs, expires: Option<u64>, handle: Option<[u8; 32]>, ) -> Result<Outbound>

Source

pub async fn registered_invitation( &self, db: &Database, inputs: &ActiveInputs, journal: &Outbound, ) -> Result<Invitation>

Source

pub async fn prepare_admission( &self, db: &Database, inputs: &ActiveInputs, journal: &Outbound, request: &[u8], ) -> Result<Vec<u8>>

Source

pub async fn expired_disclosure( &self, db: &Database, inputs: &ActiveInputs, ) -> Result<Option<Outbound>>

The unresolved journal whose grant may have been sent, once its declared expiry has passed. Expiry only starts withdrawal work.

Source

pub async fn mark_withdrawing( &self, db: &Database, inputs: &ActiveInputs, journal: &Outbound, ) -> Result<()>

Fences local candidate creation and resends before remote cancellation.

Source

pub async fn reconcile_disclosure( &self, db: &Database, inputs: &ActiveInputs, journal: &Outbound, ) -> Result<Disclosure>

Resolves a possibly disclosed journal from verified membership only. A candidate at its signed slot is an admission and finishes ready. withdrawn requires every stored candidate to have lost its slot, no candidate recipient ever becoming a member, and a later non-pending generation absent from every candidate predecessor.

Source

pub async fn finish_inviter( &self, db: &Database, inputs: &ActiveInputs, journal: &Outbound, record: &[u8], ) -> Result<()>

Source

pub async fn prepare_peer( &self, db: &Database, locator: &str, invitation: Option<Invitation>, ) -> Result<Joiner>

The request to post: a known invitation’s exact attempt, otherwise the latest attempt, or the one a pinned response answers.

Source

pub async fn replace_peer( &self, db: &Database, locator: &str, invitation: Invitation, ) -> Result<Joiner>

Like prepare_peer, but an unknown invitation becomes a new attempt while joining is unfinished. The installation keys, enrollment pin and fence stay unchanged, and every earlier attempt is retained.

Source

pub async fn peer_attempts( &self, db: &Database, locator: &str, ) -> Result<Vec<Joiner>>

Every retained attempt, oldest first, or only the one a pinned response answers. Attempts are never removed.

Source

pub async fn open_peer_response( &self, db: &Database, mail: &Mailbox, ) -> Result<ProvisionalGrant>

Opens a mailbox admission without retaining it. The signature and membership binding are unchecked here, so only finish_peer pins it.

Source

pub async fn finish_peer( &self, db: &Database, mail: &Mailbox, evidence: &Evidence, ) -> Result<()>

Pins mail only after evidence proves its exact outcome, so an unverified response never blocks a correct one.

Source

pub async fn install_peer_snapshot( &self, db: &Database, transport: &Client, locator: &str, downloaded: &(dyn Fn(u64, Option<u64>) + Sync), ) -> Result<SharedStateInstallReport>

Source

pub async fn adopt_download_refresh( &self, db: &Database, identity: [u8; 32], peer: &Joiner, verified: &VerifiedEnrollment, evidence: &Evidence, target: Membership, ) -> Result<Membership>

Source

pub async fn tail_inputs( &self, db: &Database, locator: &str, ) -> Result<TailSnapshot>

Validated tail material for one drain. It stays current until the enrollment marker changes or the server reports a stale context.

Source

pub async fn association(&self, db: &Database) -> Result<Option<(bool, String)>>

Whether this installation joined as a peer, and the server locator its enrollment identity is bound to.

Source

pub async fn enrollment_readiness( &self, db: &Database, ) -> Result<EnrollmentReadiness>

Source§

impl ProtectedLocalKeyStore

Source

pub async fn management_intent( &self, db: &Database, inputs: &ActiveInputs, target: Option<[u8; 32]>, withdraw: Option<[u8; 32]>, ) -> Result<Option<Intent>>

target requests removal, withdraw an invitation withdrawal, and neither resumes unfinished work or finishes a pending rotation.

Source

pub async fn management_dispatch( &self, db: &Database, inputs: &ActiveInputs, intent: &Intent, high: u64, ) -> Result<Option<Dispatch>>

Source§

impl ProtectedLocalKeyStore

Source

pub async fn prepare_seed_claim( &self, database: &Database, setup_id: [u8; 32], ) -> Result<SeedAuthority>

Persists private seed keys, bearer and exact validated genesis before use. Reuses package vault/generation/secret and refuses a changed setup binding. The public DB pin detects lost protected authority, never authorizes replacement.

Source

pub async fn package_seed_capture( &self, database: &Database, blob_dir: &Path, setup_id: [u8; 32], ) -> Result<EncryptedLocalSharedStatePackage>

Freezes a local package only under already persisted seed genesis context. Incompatible frozen bytes fail unchanged; cancel/recapture explicitly. This does not prove server claim admission or enable dispatch.

Source§

impl ProtectedLocalKeyStore

Source

pub async fn open( database: &Database, storage: Arc<dyn ProtectedStorage>, ) -> StoreResult<Self>

Opens the namespace of database in storage.

Source

pub fn load_or_create(&self) -> StoreResult<ProtectedLocalPackageKey>

Loads the established keyring, or creates and durably marks a new one.

An existing marker with missing key material is an error. Existing or corrupt material is never replaced. If key persistence succeeds but the marker write fails, retry loads the same key and completes the marker.

Source

pub fn load_required(&self) -> StoreResult<ProtectedLocalPackageKey>

Loads an established authority without generating key material.

If key persistence completed before its nonsecret marker, this completes the marker using the existing key identity.

Source

pub async fn package_local_capture( &self, database: &Database, blob_dir: &Path, membership_predecessor: [u8; 32], ) -> Result<EncryptedLocalSharedStatePackage, Error>

Creates or reuses protected key material before freezing package bytes. The predecessor is caller-supplied context, not membership authorization. An existing freeze requires its established authority even if bytes are missing.

Source

pub fn erase(&self) -> StoreResult<()>

Deletes every protected item and record of this database, including authority markers, so the database can start sync again as if it never took part. Secrets go before markers, so an interrupted erase reads as missing authority until it is rerun, never as a fresh namespace.

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

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

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

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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