Skip to content

Add credential dataset version - #472

Open
awoie wants to merge 45 commits into
mainfrom
awoie/add-credential-versioning
Open

awoie wants to merge 45 commits into
mainfrom
awoie/add-credential-versioning

Conversation

@awoie

@awoie awoie commented Mar 25, 2025 •

Copy link
Copy Markdown
Contributor

Fixes #278

  • Defines term
  • Adds param to credential response and deferred credential response; param is required for issuers to return, and for wallets to not always expect to not break 1.0/1.1 implementations.

Comment thread openid-4-verifiable-credential-issuance-1_0.md Outdated
Comment thread openid-4-verifiable-credential-issuance-1_0.md Outdated

@tplooker tplooker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Minor editorial review, generally very supportive of this proposal I think its a critical feature. Few other thoughts

  • We should consider making this feature required as leaving it optional will make communicating credential updates/refreshes difficult.
  • I believe the specification would benefit from a seperate additional endpoint that enables a wallet to ask if there are any updates for a specific credential. Otherwise without this a wallet is forced to ask for a new credential in order to determine whether anything has changed.

@tplooker

Copy link
Copy Markdown
Contributor

Only other thing that came to mind on this topic that perhaps we need to discuss is how we support different datasets versus different versions of the same dataset as I suspect in the event an issuer is issuing two different datasets for the same credential (e.g two credentials about different people), to the same wallet this identifier would become ambiguous.

@Sakurann

Sakurann commented May 5, 2025

Copy link
Copy Markdown
Collaborator

temporarily close to prevent confusion - will reopen once 1.0 goes out

@Sakurann

Copy link
Copy Markdown
Collaborator

reopening now that 1.0 has been published. Please push the changes to 1.1.md, and not 1.0.md

@awoie
awoie force-pushed the awoie/add-credential-versioning branch from 1af74c9 to 5846457 Compare January 27, 2026 17:01
@awoie
awoie requested a review from tplooker January 27, 2026 17:03
@awoie

awoie commented Jan 27, 2026

Copy link
Copy Markdown
Contributor Author

@Sakurann @jogu fixed the merge conflicts. Please review again @tplooker and others.

@awoie

awoie commented Jan 27, 2026

Copy link
Copy Markdown
Contributor Author

Only other thing that came to mind on this topic that perhaps we need to discuss is how we support different datasets versus different versions of the same dataset as I suspect in the event an issuer is issuing two different datasets for the same credential (e.g two credentials about different people), to the same wallet this identifier would become ambiguous.

@tplooker If the same credential configuration is used for two different initial data sets, then you would need some additional mechanism. Wouldn't this be rather two distinct credential configurations, e.g., child, parent configuration?

We could also introduce another layer between credential configuration and credential dataset identifier (version)?

Is there a third option and do you have a proposal, e.g., through some new endpoint?

Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated

@Sakurann Sakurann left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it would be good to add a bit more description of the feature this parameter enables outside the definition of a term?

Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated
@jogu

jogu commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Discussed in DCP WG today. Recommended path forward is this PR keeps SHOULD and gets merged, an issue is raised to track wallet capability negotiation as a general feature, then at such time that that feature gets added, likely these SHOULDs should become MUSTs.

That issue hasn't been raised yet I think?

Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated
Co-authored-by: Joseph Heenan <joseph@heenan.me.uk>
@brentzundel

Copy link
Copy Markdown
Collaborator

Discussed in WG today: @brentzundel will raise the issue mentioned.

@brentzundel

Copy link
Copy Markdown
Collaborator

FYI #802 created.

