Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add "proof" property in DID Document Metadata #469

Open
thobson88 opened this issue Oct 14, 2022 · 0 comments
Open

Add "proof" property in DID Document Metadata #469

thobson88 opened this issue Oct 14, 2022 · 0 comments

Comments

@thobson88
Copy link

We're building a network of DIDs and are looking to include the controller proof (JWS) as part of the DID Document Metadata.

Previous discussions (here, here and here) rightly concluded that such proofs do not belong in the DID Document itself, and the property was removed from DID core in PR #305.

However, while it was also agreed that the proper place for controller proofs is in the DID Document Metadata, this is currently not supported.

We therefore propose adding a proof property in the DID Document Metadata.

Our aim is to be consistent with the VC data model (and aligned with the outcomes of the working group). Using a snippet from the current VC documentation we've arrived at the following example of Document Metadata containing a controller proof:

{
  "proof": {
    "type": "JsonWebSignature2020",
    "id": "did:ion:test:EiAwnxk01PDoERb--VTEHkPMNXXxxNUqCf4s0iv0k6Ngag",
    "proofValue": "eyJhbGciOiJFUzI1NksifQ.IkVpRGNQWjNyMXFrMmF1RG1PRzdkWmE5LWNNNm5GQzhYRGZ0LUhRaUxudVkzeUEi.sT392TkLZ_u-xNF7u7kropwNZMPCZF5JXcp2sXeprjEpfwWeEIcWlatMnr2aZbaMdAamYrY8C4D4ixSgeZ8JUQ"
  },
  "canonicalId": "did:ion:test:EiA8yZGuDKbcnmPRs9ywaCsoE2FT9HMuyD9WmOiQasxBBg",
  "method": {
    "updateCommitment": "EiDcxLyK0QlEwgEVMBTd6YATquaxRLUozaRnVm3kbKbv7g",
    "published": true,
    "recoveryCommitment": "EiAInhzWGQqBGh8fpQKKdy1xck_Rhs8OvCb65y-D9mqxwQ"
  }
}

In this example the proof property has three sub-properties:

  • type: the type of cryptographic signature
  • id: an identifier (the DID) of the signing party (controller)
  • proofValue: the actual signature, where the message being signed is the hash digest of the resolved (and canonicalized) DID Document. The signature is verifiable using a public key obtained by resolving the DID given in the id field.

An optional verificationMethod property could also be included to specify the id of an assertionMethod inside the signer's DID Document, to make it easier to locate the correct key for verification.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant