Metadata-Version: 2.4
Name: prooftrail-verify
Version: 0.2.0
Summary: Independent offline verifier for ProofTrail evidence packages
Author-email: AjmalX0 <ajmalx0456@gmail.com>
License-Expression: MIT OR Apache-2.0
Project-URL: Homepage, https://ajmalx0.github.io/ProofVault/
Project-URL: Documentation, https://ajmalx0.github.io/ProofVault/docs/
Project-URL: Source, https://github.com/AjmalX0/ProofVault
Keywords: forensics,chain-of-custody,merkle,evidence,verification
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Topic :: Security :: Cryptography
Classifier: Environment :: Console
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: cryptography>=41
Requires-Dist: rfc8785>=0.1.2

# prooftrail-verify

An independent, offline verifier for [ProofTrail](https://ajmalx0.github.io/ProofVault/)
evidence packages, written in Python from the
[protocol specification](https://ajmalx0.github.io/ProofVault/docs/reference/protocol-spec.html).
It shares no code with the Rust verifier `pt-verify`, and both must produce
identical results on every published test vector.

```bash
pip install prooftrail-verify
pt-verify-py case-001.ptpkg.zip --pubkey examiner_pub.pem
```

It checks the package structure, manifest and certificate signatures, every
file digest, exhibit digests, the custody hash chain, event signatures,
warrant scope, Merkle roots, inclusion proofs, the ledger chain and timestamp
coherence. Exit status: `0` passed, `1` failed, `2` malformed package or usage
error. Options: `--json`, `--exhibits-dir DIR`, `--ledger-checkpoint N:HASH`.

It can also be used as a library:

```python
import pt_verify
key = pt_verify.PubKey.from_pem(open("examiner_pub.pem", "rb").read())
report = pt_verify.verify_package("case-001.ptpkg.zip", [key])
print(report["result"], report["exit_code"])
```

Licensed under MIT or Apache-2.0.
