JIL Sovereign - Evidence verifier
Independent. Offline. No keys or password required.
verify.html#h=<anchor_hash>&e=<ed_sig>&p=<pq_sig>
/api/verify/seal-anchor/ and brings back the stored record: the hash chain inputs, both signatures, the raw RFC 3161 token and the raw OpenTimestamps proof. This page then recomputes every check itself; it does not take the service's word for any of them.-
1. Classical signature (Ed25519) over the anchor hash
The JIL sealing authority's Ed25519 signature is checked against the published authority public key, over the exact 64-character anchor hash.
2. Post-quantum signature (ML-DSA-65) over the anchor hash
The independent ML-DSA-65 (Dilithium-III) signature is checked against the published post-quantum public key.
3. Hash chain
Recomputes sha256(prev_anchor_hash || merkle_root || anchored_at || bundle_id) and compares it with the anchor hash. The previous anchor hash links this seal to the one sealed before it, so a removed or rewritten seal breaks the link.
4. External anchor: RFC 3161 timestamp token
Parses the timestamp authority's signed token: the authority granted it, it timestamps exactly sha256(anchor_hash), and it carries the authority's time. The authority's certificate chain is not validated in the browser; openssl ts -verify does that against the authority's published CA.
5. External anchor: OpenTimestamps proof (Bitcoin)
Parses the OpenTimestamps proof: it must timestamp exactly this anchor hash. A Bitcoin block attestation in the proof is reported with its block height; a calendar-only proof is pending. The Bitcoin block header is checked by the ots verify command against a Bitcoin node, not by this page.
What a VERIFIED result proves. The anchor hash was signed by the JIL sealing authority with both a classical (Ed25519) and a post-quantum (ML-DSA-65) key whose public halves are published and baked into this file, and no check this page recomputed failed. When the seal carries its chain inputs, the hash chain was recomputed. When it carries the RFC 3161 token or the OpenTimestamps proof, those were parsed and matched to the anchor hash, and the result names which external anchor holds. A check whose inputs are absent reads not checked; it is never counted as a pass. Any change to the sealed content breaks the anchor hash, which breaks both signatures.
Independence. This page carries its own copy of the verification code and the published public keys. Verify bundle makes no network request, needs no login, and never asks for a private key or password. The external anchors are third parties: an RFC 3161 timestamp authority, and Bitcoin through OpenTimestamps. A relator or an auditor can archive this single file and the anchor record and re-run every check at any time, offline. A court decides whether to admit the record.
The public keys here verify signatures only; they cannot create them. JIL Sovereign Technologies, Inc.