Skip to content
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

docs: update UNTP Verifiable Credentials testing documentation #231

Open
wants to merge 2 commits into
base: next
Choose a base branch
from

Conversation

ldhyen99
Copy link
Collaborator

@ldhyen99 ldhyen99 commented Mar 5, 2025

What type of PR is this? (check all applicable)

  • πŸ• Feature
  • πŸ› Bug Fix
  • πŸ“ Documentation Update
  • 🎨 Style
  • πŸ§‘β€πŸ’» Code Refactor
  • πŸ”₯ Performance Improvements
  • βœ… Test
  • πŸ€– Build
  • πŸ” CI
  • πŸ“¦ Chore (Release)
  • ⏩ Revert

Description

Related Tickets & Documents

https://github.com/gs-gs/fa-ag-trace/issues/910

Mobile & Desktop Screenshots/Recordings

Added tests?

  • πŸ‘ yes
  • πŸ™… no, because they aren't needed
  • πŸ™‹ no, because I need help

Added to documentation?

  • πŸ“– Mock App docs site
  • πŸ“œ README.md
  • πŸ“• storybook
  • πŸ™… no documentation needed

[optional] Are there any post-deployment tasks we need to perform?

@ldhyen99 ldhyen99 changed the title docs: update UNTP Verifiable Credentials testing documentation to ref… docs: update UNTP Verifiable Credentials testing documentation Mar 5, 2025
Copy link

github-actions bot commented Mar 5, 2025

Code Coverage Report

Lines Statements Branches Functions
Coverage: 82%
81.79% (3572/4367) 69.1% (859/1243) 73.54% (417/567)
Title Lines Statements Branches Functions
All packages Coverage: 82%
81.79% (3572/4367) 69.1% (859/1243) 73.54% (417/567)
Components Coverage: 84%
84.03% (516/614) 69.36% (120/173) 77.23% (95/123)
Mock app Coverage: 71%
71.95% (372/517) 53.23% (74/139) 68.14% (77/113)
Services Coverage: 81%
79.29% (1038/1309) 64.88% (255/393) 75.71% (106/140)
UNTP test suite Coverage: 85%
85.75% (1090/1271) 81.35% (144/177) 67.21% (41/61)
VC test suite Coverage: 100%
100% (20/20) 100% (2/2) 100% (4/4)
UNTP Playground Coverage: 87%
84.92% (569/670) 73.68% (266/361) 75.38% (98/130)

Copy link
Contributor

@absoludity absoludity left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for giving this a go @ldhyen99 . I've had a go at reviewing this and left a bunch of comments, but I'm relatively new to these technologies and the UNTP spec, so when I read through this, I think I expect a lot more concrete references and explanations so that I'm confident I can follow and understand this documented process myself.

The fact that those concrete references and explanations that I'd expect as a reader are missing from this is not your fault, I don't think. Personally, I would only document something like this if I had been able to go through the process and do the steps that I'm documenting (which would take much more time), which I'm guessing we may not even be able to do yet, which is why we don't have more explicit steps here.

The other option, if we are unable to go through this process ourselves while documenting it, is for us to be clear about that and state that the following process is what we envisage mutual verification of UNTP credentials will look like, and that the documentation will be updated with more details as we solidify the process. I think if we had that disclaimer on this page, I'd be happy to approve it as is (as it would be expressing our intent for the future, rather than details of how this works now).

They're not decisions for me (or you) to make, so I'm going to defer that question to @ashleythedeveloper .

