v0.6.0 (dev)
Upgrading
The
neithervalue forsession_type_return_urlin the verification server configuration is no longer supported; usesame_device(the default) with areturn_url_templateinstead.The
pid_issuancesection of the Wallet configuration has been paired down as follows:The
pid_issuer_urlfield is now just calledurl.The value at the
digid/client_idpath has been moved toclient_id.The object contained in
digid_http_confighas been removed.
The
pid_issuerconfiguration has had itsdigid.http_configsection renamed todigid.client_settings. Within this section, thebase_urlfield has been renamed tooidc_identifier, which contains the same value.The supported client identifier prefix (in the context of OpenID4VP, so a “client” here is a relying-party, a verifier) has changed from
x509_san_dnstox509_hash. That means our wallet app expectsx509_hashclient ids. In our issuer server, theclient_idfield, which is part of ausecaseneeds to be updated (in our code that means thedemo_issuer). For example:"client_id": "x509_hash:YYIN_SgqjFj2044q1fpvpa0rxqrXEG0U1xdm2Hw_ohM",
The value of
x509_hashis the base64url-encoded value of the SHA-256 hash of the DER-encoded X.509 certificate.The
attestation_settingssections of both thepid_issuerand theissuance_serverhave undergone significant changes. These sections have been renamed tocredential_configurationsan are now configured per credential format. Each individual section directly represent a Credential Configuration as presented in the Issuer Metadata. The full changes are as follows:The section key now represents a Credential Configuration identifier, where before this was used as the Attestation Type.
The
attestation_typefield was added.The
copies_per_formatfield has been removed and replaced by aformatfield and a top-levelbatch_sizefield, that applies to all issued credentials.The
status_listsection has had agroup_namefield added, in order to decouple status lists from the Attestation Type. Normally this value would be set to the same value as the Credential Configuration identifier.
Related to the previous change, the
IssuerDocumentthe attestation server provides in the context of disclosure-based issuance has had theformatfield added.The Wallet Instance Attestation (WIA) configuration has changed, reflecting a rename from WUA (Wallet Unit Attestation) and the addition of wallet metadata fields:
In the Wallet Provider configuration, all
wua_*fields have been renamed towia_*, and the[wua_status_lists]section has been renamed to[wia_status_list]. Additionally:wua_issuer_identifierhas been replaced by four wallet metadata fields:wia_wallet_name,wia_wallet_version,wia_wallet_link(optional), andwia_wallet_solution_certification_information.A
wia_certificatefield (base64-encoded DER X.509 certificate) must now be provided. The WIA JWT is signed using a certificate chain (x5cheader) instead of a bare key.
In the PID Issuer configuration,
wua_issuer_pubkeyhas been replaced bywia_trust_anchors, a list of base64-encoded DER X.509 CA certificates used to validate WIA tokens.
New features
The Wallet Provider will now block recovery codes during PIN recovery or PID renewal when the newly disclosed recovery code does not match with stored recovery code. This is suspicious because it is already checked by the NL Wallet app as well.
Users can delete non-PID cards from their wallet, via the card detail screen.
When a card is deleted, the wallet now stores this in its history.
Allow incoming BLE connection through ‘Present QR’ screen. The BLE server is now started when this screen is displayed and a remote verifier can connect to trigger navigation to the disclosure flow.
Parse the ISO 18013-5 “close proximity” DeviceRequest and present it in the disclosure screen so the user can share the specified credentials.
If the RP’s DCQL request contains a Trusted Authorities Query of type Authority Key Identifier, both the verification_server and the wallet will now respect this, allowing the RP to request attestations signed by specific issuer keys.
The verification server will now include
session_typein the hash computation of theephemeral_id, making it impossible for any intermediary to change its value.The
timefield will now only be included in theephemeral_idcomputation for sessions that do not use a return URL. As a result, same-device sessions (and cross-device sessions that use a return URL) no longer expire, fixing a UX issue that occurred when the user took too long to enter their PIN.
Interoperability improvements
The verification server now enforces HAIP 1.0 compliance for same-device flows: a
redirect_uriis always returned to the wallet after a successful disclosure. See the Upgrading section for the required configuration change.Sections of both the wallet and issuer code have been updated to be compliant with OpenID4VCI 1.0:
The issuer now provides a nonce endpoint, which replaces the
c_noncevalue in theTokenResponse.The PID issuance flow has been changed to use the Authorization Code flow, instead of a hybrid implementation of the Authorization Code and Pre-authorized Code flow.
The issuer and wallet now support and use Pushed Authorization Requests (PAR) for the PID issuance flow.