These instructions will help developers create DIDs on cheqd using the DID Registrar.
{% embed url="https://www.youtube.com/watch?v=cLrgO5IY8P8" %}
- Any framework for creating keys and signing payloads, such as Veramo CLI;
- cheqd DID Registrar
- 5 minutes!
Figure 1: Swagger UI for DID Registrar
This tutorial will be using the Veramo CLI for Key management. Setup the cli following this tutorial
Enter the below command in the cli
veramo execute -m keyManagerCreate --argsJSON '{ "type": "Ed25519", "kms": "local" }'
Example Output
{
"type": "Ed25519",
"kid": "d2ce308f19ee116ee810956605632ccd024bad8dedd02baf49f248d03acdaa48",
"publicKeyHex": "d2ce308f19ee116ee810956605632ccd024bad8dedd02baf49f248d03acdaa48",
"meta": {
"algorithms": [
"Ed25519",
"EdDSA"
]
},
"kms": "local"
}
Note down the kid
and publicKeyHex
values of the generated key
Go to "cheqd helpers" in our Registrar Driver here and click "try it out" in the top right corner.
Select the following options:
- Select VerificationMethodType
- Select MethodSpecificAlgo
- Select network
- Enter the publicKeyHex value generated in the previous step
Figure 2: Creating a DID payload from template
Response
{
"didDoc": {
"id": "did:cheqd:testnet:d4d4404b-6f7f-4e02-8d41-b81afb1f05ed",
"controller": [
"did:cheqd:testnet:d4d4404b-6f7f-4e02-8d41-b81afb1f05ed"
],
"verificationMethod": [
{
"id": "did:cheqd:testnet:d4d4404b-6f7f-4e02-8d41-b81afb1f05ed#key-1",
"type": "Ed25519VerificationKey2020",
"controller": "did:cheqd:testnet:d4d4404b-6f7f-4e02-8d41-b81afb1f05ed",
"publicKeyMultibase": "z6MkteA1x9gEkJbYTe8myArT39Q5gZBmLPqsqJLeM3htytCo"
}
],
"authentication": [
"did:cheqd:testnet:d4d4404b-6f7f-4e02-8d41-b81afb1f05ed#key-1"
]
},
"key": {
"verificationMethodId": "did:cheqd:testnet:d4d4404b-6f7f-4e02-8d41-b81afb1f05ed#key-1",
"publicKeyHex": "d2ce308f19ee116ee810956605632ccd024bad8dedd02baf49f248d03acdaa48"
}
}
Copy the didDoc
field from the output.
Use /create
to publish the DID
-
Paste the contents of
didDoc
from the previous step in thedidDocument
field of the/create
api body -
Click on execute to perform the request
This response requests an
action
for you to sign the serialized payload again in a CLI. This is a security feature which means you are not passing your private key to the Registrar. Note down the serialized payload, jobId from the response
Sign the serialized payload in your CLI with the below command
veramo execute -m keyManagerSign
Fill in the prompts
- keyRef: Enter the kid of the keyPair generated in the first step
- algorithm:
Ed25519
- data to sign: Paste the serialized payload from the previous step
- enconding: Select
base64
Example Response
Arguments: {
"keyRef": "d2ce308f19ee116ee810956605632ccd024bad8dedd02baf49f248d03acdaa48",
"algorithm": "Ed25519",
"data": "EjZkaWQ6Y2hlcWQ6dGVzdG5ldDpkNGQ0NDA0Yi02ZjdmLTRlMDItOGQ0MS1iODFhZmIxZjA1ZWQaNmRpZDpjaGVxZDp0ZXN0bmV0OmQ0ZDQ0MDRiLTZmN2YtNGUwMi04ZDQxLWI4MWFmYjFmMDVlZCLEAQo8ZGlkOmNoZXFkOnRlc3RuZXQ6ZDRkNDQwNGItNmY3Zi00ZTAyLThkNDEtYjgxYWZiMWYwNWVkI2tleS0xEhpFZDI1NTE5VmVyaWZpY2F0aW9uS2V5MjAyMBo2ZGlkOmNoZXFkOnRlc3RuZXQ6ZDRkNDQwNGItNmY3Zi00ZTAyLThkNDEtYjgxYWZiMWYwNWVkIjB6Nk1rdGVBMXg5Z0VrSmJZVGU4bXlBclQzOVE1Z1pCbUxQcXNxSkxlTTNodHl0Q28qPGRpZDpjaGVxZDp0ZXN0bmV0OmQ0ZDQ0MDRiLTZmN2YtNGUwMi04ZDQxLWI4MWFmYjFmMDVlZCNrZXktMWIkMjQ3MGZlOWEtMTQ3Ny00M2E0LTk1ZWYtZDg2ZTYxZTA1NWJi",
"encoding": "base64"
}
Result : "1ubhK2CRWfB4AsqzsxVeoVwZ2yb7OpNMOe7assJXhnitoPkClm5ZFjT9zV7s6OETMKSVsUtFwIp4XCoj2xl4Bw"
NOTE: If there are n verification methods for the controller then n signatures are required to publish a DID.
Copy the Result value from the response.
Use the /create
api again
- Create the payload using the following values
- jobId
- secret
- signingResponse
- verificationMethodId
- signature
- signingResponse
- Click on Execute
- The state in didState should be
finished
in the response, the DID is created successfully
You can check your DID on the universal resolver or by going to https://resolver.cheqd.net/1.0/identifiers/{yourDID}