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 | MAY |
Issuer & Verifier Identification
Issuers and verifiers use DID:TDW version 0.3 as identifiers.
DID:TDW/DID:WEBVH
Implementations of this profile:
- MUST set
portabletofalsein the first DID log entry. - MUST set
methodtodid:tdw:0.3in 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_codeMUST 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_issuerMAY be defineddisplayMAY contain the following objectsnameMAY be the self-attested name of the issuerlogoMAY contain the self-attested logo of the issuer.uriMUST be a DATA URL with mime-typeimage/pngorimage/jpgalt_textMAY be a text that describes the logo
localeMAY be the locale of the self-attested issuer metadata
credential_configurations_supportedMUST containformatMUST bevc+sd-jwtcryptographic_binding_methods_supportedMUST bejwkcredential_signing_alg_values_supportedMUST beES256
proof_types_supportedMAY be defined- MUST contain
jwt. proof_signing_alg_values_supportedMUST contain at leastES256
- MUST contain
displayMAY be defined, and when defined MUST at least contain one of the following objectnameMUST be the self-attested name of the credentiallogoMAY contain the self-attested logo of the credential.uriMUST be a DATA URL with mime-typeimage/pngorimage/jpgalt_textMAY be a text that describes the logo
localeMAY be the locale of the self-attested credetial metadatadescriptionMAY be definedbackground_colorMAY be defined
Credential Endpoint
Credential Request
formatMUST bevc+sd-jwtproofMAY be defined, and when defined MUST contain:proof_typeMUST bejwt
JWT Proof Type
The JOSE header MUST contain following values:
algMUST beES256kidMUST be JWK encoded as a DID:JWK
The JWT body MUST contain following values:
nonceMUST be defined, if cryptographic device binding is requested.
Credential Response
credentialMUST be defined
Credential Error Response
If the wallet was sending a signed nonce on their proof, the following value MUST be added:
c_nonceMUST be defined
Token Endpoint
Token Request
grant_typeMUST beurn:ietf:params:oauth:grant-type:pre-authorized_code
Token Response
c_nonceMUST 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_typeMUST bevp_token.response_modeMUST bedirect_postresponse_uriMUST be definedclient_idMAY be set if Verifier authentication is requested.client_id_scheme, if used with a DID, MUST bedid.client_metadataMAY containclient_nameMAY be definedlogo_uriMAY be defined but MUST be a data URL.
nonceMUST be defined, if cryptographic device binding is requested.presentation_definitionMUST be defined- The following features from the DIF Presentation Exchange v2.1.1 MUST be supported.
presentation_definitionMUST containidMUST be definedinput_descriptorsMUST contain at least one object with:idMUST be definednameMAY be definedpurposeMAY be definedformatMAY be defined, when defined MUST bevc+sd-jwt.constraintsMAY be defined, when defined MUST contain objectfieldswith the following propertiespathMUST be definedfilterMAY be defined to be used with thevctclaim from the SD-JWT VC profile
Authorization Response
vp_tokenMUST be definedpresentation_submissionMUST be defined.- The following features from the DIF Presentation Exchange v2.1.1 MUST be supported.
presentation_submissionMUST contain:idMUST be defineddefinition_idMUST be defineddescriptor_mapMUST be defined and MUST contain:idMUST be definedformatMUST bevc+sd-jwtpathMUST 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,iatclaims and/or astatusclaim to express the validity period of an SD-JWT-VC. The wallet and the verifier MUST support those mechanisms. - The
vctclaim MUST be defined and is treated as an unresolvable string. - The
issclaim MUST be a DID. Theissvalue is used to obtain Issuer’s signing key as defined in section Issuer identification and key resolution. - The
subclaim 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
cnfclaim [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
kidparameter.
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_supportedMUST containvctMUST be defined.claimsMAY contain objects with the following propertiesvalue_typeMAY be defineddisplayMAY be defined for each credential claimnameMAY be the localized credential claim namelocaleMAY be the credential claim name locale
orderMAY 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 MUST support the SD-JWT VC representation of the Trust Protocol based on VCs.
- Trust Statements MUST be defined as follows:
kidfrom the JOSE header MUST be an absolutedid:tdwwith a key reference.issandsubfrom the JWT body MUST be adid:tdw.
- The Trust Statement
TrustStatementMetadataV1MUST be supported. - Issuers and verifiers MAY support the Trust Protocol for their own needs.
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. To adress this batch-issuance will be implemented in a future release.