/compliance/verification-keys
should be directed here.
Where to fetch the keys
Sandbox (live now):ws30.v1
contract shape. Each key entry has a keyId matching the per-record
keyId carried on every proof-pack record.
The keys are also pinned in each release of the open-source
auditor — packages/sdks/auditor-ts/src/keys.ts. The auditor
prefers the pinned key set when offline; falls back to the
published endpoint only when a record’s keyId is not in the
pinned set.
Rotation schedule
Rotation applies to the production key set (HSM-held, from the April 2027
launch). The current sandbox key is derived from a published seed string
(
enfinitos.sandbox.2026-q4.seed.v1) and intentionally does not rotate —
it is public by design so anyone can re-derive it and verify sandbox packs. The
schedule below describes the production operational model.- T₀ — new key generated. Public half published.
- T₀ + 14 days — platform starts dual-signing (old key + new key) on a subset of packs for forward-compat verification.
- T₀ + 30 days — platform cuts over to the new key as the primary. Old key continues to sign for backward-compat verification.
- T₀ + 90 days — old key revoked. The key entry in the
runtime-keysdirectory gains a non-nullrevokedAt. Packs older than 90 days remain verifiable against the historical key — the entry is retained in the directory indefinitely for backward-compat verification; it is never reissued under.
Emergency rotation
If a key is suspected compromised, we rotate immediately and publish a CVE with the affected key id. The auditor refuses to verify any pack signed under a revoked key issued after the revocation timestamp. The current revocation list is published in the sameruntime-keys
response: revoked keys carry a non-null revokedAt timestamp. The
auditor refuses to verify any pack signed under a key issued after
its revokedAt.
Where to report a suspected compromise
Emailsecurity@enfinitos.com immediately. See
the auditor SECURITY.md
for the full security disclosure policy.