pub struct CoreDocument { /* private fields */ }
Expand description

A DID Document.

Specification

Implementations§

source§

impl CoreDocument

source

pub fn builder(properties: BTreeMap<String, Value>) -> DocumentBuilder

Creates a DocumentBuilder to configure a new CoreDocument.

This is the same as DocumentBuilder::new.

source

pub fn from_builder(builder: DocumentBuilder) -> Result<CoreDocument, Error>

Returns a new CoreDocument based on the DocumentBuilder configuration.

source

pub fn id(&self) -> &CoreDID

Returns a reference to the CoreDocument id.

source

pub fn id_mut_unchecked(&mut self) -> &mut CoreDID

Returns a mutable reference to the CoreDocument id.

§Warning

Changes to the identifier can drastically alter the results of Self::resolve_method, Self::resolve_service and the related DID URL dereferencing algorithm.

source

pub fn controller(&self) -> Option<&OneOrSet<CoreDID>>

Returns a reference to the CoreDocument controller.

source

pub fn controller_mut(&mut self) -> &mut Option<OneOrSet<CoreDID>>

Returns a mutable reference to the CoreDocument controller.

source

pub fn also_known_as(&self) -> &OrderedSet<Url>

Returns a reference to the CoreDocument alsoKnownAs set.

source

pub fn also_known_as_mut(&mut self) -> &mut OrderedSet<Url>

Returns a mutable reference to the CoreDocument alsoKnownAs set.

source

pub fn verification_method(&self) -> &OrderedSet<VerificationMethod>

Returns a reference to the CoreDocument verificationMethod set.

source

pub fn authentication(&self) -> &OrderedSet<MethodRef>

Returns a reference to the CoreDocument authentication set.

source

pub fn assertion_method(&self) -> &OrderedSet<MethodRef>

Returns a reference to the CoreDocument assertionMethod set.

source

pub fn key_agreement(&self) -> &OrderedSet<MethodRef>

Returns a reference to the CoreDocument keyAgreement set.

source

pub fn capability_delegation(&self) -> &OrderedSet<MethodRef>

Returns a reference to the CoreDocument capabilityDelegation set.

source

pub fn capability_invocation(&self) -> &OrderedSet<MethodRef>

Returns a reference to the CoreDocument capabilityInvocation set.

source

pub fn service(&self) -> &OrderedSet<Service>

Returns a reference to the CoreDocument service set.

source

pub fn service_mut_unchecked(&mut self) -> &mut OrderedSet<Service>

§Warning

Changing a service’s identifier can drastically alter the results of Self::resolve_service and the related DID URL dereferencing algorithm.

source

pub fn properties(&self) -> &BTreeMap<String, Value>

Returns a reference to the custom CoreDocument properties.

source

pub fn properties_mut_unchecked(&mut self) -> &mut BTreeMap<String, Value>

Returns a mutable reference to the custom CoreDocument properties.

§Warning

The properties returned are not checked against the standard fields in a CoreDocument. Incautious use can have undesired consequences such as key collision when attempting to serialize the document or distinct resources (such as services and methods) being identified by the same DID URL.

source

pub fn insert_method( &mut self, method: VerificationMethod, scope: MethodScope ) -> Result<(), Error>

Adds a new VerificationMethod to the document in the given MethodScope.

§Errors

Returns an error if a method or service with the same fragment already exists.

source

pub fn remove_method(&mut self, did_url: &DIDUrl) -> Option<VerificationMethod>

Removes and returns the VerificationMethod identified by did_url from the document.

§Note

All references to the method found in the document will be removed. This includes cases where the reference is to a method contained in another DID document.

source

pub fn remove_method_and_scope( &mut self, did_url: &DIDUrl ) -> Option<(VerificationMethod, MethodScope)>

Removes and returns the VerificationMethod from the document. The MethodScope under which the method was found is appended to the second position of the returned tuple.

§Note

All references to the method found in the document will be removed. This includes cases where the reference is to a method contained in another DID document.

source

pub fn insert_service(&mut self, service: Service) -> Result<(), Error>

Adds a new Service to the document.

§Errors

Returns an error if there already exists a service or verification method with the same identifier.

source

pub fn remove_service(&mut self, id: &DIDUrl) -> Option<Service>

Removes and returns a Service from the document if it exists.

source

pub fn attach_method_relationship<'query, Q>( &mut self, method_query: Q, relationship: MethodRelationship ) -> Result<bool, Error>
where Q: Into<DIDUrlQuery<'query>>,

Attaches the relationship to the method resolved by method_query.

§Errors

Returns an error if the method does not exist or if it is embedded. To convert an embedded method into a generic verification method, remove it first and insert it with MethodScope::VerificationMethod.

source

pub fn detach_method_relationship<'query, Q>( &mut self, method_query: Q, relationship: MethodRelationship ) -> Result<bool, Error>
where Q: Into<DIDUrlQuery<'query>>,

Detaches the relationship from the method resolved by method_query. Returns true if the relationship was found and removed, false otherwise.