@@ -14,3 +14,64 @@ The [Verifiable Credentials (VC)](https://uncefact.github.io/spec-untp/docs/spec
This section utilises an [external test suite](https://github.com/w3c/vc-data-model-2.0-test-suite) developed by the W3C community. The primary goal is to verify that the VCs produced by your system are compliant with the VCDM specification and can be correctly interpreted by other systems implementing the same standard.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I understand the ticket, and based on your changes below, this specific documentation is changing to focus on mutual verification rather than on the vc-datamodel test suite verification alone.

Is that correct? If so, I think this whole "Overview" section (ie. this paragraph above and the one preceding it), need to be updated to reflect that. The overview currently reads as though the page is just about testing against the VC test suite.

@@ -14,3 +14,64 @@ The [Verifiable Credentials (VC)](https://uncefact.github.io/spec-untp/docs/spec
This section utilises an [external test suite](https://github.com/w3c/vc-data-model-2.0-test-suite) developed by the W3C community. The primary goal is to verify that the VCs produced by your system are compliant with the VCDM specification and can be correctly interpreted by other systems implementing the same standard.

For detailed testing procedures, please refer to the [Testing](./testing) page.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this line and the extra page at ./testing should even be removed? It's certainly not providing detailed testing procedures for what is explained here, and it's main purpose is that it links to the same link you're providing on this page anyway. Maybe let's see what @ashleythedeveloper thinks.


- Credentials issued by one party can be validated by another.
- Both parties support the same standards (cryptography, DID methods, status checks).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Certain aspects of the technical interoperability, such as DID resolution, can and should be verified by each party before mutual testing, but ultimately it is the mutual verification workflow which will demonstrate the interoperability of two separate systems.

Technical interoperability requires **two-way verification** between systems. This ensures:

- Credentials issued by one party can be validated by another.
- Both parties support the same standards (cryptography, DID methods, status checks).
Copy link
Contributor

@absoludity absoludity Mar 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does "DID methods" mean here? It reads as though there's more than one option for the DID method for a DPP or similar. There are more DID methods for VC's generally, but from what I understand on the UNTP spec for verifiable credentials:

The id SHOULD be a DID and, if it is a DID then it MUST be a did:web.

So there's only one DID method available, at least for DPP issuer (it must be used if the issuer is a DID). Or is this related to other places (other than issuer) where a DID might be used? Sorry, I'm not yet too familiar with DIDs, but learning.


### Mutual Verification Workflow

Technical interoperability depends on mutual trustβ€”both parties must issue and verify credentials seamlessly. Testing this requires simulating the full cycle:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Technical interoperability depends on mutual trustβ€”both parties must issue and verify credentials seamlessly. Testing this requires simulating the full cycle:
Technical interoperability depends on mutual trust β€” both parties must issue and verify each other's credentials seamlessly. Testing this requires simulating the full cycle:

Technical interoperability depends on mutual trustβ€”both parties must issue and verify credentials seamlessly. Testing this requires simulating the full cycle:

1. **Setup**:
- Agree on standards (e.g., `Ed25519` signatures, `BitstringStatusListEntry`).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Agree on standards (e.g., `Ed25519` signatures, `BitstringStatusListEntry`).
- Agree on cryptography standards and revocation support (e.g., supporting `Ed25519` cryptographic signatures, or supporting `BitstringStatusListEntry` for credential revocation).

As a relative newcomer to these technologies, it is really helpful to be more explicit with explanations and not assume too much background knowledge. I'd recommend actually linking the above references to relevant VC documentation.


1. **Setup**:
- Agree on standards (e.g., `Ed25519` signatures, `BitstringStatusListEntry`).
- _Test_: Confirm both systems support the same DID methods and status mechanisms.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, I'm unsure about "DID methods" here, given the spec.

- Agree on standards (e.g., `Ed25519` signatures, `BitstringStatusListEntry`).
- _Test_: Confirm both systems support the same DID methods and status mechanisms.
2. **Phase 1: Party A β†’ Party B**
- Party A issues a VC (e.g., a business license).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't we be explicitly testing UNTP verifiable credentials in this process? A VC which is a business license sounds like a general VC, not a UNTP VC?

- **Status Check**: Confirms the credential is active (not revoked/expired).
- **Proof Validation**: Validates the cryptographic signature.
- _Test_: Simulate issuance and verify Party B accepts the VC.
3. **Phase 2: Party B β†’ Party A** (repeat steps symmetrically).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should it be symmetrically? I mean, if we were doing this for general VC, it would be, but in the UNTP case, won't it be more that Party A (say a battery manufacturer) issues a DPP, and Party B (perhaps an assessment company) needs to be able to verify Party A's DPP and issue a DCC which Party A can verify (as it's in their interest to ensure it works so they can be confident their customers can verify the DCC).

I'm not sure - again, let's see what @ashleythedeveloper thinks. Perhaps it's fine just to do the process with non-untp VCs, but given that this is like an integration test, I'd expect we'd want to test as close as possible to the real credentials.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants