DID Linter · OwnYourData

DID Linter

DID Linter resolves a decentralized identifier, or takes a DID document, and checks it against Decentralized Identifiers (DIDs) v1.0.

did:oyd is resolved through the OYDID resolver, all other methods through the Universal Resolver. Example: did:oyd:zQmZZbVygmbsxWXhP2BH5nW2RMNXSQA3eRqnzfkFXzH3fg1

How DID Linter checks

  1. Structure. The document is validated with SHACL against the SOyA structure for DID documents: required members, identifier syntax, verification methods and their key material, verification relationships and services.
  2. Context. For a JSON-LD document, the @context is checked against the verification method types the structure lists, with the contexts the DID Specification Registries name for them.
  3. Result. Each problem is listed with the member of the document it concerns, for example verificationMethod. Notes that do not change the result, such as a suggestion to add a JSON-LD context, are shown separately.

Results come from automated checks only. They are not a certification, and the structure does not yet cover every requirement of DID Core.

Use it elsewhere

REST API

Validate a DID or a posted DID document; every path is described in Swagger.

curl https://didlint.ownyourdata.eu/api/validate/did:oyd:zQmZZbVygmbsxWXhP2BH5nW2RMNXSQA3eRqnzfkFXzH3fg1

Command line

The same checks with soya-cli and two scripts from the repository.

cat did.json | script/prep.sh | soya validate zGHDEn5jshXVk8haXx4BxQFX6zVyrFMP6WzeAJGVwwZvU
cat did.json | script/verify_context.rb

Your own instance

Run the Docker image yourself, online or fully offline with a local copy of the structure.

Building blocks

Source code and feedback