Browse documentation
Docs target stable release v0.18.0.Stable vs main checked 2026-10-31

Own the trust roots

v0.18 adds certificate-transparency checks and Sigstore trusted-root support for keyless attestations. Existing verification behavior is unchanged when these options are not selected.

Certificate transparency

Terminal
# Operator supplies trusted Fulcio, Rekor, and CT public roots
tine verify result.tine --attestation result.sigstore.json \
  --cert-identity ci@example.com \
  --cert-oidc-issuer https://token.actions.githubusercontent.com \
  --fulcio-root fulcio.pem --rekor-key rekor.pem \
  --ct-key ct.pem --require-sct --json

--ct-key FILE is repeatable, and one file may hold multiple CT keys. Verification checks an embedded RFC 6962 SCT over the precertificate data and issuer key hash, under the matching log key, with a timestamp inside the leaf certificate's validity. --require-sct requires a CT key. These options require --attestation and are refused for key-signed evidence.

Use one trusted-root file

Terminal
tine verify result.tine --attestation result.sigstore.json \
  --trusted-root trusted_root.json \
  --cert-identity ci@example.com \
  --cert-oidc-issuer https://token.actions.githubusercontent.com --json

The file supplies Rekor, Fulcio, and CT keys. Rekor and CA validity windows use the verified integrated time; CT windows use the certificate's not-before time. When CT logs are listed, an embedded SCT is required.

Do not combine --trusted-root with --rekor-key, --fulcio-root, or --ct-key. It applies only to keyless attestations. CT log IDs must match their key hashes; unsupported Rekor v2 tile logs are skipped because v1 receipts cannot name them.

Refresh explicitly through TUF

Terminal
# Bootstrap with an independently trusted TUF root; performs network access
tine trust root update --root trusted-tuf-root.json
# Later explicit refresh, using persisted trust state
tine trust root update

No bootstrap TUF root is embedded. Obtain the first root through an independently trusted channel. The updater verifies root rotations with old/new thresholds, timestamp/snapshot/targets versions, lengths and hashes, expiry, and persisted rollback state.

The verified trusted_root.json is installed in $XDG_CONFIG_HOME/opentine/sigstore/ and becomes the default for keyless verification naming no key file. Nothing is fetched unless the operator runs the updater. --repo-url URL selects the TUF repository.

Reuse a policy

Terminal
tine trust policy set ci --trusted-root trusted_root.json \
  --cert-identity ci@example.com \
  --cert-oidc-issuer https://token.actions.githubusercontent.com
tine verify result.tine --attestation result.sigstore.json --policy ci --json

Policies now carry trusted_root, ct_key, and require_sct. User ownership, safe-file checks, and explicit flag precedence still apply. See named policies and keyless evidence.

A weekly non-required live Sigstore workflow detects upstream format drift; release gates do not depend on the public service. Read the tagged changelog for the exact contract.