EudiWallet
: addeduiCulture
string property for UI localization. It must be a 2-letter language code (optional)EudiWallet
: addedgetIssuerMetadata()
function to retrieve selected issuer's metadataEudiWallet
: Issue document using either doc-type, scope or configuration identifier:func issueDocument(docType: String?, scope: String?, identifier: String?, promptMessage: String? = nil)
WalletStorage.Document
: addeddisplayName
property with localized string valueElementViewModel
: addeddisplayName
property with localized string valueDocMetadata
: stores all localized metadata indisplay
propertyDocClaimMetadata
: stores all localized metadata indisplay
property- Fix bug with VP presentation
DocClaimDecodable
protocol is supported for both mso-mdoc (cbor) and sd-jwt-vc formats
DocClaim
struct hasdocDataValue
property to store the typed value (enum with associated values) of the claim andstringValue
property to store the string value of the claimDocClaim
struct hasdisplayName
,isOptional
andvalueType
properties provided by the issuer
- Feature/dpop nonce
StorageManager
propertymdocModels
renamed todocModels
MdocDecodable
protocol renamed toDocClaimDecodable
NameValue
struct renamed toDocClaim
NameImage
struct removed
- Update for OpenID4VCI Draft14 (eudi-lib-ios-openid4vci-swift updated to tag 0.9.0)
- Use @MainActor for issuing methods due to authentication UI
SecureArea
protocol static factory method added:nonisolated public static func create(storage: any SecureKeyStorage) -> Self
- Removed
SecureArea
protocol initializer:init(storage: any SecureKeyStorage)
(use the static factory method instead) - Removed property
storage
fromSecureArea
protocol
init
addedsecureAreas
:[SecureArea]
optional parameter (default is["SecureEnclave", "Software"]
)issueDocument
: addedkeyOptions
optional parameter to specify the secure area name and other key options for the key creationissueDocumentsByOfferUrl
: addeddocTypeKeyOptions
optional parameter to specify the secure area name and other key options for each doc type
RequestItems
conforms toEquatable
protocol
- Fix issue #118
RequestItems
is now a dictionary with a key of typeString
(doc-type) and a value of type[String: [RequestItem]]
(namespace to request items)RequestItem
is a struct with the following properties:elementIdentifier
,intentToRetain
andisOptional
public typealias RequestItems = [String: [String: [RequestItem]]]
- ElementViewModel:
public var isMandatory: Bool
is removed - ElementViewModel:
public var isOptional: Bool
is added (opposite ofisMandatory
)
- Update Package.resolved and Package.swift with new versions for openid4vci, openid4vp
- Bug fix
- Removed
@MainActor
annotation from class definitions
- Swift 6 migration
- Updated OpenID4VCI to version 0.6.0
- Fill document display name in DocElementsViewModel
- Updated OpenID4VCI to version 0.5.0
- Updated OpenID4VP to version 0.4.0
public func loadDocument(id:status:) async throws -> WalletStorage.Document?
public func deleteDocument(id:status:) async throws
- Updated README.md with new methods and explanations
- Added documentation using Swift-DocC (deployed here)
- Support dynamic issuance in scoped mode
- Remove pending document after finalizing
resumePendingIssuance
- New wallet methods:
public func loadAllDocuments() async throws -> [WalletStorage.Document]?
public func deleteAllDocuments() async throws
public func resumePendingIssuance(pendingDoc: WalletStorage.Document, webUrl: URL?) async throws -> WalletStorage.Document
- Dynamic issuance handling: After calling issueDocumentsByOfferUrl the wallet application need to check if the issuance is pending:
if let urlString = newDocs.first?.authorizePresentationUrl {
// perform openid4vp presentation using the urlString
// on success call resumePendingIssuance using the url provided by the server
- Fixed issuing error when wallet
userAuthenticationRequired
property is true
- Wrong text on success message after issuing a document:
OfferedIssuanceModel
,issuerName
now has only the domain
-
EudiWallet
supports logging and retrieval of log contents` // If not-nil, logging to the specified log file name will be configured public var logFileName: String? { didSet { try? initializeLogging() } }
// Helper method to return a file URL from a file name. public static func getLogFileURL(_ fileName: String) throws -> URL?
// Reset a log file stored in the caches directory public func resetLogFile(_ fileName: String) throws
// Get the contents of a log file stored in the caches directory public func getLogFileContents(_ fileName: String) throws -> String `
- Set WalletStorage.Document displayName property when saving a document
- Update eudi-lib-ios-openid4vci-swift to version 0.4.3
EudiWallet
new propertypublic var serviceName: String
Use a different serviceName
than the default one if you want to store documents in a different location.
e.g. wallet.serviceName = "wallet_dev"
- Update eudi-lib-ios-openid4vci-swift to version 0.4.2
- New
EudiWallet
propertypublic var openID4VciConfig: OpenId4VCIConfig?
to pass OpenID4VCI issuer parameters - Removed
EudiWallet
propertiesvar openID4VciClientId
andvar openID4VciRedirectUri
loadDocuments
takes an optionalstatus
parameter of typeWalletStorage.DocumentStatus
(default isissued
)deleteDocuments
takes an optionalstatus
parameter of typeWalletStorage.DocumentStatus
(default isissued
)- new variable
@Published public private(set) var deferredDocuments: [WalletStorage.Document] = []
(documents that are not yet issued)
- Request a deferred issuance based on a stored deferred document. On success, the deferred document is updated with the issued document.
The caller does not need to reload documents, storage manager
deferredDocuments
anddocModels
properties are updated. - New function to request deferred issuance:
@discardableResult public func requestDeferredIssuance(deferredDoc: WalletStorage.Document) async throws -> WalletStorage.Document
- Removed
otherModels
,docTypes
,documentIds
properties - Updated eudi-lib-ios-openid4vci-swift to version 0.4.1
- Rename
OfferedIssueModel
toOfferedIssuanceModel
EudiWallet
: added propertypublic var accessGroup: String?
(used for sharing keychain items between apps with the same access group)
- Update eudi-lib-ios-siop-openid4vp-swift to version 0.3.2
- Update eudi-lib-ios-openid4vci-swift to version 0.3.1
- Added
public var urlSession: URLSession
variable toEudiWallet
class. This variable can be used to set a custom URLSession for network requests. Allows for custom configuration of the URLSession, such as setting a custom timeout interval or Self-Signed certificates.
- Library updates
The flow is supported by existing methods:
1 - An issue offer url is scanned. The following method is called: public func resolveOfferUrlDocTypes(uriOffer: String) async throws -> OfferedIssueModel
2 - If OfferedIssueModel.isTxCodeRequired
is true, the call to `` must include the transaction code (parameter txCodeValue
).
- Note: for the clientId value the
EudiWallet/openID4VciClientId
is used.
- Update eudi-lib-ios-openid4vci-swift dependency to version 0.1.5
- Fixes iOS16 offer url parsing issue
EuPidModel
updated with new PID docType
- Update eudi-lib-ios-siop-openid4vp-swift to version 0.1.1
- Fix openid4vp certificate chain verification (PresentationSession's
readerCertIssuerValid
andreaderCertIssuer
properties) - Add
readerLegalName
property to PresentationSession
- Update eudi-lib-ios-siop-openid4vp-swift to version 0.1.0
- Added wallet configuration parameter
public var verifierLegalName: String?
(used for Openid4VP preregistered clients)
###Update eudi-lib-ios-siop-openid4vp-swift to version 0.1.0
##v0.4.5
@Published public var docModels: [any MdocDecodable] = []
Openid4vp, BLE: Support sending multiple documents with same doc-type
- DocElementsViewModel: added
public var docId: String
- PresentationSession / func sendResponse: itemsToSend dictionary is keyed by docId (and not docType)
Refactoring for issuing documents with IssuerSigned cbor data
OpenID4VCI: fix for filtering resolved identifiers Support mdoc Authentication for OpenId4Vp #46
OpenID4VCI fix
OpenID4VCI: Allow partial issuing when some documents fail to issue
OpenID4VCI: Fixed issuing with https://dev.issuer.eudiw.dev
/// Resolve OpenID4VCI offer URL document types. Resolved offer metadata are cached
public func resolveOfferUrlDocTypes(uriOffer: String) async throws -> [OfferedDocModel]
/// Issue documents by offer URI.
public func issueDocumentsByOfferUrl(offerUri: String, docTypes: [OfferedDocModel], docTypeKeyOptions: [String: KeyOptions]? = nil, promptMessage: String? = nil, claimSet: ClaimSet? = nil) async throws -> [WalletStorage.Document]
// PresentationSession @Published public var deviceEngagement: String?
use the following code to convert to QR code image:
let qrImage = DeviceEngagement.getQrCodeImage(qrCode: d)
Updated eudi-lib-ios-siop-openid4vp-swift
to v0.0.74
Updated eudi-lib-ios-openid4vci-swift
to v0.0.7
Updated eudi-lib-ios-siop-openid4vp-swift
to v0.0.73
Updated eudi-lib-ios-openid4vci-swift
to v0.0.6
- Refactor MdocDecodable (DocType, DocumentIdentifier, createdAt),
- OpenID4VP draft 13 support
- Internal updates for security checks
- Updated presentation definition parsing
- Updated eudi-lib-ios-siop-openid4vp-swift to 0.0.72
- Fixed mDOC authentication MAC validation error for mDL document type
- Added delete documents func
- Storage manager functions are now
async throws
- extractDisplayStrings is recursive (cbor elements can be dictionaries)
- NameValue: added
var children: [NameValue]
property (tree-like structure) - MdocDecodable: added 'var displayImages: [NameImage]' property
- Add isMandatory property to DocElementsViewModel structure
PresentationSession
methods do not run on main actorPresentationSession
: add `readerCertIssuerValid`` (is verifier certificate trusted)PresentationSession
: change `readerCertIssuer`` (has verifier certificate common name)MdocDecodable
: add extension method:public func toJson() -> [String: Any]
- Update eudi-lib-ios-openid4vci-swift to version 0.4.2 and add new properties to EudiWallet (#86) via @phisakel
- Refactor to support Deferred document issuing (#74) via @phisakel
- Update documentation links in README.md (#82) via @phisakel
- Docs: update documentation in README.md (#81) via @phisakel
- VP version 0.3.2, docs with Swift-DocC Plugin (#80) via @phisakel
- Update PGP Key link (#79) via @mgiakkou
- Update eudi-lib-ios-openid4vci-swift to version 0.3.1 (#78) via @phisakel
- Allow Self-Signed SSL for OpenId4VCI and OpenId4VP (#76) via @phisakel
- [fix] pre-auth fixes in libs (#75) via @dtsiflit
- Support Pre-Authorized Code Flow - Wallet-kit (iOS) (#72) via @phisakel
- Fix swift.yml (#71) via @phisakel
- Credential offer URL parsing issue for iOS16 (#69) via @phisakel
- Update eudi-lib-ios-iso18013-data-model and eudi-lib-ios-iso18013-data-transfer dependencies (#68) via @phisakel
- Update eudi-lib-ios-siop-openid4vp-swift to version 0.1.1, fix verifier display name, valid status (#67) via @phisakel
- Update eudi-lib-ios-siop-openid4vp-swift to version 0.1.0 (#64) via @phisakel
- Update eudi-lib-ios-siop-openid4vp-swift to version 0.1.0 (#64) via @phisakel
- Update openid4vci library to version 0.1.2 (#62) via @phisakel
- Update eudi-lib-ios-openid4vci-swift to version 0.0.9 (#61) via @phisakel
- Issuing - Support for credential offer (#45) via @phisakel
- OpenID4VCI draft13 support (#31) via @phisakel
- Simplify Storage Manager API (#59) via @phisakel
- Openid4vp and BLE should support sending response with multiple documents of the same doc-type (iOS) (#56) via @phisakel
- Refactor to support IssuerSigned CBOR structure [iOS] (#53) via @phisakel
- Changelog.md update (#51) via @phisakel
- Vci offer fix for filtering resolved identifiers (#50) via @phisakel
- Support mdoc Authentication for OpenId4Vp (#46) via @phisakel
- OpenID4VCI: Allow partial issuing when some documents fail to issue (#48) via @phisakel
- Issuing - Support for credential offer (#45) via @phisakel
- Support OpenID4VCI credential offer (resolution of credential offer, issuing of specific doc types) (#44) via @phisakel
- Chore: Update dependencies for udi-lib-ios-iso18013-data-transfer to … (#43) via @phisakel
- Return the QR code to the device engagement in string representation (#42) via @akarabashov
- Centralization of sec workflows (#21) via @christosservosNCIN
- [fix] sdjwt case fix (#36) via @dtsiflit
- Update openid4vci library to v0.0.7 (#39) via @phisakel
- Update OpenID4VP to v0.0.74 (#37) via @phisakel
- Update dependencies to latest versions (#35) via @phisakel
- Update dependencies and refactor StorageManager to support multiple documents with same docType (#34) via @phisakel
- Update changelog.md (#32) via @phisakel
- Update dependencies and changelog (#30) via @phisakel
- Updates due to security helpers changes (#29) via @phisakel
- Updated Presentation Definition Parsing (#28) via @phisakel
- Update eudi-lib-ios-siop-openid4vp-swift to version 0.0.72 (#27) via @phisakel
- Check if iaca variable is nil, refactor to use multiple device private keys (#23) via @phisakel
- Update README.md (#25) via @vkanellopoulos
- Update SECURITY.md (#22) via @vkanellopoulos
- Use subjectDistinguishedName for openID4vp verifier, update packages (#20) via @phisakel
- Fix for verifier name (#19) via @phisakel
- Reader auth for openid4vp, readme overview (#18) via @phisakel
- SendResponse takes an onSuccess callback function (#17) via @phisakel
- Add BlueECC dependency and update eudi-lib-ios-siop-openid4vp-swift version (#16) via @phisakel
- OpenID4VciRedirectUri public property in wallet kit (#15) via @phisakel
- Changes for Secure Enclave use (#14) via @phisakel
- Fixes after updating OpenID4VCI library (#13) via @phisakel
- Issue documents using OpenID4VCI protocol (#12) via @phisakel
- Bug fixes for storage manager (#11) via @phisakel
- Method to begin presentation using any custom PresentationService (#10) via @phisakel
- Update README and SECURITY.md files (#9) via @phisakel
- Added delete documents func to wallet kit (#8) via @phisakel
- Make storage manager methods async throws (#7) via @phisakel
- Update Package.resolved and add isMandatory property to DocElementsViewModel structure (#6) via @phisakel
- Develop: limit main actor usage, reader cert variables (#5) via @phisakel
- Update License and Copyright (#4) via @phisakel
- Develop (#3) via @phisakel