Releases: eu-digital-identity-wallet/eudi-lib-ios-wallet-kit
v0.21.0
v0.21.0
ZKP (Zero-Knowledge Proof) Support
- Supports zero-knowledge proof generation by using a provided
ZkSystemRepository - Extracts ZKP specs from DCQL request.
- Tracks ZKP document IDs through presentation flow. Skip deleting credentials used as ZKP documents
Improvements
- Add optional
zkSystemRepository: ZkSystemRepository?parameter toEudiWalletinitializer. When provided, it is used during the presentation flow to enable zero-knowledge proof operations. - Add
waitForDisconnectmethod toPresentationSessionto prevent the session from being disposed while the remote device is still connected. This method should be called aftersendResponse. In BLE presentations, it awaits until the remote verifier disconnects; in OpenID4VP presentations, it returns immediately. - BLE peripheral manager now uses
CBPeripheralManagerOptionShowPowerAlertKeyto automatically prompt the user to enable Bluetooth if it is turned off when starting a BLE presentation. getIssuerMetadata,issueDocuments,getDefaultCredentialOptions,requestDeferredIssuance, andresumePendingIssuancenow fall back to resolving the VCI service by issuer URL when the name-based lookup fails, improving service discovery for dynamically registered issuers. Also, offer resolution was modified to register credential issuer url directly instead of host name.
Breaking Changes
EudiWalletConfiguration.trustedReaderCertificatesrenamed and retyped: The propertytrustedReaderCertificates: [Data]?has been replaced bytrustedReaderRootCertificates: [x5chain]?. A x5chain is usually a rootSecCertificatebut may include intermediate certificates.
Dependency Update
- Updated "eudi-lib-ios-iso18013-data-transfer" and "eudi-lib-ios-wallet-storage" package dependencies
Refactorings
- Refactored document handling in OpenId4VP and related services to use
Document.IDfor improved type safety and clarity
What's Changed
- Changes for Zere Knowledge Proof, fix for BLE (wait for disconnect), fix for openID4VCI by @phisakel in #298
Full Changelog: v0.20.5...v0.21.0
v0.20.5
-
Fixed bug in #291 when more than one identical attestation is successfully presented to the verifier. Previously, only a single entry per "type" appears in the Transactions tab.
For example, the screenshots show 2 mDL and 3 PID attestations, all successfully presented, but only 1 of each is listed in the Transactions. -
Fallback to sha-256 hashing algorithm if sd-alg does not exist by @dtsiflit in #293
v0.20.3
What's Changed
- Enhance OpenID4VCI service registration with fallback to the first available configuration by @phisakel in #288
When the issuer doesn't match any pre-configured service, fall back to the first available service's configuration (inheriting client auth, attestation config, etc.) with the issuer URL overridden. This mirrors the Android wallet behavior where the fallback manager strategy carries over to unknown issuers.
v0.20.2
v0.20.1
v0.20.0
Dependency Updates
- Updated
eudi-lib-sdjwt-swiftto version 0.13.0 - Updated
eudi-lib-ios-openid4vci-swiftto version 0.20.0 - Updated
eudi-lib-openid4vp-swiftto version 0.20.0 - Updated
eudi-lib-statium-swiftto version 0.3.0
Breaking Changes
-
Swift Version Requirement: Updated minimum Swift version to 6.2
- Updated
Package.swiftswift-tools-version from 6.0 to 6.2
- Updated
-
EudiWallet Initialization Refactoring: Introduced
EudiWalletConfigurationstruct for consolidated wallet configuration-
New struct:
EudiWalletConfigurationconsolidates all wallet-level configuration parameters:serviceName: String- The service name for the keychain (default: "eudiw")accessGroup: String?- The access group for keychain sharinguserAuthenticationRequired: Bool- Whether user authentication is required (default: false)trustedReaderCertificates: [Data]?- Trusted reader certificatesdeviceAuthMethod: DeviceAuthMethod- Device authentication method (default: .deviceSignature)uiCulture: String?- UI culture for localizationlogFileName: String?- Log file name for logging
-
Updated initializer:
EudiWalletnow takeseudiWalletConfig: EudiWalletConfigurationparameter instead of individual configuration parameters
let config = EudiWalletConfiguration( serviceName: "my_wallet_app", userAuthenticationRequired: true, trustedReaderCertificates: certs ) let wallet = try! EudiWallet(eudiWalletConfig: config)
-
-
Document Issuance API Changes:
- Removed single document issuance method signature that accepted individual parameters
- Use
issueDocuments(issuerName:docTypeIdentifiers:credentialOptions:keyOptions:promptMessage:)instead for issuing one or more documents
let docs = try await wallet.issueDocuments( issuerName: "eudi_pid_issuer", docTypeIdentifiers: [.msoMdoc(docType: EuPidModel.euPidDocType)], credentialOptions: credentialOptions, keyOptions: keyOptions ) let pidDoc = docs.first!
-
OpenId4VciConfiguration Changes:
- Removed
cacheIssuerMetadata: Boolparameter (issuer metadata is now always cached)
- Removed
New Features
-
Multiple Document Issuance: Added
issueDocumentsmethod for issuing multiple documents in a single operation- Method signature:
issueDocuments(issuerName:docTypeIdentifiers:credentialOptions:keyOptions:promptMessage:) async throws -> [WalletStorage.Document] - Efficiently issues multiple documents from the same issuer by creating a single credential offer
- Supports mixed document types (mso_mdoc and sd-jwt-vc)
let documents = try await wallet.issueDocuments( issuerName: "eudi_pid_issuer", docTypeIdentifiers: [ .identifier("eu.europa.ec.eudi.pid_mdoc"), .identifier("eu.europa.ec.eudi.pid_vc_sd_jwt") ], credentialOptions: credentialOptions, keyOptions: keyOptions )
- Method signature:
Bug fixes
- Fixed keys attestation (WUA)
v0.19.4
-
Dependency Updates:
-
Document Status Service Enhancements:
- Added
clockSkewparameter toDocumentStatusServiceinitializer (default: 60 seconds) to handle time differences when validating status list tokens - Updated status verification to use
clockSkewparameter for improved reliability
- Added
-
Client Attestation Refactoring:
- Renamed
makeDPoPConstructortomakePoPConstructorand added aPopUsageparameter. Use attestation key options instead of DPoP-specific key options for the.clientAttestationcase.
- Renamed