Safeguard
Supply Chain•

How do you write a verify page so users can check your releases?

Give users the exact commands: key fingerprint, checksum check, signature check and the identity to expect. A signature nobody can verify protects no one.

Safeguard Security Team
3 min read

Write one page that tells users exactly how to check a download: where to get your key or signing identity, the commands to run, and what a good result looks like. If users cannot verify without guessing, signing protects almost nobody.

What the page needs

  1. What is signed. Tags, files, checksum list, container images.
  2. Who signs. A key fingerprint, or for keyless signing the identity and issuer to expect.
  3. Where to get the key. Several places, so a change in one is noticed.
  4. Commands, copy ready.
  5. What a good result looks like, and what to do on a bad one.
  6. Key history. Past keys and the releases they covered. See what to do when your release signing key expires.

Commands to include

For git tags, the verify option of git tag checks the tag signature:

git tag -v v2.4.0

For a checksum list, the sha256sum manual describes a check option that reads checksums from files and verifies them:

sha256sum --check --ignore-missing SHA256SUMS

For files signed with cosign, the Sigstore documentation shows a verify blob command that takes a bundle file plus the expected certificate identity and issuer:

cosign verify-blob myfile --bundle myfile.sigstore.json \
  --certificate-identity=name@example.com \
  --certificate-oidc-issuer=https://accounts.example.com

Replace the placeholder identity and issuer with your project's real values. See the next post, what certificate identity and issuer mean when you verify a release.

Layout that works

SectionContents
Quick verifyThe three commands above for the current release
Keys and identitiesFingerprints, identity strings, where else they are published
TroubleshootingCommon failure messages and what they mean
HistoryPrevious keys, revocations, dates

Testing your own page

Follow it on a clean machine, as a new user would. Fix every place you had to improvise. Re-run it after each key change.

Keep it honest

Say what verification proves and what it does not. A good signature shows who signed, not that the code is free of bugs. Mention other checks users can run, such as scanning the dependencies listed in your SBOM.

Try it yourself

Click through it at your own pace, or open it full screen.

Open a component and see the dependency detail a user can inspect after verifying your release files.

Common failure messages to document

Users will hit errors, and a page that explains them saves support time. List the likely ones: a missing public key, an expired key, a checksum mismatch, a signature that does not match the file, and an identity that does not match the expected value. For each, say what it usually means and what to do. A mismatch after a fresh download usually points to a corrupted or incomplete download first, so suggest retrying from the official location before raising an alarm. If it persists, give a way to contact the maintainers privately.

Quick check

Where should the verify page live?

On your own site and also in the repository, so the two can be compared. Link to it from every release.

Do I need all three methods?

No. Use the ones your project actually publishes, and say which.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.