-
Notifications
You must be signed in to change notification settings - Fork 109
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 interoperable way for holder-asserted claims in a VP #1186
Changes from 1 commit
7490cfb
e85b745
93696db
5bf51b2
37c32cb
47a67ef
14fb906
9446c62
bef11ba
56965c2
8eca073
b4e16a6
6d943aa
8590bc1
31dc79c
3c308a4
9dec2f3
9559c36
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -2059,29 +2059,24 @@ <h4>Presentations Including Holder Claims</h4> | |||||
<a>property</a>. | ||||||
</p> | ||||||
<p> | ||||||
A self-asserted <a>verifiable credential</a> that has been included in the value | ||||||
of the <code>verifiableCredential</code> <a>property</a> of a | ||||||
<a>verifiable presentation</a> MUST include the following properties: | ||||||
All of the normative requirements defined for <a>verifiable credentials</a> | ||||||
apply to self-asserted <a>verifiable credentials</a>. Some additional | ||||||
considerations follow: | ||||||
</p> | ||||||
|
||||||
<dl> | ||||||
<dt><var>type</var></dt> | ||||||
<dd> | ||||||
The <code>type</code> <a>property</a> is required. One value MUST be | ||||||
<code>VerifiableCredential</code>, and it is RECOMMENDED that another | ||||||
value be <code>SelfAssertedCredential</code>. Additional types MAY also | ||||||
be included. For example,<br> | ||||||
It is RECOMMENDED that <code>SelfAssertedCredential</code> be included as an | ||||||
additional <code>type</code> value. For example,<br> | ||||||
<code>"type": ["VerifiableCredential", "SelfAssertedCredential", "ExampleTypeCredential"]</code> | ||||||
</dd> | ||||||
<dt><var>issuer</var></dt> | ||||||
<dd> | ||||||
The <code>issuer</code> <a>property</a> is required. For self-asserted | ||||||
<a>verifiable credentials</a> that are secured using the same mechanism as the | ||||||
<a>verifiable presentation</a>, the value MUST be identical to the | ||||||
<code>holder</code> <a>property</a> of the <a>verifiable presentation</a>. | ||||||
Self-asserted <a>verifiable credentials</a> that use their own securing | ||||||
mechanism MUST follow the normative guidance for the <code>issuer</code> | ||||||
<a>property</a> in Section <a href="#issuer"></a>. | ||||||
For self-asserted <a>verifiable credentials</a> that are secured using the same | ||||||
mechanism as the <a>verifiable presentation</a>, the value of the | ||||||
<code>issuer</code> <a>property</a> MUST be identical to the <code>holder</code> | ||||||
<a>property</a> of the <a>verifiable presentation</a>. | ||||||
brentzundel marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
</dd> | ||||||
</dl> | ||||||
<p> | ||||||
|
@@ -2108,6 +2103,35 @@ <h4>Presentations Including Holder Claims</h4> | |||||
{ <span class="comment">...</span> } | ||||||
}], | ||||||
"proof": [{ <span class="comment">...</span> }]</span> | ||||||
OR13 marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
} | ||||||
</pre> | ||||||
<p> | ||||||
The example below shows a <a>verifiable presentation</a> that embeds a | ||||||
self-asserted <a>verifiable credential</a> that holds <a>claims</a> about the | ||||||
<a>verifiable presentation</a>. It is secured using the same mechanism as the | ||||||
<a>verifiable presentation</a>. | ||||||
</p> | ||||||
|
||||||
<pre class="example nohighlight" title="Verifiable presentation with a self-asserted verifiable credential about the verifiable presentation"> | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. for consistency with https://github.com/w3c/vc-data-model/pull/1186/files#r1264100438 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @msporny as an aside, I suspect your PR to fix Basically replacing Maybe we can be clever and do that once in terms, and not have to be so verbose everywhere.... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
That happened long ago... during v1.0... :) I'll see if we can be clever wrt. terminology, as you mention above... but at this point, I'm leaning toward NOT making the change (as it sounds like it's going to be a lot of trouble, and result in a confusing outcome for readers). There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't see how we can avoid fixing it, given what it currently normatively states: It makes the interpretation of The reader learns that embedded or external proof is required for There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. changed in 8590bc1 |
||||||
{ | ||||||
"@context": [ | ||||||
"https://www.w3.org/ns/credentials/v2", | ||||||
"https://www.w3.org/ns/credentials/examples/v2" | ||||||
], | ||||||
"type": ["VerifiablePresentation", "ExamplePresentation"], | ||||||
<span class="highlight">"id": "http://example.com/presentation/5223"</span>, | ||||||
brentzundel marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
"holder": "did:example:12345678", | ||||||
"verifiableCredential": [{ | ||||||
"@context": "https://www.w3.org/ns/credentials/v2", | ||||||
"type": ["VerifiableCredential", "ExampleTimeLimitCredential"], | ||||||
"issuer": "did:example:12345678", | ||||||
"credentialSubject": { | ||||||
<span class="highlight">"id": "http://example.com/presentation/5223"</span>, | ||||||
brentzundel marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
"validUntil": "2024-01-01T19:23:24Z" | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Huh... this is valid, and proposes the question: Why not just put IOW, do we want to enable This comment is non-blocking. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @msporny I think you're probably right, but I don't want that conversation to derail this PR. I think a better example is probably be what's needed here. This example came out of my attempt to address @jandrieu 's desire for a normative way for a holder to make claims about the VP. As I constructed the self-asserted VC, I had a hard time coming up with a claim the holder would want to make about the VP. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Agreed, we don't want to derail this PR with trying to find the perfect example. I defer to @jandrieu to suggest a use case. I'll try to think of a use case (with markup) as well (for a future PR). There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I've updated the example based on Joe's comment here: https://github.com/w3c/vc-data-model/pull/1186/files#r1268305835 |
||||||
}, | ||||||
{ <span class="comment">...</span> } | ||||||
}], | ||||||
"proof": [{ <span class="comment">...</span> }]</span> | ||||||
} | ||||||
</pre> | ||||||
</section> | ||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with @selfissued and @dlongley that this is not necessary. You can just check to see if the key used to sign a VC belongs to the holder. For Data Integrity, you check to see if the
proof.verificationMethod
is associated withholder
using the algorithm defined in https://w3c.github.io/vc-data-integrity/#retrieve-verification-method. I expect VC COSE JOSE would define the same sort of mapping. IOW, just because someone asserts this, doesn't mean it's true, you need to verify it... and if only a subset of the ecosystem is doing it, you can't really count on it as a dependable mechansim.This feedback is non-blocking, just thinking out loud.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This describes "Verifiable Presentations" as a whole... And I agree... its not very helpful.
We seem to have to do a lot of work for "holder" and "VerifiablePresentation"... when they are really just special cases of "issuer" and "VerifiableCredential"....
I continue to assert there is a better solution to this, but I don't think we can turn this boat at this point.