openid4vc-high-assurance-interoperabilit July 2025
Yasuda & Lodderstedt Standards Track [Page]
Workgroup:
Digital Credentials Protocols
Published:
Authors:
K. Yasuda
SPRIND
T. Lodderstedt
SPRIND

OpenID4VC High Assurance Interoperability Profile 1.0 - Editor's draft

Abstract

This document defines a profile of OpenID for Verifiable Credentials in combination with the credential formats IETF SD-JWT VC [I-D.ietf-oauth-sd-jwt-vc] and ISO mdoc [ISO.18013-5]. The aim is to select features and to define a set of requirements for the existing specifications to enable interoperability among Issuers, Wallets and Verifiers of Credentials where a high level of security and privacy is required. The profiled specifications include OpenID for Verifiable Credential Issuance [OIDF.OID4VCI], OpenID for Verifiable Presentations [OIDF.OID4VP], IETF SD-JWT VC [I-D.ietf-oauth-sd-jwt-vc], and ISO mdoc [ISO.18013-5].

Table of Contents

1. Introduction

This document defines a set of requirements for the existing specifications to enable interoperability among Issuers, Wallets and Verifiers of Credentials where a high level of security and privacy is required. This document is an interoperability profile that can be used by implementations in various contexts, be it a certain industry or a certain regulatory environment.

This document is not a specification, but a profile. It refers to the specifications required for implementations to interoperate among each other and for the optionalities mentioned in the referenced specifications, defines the set of features to be mandatory to implement.

The profile uses OpenID for Verifiable Credential Issuance [OIDF.OID4VCI] and OpenID for Verifiable Presentations [OIDF.OID4VP] as the base protocols for issuance and presentation of Credentials, respectively. The credential formats used are IETF SD-JWT VC as specified in [I-D.ietf-oauth-sd-jwt-vc] and ISO mdoc [ISO.18013-5]. Additionally, considerations are given on how the issuance of Credentials in both IETF SD-JWT VC [I-D.ietf-oauth-sd-jwt-vc] and ISO mdoc [ISO.18013-5] formats can be performed in the same transaction.

A full list of the open standards used in this profile can be found in Overview of the Open Standards Requirements (reference).

1.1. Audience Target audience/Usage

The audience of the document is implementers that require a high level of security and privacy for their solutions. A non-exhaustive list of the interested parties includes anyone implementing eIDAS 2.0, California Department of Motor Vehicles, Open Wallet Foundation (OWF), IDunion, GAIN, and the Trusted Web project of the Japanese government, but is expected to grow to include other jurisdictions and private sector companies.

2. Terminology

This specification uses the terms "Holder", "Issuer", "Verifier", "Wallet", "Wallet Attestation", "Credential Type" and "Verifiable Credential" as defined in [OIDF.OID4VCI] and [OIDF.OID4VP].

3. Scope

This specification enables interoperable implementations of the following flows:

Implementations of this specification do not have to implement all of the flows listed above, but they MUST be compliant to all of the requirements for a particular flow they chose to implement.

A parameter that is listed as optional to be implemented in a specification that is being profiled (i.e., OpenID4VCI, OpenID4VP, W3C Digital Credentials API, IETF SD-JWT VC, and ISO mdoc) remains optional unless it is stated otherwise in this specification.

Profile of OpenID4VCI defines Wallet Attestation and Key Attestation.

Profile of IETF SD-JWT VC defines the following aspects * Status management of the Credentials, including revocation * Cryptographic Key Binding * Issuer key resolution * Issuer identification (as prerequisite for trust management)

Mandatory to implement crypto suites are defined for all of the flows.

Note that when OpenID4VP is used, the Wallet and the Verifier can either be remote or in-person.

3.1. Assumptions

Assumptions made are the following:

  • The Issuers and Verifiers cannot pre-discover Wallet's capability
  • The Issuer is talking to the Wallet supporting the features defined in this profile (via Wallet invocation mechanism)
  • There are mechanisms in place for Verifiers to discover Wallets' and Issuers' capabilities
  • There are mechanisms in place for Wallets to discover Verifiers' capabilities
  • There are mechanisms in place for Issuers to discover Wallets' capabilities

3.2. Scenarios/Business Requirements

  • Combined Issuance of IETF SD-JWT VC and ISO mdoc
  • Both issuer-initiated and wallet-initiated issuance
  • Presentation and Issuance of PID and (Q)EAA as defined in Architecture and Reference Framework [EU.ARF] implementing [eIDAS2.0].

3.3. Standards Requirements

The standards that are being profiled in this specification are:

Note that these standards in turn build upon other underlying standards, and requirements in those underlying standards also need to be followed.

3.4. Out of Scope

The following items are out of scope for the current version of this document, but might be added in future versions:

  • Trust Management refers to authorization of an Issuer to issue certain types of credentials, authorization of the Wallet to be issued certain types of credentials, authorization of the Verifier to receive certain types of credentials. Although X.509 PKI is extensively utilized in this profile, the methods for establishing trust or obtaining root certificates are out of the scope of this specification.
  • Protocol for presentation of Verifiable Credentials for offline use-cases, e.g. over BLE.
  • Profile of OpenID4VCI to issue ISO mdoc [ISO.18013-5] is defined in ISO 23220-3.
  • Profile of OpenID4VP without using W3C Digital Credentials API to present ISO mdocs is defined in [ISO.18013-7]. For more details, also see Annex B.3 in [OIDF.OID4VP].

4. OpenID for Verifiable Credential Issuance

Both the Wallet and the Credential Issuer:

Both Wallet initiated and Issuer initiated issuance is supported.

4.1. Credential Offer

  • The Grant Type authorization_code MUST be supported as defined in Section 4.1.1 in [OIDF.OID4VCI]
  • For Grant Type authorization_code, the Issuer MUST include a scope value in order to allow the Wallet to identify the desired Credential Type. The Wallet MUST use that value in the scope Authorization parameter.
  • As a way to invoke the Wallet, at least a custom URL scheme haip:// MUST be supported. Implementations MAY support other ways to invoke the Wallets as agreed by trust frameworks/ecosystems/jurisdictions, not limited to using other custom URL schemes.

Note: The Authorization Code flow does not require a Credential Offer from the Issuer to the Wallet. However, it is included in the feature set to allow for Issuer initiated Credential issuance.

Both Issuer and Wallet MUST support Credential Offer in both same-device and cross-device flows.

4.2. Authorization Endpoint

  • MUST use Pushed Authorization Requests (PAR) [RFC9126] to send the Authorization Request.
  • Wallets MUST authenticate itself at the PAR endpoint using the same rules as defined in Section 4.3 for client authentication at the token endpoint.
  • MUST use the scope parameter to communicate Credential Type(s) to be issued. The scope value MUST map to a specific Credential Type. The scope value may be pre-agreed, obtained from the Credential Offer, or the Credential Issuer Metadata.
  • The client_id value in the PAR request MUST be a string that the Wallet has used as the sub value in the client attestation JWT.

4.3. Token Endpoint

  • The Wallets MUST perform client authentication as defined in Section 4.3.1.
  • Refresh tokens are RECOMMENDED to be supported for Credential refresh. For details, see Section 13.5 in [OIDF.OID4VCI].

Note: It is RECOMMENDED to use ephemeral client attestation JWTs for client authentication in order to prevent linkability across Credential Issuers.

Note: Issuers SHOULD be mindful of how long the usage of the refresh token is allowed to refresh a credential, as opposed to starting the issuance flow from the beginning. For example, if the User is trying to refresh a Credential more than a year after its original issuance, the usage of the refresh tokens is NOT RECOMMENDED.

4.3.1. Wallet Attestation

Wallets MUST use Wallet Attestations as defined in Annex E of [OIDF.OID4VCI].

The public key certificate, and optionally a trust certificate chain, used to validate the signature on the Wallet Attestation MUST be included in the x5c JOSE header of the Client Attestation JWT.

4.4. Credential Endpoint

  • The following proof types MUST be supported:

    • jwt proof type using key_attestation
    • attestation proof type

4.4.1. Key Attestation

Wallets MUST support key attestations as defined in Annex D of [OIDF.OID4VCI]. If batch issuance is used, all public keys used in Credential Request SHOULD be attested within a single key attestation.

4.5. Server Metadata

  • The Credential Issuer MUST publish a mapping of every Credential Type it supports to a scope value.

5. OpenID for Verifiable Presentations profile for IETF SD-JWT VC

Requirements for both the Wallet and the Verifier:

6. OpenID for Verifiable Presentations over W3C Digital Credentials API

The following requirements apply for both, the Wallet and the Verifier, unless specified otherwise:

6.1. ISO mdoc specific requirements for OpenID for Verifiable Presentations over W3C Digital Credentials API

Requirements for both the Wallet and the Verifier:

  • ISO mdoc Credential Format specific DCQL parameter, intent_to_retain defined in Annex B.3.1 of [OIDF.OID4VP] MUST be present.
  • When multiple ISO mdocs are being returned, each ISO mdoc MUST be returned in a separate DeviceResponse (as defined in 8.3.2.1.2.2 of [ISO.18013-5]), each matching to a respective DCQL query. Therefore, the resulting vp_token contains multiple DeviceResponse instances.

Note that the Credential Format Identifier and SessionTranscript CBOR structure are defined in [OIDF.OID4VP].

6.2. IETF SD-JWT VC specific requirements for OpenID for Verifiable Presentations over W3C Digital Credentials API

Requirements for both the Wallet and the Verifier:

  • The Credential Format identifier MUST be dc+sd-jwt.
  • IETF SD-JWT VC Credential Format specific DCQL parameters as defined in Section 6.4.1 of [OIDF.OID4VP] MUST be used.

7. SD-JWT VCs

This profile defines the following additional requirements for IETF SD-JWT VCs as defined in [I-D.ietf-oauth-sd-jwt-vc].

Table 1
Claim SD-JWT as issued by the Issuer Normative Definition
iss MUST [RFC7519], Section 4.1.1
iat MUST [RFC7519], Section 4.1.6
exp SHOULD (at the discretion of the Issuer) [RFC7519], Section 4.1.4
cnf MUST [RFC7800]
vct MUST [I-D.ietf-oauth-sd-jwt-vc]
status SHOULD (at the discretion of the Issuer) [I-D.ietf-oauth-status-list]

Any of the flows defined in this specification MUST be used with cryptographic holder binding.

Note: Re-using the same Credential across Verifiers, or re-using the same JWK value across multiple Credentials gives colluding Verifiers a mechanism to correlate the User. There are currently two known ways to address this with SD-JWT VCs. First is to issue multiple instances of the same Credentials with different JWK values, so that if each instance of the Credential is used at only one Verifier, it can be reused multiple times. Another is to use each Credential only once (ephemeral Credentials). It is RECOMMENDED to adopt one of these mechanisms.

Note: If there is a requirement to communicate information about the verification status and identity assurance data of the claims about the subject, the syntax defined by [OIDF.ekyc-ida] SHOULD be used. It is up to each jurisdiction and ecosystem, whether to require it to the implementers of this profile.

Note: If there is a requirement to provide the Subject’s identifier assigned and maintained by the Issuer, the sub claim MAY be used. There is no requirement for a binding to exist between the sub and cnf claims. See the Implementation Considerations section in [I-D.ietf-oauth-sd-jwt-vc].

Note: In some Credential Types, it is not desirable to include an expiration date (eg: diploma attestation). Therefore, this profile leaves its inclusion to the Issuer, or the body defining the respective Credential Type.

7.1. Issuer identification and key resolution to validate an issued Credential

This profile supports two ways to represent and resolve the key required to validate the Issuer signature of an SD-JWT VC, the web PKI-based key resolution and the x.509 certificates.

  • Web-based key resolution: The key used to validate the Issuer's signature on the SD-JWT VC MUST be obtained from the SD-JWT VC Issuer's metadata as defined in Section 5 of [I-D.ietf-oauth-sd-jwt-vc]. The JOSE header kid MUST be used to identify the respective key.
  • x.509 certificates: the SD-JWT VC contains the Issuer's certificate along with a trust chain in the x5c JOSE header. In this case, the iss value MUST be an URL with a FQDN matching a dNSName Subject Alternative Name (SAN) [RFC5280] entry in the leaf certificate.

Note: The Issuer MAY decide to support both options. In which case, it is at the discretion of the Wallet and the Verifier which key to use for the Issuer signature validation.

7.1.1. Cryptographic Holder Binding between VC and VP

  • For Cryptographic Holder Binding, a KB-JWT, as defined in [I-D.ietf-oauth-sd-jwt-vc], MUST always be present when presenting an SD-JWT VC.

7.2. OpenID4VC Credential Format Profile

A Credential Format Profile for Credentials complying with IETF SD-JWT VCs [I-D.ietf-oauth-sd-jwt-vc] is defined in Annex A.3 of [OIDF.OID4VCI] and Annex A.4 of [OIDF.OID4VP].

8. Crypto Suites

Cryptography is required by the following operations:

Issuers, Holders, and Verifiers MUST support P-256 (secp256r1) as a key type with the ES256 JWT algorithm [RFC7518] for the creation and the verification of the above signatures.

When using this profile alongside other cryptosuites, each entity SHOULD make it explicit in its metadata which other algorithms and key types are supported for the cryptographic operations.

9. Hash Algoritms

The hash algorithm SHA-256 MUST be supported by all the entities to generate and validate the digests in the IETF SD-JWT VC and ISO mdoc.

When using this profile alongside other hash algorithms, each entity SHOULD make it explicit in its metadata which other algorithms are supported.

10. Implementations Considerations

10.1. Validity Period of the Signature and the Claim Values

iat and exp JWT claims express both the validity period of both the signature and the claims about the subject, unless there is a separate claim used to express the validity of the claims.

11. Security Considerations

The security considerations in [OIDF.OID4VCI] and [OIDF.OID4VP] apply.

12. Normative References

[I-D.ietf-oauth-sd-jwt-vc]
Terbu, O., Fett, D., and B. Campbell, "SD-JWT-based Verifiable Credentials (SD-JWT VC)", Work in Progress, Internet-Draft, draft-ietf-oauth-sd-jwt-vc-10, , <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-sd-jwt-vc-10>.
[I-D.ietf-oauth-selective-disclosure-jwt]
Fett, D., Yasuda, K., and B. Campbell, "Selective Disclosure for JWTs (SD-JWT)", Work in Progress, Internet-Draft, draft-ietf-oauth-selective-disclosure-jwt-22, , <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-selective-disclosure-jwt-22>.
[I-D.ietf-oauth-status-list]
Looker, T., Bastian, P., and C. Bormann, "Token Status List (TSL)", Work in Progress, Internet-Draft, draft-ietf-oauth-status-list-12, , <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-status-list-12>.
[ISO.18013-5]
ISO/IEC JTC 1/SC 17 Cards and security devices for personal identification, "ISO/IEC 18013-5:2021 Personal identification — ISO-compliant driving license — Part 5: Mobile driving license (mDL) application", , <https://www.iso.org/standard/69084.html>.
[OIDF.OID4VCI]
Lodderstedt, T., Yasuda, K., and T. Looker, "OpenID for Verifiable Credential Issuance", , <https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html>.
[OIDF.OID4VP]
Terbu, O., Lodderstedt, T., Yasuda, K., and T. Looker, "OpenID for Verifiable Presentations - draft 24", , <https://openid.net/specs/openid-4-verifiable-presentations-1_0-24.html>.
[OIDF.ekyc-ida]
yes, Fett, D., Haine, M., Pulido, A., Lehmann, K., and K. Koiwai, "OpenID Connect for Identity Assurance 1.0", , <https://openid.net/specs/openid-connect-4-identity-assurance-1_0-ID4.html>.
[RFC5280]
Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, , <https://www.rfc-editor.org/info/rfc5280>.
[RFC7516]
Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)", RFC 7516, DOI 10.17487/RFC7516, , <https://www.rfc-editor.org/info/rfc7516>.
[RFC7517]
Jones, M., "JSON Web Key (JWK)", RFC 7517, DOI 10.17487/RFC7517, , <https://www.rfc-editor.org/info/rfc7517>.
[RFC7518]
Jones, M., "JSON Web Algorithms (JWA)", RFC 7518, DOI 10.17487/RFC7518, , <https://www.rfc-editor.org/info/rfc7518>.
[RFC7519]
Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, , <https://www.rfc-editor.org/info/rfc7519>.
[RFC7636]
Sakimura, N., Ed., Bradley, J., and N. Agarwal, "Proof Key for Code Exchange by OAuth Public Clients", RFC 7636, DOI 10.17487/RFC7636, , <https://www.rfc-editor.org/info/rfc7636>.
[RFC7800]
Jones, M., Bradley, J., and H. Tschofenig, "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)", RFC 7800, DOI 10.17487/RFC7800, , <https://www.rfc-editor.org/info/rfc7800>.
[RFC9101]
Sakimura, N., Bradley, J., and M. Jones, "The OAuth 2.0 Authorization Framework: JWT-Secured Authorization Request (JAR)", RFC 9101, DOI 10.17487/RFC9101, , <https://www.rfc-editor.org/info/rfc9101>.
[RFC9126]
Lodderstedt, T., Campbell, B., Sakimura, N., Tonge, D., and F. Skokan, "OAuth 2.0 Pushed Authorization Requests", RFC 9126, DOI 10.17487/RFC9126, , <https://www.rfc-editor.org/info/rfc9126>.
[RFC9449]
Fett, D., Campbell, B., Bradley, J., Lodderstedt, T., Jones, M., and D. Waite, "OAuth 2.0 Demonstrating Proof of Possession (DPoP)", RFC 9449, DOI 10.17487/RFC9449, , <https://www.rfc-editor.org/info/rfc9449>.

13. Informative References

[EU.ARF]
European Commission, "European Digital Identity Wallet Architecture and Reference Framework", , <https://eu-digital-identity-wallet.github.io/eudi-doc-architecture-and-reference-framework/latest/>.
[ISO.18013-7]
ISO/IEC JTC 1/SC 17 Cards and security devices for personal identification, "ISO/IEC DTS 18013-7 Personal identification — ISO-compliant driving license — Part 7: Mobile driving license (mDL) add-on functions", , <https://www.iso.org/standard/82772.html>.
[eIDAS2.0]
European Union, "REGULATION (EU) 2024/1183 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 11 April 2024 amending Regulation (EU) No 910/2014 as regards establishing the European Digital Identity Framework", , <https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=OJ:L_202401183>.
[w3c.digital_credentials_api]
Caceres, M., Goto, S., and T. Cappalli, "Digital Credentials API", <https://wicg.github.io/digital-credentials/>.

Appendix A. Acknowledgements

We would like to thank Paul Bastian, Christian Bormann, Mike Jones, Oliver Terbu, Daniel Fett, and Giuseppe De Marco for their valuable feedback and contributions to this specification.

Appendix B. Notices

Copyright (c) 2025 The OpenID Foundation.

The OpenID Foundation (OIDF) grants to any Contributor, developer, implementer, or other interested party a non-exclusive, royalty free, worldwide copyright license to reproduce, prepare derivative works from, distribute, perform and display, this Implementers Draft, Final Specification, or Final Specification Incorporating Errata Corrections solely for the purposes of (i) developing specifications, and (ii) implementing Implementers Drafts, Final Specifications, and Final Specification Incorporating Errata Corrections based on such documents, provided that attribution be made to the OIDF as the source of the material, but that such attribution does not indicate an endorsement by the OIDF.

The technology described in this specification was made available from contributions from various sources, including members of the OpenID Foundation and others. Although the OpenID Foundation has taken steps to help ensure that the technology is available for distribution, it takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this specification or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any independent effort to identify any such rights. The OpenID Foundation and the contributors to this specification make no (and hereby expressly disclaim any) warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to this specification, and the entire risk as to implementing this specification is assumed by the implementer. The OpenID Intellectual Property Rights policy (found at openid.net) requires contributors to offer a patent promise not to assert certain patent claims against other contributors and against implementers. OpenID invites any interested party to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that may cover technology that may be required to practice this specification.

Appendix C. Document History

[[ To be removed from the final specification ]]

-04

-03

-02

-01

-00

Authors' Addresses

Kristina Yasuda
SPRIND
Torsten Lodderstedt
SPRIND