Skip to content

Verifying your download

There are two things you can verify before trusting a build: the template you downloaded, and the runtime image that compiles it. Both are optional — docker pull and a normal make publish work without any of this — but the tools are here when you need to audit for compliance or security review.

The template

Keystone templates ship with a SHA-256 checksum manifest (.keystone/checksums.txt) and a GPG detached signature (.keystone/checksums.txt.sig). The signature proves the checksums came from the Keystone release pipeline; the checksums prove no file was changed after assembly.

Public key

Fingerprint: 799D 1DC8 D477 4935 B557 D9EA C634 6E75 5DD4 C21A

-----BEGIN PGP PUBLIC KEY BLOCK-----

mDMEaZQL6BYJKwYBBAHaRw8BAQdArL0+f0eQFzWdyHBrHSC+a0wnZ9i5Pv9W/ED0
6sf4pVi0LUtleXN0b25lIFNpZ25pbmcgS2V5IDxzaWduaW5nQGtuaWdodC1vd2wu
ZGV2PoiTBBMWCgA7FiEEeZ0dyNR3STW1V9nqxjRudV3UwhoFAmmUC+gCGyMFCwkI
BwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQxjRudV3UwhqvqAEAzTd4SbE4P3qz
70bElYseXYbqCZYQvhg01h7vLgNlTYEA+gPwlTxECX1VTbtXk/SXqWRga7Ti4aUe
IwpuTBEfGhIO
=uxOb
-----END PGP PUBLIC KEY BLOCK-----

Steps

  1. Import the public key. Copy the block above into a file (e.g. keystone.pub) and import it:

bash gpg --import keystone.pub

  1. Verify the signature, from the template root:

bash gpg --verify .keystone/checksums.txt.sig .keystone/checksums.txt

Success shows Good signature from "Keystone Signing Key".

  1. Verify the checksums, from the template root:

bash shasum -a 256 -c .keystone/checksums.txt # macOS sha256sum -c .keystone/checksums.txt # Linux

Every line should report OK.

Why the key lives here

A public key shipped inside the artifact it verifies creates circular trust — an attacker who compromises the template repo can replace the key, re-sign, and pass verification. Publishing the key here, independently of the template repos, breaks that cycle. Always take the key from this page, not from the template you are checking.

The runtime image

The prebuilt Keystone image is scanned for vulnerabilities before every release, signed with Sigstore cosign, and ships with an SBOM (software bill of materials) attestation. Verify the signature from your project:

make verify

This checks the image your template pins against the Keystone release identity on GitHub Actions — a valid signature means the image was built and published by the official pipeline, not substituted. No action is needed for normal use; docker pull behaves as before.