Skip to content

test(openid4vci): record real Credential Offers, Issuer Metadata and key proofs from a live issuer/wallet pair #147

Description

@luisgf

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    eudiEUDI / EBSI ecosystem interophardeningAssurance: fuzzing, negative corpus, threat modelspec-conformanceStandards coverage / conformance vectors

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions