Skip to main content

DidDocument

Struct DidDocument 

Source
pub struct DidDocument {
    pub id: String,
    pub verification_method: Vec<VerificationMethod>,
    pub assertion_method: Vec<Value>,
    pub key_agreement: Vec<VerificationMethod>,
}
Expand description

A DID Document, parsed to the fields APH needs.

Deliberately NOT deny_unknown_fields: a DID Document is a general W3C artifact that legitimately carries much more than APH reads (services, authentication relationships, other proof purposes). Rejecting those would make APH unable to verify notaries with ordinary DID Documents.

Fields§

§id: String

The document’s own DID.

§verification_method: Vec<VerificationMethod>

Published keys. Absent in a document that delegates all keys by reference, which APH cannot use.

§assertion_method: Vec<Value>

DID URLs approved for the assertionMethod proof purpose.

§key_agreement: Vec<VerificationMethod>

Key-agreement (encryption) keys — the surface RFC 0008’s sealed payloads resolve readers from. APH’s profile carries EMBEDDED entries (the same Multikey shape as verificationMethod), never bare string references: a reference points at a key the resolver must fetch AGAIN, and the §8.4 surfaces publish whole documents.

Implementations§

Source§

impl DidDocument

Source

pub fn key_agreement_x25519(&self, kid: &str) -> Result<[u8; 32], AphError>

Resolves the X25519 keyAgreement key named by kid — the reader key a sealed payload (RFC 0008) points at. Refuses with APH_E023 when the document publishes no matching entry, when the entry carries no publicKeyMultibase, or when the bytes are not an X25519 multikey — all three are “the key you were told to use is not published”, and which document surface came up empty is exactly what the code’s distinctness from APH_E014 exists to say.

Source

pub fn allows_assertion(&self, did_url: &str) -> bool

Returns true if did_url is listed for the assertionMethod proof purpose, which is the purpose APH envelope proofs declare.

Entries may be plain DID URL strings or embedded objects with an id; both forms are recognized.

Source

pub fn resolve_key(&self, did_url: &str) -> Result<NotaryPublicKey, AphError>

Finds the key a proof’s verificationMethod names (spec §8.4.4 steps 5–6).

When the DID URL carries no fragment, the document must publish exactly one key: guessing among several would let the document’s ordering decide which key verifies a credential.

Trait Implementations§

Source§

impl Clone for DidDocument

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for DidDocument

Source§

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

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

impl<'de> Deserialize<'de> for DidDocument

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 Serialize for DidDocument

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

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

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

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

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