This guide covers offline verification for attestations, proofpacks, inclusion proofs, and published transparency roots.
python -m releasegate.cli verify-attestation /path/to/attestation.json --format json --key-file /path/to/public-keys.jsonExpected booleans:
schema_valid=truepayload_hash_match=truevalid_signature=truetrusted_issuer=true
releasegate verify-dsse --dsse /path/to/releasegate.dsse.json --format json --key-file /path/to/public-keys.jsonSee docs/attestations/dsse-intoto.md for the emitted contract.
python -m releasegate.cli verify-pack /path/to/proofpack.zip --format json --key-file /path/to/public-keys.jsonOptional RFC3161 validation:
python -m releasegate.cli verify-pack /path/to/proofpack.zip --format json --tsa-ca-bundle /path/to/tsa-ca.pemVerifier checks:
- Zip file contract and deterministic order.
manifest.jsonhashes/sizes.- Attestation signature and payload hash.
- Detached
signature.txtconsistency. - Inclusion proof validity (when embedded).
- RFC3161 token validity (when embedded and CA bundle supplied).
From stored attestation id:
python -m releasegate.cli verify-inclusion --attestation-id <attestation_id> --tenant <tenant> --format jsonFrom proof file:
python -m releasegate.cli verify-inclusion --proof-file inclusion_proof.json --format jsonPublished daily roots are signed and exported by releasegate export-root.
- Signature helper:
releasegate/audit/root_export.py:verify_external_root_payload - Public roots:
roots/YYYY-MM-DD.json
All verification paths are fail-closed:
- Invalid schema/hash/signature/proof -> non-success result.
- CLI exit codes:
0: verification succeeded2: verification failed3: invalid/unreadable input artifact