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 payloadJson string 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.pub serves publicly.
  • Every prior post-cert revision (postCertificateHistory) so revisions and the tenant cert that signed each can be re-verified independently.
  • A short verifierInstructions array 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

  1. 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.
  2. 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.
  3. Once authenticated, fetch GET /admin/cert/<slug>/export. Anonymous requests return 401.

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.status field surfaces revocation explicitly.