7.0.0
This release reworks loading credential schemes into VC-K. Previously, libraries like ehic need to be included in client apps and registered with VC-K on startup. Now credentials-collection hosts a list of type metadata documents, that might be loaded from client apps and provided to the VC-K classes. Common types like EU PID and Mobile Driving Licences are included directly in the core of VC-K. See the description in the README or the implementation of the Relying Party or of Valera. No need to call Initializer.initWithVCK() anymore. Be sure to remove your dependencies on mdl, eupid and eupid-sdjwt.
- Credential definitions:
- Move
CredentialSchemeout ofConstantIndex - Provide type alias for
CredentialRepresentation - Introduce typed sub-interfaces of
CredentialScheme:VcJwtCredentialScheme,SdJwtCredentialSchemeandIsoMdocCredentialScheme - That implies changes to
CredentialToBeIssued,IssuedCredential,StoreCredentialInputand methods inSubjectCredentialStore - In
CredentialSchemedeprecateclaimNames(list of strings), to be replaced withclaimDescriptions(set of typed descriptions) - In
CredentialSchemedeprecateschemaUri, clients should use the identifiers for each credential representation instead - In
StoreEntrydeprecate propertyschemeand add suspending functionresolveScheme()to replace it - Add
UnknownCredentialSchemeso that theschemeproperty in several methods and classes is not null - Import data classes and data element strings from credentials into this library for EU PID, EU PID in SD-JWT and Mobile Driving Licence
- Document usage of remote metadata retrieval
- Make JSON and ISO CBOR serializer registration safe for concurrent extension-library initialization
- Move
- OpenID for Verifiable Presentations:
- Compare signed DC API
expected_originsvalues to the provided origin as exact strings and add a configurable holder-side origin-scheme allowlist - Support non-web Android Digital Credentials API origins starting with
android:apk-key-hash:<hash>for OpenID4VP; ISO18013-7 mdoc presentations require authority-based origins and reject opaque Android application origins - Fix SD-JWT presentation validation for Digital Credentials API responses by checking the key binding JWT audience against the request origin (
origin:<origin>) instead of the verifier client identifier - Fix DCQL matching for credential queries without
claims: selectively disclosable credentials now return an explicit mandatory-claims-only result, while non-selectively disclosable credentials still return all claims - Fix disclosure of SD-JWT claims from foreign issuers: match disclosure digests against the originally serialized disclosures instead of re-serializing them, since digests are computed over the exact bytes (RFC 9901, section 4.2.3), e.g. failing for disclosures serialized with whitespace
- Extend
DCQLCredentialQueryMatchingResultby caseAllMandatoryClaimsMatchingResult - Consolidate interface of
OpenId4VpVerifier: All clients should usecreateAuthnRequest(), so we deprecate methodssubmitAuthnRequest()orcreateAuthnRequestAsSignedRequestObject() - Extract
DcApiVerifieras a pendant toOpenId4VpVerifierwhich handles DCAPI requests only, deprecatingIso180137AnnexCVerifier - Move
CreationOptionsandCreatedRequestto upper level (at.asitplus.wallet.lib.openid) instead of nesting inOpenId4VpVerifier
- Compare signed DC API
- Digital Credentials API:
- Add
DcApiHolderas the unified wallet-side entry point for OpenID4VP and ISO/IEC 18013-7 Annex C requests received through the Digital Credentials API - Add platform response codecs for Android JSON and iOS ISO/IEC 18013-7 Annex C bytes without introducing platform dependencies
- Add request-option conversion helpers that combine a selected DC API protocol with trusted platform metadata into
RequestParametersFrom.DcApiRequest - Add the iOS-specific
IosDcApiMdocPreRequestSummarymodel for pre-request credential matching and consistency checks against the full Annex C request - BREAKING: Remove the
originproperty from Digital Credentials API response models
- Add
- Verifier:
- Add
NonceChallengeVerifier, a thinVerifierwrapper that creates presentation challenges from aNonceServiceand verifies SD-JWT/VC-JWT presentations against the embedded challenge - Move OpenID4VP request nonce handling out of
VerifierAgentand consume nonces after successful response validation to prevent replay - Deprecate abstract base class
AbstractMdocVerifier - Extract
MdocDeviceSignatureVerifierfromAbstractMdocVerifier - Extract
VpTokenValidatorfrom common code inOpenId4VpVerifierandDcApiVerifier
- Add
- OpenID for Verifiable Credential Issuance:
- Wallet does not send any proofs when the issuer doesn't support any proof types
- Update Wallet Instance Attestation and Key Attestation to EUDI Wallet TS3 1.5.2 from 2026-05-26
- In
IssuerAgentintroduce constructor parameterstatusListAgentto decouple creation of status elements from issuing credentials - Rework
IssuerCredentialStoreby moving some functionality toReferencedTokenStore - Status claims for identifier lists from ISO 18013-5 contain the certificate of the status list issuer
- JVM interoperability:
- Add
@JvmOverloadsto public API constructors with default parameters across the published modules - Provide methods to use non-negative
Longvalues for status list indices and accompanying API - Preserve RFC 3986 port and IPvFuture syntax without artificial
ULonglimits
- Add
- Refactorings:
OpenId4VpHolder.getMatchingCredentials()returnsKmmResultinstead ofResult- In
SdJwtInputValidationResulttransport error during integrity validation inintegrityValidationResultinstead ofisIntegrityGood vck-openid-ktorHTTP clients throwHttpErrorResponseExceptionfor non-success responses, preserving OAuth errors, RFC 9457 problem details, and the raw response body
- Trust Evaluation:
- Add
LoTEFilterServicefor extracting trust list certificates fromLoTEbased onServiceTypeIdentifier - Add signature and time validity checks of certificate against the trust list
- Add JAdES B-B validation (Used when fetching LoTE)
- Add
issuerproperty inStoreEntry, for evaluation of trust against trust list
- Add
- Deprecations:
- Remove code deprecated in 6.0.0, e.g. various
DCAPIWallet*and related classes,vckJsonSerializer - In
OpenId4VpWalletdeprecatesendAuthnErrorResponse()with parameter of typeRequestParametersFrom, use parameter of typeAuthorizationResponsePreparationStateinstead
- Remove code deprecated in 6.0.0, e.g. various
- Dependencies:
- Update to Signum 3.24.0 for HPKE support