Skip to content

Conversation

@martijnharing
Copy link
Contributor

Resolves #561

Copy link
Collaborator

@Sakurann Sakurann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is not my understanding of what we agreed to add to the specification.

I am not ok with changing processing rules for each of the client id prefixes. I was expecting one paragraph on "it is up to the ecosystem to decide whether to signature validation is mandatory or not" that applies to al client id schemes

@Sakurann
Copy link
Collaborator

Sakurann commented May 13, 2025

WG discussion as documented here: #561 (comment)
also add a generic text that applies to all client identifier schemes that clarifies the behavior.

Copy link
Collaborator

@tlodderstedt tlodderstedt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The currently proposed text does not distinguish between DC API and vanilla OpenID4VP. Made a suggestion how it could be modified to differentiate.


* `format`: REQUIRED. A string that identifies the format of the attestation and how it is encoded. Ecosystems SHOULD use collision-resistant identifiers. Further processing of the attestation is determined by the type of the attestation, which is specified in a format-specific way.
* `data`: REQUIRED. An object or string containing an attestation (e.g. a JWT). The payload structure is defined on a per format level. The Wallet MUST validate this signature and ensure binding.
* `data`: REQUIRED. An object or string containing an attestation (e.g. a JWT). The payload structure is defined on a per format level. Whether the Wallet uses the information from the verifier_attestation is out of scope of this specification, but if the Wallet uses the information from the verifier attestation the Wallet MUST validate this signature and ensure binding.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* `data`: REQUIRED. An object or string containing an attestation (e.g. a JWT). The payload structure is defined on a per format level. Whether the Wallet uses the information from the verifier_attestation is out of scope of this specification, but if the Wallet uses the information from the verifier attestation the Wallet MUST validate this signature and ensure binding.
* `data`: REQUIRED. An object or string containing an attestation (e.g. a JWT). The payload structure is defined on a per format level. In case of using OpenID4VP over DC API it is at the discretion of the wallet whether it uses the information from the verifier_attestation, but if the Wallet uses the information from the verifier attestation the Wallet MUST validate this signature and ensure binding.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For verifier_attestations, I would agree with Martijn that this is true for both cases - how to deal with the additional information provided within those should be defined on an ecosystem level imho? (this section is about verifier_attestations, not verifier_attestation)

For the client id schemes/prefixes I would agree that at least for the time being we need to differentiate between vanilla and DC API and enforce validation for vanilla flows and leave more freedom for DC API.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarified the text to bring it in line with the client identifier text, but did not make it only applicable in the context of the DC API.

Make client id verification requirements dependent on the DC API and make them applicable to all client ids
@Sakurann Sakurann requested review from Sakurann and tlodderstedt May 26, 2025 16:40
Co-authored-by: Christian Bormann <8774236+c2bo@users.noreply.github.com>
Copy link
Contributor

@awoie awoie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm generally ok with this direction. Editorially, I think the DC API exception should go into the DC API Annex since the Annex is supposed to be self-contained.

Something like this:

The client_id parameter MUST be omitted in unsigned requests defined in Appendix A.3.1. The Wallet MUST ignore any client_id parameter that is present in an unsigned request.

Parameters defined by a specific Client Identifier Prefix (such as the trust_chain parameter for the OpenID Federation Client Identifier Prefix) are also supported over the W3C Digital Credentials API.

The client_id parameter MUST be present in signed requests defined in Appendix A.3.2, as it communicates to the wallet which Client Identifier Prefix and Client Identifier to use when authenticating the client through verification of the request signature or retrieving client metadata.

NEW:

In case of using OpenID4VP over DC API as defined in (#dc_api) it is at the discretion of the Wallet (for example based on policies from ecosystems, profiles, issuers or Holders) whether it uses the information from a client identifier. If the Wallet uses information from a client identifier, the Wallet must perform all the verification requirements for that client identifier as defined below. If it doesn't use the information from a client identifier, the Wallet does not need to implement the verification requirements for that client identifier as defined below.

Copy link
Collaborator

@tlodderstedt tlodderstedt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will approve pending Kristina's proposed change is incorporated.

Copy link
Member

@c2bo c2bo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 for Kristina's suggestions. I don't think it's super important but I'd also agree with Oliver that having the DC API specific parts in the DCP section makes sense.

@Sakurann
Copy link
Collaborator

wg discussion
@martijnharing please incorporate Kristina's suggestions and we can merge

Implement review suggestions

Co-authored-by: Kristina <52878547+Sakurann@users.noreply.github.com>
@Sakurann Sakurann requested review from awoie, c2bo and tlodderstedt June 2, 2025 23:08
Minor edit

Co-authored-by: Christian Bormann <8774236+c2bo@users.noreply.github.com>
Copy link
Contributor

@awoie awoie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

approving but we need to update doc history.

@Sakurann Sakurann merged commit eb61991 into main Jun 3, 2025
2 checks passed
@Sakurann Sakurann added this to the Final 1.0 milestone Jun 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Clarify when signature verification is not required

7 participants