Rotating a signing key without breaking self-update
Signing releases is the easy day. Replacing the key you sign with, while every installed copy is still checking against the old one, is a job I went looking for a guide to and couldn't find.


Signing releases is the easy day. Replacing the key you sign with, while every installed copy is still checking against the old one, is a job I went looking for a guide to and couldn't find.

Publish an OpenPGP certificate a researcher can encrypt to, and read what they send, without a private key ever existing in your process.

Ten minutes, a throwaway directory and no cloud account, to find out what a release signature actually is before you decide whether you want one in your pipeline.

If the platform hosting your code also hands out the key that verifies it, the signature proves nothing. Where to publish a public key instead.

Launching sigillum, a standalone artefact signing and verification CLI, and the Rust signing problem that made it necessary.

Where a signing key lives is the most provider-specific decision in the whole business, so the framework deliberately refuses to have an opinion.

A gpg call that hung and never returned, and why release signing ended up built into the Go tool itself rather than shelled out to the gpg binary.

Two new public modules extracting the OpenPGP signing and verification model, so you can use it without adopting the whole framework.

The philosophical end of the signing series: a stolen key and a bought one produce the same signature, and trust has to survive both.

Rotate a release signing key and recover from a bad one without locking users out. Why asymmetric KMS keys have no auto-rotate button.
