Open swcurran opened 8 months ago
Thanks all for the AnonCreds meeting today (agenda, recording) meeting today (presentation, HackMD Document). The following is the summary of the changes that are to be made:
Over to you, @Artemkaaas and team to complete.
Thanks!
@swcurran I open PR in anoncreds-rs
repository to follow the new design: https://github.com/hyperledger/anoncreds-rs/pull/291
Thanks! @andrewwhitehead @TimoGlastra @gvelez17 FYI.
@swcurran According to the vc-data-integrity spec proofPurpose
and verificationMethod
are required properties, but they are omitted in your design.
@Artemkaaas The vc-data-integrity specification is leading. But it's a bit weird, as the verificationMethod needs to point to a verificationMethod object, but with AnonCreds you don't really have a verificationMethod, you have a cred def id. Can we use the credentialDefinitionId as the verification method? It's an URI, and it would add some context to the credential around which credentialDefinitionId is used
For proofPurpose
we can (for now) use assertionMethod
. OK as that is generally what Proofs are used for, but limiting if not controlled by the end user. Let’s do that for the short term and add an open issue for putting it in.
I really like @TimoGlastra ’s suggestion about putting in the cred_def_id, as it aligns with the purpose of the Verification Method — a reference to the public key (and in the case of a Cred Def — a bit more). That definitely works for me.
cred_def_id
suites for anoncredsvc-2023
and anoncredspresvc-2023
proofs but not for anoncredspresvp-2023
as it may contain multiple credentials.
That’s a tough one. There is nothing obvious to use. The proof is there to prove holder binding via the link secret across all verifiable credentials. The holder is proving that they know the link secret that is blinded in each of the source VCs. I think we should (arbitrarily) pick one of the CredDefIds and use it. We are using that URL — and others, admittedly — so it’s not wrong, just incomplete. @Artemkaaas — to get something in place, I suggest we go with that. I can puruse the issue with Manu, et al. in the Data Integrity community to see if there is other guidance.
In looking at the latest question, I looked a little more at proofPurpose
. Per this, section 7.2, item 3.1.2 in the VCDM, the value should be assertionMethod
for a VC and authentication
for a VP.
So @Artemkaaas, please adjust the VP hard-coded values to those.
Hey @swcurran what's the status on this issue?
I noticed the PR is merged: https://github.com/hyperledger/anoncreds-rs/pull/291, also noticed that RFC0809 implies that the anoncreds w3c data model has switched to use DataIntegrityProofs: https://github.com/hyperledger/aries-rfcs/blob/main/features/0809-w3c-data-integrity-credential-attachment/README.md#binding-in-credential
Does the anoncreds spec example need to be updated in relation to this? it still uses the new @context
/type
: https://hyperledger.github.io/anoncreds-spec/#w3c-verifiable-credentials-representation
cheers!
We've been digging into this issue for the last couple of weeks. I've created this document[1] that has lots of details/rationale about the approach, with only a few questions. I have one fundamental question to ask, and provide a <tl;dr> below of the document.
[1] https://hackmd.io/@BYJVN-mpSCe5H3eaIw7-7g/ryk4dvIIp
Fundamental question: To use the
proof.type
of "DataIntegrityProof" with a namedcryptosuite
, I believe we have to use W3C VC v2.0 -- is that correct?<tl;dr> of the document content about what we should do:
It is a good idea to at least eliminate the VC AnonCreds
@context
array. To do so:cryptosuite
ofAnonCreds2023
. - Question: Does that require converting to the W3C VC 2.0 Data Model? - If so, theIssueanceDate
needs to be changed tovalidFrom
@context
from a VC issued with an AnonCreds proof.CredentialSchema
andCredentialStatus
items from the VC.proofvalue
of the AnonCreds2023 Data Integrity Proof -- at the cost of developer usefulness.It is not strictly required for also eliminating the AnonCreds
@context
array entry in the VP -- details in the doc on the rationale. However, if we do want to eliminate it:cryptosuite
ofAnonCredsCredentialPresentationProof2023
.cryptosuite
ofAnonCredsPresentation2023
.credentialSubject
item for a predicate with a string. Ugly, but possible.