Ledger evidence packs

Verify the pack without trusting the operator.

redact-gateway emits content-free audit records — entity types and counts, never values. A compliance ledger stores those events in a tamper-evident hash chain and produces evidence packs. redact-verify checks a pack independently: no redact-core dependency, and the default path does not dial the network.

$ cargo install redact-verify
$ redact-verify --pack evidence.json --pubkey ledger.pub

 chain consistency     pass
 transit signatures    pass
 pack_anchored (R2)    pass
 exit 0

v0.10.0 on crates.io · Apache-2.0

What it checks

Pass only when the pack holds together.

CheckResult
Chain internal consistencypass / fail
Transit signature over tipspass / fail
body_hash recomputationpass / fail
body_signaturepass / fail (builder_signed only)
R1 — events_anchoredpass / fail
R2 — pack_anchoredpass / fail / unproven
complete_within_rangetrue / false
range_covers_tiptrue / false

Exit 0 only if every check passes and R2 is pass. 1 on any fail or R2 unproven. 2 if the pack is malformed.

attestation.status is a hint. pack_anchored is computed. Stripped attestation is unproven, never pass. Pack-supplied keys cannot satisfy the offline trust roots compiled into the binary.

Network

Offline by default.

The default path does not call GET /v1/evidence/{id}/attestation and does not dial the network. Optional --online may re-query Rekor; it is off by default and never required for a pass.

Honesty

Evidence inputs, not a certificate.

Packs and verification reports are auditor inputs. They are not a SOC 2 Type 2 report, a HIPAA attestation, or a GDPR certification — and we will not claim otherwise.