You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: openid-4-verifiable-credential-issuance-1_0.md
+49-3Lines changed: 49 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1257,9 +1257,16 @@ For example, the metadata for the Credential Issuer Identifier `https://issuer.e
1257
1257
1258
1258
Communication with the Credential Issuer Metadata Endpoint MUST utilize TLS.
1259
1259
1260
-
To fetch the Credential Issuer Metadata, the requester MUST send an HTTP request using the GET method and the path formed following the steps above. The Credential Issuer MUST return a JSON document compliant with this specification using the `application/json` media type and the HTTP Status Code 200.
1260
+
To fetch the Credential Issuer Metadata, the Wallet MUST send an HTTP request using the GET method and the path formed following the steps above. The Wallet is RECOMMENDED to send an `Accept` header in the HTTP GET request to indicate the Content Type(s) it supports, and by doing so, signaling whether it supports signed metadata.
1261
1261
1262
-
The Wallet is RECOMMENDED to send an `Accept-Language` Header in the HTTP GET request to indicate the language(s) preferred for display. It is up to the Credential Issuer whether to:
1262
+
The Credential Issuer MUST respond with HTTP Status Code 200 and return the Credential Issuer Metadata containing the parameters defined in (#credential-issuer-parameters) as either
1263
+
1264
+
* an unsigned JSON document using the media type `application/json`, or
1265
+
* a signed JSON Web Token (JWT) containing the Credential Issuer Metadata in its payload using the media type `application/jwt`.
1266
+
1267
+
The Credential Issuer MUST support returning metadata in an unsigned form 'application/json' and MAY support returning it in a signed form 'application/jwt'. In all cases the Credential Issuer MUST indicate the media type of the returned Metadata using the HTTP `Content-Type` header. It is RECOMMENDED for Credential Issuers to respond with a `Content-Type` matching to the Wallet's requested `Accept` header when the requested content type is supported.
1268
+
1269
+
The Wallet is RECOMMENDED to send an `Accept-Language` header in the HTTP GET request to indicate the language(s) preferred for display. It is up to the Credential Issuer whether to:
1263
1270
1264
1271
* send a subset the metadata containing internationalized display data for one or all of the requested languages and indicate returned languages using the HTTP `Content-Language` Header, or
1265
1272
* ignore the `Accept-Language` Header and send all supported languages or any chosen subset.
### Signed Metadata {#credential-issuer-signed-metadata}
1285
+
1286
+
The signed metadata MUST be secured using a JSON Web Signature (JWS) [@!RFC7515] and contain the following elements:
1287
+
1288
+
* in the JOSE header,
1289
+
*`alg`: REQUIRED. A digital signature algorithm identifier such as per IANA "JSON Web Signature and Encryption Algorithms" registry [@IANA.JOSE]. It MUST NOT be `none` or an identifier for a symmetric algorithm (MAC).
1290
+
*`typ`: REQUIRED. MUST be `openidvci-issuer-metadata+jwt`, which explicitly types the key proof JWT as recommended in Section 3.11 of [@!RFC8725].
1291
+
1292
+
* in the JWT body,
1293
+
*`iss`: OPTIONAL. String denoting the party attesting to the claims in the signed metadata
1294
+
*`sub`: REQUIRED. String matching the Credential Issuer Identifier
1295
+
*`iat`: REQUIRED. Integer for the time at which the Credential Issuer Metadata was issued using the syntax defined in [@!RFC7519].
1296
+
*`exp`: OPTIONAL. Integer for the time at which the Credential Issuer Metadata is expiring, using the syntax defined in [@!RFC7519].
1297
+
1298
+
When requesting signed metadata, the Wallet MUST establish trust in the signer of the metadata. Otherwise, the Wallet MUST reject the signed metadata. When validating the signature, the Wallet obtains the keys to validate the signature before processing the metadata, e.g. using JOSE header parameters like `x5c`, `kid` or `trust_chain` to convey the public key. The concrete mechanisms how to do that are out of scope of this specification.
This specification defines the following Credential Issuer Metadata parameters:
@@ -1296,7 +1319,6 @@ This specification defines the following Credential Issuer Metadata parameters:
1296
1319
*`encryption_required`: REQUIRED. Boolean value specifying whether the Credential Issuer requires the additional encryption on top of TLS for the Credential Response. If the value is `true`, the Credential Issuer requires encryption for every Credential Response and therefore the Wallet MUST provide encryption keys in the Credential Request. If the value is `false`, the Wallet MAY choose whether it provides encryption keys or not.
1297
1320
*`batch_credential_issuance`: OPTIONAL. Object containing information about the Credential Issuer's support for issuance of multiple Credentials in a batch in the Credential Endpoint. The presence of this parameter means that the issuer supports more than one key proof in the `proofs` parameter in the Credential Request so can issue more than one Verifiable Credential for the same Credential Dataset in a single request/response.
1298
1321
*`batch_size`: REQUIRED. Integer value specifying the maximum array size for the `proofs` parameter in a Credential Request. It MUST be 2 or greater.
1299
-
* `signed_metadata`: OPTIONAL. String that is a signed JWT. This JWT contains Credential Issuer metadata parameters as claims. The signed metadata MUST be secured using JSON Web Signature (JWS) [@!RFC7515] and MUST contain an `iat` (Issued At) claim, an `iss` (Issuer) claim denoting the party attesting to the claims in the signed metadata, and `sub` (Subject) claim matching the Credential Issuer identifier. If the Wallet supports signed metadata, metadata values conveyed in the signed JWT MUST take precedence over the corresponding values conveyed using plain JSON elements. If the Credential Issuer wants to enforce use of signed metadata, it omits the respective metadata parameters from the unsigned part of the Credential Issuer metadata. A `signed_metadata` metadata value MUST NOT appear as a claim in the JWT. The Wallet MUST establish trust in the signer of the metadata, and obtain the keys to validate the signature before processing the metadata. The concrete mechanism how to do that is out of scope of this specification and MAY be defined in the profiles of this specification.
1300
1322
*`display`: OPTIONAL. A non-empty array of objects, where each object contains display properties of a Credential Issuer for a certain language. Below is a non-exhaustive list of valid parameters that MAY be included:
1301
1323
*`name`: OPTIONAL. String value of a display name for the Credential Issuer.
1302
1324
*`locale`: OPTIONAL. String value that identifies the language of this object represented as a language tag taken from values defined in BCP47 [@!RFC5646]. There MUST be only one object for each language identifier.
@@ -2781,6 +2803,28 @@ in the manner described in [@RFC6838].
2781
2803
* Change controller: OpenID Foundation Digital Credentials Protocols Working Group - [email protected]
2782
2804
* Provisional registration? No
2783
2805
2806
+
### application/openidvci-issuer-metadata+jwt
2807
+
2808
+
* Type name: `application`
2809
+
* Subtype name: `openidvci-issuer-metadata+jwt`
2810
+
* Required parameters: n/a
2811
+
* Optional parameters: n/a
2812
+
* Encoding considerations: Uses JWS Compact Serialization, as specified in [@!RFC7515].
2813
+
* Security considerations: See the Security Considerations in [@!RFC7519].
2814
+
* Interoperability considerations: n/a
2815
+
* Published specification: (#credential-issuer-signed-metadata) of this specification
2816
+
* Applications that use this media type: Applications that use signed metadata format defined in this specification
2817
+
* Additional information:
2818
+
- Magic number(s): n/a
2819
+
- File extension(s): n/a
2820
+
- Macintosh file type code(s): n/a
2821
+
* Person & email address to contact for further information: Torsten Lodderstedt, [email protected]
0 commit comments