Skip to content

[WAL-1078] follow-up: add OpenID4VP rejection scenario#1892

Draft
szijpeter wants to merge 3 commits into
feature/wal-751-openid4vp-mobilefrom
feature/wal-1078-rejection-scenario
Draft

[WAL-1078] follow-up: add OpenID4VP rejection scenario#1892
szijpeter wants to merge 3 commits into
feature/wal-751-openid4vp-mobilefrom
feature/wal-1078-rejection-scenario

Conversation

@szijpeter

@szijpeter szijpeter commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds the WAL-1078 OpenID4VP rejection path as a follow-up stacked on #1882. The mobile wallet can now send a protocol-level rejection response instead of treating Decline as a purely local cancel action.

The branch reuses the existing core walletRejectHandling(...) behavior and exposes a small Swift-friendly API through the KMP mobile SDK, Swift SDK facade, Compose demo, and native iOS demo.

What Changed

Mobile SDK and Handler

  • Added RejectPresentationRequest and WalletPresentationHandler.rejectPresentation(...).
  • Added MobileWallet.rejectPresentation(...).
  • Added MobileWalletPresentationRejectionReason with the rejection codes already supported by the core OpenID4VP wallet implementation.
  • Updated the mobile SDK ABI dump.

Swift Parity

  • Added Wallet.rejectPresentation(request:reason:errorDescription:).
  • Added PresentationRejectionReason in the Swift SDK.
  • Wired the KMP Swift bridge and bridge tests for the new rejection path.

Demo Apps

  • Compose demo now wires the presentation review Decline action to protocol rejection.
  • Native iOS demo now wires the same rejection action through WalletClient.
  • Status remains scoped to the Present tab and no longer behaves like a global wallet status.

Tests

  • Added/updated bridge tests for rejection forwarding.
  • Updated Compose controller/UI tests for protocol rejection instead of local cancel.
  • Updated native iOS model/UI tests for rejection status scoping and the renamed Decline action.

Architecture Notes

  • This PR intentionally sits on top of #1882, which provides preview and credential-level presentation submission.
  • Rejection stays separate from transaction-data display and claim-level selective disclosure so the protocol behavior can be reviewed independently.
  • The public mobile API accepts a typed rejection reason while still passing the protocol error code into the shared core handler.

Caveats and Follow-Ups

  • No transaction-data rendering here; that is #1893 / WAL-1077.
  • No claim-level selective disclosure here; that remains #1894 / WAL-751 follow-up scope.
  • Public backend verifier-session behavior should still be smoke-tested before merging if we want end-to-end confirmation beyond local handler and demo tests.

Validation

  • ./gradlew :waltid-libraries:protocols:waltid-openid4vc-wallet-mobile:updateKotlinAbi -PenableIosBuild=true
  • ./gradlew :waltid-libraries:protocols:waltid-openid4vc-wallet-mobile:checkKotlinAbi :waltid-libraries:protocols:waltid-openid4vc-wallet-mobile:allTests :waltid-applications:waltid-wallet-demo-compose:sharedLogic:allTests :waltid-applications:waltid-wallet-demo-compose:sharedUI:testAndroidHostTest -PenableIosBuild=true
  • xcodebuildmcp simulator test ... -only-testing:iosAppTests/CredentialDisplayNormalizerTests
  • xcodebuildmcp simulator test ... -only-testing:iosAppUITests/MockWalletUITests/testTabbedReceiveAndPresentFlowUsesMockWallet

Breaking

  • No breaking changes expected; the SDK additions are additive.

@linear-code

linear-code Bot commented Jul 10, 2026

Copy link
Copy Markdown

WAL-1078

@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5a7de10c-8bb7-470f-b0ba-da348b409184

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@szijpeter szijpeter self-assigned this Jul 10, 2026
@sonarqubecloud

Copy link
Copy Markdown

@szijpeter szijpeter force-pushed the feature/wal-751-openid4vp-mobile branch 6 times, most recently from 98c93c9 to a089be2 Compare July 14, 2026 12:06
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.

1 participant