ADR-0007 D10 settles what conformance evidence the OID4VCI work can and cannot get:
the OIDF self-certification suite is a black-box HTTP harness driving a live issuer, so
it cannot test a library that ships no server, and openvc must never claim issuer
certification. What is obtainable, and what D10 asks for, is real recorded material:
This issue is the follow-up the ADR files for that capture.
Why it matters more than it looks
tests/fixtures/trustlist/real/README.md is this repo's own evidence that self-made
fixtures hide total-failure bugs: shapes we generate ourselves only prove we agree with
ourselves. The key-proof verifier is the highest-consequence code path added in the
1.22 cycle — a wrong-accept there hands an attacker a credential bound to a key they do
not control — and today it is pinned entirely by vectors we wrote.
Scope
tests/fixtures/openid4vci/, each file with a _provenance note naming source, date
and software version:
- Credential Offers and Issuer Metadata from the EU reference issuer
(eu-digital-identity-wallet/eudi-srv-web-issuing-eudiw-py).
- Credential Request bodies with real
openid4vci-proof+jwt proofs, captured from the
EUDI reference wallet against a live Credential Endpoint.
- Verify the captured proofs with
now= pinned, so the fixtures do not rot.
- Add the spec's own §8.2 / App. F.1 examples as shape pins alongside them.
A source for the wallet-side capture
A downstream Django issuer is being built on the ADR-0007 consumer contract and will run
a real EUDI reference wallet against its own Credential Endpoint as part of its interop
milestone. That run produces exactly the request bodies and proofs this issue wants, and
they can be contributed back here with provenance. Coordinating the two means the
capture costs an export rather than a separate harness — worth waiting for rather than
building a shim.
Releases are not gated on this (D10: ship on self-made signed vectors first, as the
LoTE work did in 1.22.0).
Related
ADR-0007 D10 settles what conformance evidence the OID4VCI work can and cannot get:
the OIDF self-certification suite is a black-box HTTP harness driving a live issuer, so
it cannot test a library that ships no server, and openvc must never claim issuer
certification. What is obtainable, and what D10 asks for, is real recorded material:
parse against something other than our own opinion of the shape;
technique already used for the EUDI PID fixtures.
This issue is the follow-up the ADR files for that capture.
Why it matters more than it looks
tests/fixtures/trustlist/real/README.mdis this repo's own evidence that self-madefixtures hide total-failure bugs: shapes we generate ourselves only prove we agree with
ourselves. The key-proof verifier is the highest-consequence code path added in the
1.22 cycle — a wrong-accept there hands an attacker a credential bound to a key they do
not control — and today it is pinned entirely by vectors we wrote.
Scope
tests/fixtures/openid4vci/, each file with a_provenancenote naming source, dateand software version:
(
eu-digital-identity-wallet/eudi-srv-web-issuing-eudiw-py).openid4vci-proof+jwtproofs, captured from theEUDI reference wallet against a live Credential Endpoint.
now=pinned, so the fixtures do not rot.A source for the wallet-side capture
A downstream Django issuer is being built on the ADR-0007 consumer contract and will run
a real EUDI reference wallet against its own Credential Endpoint as part of its interop
milestone. That run produces exactly the request bodies and proofs this issue wants, and
they can be contributed back here with provenance. Coordinating the two means the
capture costs an export rather than a separate harness — worth waiting for rather than
building a shim.
Releases are not gated on this (D10: ship on self-made signed vectors first, as the
LoTE work did in 1.22.0).
Related
vp_tokeninterop vector (capture from the EUDI RI wallet+verifier pair) #121 — the same exercise on the OpenID4VP side.