§Errors

Returns an error if the method does not exist or is embedded. To remove an embedded method, use Self::remove_method.

§Note

If the method is referenced in the given scope, but the document does not contain the referenced verification method, then the reference will persist in the document (i.e. it is not removed).

source

pub fn methods(&self, scope: Option<MethodScope>) -> Vec<&VerificationMethod>

Returns a Vec of verification method references whose verification relationship matches scope.

If scope is None, an iterator over all embedded methods is returned.

source

pub fn verification_relationships(&self) -> impl Iterator<Item = &MethodRef>

Returns an iterator over all verification relationships.

This includes embedded and referenced VerificationMethods.

source

pub fn resolve_method<'query, 'me, Q>( &'me self, method_query: Q, scope: Option<MethodScope> ) -> Option<&'me VerificationMethod>
where Q: Into<DIDUrlQuery<'query>>,

Returns the first VerificationMethod with an id property matching the provided method_query and the verification relationship specified by scope if present.

source

pub fn resolve_method_mut<'query, 'me, Q>( &'me mut self, method_query: Q, scope: Option<MethodScope> ) -> Option<&'me mut VerificationMethod>
where Q: Into<DIDUrlQuery<'query>>,

Returns a mutable reference to the first VerificationMethod with an id property matching the provided method_query.

§Warning

Incorrect use of this method can lead to distinct document resources being identified by the same DID URL.

source

pub fn resolve_service<'query, 'me, Q>( &'me self, service_query: Q ) -> Option<&'me Service>
where Q: Into<DIDUrlQuery<'query>>,

Returns the first Service with an id property matching the provided service_query, if present.

source

pub fn try_map<F, G, H, L, M, E>( self, id_update: F, controller_update: G, methods_update: H, service_update: L, error_cast: M ) -> Result<CoreDocument, E>
where F: FnOnce(CoreDID) -> Result<CoreDID, E>, G: FnMut(CoreDID) -> Result<CoreDID, E>, H: FnMut(CoreDID) -> Result<CoreDID, E>, L: FnMut(CoreDID) -> Result<CoreDID, E>, M: FnOnce(Error) -> E,

Update the DID components of the document’s id, controllers, methods and services by applying the provided fallible maps.

This is an advanced method that can be useful for DID methods that do not know the document’s identifier prior to publishing, but should preferably be avoided otherwise.

§Errors

Any error is returned if any of the functions fail or the updates cause scoped method references to embedded methods, or methods and services with identical identifiers in the document. In the case where illegal identifiers are detected the supplied the error_cast function gets called in order to convert Error to E.

source

pub fn map_unchecked<F, G, H, L>( self, id_update: F, controller_update: G, methods_update: H, service_update: L ) -> CoreDocument

Unchecked version of Self::try_map.

source§

impl CoreDocument

source

pub fn verify_jws<'jws, T>( &self, jws: &'jws str, detached_payload: Option<&'jws [u8]>, signature_verifier: &T, options: &JwsVerificationOptions ) -> Result<DecodedJws<'jws>, Error>
where T: JwsVerifier,

Decodes and verifies the provided JWS according to the passed JwsVerificationOptions and JwsVerifier.

Regardless of which options are passed the following conditions must be met in order for a verification attempt to take place.

  • The JWS must be encoded according to the JWS compact serialization.
  • The kid value in the protected header must be an identifier of a verification method in this DID document, or set explicitly in the options.

Trait Implementations§

source§

impl AsRef<CoreDocument> for CoreDocument

source§

fn as_ref(&self) -> &CoreDocument

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl AsRef<CoreDocument> for IotaDocument

source§

fn as_ref(&self) -> &CoreDocument

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Clone for CoreDocument

source§

fn clone(&self) -> CoreDocument

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 CoreDocument

source§

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

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

impl<'de> Deserialize<'de> for CoreDocument

source§

fn deserialize<__D>( __deserializer: __D ) -> Result<CoreDocument, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for CoreDocument

source§

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

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

impl From<IotaDocument> for CoreDocument

source§

fn from(document: IotaDocument) -> CoreDocument

Converts to this type from the input type.
source§

impl JwkDocumentExt for CoreDocument

source§

fn generate_method<'life0, 'life1, 'life2, 'async_trait, K, I>( &'life0 mut self, storage: &'life1 Storage<K, I>, key_type: KeyType, alg: JwsAlgorithm, fragment: Option<&'life2 str>, scope: MethodScope ) -> Pin<Box<dyn Future<Output = Result<String, JwkStorageDocumentError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, K: JwkStorage + 'async_trait, I: KeyIdStorage + 'async_trait, CoreDocument: 'async_trait,

Generate new key material in the given storage and insert a new verification method with the corresponding public key material into the DID document. Read more
source§

fn purge_method<'life0, 'life1, 'life2, 'async_trait, K, I>( &'life0 mut self, storage: &'life1 Storage<K, I>, id: &'life2 DIDUrl ) -> Pin<Box<dyn Future<Output = Result<(), JwkStorageDocumentError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, K: JwkStorage + 'async_trait, I: KeyIdStorage + 'async_trait, CoreDocument: 'async_trait,

Remove the method identified by the given id from the document and delete the corresponding key material in the given storage. Read more
source§

fn create_jws<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait, K, I>( &'life0 self, storage: &'life1 Storage<K, I>, fragment: &'life2 str, payload: &'life3 [u8], options: &'life4 JwsSignatureOptions ) -> Pin<Box<dyn Future<Output = Result<Jws, JwkStorageDocumentError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, K: JwkStorage + 'async_trait, I: KeyIdStorage + 'async_trait, CoreDocument: 'async_trait,

Sign the arbitrary payload according to options with the storage backed private key corresponding to the public key material in the verification method identified by the given `fragment. Read more
source§

fn create_credential_jwt<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait, K, I, T>( &'life0 self, credential: &'life1 Credential<T>, storage: &'life2 Storage<K, I>, fragment: &'life3 str, options: &'life4 JwsSignatureOptions, custom_claims: Option<BTreeMap<String, Value>> ) -> Pin<Box<dyn Future<Output = Result<Jwt, JwkStorageDocumentError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, K: JwkStorage + 'async_trait, I: KeyIdStorage + 'async_trait, T: ToOwned<Owned = T> + Serialize + DeserializeOwned + Sync + 'async_trait, CoreDocument: 'async_trait,

Produces a JWT where the payload is produced from the given credential in accordance with VC Data Model v1.1. Read more
source§

fn create_presentation_jwt<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait, K, I, CRED, T>( &'life0 self, presentation: &'life1 Presentation<CRED, T>, storage: &'life2 Storage<K, I>, fragment: &'life3 str, jws_options: &'life4 JwsSignatureOptions, jwt_options: &'life5 JwtPresentationOptions ) -> Pin<Box<dyn Future<Output = Result<Jwt, JwkStorageDocumentError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, 'life5: 'async_trait, K: JwkStorage + 'async_trait, I: KeyIdStorage + 'async_trait, T: ToOwned<Owned = T> + Serialize + DeserializeOwned + Sync + 'async_trait, CRED: ToOwned<Owned = CRED> + Serialize + DeserializeOwned + Clone + Sync + 'async_trait, CoreDocument: 'async_trait,

Produces a JWT where the payload is produced from the given presentation in accordance with VC Data Model v1.1. Read more
source§

impl PartialEq for CoreDocument

source§

fn eq(&self, other: &CoreDocument) -> 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 RevocationDocumentExt for CoreDocument

source§

fn revoke_credentials<'query, 'me, Q>( &'me mut self, service_query: Q, indices: &[u32] ) -> Result<(), RevocationError>
where Q: Into<DIDUrlQuery<'query>>,

If the document has a RevocationBitmap service identified by service_query, revoke all specified indices.
source§

fn unrevoke_credentials<'query, 'me, Q>( &mut self, service_query: Q, indices: &[u32] ) -> Result<(), RevocationError>
where Q: Into<DIDUrlQuery<'query>>,

If the document has a RevocationBitmap service identified by service_query, unrevoke all specified indices.
source§

fn resolve_revocation_bitmap( &self, query: DIDUrlQuery<'_> ) -> Result<RevocationBitmap, RevocationError>

Extracts the RevocationBitmap from the referenced service in the DID Document. Read more
source§

impl Serialize for CoreDocument

source§

fn serialize<S>( &self, serializer: S ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl TryFrom<CoreDocumentData> for CoreDocument

§

type Error = Error

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

fn try_from( value: CoreDocumentData ) -> Result<CoreDocument, <CoreDocument as TryFrom<CoreDocumentData>>::Error>

Performs the conversion.
source§

impl Eq for CoreDocument

source§

impl StructuralPartialEq for CoreDocument

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> ConvertTo<T> for T
where T: Send,

source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> FmtJson for T
where T: ToJson,

source§

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

Format this as a JSON string or pretty-JSON string based on whether the # format flag was used.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromJson for T
where T: for<'de> Deserialize<'de>,

source§

fn from_json(json: &(impl AsRef<str> + ?Sized)) -> Result<Self, Error>

Deserialize Self from a string of JSON text.
source§

fn from_json_slice(json: &(impl AsRef<[u8]> + ?Sized)) -> Result<Self, Error>

Deserialize Self from bytes of JSON text.
source§

fn from_json_value(json: Value) -> Result<Self, Error>

Deserialize Self from a serde_json::Value.
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> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToJson for T
where T: Serialize,

source§

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

Serialize self as a string of JSON.
source§

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

Serialize self as a JSON byte vector.
source§

fn to_json_value(&self) -> Result<Value, Error>

Serialize self as a serde_json::Value.
source§

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

Serialize self as a pretty-printed string of JSON.
source§

impl<T> ToOwned for T
where 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 T
where 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 T
where 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 T
where 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.
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
source§

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