affinidi-did-common 0.3.3

Affinidi DID Library
Documentation

affinidi-did-common

Crates.io Documentation Rust License

Common types, builders, and methods for working with Decentralised Identifiers (DIDs) and DID Documents. This crate is the foundation for the Affinidi DID Resolver.

Installation

[dependencies]
affinidi-did-common = "0.3"

Feature Flags

Feature Default Description
ed25519 Yes Ed25519 key support
p256 Yes P-256 (secp256r1) key support
p384 Yes P-384 key support
k256 Yes secp256k1 key support

Usage

Building a DID Document

use affinidi_did_common::{DocumentBuilder, ServiceBuilder, VerificationMethodBuilder};
use serde_json::json;

// Build a verification method
let vm = VerificationMethodBuilder::new("did:example:123#key-1", "Multikey", "did:example:123")
    .unwrap()
    .public_key_multibase("z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK")
    .build();

// Build a service
let service = ServiceBuilder::new_with_url("LinkedDomains", "https://example.com")
    .unwrap()
    .id("did:example:123#linked-domain")
    .unwrap()
    .build();

// Assemble the document
let doc = DocumentBuilder::new("did:example:123")
    .unwrap()
    .context_did_v1()
    .context_multikey_v1()
    .verification_method(vm)
    .authentication_reference("did:example:123#key-1")
    .unwrap()
    .service(service)
    .build();

Service Endpoint Variants

Endpoint Form Constructor
Single URL string ServiceBuilder::new_with_url("type", "https://...")
Map or ordered set ServiceBuilder::new_with_map("type", json!({...}))
Pre-built Endpoint ServiceBuilder::new("type", endpoint)

Related Crates

License

Apache-2.0