Skip to content

did:webvh Implementations

Implementations of did:webvh software for DID Controller registrars, resolvers, controllers and/or servers can be found here. See each implementation's repository for details on features and capabilities. Please let us know (or submit a PR) if you have an implementation that is not listed here, or if you want to update how your implementation is described.

The did:webvh Test Suite is used to check that implementations conform to the specification and interoperate with one another. Each implementation in the test suite generates its own DID logs and resolves every other implementation's logs, and any differences are taken to the Working Group as questions about the specification. The goal is for did:webvh to be implemented consistently across a wide range of programming languages and platforms. New implementations are welcome to join the test suite.

Full Implementations

The following are complete implementations of did:webvh that support the full set of features and capabilities defined in the current specification. They are in the did:webvh Test Suite, and their developers have been comparing notes and providing feedback to one another and to the Working Group to clarify the specification and help future implementers.

  • DIF -- Typescript
  • DIF -- Python
  • Affinidi at DIF -- Rust, Crate -- Production-ready implementation informed by security reviews, audits, and production deployment experience. Notable features include external signer support (the library never handles secret key material directly), enabling clean integration with Key Management Services (KMS) and Hardware Security Modules (HSMs) to meet regulated environment requirements. Also includes developer convenience functions for witness operations, improved error messages, and an optional HTTP client (gated behind a feature flag).
  • DIF -- Java -- Create, update, resolve, migrate and deactivate DIDs, with pre-rotation, witnesses, publishing a parallel did:web document, a pluggable signer interface, and an interactive wizard CLI.
  • EECC -- Java (de.eecc.did:webvh on Maven Central) -- Create, update, resolve and deactivate DIDs, with key rotation, pre-rotation and witnesses.
  • DIF -- Dart -- A pure-Dart port of the DIF Java implementation, with the same features. Signing is through an asynchronous signer interface, so keys can be held in a KMS or HSM.

Partial/PoC Implementations

These implementations are known, but are either incomplete or not fully compliant with the latest specification. They may be useful for building out new implementations.

Other Implementations

These are implementations we know about, but not much. We'll try to learn more and categorize them better in the future.

Deployment Tools

These are tools that can be used to deploy and manage did:webvh implementations, such as servers, watchers and resolvers.

Note that the DIF Rust implementation includes all of the same components (Registrar, Resolver, Witness, Watcher) in a single repository that can be used to build out custom deployment tools.

DID Controller Capabilities

The following are digital trust agent frameworks that support the did:webvh method, allowing users to create, issue, hold, request, present and verify verifiable credentials rooted with did:webvh DIDs. ACA-Py is primarily a server-side framework, while Credo-TS is both a server-side and mobile wallet framework.

  • OWF -- ACA-Py Plugin -- Full did:webvh support including registrar, resolver, witness, and watcher capabilities. Enables multi-tenant deployments to create and manage did:webvh DIDs with witness-based attestation. In production use in deployments including BC Gov's Traction platform.
  • OWF -- Credo-TS Module -- did:webvh resolver support, with registrar support in active development. As both a server-side and mobile wallet framework, brings did:webvh into a broad range of wallet and agent deployment contexts.
  • OWF -- Bifold Wallet -- A React Native (iOS and Android) mobile wallet built on top of Credo-TS, inheriting its did:webvh support. BC Wallet, the mobile wallet for British Columbia residents, is built on top of Bifold.