Why this exists
The public verify page (/verify/<slug>) and the
public cert summary (/tonehash/cert/<slug>) only
expose what a casual reader needs: a content hash, the dominant
tonal zone, the signing tenant, and a step-by-step pass/fail
result. The certificate's raw signed payload, the per-axis tonal
scores, the ToneHash salt, the raw Ed25519 signatures, and the
raw tenant public key are deliberately never sent to the
browser.
That is sufficient to trust the operator's verifier, but a determined auditor — a researcher reproducing results, a compliance reviewer, a regulator — needs to re-run the chain themselves so they don't have to take the operator's word for it. This page describes the authenticated cert-bundle export that supports that workflow.
What the bundle contains
GET /admin/cert/<slug>/export returns a single
JSON document with everything an off-the-shelf Ed25519 verifier
needs:
- The post body (the exact bytes ToneHash was computed over).
-
The post certificate's signed payload, signature, version,
issued-at timestamp, content hash (display + hex), and the
canonical
payloadJsonstring used at signing time so signature verification works byte-for-byte. - The tenant certificate's signed payload, signature, public key, tier, validity window, and revocation/supersession metadata.
-
The served root public key (PEM), identical to what
/.well-known/tonehash-root.pubserves publicly. -
Every prior post-cert revision (
postCertificateHistory) so revisions and the tenant cert that signed each can be re-verified independently. -
A short
verifierInstructionsarray summarizing the four chain checks (tenant signature under root, post signature under tenant, ToneHash recompute, hash compare).
The salt used to derive ToneHash is not in the bundle — it lives only on the signing host. Auditors who need to recompute ToneHash from the post body must request the salt out-of-band under whatever NDA / data-handling agreement the operator requires.
How to request access
- Email the operator (the contact listed on the site's About page) with: the slug(s) you want to audit, your affiliation, and the purpose of the audit.
- The operator issues you a temporary admin session (the same mechanism the dashboard uses) or, for repeat auditors, a dedicated per-auditor account scoped to the export endpoint.
-
Once authenticated, fetch
GET /admin/cert/<slug>/export. Anonymous requests return401.
Safety notes
- The bundle reproduces every field the original public cert API used to leak before task #58 (see Signal). Treat it as IP and store it accordingly.
- Bundle exports are logged on the operator side. The operator can revoke your session at any time.
-
A revoked tenant cert still produces a verifiable bundle —
revocation is a trust signal, not a cryptographic
invalidation. The bundle's
tenantCertificate.statusfield surfaces revocation explicitly.