openid / openid/OpenID4VP

Clarification Request: Interpretation of terminate, reject, and return an error in OpenID4VP

Open
#757 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

question
Dominant language
Shell
Stars
112
Forks
38
Avg merge
12d 19h
Merged PRs (30d)
4

Description

The specification uses the terms terminate, reject, and return an error in different contexts. Clarification is requested on the expected behavior and distinction between these terms.

1. terminate

Reference: [OpenID4VP Section 5.10.1](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#section-5.10.1-5)

The Wallet MUST extract the set of Authorization Request parameters from the Request Object. The Wallet MUST only use the parameters in this Request Object, even if the same parameter was provided in an Authorization Request query parameter. The Client Identifier value in the client_id Authorization Request parameter and the Request Object client_id claim value MUST be identical, including the Client Identifier Prefix. If any of these conditions are not met, the Wallet MUST terminate request processing.

Our understanding is that terminate represents a hard stop in request processing. In this case, the Wallet does not continue the VP flow and does not notify the Verifier.

2. reject

Reference: [OpenID4VP Section 5.8](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#section-5-8)

The Wallet MUST ignore any unrecognized parameters, other than the transaction_data parameter. One exception to this rule is the transaction_data parameter. Wallets that do not support this parameter MUST reject requests that contain it.

3. return an error

Reference: [OpenID4VP Section 8.4](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#section-8.4-3)

If the Wallet does not support transaction_data parameter, it MUST return an error upon receiving a request that includes it.

Clarification Required

For terminate, the expected behavior appears clear: the Wallet stops processing immediately without notifying the Verifier.

However, there is ambiguity regarding the difference between reject and return an error.

Specifically, for a Wallet that does not support the transaction_data parameter:

  • Does reject mean that the Wallet should stop processing the request locally without notifying the Verifier, or should the Wallet notify the Verifier before ending the VP flow?
  • Does return an error mean that the Wallet should notify the Verifier through the available error reporting mechanism before ending the VP flow?

For example, if the VP request contains transaction_data and uses direct_post response mode with a response_uri, should the Wallet notify to Verifier:

POST /response_uri

{
  "error": "invalid_transaction_data",
  "error_description": "Transaction data feature is not supported by the Wallet"
}

Could you please clarify:

  1. The intended distinction between terminate, reject, and return an error.
  2. Whether reject and return an error result in different Wallet behaviors.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with OpenID4VP Sections 5.8, 5.10.1, and 8.4, then compare their uses of “terminate,” “reject,” and “return an error.” Review the direct_post example with response_uri and transaction_data; done means the specification clearly distinguishes the Wallet behaviors and error-reporting expectations.

Written by the indexing model from the issue text.

Assessment

Domain
authentication
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.