Skip to content

Commit

Permalink
Require state/nonce to only contain URL safe characters
Browse files Browse the repository at this point in the history
As discussed in #95 implementations
often make mistakes handling characters that require escaping, character
encoding conversion, etc. There is no advantage to using characters outside
of the standard URL safe characters, and most people using base64url,
UUIDs, JWTs, etc that are by default URL safe, so just make that
restriction clear.

closes #95
  • Loading branch information
jogu committed Mar 5, 2024
1 parent 25a88fc commit c44efe7
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions openid-4-verifiable-presentations-1_0.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ A public key to be used by the Wallet as an input to the key agreement to encryp
The following additional considerations are given for pre-existing Authorization Request parameters:

`nonce`:
: REQUIRED. Defined in [@!OpenID.Core]. It is used to securely bind the Verifiable Presentation(s) provided by the Wallet to the particular transaction. See (#preventing-replay) for details.
: REQUIRED. Defined in [@!OpenID.Core]. It is used to securely bind the Verifiable Presentation(s) provided by the Wallet to the particular transaction. See (#preventing-replay) for details. Values MUST only contain ASCII URL safe characters (uppercase and lowercase letters, decimal digits, hyphen, period, underscore, and tilde).

`scope`:
: OPTIONAL. Defined in [@!RFC6749]. The Wallet MAY allow Verifiers to request presentation of Verifiable Credentials by utilizing a pre-defined scope value. See (#request_scope) for more details.
Expand Down Expand Up @@ -492,7 +492,7 @@ When a VP Token is returned, the respective response MUST include the following
`presentation_submission`:
: REQUIRED. The `presentation_submission` element as defined in [@!DIF.PresentationExchange]. It contains mappings between the requested Verifiable Credentials and where to find them within the returned VP Token. This is expressed via elements in the `descriptor_map` array, known as Input Descriptor Mapping Objects. These objects contain a field called `path`, which, for this specification, MUST have the value `$` (top level root path) when only one Verifiable Presentation is contained in the VP Token, and MUST have the value `$[n]` (indexed path from root) when there are multiple Verifiable Presentations, where `n` is the index to select. The `path_nested` object inside an Input Descriptor Mapping Object is used to describe how to find a returned Credential within a Verifiable Presentation, and the value of the `path` field in it will ultimately depend on the credential format. Non-normative examples can be found further in this section.

Other parameters, such as `state` or `code` (from [@!RFC6749]), or `id_token` (from [@!OpenID.Core]), and `iss` (from [@RFC9207]) MAY be included in the response as defined in the respective specifications.
Other parameters, such as `state` or `code` (from [@!RFC6749]), or `id_token` (from [@!OpenID.Core]), and `iss` (from [@RFC9207]) MAY be included in the response as defined in the respective specifications. `state` values MUST only contain ASCII URL safe characters (uppercase and lowercase letters, decimal digits, hyphen, period, underscore, and tilde).

The `presentation_submission` element MUST be included as a separate response parameter alongside the VP token. Clients MUST ignore any `presentation_submission` element included inside a Verifiable Presentation.

Expand Down Expand Up @@ -951,7 +951,7 @@ The design is illustrated in the following sequence diagram:
!---
Figure: Reference Design for Response Mode `direct_post`

(1) The Verifier selects a `nonce` value as fresh, cryptographically random number with sufficient entropy and associates it with the session.
(1) The Verifier generates at least 16 fresh, cryptographically random bytes with sufficient entropy, associates it with the session and base64url encodes it for use in the nonce parameter.

(2) The Verifier initiates a new transaction at its Response Endpoint.

Expand Down

0 comments on commit c44efe7

Please sign in to comment.