⊢ verify · offline · nothing leaves this page

Check an audit seal without trusting us.

re audit --seal writes audit.seal.json: the audit JSON, the commit it measured and the method version that produced it, signed with the repository's Ed25519 issuer key as a Crovia Seal (crovia.seal.v1). Drop that file here. Your browser recomputes both subject hashes, rebuilds the canonical payload and checks the signature with WebCrypto. This page makes no network request and has no third-party code; you can save it and run it from disk. The same checks, on the command line: re seal verify audit.seal.json.

No seal at hand? The sample is the seal of this repository's own audit at a fixed commit, embedded in this page.

    What a valid audit seal proves

    That the key shown as issuer signed exactly this audit JSON for exactly this commit, produced with this method version, and that not one byte of the numbers changed since. The seal is a crovia.seal.v1 like any other: the audit JSON is its subject.output, the audited git state (commit, method, options) its subject.input, both committed by SHA-256 and length. The bundle around the seal carries both subjects so the hashes are recomputable here with no repository and no network.

    It does not prove that the numbers are true, and it does not say who controls the issuer key. Anyone can rerun re audit on the commit and compare the bytes; the method is public.

    What fails, and how

    Verification is fail-closed. A bundle with a field the signer did not sign, an audit JSON whose hash or length differs from the seal, a commit or method that disagrees between the input, the signed parameters and the audit JSON, a float or an unsorted key in the canonical payload, a wrong signature, a chain with a gap or a broken link: each is rejected at the step that catches it, and the steps are listed so you can see which one.

    "Unreadable" means the text is not a seal at all (not JSON, or JSON with a duplicate key); "invalid" means it is a seal that does not verify. re seal verify exits 2 and 1 for the same two cases.