# Reproducing and verifying E31

1. Download every file of this bundle into one directory.
2. Python: save `verify_e31.py.txt` as `verify_e31.py`; `pip install cryptography`; `python3 verify_e31.py .` -- `result` must be `INTACT`. It checks every example proof against TRUST_ANCHORS.json and must reject every entry of MALICIOUS_PROOFS.json.
3. TypeScript: build `{"governance_proofs": PROOF_EXAMPLES.proofs, "anchor_sets": TRUST_ANCHORS.anchor_sets}` into one JSON file, save `cain-verify.js.txt` (the strict `tsc` build of `cain-verify.ts.txt`) as `cain-verify.mjs`, run `node cain-verify.mjs that.json` (Node >= 20).

Neither verifier imports CAIN code. Implementation source is not published; SIGNATURE.json carries sha256 commitments to it.
