Skip to content

Commit 7616e67

Browse files
authored
fix: list indentation and styling (#640)
Merging as per consensus on today's wg call * fix: list indentation Signed-off-by: Stefan Charsley <[email protected]> * fix styling for consistency Signed-off-by: Stefan Charsley <[email protected]> --------- Signed-off-by: Stefan Charsley <[email protected]>
1 parent 910c144 commit 7616e67

File tree

1 file changed

+54
-53
lines changed

1 file changed

+54
-53
lines changed

openid-4-verifiable-presentations-1_0.md

Lines changed: 54 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -275,9 +275,9 @@ This specification defines the following new request parameters:
275275
`dcql_query`:
276276
: A JSON object containing a DCQL query as defined in (#dcql_query).
277277

278-
Either a `dcql_query` or a `scope` parameter representing a DCQL Query MUST be present in the Authorization Request, but not both.
278+
Either a `dcql_query` or a `scope` parameter representing a DCQL Query MUST be present in the Authorization Request, but not both.
279279

280-
In the context of an authorization request according to [@RFC6749], parameters containing objects are transferred as JSON-serialized strings (using the application/x-www-form-urlencoded format as usual for request parameters).
280+
In the context of an authorization request according to [@RFC6749], parameters containing objects are transferred as JSON-serialized strings (using the application/x-www-form-urlencoded format as usual for request parameters).
281281

282282
`client_metadata`:
283283
: OPTIONAL. A JSON object containing the Verifier metadata values. It MUST be UTF-8 encoded. The following metadata parameters MAY be used:
@@ -293,26 +293,26 @@ In the context of an authorization request according to [@RFC6749], parameters c
293293
`request_uri_method`:
294294
: OPTIONAL. A string determining the HTTP method to be used when the `request_uri` parameter is included in the same request. Two case-sensitive valid values are defined in this specification: `get` and `post`. If `request_uri_method` value is `get`, the Wallet MUST send the request to retrieve the Request Object using the HTTP GET method, i.e., as defined in [@RFC9101]. If `request_uri_method` value is `post`, a supporting Wallet MUST send the request using the HTTP POST method as detailed in (#request_uri_method_post). If the `request_uri_method` parameter is not present, the Wallet MUST process the `request_uri` parameter as defined in [@RFC9101]. Wallets not supporting the `post` method will send a GET request to the Request URI (default behavior as defined in [@RFC9101]). `request_uri_method` parameter MUST NOT be present if a `request_uri` parameter is not present.
295295

296-
If the Verifier set the `request_uri_method` parameter value to `post` and there is no other means to convey its capabilities to the Wallet, it SHOULD add the `client_metadata` parameter to the Authorization Request.
297-
This enables the Wallet to assess the Verifier's capabilities, allowing it to transmit only the relevant capabilities through the `wallet_metadata` parameter in the Request URI POST request.
296+
If the Verifier set the `request_uri_method` parameter value to `post` and there is no other means to convey its capabilities to the Wallet, it SHOULD add the `client_metadata` parameter to the Authorization Request.
297+
This enables the Wallet to assess the Verifier's capabilities, allowing it to transmit only the relevant capabilities through the `wallet_metadata` parameter in the Request URI POST request.
298298

299299
`transaction_data`:
300300
: OPTIONAL. Non-empty array of strings, where each string is a base64url encoded JSON object that contains a typed parameter set with details about the transaction that the Verifier is requesting the End-User to authorize. See (#transaction_data) for details. The Wallet MUST return an error if a request contains even one unrecognized transaction data type or transaction data not conforming to the respective type definition. In addition to the parameters determined by the type of transaction data, each `transaction_data` object consists of the following parameters defined by this specification:
301301

302302
* `type`: REQUIRED. String that identifies the type of transaction data. This value determines parameters that can be included in the `transaction_data` object. The specific values are out of scope of this specification. It is RECOMMENDED to use collision-resistant names for `type` values.
303303
* `credential_ids`: REQUIRED. Non-empty array of strings each referencing a Credential requested by the Verifier that can be used to authorize this transaction. The string matches the `id` field in the DCQL Credential Query. If there is more than one element in the array, the Wallet MUST use only one of the referenced Credentials for transaction authorization.
304304

305-
Each document specifying details of a transaction data type defines what Credential(s) can be used to authorize those transactions. Those Credential(s) can be issued specifically for the transaction authorization use case or re-use existing Credential(s) used for user identification. A mechanism for Credential Issuers to express that a particular Credential can be used for authorization of transaction data is out of scope for this specification.
305+
Each document specifying details of a transaction data type defines what Credential(s) can be used to authorize those transactions. Those Credential(s) can be issued specifically for the transaction authorization use case or re-use existing Credential(s) used for user identification. A mechanism for Credential Issuers to express that a particular Credential can be used for authorization of transaction data is out of scope for this specification.
306306

307-
The following is a non-normative example of a transaction data content, after base64url decoding one of the strings in the `transaction_data` parameter:
307+
The following is a non-normative example of a transaction data content, after base64url decoding one of the strings in the `transaction_data` parameter:
308308

309-
```
310-
{
311-
"type": "example_type",
312-
"credential_ids": [ "id_card_credential" ],
313-
// other transaction data type specific parameters
314-
}
315-
```
309+
```
310+
{
311+
"type": "example_type",
312+
"credential_ids": [ "id_card_credential" ],
313+
// other transaction data type specific parameters
314+
}
315+
```
316316

317317
`verifier_info`:
318318
: OPTIONAL. A non-empty array of attestations about the Verifier relevant to the Credential Request. These attestations MAY include Verifier metadata, policies, trust status, or authorizations. Attestations are intended to support authorization decisions, inform Wallet policy enforcement, or enrich the End-User consent dialog. Each object has the following structure:
@@ -321,17 +321,17 @@ The following is a non-normative example of a transaction data content, after ba
321321
* `data`: REQUIRED. An object or string containing an attestation (e.g. a JWT). The payload structure is defined on a per format level. It is at the discretion of the Wallet whether it uses the information from `verifier_info`. Factors that influence such Wallet's decision include, but are not limited to, trust framework the Wallet supports, specific policies defined by the Issuers or ecosystem, and profiles of this specification. If the Wallet uses information from `verifier_info`, the Wallet MUST validate the signature and ensure binding.
322322
* `credential_ids`: OPTIONAL. A non-empty array of strings each referencing a Credential requested by the Verifier for which the attestation is relevant. Each string matches the `id` field in a DCQL Credential Query. If omitted, the attestation is relevant to all requested Credentials.
323323

324-
See (#verifier-info) for more details.
324+
See (#verifier-info) for more details.
325325

326-
The following is a non-normative example of an attested object:
326+
The following is a non-normative example of an attested object:
327327

328-
```json
329-
{
330-
"format": "jwt",
331-
"data": "eyJhbGciOiJFUzI1...EF0RBtvPClL71TWHlIQ",
332-
"credential_ids": [ "id_card" ]
333-
}
334-
```
328+
```json
329+
{
330+
"format": "jwt",
331+
"data": "eyJhbGciOiJFUzI1...EF0RBtvPClL71TWHlIQ",
332+
"credential_ids": [ "id_card" ]
333+
}
334+
```
335335

336336
## Existing Parameters {#existing_parameters}
337337

@@ -563,34 +563,34 @@ In case of using OpenID4VP over DC API, as defined in (#dc_api), it is at the di
563563

564564
* `redirect_uri`: This prefix value indicates that the original Client Identifier part (without the prefix `redirect_uri:`) is the Verifier's Redirect URI (or Response URI when Response Mode `direct_post` is used). The Verifier MAY omit the `redirect_uri` Authorization Request parameter (or `response_uri` when Response Mode `direct_post` is used). All Verifier metadata parameters MUST be passed using the `client_metadata` parameter defined in (#new_parameters). An example Client Identifier value is `redirect_uri:https://client.example.org/cb`. Requests using the `redirect_uri` Client Identifier Prefix cannot be signed because there is no method for the Wallet to obtain a trusted key for verification. Therefore, implementations requiring signed requests cannot use the `redirect_uri` Client Identifier Prefix.
565565

566-
The following is a non-normative example of an unsigned request with the `redirect_uri` Client Identifier Prefix:
567-
568-
```
569-
HTTP/1.1 302 Found
570-
Location: https://wallet.example.org/universal-link?
571-
response_type=vp_token
572-
&client_id=redirect_uri%3Ahttps%3A%2F%2Fclient.example.org%2Fcb
573-
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
574-
&dcql_query=...
575-
&nonce=n-0S6_WzA2Mj
576-
&client_metadata=%7B%22vp_formats_supported%22%3A%7B%22dc%2Bsd-jwt%22%3A%7B%22sd-jwt_
577-
alg_values%22%3A%20%5B%22ES256%22%5D%2C%22kb-jwt_alg_values%22%3A%20%5B%22ES256%22%5D
578-
%7D%7D%7D
579-
```
566+
The following is a non-normative example of an unsigned request with the `redirect_uri` Client Identifier Prefix:
567+
568+
```
569+
HTTP/1.1 302 Found
570+
Location: https://wallet.example.org/universal-link?
571+
response_type=vp_token
572+
&client_id=redirect_uri%3Ahttps%3A%2F%2Fclient.example.org%2Fcb
573+
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
574+
&dcql_query=...
575+
&nonce=n-0S6_WzA2Mj
576+
&client_metadata=%7B%22vp_formats_supported%22%3A%7B%22dc%2Bsd-jwt%22%3A%7B%22sd-jwt_
577+
alg_values%22%3A%20%5B%22ES256%22%5D%2C%22kb-jwt_alg_values%22%3A%20%5B%22ES256%22%5D
578+
%7D%7D%7D
579+
```
580580
581581
* `openid_federation`: This prefix value indicates that the original Client Identifier (the part without the prefix `openid_federation:`) is an Entity Identifier defined in OpenID Federation [@!OpenID.Federation]. Processing rules given in [@!OpenID.Federation] MUST be followed. The Authorization Request MAY also contain a `trust_chain` parameter. The final Verifier metadata is obtained from the Trust Chain after applying the policies, according to [@!OpenID.Federation]. The `client_metadata` parameter, if present in the Authorization Request, MUST be ignored when this Client Identifier Prefix is used. Example Client Identifier: `openid_federation:https://federation-verifier.example.com`.
582582
583583
* `decentralized_identifier`: This prefix value indicates that the original Client Identifier (the part without the prefix `decentralized_identifier:`) is a Decentralized Identifier as defined in [@!DID-Core]. The request MUST be signed with a private key associated with the DID. A public key to verify the signature MUST be obtained from the `verificationMethod` property of a DID Document. Since DID Document may include multiple public keys, a particular public key used to sign the request in question MUST be identified by the `kid` in the JOSE Header. To obtain the DID Document, the Wallet MUST use DID Resolution defined by the DID method used by the Verifier. All Verifier metadata other than the public key MUST be obtained from the `client_metadata` parameter as defined in (#new_parameters). Example Client Identifier: `decentralized_identifier:did:example:123`.
584584
585-
The following is a non-normative example of a header and a body of a signed Request Object when the Client Identifier Prefix is `decentralized_identifier`:
585+
The following is a non-normative example of a header and a body of a signed Request Object when the Client Identifier Prefix is `decentralized_identifier`:
586586
587-
Header
587+
Header
588588
589-
<{{examples/request/request_header_client_id_did.json}}
589+
<{{examples/request/request_header_client_id_did.json}}
590590
591-
Body
591+
Body
592592
593-
<{{examples/request/request_object_client_id_did.json}}
593+
<{{examples/request/request_object_client_id_did.json}}
594594
595595
* `verifier_attestation`: This Client Identifier Prefix allows the Verifier to authenticate using a JWT that is bound to a certain public key as defined in (#verifier_attestation_jwt). When the Client Identifier Prefix is `verifier_attestation`, the original Client Identifier (the part without the `verifier_attestation:` prefix) MUST equal the `sub` claim value in the Verifier attestation JWT. The request MUST be signed with the private key corresponding to the public key in the `cnf` claim in the Verifier attestation JWT. This serves as proof of possession of this key. The Verifier attestation JWT MUST be added to the `jwt` JOSE Header of the request object (see (#verifier_attestation_jwt)). The Wallet MUST validate the signature on the Verifier attestation JWT. The `iss` claim value of the Verifier Attestation JWT MUST identify a party the Wallet trusts for issuing Verifier Attestation JWTs. If the Wallet cannot establish trust, it MUST refuse the request. If the issuer of the Verifier Attestation JWT adds a `redirect_uris` claim to the attestation, the Wallet MUST ensure the `redirect_uri` request parameter value exactly matches one of the `redirect_uris` claim entries. All Verifier metadata other than the public key MUST be obtained from the `client_metadata` parameter. Example Client Identifier: `verifier_attestation:verifier.example`.
596596
@@ -1526,21 +1526,22 @@ This specification defines how the Verifier can determine Credential formats, pr
15261526

15271527
This specification defines new metadata parameters according to [@!RFC8414].
15281528

1529-
* `vp_formats_supported`: REQUIRED. An object containing a list of name/value pairs, where the name is a Credential Format Identifier and the value defines format-specific parameters that a Wallet supports. For specific values that can be used, see (#format_specific_parameters).
1529+
`vp_formats_supported`:
1530+
: REQUIRED. An object containing a list of name/value pairs, where the name is a Credential Format Identifier and the value defines format-specific parameters that a Wallet supports. For specific values that can be used, see (#format_specific_parameters).
15301531
Deployments can extend the formats supported, provided Issuers, Holders and Verifiers all understand the new format.
15311532

1532-
The following is a non-normative example of a `vp_formats_supported` parameter:
1533+
The following is a non-normative example of a `vp_formats_supported` parameter:
15331534

1534-
```json
1535-
"vp_formats_supported": {
1536-
"jwt_vc_json": {
1537-
"alg_values": [
1538-
"ES256K",
1539-
"ES384"
1540-
]
1541-
}
1542-
}
1543-
```
1535+
```json
1536+
"vp_formats_supported": {
1537+
"jwt_vc_json": {
1538+
"alg_values": [
1539+
"ES256K",
1540+
"ES384"
1541+
]
1542+
}
1543+
}
1544+
```
15441545

15451546
`client_id_prefixes_supported`:
15461547
: OPTIONAL. A non-empty array of strings containing the values of the Client Identifier Prefixes that the Wallet supports. The values defined by this specification are `pre-registered` (which represents the behavior when no Client Identifier Prefix is used), `redirect_uri`, `openid_federation`, `verifier_attestation`, `decentralized_identifier`, `x509_san_dns` and `x509_hash`. If omitted, the default value is `pre-registered`. Other values may be used when defined in the profiles or extensions of this specification.

0 commit comments

Comments
 (0)