Update #25

Hey friends,

With the latest release, we added support for the pre-auth transaction pin in the wallet API, added onboarding endpoints for IACA & Document Signers for mDL issuance in the Issuer API, introduced a new status policy and much more.

 

Community Stack (v0.15.0/0.15.1)

Below are all features available through v0.15.0/0.15.1 of the identity lib. Checkout the full change log here and here. Want to learn more about the identity lib in general? Check out our intro video.

 
 

Features

Wallet API

Pre-Auth Flow Transaction Pin Support

Credential issuance now accepts an optional pinOrTxCode parameter when calling POST /exchange/useOfferRequest. Supply a PIN or transaction code from the issuer when required.

Extension of Microsoft Entra ID OIDC Login Handling

The wallet API now attempts to redeem an authorization code for an id_token when a JWT cannot be validated, improving compatibility with providers returning opaque tokens. Trace logging has been added around OIDC login routes and authentication flows to aid debugging. Configuration changes require publicBaseUrl to be set in oidc.conf; keycloakUserApi is now optional.

Support for signing flattened JWS+Json

The wallet API’s /keys/{keyId}/sign endpoint now understands Flattened JWS JSON payloads. More info in this PR here.

Wallet UI

Credential Display

Visual rendering of credential cards was updated to show issuer logos and support background images.

Multiple Matching Credentials Handling

When multiple credentials of the same type match a presentation request, the web wallet now groups them and prompts users to choose one.

Credential Deletion Logic

Deleting a credential from the web-wallet permanently removes it by default (uses permanent=true).

Issuer API

IACA & Document Signer Onboarding for mDL Issuance

New onboarding endpoints to generate a self‑signed Issuing Authority Certification Authority certificate (docu link) and issue Document Signer certificates bound to an IACA (docu link).

Credential Branding

Credential branding capabilities were extended. Issuer metadata can now specify an optional secondary_image alongside existing logo and background fields. Example metadata.

Verifier API

Status Policy

A flexible status policy to validate common status types like revocation or suspension, but also custom reasons based on the BitstringStatusList, StatusList2021, RevocationList2020, TokenStatusList standards. Learn more here.


Fixes & Improvements

EBSI Environment Updates

DID resolution works now with both the conformance & pilot registries. Update to handle nested descriptor objects in presentation verification. Link to PR here and here.

Wallet UI

The wallet interface now truncates long user names with an ellipsis and shows the full name on hover. This prevents layout issues when the user name is unusually long. Link to PR.

Presentation Definition Parsing Improvement

Credentials containing arrays are now correctly matched when the filter specifies a string type. Link to PR.

SD-JWT VC Presentation Handling

The verifier can now process presentations containing SD‑JWT credentials directly or embedded in W3C VPs. Link to PR.

EBSI - Cannot sign IDToken response

Improved key resolution: signing a message now accepts a key ID, DID or verification method ID. Signatures now include the JWT type header by default and support partially formed JWS JSON data. Link to PR.

Multiple Keys Support for DID Resolution

The DID resolution libraries and verifier now handle DID documents containing several keys. Verification of SD‑JWT credentials and general JWS signatures iterates over every resolved key, improving compatibility with multi‑key DID documents. Link to PR.

SD-JWT credential format parsing

The library now handles credential_format values containing spaces (e.g., vc sd-jwt) in addition to the standard vc+sd-jwt representation. Link to PR.

Spec implementation for BitstringStatusList on list encoding

The verification library now properly distinguishes between regular and multibase Base64‑URL status lists. Link to PR


Docs / Docker Compose

mDoc Lib Documentation Expansion

Detailed guidance on encoding revocation status with IETF Status or Identifier Lists, new examples for NFC, BLE, and Wi-Fi Aware to create and parse DeviceEngagement structures, and expanded instructions for signing documents and incorporating revocation data. Find docs here.

Docker Compose

Docker images now reference version and repository settings from the .env file, allowing you to change image sources and host names without editing docker-compose.yaml. Ensure you set the new IMAGE_PREFIX, SERVICE_HOST, and version variables (VERSION_OPA, VERSION_VAULT, VERSION_VC_REPO) when running the services. Link to PR


Breaking Changes

SD-JWT VC Lib

Any code calling SDJwtVC.sign(...), SDJwtVC.doSign(...), or SDJwtVC.defaultPayloadProperties(...) must now provide the status parameter as a JsonObject? instead of a String?.


Enterprise Stack (v0.7.0)

Below are all features available through v0.7.0 of the enterprise stack. Want to learn more about the enterprise stack in general? Check out our intro video.

 
 

Features

Holder Policies for Silent Wallet Flows

Use holder policies to allow users to set granular sharing rules for credentials, ensuring consent-first data sharing during silent issuance and verification flows. Learn more here.

New Status Policy in Verifier Service

A flexible status policy to validate common status types like revocation or suspension, but also custom reasons based on the BitstringStatusList, StatusList2021, RevocationList2020, TokenStatusList standards. Learn more here.

Support for Non-Expiring Issuance Sessions

The Issuer Service API now allows for the creation of non-expiring issuance sessions. When you call ⁠POST /issuer-service-api/credentials/issue, you can set the session to remain active indefinitely by including the parameter ⁠expiresInSeconds: -1. If you prefer a session with a specific duration, you can specify the desired length in seconds using the ⁠expiresInSeconds parameter. By default, if this parameter is omitted, the session will expire after five minutes.

mDL Issuance Simplified

The mDL issuance request no longer requires the trustedRootCAs field. Also, the OpenAPI examples have been updated.

Credential Branding Extension

Issuers can now provide a secondary image for the credential branding information when setting up an issuer service. See an updated example in the SWAGGER docs here. Example Name -> [Create Issuer with credential branding information]

Enterprise UI Updates

  • The management of service configuration in JSON format has been implemented for the following services: DID registry, KMS, Status, Credential Store, DID Store, Verifier, and Wallet.

  • Improved Authorization Request handling when presenting credentials via the wallet service UI.

Fixes

SD-JWT VC Display Info Loading

When you issue an SD-JWT VC credential using the credentials/issue endpoint of the issuer service, the display information will now be correctly retrieved from the issuer service configuration. This happens if you do not provide any display information directly in your issuance request.

Wallet Service Key Enforcement

The wallet presentation flow no longer enforces that holder keys must be secp256r1. Applications can now present non‑MDOC credentials with other key types.

Docs

OpenAPI documentation improved

Each endpoint now features clearer descriptions, and the OpenID4VCI specifications include the standardVersion as a path parameter. These updates ensure that clients generated from api.json accurately reflect the API behavior.


Community favorites

How To Video Series

Community Stack Tutorial

In our latest video tutorial, learn to build an end-to-end digital ID use-case with the walt.id Community Stack by setting up a custodial wallet, issuing and storing a W3C-compliant University Degree Credential, and securely verifying it using the Issuer, Wallet, and Verifier APIs;

Checkout the video

 
 

Feature List & Roadmap

Overview - product features today and upcoming


PS: If you enjoy working with our tools, make sure to leave us a ⭐ on GitHub

Share an idea, ask a question, or chat?

Next
Next

Update #24