Releases: a-sit-plus/vck
Releases · a-sit-plus/vck
5.3.3
5.3.2
5.3.1
5.3.0
Main features:
- Implement token-status-list-06, replacing implementation of Revocation List 2020
- Implement device response including session transcript and handover structure acc. to ISO/IEC 18013-7 Annex B for mDoc responses
- Update implementation of OpenID4VP to draft 23
Details:
- Implement token-status-list-06, replacing implementation of Revocation List 2020:
Holder
:- Remove
setRevocationList
- Change
StoredCredential
revocation status to token status
- Remove
InMemoryIssuerCredentialStore
:- Change
revoke
semantics totoken status
semantics - Add token status bitsize
- Change iso credential identifier to make it deterministic
- Change
Issuer
:- Change
buildRevocationList
tobuildStatusList
- Add functions for issuing status lists and status list tokens
- Remove
compileCurrentRevocationLists
- Add inheritance from token status agent interfaces
- Change
IssuerAgent
- Add revocation status for iso credentials
- Change revocation status to token status
IssuerCredentialStore
- Change revocation status semantics to token status semantics
Validator
:- Change revocation status to token status
- Change revocation check to token status invalid check by using new status mechanism
- Add validation for status list tokens
Verifier
:- Remove
setRevocationList
- Add
verifyRevocationStatusListJwtIntegrity
andverifyRevocationStatusListCwtIntegrity
- Remove
CoseService
:- Add check without specifying signer (using cose signed public key or trust store)
VerifiableCredential
: ChangecredentialStatus
tostatus
and using new status mechanismVerifiableCredentialSdJwt
: ChangecredentialStatus
to use new status mechanismMobileSecurityObject
: Add status mechanismiosMain/DefaultZlibService
: Verify compression method was deflate when inflating
- Implement device response including session transcript and handover structure acc. to ISO/IEC 18013-7 Annex B for mDoc responses:
CoseService
adds methodcreateSignedCoseWithDetachedPayload
to not serialize the payload in theCoseSigned
structure- Move
at.asitplus.wallet.lib.agent.Holder.PresentationResponseParameters
toat.asitplus.wallet.lib.agent.PresentationResponseParameters
- Move
at.asitplus.wallet.lib.agent.Holder.CreatePresentationResult
toat.asitplus.wallet.lib.agent.CreatePresentationResult
- In
Holder.createPresentation()
replace parameterschallenge
andaudience
withPresentationRequestParameters
, extending the possible inputs for calculating the verifiable presentation - In
Verifier
andVerifierAgent
add methodsverifyPresentationVcJwt()
,verifyPresentationSdJwt()
andverifyPresentationIsoMdoc()
to directly verify typed objects - For verification of credentials and presentations add
ValidationError
cases to sealed classes - In
OidcSiopVerifier
replacestateToNonceStore
andstateToResponseTypeStore
withstateToAuthnRequestStore
- OpenID4VP refactorings:
- Deprecate
OidcSiopVerifier
, useat.asitplus.wallet.lib.openid.OpenId4VpVerifier
instead - Move classes
ClientIdScheme
,RequestOptions
,AuthResponseResult
out ofOpenId4VpVerifier
- Change type of
RequestOptionsCredential.requestedAttributes
fromList
toSet
- Change type of
RequestOptionsCredential.requestedOptionalAttributes
fromList
toSet
- Deprecate
OidcSiopWallet
, useat.asitplus.wallet.lib.openid.OpenId4VpHolder
instead - Move
RequestObjectJwsVerifier
fromat.asitplus.wallet.lib.oidc
toat.asitplus.wallet.lib.openid
- Move
RemoteResourceRetrieverFunction
fromat.asitplus.wallet.lib.oidc
toat.asitplus.wallet.lib
- Move
AuthorizationResponsePreparationState
fromat.asitplus.wallet.lib.oidc.helpers
toat.asitplus.wallet.lib.openid
- Deprecate
- Update implementation of OpenID4VP to draft 23:
- Support credential format identifier
dc+sd-jwt
in addition tovc+sd-jwt
- Drop
client_id_scheme
and encode it as a prefix toclient_id
- Set
vp_formats_supported
in wallet's metadata - Remove
OpenId4VpVerifier.createSignedMetadata()
, as signed metadata is not covered by any spec - Remove
OpenId4VpVerifier.createQrCodeUrl()
, replace withcreateAutnRequest(requestOptions, creationOptions)
andCreationOptions.RequestByReference
- Remove
OpenId4VpVerifier.createAuthnRequestUrl()
, replace withcreateAutnRequest(requestOptions, creationOptions)
andCreationOptions.Query
- Remove
OpenId4VpVerifier.createAuthnRequestUrlWithRequestObject()
, replace withcreateAutnRequest(requestOptions, creationOptions)
andCreationOptions.RequestByValue
- Remove
OpenId4VpVerifier.createAuthnRequestUrlWithRequestObjectByReference()
, replace withcreateAutnRequest(requestOptions, creationOptions)
andCreationOptions.RequestByReference
- Add explicit
redirect_uri
to allClientIdSchemes
forOpenId4VpVerifier
- Sub classes of
ClientIdScheme
are not data classes, to allow passing parameters with the same names as the sealed base class - Verify requirements whether requests must or must not be signed acc. to the client identifier scheme
- Support
wallet_nonce
andrequest_uri_method
for replay detection on Wallet side
- Support credential format identifier
- General cleanup:
- Remove
SchemaIndex
- Remove
VcLibException
- Remove
- Dependency updates:
- Update signum to 3.12.1
5.2.3
- Be more lenient in parsing OpenId authentication requests
- OpenID4VP: Use correct format of algorithms in metadata for
vp_formats.vc+sd-jwt
- SD-JWT: Support creating SD-JWT with nested structures by passing
.
in the claim names, e.g.address.region
, seeSdJwtCreator
andClaimToBeIssued
5.2.2
5.2.1
5.2.0
- Remote qualified electronic signatures:
- New
Initializer
object invck-openid
which needs to be called at the start of the project if artifact is used - New artifacts
rqes-data-classes
andvck-rqes
which allow handling of remote signature requests as described by the draft of POTENTIAL use-case 5 which is based on the CSC API v2.0.0.2 - To use
vck-rqes
the newInitializer
object invck-rqes
which needs to be called at the start of the project if artifact is used - It fully overrides and replaces the effect of the initializer in
vck-openid
- Change class
InputDescriptor
toDifInputDescriptor
which now implements new interfaceInputDescriptor
- New class
QesInputDescriptor
implementsInputDescriptor
- Refactor sealed class
AuthorizationDetails
to interface- Refactor subclass
OpenIdCredential
to classOpenIdAuthorizationDetails
which implementsAuthrorizationDetails
- Refactor subclass
CSCCredential
to classCscAuthorizationDetails
which implementsAuthorizationDetails
- Refactor subclass
- New interface
RequestParameters
- Remove RQES components from
AuthenticationRequestParameters
- New class
CscAuthenticationRequestParameters
which now holds the RQES components - New class
SignatureRequestParameters
- Refactor
AuthenticationRequestParametersFrom
to generic sealed classRequestParametersFrom
- Refactor
AuthenticationRequestParser
to open classRequestParser
- New
- Selective Disclosure JWT:
- Validate confirmation claims correctly
- ISO 18013-5 credentials:
- Serialize and deserialize device signed items correctly (i.e. considering the namespace of the element)
- Refactorings:
- Adapt to changes in
signum
, i.e. the classesJwsSigned
,JweDecrypted
,CoseSigned
are now typed to their payload, leading to changes inCoseService
andJwsService
to add overloads for typed payloads, as well as members in data classes containing e.g.JwsSigned<*>
- Add constructor parameter
identifier
toIssuerAgent
, to be used as theissuer
property in issued credentials - Remove function
verifyPresentationContainsAttributes()
fromVerifier
, andVerifierAgent
- Remove function
verifyVcJws(it: String): VerifyCredentialResult
fromVerifierAgent
, was only forwarding call toValidator
anyway - Remove secondary constructor from
OidcSiopVerifier
- Remove
keyMaterial
from interfaceVerifier
- Add option to request optional attributes in
OidcSiopVerifier.RequestOptionsCredential
- In subclasses of
SubjectCredentialStore.StoreEntry
replacescheme: ConstantIndex.CredentialScheme
withschemaUri: String
to actually make it serializable
- Adapt to changes in
- Key material:
- Refactor extracting the audience of a verifiable presentation from an OpenID Authn Request (now uses the
client_id
oraudience
before extracting key identifiers) - Add
customKeyId
toKeyMaterial
to not use the DID encoding as the identifier for keys - Do not expect the
audience
of a verifiable presentation to always incude the identifier of a key, but the identifier of the verifier (which may be anything) - Remove additional constructors of
VerifierAgent
, add the required constructor parameteridentifier
- Refactor extracting the audience of a verifiable presentation from an OpenID Authn Request (now uses the
- OpenID for Verifiable Credential Issuance:
- Add
issuerState
toOAuth2Client.createAuthRequest
for OID4VCI flows - Add extension functions to
JwsService
to create JWTs for OAuth 2.0 Attestation-Based Client Authentication - New artefact
vck-openid-ktor
implements a ktor client for OpenID for Verifiable Credential Issuance and OpenID for Verifiable Presentations - Remove
scopePresentationDefinitionRetriever
fromOidcSiopWallet
to keep implementation simple
- Add
- Dependency Updates:
- Signum 3.11.1
- Kotlin 2.1.0 through Conventions 2.1.0+20241204
5.1.0
- Drop ARIES protocol implementation, and the
vck-aries
artifact - Add
credentialScheme
andsubjectPublicKey
to internalCredentialToBeIssued
- Refactor
issueCredential
ofIssuer
to directly get the credential-to-be-issued - Remove now useless interface
IssuerCredentialDataProvider
- Replace
buildIssuerCredentialDataProviderOverride
inCredentialIssuer
withcredentialProvider
to extract user information into a credential - Remove
dataProvider
fromIssuerAgent
s constructor, as it is not needed with the new issuing interface anyway - Replace
relyingPartyUrl
withclientIdScheme
onOidcSiopVerifier
s constructor, to clarify use ofclient_id
in requests - Rename objects in
OpenIdConstants.ProofType
,OpenIdConstants.CliendIdScheme
andOpenIdConstants.ResponseMode
- In all OpenID data classes, serialize strings only, and parse them to crypto data classes (from signum) in a separate property (this increases interop, as we can deserialize unsupported algorithms too)
- Add
publicKeyLookup
function toDefaultVerifierJwsService
to provide valid keys for JWS objects out-of-band (e.g. when they're not included in the header of the JWS) - OID4VCI:
WalletService
supports building multiple authorization details to request a token for more than one credential- Remove
buildAuthorizationDetails(RequestOptions)
forWalletService
, please migrate tobuildScope(RequestOptions)
- Note that multiple
scope
values may be joined with a whitespace
- ISO: Fix deserializing issuer signed items when element identifiers are read after the element values
- SD-JWT:
- Add implementation of JWT VC issuer metadata, see
JwtVcIssuerMetadata
- Pass around decoded data with
SdJwtSigned
in several result classes likeVerifyPresentationResult.SuccessSdJwt
- Rename
disclosures
toreconstructedJsonObject
in several result classes likeAuthnResponseResult.SuccessSdJwt
- Correctly implement confirmation claim in
VerifiableCredentialSdJwt
, migrating fromJsonWebKey
toConfirmationClaim
- Change type of
claimValue
inSelectiveDisclosureItem
fromJsonPrimitive
toJsonElement
to be able to process nested disclosures - Implement deserialization of complex objects, including array claims
- Add option to issue nested disclosures, by using
ClaimToBeIssued
recursively, see documentation there
- Add implementation of JWT VC issuer metadata, see
5.0.1
5.0.1:
- Update JsonPath4K to 2.4.0
- Fix XCF export with transitive dependencies
- Fix verifiable presentation of ISO credentials to contain
DeviceResponse
instead of aDocument
- Data classes for verification result of ISO structures now may contain more than one document