Skip to content
This repository was archived by the owner on Oct 1, 2025. It is now read-only.
This repository was archived by the owner on Oct 1, 2025. It is now read-only.

Verification of DID-signed OAv3 docs and openAttestationDidIdentityProof #230

Description

@morgatron

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,

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions