swiyu Trust Infrastructure: Interoperability profile
NOTE
This profile focuses on the Public Beta release and is not complete. It reflects the current state of implementation and will evolve in the future to fullfil the requirements of the swiyu Trust Infrastructure.
Introduction
This document defines a set of requirements based on new or existing technical specifications and aims to enable interoperability between issuers, wallets and verifiers of credentials in the swiyu Public Beta Trust Infrastructure. It is intended as an interoperability profile that can be used by implementers. As such it shows how the referenced specifications can, and sometimes have to be, implemented.
Target Audience/Usage
The target audience of the document are early adopters who want to use the swiyu Public Beta Trust Infrastructure to:
- experience the Confederations infrastructure and assess how it works
- experiment with their use cases
- test the integration of their products and systems
- conduct experiences with regard to interoperability across sectors as well as international interoperability
- get ready for the productive environment in 2026
Scope
The following specifications are in scope of this “Swiss Profile”:
- Issuer & Verifier identification (DID:TDW, respectively the renamed method DID:WEBVH)
- Protocol for issuance of the Verifiable Credentials (OID4VCI)
- Protocol for online presentation of Verifiable Credentials (OID4VP)
- Credential Format (SD-JWT VC)
- Credential Status (Token Status List)
- Cryptographic Device Binding
- Trust Protocol
- Crypto Suites
The following assumptions apply:
- Issuers and verifiers cannot pre-discover the capabilities of wallets.
- Mechanisms that enables wallets to discover the capabilities of issuers and verifiers.
- Mechanisms that enables issuers and verifiers to discover the capabilities of each other exist.
Out of Scope
The following items are currently out of scope but might be added in future versions:
- Protocol for presentation of Verifiable Credentials for offline use-cases, e.g. using BLE
Standard Requirements
The following table defines which specification must be supported by an actor (issuer, verifier, wallet) in order to comply with this profile.
Specification | Issuer | Wallet | Verifier |
---|---|---|---|
OID4VP | MAY | MUST | MUST |
OID4VCI | MUST | MUST | MAY |
DID:TDW/DID:WEBVH | MUST | MUST | MUST |
SD-JWT VC profile | MUST | MUST | MUST |
Status List | MUST | MUST | MUST |
Trust Protocol | MAY | MUST | MUST |
Issuer & Verifier Identification
Issuers and verifiers use DID:TDW version 0.3 as identifiers.
DID:TDW/DID:WEBVH
Implementations of this profile:
- MUST set
portable
tofalse
in the first DID log entry. - MUST set
method
todid:tdw:0.3
in the first DID log entry.
DID Document Format
The following specification defines the requirements of the to DID Document.
Property | Description |
---|---|
@context | MUST contain https://www.w3.org/ns/did/v1 and https://w3id.org/security/jwk/v1 |
id | MUST contain the DID of the DID document |
verificationMethod | MUST contain at least one public key from type PublicKeyJwk |
alsoKnownAS | MUST NOT be used |
controller | MUST NOT be used |
service | MUST NOT be used |
NOTE
Issuer and Verifier have the possibility to add metatada to their DIDs with:
- Self-attestated metadata with OpenID4VCI Server Metadata
- Self-attestated metadata with OpenID4VP Authorization request
- Validated metadata with the Trust Statement in chapter Trust Protocol
OpenID for Verifiable Credential Issuance
Implementations of this profile:
- MUST support the pre-auth code flow.
- MUST support protocol extensions for the SD-JWT VC credential format profile as defined in Section SD-JWT VC.
This chapter maps to OpenID4VCI draft 13
Credential Offer
- The Grant Type
urn:ietf:params:oauth:grant-type:pre-authorized_code
MUST be supported as defined in Section 4.1.1 in OpenID4VCI. - As a way to invoke the wallet, the custom URL scheme
openid-credential-offer://
MUST be supported.
Both sending credential offer same-device and cross-device are supported.
Credential Issuer Metadata
credential_issuer
MAY be defineddisplay
MAY contain the following objectsname
MAY be the self-attested name of the issuerlogo
MAY contain the self-attested logo of the issuer.uri
MUST be a DATA URL with mime-typeimage/png
orimage/jpg
alt_text
MAY be a text that describes the logo
locale
MAY be the locale of the self-attested issuer metadata
credential_configurations_supported
MUST containformat
MUST bevc+sd-jwt
cryptographic_binding_methods_supported
MUST bejwk
credential_signing_alg_values_supported
MUST beES256
proof_types_supported
MAY be defined- MUST contain
jwt
. proof_signing_alg_values_supported
MUST contain at leastES256
- MUST contain
display
MAY be defined, and when defined MUST at least contain one of the following objectname
MUST be the self-attested name of the credentiallogo
MAY contain the self-attested logo of the credential.uri
MUST be a DATA URL with mime-typeimage/png
orimage/jpg
alt_text
MAY be a text that describes the logo
locale
MAY be the locale of the self-attested credetial metadatadescription
MAY be definedbackground_color
MAY be defined
Credential Endpoint
Credential Request
format
MUST bevc+sd-jwt
proof
MAY be defined, and when defined MUST contain:proof_type
MUST bejwt
JWT Proof Type
The JOSE header MUST contain following values:
alg
MUST beES256
kid
MUST be JWK encoded as a DID:JWK
The JWT body MUST contain following values:
nonce
MUST be defined, if cryptographic device binding is requested.
Credential Response
credential
MUST be defined
Credential Error Response
If the wallet was sending a signed nonce on their proof, the following value MUST be added:
c_nonce
MUST be defined
Token Endpoint
Token Request
grant_type
MUST beurn:ietf:params:oauth:grant-type:pre-authorized_code
Token Response
c_nonce
MUST be defined, if cryptographic device binding is requested.
OpenID for Verifiable Presentations
This chapter maps to OpenID4VP draft 20
- MUST support protocol extensions for SD-JWT VC format profile as defined in this specification Section SD-JWT VC.
Authorization Request
- Authorization Request MUST be sent using the request_uri parameter as defined in JWT-Secured Authorization Request (JAR) [RFC9101].
response_type
MUST bevp_token
.response_mode
MUST bedirect_post
response_uri
MUST be definedclient_id
MAY be set if Verifier authentication is requested.client_id_scheme
, if used with a DID, MUST bedid
.client_metadata
MAY containclient_name
MAY be definedlogo_uri
MAY be defined but MUST be a data URL.
nonce
MUST be defined, if cryptographic device binding is requested.presentation_definition
MUST be defined- The following features from the DIF Presentation Exchange v2.1.1 MUST be supported.
presentation_definition
MUST containid
MUST be definedinput_descriptors
MUST contain at least one object with:id
MUST be definedname
MAY be definedpurpose
MAY be definedformat
MAY be defined, when defined MUST bevc+sd-jwt
.constraints
MAY be defined, when defined MUST contain objectfields
with the following propertiespath
MUST be definedfilter
MAY be defined to be used with thevct
claim from the SD-JWT VC profile
Authorization Response
vp_token
MUST be definedpresentation_submission
MUST be defined.- The following features from the DIF Presentation Exchange v2.1.1 MUST be supported.
presentation_submission
MUST contain:id
MUST be defineddefinition_id
MUST be defineddescriptor_map
MUST be defined and MUST contain:id
MUST be definedformat
MUST bevc+sd-jwt
path
MUST be defined
Credential Formats
SD-JWT VC
As credential format, SD-JWT VCs as defined in ietf-oauth-sd-jwt-vc MUST be supported.
In addition, this profile defines the following additional requirements.
Compact serialization MUST be supported as defined in ietf-oauth-selective-disclosure-jwt. The following JWT Claims MUST be supported content
Claim | SD-JWT |
---|---|
vct | MUST |
iss | MUST |
iat | SHOULD |
exp | SHOULD |
status | SHOULD |
sub | MAY |
cnf | MAY |
- The Issuer MUST NOT make any of the JWT Claims in the table above to be selectively disclosable, so that they are always present in the SD-JWT-VC presented by the wallet.
- It is at the discretion of the issuer whether to use
exp
,iat
claims and/or astatus
claim to express the validity period of an SD-JWT-VC. The wallet and the verifier MUST support those mechanisms. - The
vct
claim MUST be defined and is treated as an unresolvable string. - The
iss
claim MUST be a DID. Theiss
value is used to obtain Issuer’s signing key as defined in section Issuer identification and key resolution. - The
sub
claim MAY be used, if there is a requirement to provide the subject’s identifier assigned and maintained by the issuer. - When the issuer decides to use device binding, the
cnf
claim [RFC7800] MUST conform to the definition given in Device Binding Chapter.
Issuer Identification and Key Resolution to validate an Issued Credential
- The key used to validate the issuer’s signature on the SD-JWT VC MUST be obtained by resolving the DID with key reference from the JOSE header
kid
parameter.
Cryptographic Device Binding between Wallet and Verifier
- For cryptographic device binding, a KB-JWT, as defined in I-D.ietf-oauth-sd-jwt-vc, MUST be present when presenting an SD-JWT VC.
WARNING Issuers can issue low assurance VCs without device binding but they can become vulnerable to replay attacks.
OpenID4VC Credential Format Profile
This section specifies how SD-JWT VCs as defined in I-D.ietf-oauth-sd-jwt-vc are used in conjunction with the OpenID4VC specifications.
Format Identifier
The credential format identifier is vc+sd-jwt
. This format identifier is used in issuance and presentation requests.
Credential Issuer Metadata
The following additional credential issuer metadata are defined for this credential format to be used in addition to those defined in Section 10.2 of OpenID4VCI.
credential_configuations_supported
MUST containvct
MUST be defined.claims
MAY contain objects with the following propertiesvalue_type
MAY be defineddisplay
MAY be defined for each credential claimname
MAY be the localized credential claim namelocale
MAY be the credential claim name locale
order
MAY be an array with the credential claim in the order of display
Credential Status
An issuer MAY at their discretion add a status entry to their verifiable credential.
The credential status specification to use depends on the credential format as follow:
Credential format | Specification |
---|---|
SD-JWT VC | Token Status List JSON format only |
Trust Protocol
- Wallets and verifiers MUST support the SD-JWT VC representation of the Trust Protocol based on VCs.
- Trust Statements MUST be defined as follows:
kid
from the JOSE header MUST be an absolutedid:tdw
with a key reference.iss
andsub
from the JWT body MUST be adid:tdw
.
- The Trust Statement
TrustStatementMetadataV1
MUST be supported.
This chapter maps to Trust Protocol based on VCs V0.1
Crypto Suites
Issuers, wallets and verifiers MUST support P-256 (secp256r1) as a key type with ES256
JWT algorithm for signing and signature validation whenever this profiles requires to do so.
SHA256 MUST be supported by all the entities as the hash algorithm to generate and validate digests.
NOTE
When using this profile with other cryptosuites, it is recommended to be explicit about which entity is required to support which curve for signing and/or signature validation
Privacy Considerations
In the current profile, sections SD-JWT VC, credential status and device binding contain no protection against user correlation. Measures to address this challenge are envisioned for a later release, for example, with solutions like batch issuance.