Skip to content

Releases: eu-digital-identity-wallet/eudi-lib-ios-wallet-kit

v0.21.0

05 Mar 14:32
29d3055

Choose a tag to compare

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 to EudiWallet initializer. When provided, it is used during the presentation flow to enable zero-knowledge proof operations.
  • Add waitForDisconnect method to PresentationSession to prevent the session from being disposed while the remote device is still connected. This method should be called after sendResponse. In BLE presentations, it awaits until the remote verifier disconnects; in OpenID4VP presentations, it returns immediately.
  • BLE peripheral manager now uses CBPeripheralManagerOptionShowPowerAlertKey to automatically prompt the user to enable Bluetooth if it is turned off when starting a BLE presentation.
  • getIssuerMetadata, issueDocuments, getDefaultCredentialOptions, requestDeferredIssuance, and resumePendingIssuance now 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.trustedReaderCertificates renamed and retyped: The property trustedReaderCertificates: [Data]? has been replaced by trustedReaderRootCertificates: [x5chain]?. A x5chain is usually a root SecCertificate but 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.ID for 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

18 Feb 09:40
3abecd1

Choose a tag to compare

  • 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

17 Feb 08:22
22d45c9

Choose a tag to compare

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

13 Feb 08:15
6ce4742

Choose a tag to compare

  • Wallet storage document deletion bug fix

v0.20.1

12 Feb 20:22
37524a8

Choose a tag to compare

Breaking change

authFlowRedirectionURI parameter added to resolveOfferUrlDocTypes method of EudiWallet

public func resolveOfferUrlDocTypes(offerUri: String, authFlowRedirectionURI: URL?) 

v0.20.0

06 Feb 07:33
c33962d

Choose a tag to compare

Dependency Updates

  • Updated eudi-lib-sdjwt-swift to version 0.13.0
  • Updated eudi-lib-ios-openid4vci-swift to version 0.20.0
  • Updated eudi-lib-openid4vp-swift to version 0.20.0
  • Updated eudi-lib-statium-swift to version 0.3.0

Breaking Changes

  • Swift Version Requirement: Updated minimum Swift version to 6.2

    • Updated Package.swift swift-tools-version from 6.0 to 6.2
  • EudiWallet Initialization Refactoring: Introduced EudiWalletConfiguration struct for consolidated wallet configuration

    • New struct: EudiWalletConfiguration consolidates all wallet-level configuration parameters:

      • serviceName: String - The service name for the keychain (default: "eudiw")
      • accessGroup: String? - The access group for keychain sharing
      • userAuthenticationRequired: Bool - Whether user authentication is required (default: false)
      • trustedReaderCertificates: [Data]? - Trusted reader certificates
      • deviceAuthMethod: DeviceAuthMethod - Device authentication method (default: .deviceSignature)
      • uiCulture: String? - UI culture for localization
      • logFileName: String? - Log file name for logging
    • Updated initializer: EudiWallet now takes eudiWalletConfig: EudiWalletConfiguration parameter 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: Bool parameter (issuer metadata is now always cached)

New Features

  • Multiple Document Issuance: Added issueDocuments method 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
    )

Bug fixes

  • Fixed keys attestation (WUA)

v0.19.4

23 Jan 12:37
8b9b387

Choose a tag to compare

  • Dependency Updates:

    • Updated eudi-lib-sdjwt-swift to version 0.12.1
    • Updated eudi-lib-ios-statium-swift to version 0.3.1
  • Document Status Service Enhancements:

    • Added clockSkew parameter to DocumentStatusService initializer (default: 60 seconds) to handle time differences when validating status list tokens
    • Updated status verification to use clockSkew parameter for improved reliability
  • Client Attestation Refactoring:

    • Renamed makeDPoPConstructor to makePoPConstructor and added a PopUsage parameter. Use attestation key options instead of DPoP-specific key options for the .clientAttestation case.

v0.19.3

22 Dec 13:13
582970c

Choose a tag to compare

  • Fixed device authentication for OpenID4VP. Session transcript calculation was fixed.

v0.19.2

16 Dec 11:27
29f0c42

Choose a tag to compare

  • Removed SIOPv2 support.
  • Fixed OpenID4VP bug for direct post response mode.
  • DCQL query handling improvements (supports claim_sets and credentials_sets).

v0.19.1

08 Dec 11:07
e9209b1

Choose a tag to compare

  • SD-JWT data model: Include index in path for array child elements