You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a holder sends a verifiable presentation to a verifier's presentation service, several actions and responses are expected in the verification process. Here’s a structured overview of what typically happens:
Expected Actions by the Verifier
Receive the Presentation:
The verifier's service receives the verifiable presentation, usually as a JSON object.
Validate the Presentation Structure:
Check that the presentation conforms to the expected schema (e.g., the presence of necessary fields like @context, type, holder, verifiableCredential, and proof).
Verify the Signature:
Extract the proof from the presentation.
Retrieve the public key associated with the holder's DID to verify the signature on the presentation.
Use the public key to confirm that the signature in the proof matches the hash of the data in the presentation.
Verify Each Credential:
Iterate over each verifiable credential included in the presentation.
For each credential:
Check its validity, including verifying its signature using the issuer's public key.
Ensure the credential has not expired (if applicable) by checking the expirationDate.
Confirm that it is still valid by checking revocation status (if revocation is supported).
Check Contextual Information:
Validate that the context (@context) and types in the presentation and credentials align with expected schemas and standards (e.g., W3C Verifiable Credentials).
Access Control Checks:
Determine if the holder has the necessary permissions to present the credentials based on the verifier's policy.
Log the Verification Process:
Maintain a log of the verification process for auditing and tracking purposes.
Expected Responses from the Verifier
Success Response:
If the presentation and credentials are valid:
HTTP Status: 200 OK
Body: A success message indicating that the verification was successful, often including a confirmation of the presented claims.
Example:
{
"status": "success",
"message": "Presentation verified successfully."
}
Partial Success Response:
If some credentials are valid but others are not:
HTTP Status: 207 Multi-Status (or similar, depending on your implementation)
Body: Details about which credentials were verified successfully and which were not, along with reasons for the failures.
Example:
{
"status": "partial_success",
"verifiedCredentials": [
{"id": "credential-1", "status": "verified"},
{"id": "credential-2", "status": "invalid", "reason": "Expired"}
]
}
Failure Response:
If the presentation fails verification:
HTTP Status: 400 Bad Request or 403 Forbidden (depending on the nature of the failure)
Body: An error message detailing the reason for the failure (e.g., invalid signature, missing fields, revoked credentials).
Example:
{
"status": "error",
"message": "Invalid presentation: Signature verification failed."
}
Unauthorized Response:
If the holder does not have permission to present certain credentials:
HTTP Status: 401 Unauthorized
Body: An error message indicating that access is denied.
Example:
{
"status": "error",
"message": "Unauthorized to present the requested credentials."
}
Conclusion
The verifier's actions and responses should be clear, informative, and secure, ensuring that both the holder and the verifier are aware of the verification status and any issues that may arise. By following these expected actions and responses, the integrity of the verification process can be maintained.
The text was updated successfully, but these errors were encountered:
When a holder sends a verifiable presentation to a verifier's presentation service, several actions and responses are expected in the verification process. Here’s a structured overview of what typically happens:
Expected Actions by the Verifier
Receive the Presentation:
The verifier's service receives the verifiable presentation, usually as a JSON object.
Validate the Presentation Structure:
Check that the presentation conforms to the expected schema (e.g., the presence of necessary fields like @context, type, holder, verifiableCredential, and proof).
Verify the Signature:
Extract the proof from the presentation.
Retrieve the public key associated with the holder's DID to verify the signature on the presentation.
Use the public key to confirm that the signature in the proof matches the hash of the data in the presentation.
Verify Each Credential:
Iterate over each verifiable credential included in the presentation.
For each credential:
Check its validity, including verifying its signature using the issuer's public key.
Ensure the credential has not expired (if applicable) by checking the expirationDate.
Confirm that it is still valid by checking revocation status (if revocation is supported).
Check Contextual Information:
Validate that the context (@context) and types in the presentation and credentials align with expected schemas and standards (e.g., W3C Verifiable Credentials).
Access Control Checks:
Determine if the holder has the necessary permissions to present the credentials based on the verifier's policy.
Log the Verification Process:
Maintain a log of the verification process for auditing and tracking purposes.
Expected Responses from the Verifier
Success Response:
If the presentation and credentials are valid:
HTTP Status: 200 OK
Body: A success message indicating that the verification was successful, often including a confirmation of the presented claims.
Example:
{
"status": "success",
"message": "Presentation verified successfully."
}
Partial Success Response:
If some credentials are valid but others are not:
HTTP Status: 207 Multi-Status (or similar, depending on your implementation)
Body: Details about which credentials were verified successfully and which were not, along with reasons for the failures.
Example:
{
"status": "partial_success",
"verifiedCredentials": [
{"id": "credential-1", "status": "verified"},
{"id": "credential-2", "status": "invalid", "reason": "Expired"}
]
}
Failure Response:
If the presentation fails verification:
HTTP Status: 400 Bad Request or 403 Forbidden (depending on the nature of the failure)
Body: An error message detailing the reason for the failure (e.g., invalid signature, missing fields, revoked credentials).
Example:
{
"status": "error",
"message": "Invalid presentation: Signature verification failed."
}
Unauthorized Response:
If the holder does not have permission to present certain credentials:
HTTP Status: 401 Unauthorized
Body: An error message indicating that access is denied.
Example:
{
"status": "error",
"message": "Unauthorized to present the requested credentials."
}
Conclusion
The verifier's actions and responses should be clear, informative, and secure, ensuring that both the holder and the verifier are aware of the verification status and any issues that may arise. By following these expected actions and responses, the integrity of the verification process can be maintained.
The text was updated successfully, but these errors were encountered: