CARVIEW |
DID Specification Registries
The interoperability registry for Decentralized Identifiers
W3C Working Group Note
- This version:
- https://www.w3.org/TR/2021/NOTE-did-spec-registries-20210322/
- Latest published version:
- https://www.w3.org/TR/did-spec-registries/
- Latest editor's draft:
- https://w3c.github.io/did-spec-registries/
- Previous version:
- https://www.w3.org/TR/2021/NOTE-did-spec-registries-20210311/
- Editors:
- Orie Steele (Transmute)
- Manu Sporny (Digital Bazaar)
- Authors:
- Orie Steele (Transmute)
- Manu Sporny (Digital Bazaar)
- Participate:
- GitHub w3c/did-spec-registries
- File a bug
- Commit history
- Pull requests
Copyright © 2021 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and permissive document license rules apply.
Abstract
This document serves as an official registry for all known global parameters, properties, and values used by the Decentralized Identifier ecosystem.
Status of This Document
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.
This registry is under active development and implementers are advised against using the registry unless they are directly involved with the W3C DID Working Group.
Comments regarding this document are welcome. Please file issues directly on GitHub, or send them to public-did-wg@w3.org ( subscribe, archives).
Portions of the work on this specification have been funded by the United States Department of Homeland Security's Science and Technology Directorate under contracts HSHQDC-16-R00012-H-SB2016-1-002, 70RSAT20T00000010, and HSHQDC-17-C-00019. The content of this specification does not necessarily reflect the position or the policy of the U.S. Government and no official endorsement should be inferred.
Work on this registry has also been supported by the Rebooting the Web of Trust community facilitated by Christopher Allen, Shannon Appelcline, Kiara Robles, Brian Weller, Betty Dhamers, Kaliya Young, Kim Hamilton Duffy, Manu Sporny, Drummond Reed, Joe Andrieu, and Heather Vescent, Dmitri Zagidulin, and Dan Burnett.
This document was published by the Decentralized Identifier Working Group as a Working Group Note.
GitHub Issues are preferred for discussion of this specification. Alternatively, you can send comments to our mailing list. Please send them to public-did-wg@w3.org (subscribe, archives).
Publication as a Working Group Note does not imply endorsement by the W3C Membership.
This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the W3C Patent Policy.
This document is governed by the 15 September 2020 W3C Process Document.
1. Conformance
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MAY, MUST, MUST NOT, and SHOULD in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
2. Introduction
This section is non-normative.
This document serves as an official registry for all known global parameters, properties, and values used by the Decentralized Identifier ecosystem.
3. The Registration Process
Software implementers might find that the existing Decentralized Identifier Core specification [DID-CORE] is not entirely capable of addressing their use case and might need to add a new parameters, properties, or values to this registry in order to achieve their use case in a globally interoperable fashion. In order to add a new parameter, property, or value to this registry, an implementer MUST submit a modification request for this registry, as a pull request on the repository where this registry is hosted, where the modification request adheres to the following policies:
- Any addition to the DID Core Registries MUST specify a human readable description of the addition.
- If there are copyright, trademark, or any intellectual property rights concerns, the addition and use MUST be authorized in writing by the intellectual property rights holder under a F/RAND license. Examples include DID Methods that use trademarked brand names, property names that utilize the titles of copyrighted works, and patented technology that would cause the use of the extension to require licensing a patent.
- Any addition MUST NOT create unreasonable legal, security, moral, or privacy issues that will result in direct harm to others. Examples of unacceptable additions include any containing racist language, technologies used to persecute minority populations, and unconsented pervasive tracking.
- Any addition to the DID Core Registries MUST link, via at least a URL, preferably a content-integrity protected one, to the defining specification so that implementers can implement the property.
-
Any addition to the DID Core Registries that is a property or value, MUST
specify a machine readable JSON-LD Context for the addition.
- The JSON-LD Context MUST be included in full as part of the submission.
- A namespace URI MUST be provided for the JSON-LD Context so that consumer implementations can consistently map a URI to the full context.
- The URI provided MUST be persistent, and link all terms to their associated human readable descriptions.
- The URI provided SHOULD resolve or link to the full context contents.
- JSON-LD Contexts MUST be versioned and MUST NOT be date stamped.
-
JSON-LD Contexts SHOULD use scoped terms and MUST use the
@protected
feature to eliminate the possibility of term conflicts.
- Properties in the DID Core Registries MUST NOT be removed, only deprecated.
- Properties defined in the DID Core Registries MUST include a Concise Data Definition Language (CDDL) [RFC8610] of the Property and its Abstract Data Model structure.
Should CDDL be used as the Data Definition Language to formalize the constraints of the CBOR and JSON representation of a DID document? (see issue #153).
The Editors of the DID Specification Registries MUST consider all of the policies above when reviewing additions to the registry and MUST reject registry entries if they violate any of the policies in this section. Entities registering additions can challenge rejections first with the W3C DID Working Group and then, if they are not satisfied with the outcome, with the W3C Staff. W3C Staff need not be consulted on changes to the DID Specification Registries, but do have the final authority on registry contents. This is to ensure that W3C can adeqately respond to time sensitive legal, privacy, security, moral, or other pressing concerns without putting an undue operational burden on W3C Staff.
Entries that are identified to cause interoperability problems MAY be marked as such at the discretion of the maintainers of this registry, and if possible, after consultation with the entry maintainer.
Any submission to the registries that meet all the criteria listed above will be accepted for inclusion. These registries enumerate all known mechanisms that meet a minimum bar, without choosing between them.
4. Property Names
The following section defines the properties available for use in a DID document. Note that some of these properties are defined in the DID Core Specification, and others are defined elsewhere and may be method- or domain-specific. Please read the associated specifications to ensure that the properties you use are appropriate for your implementation. The properties are arranged here according to the purpose they serve.
This registry is a work in progress and some properties are missing normative definitions. We are working on this! This does NOT mean that in future it will be possible to submit items to the registry without normative definitions (see § 3. The Registration Process).
Concise Data Defition Lanuage (CDDL) provides a succint data defition for representing JSON and CBOR core representations of
a DID document as described in the DID Core Specification and associated properties registered in this DID Spec Registeries.
The draft composite CDDL definition for the entire DID Document Specifation and associated
registeries can be found here.
Additionally, each Property, Class and Type are described separately below and can be found below the CDDL
column and apply to JSON and CBOR representations only.
4.1 DID document properties
These properties are foundational to DID documents, and are expected to be useful to all DID methods.
4.1.1 id
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | id.cddl |
{
"id": "did:example:123",
...
}
4.1.2 controller
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | controller.cddl |
{
"controller": "did:example:123",
...
}
4.1.3 verificationMethod
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core Terminology | DID Core | verificationMethod.cddl |
4.1.4 publicKey
This property has been deprecated in favor or verificationMethod
.
Normative Definition | JSON-LD | CDDL |
---|---|---|
security-vocab | security-vocab context | publicKey.cddl |
{
"id": "did:example:123",
"publicKey": [
{
"id": "did:example:123#ZC2jXTO6t4R501bfCXv3RxarZyUbdP2w_psLwMuY6ec",
"type": "Ed25519VerificationKey2018",
"controller": "did:example:123",
"publicKeyBase58": "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
},
{
"id": "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q",
"type": "EcdsaSecp256k1VerificationKey2019",
"controller": "did:example:123",
"publicKeyJwk": {
"crv": "secp256k1",
"x": "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4",
"y": "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo",
"kty": "EC",
"kid": "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}
]
}
4.1.5 service
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | service.cddl |
{
...
"service": [{
"id": "did:example:123#edv",
"type": "EncryptedDataVault",
"serviceEndpoint": "https://edv.example.com/"
}]
}
4.2 Verification relationships
These are properties that express the relationship between the DID subject and a verification method using a verification relationship.
4.2.1 assertionMethod
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | assertionMethod.cddl |
{
...
"publicKey": [{
"id": "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q",
"type": "EcdsaSecp256k1VerificationKey2019",
"controller": "did:example:123",
"publicKeyJwk": {
"crv": "secp256k1",
"x": "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4",
"y": "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo",
"kty": "EC",
"kid": "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}],
"assertionMethod": [{
"id": "did:example:123#z6MkpzW2izkFjNwMBwwvKqmELaQcH8t54QL5xmBdJg9Xh1y4",
"type": "Ed25519VerificationKey2018",
"controller": "did:example:123",
"publicKeyBase58": "BYEz8kVpPqSt5T7DeGoPVUrcTZcDeX5jGkGhUQBWmoBg"
},
"did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
]
}
4.2.2 authentication
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | authentication.cddl |
{
...
"publicKey": [{
"id": "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q",
"type": "EcdsaSecp256k1VerificationKey2019",
"controller": "did:example:123",
"publicKeyJwk": {
"crv": "secp256k1",
"x": "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4",
"y": "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo",
"kty": "EC",
"kid": "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}],
"authentication": [{
"id": "did:example:123#z6MkpzW2izkFjNwMBwwvKqmELaQcH8t54QL5xmBdJg9Xh1y4",
"type": "Ed25519VerificationKey2018",
"controller": "did:example:123",
"publicKeyBase58": "BYEz8kVpPqSt5T7DeGoPVUrcTZcDeX5jGkGhUQBWmoBg"
},
"did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
]
}
4.2.3 capabilityDelegation
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | capabilityDelegation.cddl |
{
...
"publicKey": [{
"id": "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q",
"type": "EcdsaSecp256k1VerificationKey2019",
"controller": "did:example:123",
"publicKeyJwk": {
"crv": "secp256k1",
"x": "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4",
"y": "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo",
"kty": "EC",
"kid": "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}],
"capabilityDelegation": [{
"id": "did:example:123#z6MkpzW2izkFjNwMBwwvKqmELaQcH8t54QL5xmBdJg9Xh1y4",
"type": "Ed25519VerificationKey2018",
"controller": "did:example:123",
"publicKeyBase58": "BYEz8kVpPqSt5T7DeGoPVUrcTZcDeX5jGkGhUQBWmoBg"
},
"did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
]
}
4.2.4 capabilityInvocation
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | capabilityInvocation.cddl |
{
...
"publicKey": [{
"id": "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q",
"type": "EcdsaSecp256k1VerificationKey2019",
"controller": "did:example:123",
"publicKeyJwk": {
"crv": "secp256k1",
"x": "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4",
"y": "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo",
"kty": "EC",
"kid": "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}],
"capabilityInvocation": [{
"id": "did:example:123#z6MkpzW2izkFjNwMBwwvKqmELaQcH8t54QL5xmBdJg9Xh1y4",
"type": "Ed25519VerificationKey2018",
"controller": "did:example:123",
"publicKeyBase58": "BYEz8kVpPqSt5T7DeGoPVUrcTZcDeX5jGkGhUQBWmoBg"
},
"did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
]
}
4.2.5 keyAgreement
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | keyAgreement.cddl |
{
...
"keyAgreement": [
{
"id": "did:example:123#zC9ByQ8aJs8vrNXyDhPHHNNMSHPcaSgNpjjsBYpMMjsTdS",
"type": "X25519KeyAgreementKey2019",
"controller": "did:example:123",
"publicKeyBase58": "9hFgmPVfmBZwRvFEyniQDBkz9LmV7gDEqytWyGZLmDXE"
}
]
}
4.3 Verification method properties
These properties are for use on a verification method object, in the value of
verificationMethod
.
4.3.1 publicKeyJwk
Normative Definition | JSON-LD | CDDL |
---|---|---|
security-vocab | DID Core | publicKeyJwk.cddl |
{
"id": "did:example:123#_Qq0UL2Fq651Q0Fjd6TvnYE-faHiOpRlPVQcY_-tA4A",
"type": "JsonWebKey2020",
"controller": "did:example:123",
"publicKeyJwk": {
"crv": "Ed25519",
"x": "VCpo2LMLhn6iWku8MKvSLg2ZAoC-nlOyPVQaO3FxVeQ",
"kty": "OKP",
"kid": "_Qq0UL2Fq651Q0Fjd6TvnYE-faHiOpRlPVQcY_-tA4A"
}
},
4.3.2 publicKeyBase58
Normative Definition | JSON-LD | CDDL |
---|---|---|
security-vocab | DID Core | publicKeyBase58.cddl |
4.3.3 publicKeyHex
Normative Definition | JSON-LD | CDDL | |
---|---|---|---|
security-vocab | security-vocab/v3-unstable | publicKeyHex.cddl |
{
"@context":[
"carview.php?tsp=https://www.w3.org/ns/did/v1",
"https://identity.foundation/EcdsaSecp256k1RecoverySignature2020#"
],
"id":"did:example:123",
"publicKey":[{
"id": "did:example:123#vm-2",
"controller": "did:example:123",
"type": "EcdsaSecp256k1RecoveryMethod2020",
"publicKeyHex": "027560af3387d375e3342a6968179ef3c6d04f5d33b2b611cf326d4708badd7770"
}]
}
4.3.4 blockchainAccountId
Normative Definition | JSON-LD | CDDL |
---|---|---|
security-vocab | DID Core | CDDL definition pending |
{
"@context":[
"carview.php?tsp=https://www.w3.org/ns/did/v1",
"https://identity.foundation/EcdsaSecp256k1RecoverySignature2020#"
],
"id":"did:example:123",
"publicKey":[{
"id": "did:example:123#vm-3",
"controller": "did:example:123",
"type": "EcdsaSecp256k1RecoveryMethod2020",
"blockchainAccountId":"0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb@eip155:1"
}]
}
4.3.5 ethereumAddress
This property is deprecated in favor ofblockchainAccountId
.
Normative Definition | JSON-LD | CDDL |
---|---|---|
security-vocab | security-vocab-v3-unstable | ethereumAddress.cddl |
{
"@context":[
"carview.php?tsp=https://www.w3.org/ns/did/v1",
"https://identity.foundation/EcdsaSecp256k1RecoverySignature2020#"
],
"id":"did:example:123",
"publicKey":[{
"id": "did:example:123#vm-3",
"controller": "did:example:123",
"type": "EcdsaSecp256k1RecoveryMethod2020",
"ethereumAddress": "0xF3beAC30C498D9E26865F34fCAa57dBB935b0D74"
}]
}
4.4 Service properties
These properties are for use on a service object, in the value of
service
.
4.4.1 serviceEndpoint
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | serviceEndpoint.cddl |
{
...
"service": [{
"id": "did:example:123#edv",
"type": "EncryptedDataVault",
"serviceEndpoint": "https://edv.example.com/"
}]
}
5. Property Values
5.1 Verification method types
These are values to be used for the type
in a verification method object.
5.1.1 JsonWebKey2020
ISSUE 240 on DID Core: The duplication and/or possible interaction of properties held in a JWK and a verification method are an active topic of discussion in the Working Group. Implementers are cautioned that the behavior of values associated with this property are not stable and might change in the future.
Do not include private or extraneous information in verification methods. The class of private information related to JWKs is defined here.
Normative Definition | JSON-LD | CDDL |
---|---|---|
JSON Web Signature 2020 | DID Core | verificationMethodTypes.cddl |
{
"id": "did:example:123#_TKzHv2jFIyvdTGF1Dsgwngfdg3SH6TpDv0Ta1aOEkw",
"type": "JsonWebKey2020",
"controller": "did:example:123",
"publicKeyJwk": {
"crv": "P-256",
"x": "38M1FDts7Oea7urmseiugGW7tWc3mLpJh6rKe7xINZ8",
"y": "nDQW6XZ7b_u2Sy9slofYLlG03sOEoug3I0aAPQ0exs4",
"kty": "EC",
"kid": "_TKzHv2jFIyvdTGF1Dsgwngfdg3SH6TpDv0Ta1aOEkw"
}
}
5.1.2 EcdsaSecp256k1VerificationKey2019
Normative Definition | JSON-LD | CDDL |
---|---|---|
Ecdsa Secp256k1 Signature 2019 | DID Core | verificationMethodTypes.cddl |
{
"id": "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q",
"type": "EcdsaSecp256k1VerificationKey2019",
"controller": "did:example:123",
"publicKeyJwk": {
"crv": "secp256k1",
"x": "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4",
"y": "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo",
"kty": "EC",
"kid": "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}
5.1.3 Ed25519VerificationKey2018
Normative Definition | JSON-LD | CDDL |
---|---|---|
Ed25519 Signature 2018 | DID Core | verificationMethodTypes.cddl |
{
"id": "did:example:123#ZC2jXTO6t4R501bfCXv3RxarZyUbdP2w_psLwMuY6ec",
"type": "Ed25519VerificationKey2018",
"controller": "did:example:123",
"publicKeyBase58": "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
}
5.1.4 Bls12381G1Key2020
Normative Definition | JSON-LD | CDDL |
---|---|---|
BBS+ Signatures 2020 | DID Core | verificationMethodTypes.cddl |
{
"id": "did:example:123#z3tEGVtEKzdhJB2rT5hLVjwQPis8k7bTM16t7vDZrQaoddk6wZ7or6xPPs1P8H9U16Xe75",
"type": "Bls12381G1Key2020",
"controller": "did:example:123",
"publicKeyBase58": "7bXhTVonHPizXP72AE92PPmRiaXipC519yU7F6NxUFExWpyQo57LuKKBoTyuZ3uWm9",
}
5.1.5 Bls12381G2Key2020
Normative Definition | JSON-LD | CDDL |
---|---|---|
BBS+ Signatures 2020 | DID Core | verificationMethodTypes.cddl |
{
"id": "did:example:123#zUC7K51WYEsj8y6KPVa1XfwdW5ZJrW5kSbMV619j128T6atCLLXJjjovMZsJ3Ay4STdngRkvM4ygT4qm1mk6HR8FvipSY435nLgYS1TTcaqJAzDWzM1iB9vh3hTL1DEKitwn56i",
"type": "Bls12381G2Key2020",
"controller": "did:example:123",
"publicKeyBase58": "25ETdUZDVnME6yYuAMjFRCnCPcDmYQcoZDcZuXAfeMhXPvjZg35QmZ7uctBcovA69YDM3Jf7s5BHo4u1y89nY6mHiji8yphZ4AMm4iNCRh35edSg76Dkasu3MY2VS9LnuaVQ",
}
5.1.6 GpgVerificationKey2020
Normative Definition | JSON-LD | CDDL |
---|---|---|
Linked Data Signatures for GPG | gpg.jsld.org | verificationMethodTypes.cddl |
{
"@context":[
"carview.php?tsp=https://www.w3.org/ns/did/v1",
"carview.php?tsp=https://gpg.jsld.org/contexts/lds-gpg2020-v0.0.jsonld"
],
"id":"did:example:123",
"publicKey":[{
"id": "did:example:123#989ed1057a294c8a3665add842e784c4d08de1e2",
"type": "GpgVerificationKey2020",
"controller": "did:example:123",
"publicKeyGpg": "-----BEGIN PGP PUBLIC KEY BLOCK-----\r\nVersion: OpenPGP.js v4.9.0\r\nComment: https://openpgpjs.org\r\n\r\nxjMEXkm5LRYJKwYBBAHaRw8BAQdASmfrjYr7vrjwHNiBsdcImK397Vc3t4BL\r\nE8rnN......v6\r\nDw==\r\n=wSoi\r\n-----END PGP PUBLIC KEY BLOCK-----\r\n"
}]
}
5.1.7 RsaVerificationKey2018
Normative Definition | JSON-LD | CDDL |
---|---|---|
RSA Signature Suite 2018 | DID Core | verificationMethodTypes.cddl |
{
"id": "did:example:123#key-0",
"type": "RsaVerificationKey2018",
"controller": "did:example:123",
"publicKeyJwk": {
"kty":"RSA",
"e":"AQAB",
"use":"sig",
"kid":"tNksV42EUs3Xct9AkgZyFWglItRGMxVZ1A1XM68SNq0
"n":"kO2d_qQTEBjYFGcoY_da7ziFY4L2QX14K7snCee09n-cY2eP-oJXk8T2_lL20YnpYhf4i
jhkWHGU8kY8-FWPRrzSeu3JUMVSZoqTgoAiKWdnSLNvPVxvGuD2CiA3T6AkwUC03D2AkOLCcJV
8h_hxUEPeDawF7ArpuJW5DXzEJjE7gOjN4r6d7VB6sd5y-3la54H2ADz2amHLdBWs30fL4BRBH
lVdx0YmF37V4u5yvnnb5Iyr3kBXJes8t0MUMPkjqEEXRmukpKUzZYNpWDXY0tVcXeK5sRx0DAn
lNgNNf14-vsyjGkj2Rz0oGW73jjWa8dw-yVlDEHyIkQU9-UY4dFXbVjdIO8j_5ghh62o1T7Y4w
5CWMc-FxPE3LHe-_teW97X__NN-ToYgfi42IvV2mYOdQMCbvnvY2oMdK3b9wmeVi0marToauL5
LMg5xHDKopmIR7E3VyRtNYwDFAZ89kadcbSrZ8zTR5APaB7Tmp2L2ZfXKxqKQuxlFTTCcZtg4e
5AN8QuYdI18DEDQn2umUU_Twj7k4CXvuIKVL8p4yRHC4CHAGIm9cH_t11dF3wXygaENVOGRXQu
0g1iKq0mO2rWpOqkGJ5uXMFb5lx54i8uOjCdZ9y2el28xA55Ve95KCxeTHp997Bn3TIgbeQ-B_
-3PBVTuuAAH8y9fFNKtu5E"
}
}
5.1.8 X25519KeyAgreementKey2019
Normative definition in a suite is required for registration, this entry should be updated or removed.
Normative Definition | JSON-LD | CDDL |
---|---|---|
Normative definition pending | DID Core | verificationMethodTypes.cddl |
{
...
"keyAgreement": [
{
"id": "did:example:123#zC9ByQ8aJs8vrNXyDhPHHNNMSHPcaSgNpjjsBYpMMjsTdS",
"type": "X25519KeyAgreementKey2019",
"controller": "did:example:123",
"publicKeyBase58": "9hFgmPVfmBZwRvFEyniQDBkz9LmV7gDEqytWyGZLmDXE"
}
]
}
5.1.9 SchnorrSecp256k1VerificationKey2019
Normative Definition | JSON-LD | CDDL |
---|---|---|
security-vocab Link is to a placeholder! Definition pending | DID Core | verificationMethodTypes.cddl |
5.1.10 EcdsaSecp256k1RecoveryMethod2020
Normative Definition | JSON-LD | CDDL |
---|---|---|
Ecdsa Secp256k1 Recovery Signature 2020 | lds-ecdsa-secp256k1-recovery2020-0.0.jsonld | verificationMethodTypes.cddl |
{
"@context": [
"carview.php?tsp=https://www.w3.org/ns/did/v1",
"https://identity.foundation/EcdsaSecp256k1RecoverySignature2020#"
],
"id":"did:example:123",
"publicKey": [
{
"id": "did:example:123#vm-1",
"controller": "did:example:123",
"type": "EcdsaSecp256k1RecoveryMethod2020",
"publicKeyJwk": {
"crv": "secp256k1",
"kid": "JUvpllMEYUZ2joO59UNui_XYDqxVqiFLLAJ8klWuPBw",
"kty": "EC",
"x": "dWCvM4fTdeM0KmloF57zxtBPXTOythHPMm1HCLrdd3A",
"y": "36uMVGM7hnw-N6GnjFcihWE3SkrhMLzzLCdPMXPEXlA"
}
},
{
"id": "did:example:123#vm-2",
"controller": "did:example:123",
"type": "EcdsaSecp256k1RecoveryMethod2020",
"publicKeyHex": "027560af3387d375e3342a6968179ef3c6d04f5d33b2b611cf326d4708badd7770"
},
{
"id": "did:example:123#vm-3",
"controller": "did:example:123",
"type": "EcdsaSecp256k1RecoveryMethod2020",
"ethereumAddress": "0xF3beAC30C498D9E26865F34fCAa57dBB935b0D74"
}
]
}
5.2 Service types
These are values to be used for the type
property
in a service object.
5.2.1 LinkedDomains
https://identity.foundation/.well-known/resources/did-configuration/#LinkedDomains
^ if this link changes the term defintion registered in did core will need to change, we should be sure we like this URL as is... forever.
Normative Definition | JSON-LD | CDDL |
---|---|---|
Well Known DID Configuration | Well Known DID Configuration | CDDL definition pending |
{
"@context": ["carview.php?tsp=https://www.w3.org/ns/did/v1","carview.php?tsp=https://identity.foundation/.well-known/did-configuration/v1"],
"id": "did:example:123",
"verificationMethod": [{
"id": "did:example:123#456",
"type": "JsonWebKey2020",
"controller": "did:example:123",
"publicKeyJwk": {
"kty": "OKP",
"crv": "Ed25519",
"x": "VCpo2LMLhn6iWku8MKvSLg2ZAoC-nlOyPVQaO3FxVeQ"
}
}],
"service": [
{
"id":"did:example:123#foo",
"type": "LinkedDomains",
"serviceEndpoint": {
"origins": ["https://foo.example.com", "https://identity.foundation"]
}
},
{
"id":"did:example:123#bar",
"type": "LinkedDomains",
"serviceEndpoint": "https://bar.example.com"
}
]
}
6. Representations
This table provides a reference for media types and the associated specifications for producing and consuming those representations.
Media Type | Specification |
---|---|
application/did+json | DID Core |
application/did+ld+json | DID Core |
application/did+cbor | DID Core |
application/did+dag+cbor |
Issue 252: application/did+dag+cbor needs specification URL |
application/did+yaml |
Issue 253: application/did+yaml needs specification URL |
7. Representation-Specific Entries
7.1 JSON
These are entries in DID documents that are specific to the JSON representation.
(No entries yet)
7.2 JSON-LD
These are entries in DID documents that are specific to the JSON-LD representation.
7.2.1 @context
Normative Definition |
---|
DID Core |
The following values are acceptable values for the @context
entry as
a JSON
String or first item of a JSON Array,
represented as a JSON
String.
@context Values |
Specification Version |
---|---|
https://www.w3.org/ns/did/v1 | DID Core 1.0 Working draft |
{
"@context": [
"carview.php?tsp=https://www.w3.org/ns/did/v1",
"https://example.com/blockchain-identity/v1"
],
...
}
7.3 CBOR
These are entries in DID documents that are specific to the CBOR representation.
(No entries yet)
8. DID Resolution Input Metadata
These properties contain information pertaining to the DID resolution request.
8.1 accept
Normative Definition | CDDL | |
---|---|---|
DID Core | accept.cddl |
{
"accept": "application/did+ld+json"
}
9. DID Resolution Metadata
These properties contain information pertaining to the DID resolution response.
9.1 content-type
Normative Definition | cddl | |
---|---|---|
DID Core | content-type.cddl |
{
"content-type": "application/did+ld+json"
}
9.2 error
Normative Definition | CDDL | |
---|---|---|
DID Core | error.cddl |
{
"error": "not-found"
}
9.2.1 invalid-did
Normative Definition |
---|
DID Core |
{
"error": "invalid-did"
}
9.2.2 invalid-did-url
Normative Definition |
---|
DID Core |
{
"error": "invalid-did-url"
}
9.2.3 not-found
Normative Definition |
---|
DID Core |
{
"error": "not-found"
}
10. DID Document Metadata
These properties contain information pertaining to the DID document itself, rather than the DID subject.
10.1 created
See DID Core #203.
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | created.cddl |
{
"created": "2019-03-23T06:35:22Z"
}
10.2 updated
See DID Core #203.
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | updated.cddl |
{
"updated": "2023-08-10T13:40:06Z"
}
10.3 deactivated
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | deactivated.cddl |
{
"deactivated": true
}
10.4 nextUpdate
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | nextUpdate.cddl |
{
"nextUpdate": "2023-08-10T13:40:06Z"
}
10.5 versionId
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | versionId.cddl |
{
"versionId": "bafyreifederejlobaec6kwpl2mc3tw7qk3j3ey4uytkbiw2qw7dzylud6i"
}
10.6 nextVersionId
Normative Definition | JSON-LD | CDDL |
---|---|---|
DID Core | DID Core | nextVersionId.cddl |
{
"nextVersionId": "bafyreifederejlobaec6kwpl2mc3tw7qk3j3ey4uytkbiw2qw7dzylud6i"
}
11. Parameters
11.1 hl
Normative Definition |
---|
DID Core |
did:example:123?hl=zQmWvQxTqbG2Z9HPJgG57jjwR154cKhbtJenbyYTWkjgF3e
11.2 service
Normative Definition |
---|
DID Core |
did:example:123?service=agent
11.3 versionId
Normative Definition |
---|
DID Core |
did:example:123?versionId=4
11.4 versionTime
Normative Definition |
---|
DID Core |
did:example:123?versionTime=2016-10-17T02:41:00Z
11.5 relativeRef
Normative Definition |
---|
DID Core |
did:example:123?service=files&relativeRef=%2Fmyresume%2Fdoc%3Fversion%3Dlatest%23intro
11.6 initial-state
Normative Definition |
---|
DID Spec Extensions by DIF |
did:example:123?initial-state=eyJkZWx0YV9oYXNoIjoiRWlDUlRKZ2Q0U0V2YUZDLW9fNUZjQnZJUkRtWF94Z3RLX3g...
11.7 transform-keys
Normative Definition |
---|
DID Spec Extensions by DIF |
did:example:123?transform-keys=jwk
11.8 signed-ietf-json-patch
Normative Definition |
---|
DID Spec Extensions by DIF |
did:example:123?signed-ietf-json-patch=eyJraWQiOiJkaWQ6ZXhhbXBsZTo0NTYjX1FxMFVMMkZxNjUxUTBGamQ2VH...
11.9 resource
Normative Definition |
---|
TBC |
did:foo:21tDAKCERh95uGgKbJNHYp?resource=true
12. DID Methods
This table summarizes the DID method specifications currently in development. The links will be updated as subsequent Implementer’s Drafts are produced.
The normative requirements for DID method specifications can be found in Decentralized Identifiers v1.0: Methods [DID-CORE]. DID methods that do not meet these requirements will not be accepted. We encourage DID method authors to provide an email address in the Author Links column, as this helps with maintenance.
How will we automate the update of the namespace reservations and keep them in sync with the reserved namespace in the Abstract Data Model? See issue #152.
Method Name | Status | DLT or Network | Author Links | Link |
---|---|---|---|---|
did:3: | PROVISIONAL | Ceramic Network | Joel Thorstensson | 3ID DID Method |
did:abt: | PROVISIONAL | ABT Network | ArcBlock | ABT DID Method |
did:aergo: | PROVISIONAL | Aergo | Blocko | Aergo DID Method |
did:ala: | PROVISIONAL | Alastria | Alastria National Blockchain Ecosystem | Alastria DID Method |
did:bba: | PROVISIONAL | Ardor | Attila Aldemir | BBA DID Method |
did:bid: | PROVISIONAL | bif | teleinfo caict | BIF DID Method |
did:bnb: | PROVISIONAL | Binance Smart Chain | Ontology Foundation | Binance DID Method |
did:bryk: | PROVISIONAL | bryk | Marcos Allende, Sandra Murcia, Flavia Munhoso, Ruben Cessa | bryk DID Method |
did:btcr: | PROVISIONAL | Bitcoin | Christopher Allen, Ryan Grant, Kim Hamilton Duffy | BTCR DID Method |
did:ccp: | PROVISIONAL | Quorum | Baidu, Inc. | Cloud DID Method |
did:celo: | PROVISIONAL | Celo | Ontology Foundation | Celo DID Method |
did:com: | PROVISIONAL | commercio.network | Commercio Consortium | Commercio.network DID Method |
did:corda: | PROVISIONAL | Corda | Nitesh Solanki,Moritz Platt,Pranav Kirtani | Corda DID method |
did:dock: | PROVISIONAL | Dock | Dock.io | Dock DID Method |
did:dom: | PROVISIONAL | Ethereum | Dominode | |
did:echo: | PROVISIONAL | Echo | Echo Technological Solutions LLC | Echo DID Method |
did:elastos: | PROVISIONAL | Elastos ID Sidechain | Elastos Foundation | Elastos DID Method |
did:elem: | PROVISIONAL | Element DID | Transmute | ELEM DID Method |
did:emtrust: | PROVISIONAL | Hyperledger Fabric | Halialabs Pte Ltd. | Emtrust DID Method |
did:evan: | PROVISIONAL | evan.network | evan GmbH | evan.network DID Method |
did:example: | PROVISIONAL | DID Specification | W3C Credentials Community Group | DID Specification |
did:erc725: | PROVISIONAL | Ethereum | Markus Sabadello, Fabian Vogelsteller, Peter Kolarov | erc725 DID Method |
did:etho: | PROVISIONAL | Ethereum | Ontology Foundation | ETHO DID Method |
did:ethr: | PROVISIONAL | Ethereum | uPort | ETHR DID Method |
did:factom: | PROVISIONAL | Factom | Sphereon, Factomatic, Factom Inc | Factom DID Method |
did:future: | PROVISIONAL | Netease Chain | Netease Blockchain Team | Future DID Method |
did:gatc: | PROVISIONAL | Ethereum, Hyperledger Fabric, Hyperledger Besu, Alastria | Gataca | Gataca DID Method |
did:git: | PROVISIONAL | DID Specification | Internet Identity Workshop | Git DID Method |
did:github: | PROVISIONAL | Github | Transmute | GitHub DID Method |
did:grg: | PROVISIONAL | GrgChain | GRGBanking Blockchain Express Co. Ltd. | GrgChain DID Method |
did:hedera: | PROVISIONAL | Hedera Hashgraph | Hedera Hashgraph, Swisscom Blockchain AG | Hedera Hashgraph DID Method |
did:holo: | PROVISIONAL | Holochain | Holo.Host | Holochain DID Method |
did:icon: | PROVISIONAL | ICON | ICONLOOP | ICON DID Method |
did:io: | PROVISIONAL | IoTeX | IoTeX Foundation | IoTeX DID Method |
did:ion: | PROVISIONAL | Bitcoin | Various DIF contributors | ION DID Method |
did:ipid: | PROVISIONAL | IPFS | TranSendX | IPID DID method |
did:is: | PROVISIONAL | Blockcore | Blockcore | Blockcore DID Method |
did:iwt: | PROVISIONAL | InfoWallet | Raonsecure | InfoWallet DID Method |
did:jlinc: | PROVISIONAL | JLINC Protocol | Victor Grey | JLINC Protocol DID Method |
did:jnctn: | PROVISIONAL | Jnctn Network | Jnctn Limited | JNCTN DID Method |
did:jolo: | PROVISIONAL | Ethereum | Jolocom | Jolocom DID Method |
did:key: | PROVISIONAL | Ledger independent DID method based on public/private key pairs | Rick Astley (thank you for your inspiration), Manu Sporny, Dmitri Zagidulin, Dave Longley, Orie Steele | DID key method |
did:kilt: | PROVISIONAL | KILT Blockchain | BOTLabs GmbH | KILT DID Method |
did:klay: | PROVISIONAL | Klaytn | Ontology Foundation | Klaytn DID Method |
did:kr: | PROVISIONAL | Korea Mobile Identity System | Ministry of the Interior and Safety, korea | Korea Mobile Identity System DID Method |
did:life: | PROVISIONAL | RChain | lifeID Foundation | lifeID DID Method |
did:meme: | PROVISIONAL | Ledger agnostic | DID Meme Maintainers | Meme DID Method |
did:meta: | PROVISIONAL | Metadium | Metadium Foundation | Metadium DID Method |
did:moac: | PROVISIONAL | MOAC | MOAC Blockchain Tech, Inc. | MOAC DID Method |
did:monid: | PROVISIONAL | Ethereum | Min Ju | MONiD DID Method |
did:morpheus: | PROVISIONAL | Hydra | Internet of People | Morpheus DID Method |
did:near: | PROVISIONAL | NEAR | Ontology Foundation | NEAR DID Method |
did:ockam: | PROVISIONAL | Ockam | Ockam | Ockam DID Method |
did:onion: | PROVISIONAL | Ledger agnostic | Blockchain Commons | Onion DID Method |
did:ont: | PROVISIONAL | Ontology | Ontology Foundation | Ontology DID Method |
did:omn: | PROVISIONAL | OmniOne | OmniOne | OmniOne DID Method |
did:op: | PROVISIONAL | Ocean Protocol | Ocean Protocol | Ocean Protocol DID Method |
did:orb: | PROVISIONAL | Ledger agnostic | SecureKey | Orb DID Method |
did:panacea: | PROVISIONAL | Panacea | MediBloc | Panacea DID Method |
did:peer: | PROVISIONAL | peer | Daniel Hardman | peer DID Method |
did:pistis: | PROVISIONAL | Ethereum | Andrea Taglia, Matteo Sinico | Pistis DID Method |
did:ptn: | PROVISIONAL | PalletOne | PalletOne | PalletOne DID Method |
did:san: | PROVISIONAL | SAN Cloudchain | YLZ Inc. | SAN DID Method |
did:schema: | PROVISIONAL | Multiple storage networks, currently public IPFS and evan.network IPFS | 51nodes GmbH | Schema Registry DID Method |
did:selfkey: | PROVISIONAL | Ethereum | SelfKey | SelfKey DID Method |
did:signor: | PROVISIONAL | Ethereum, Hedera Hashgraph, Quorum, Hyperledger Besu | Cryptonics | Signor DID Method |
did:sirius: | PROVISIONAL | ProximaX Sirius Chain | ProximaX Enterprise, Proximax Inc. | ProximaX SiriusID DID Method |
did:sov: | PROVISIONAL | Sovrin | Mike Lodder | Sovrin DID Method |
did:stack: | PROVISIONAL | Bitcoin | Jude Nelson | Blockstack DID Method |
did:tangle: | PROVISIONAL | IOTA Tangle | BiiLabs Co., Ltd. | TangleID DID Method |
did:trustbloc: | PROVISIONAL | Hyperledger Fabric | SecureKey | TrustBloc DID Method |
did:trx: | PROVISIONAL | TRON | Ontology Foundation | TRON DID Method |
did:ttm: | PROVISIONAL | TMChain | Token.TM | TM DID Method |
did:tyron: | PROVISIONAL | Zilliqa | Julio Cabrapan Duarte | tyronZIL DID-Method |
did:twit: | PROVISIONAL | Twit | DID Twit GitHub | Twit DID Method |
did:tys: | PROVISIONAL | DID Specification | Chainyard | TYS DID Method |
did:tz: | PROVISIONAL | Tezos | Spruce Systems, Inc. | Tezos DID Method |
did:unik: | PROVISIONAL | uns.network | Space Elephant SAS | UNIK DID Method |
did:unisot: | PROVISIONAL | Bitcoin SV | UNISOT AS | UNISOT DID Method |
did:uns: | PROVISIONAL | uns.network | Space Elephant SAS | UNS DID Method |
did:uport: | DEPRECATED | Ethereum | uPort | |
did:v1: | PROVISIONAL | Veres One | Digital Bazaar | Veres One DID Method |
did:vaa: | PROVISIONAL | bif | China Academy of Information and Communications Technology (CAICT) | VAA Method |
did:vaultie: | PROVISIONAL | Ethereum | Vaultie Inc. | Vaultie DID Method |
did:vid: | PROVISIONAL | VP | VP Inc. | VP DID Method |
did:vivid: | PROVISIONAL | NEO2, NEO3, Zilliqa | Vivid | Vivid DID Method |
did:vvo: | PROVISIONAL | Vivvo | Vivvo Application Studios | Vivvo DID Method |
did:web: | PROVISIONAL | Web | Oliver Terbu, Mike Xu, Dmitri Zagidulin, Amy Guy | Web DID Method |
did:wlk: | PROVISIONAL | Weelink Network | Weelink | Weelink DID Method |
did:work: | PROVISIONAL | Hyperledger Fabric | Workday, Inc. | Workday DID Method |
A. References
A.1 Normative references
- [DID-CORE]
- Decentralized Identifiers (DIDs) v1.0. Drummond Reed; Manu Sporny; Markus Sabadello. W3C. 18 March 2021. W3C Candidate Recommendation. URL: https://www.w3.org/TR/did-core/
- [RFC2119]
- Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
- [RFC8174]
- Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc8174
- [RFC8610]
- Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures. H. Birkholz; C. Vigano; C. Bormann. IETF. June 2019. Proposed Standard. URL: https://datatracker.ietf.org/doc/html/rfc8610