#[repr(transparent)]
pub struct LinkRecord(_);
Expand description

A LinkRecord is a wrapper around a decoded Jwt (Ucan), representing a link address as a Cid to a sphere.

Implementations§

source§

impl LinkRecord

source

pub async fn validate<S: UcanJwtStore>(&self, store: &S) -> Result<()>

Validates the Ucan token as a LinkRecord, ensuring that the sphere’s owner authorized the publishing of a new content address. Notably does not check the publishing timeframe permissions, as an expired token can be considered valid. Returns an Err if validation fails.

source

pub fn has_publishable_timeframe(&self) -> bool

Returns true if the Ucan token is currently publishable within the bounds of its expiry/not before time.

source

pub fn to_sphere_identity(&self) -> Did

The DID key of the sphere that this record maps.

The sphere revision address (Link) that the sphere’s identity maps to.

source

pub async fn collect_proofs<S>(&self, store: &S) -> Result<Vec<Ucan>>where S: UcanJwtStore,

Walk the underlying Ucan and collect all of the supporting proofs that verify the link publisher’s authority to publish the link

Methods from Deref<Target = Ucan>§

source

pub async fn validate<'a>( &self, now_time: Option<u64>, did_parser: &mut DidParser ) -> impl Future<Output = Result<(), Error>>

Validate the UCAN’s signature and timestamps

source

pub async fn check_signature<'a>( &self, did_parser: &mut DidParser ) -> impl Future<Output = Result<(), Error>>

Validate that the signed data was signed by the stated issuer

source

pub fn encode(&self) -> Result<String, Error>

Produce a base64-encoded serialization of the UCAN suitable for transferring in a header field

source

pub fn is_expired(&self, now_time: Option<u64>) -> bool

Returns true if the UCAN has past its expiration date

source

pub fn signed_data(&self) -> &[u8]

Raw bytes of signed data for this UCAN

source

pub fn signature(&self) -> &[u8]

source

pub fn is_too_early(&self) -> bool

Returns true if the not-before (“nbf”) time is still in the future

source

pub fn lifetime_begins_before(&self, other: &Ucan) -> bool

Returns true if this UCAN’s lifetime begins no later than the other Note that if a UCAN specifies an NBF but the other does not, the other has an unbounded start time and this function will return false.

source

pub fn lifetime_ends_after(&self, other: &Ucan) -> bool

Returns true if this UCAN expires no earlier than the other

source

pub fn lifetime_encompasses(&self, other: &Ucan) -> bool

Returns true if this UCAN’s lifetime fully encompasses the other

source

pub fn algorithm(&self) -> &str

source

pub fn issuer(&self) -> &str

source

pub fn audience(&self) -> &str

source

pub fn proofs(&self) -> &Option<Vec<String, Global>>

source

pub fn expires_at(&self) -> &u64

source

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

source

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

source

pub fn attenuation(&self) -> &Vec<CapabilityIpld, Global>

source

pub fn facts(&self) -> &Option<Vec<Value, Global>>

source

pub fn version(&self) -> &str

Trait Implementations§

source§

impl Clone for LinkRecord

source§

fn clone(&self) -> LinkRecord

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for LinkRecord

source§

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

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

impl Deref for LinkRecord

§

type Target = Ucan

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<'de> Deserialize<'de> for LinkRecord

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 Display for LinkRecord

source§

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

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

impl From<&LinkRecord> for Ucan

source§

fn from(value: &LinkRecord) -> Self

Converts to this type from the input type.
source§

impl From<&Ucan> for LinkRecord

source§

fn from(value: &Ucan) -> Self

Converts to this type from the input type.
source§

impl From<LinkRecord> for Ucan

source§

fn from(value: LinkRecord) -> Self

Converts to this type from the input type.
source§

impl From<Ucan> for LinkRecord

source§

fn from(value: Ucan) -> Self

Converts to this type from the input type.
source§

impl FromStr for LinkRecord

§

type Err = Error

