This is the most recent implementation report for the Decentralized Identifiers (DIDs) specification.
Comments regarding this document are welcome. Please file issues directly on GitHub, or send them to public-credentials@w3.org (subscribe, archives).
The purpose of this document is to demonstrate that there are multiple interoperable implementations of Decentralized Identifiers (DIDs) that are capable of generating output that is conformant to the latest version.
The testing framework for Decentralized Identifiers (DIDs) executes the following process for every conformance statement in the Decentralized Identifiers (DIDs) specification :
The results of the conformance testing are shown below:
Test | node |
---|---|
positive The did: scheme name MUST be lowercase. | ✓ |
positive (did) The method name MUST be lowercase. | ✓ |
positive A DID method specification MUST further restrict the generic DID syntax by defining its own method-name and its own method-specific-id syntax. | ✓ |
positive A method-specific parameter name MUST be prefixed by the method name as defined by the method-name rule. | ✓ |
positive A generic DID path is identical to a URI path and MUST conform to the the path-abempty ABNF rule in [RFC3986]. | ✓ |
positive A generic DID query is identical to a URI query and MUST conform to the the query ABNF rule in [RFC3986]. | ✓ |
positive A generic DID fragment is identical to a URI fragment and MUST conform to the the fragment ABNF rule in [RFC3986] | ✓ |
negative The did: scheme name MUST be lowercase. | ✓ |
negative (did) The method name MUST be lowercase. | ✓ |
negative A DID method specification MUST further restrict the generic DID syntax by defining its own method-name and its own method-specific-id syntax. | ✓ |
negative A method-specific parameter name MUST be prefixed by the method name as defined by the method-name rule. | ✓ |
optional Method-specific parameter names MAY be combined with generic parameter names in any order. | ✓ |
Test | node |
---|---|
positive The value of the @context property MUST be one or more URIs, where the value of the first URI is https://www.w3.org/2019/did/v1. | ✓ |
positive If more than one URI is provided, the URIs MUST be interpreted as an ordered set. | ✓ |
positive DID Documents MUST include the @context property. | ✓ |
positive A DID Document MUST have exactly one top-level context statement. | ✓ |
positive The key for this property (context) MUST be @context. | ✓ |
positive The value of this key MUST be at least the URL for the generic DID context: https://www.w3.org/2019/did/v1. | ✓ |
positive Method-specific contexts MUST NOT override the terms defined in the generic DID context. | ✓ |
positive A DID Document MUST have exactly one DID subject. | ✓ |
positive The key for this property MUST be id. | ✓ |
positive The value of this key MUST be a valid DID. | ✓ |
positive However, the fully resolved DID Document MUST contain a valid id property. | ✓ |
positive A DID Document MUST be a single JSON object conforming to [RFC8259]. | ✓ |
negative The value of the @context property MUST be one or more URIs, where the value of the first URI is https://www.w3.org/2019/did/v1. | ✓ |
negative If more than one URI is provided, the URIs MUST be interpreted as an ordered set. | ✓ |
negative DID Documents MUST include the @context property. | ✓ |
negative A DID Document MUST have exactly one top-level context statement. | ✓ |
negative The key for this property (context) MUST be @context. | ✓ |
negative The value of this key MUST be at least the URL for the generic DID context: https://www.w3.org/2019/did/v1. | ✓ |
negative Method-specific contexts MUST NOT override the terms defined in the generic DID context. | ✓ |
negative A DID Document MUST have exactly one DID subject. | ✓ |
negative The key for this property MUST be id. | ✓ |
negative The value of this key MUST be a valid DID. | ✓ |
negative However, the fully resolved DID Document MUST contain a valid id property. | ✓ |
negative A DID Document MUST be a single JSON object conforming to [RFC8259]. | ✓ |
optional A DID Document MAY include an authentication property The value of the authentication property should be an array of verification methods | ✓ |
optional A DID Document MAY include an authentication property Each verification method MAY be embedded or referenced | ✓ |
optional A DID Document MAY include a service property The value of the service property should be an array of service endpoint | ✓ |
optional A DID Document MAY include a service property Each service endpoint must include id, type, and serviceEndpoint properties, and MAY include additional properties | ✓ |
optional A DID Document MAY include a service property The value of the serviceEndpoint property MUST be a JSON-LD object or a valid URI | ✓ |
optional A DID Document MAY include a publicKey property positive A DID Document that contains a revoked key MUST also contain or refer to the revocation information for the key (e.g., a revocation list). | ✓ |
optional A DID Document MAY include a publicKey property positive The value of the publicKey property MUST be an array of public keys. | ✓ |
optional A DID Document MAY include a publicKey property positive Each public key MUST include id and type properties, and exactly one value property. The array of public keys MUST NOT contain duplicate entries with the same id. | ✓ |
optional A DID Document MAY include a publicKey property positive Each public key MUST include a controller property, which identifies the controller of the corresponding private key. | ✓ |
optional A DID Document MAY include a publicKey property positive The value property of a public key MUST be exactly one of publicKeyPem, publicKeyJwk, publicKeyHex, publicKeyBase64, publicKeyBase58, publicKeyMultibase, depending on the format and encoding of the public key. | ✓ |
optional A DID Document MAY include a publicKey property negative The value of the publicKey property MUST be an array of public keys. | ✓ |
optional A DID Document MAY include a publicKey property negative Each public key MUST include id and type properties, and exactly one value property. The array of public keys MUST NOT contain duplicate entries with the same id. | ✓ |
optional A DID Document MAY include a publicKey property negative Each public key MUST include a controller property, which identifies the controller of the corresponding private key. | ✓ |
optional A DID Document MAY include a publicKey property negative The value property of a public key MUST be exactly one of publicKeyPem, publicKeyJwk, publicKeyHex, publicKeyBase64, publicKeyBase58, publicKeyMultibase, depending on the format and encoding of the public key. | ✓ |