In thinking about how OA might be used to verify generic W3C VCs, I'm trying to be sure that I fully understand OA's verification process. It seems to be a little awkward for DID-signed docs, and I think this needs to be understood to tackle generic w3c VCs.
First let me briefly explain how I think OA's verification works:
OA has a neat feature of different "verification types": (DOCUMENT_INTEGRITY, DOCUMENT_STATUS, ISSUER_IDENTITY).
Checking all these ensures that (copied from the README of oa-verify):
1. The document has NOT been tampered, AND
2. The document has been issued, AND
3. The document has NOT been revoked, AND
4. The issuer identity is valid.
Looking at oa-verify code, it seems to me that 1. maps to DOCUMENT_INTEGRITY,, 2. and 3. to DOCUMENT_STATUS, and 4. maps to ISSUER_IDENTITY.
For document store issued OA docs, this all makes perfect sense: DOCUMENT_INTEGRITY means the hash of the doc is accurate, DOCUMENT_STATUS means it's been issued to the store by the included ethereum ID, and ISSUER_IDENTITY means that the issuer's website claims to control that ethereum ID. There are two IDs here: the ethereum ID, and the issuer's domain.
However for did-signed docs, the match seems awkward. This is because there's really only one ID: the "did" of the issuer
For did-signed docs, there are currently has two seperate signature checks:
openAttestationDidSignedDocumentStatus checks the signature and for revocation and validates DOCUMENT_STATUS
openAttestationDidIdentityProof does the signature check again and validates ISSUER_IDENTITY
In the tests, both checks are included to make did-signed docs verify.
The question:
If I'm correct with the above, is there a reason for having openAttestationDidIdentityProof apart from helping tests pass?
The only use case I can see is to allow a verifier to check for ISSUER_IDENTIY in general but ignore it for did-signed documents. But my feeling is that if a verifier cares about ISSUER_IDENTITY at all, they shouldn't be verifying did-signed documents unless they're signed by a known, whitelisted ethereum ID. And in that case shouldn't they write they're own openAttestationIdentityProof check that matches the issuer against their whitelist?
In any case, if anyone is able to confirm that I'm on the right track with the above, I would like to raise an issue and eventually raise a PR for applying these to generic W3C VCs,
In thinking about how OA might be used to verify generic W3C VCs, I'm trying to be sure that I fully understand OA's verification process. It seems to be a little awkward for DID-signed docs, and I think this needs to be understood to tackle generic w3c VCs.
First let me briefly explain how I think OA's verification works:
OA has a neat feature of different "verification types": (DOCUMENT_INTEGRITY, DOCUMENT_STATUS, ISSUER_IDENTITY).
Checking all these ensures that (copied from the README of oa-verify):
Looking at oa-verify code, it seems to me that 1. maps to DOCUMENT_INTEGRITY,, 2. and 3. to DOCUMENT_STATUS, and 4. maps to ISSUER_IDENTITY.
For document store issued OA docs, this all makes perfect sense: DOCUMENT_INTEGRITY means the hash of the doc is accurate, DOCUMENT_STATUS means it's been issued to the store by the included ethereum ID, and ISSUER_IDENTITY means that the issuer's website claims to control that ethereum ID. There are two IDs here: the ethereum ID, and the issuer's domain.
However for did-signed docs, the match seems awkward. This is because there's really only one ID: the "did" of the issuer
For did-signed docs, there are currently has two seperate signature checks:
openAttestationDidSignedDocumentStatuschecks the signature and for revocation and validates DOCUMENT_STATUSopenAttestationDidIdentityProofdoes the signature check again and validates ISSUER_IDENTITYIn the tests, both checks are included to make did-signed docs verify.
The question:
If I'm correct with the above, is there a reason for having
openAttestationDidIdentityProofapart from helping tests pass?The only use case I can see is to allow a verifier to check for ISSUER_IDENTIY in general but ignore it for did-signed documents. But my feeling is that if a verifier cares about ISSUER_IDENTITY at all, they shouldn't be verifying did-signed documents unless they're signed by a known, whitelisted ethereum ID. And in that case shouldn't they write they're own
openAttestationIdentityProofcheck that matches the issuer against their whitelist?In any case, if anyone is able to confirm that I'm on the right track with the above, I would like to raise an issue and eventually raise a PR for applying these to generic W3C VCs,