Skip to content

Add support for Digital Credentials on iOS#416

Open
gp-iaik wants to merge 122 commits intodevelopmentfrom
feature/ios_digital_credentials
Open

Add support for Digital Credentials on iOS#416
gp-iaik wants to merge 122 commits intodevelopmentfrom
feature/ios_digital_credentials

Conversation

@gp-iaik
Copy link
Copy Markdown
Collaborator

@gp-iaik gp-iaik commented Dec 19, 2025

Closes #163
Requires a-sit-plus/vck#538
Closes #432

@gp-iaik gp-iaik self-assigned this Dec 19, 2025
@gp-iaik gp-iaik force-pushed the feature/ios_digital_credentials branch from 2aaaf57 to c146b7f Compare December 21, 2025 22:14
@gp-iaik gp-iaik force-pushed the feature/ios_digital_credentials branch 3 times, most recently from 9417aae to 1f27b75 Compare January 19, 2026 14:33
@gp-iaik
Copy link
Copy Markdown
Collaborator Author

gp-iaik commented Jan 22, 2026

Requires update of multipaz to latest release

Comment thread cinterop/DigitalCredentials/DigitalCredentials.swift Outdated
Comment thread iosApp/iosApp/ContentView.swift Outdated
Comment thread shared/src/androidMain/kotlin/matcher/Request.cpp
Comment thread shared/src/iosMain/kotlin/OsLogAntilog.kt Outdated
@gp-iaik gp-iaik force-pushed the feature/ios_digital_credentials branch from bcf68cd to 74b5d3c Compare February 2, 2026 14:11
@gp-iaik
Copy link
Copy Markdown
Collaborator Author

gp-iaik commented Feb 23, 2026

TODO: fix proximity

@chatgpt-codex-connector

This comment was marked as outdated.

@gp-iaik gp-iaik force-pushed the feature/ios_digital_credentials branch from a3b4eee to 2b8c0f5 Compare April 23, 2026 16:23
@chatgpt-codex-connector

This comment was marked as outdated.

@nodh

This comment was marked as resolved.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@chatgpt-codex-connector

This comment was marked as outdated.

* Xcode 26

* remove xcode <26 workarounds

* no standalone simulator

* Raise the iOS target version to 18.6
@chatgpt-codex-connector

This comment was marked as outdated.

@chatgpt-codex-connector

This comment was marked as outdated.

@gp-iaik gp-iaik requested a review from nodh April 28, 2026 10:47
Comment thread gradle/libs.versions.toml
koin = "4.1.1"
testballoon = "0.7.1-K2.3.0"
# TestBallon has to be the same version as in vck, otherwise tests in composite builds may fail
testballoon = "0.8.2-K2.3.0"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JesusMcCloud isnt that covered by the conventions?

Comment thread shared/src/iosTest/kotlin/at/asitplus/wallet/app/IosNetworkingDiagnosticsTest.kt Outdated
@nodh nodh assigned nodh and unassigned gp-iaik Apr 28, 2026
@nodh

This comment was marked as outdated.

@nodh nodh added this to the 5.7.7 milestone Apr 28, 2026
gp-iaik added 2 commits April 28, 2026 15:32
…us/compose-wallet-app into feature/ios_digital_credentials
@chatgpt-codex-connector

This comment was marked as resolved.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

onSuccess = {
navigateBack()
},

P1 Badge Navigate to returned route after provisioning resume

ProvisioningIntentViewModel now returns an optional route on success (including AddCredentialDcApiSuccessRoute when handling CREATE_CREDENTIAL flows), but this callback ignores the route and always calls navigateBack(). In issuer flows that require browser auth (resumeWithAuthCode), the app will return to the previous screen instead of the DCAPI success screen, so the wallet never sends the final create-credential response back to the invoker.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@gp-iaik
Copy link
Copy Markdown
Collaborator Author

gp-iaik commented Apr 29, 2026

💡 Codex Review

onSuccess = {
navigateBack()
},

P1 Badge Navigate to returned route after provisioning resume

ProvisioningIntentViewModel now returns an optional route on success (including AddCredentialDcApiSuccessRoute when handling CREATE_CREDENTIAL flows), but this callback ignores the route and always calls navigateBack(). In issuer flows that require browser auth (resumeWithAuthCode), the app will return to the previous screen instead of the DCAPI success screen, so the wallet never sends the final create-credential response back to the invoker.
ℹ️ About Codex in GitHub

Should be irrelevant for DC API.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 25a54d4660

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +5 to +8
<key>com.apple.security.application-groups</key>
<array>
<string>group.Compose.Wallet</string>
</array>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add keychain-access-groups to extension entitlements

The extension entitlement file only declares com.apple.security.application-groups, but the app target now uses an explicit keychain-access-groups entry (iosApp/iosApp/iosApp.entitlements), and the extension runs the shared wallet stack (MainViewController/KeystoreService) during DCAPI presentation. Without the same keychain access group on the extension, it cannot read the app’s existing signing keys, so extension-based presentations can fail for already-issued credentials or silently create unusable key material in a separate keychain domain.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b11f259a51

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +396 to +398
} catch (e: Throwable) {
Napier.e("Error while invoking Swift code", e)
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Resume coroutine after Swift bridge failures

When DigitalCredentials.storeDocumentWithId throws synchronously, this catch block only logs and exits without resuming cont, so storeDocumentFromSwift never completes. In that case registerWithDigitalCredentialsAPI can hang on the first failing entry and skip processing remaining credentials, leaving iOS DCAPI registration partially or fully stuck. Resume the continuation in the error path (for example with false or an exception) so the suspend function always completes.

Useful? React with 👍 / 👎.

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.

3 participants