Skip to content

Add credential deletion section. #491

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Add credential deletion section. #491

wants to merge 1 commit into from

Conversation

msporny
Copy link
Contributor

@msporny msporny commented Jun 22, 2025

This PR is an attempt to address issue #407 by adding a credential deletion section.


Preview | Diff

The <dfn>verifier service</dfn> takes requests to verify Verifiable Credentials
and Verifiable Presentations and returns the result of checking their proofs and
status (if present). The service only checks the authenticity and timeliness of
the VC; leaving the Verifier Coordinator to finish Applying any business rules
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
the VC; leaving the Verifier Coordinator to finish Applying any business rules
the VC; leaving the Verifier Coordinator to finish applying any business rules

it's recommended to refer to external well known specifications, such as the
[[VC-BITSTRING-STATUS-LIST]].
For specific mechanisms by which to manage Verifiable Credential statuses, it's
recommended to refer to external well known specifications, such as the
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
recommended to refer to external well known specifications, such as the
recommended to refer to external well-known specifications, such as the

Copy link
Collaborator

Choose a reason for hiding this comment

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

The word order I suggest makes it (somewhat) less likely that well-known specifications will be read as a unit, thus not referencing only specifications that relate to the .well-known space.

Suggested change
recommended to refer to external well known specifications, such as the
recommended to refer to well-known external specifications, such as the

<a href="https://en.wikipedia.org/wiki/Right_to_be_forgotten">
the right to be forgotten</a>. See Section [[[#deletion]]] for additional
considerations related to the removal of [=verifiable credentials=] from
systems.
Copy link
Contributor

Choose a reason for hiding this comment

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

+1 to this. We might want to consider some additional feature which would be more of a "prune" operation than a "delete", whereby the VC isn't deleted entirely, but its credentialId and any status entries information remain (information required for the application of uniqueness constraints and the maintenance of status lists, etc.).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@PatStLouis noted that deleting the VC would need to delete any "linked" information -- including possibly revoking the credential?

The group discussed some of this on the 2025-06-24 call and came to the following conclusions:

  • The difference between DELETE and "prune" is that the latter does not revoke the credential, and the former revokes the credential.
  • Deleting any "higher level" linked information is the responsibility of the issuer coordinator and not the issuer service.
  • Deleting might not be a good option if there are audit requirements (especially due to regulatory burdens).

Copy link
Contributor

@dlongley dlongley Jul 1, 2025

Choose a reason for hiding this comment

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

I don't know that an issuer instance would necessarily "know" to "revoke" (or change any other status bit for any other status "purpose") when deletion is performed.

I think an individual implementation could implement some stops/checks that would prevent deletion via a special configuration, but I don't think it would necessarily be easy to have some default behavior based solely on the "revocation" purpose. What about "suspension"? What about other custom purposes? It seems setting an expectation or special case for "revocation" would lead to more confusion with the DELETE function, not less.

I would say, instead, that we should keep the deletion operation at this level separate and simple. We should say that custom configurations can prevent deletion for any reason (including checking arbitrary status values or for other existing "linked" information) and provide an appropriate error that would signal that a client needs to run other operations using the VC API (e.g., flip status bits) in order to enable deletion. This approach would also avoid creating multiple ways / mechanisms for changing status.

Copy link
Collaborator

@TallTed TallTed left a comment

Choose a reason for hiding this comment

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

Editorial tweaks, mostly minor, a couple more broad.

service and its associated key service is believed to be out of scope for
the VC API, but may be addressed by WebKMS or similar specifications.
The <dfn>issuer service</dfn> takes requests to issue VCs from authorized Issuer
Coordinators and returns well-formed, signed Verifiable Credentials. This
Copy link
Collaborator

Choose a reason for hiding this comment

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

It seems odd to have this Verifiable Credentials where the rest of the paragraph uses the VC abbreviation. I'm suggesting to abbreviate this one, to make the paragraph internally consistent, believing that there's a Verifiable Credentials (VCs) or similar earlier in the document. The whole document should optimally be made consistent, likely with <dfn> tags applied to the appropriate (usually first) instance and <a> tags applied to the rest, and using VC in most instances.

Suggested change
Coordinators and returns well-formed, signed Verifiable Credentials. This
Coordinators and returns well-formed, signed VCs. This

service MUST have access to private keys (or key services which utilize private
keys) in order to create the proofs for those VCs. The API between the Issuer
service and its associated key service is believed to be out of scope for the VC
API, but may be addressed by WebKMS or similar specifications.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is there an appropriate link for WebKMS, to serve with <a > or [[? ]], as appropriate?

Comment on lines +503 to +504
the VC; leaving the Verifier Coordinator to finish Applying any business rules
needed.
Copy link
Collaborator

Choose a reason for hiding this comment

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

As used here, the semicolon should separate two complete sentences. The leaving... section could be reworded to start with something like the Verifier Coordinator is left to finish support this use, but going with the comma (as I've suggested below) is the smaller change to make the sentence correct.

Suggested change
the VC; leaving the Verifier Coordinator to finish Applying any business rules
needed.
the VC, leaving the Verifier Coordinator to finish applying any necessary
business rules.

Comment on lines +510 to +511
demonstrate control over DIDs prior to issuance and with Verifiers to present
specific VCs.
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
demonstrate control over DIDs prior to issuance and with Verifiers to present
specific VCs.
demonstrate control over DIDs prior to VC issuance and with Verifiers to
present specific VCs.

Issuer. Implementers of verifier services are encouraged to understand the
privacy implications of checking status by referring to the respective
status specification used by the verifiable credential.
The <dfn>status service</dfn> provides a privacy-preserving means for publishing
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
The <dfn>status service</dfn> provides a privacy-preserving means for publishing
The <dfn>status service</dfn> provides a privacy-preserving means of publishing

<strong>Storage Service (Issuer) &bull;Storage Service
(Verifier) &bull; Storage Service (Holder)
</strong>
<strong>Storage Service (Issuer) &bull;Storage Service (Verifier) &bull; Storage
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
<strong>Storage Service (Issuer) &bull;Storage Service (Verifier) &bull; Storage
<strong>Storage Service (Issuer) &bull; Storage Service (Verifier) &bull; Storage

access to those exchanges to any party.
The <dfn>workflow service</dfn> provides a way for coordinators to automate
specific interactions for specific users. Each role (Holder, Issuer, and
Verifier) can run their own Workflow Service to create and manage exchanges that
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
Verifier) can run their own Workflow Service to create and manage exchanges that
Verifier) can run their own workflow service to create and manage exchanges that

Comment on lines +566 to +567
create exchanges at their Workflow Service and give authorized access to those
exchanges to any party.
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
create exchanges at their Workflow Service and give authorized access to those
exchanges to any party.
create exchanges at their workflow service and give access to those exchanges
to any authorized party.

Comment on lines +937 to +939
it can be useful to delete such a [=verifiable credential=]. An [=issuer=]
might need to do so because of regulatory requirements such as
<a href="https://en.wikipedia.org/wiki/Right_to_be_forgotten">
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
it can be useful to delete such a [=verifiable credential=]. An [=issuer=]
might need to do so because of regulatory requirements such as
<a href="https://en.wikipedia.org/wiki/Right_to_be_forgotten">
it can be useful to delete such a [=verifiable credential=]; for instance,
an [=issuer=] might need to do so because of regulatory requirements such
as <a href="https://en.wikipedia.org/wiki/Right_to_be_forgotten">

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.

3 participants