JIL Sovereign - Evidence verifier

Verifiable Evidence Bundle Verifier

Independent. Offline. No keys or password required.

Every check runs in your browser Hash chain + Ed25519 + ML-DSA-65 (post-quantum) RFC 3161 token and OpenTimestamps proof parsed here

Step 1 - Provide the bundle seal

Tip: a bundle can also be verified from a link - verify.html#h=<anchor_hash>&e=<ed_sig>&p=<pq_sig>
Nothing you paste or drop leaves this page. Verify bundle makes no network request. Fetch anchor record sends only the 64-character anchor hash to /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.
-
-

-

Step 2 - Checks recomputed on this page

●

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.

Seal fields

Sealing authority (published, baked into this file)

Ed25519 authority
ML-DSA-65 key id
Crypto suite
Show raw public keys
Ed25519 public key (32 bytes, hex)
ML-DSA-65 public key (1952 bytes, hex)

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.