The Ur Project

Notes on building a new Linux distribution, and the thing that builds it.

Security

These are the keys we sign with. If you want to know whether the packages and metadata on your system actually came from us, this is the list you check them against.

That's all this page is - the list. The guide is over at Verifying the Sandcastle signatures: what each key does, the commands that check them, the older keys, and what to do when something doesn't line up.

The repository roots

A fingerprint is the SHA-256 of a root file, exactly as the repo serves it. Compare against this page. Don't compare against anything the repo handed you - a repo that's been tampered with will cheerfully tell you its own hash.

RepoRootFingerprint (sha256)
Sandcastle Base version 2, since 2026-10-03 5bc141cbfa3b8a9115ebfc4efa81e2e9e8d7bb34894db7b44592b0b6fe532959
Sandcastle Common version 2, since 2026-10-03 dc28d9d45e9581837264b33ddf36d8899800c95af796cc3585c287560abeed42
Sandcastle Base version 3, since 2026-10-12 8932a96c368bb5bef9c3ebd8045f88d3bbc29284b0fbea69fb4e1998e2516474
Sandcastle Common version 3, since 2026-10-12 065a1092f2df4c0a6bd8c585d97ba6369856bf02309011bedbfb1c6e7e31a93f

A system installed before 2026-10-12 is anchored on version 2, and walks forward to version 3 by itself. Up to version 2 one offline root key covered both repos; since version 3 each repo has its own:

RepoRoot key (keyid)
Sandcastle Base bf94c2341aafa0846752ea0a165bc07f24c5203b8bd02d62507f7fa7cb634935
Sandcastle Common 6a5eed5448fc9fe1924276996a915332116072295de0710faaefda585fa79571

The manifest signing keys

RepoManifest signing keySigns
Base 36558dbbdc9ca7cf7b98b0a25cf96fa97725460cead87ac91b0672c24e5a7c85 packages built since 2026-10-03
Common 6ba4ca26d3aec2e6265ca592764c93c54ac1f34932cac9da257c986d53ab3c91 packages built since 2026-10-03

The clerks rotate every six months. The keys that signed older packages, and the older roots, are still good for whatever they signed at the time - those are all in the guide.

The image signing key

Signs the image.json of every image on the download page.

keyidEd25519 public key
a7febba87f2fc095 d9b4efe6e849e6226cec019fd4f69292e62c1a2fe414b82d62e22cfcdc882044

When it doesn't match

Stop. Don't add that repo, and don't upgrade from it. Then tell me, and include the output of sudo pkg repo list --trust.

Contact

For security issues, please contact me at security@ at this domain name.