Every release tarball, the Docker image, the binary completions archive, and the SBOM that ships alongside them are signed via Sigstore keyless signing. There are no public keys to track — the signing identity is the GitHub Actions workload identity running in FerrLabs/FerrFlow, anchored in the public Rekor transparency log.
Available since v5.2.
| Artifact | Sidecars |
|---|---|
ferrflow-linux-x64.tar.gz |
.sig, .crt |
ferrflow-linux-arm64.tar.gz |
.sig, .crt |
ferrflow-darwin-x64.tar.gz |
.sig, .crt |
ferrflow-darwin-arm64.tar.gz |
.sig, .crt |
ferrflow-windows-x64.zip |
.sig, .crt |
ferrflow-completions.tar.gz |
.sig, .crt |
sbom.cdx.json |
.sig, .crt |
ghcr.io/ferrlabs/ferrflow:vX.Y.Z |
Cosign signature in GHCR + Rekor |
All sidecars are downloadable from the GitHub Release page next to the binary.
# install cosign (one-time)
curl -L https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64 \
-o /usr/local/bin/cosign && chmod +x /usr/local/bin/cosign
# download the artifact + sidecars from the release page
TAG=v5.2.3
gh release download "$TAG" --repo FerrLabs/FerrFlow \
-p 'ferrflow-linux-x64.tar.gz*'
# verify
cosign verify-blob \
--certificate ferrflow-linux-x64.tar.gz.crt \
--signature ferrflow-linux-x64.tar.gz.sig \
--certificate-identity-regexp "https://github.com/FerrLabs/FerrFlow/.*" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
ferrflow-linux-x64.tar.gz
# → Verified OK
A passing verification means:
FerrLabs/FerrFlow triggered by GitHub Actions' OIDC issuer..sig value.cosign verify ghcr.io/ferrlabs/ferrflow:v5.2.3 \
--certificate-identity-regexp "https://github.com/FerrLabs/FerrFlow/.*" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
The SBOM (sbom.cdx.json) is a CycloneDX document listing every transitive dependency of the published binary. It's signed the same way as the tarballs:
cosign verify-blob \
--certificate sbom.cdx.json.crt \
--signature sbom.cdx.json.sig \
--certificate-identity-regexp "https://github.com/FerrLabs/FerrFlow/.*" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
sbom.cdx.json
Feed the verified SBOM into your scanner of choice — Grype, Trivy, Snyk, JFrog Xray, Anchore, anything CycloneDX-aware.
In addition to Sigstore signatures, every release also ships a SLSA build provenance attestation generated via actions/attest-build-provenance. It records the workflow run, the source commit SHA, and the build inputs.
gh attestation verify ferrflow-linux-x64.tar.gz --repo FerrLabs/FerrFlow
Source tarballs from git archive (the auto-generated "Source code (zip)" and "Source code (tar.gz)" assets on the GitHub Release page) come from GitHub, not from the release workflow, and have no .sig/.crt sidecars. If you need an attestation for source, use gh attestation verify against the build provenance bundle instead.