@awoie awoie left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Approved

Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated
Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated
Co-authored-by: Christian Bormann <chris.bormann@gmx.de>
* `notification_id`: OPTIONAL. String identifying one or more Credentials issued in one Credential Response. It MUST be included in the Notification Request as defined in (#notification). It MUST not be used if the `credentials` parameter is not present.
* `credential_metadata`: OPTIONAL. Object that contains additional metadata specific to the issued Credential(s). The definitions and contained parameters for this Object are identical to the `credential_metadata` parameter as defined in Credential Issuer Metadata (see (#credential-issuer-metadata)) See (#display-metadata-considerations) for implementation considerations on credential metadata.
* `credential_dataset_id`: RECOMMENDED. A string containing the Credential Dataset Identifier of the Credential Dataset from which the returned Credential(s) were issued. Together with the `credential_dataset_version` parameter, it allows Wallets to determine if previously received Credentials may be superseded. See (#credential-dataset-identifier-implementation) for implementation considerations.
* `credential_dataset_version`: RECOMMENDED. A string containing the Credential Dataset Version associated with the returned Credential(s). This allows Wallets to detect changes to the underlying Credential Dataset across different Credential Responses. It MUST be present if `credential_dataset_id` is present and not be present otherwise. See (#credential-dataset-identifier-implementation) for implementation considerations.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@c2bo I added your suggested text, but removed your suggestion to change to OPTIONAL, as it did not match the RECOMMENDED in credential_dataset_id. Please re-discuss if you think OPTIONAL makes sense

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@paulbastian It seems @c2bo approved after changing it to RECOMMENDED, so this should be fine.

@c2bo c2bo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We probably want to add similar text that we already have with notification_id for both values that makes clear these values should only co-exist with a credential response - something like this

It MUST not be used if the credentials parameter is not present.

otherwise looks good to me now

@fkj fkj left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Generally looks fine, but some editorial nits.

Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated
Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated
Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated
Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated
Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated
Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated
Comment thread 1.1/openid-4-verifiable-credential-issuance-1_1.md Outdated
awoie and others added 11 commits September 17, 2026 12:28
Co-authored-by: Frederik Krogsdal Jacobsen <fkj@users.noreply.github.com>
Co-authored-by: Frederik Krogsdal Jacobsen <fkj@users.noreply.github.com>
Co-authored-by: Frederik Krogsdal Jacobsen <fkj@users.noreply.github.com>
Co-authored-by: Frederik Krogsdal Jacobsen <fkj@users.noreply.github.com>
Co-authored-by: Frederik Krogsdal Jacobsen <fkj@users.noreply.github.com>
Co-authored-by: Frederik Krogsdal Jacobsen <fkj@users.noreply.github.com>
Addresses c2bo's review comment: mirror the `notification_id` presence
rule for the Credential Dataset parameters, and apply fkj's remaining
"may be superseded" -> "are superseded" suggestion.

- `credential_dataset_id` is RECOMMENDED only when `credentials` is
  present, and MUST NOT be used otherwise. `credential_dataset_tag` is
  already tied to `credential_dataset_id`, so it inherits the rule.
- The Deferred Credential Response said unconditionally that it SHOULD
  use both parameters, which also covered the 202 "more time needed"
  branch that carries no Credentials.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Pre-existing casing slips on the two neighbouring Credential Response
parameters. Separate commit so it can be dropped if reviewers would
rather keep this PR's diff minimal.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Addresses Joseph's review comment asking whether these fields are
intended to be user visible. Explanatory only, no new normative
requirement.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Use RECOMMENDED rather than SHOULD so the requirement level matches
`credential_dataset_id`/`credential_dataset_tag` in (#credential-response)
verbatim, and drop the restated `credentials` condition, which the MUST NOT
in the parameter definition already covers.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The MUST NOT already scopes the parameter to responses carrying
`credentials`, matching how `notification_id` is specified, and the
Deferred Credential Response now reads RECOMMENDED unconditionally too.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@awoie

awoie commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

@c2bo Applied your suggestion on "if credentials param is present".

@awoie

awoie commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

We probably want to add similar text that we already have with notification_id for both values that makes clear these values should only co-exist with a credential response - something like this

It MUST not be used if the credentials parameter is not present.

otherwise looks good to me now

Done

@brentzundel

Copy link
Copy Markdown
Collaborator

discussed today, additional text in privacy considerations as in #472 (comment) is needed
"Same wallet provider" is as far as we can probably go in recommending behavior

From @awoie
"If a Credential Issuer assigns the same values when issuing the same Credential Dataset to more than one Wallet of the same End-User, those Wallets receive a value they have in common. Where such a value is disclosed beyond the Wallet it was issued to, colluding parties can use it to link Credentials held in different Wallets to the same Credential Dataset, and therefore to the same End-User. This can be unexpected in deployments where the Credentials are designed to reveal as little as possible, such as Credentials that only attest that the End-User is above a certain age.

Credential Issuers that want to avoid this correlation factor SHOULD assign a different Credential Dataset Identifier per Wallet, and avoid deriving the Credential Dataset Tag solely from the content of the Credential Dataset, for example by computing a hash over it, since such a derivation yields identical values across Wallets."

@brentzundel

Copy link
Copy Markdown
Collaborator

Discussed today. Change the text to:

Credential Issuers SHOULD return the same Credential Dataset Identifier for every issuance to the same Wallet Provider from the same Credential Dataset . . .

Oliver will also check if there is already a general restriction that applies to his first point here: #472 (comment)

in general Wallet -> Wallet Provider

This branch has not been deployed

No deployments
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.

Supporting Credential Versioning

10 participants