The associated error which can be returned from parsing.
source§

fn from_str(value: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl PartialEq<LinkRecord> for LinkRecord

LinkRecords compare their Jwt representations for equality. If a record cannot be encoded as such, they will not be considered equal to any other record.

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for LinkRecord

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
source§

impl TryBundle for LinkRecord

source§

fn extend_bundle_with_cid<'life0, 'life1, 'life2, 'async_trait, S>( cid: &'life0 Cid, bundle: &'life1 mut Bundle, store: &'life2 S ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where S: 'async_trait + BlockStore, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

source§

fn extend_bundle<'life0, 'life1, 'life2, 'async_trait, S>( &'life0 self, bundle: &'life1 mut Bundle, _store: &'life2 S ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where S: 'async_trait + BlockStore, Self: Sync + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

source§

fn bundle<'life0, 'life1, 'async_trait, S>( &'life0 self, store: &'life1 S ) -> Pin<Box<dyn Future<Output = Result<Bundle>> + Send + 'async_trait>>where S: 'async_trait + BlockStore, Self: Sync + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

source§

fn bundle_with_cid<'life0, 'life1, 'async_trait, S>( cid: &'life0 Cid, store: &'life1 S ) -> Pin<Box<dyn Future<Output = Result<Bundle>> + Send + 'async_trait>>where S: 'async_trait + BlockStore, Self: Send + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

source§

impl TryFrom<&[u8]> for LinkRecord

§

type Error = Error

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

fn try_from(value: &[u8]) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<&Jwt> for LinkRecord

§

type Error = Error

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

fn try_from(value: &Jwt) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<&LinkRecord> for Jwt

§

type Error = Error

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

fn try_from(value: &LinkRecord) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Jwt> for LinkRecord

§

type Error = Error

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

fn try_from(value: Jwt) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<LinkRecord> for Jwt

§

type Error = Error

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

fn try_from(value: LinkRecord) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<LinkRecord> for Vec<u8>

§

type Error = Error

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

fn try_from(value: LinkRecord) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<String> for LinkRecord

§

type Error = Error

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

fn try_from(value: String) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Vec<u8, Global>> for LinkRecord

§

type Error = Error

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

fn try_from(value: Vec<u8>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Eq for LinkRecord

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Base64Encode for Twhere T: DagJson,

source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> DagJson for Twhere T: Serialize + DeserializeOwned,

source§

fn to_dag_json(&self) -> Result<Vec<u8, Global>, Error>

source§

fn from_dag_json(json_bytes: &[u8]) -> Result<Self, Error>

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 Twhere 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> References<RawCodec> for T

source§

fn references<R, E>(_c: RawCodec, _r: &mut R, _set: &mut E) -> Result<(), Error>where R: Read, E: Extend<Cid<64>>,

Scrape the references from an impl Read. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

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> ToString for Twhere T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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 Twhere U: TryFrom<T>,

§

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 Twhere V: MultiLane<T>,

§

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
source§

impl<T> BlockStoreSend for Twhere T: Send,

source§

impl<T> BlockStoreSendSync for Twhere T: Send + Sync,

source§

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

source§

impl<T> KeyValueSendSync for Twhere T: Send + Sync,

source§

impl<T> KeyValueStoreSend for Twhere T: Send,

source§

impl<T> LinkSend for Twhere T: Send,

source§

impl<T> SphereDbSendSync for Twhere T: Send + Sync,

source§

impl<T> StorageSendSync for Twhere T: Send + Sync,

source§

impl<S> StoreConditionalSendSync for Swhere S: Send + Sync,

source§

impl<S> TargetConditionalSendSync for Swhere S: Send + Sync,

source§

impl<T> TryBundleSendSync for Twhere T: Send + Sync,

source§

impl<U> UcanStoreConditionalSend for Uwhere U: Send,

source§

impl<U> UcanStoreConditionalSendSync for Uwhere U: Send + Sync,

source§

impl<T> VersionedMapSendSync for Twhere T: Send + Sync,