-
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
Verifying and Validating issued VC's #379
Comments
Adding this excerpt from the verifier service. We should clarify what is to be part of the coordinator's role vs the service
Defining which checks are part of |
One significant distinction between "verification" and "validation" is that "verification" is expected to be automatable and generically specifiable, and to involve crypto operations at various points. "Validation" might be automatable, but cannot be generically specified, since it is based on the validator's business rules. "Validation" may involve crypto operations, in order to get the properties and/or values which are relevant to the validator's business rules. The verb in all of the "Checking", "Expecting", and "Requiring" bullets should become "Testing", and include "against the validator's acceptable values". Whether something is "expected" or "required" or "checked" is part of the validator's business rules. |
Where would testing the validity date / status sit? While they are automatable and specified, a verifier might still have specific business rules around these tests. I might specifically look for a BitstringStatusList for revocation purpose and disregard other statuses. Maybe I'm only interested if a holder was previously issued a credential and not care if it's expired or not. Would we still agree to test status and expiration through a Taking the univerifier as an example, the verification includes The same way we expect issuer services to be pre-configured with specific issuance options, a verifier would be configured with specific verification options (trust-registries, statuses to test/expect, specific VC features, etc...) |
The group discussed this on the 2024-06-18 telecon: @PatStLouis noted that verification should be around integrity of data and data model. Validation is about A PR should be raised to note which errors verification should return, and note that everything else is a warning about validation. |
The group discussed this on the 2024-08-13 telecon: @PatStLouis noted that we have a /credentials/verify endpoint, which is used to verify credentials. Depending on what needs to be verified, status checking might happen, proof sets, multiple credential states, data model testing, each spec has some sort of validation algorithm section and an error processing section. Processing error, verifying the proof, what steps should happen, some define an object that should be returned about status validation. The VC API has a verify endpoint and a response, but we need to decide how much the response should match what's in the specs. The VC API is what we use to verify implementations of the VCDM v2 specification, and some verification is required. In order to test verification, they need to be exposed somewhere, verification endpoint can do that. Verification is: What is the result of a particular check? Summary:
|
TLDR; how can the vc-api distinct generic verification from verifier specific validations operations on a VC?
A quick glance at the term verify could imply that there is a True of False verified status as an outcome but once you take into account other business rules this is not always the case. To address this it was discussed that there are 2 types of operation a verifier might conduct on a VC: Verification and Validation
Can we agree that the generic action of Verifying a VC would include:
Validating a VC can refer to any validation that is required based on an implementation's business logic layer. Such validations could include:
credentialStatus
,evidence
,renderMethod
, etc...)It would be great to address this in the VC-API. This should be tackled along the task of clarifying what the response from the
/credentials/verify
endpoint is. The 2 following approaches could be defined:Option 1: Include both operations on the
/credentials/verify
endpoint:The verification endpoint of most implementers already check the status/expiration date of VC they verify. I would suggest to keep this pattern but make the distinction more explicit in the response body:
Option 2: Define a new
/credentials/validate
endpoint where verifier specific logic is isolated. This means the/credentials/verify
endpoint would no longer care aboutexpirationDate/credentialStatus
Let's scope this issue to credentials and address presentations in another issue if there's a need for it.
Please correct me on any assumptions made here, I'm only listing these as a starting point for discussions.
The text was updated successfully, but these errors were encountered: