Skip to main content
Version: v0.25.0 (Latest)

Verify credentials

Create an OID4VP verification session from a stored DCQL query, let a real wallet respond, and inspect the resulting session. The Admin Console is the operator path; the REST examples show the same configuration and protocol lifecycle for automation.

Audience: tenant admin or verifier integrator working in a tenant context.

Prerequisites: Onboard a tenant, configure a verifier and its public endpoint, and author or bind a DCQL query. Configure the applicable trust domains before relying on issuer or authority checks.

The examples below are sanitized verification captures. They document request shapes and response states, not a live customer deployment.

Configure the verifier and DCQL query

Use the verifier settings and DCQL binding screens to select the verifier, bind the query, and choose the trust-domain policy that applies to issuer validation.

Navigation: Protocols > Verifier > DCQL bindings and Settings

Deep link: #tenant={tenant}&surface=verifier&instance={instance}&area=dcql-bindings

Verifier DCQL bindings

Tenant-scoped verifier settings example

Tenant-scoped DCQL bindings example

Request a presentation

The verification request references the stored query. The response contains a wallet-facing request_uri and a backend status_uri:

Open the verifier's Test area, choose the bound query, and start a presentation request. The console can display the request URI for a wallet or QR-code handoff.

Verifier presentation test screen

Tenant-scoped verifier testing console example

DCQL for SD-JWT VC and ISO mdoc

One query may ask for more than one credential format. In the captured request:

  • format: "dc+sd-jwt" uses meta.vct_values to match an SD-JWT VC type and claim paths such as family_name and given_name.
  • format: "mso_mdoc" uses meta.doctype_value (the mdoc docType) and namespace-qualified paths such as org.iso.18013.5.1/family_name. The namespace is part of the claim path; do not treat an mdoc claim name as a flat SD-JWT claim.

The mdoc format identifier mso_mdoc and its docType are not interchangeable with an SD-JWT VC vct. Match each credential using the binding appropriate to its wire format.

Trust, status, and completion

During verification, validate the credential signature and holder binding, the issuer or authority against the effective trust-domain policy, and any applicable status information. A successful protocol response does not by itself make an untrusted issuer acceptable. Status checking is also separate from the presentation-session lifecycle: a credential can be cryptographically valid but revoked, suspended, expired, or otherwise unacceptable under policy.

The session moves through protocol states such as authorization_request_retrieved and, after a valid wallet response, a completed verified state. Operators can inspect or cancel a session in the console. REST clients can poll status_uri by correlation id:

Use the verifier Test or Sessions area to refresh the session state, inspect verification results, and cancel an expired or abandoned request.

Verifier presentation sessions

Verifier session settings example

The verifier's trust policy is configured under Settings > Trust domains. That screen writes one trust attachment on (OID4VP_VERIFIER, <verifierId>, CREDENTIAL_ISSUER_TRUST). If it is empty, the decision falls through to the tenant attachment; if the tenant has none either, the presentation fails closed. See Trust domains for the full cascade.

Verifier trust-domain settings example

Wallet and mdoc PKI boundary

A real wallet that supports the requested OID4VP formats is required for an end-to-end protocol proof. Static captures prove the API shapes and the signed request contents; they do not prove wallet interaction, device authentication, mdoc issuer authentication, trust evaluation, status retrieval, or callback delivery.

For ISO 18013-5 mdoc terminology, a DSC (Document Signer Certificate) is the end-entity certificate that signs the MSO. An IACA (Issuing Authority CA) anchors DSCs. A VICAL is a separate ISO 18013-5 Annex C binary CBOR/COSE_Sign1 trust artifact. It must not be conflated with ETSI TS 119 602 JSON/JAdES trust-list material.