[WAL-896] feat(wallet): finalize authenticated OpenID4VP presentation flow - #1885
[WAL-896] feat(wallet): finalize authenticated OpenID4VP presentation flow#1885philpotisk wants to merge 5 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
The branch contains various OpenID4VP 1.0 Final violations, pre-Final (OpenID4VP Draft) protocol remnants, compilation failures, broken default Issuer2 signing configuration, conformance tooling that can report false success, etc
btw, why is there so much trailing whitespace across the files?
szijpeter
left a comment
There was a problem hiding this comment.
couple of concerns and nitpicks from a (mostly) mobile / wallet perspective. nice work otherwise
szijpeter
left a comment
There was a problem hiding this comment.
Nice improvements! 👏🏼
Most of my earlier mobile/wallet concerns are addressed. One blocking issue remains: the Android EHIC integration tests should stay enabled imo. They pass on this PR head and on main, and the public-demo tests do not cover the same POST Request Object retrieval, wallet metadata/nonce, and signed Request Object path.
I’m fine with keeping the iOS EHIC tests skipped until native PKIX/x509_hash validation is supported, but the skip rationale should accurately document that limitation and the trust-anchor follow-up.
My remaining API-compatibility and loopback-HTTPS comments are non-blocking, although I think they would be worth considering.
|
Also, WalletPresentationHandler.kt (lines ~626-683) accepts a caller-supplied AuthorizationRequest objects for token construction and sending, and /send-response does not do wallet ownership resolution (at Wallet2RouteHandler.kt, roughly lines 758-768). This means that, theoretically, the request could be changed after the /resolve-request step (things like nonce, verifier key, and response URI) -> the fetcher would then be sent to perform an arbitrary outbound POST, and for encrypted mdocs, changing keys between steps will also breaks transcript binding |
|
In addition, the changed code at WalletPresentFunctionality2.kt (lines ~639-650) should include a call to validateAuthorizationRequest, otherwise a signed request missing nonce reaches consent and later fails through nonce!! instead of being rejected as invalid_request |
|
Regarding #1885 (comment): agreed and contained in |
|
Regarding #1885 (comment): fixed in |
szijpeter
left a comment
There was a problem hiding this comment.
fixed a couple of things from the mobile side (test fixtures mostly) and updated the branch from main. I've also refreshed the related enterprise branch and opened a PR for it: https://github.com/walt-id/waltid-identity-enterprise/pull/553
looks good to me from the mobile perspective, but would leave the final word for @waltkb
33b2f8c to
28a6a7c
Compare
f9f4661 to
06a40d3
Compare
28a6a7c to
f6b304d
Compare
3310994 to
89bcd8f
Compare
f6b304d to
ea22deb
Compare
89bcd8f to
57e04a1
Compare
ea22deb to
8296069
Compare
57e04a1 to
53a1905
Compare
8296069 to
437b624
Compare
53a1905 to
5b56848
Compare
437b624 to
d63c3d2
Compare
5b56848 to
a4eaf82
Compare
d63c3d2 to
38cab45
Compare
a4eaf82 to
eb55e3e
Compare
38cab45 to
2a32e57
Compare
0ae3327 to
f551098
Compare
* feat(verifier2): expose authenticated request objects * feat(wallet): finalize authenticated OpenID4VP presentation flow
…ches Keep WAL-896's plain-request RedirectUri gate, but refuse a contradicting response destination with the same message as Request Object binding.
Android does not inherit jvmMain, so WAL-896's new expect had no actual and compileAndroidMain failed during assembleDebug.
openid4vp-wallet is JVM-only, so Android loaded OrderedCertificateChain_jvmKt for platformSupportsPkixCertificatePathValidation. Keep the actual in jvmCommon so the JVM and Android artifacts expose the same class.
RFC 5280 treats a missing KeyUsage as unrestricted. Requiring digitalSignature when the extension is absent rejected verifier attestation JWTs that still sign the request correctly.
2a32e57 to
39481a2
Compare
f551098 to
9445dd2
Compare
|
|
Superseded by folding the WAL-896 identity stack into #2091, which now targets |



Summary
This is the WAL-896 wallet, protocol, and mobile consumer half, stacked directly on the verifier prerequisite #2055. It is based on
feature/wal-896-verifier, which now sits on currentmainafter walt-id/waltid-identity#2031.The branch makes wallet2/mobile presentation consume authenticated Final Request Objects while preserving the stateless HTTP continuation API and the retained mobile preview flow. The coordinated Enterprise counterpart is walt-id/waltid-identity-enterprise#553.
What Changed
Authenticated wallet2 and mobile flow
AuthorizationRequeststate.DCQL and Crypto2 response handling
X.509 and mobile fixtures
Stack and ownership
feature/wal-896-verifier/ #2055 on currentmain.#2055 → #1885 → #2091.Caveats and Follow-Ups
waltid-wallet-apipresentation implementation is not migrated to this wallet2/mobile Final-validation contract.Breaking
build-vp-tokenorsend-responseroute surface preserved from Fix/wallet cleanup #1970; those operations remain bound to the original signed request URL.