baseid-did
The DID crate implements creation and resolution for did:key, did:web, and did:jwk methods.
Installation
Section titled “Installation”[dependencies]baseid-did = "0.1.0-alpha.1"Create a DID
Section titled “Create a DID”use baseid_core::types::KeyType;use baseid_crypto::KeyPair;use baseid_did::DidKeyResolver;
let kp = KeyPair::generate(KeyType::Ed25519)?;let doc = DidKeyResolver::create(&kp.public)?;println!("DID: {}", doc.id);Resolve a DID
Section titled “Resolve a DID”use baseid_did::resolve;
// did:key resolves locallylet doc = resolve("did:key:z6MkhaXg...").await?;
// did:web fetches over HTTPSlet doc = resolve("did:web:example.com").await?;DID Document Structure
Section titled “DID Document Structure”pub struct DidDocument { pub id: String, pub verification_method: Vec<VerificationMethod>, pub authentication: Vec<String>, pub assertion_method: Vec<String>, pub key_agreement: Vec<String>,}Supported Methods
Section titled “Supported Methods”| Method | Create | Resolve | Key Types |
|---|---|---|---|
did:key | Yes | Yes | Ed25519, P-256, P-384, secp256k1 |
did:web | Yes | Yes | All |
did:jwk | Yes | Yes | All |
Extract Public Key
Section titled “Extract Public Key”use baseid_did::extract_public_key;
let public_key = extract_public_key(&doc, &doc.verification_method[0].id)?;