Verification signing key

Every verification result is available as signed JSON (/verify/<code>.json) and as a W3C Verifiable Credential (/verify/<code>.vc.json). Both are signed with this key, so a copy can be checked without trusting whoever passed it on.

Algorithm ? Ed25519 (EdDSA)
Verification method ? https://www.veripd.org/verify/keys.json#ed25519-1
Public key (multibase) ? z6MkunKmqNJZurMM8zY5d6s3vW2UvFc4437CYwCzG8FYiqyR
Public key (JWK x) ? 48GODpxA8h2KpsrM06OmNrNP9g7IM3b7Xc8LXBCJd-A
Key document ? https://www.veripd.org/verify/keys.json

Checking the signed JSON

  1. Take the payload object and serialise it with the JSON Canonicalization Scheme (RFC 8785): keys sorted, no whitespace. Payloads hold only strings, integers, booleans and null.
  2. Base64url-decode signature.value.
  3. Verify that Ed25519 signature over the canonical bytes with the public key above.

Checking the Verifiable Credential

The credential uses a Data Integrity proof with the eddsa-jcs-2022 cryptosuite: the signed bytes are SHA-256 of the canonical proof options (the proof without proofValue, plus the credential's @context) followed by SHA-256 of the canonical credential without its proof. proofValue is the signature in base58btc multibase.

A result states the time it was evaluated. The chain is re-evaluated when a provider's or approver's recorded standing changes, so fetch a fresh copy rather than relying on an old one.