Skip to content

feat(openid4vci): require key attestation and pin a live wallet proof - #180

Merged
luisgf merged 1 commit into
mainfrom
feat/openid4vci-wallet-proof-and-attestation
Aug 14, 2026
Merged

feat(openid4vci): require key attestation and pin a live wallet proof#180
luisgf merged 1 commit into
mainfrom
feat/openid4vci-wallet-proof-and-attestation

Conversation

@luisgf

@luisgf luisgf commented Aug 14, 2026

Copy link
Copy Markdown
Owner

Three things that were unblocked without an external gate.

require_key_attestation= (#178)

verify_credential_request_proofs(..., require_key_attestation=True) refuses a
proof whose header has no key_attestation with the structure rules — before
the signature and before check_nonce. An issuer that publishes
key_attestations_required no longer burns a single-use nonce on every
wallet that forgot to attest (OID4VCI §8.3.1 retry loop). Default False.

JVM-wallet key proof (#147)

Vendors tests/fixtures/openid4vci/real/eudi-jvm-wallet-key-proof.jwt,
captured 2026-07-29 from eudi-lib-jvm-openid4vci-kt 0.12.2 (the library the
EUDI Android wallet speaks through) via the downstream issuer's
wallet-harness. Header is {alg, typ, kid: "0", key_attestation} with no
jwk. Verifies end to end with the clock frozen to its own iat. Provenance
is sha256-enforced. A phone session against production is still the
downstream issuer's #182; it is not this issue's remaining gap.

SD-JWT VC draft-18 (#179)

Pin bump from draft-17. Type Metadata §4 is unchanged. When aka_vcts is
present it must be a non-empty array of non-empty strings that does not
contain vct. expected_vct is not widened to match an alias.

#127 (RFC cite-swap) stays open. W3C REC errata registers re-checked
2026-08-14: all empty.

Closes #147
Closes #178
Closes #179

An issuer that publishes key_attestations_required can now refuse a
missing header before crypto and before the nonce is spent (#178).
Pin a key proof captured from eudi-lib-jvm-openid4vci-kt 0.12.2 (#147)
and bump the SD-JWT VC pin to draft-18 with an aka_vcts shape check
(#179). expected_vct stays an exact pin.

Closes #147
Closes #178
Closes #179
@luisgf
luisgf merged commit 8aecbf2 into main Aug 14, 2026
13 of 14 checks passed
@luisgf
luisgf deleted the feat/openid4vci-wallet-proof-and-attestation branch August 14, 2026 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant