Skip to main content

CheckoutGrantStore

Struct CheckoutGrantStore 

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

Persisted binding and grant state of one node.

Implementations§

Source§

impl CheckoutGrantStore

Source

pub fn floor_preview(&self) -> Result<FloorPreview, LicenceError>

Preview Self::reset_floor without changing anything. Needs a binding in effect, like the reset.

Source

pub fn reset_floor_checked( &self, expected_floor: Option<u64>, ) -> Result<FloorPreview, LicenceError>

Reset the floor and return the preview it was applied on, in one critical section. With expected_floor, refuses (floor_changed) when the floor is no longer the value the operator was shown.

Source§

impl CheckoutGrantStore

Source

pub fn open( dir: &Path, anchors: Arc<TrustAnchors>, local: LocalMeshId, clock: Clock, ) -> Result<Self, LicenceError>

Open the store in dir. A missing file is an empty store; a file that cannot be read, parsed or re-verified is an error (nothing is written).

Source

pub fn open_or_poisoned( dir: &Path, anchors: Arc<TrustAnchors>, local: LocalMeshId, clock: Clock, ) -> Self

Self::open, but a bad file gives a poisoned store (it serves nothing, refuses writes and leaves the file alone) so the daemon can still install its policy, which then behaves like ManifestPolicy.

Source

pub fn set_sink(&self, sink: Arc<dyn LicenceEventSink>)

Report LicenceEvents to sink.

Source

pub fn attach_revocations(&self, list: Arc<RevocationList>)

Use list for SignerKey and ArtifactHash revocations.

Source

pub fn local_mesh_id(&self) -> &LocalMeshId

The live local mesh id handle.

Source

pub fn poisoned(&self) -> Option<String>

Why the store is poisoned, if it is.

Source

pub fn is_hash_revoked(&self, blake3_hex: &str) -> bool

True when blake3_hex is revoked as an ArtifactHash.

Source

pub fn active_binding(&self) -> Option<BindingRecord>

The binding in effect, if any.

Source

pub fn binding_status(&self) -> Result<BindingRecord, LicenceError>

The binding in effect, or the reason there is none.

Source

pub fn held_binding(&self) -> Option<BindingRecord>

The stored binding whatever its state (bound, unbound or orphaned), for the steward’s seq rule and for status. Not for gating anything.

Source

pub fn verify_member( &self, signed: &SignedBinding, ) -> Result<BindingRecord, LicenceError>

The MEMBER profile against this store’s anchors and local mesh id, without storing anything (the steward verifies before it spends any replay state).

Source

pub fn valid_grant_covering( &self, blake3_hex: &str, cog_id: &str, version: &str, ) -> Option<CheckoutGrant>

A valid grant that lists BLAKE3 blake3_hex for cog_id version.

Source

pub fn valid_grant_for_artifact( &self, cog_id: &str, version: &str, sha256: &str, blake3: &str, ) -> Option<(CheckoutGrant, GrantArtifact)>

A valid grant for cog_id version that lists a binary whose (sha256, blake3) pair is exactly sha256 and blake3.

Source

pub fn verified_grants(&self) -> Vec<VerifiedCheckoutGrant>

Every currently valid grant, ready for grant_checkout.

Source

pub fn floor(&self) -> Option<u64>

The floor for the bound key, in unix seconds.

Source

pub fn reset_floor(&self) -> Result<(), LicenceError>

Admin hook (weaver cog checkout reset-floor): forget the clock high-water mark and restart it from the current clock. This is the only way to undo a forward clock jump. The caller gates it (Admin).

Source

pub fn tick(&self)

Record the clock and persist the high-water mark (the daemon calls this on its tick). The only place the read side writes to disk.

Source§

impl CheckoutGrantStore

Source

pub fn accept_binding( &self, signed: &SignedBinding, posture: AdmissionPosture, extra: &dyn BindingExtraCheck, ) -> Result<Outcome, LicenceError>

Accept a binding. posture is the node’s admission state; extra is the steward profile hook (use super::NoExtraChecks for members).

Source

pub fn accept_grant( &self, signed: &SignedGrant, ) -> Result<Outcome, LicenceError>

Accept a grant under the bound key (see ADR-106 section 4).

Source§

impl CheckoutGrantStore

Source

pub fn grant_rows(&self) -> Vec<GrantRow>

Every held grant, valid or not, by (cog, version). Validity is judged as the policy judges it; without a binding in effect none is valid.

Source

pub fn effective_now(&self) -> Option<u64>

max(now, floor) for the bound key, the time grants are judged by.

Source§

impl CheckoutGrantStore

Source

pub fn was_ever_bound(&self) -> bool

True once this node has accepted a binding (the marker exists, or a binding is held now, which also writes the marker).

Source

pub fn claims_artifact(&self, sha256: &str, blake3: &str) -> bool

True when a held grant (current or previous) lists a binary with this sha256 or this BLAKE3: the bytes are a checked-out Cognitum cog, whatever package they arrive in.

Source§

impl CheckoutGrantStore

Source

pub fn held_signed_binding(&self) -> Option<(u64, SignedBinding)>

The stored binding for the local mesh, whatever its state, with its seq. An unbound record is still returned: its seq is what stops an older bind from being replayed.

Source

pub fn bound_grant_key(&self) -> Option<String>

The grant key of the binding in effect, lower-case hex.

Source

pub fn held_grant( &self, cog_id: &str, version: &str, ) -> Option<(u64, SignedGrant)>

The current grant held for cog_id version, with its seq.

Source

pub fn sync_grants_page( &self, after: Option<(u64, &str, &str)>, max_entries: usize, max_bytes: usize, ) -> (Vec<(u64, String, String, SignedGrant)>, bool)

A page of the highest-seq grant per (cog, version), as (seq, cog, version, grant) ordered by that tuple and strictly after after, within max_entries and max_bytes; and whether more follow. Empty unless a binding is in effect. Expired and withdrawn grants are included: they are seq tombstones. Only the keys of the whole set are sorted; only the page’s envelopes are cloned.

Trait Implementations§

Source§

impl Debug for CheckoutGrantStore

Source§

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

Formats the value using the given formatter. 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> 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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Pointee for T

Source§

type Pointer = u32

Source§

fn debug( pointer: <T as Pointee>::Pointer, f: &mut Formatter<'_>, ) -> Result<(), Error>

Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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