-
Notifications
You must be signed in to change notification settings - Fork 47
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
BbsBls sig test fixtures (valid by various W3C docs) not permitted by current OpenAPI spec #194
Comments
The group discussed this on the 2022-04-12 telecon. Someone needs to take an action to look at this and ensure we support the new Data Integrity work, the legacy jws work, and the new VC-JWT work. |
We discussed alternative proof formats on the 2022-12-06 telecon: @PatStLouis started by explaining that they are doing work w/ customers that want to issue VCs and be compliant with W3C. Solutions are being assessed, want to see how they can use standards in W3C space, given that information, two tests suites -- vc test suite (older test suite run from command line), 2nd test suite (leverage VC Issuer and Verifier test suites). Their solution is exclusive to VC-JWT, there are tests for JWTs, different from rest of tests. Current test suite has command line params -- decode input, JWT w/o JWS, specify audience for presentation. Regarding VC API - not much available on JWT, in order of importance, three questions:
@dlongley noted that it should be whatever is standard in the spec, specific implementation behaviour should be done in issuer instance you're hitting. Throughout lifetime of API, too many options into issue endpoint where we end up having service be a "jack of all trades" -- all combinations need to be supported by one endpoint, probably not possible in every case. It's been much simpler design to have specific types of things to issue, specific settings, generate an issuer instance that is bound to those options and use those as the endpoint. Client has JWT or some different data, it should know which instance to send it to rather than sending it to a single endpoint with an option and try to make that work with the other possibilities. @PatStLouis noted that he figured that was what we meant -- would it make sense to have pre-configured options discoverable, like a GET request on pre-configured options. @dlongley said yes, hitting a configuration instance gets a configuration -- but concerned about more general discovery mechanism. Much of this is probably going to be configured and used out of band rather than being dynamically discoverable. @PatStLouis and @dlongley agreed that it didn't make sense to do dynamic configuration discovery in production. @PatStLouis asked "what if there was a solution that requires additional input?" -- for audience, solution wants there to be audience as a parameter for JWT, how would you do that? @dlongley asked for verification? @manu noted that the design we currently have enables an endpoint to be configured to take arbitrary input for the credential and provide arbitrary output for the secured credential. There were people in the group initially that wanted us to focus on VCs and Data Integrity, but have since stopped participating, so we could open up the aperature a bit to work on other credential types -- that said, it's dangerous to do that and we could end up trying to boil the ocean. However, with VC-JWTs specifically, it would be fairly straightforward to take a credential in as input, specify JWT-specific options in
@PatStLouis noted it's forseeable to have something that would output a VC-JWT. @msporny agreed. The only change that would be required is a
@msporny noted that you can't map from one to the other... a JWT does not allow for that sort of mapping. It is possible to map a Data Integrity proof to different carriers (like YAML or CBOR), but not to/from a JWT, which doesn't perform a canonicalization step, which means that you can't transform the base64 message in any way.
The plan moving forward is to transform the old VCDM 1.0 and 1.1 tests to use the VC API issue/verify endpoints to test to see if a valid data model is being produced. To progress the issue related to what securing mechanisms are allowed, and which ones are not, individuals seeking other securing mechanisms will need to put in the effort to implement extensions, such as VC-JWT, against the specification. |
The group discussed this topic again on the 2023-06-20 telecon: It was noted that things have moved on from where the issue was a while ago. Namely, we now have endpoint instances, which enable us to have different proof formats and could theoretically issue any Data Integrity Proof format, or AnonCredsv1, or VC-JWT, or SD-JWT, or mdoc, or any other related digital credential format. @PatStLouis noted that testing could be a concern as that might balloon the number of tests we have to write. There was a question from GregB about how much of this comes under media type selection / content negotiation. For example, if someone makes a call to /credentials/issue and requests The VC API components need to be updated to match the latest Data Integrity work in the VCWG. Specifically, this file needs to be updated: https://github.com/w3c-ccg/vc-api/blob/main/components/LinkedDataProof.yml (and anything that integrates with it). If implementers would like to see other securing formats supported by the API, the group asks that issues be raised for the specific securing format and details on how they would be implemented be included in the issue. |
The group discussed this on 2023-12-05 and noted that we just need to align w/ work at W3C VCWG. |
PR #358 has been merged, closing. |
LinkedDataProof specifies only a proof accepting
jws
as the signature https://github.com/w3c-ccg/vc-http-api/blob/main/docs/components/LinkedDataProof.yml :but the various test fixtures allow for other schemas, e.g. case-18.json https://github.com/w3c-ccg/vc-http-api/blob/main/packages/vc-http-api-test-server/__fixtures__/verifiableCredentials/case-18.json :
case-19.json (values truncated for brevity) https://github.com/w3c-ccg/vc-http-api/blob/main/packages/vc-http-api-test-server/__fixtures__/verifiableCredentials/case-19.json :
The text was updated successfully, but these errors were encountered: