CommBank ID + income

Design · docs/ios-notes.md

iOS app notes (apps/ios/CBAApp)

The CBA Hackathon app is a native SwiftUI app (iOS 17+, bundle au.com.cba.hackathon.wallet). It's generated with xcodegen and embeds MATTR's mDocs Holder SDK (MobileCredentialHolderSDK, Swift package) as its wallet, so the CommBank ID stays inside the CommBank app. It's an internal mock of the CommBank app, built for the rental income demo.

Build and run

cd apps/ios/CBAApp
xcodegen generate
xcodebuild -project CBAApp.xcodeproj -scheme CBAApp -scmProvider system \
  -destination 'platform=iOS Simulator,name=iPhone 15 Pro' build   # or: test
open CBAApp.xcodeproj

Flows

Wallet: MATTR mDocs Holder SDK

The wallet is MATTR's iOS mDocs Holder SDK (MobileCredentialHolderSDK 6.2.1), added in project.yml as a Swift package from https://github.com/mattrsdk/ios-mobile-credential-holder-sdk (exact version). It replaced the ID Partners vc-wallet-sdk; that repo and its cba-hackathon branch are untouched.

Unit tests (simulator, -skip-testing:CBAAppTests/MattrLiveOfferTests): 52, including IncomeSourcesModelTests (accounts + preselection, toggles, canContinue, request bodies for CBA-only / add bank / CDR, 200/302/409/422 handling, connected banks from pod status, income breakdown, total-income proof gating and the core-banking proof request) and the v1.9 offers client cases.

Run the live test with a fresh offer (minted with the tenant's API creds, as test-issuance.py does):

TEST_RUNNER_MATTR_TEST_OFFER='openid-credential-offer://?credential_offer=...' \
  xcodebuild -project CBAApp.xcodeproj -scheme CBAApp -scmProvider system \
  -destination 'platform=iOS Simulator,name=iPhone 15 Pro' test -only-testing:CBAAppTests/MattrLiveOfferTests

Proposed contract additions