Skip to content

Status row says "the issuer set up no way to deactivate this" behind a seal that didn't hold #32

Closed

Description

@threeqube

What

When a credential carries no credentialStatus, the Status row reads "the issuer set up no way to deactivate this", even when the seal didn't hold. It's stated as a fact about the issuer, but it is read from the credential itself (hasStatusList in src/outcomes.ts, the !hasStatusList(r) branch of listChecks), and nothing has vouched for the credential.

Seen on the demo, on main and on #31's preview alike:

  • Changed (tampered): Tampering "detected", Status "the issuer set up no way to deactivate this".
  • ?vc= vc-test-fixtures didWeb/badDidWeb.json (issuer's key unreachable): Tampering "not checked", Status the same sentence.

Someone who strips credentialStatus from a credential gets a Status row saying the issuer never made it revocable. The verdict above already says "tampered" or "couldn't check", so the impact is low. Still, the row claims something we can't know.

Proposed fix

Treat the Status row as #31 treats the Dates row: behind a seal that didn't hold, it reads "not checked". That uses existing words, so it needs no new earner text. Then add a consistency rule that no Status row value other than "not checked" sits beside an unheld seal, and a mutation check that the rule can fail.

Not in scope

#31 (verifier-core 2.0.0-beta.1). This behaviour predates it, and #31 doesn't change it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions