Home › Verify a signed result

Verify any signed result. Paste, don't trust.

Every Truth-in-AI signature covers a canonical JSON payload with Ed25519. This page checks it entirely in your browser — no upload, no account, nothing sent to us. Paste a signed benchmark artifact or a signed detection result below.

Paste a signed artifact
Auto-detects format: a full benchmark artifact (has a top-level payload key) or a single signed detection record.
Pre-filled with the published TriGeoChiral verification key from /proof/pubkey.pem. Change it to verify against a different key.
Ready. Paste a signed artifact above, or press one of the quick-load buttons, then press Verify.
What this page can verify
Live today

Signed benchmark artifacts

RAID.signed.json and DMITVA.signed.json — the full signed benchmark results published at /proof/. Verifies the payload SHA-256, the Ed25519 signature, and recomputes every per-configuration AUC from the stored score arrays.

In development

Single detection results

A signed record from a live /detect API call — {text_sha256, score, verdict, detector_version, timestamp, signature}. The hosted detection API is not yet issuing these at scale; this page already implements the verification logic it will use once it ships, so the scheme is auditable before the API goes live.

Honesty note. The /replay/<signature> endpoint referenced in Case 04 is the target design, not a shipped feature today. What is real and working right now: the full signed benchmark artifacts on /proof/, and the client-side verifier on this page, which anyone can audit by reading the page source — no server round-trip required for either format.
The signing scheme, for the paranoid buyer

Both formats use the same three primitives: a canonical JSON encoding (sorted keys, no whitespace, UTF-8), SHA-256 over that canonical form, and an Ed25519 detached signature over the resulting bytes. Nothing here is proprietary — it is exactly what truth-in-ai-verify on PyPI does, reimplemented in the browser with the standard SubtleCrypto API and TweetNaCl.js for Ed25519.

# the exact canonicalization, reproducible outside the browser too python3 - <<PY import json, hashlib from cryptography.hazmat.primitives.serialization import load_pem_public_key signed = json.load(open("your_signed_file.json")) canonical = json.dumps(signed["payload"], sort_keys=True, separators=(",", ":")).encode() assert hashlib.sha256(canonical).hexdigest() == signed["payload_sha256"] pub = load_pem_public_key(open("pubkey.pem", "rb").read()) pub.verify(bytes.fromhex(signed["signature"]), canonical) print("Ed25519 signature: VALID") PY