Skip to content

[WAL-1346] feat(wallet): configure proximity reader trust - #2167

Closed
szijpeter wants to merge 4 commits into
feature/wal-1346-proximity-wallet-demosfrom
feature/wal-1346-reader-trust-policy
Closed

[WAL-1346] feat(wallet): configure proximity reader trust#2167
szijpeter wants to merge 4 commits into
feature/wal-1346-proximity-wallet-demosfrom
feature/wal-1346-reader-trust-policy

Conversation

@szijpeter

@szijpeter szijpeter commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Closed as superseded — do not merge standalone. Its complete four-commit delta was transplanted into #2160 with 4/4 exact patch-equivalence proof. The Settings/public-file-import work also lands only in #2160.

Completes the application-configurable holder-side reader-trust policy for WAL-1346. Applications can now supply explicit Reader CA anchors, revocation policy, and optional RICAL providers through one immutable Kotlin/Swift configuration; the SDK still ships no universal trust list and never promotes reader-supplied certificates to trust anchors.

This PR is stacked on the three-demo proximity journey in walt-id/waltid-identity#2160. The governing architecture and trust boundary are documented in walt-id/waltid-architecture#60.

What Changed

Shared X.509 and RICAL validation

  • Adds reusable ISO mdoc reader-authentication and RICAL-signer certificate profile validation, including explicit-anchor path building and time/profile checks.
  • Validates signed RICAL material against application-selected provider roots, types, signer policy, freshness, constraints, and revocation behavior without implicit network access or trust.
  • Keeps list signature validity, signer path, reader path, revocation, constraints, and final product trust as separate evidence.

Wallet SDK configuration

  • Adds immutable Kotlin models for Reader CA anchors, reader revocation, RICAL providers, signer revocation, and ecosystem-specific constraint evaluation.
  • Evaluates direct Reader CA and RICAL-derived trust through the existing shared reader-trust seam, with explicit trusted, unknown-authority, invalid, revoked, and indeterminate outcomes.
  • Exposes the same semantics through Swift-native values and closures while keeping parsing and policy decisions in shared KMP code.

Contract and UI alignment

  • Extends the KLIB ABI, Kotlin/Swift documentation, and focused shared/Swift tests for legal construction, path/profile failures, revocation, RICAL conflicts/unavailability, and trust outcomes.
  • Adds the display-safe unknown-authority result to both demo renderers; the demos remain deliberately unconfigured unless an application supplies test or production trust material.

Architecture Notes

  • Trust material and provider selection are application-owned. Reader-carried roots and intermediates are path inputs only.
  • Revocation and RICAL retrieval are injected application boundaries; the SDK performs no hidden network requests.
  • The immutable trust decision remains bound to the request preview, and platform UI code only renders the shared result.

Caveats and Follow-Ups

  • This PR provides the policy and configuration surface; it does not provision production Reader CA or RICAL material for integrators.
  • External-reader interoperability and release qualification remain owned by WAL-1349.
  • NFC transport and demo integration continue in the stacked walt-id/waltid-identity#2165 and walt-id/waltid-identity#2166.

Breaking

No released API is broken. The mobile SDK is still unpublished, so the new trust configuration and exhaustive result state are introduced without migration aliases or compatibility shims.

@szijpeter szijpeter added the ci:mobile Run mobile related CI workflows for this PR label Aug 30, 2026
@linear-code

linear-code Bot commented Aug 30, 2026

Copy link
Copy Markdown

WAL-1346

@szijpeter szijpeter self-assigned this Aug 30, 2026
@coderabbitai

coderabbitai Bot commented Aug 30, 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 Plus

Run ID: 29cd0ecd-3c6d-4b3d-b7c5-d16ae53d5140

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 force-pushed the feature/wal-1346-reader-trust-policy branch from 1a98938 to d1d35e5 Compare August 31, 2026 10:14
@szijpeter
szijpeter force-pushed the feature/wal-1346-proximity-wallet-demos branch from 679ba35 to 091c7e8 Compare August 31, 2026 10:14
@sonarqubecloud

Copy link
Copy Markdown

@szijpeter

Copy link
Copy Markdown
Contributor Author

Superseded by #2160 at 893e42492c843ddb95eaca1a03bb34219583a8eb. The four donor commits were replayed 4/4 patch-equivalently (7a2ef2c69→5610ef0ed, 537a76579→b974424a6, 81744e9f3→e08e939b5, d1d35e5e0→d6cca7231), after which #2160 added the cross-platform Settings, validated public-file import, persistence, and immutable session snapshot. Closing without merge.

@szijpeter szijpeter closed this Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:mobile Run mobile related CI workflows for this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant