Skip to main content

ProtocolObjectContext

Struct ProtocolObjectContext 

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

Authenticated storage context for one immutable semantic object.

Store protection cannot be paired with a Circle-encrypted domain:

use crate::storage::{ProtocolObjectContext, ProtocolObjectDomain};
use crate::ObjectHash;

let root = ObjectHash::digest(b"store");
let _ = ProtocolObjectContext::signed_plaintext(root, ProtocolObjectDomain::CircleMetadata);

Circle protection cannot be paired with a Store domain:

use crate::storage::{ProtocolObjectContext, ProtocolObjectDomain};
use crate::{EncryptionService, ObjectHash};

let root = ObjectHash::digest(b"store");
let encryption = EncryptionService::from_key([7; 32]);
let _ = ProtocolObjectContext::circle(
    root,
    ProtocolObjectDomain::StoreCommit,
    encryption,
);

Implementations§

Source§

impl ProtocolObjectContext

Source

pub fn store_encrypted( store_root_hash: ObjectHash, domain: StoreEncryptedProtocolObjectDomain, ) -> Self

Source

pub fn signed_plaintext( store_root_hash: ObjectHash, domain: SignedStoreProtocolObjectDomain, ) -> Self

Source

pub fn circle( store_root_hash: ObjectHash, domain: CircleProtocolObjectDomain, encryption: EncryptionService, ) -> Self

Source

pub fn recipient_sealed( store_root_hash: ObjectHash, domain: RecipientSealedProtocolObjectDomain, ) -> Self

Source

pub fn store_root_hash(&self) -> ObjectHash

Source

pub fn domain(&self) -> ProtectedObjectDomain

Source

pub fn protection(&self) -> &ProtocolObjectProtection

Source

pub fn validate_path(&self, semantic_prefix: &str) -> Result<(), StorageError>

Source

pub fn validate_extension(&self, extension: &str) -> Result<(), StorageError>

Source

pub fn validate_reference( &self, object: &ExactObjectRef, semantic_prefix: &str, ) -> Result<(), StorageError>

Source

pub fn semantic_prefix_of<'slot>( &self, slot: &'slot ObjectSlot, ) -> Option<&'slot str>

The semantic path slot names, when the slot names an object of this context’s domain.

A slot’s logical key is its semantic path plus the domain’s extension, so the path is recoverable from the key alone. Returns None for a slot this domain would not have written — which is how a caller that learned of a slot by listing a provider prefix, rather than by following a signed reference, discards what does not belong to it.

Source

pub fn validate_slot( &self, slot: &ObjectSlot, semantic_prefix: &str, ) -> Result<(), StorageError>

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.

§

impl<T> Instrument for T

§

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

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

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> 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 = 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,