Skip to content

Verify cosign + Rekor for SLSA L1

Verify any SZL flagship container with keyless cosign, then pull its public Sigstore Rekor transparency-log entry — the honest SLSA L1 proof.

Headline number: 1 image → 1 Fulcio cert → 1 public Rekor entry, no shared secret.

SZL signs container images with keyless cosign: the signing identity is a GitHub Actions OIDC token, the certificate is issued by Fulcio, and the entry is recorded in the public Rekor transparency log. This recipe verifies that chain for the two shipping flagships (a11oy, killinchu).

Honest posture. SZL claims SLSA L1 (honest) — SBOM + DCO + provenance attestation — not L2/L3. The image signatures are real keyless cosign; the runtime receipt signatures in the live Spaces are still PLACEHOLDER. Don't conflate the two.


Prerequisites

bash
# cosign and rekor-cli (Sigstore)
brew install cosign rekor-cli            # or: go install github.com/sigstore/cosign/v2/cmd/cosign@latest
# slsa-verifier (optional, for provenance)
go install github.com/slsa-framework/slsa-verifier/v2/cli/slsa-verifier@latest

GHCR pull may require read:packages; the Rekor log lookups are fully public.


Quickstart

bash
ORG=ghcr.io/szl-holdings
IMG=$ORG/a11oy:uds-v0.2.0

cosign verify $IMG \
  --certificate-identity-regexp="^https://github.com/szl-holdings/" \
  --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
  | jq '.[0].optional | {Issuer, Subject: .Subject, Bundle: (.Bundle != null)}'

A successful verify prints the Fulcio cert subject (the GH Actions workflow identity) and confirms a Rekor bundle is attached.


Full walkthrough

Step 1 — Verify the signature (keyless)

bash
for o in a11oy killinchu; do
  echo "== $o =="
  cosign verify ghcr.io/szl-holdings/$o:uds-v0.2.0 \
    --certificate-identity-regexp="^https://github.com/szl-holdings/" \
    --certificate-oidc-issuer="https://token.actions.githubusercontent.com" >/dev/null \
    && echo "OK" || echo "FAILED"
done

The --certificate-identity-regexp pins the signer to the SZL org; the --certificate-oidc-issuer pins it to GitHub Actions. Both must match or verify fails — that is the trust anchor.

Step 2 — Pull the public Rekor transparency-log entry

Each flagship README publishes its Rekor log index. The two shipping flagships publish these real and public Rekor log indices; the retired role-name images (a11oy Memory/Operator/Sentinel) are not standalone published images and are omitted here.

FlagshipImage digest (prefix)Rekor log index
a11oysha256:7301a4…ab881710355173
killinchusha256:dedfc3…718a1710339915
bash
rekor-cli get --log-index 1710355173            # a11oy
# Or in a browser:
#   https://search.sigstore.dev/?logIndex=1710355173

You can also query the public Rekor API directly (no tools needed):

bash
curl -s "https://rekor.sigstore.dev/api/v1/log/entries?logIndex=1710355173" | jq 'keys'
# returns the entry UUID — proof the signature is in the immutable transparency log

Step 3 — (Optional) Verify SLSA provenance

bash
slsa-verifier verify-image ghcr.io/szl-holdings/a11oy:uds-v0.2.0 \
  --source-uri github.com/szl-holdings/a11oy \
  --builder-id "https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@refs/tags/v2.0.0"

Honest note. If provenance attestation is not yet attached to a given tag, slsa-verifier will say so. SZL's claim is L1 (SBOM + DCO + provenance pointer); treat any L3 provenance as aspirational until the workflow lands. The cosign + Rekor steps above are the authoritative L1 evidence today.

Step 4 — Cross-check the doctrine the image declares

bash
# a11oy and killinchu are the two shipping flagships; query either live Space.
curl -s https://szlholdings-a11oy.hf.space/api/a11oy/v1/honest | jq '{doctrine, slsa}'
# => { "doctrine": "v11", "slsa": "L1 (honest)" }

See also

Cite this recipe

bibtex
@misc{szl_cookbook_cosign_rekor_2026,
  title        = {Verify cosign + Rekor for SLSA L1 (SZL Cookbook recipe 06)},
  author       = {{SZL Holdings}},
  year         = {2026},
  howpublished = {\url{https://github.com/szl-holdings/szl-cookbook/blob/main/recipes/06-cosign-rekor-slsa-l1.md}},
  note         = {Keyless cosign + public Rekor. SLSA L1 (honest). Doctrine v11 c7c0ba17.}
}

Doctrine v11 LOCKED — 749/14/163 — kernel c7c0ba17 · Λ = Conjecture 1 · SLSA L1 (honest)

Public claims link to source and evidence. SLSA L1 is the current stated supply-chain posture.