Docs
Compliance

HAIP 1.0

OpenID4VC High Assurance Interoperability Profile compliance

The OpenID4VC High Assurance Interoperability Profile (HAIP) 1.0 was approved in December 2025. It defines mandatory requirements for verifiers and issuers operating in high-assurance environments such as the EU Digital Identity ecosystem.

Spec: openid.net/specs/openid4vc-high-assurance-interoperability-profile-1_0

Verifier compliance

RequirementSpec refStatusNotes
Client ID scheme x509_hash§5CompliantSHA-256 of leaf cert DER, base64url
Response encryption ECDH-ES with P-256§5CompliantEphemeral ECDH key per request
Supported encryption algorithms (A128GCM + A256GCM)§5CompliantIn client_metadata
DCQL query format§5CompliantV1 service uses DCQL exclusively
trusted_authorities with aki type§5CompliantValidator + types support; passthrough to DCQL
Response type vp_token§5Compliant
Response mode direct_post.jwt§5.1Compliant
JAR with request_uri§5.1Compliantx5c signing, 600s expiry
X.509 cert in x5c§7CompliantConfigurable via env
ES256 algorithm§7Compliant
Both mso_mdoc and dc+sd-jwt§5.3CompliantSeparate verification flows
Session transcript (OID4VP Annex B.3.4.1)§5.3.1CompliantSessionTranscript.forOid4Vp()
KB-JWT validation for SD-JWT§5.3.2CompliantIn sd_jwt_verifier.ts
Status/revocation checking (SD-JWT)§5.3CompliantFetches + checks when status claim present
redirect_uri in same-device response§5.1CompliantReturns { redirect_uri } pointing at the server-configured callback (VERIFIER_CALLBACK_URI), only for requests created with callback: true
Ephemeral encryption keys per request§5Compliant#generateAndStoreEcdhKeys()

Issuer compliance

RequirementSpec refStatusNotes
Authorization code flow§4CompliantPAR → authorize → token
PKCE with S256§4Compliantcode_challenge/code_verifier verified
PAR endpoint (RFC 9126)§4.3CompliantPOST /oid4vci/par returns request_uri
pushed_authorization_request_endpoint in metadata§4.1Compliant
require_pushed_authorization_requests: true§4.1Compliant
DPoP (RFC 9449)§4CompliantToken binding via JWK thumbprint
Wallet attestation§4.4.1Partial (optional)attest_jwt_client_auth verified at token + PAR when supplied, but not enforced: none is also advertised in token_endpoint_auth_methods_supported, so unattested clients are accepted
Key attestation proof type§4.5.1Compliantattestation proof type in validators
Nonce endpoint§4.1CompliantPOST /oid4vci/nonce
scope in credential configurations§4.1CompliantTemplate type used as scope
Credential offer with authorization_code grant§4.2CompliantVia useAuthorizationCode flag
Both mso_mdoc and dc+sd-jwt formats§4Compliant
ES256 algorithm§7Compliant
Batch credential issuance§4Compliantbatch_credential_issuance in metadata
RFC 8414 AS metadata§4.1Compliant/.well-known/oauth-authorization-server
code_challenge_methods_supported: ['S256']§4.1Compliant
Pre-authorized code flow§4CompliantBoth grant types supported

Remaining items

These are optional or not yet needed:

ItemSpec refStatusNotes
W3C Digital Credentials API§5.2CompliantBoth OpenID4VP and ISO 18013-7 Annex C protocols supported
haip-vp:// URL scheme§5.1CompliantSupported via scheme selector; openid4vp:// also works with HAIP payload
haip-vci:// URL scheme§4.2Not implementedMAY support; we use openid-credential-offer://
Status/revocation checking (SD-JWT)§5.3CompliantToken Status List with signed JWT endpoint
Status/revocation checking (mDoc)§5.3Not applicableNo standard mDoc revocation mechanism; short-lived certs used instead
Refresh tokens§4.4Not implementedRECOMMENDED, not required
Signed issuer metadata§4.1Not implementedOnly when ecosystem policy demands it