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:webdocument, a pluggable signer interface, and an interactive wizard CLI. - EECC -- Java
(
de.eecc.did:webvhon 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.
- Nuts Foundation -- Go (Registrar/Resolver)
- DIF -- Rust-v0.5 (Experimental Registrar/Resolver)
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.
- DIF --
did:webvhServer - Python (Server) - DIF --
did:webvhWatcher - Python (Watcher) - DIF --
did:webvhUniversal Resolver Driver -- based on the Typescript implementation. - DIF -- ThisDID Universal Resolver
(thisdid.com) -- A universal DID resolver, built by
GoPlausible and donated to DIF, whose
did:webvhdriver wraps the Typescript implementation. Itsdid:webvhresolver is in the Test Suite.
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:webvhsupport including registrar, resolver, witness, and watcher capabilities. Enables multi-tenant deployments to create and managedid:webvhDIDs with witness-based attestation. In production use in deployments including BC Gov's Traction platform. - OWF -- Credo-TS Module --
did:webvhresolver support, with registrar support in active development. As both a server-side and mobile wallet framework, bringsdid:webvhinto 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:webvhsupport. BC Wallet, the mobile wallet for British Columbia residents, is built on top of Bifold.