pub struct DidDocument {
pub context: Vec<String>,
pub id: String,
pub controller: Option<DidController>,
pub verification_methods: Vec<VerificationMethod>,
pub authentication: Vec<VerificationRef>,
pub assertion_method: Vec<VerificationRef>,
pub key_agreement: Vec<VerificationRef>,
pub capability_invocation: Vec<VerificationRef>,
pub capability_delegation: Vec<VerificationRef>,
pub service: Vec<Service>,
pub also_known_as: Vec<String>,
}Expand description
A W3C DID Document.
Implements the complete DID Document data model per W3C DID Core §5.
All optional fields serialize with skip_serializing_if to produce
compliant JSON-LD output.
Fields§
§context: Vec<String>JSON-LD context array. Always includes "https://www.w3.org/ns/did/v1".
id: StringThe DID subject — this document’s own DID.
controller: Option<DidController>The entity (or entities) authorized to make changes to this DID Document. When absent the subject is its own controller.
verification_methods: Vec<VerificationMethod>All verification methods defined by this DID Document.
Verification relationships reference VMs by their id.
authentication: Vec<VerificationRef>Keys authorized to authenticate as the DID subject (W3C DID Core §5.3.1).
assertion_method: Vec<VerificationRef>Keys authorized to issue verifiable credentials on behalf of the subject (W3C DID Core §5.3.2).
key_agreement: Vec<VerificationRef>Keys used for key agreement / ECDH encryption (W3C DID Core §5.3.3).
Typically X25519 keys (separate from the Ed25519 signing key). Critical for NDA’s encrypted content tier.
capability_invocation: Vec<VerificationRef>Keys authorized to invoke cryptographic capabilities (W3C DID Core §5.3.4).
Used in NDA’s access-control model — capability tokens reference VMs listed here.
capability_delegation: Vec<VerificationRef>Keys authorized to delegate capabilities to others (W3C DID Core §5.3.5).
service: Vec<Service>Service endpoints (W3C DID Core §5.4).
also_known_as: Vec<String>Alternative identifiers for the same subject (URIs or DID strings). Used for zone succession: old zone DID lists new zone DID here.
Implementations§
Source§impl DidDocument
impl DidDocument
Sourcepub fn new_simple(
did: impl Into<String>,
key_id: impl Into<String>,
public_key: &[u8],
) -> Self
pub fn new_simple( did: impl Into<String>, key_id: impl Into<String>, public_key: &[u8], ) -> Self
Build a minimal DID Document with a single Ed25519 verification method.
Sourcepub fn ed25519_public_key(&self) -> Option<[u8; 32]>
pub fn ed25519_public_key(&self) -> Option<[u8; 32]>
Return the first Ed25519 public key bytes found in any verification method.
Sourcepub fn x25519_key_agreement_key(&self) -> Option<[u8; 32]>
pub fn x25519_key_agreement_key(&self) -> Option<[u8; 32]>
Return the first X25519 key agreement public key bytes.
Sourcepub fn find_vm(&self, id: &str) -> Option<&VerificationMethod>
pub fn find_vm(&self, id: &str) -> Option<&VerificationMethod>
Find a verification method by its id.
Sourcepub fn is_controlled_by(&self, did: &str) -> bool
pub fn is_controlled_by(&self, did: &str) -> bool
Whether this DID document lists the given DID as a controller.
If controller is absent, the subject is its own controller.
Trait Implementations§
Source§impl Clone for DidDocument
impl Clone for DidDocument
Source§fn clone(&self) -> DidDocument
fn clone(&self) -> DidDocument
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more