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

Enable Pass Through of BBS Presentation header #129

Merged
merged 7 commits into from
Feb 9, 2024

Conversation

Wind4Greg
Copy link
Collaborator

@Wind4Greg Wind4Greg commented Jan 13, 2024

This PR addresses issue #122 to enable the passing through of the BBS presentation header. This would be used between a holder and a verifier.

See the BBS draft specification section 6.4. Presentation Header Selection where use is RECOMMENDED in most use-cases. Useful for such things as preventing replay attacks, etc...


Preview | Diff

@dwaite
Copy link

dwaite commented Jan 13, 2024

Where does presentationHeader come from? I would have thought it would be e.g. the RDF canonicalized version of the BBS Cryptosuite proof graph, sans proofValue.

Copy link
Contributor

@dlongley dlongley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! See a couple of minor suggestions.

index.html Outdated Show resolved Hide resolved
`nonMandatory` to the values associated with their property
names in the object returned when calling the algorithm in Section
Initialize `bbsProof`, `proofHash`, `mandatoryHash`, `selectedIndexes`,
`presentationHeader` and `nonMandatory` to the values associated with their
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if we need a note that says that implementations can surface the presentationHeader for external use if desired (perhaps to compare a challenge or something like that in a protocol that uses the VCDM). Nothing in the spec text prevents them from doing so, but it might be helpful to have a note like this:

Note: Implementations are free to expose any component parsed from the proof data for external use or to compare them internally against externally provided values based on protocol needs. For example, an implementation might expose presentationHeader for comparison against an expected pseudo-random challenge value used in a presentation protocol.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dlongley I'm thinking we put this as an informational note at the end of section 3.3.7 Verify Derived Proof (bbs-2023). Other ideas?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Wind4Greg, that sounds good.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Normative, multiple reviews, changes requested and made, no objections, merging.

@dlongley
Copy link
Contributor

dlongley commented Jan 13, 2024

@dwaite,

Where does presentationHeader come from? I would have thought it would be e.g. the RDF canonicalized version of the BBS Cryptosuite proof graph, sans proofValue.

A hash of the canonicalized proof graph (sans proofValue) is in the BBS header -- which is not the same as the presentation header. The presentation header is a value that the presenter (aka holder / prover) can provide for a particular derived proof. This is can be used in presentation protocols to hold nonces or challenges -- or any other sort of external information that might be useful for a protocol to require be included in the proof.

@dwaite
Copy link

dwaite commented Jan 13, 2024

@dwaite,

Where does presentationHeader come from? I would have thought it would be e.g. the RDF canonicalized version of the BBS Cryptosuite proof graph, sans proofValue.

A hash of the canonicalized proof graph (sans proofValue) is in the BBS header -- which is not the same as the presentation header. The presentation header is a value that the presenter (aka holder / prover) can provide for a particular derived proof. This is can be used in presentation protocols to hold nonces or challenges -- or any other sort of external information that might be useful for a protocol to require be included in the proof.

Ahh apologies, I may have misunderstood. Is it then correct that there is no BBS Cryptosuite-based verifiable presentation holding the derived credential? Instead then, the expectation is that there is some interoperable protocol which is exchanging derived credentials, and that protocol will define the contents of presentationHeader

@dlongley
Copy link
Contributor

dlongley commented Jan 14, 2024

@dwaite,

Ahh apologies, I may have misunderstood. Is it then correct that there is no BBS Cryptosuite-based verifiable presentation holding the derived credential? Instead then, the expectation is that there is some interoperable protocol which is exchanging derived credentials, and that protocol will define the contents of presentationHeader

It's still possible for someone to use a VP that contains a VC with a BBS-derived proof. The goal here is just to enable use of the presentationHeader in derived proofs so the feature is available for higher level / protocol level specs to make use of (i.e., a goal is to ensure this spec is not overly prescriptive / limiting).

index.html Outdated Show resolved Hide resolved
index.html Outdated Show resolved Hide resolved
index.html Outdated Show resolved Hide resolved
index.html Outdated Show resolved Hide resolved
index.html Outdated Show resolved Hide resolved
@TallTed
Copy link
Member

TallTed commented Feb 5, 2024

Probably better to resolve merge conflicts before I re-review

index.html Outdated Show resolved Hide resolved
index.html Outdated Show resolved Hide resolved
index.html Outdated Show resolved Hide resolved
index.html Outdated Show resolved Hide resolved
index.html Outdated Show resolved Hide resolved
…d formatting improvements for variable names.

Co-authored-by: Ted Thibodeau Jr <[email protected]>
@Wind4Greg
Copy link
Collaborator Author

Normative, multiple reviews, changes requested and made, no objections, merging.

@Wind4Greg Wind4Greg merged commit cbb428c into w3c:main Feb 9, 2024
1 of 2 checks passed
@Wind4Greg Wind4Greg deleted the presentationHeader branch February 9, 2024 19:02
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

Successfully merging this pull request may close these issues.

5 participants