Zero-infrastructure verification of EMILIA Protocol trust receipts (Ed25519 + Merkle). Byte-compatible with @emilia-protocol/verify.
Project description
emilia-verify (Python)
Zero-infrastructure verification of EMILIA Protocol trust receipts — pure Python,
one dependency (cryptography). A faithful port of @emilia-protocol/verify:
recursive canonical JSON + Ed25519 (SPKI-DER public key) + sorted-pair Merkle anchors.
The guarantee: a receipt signed on the Node side verifies here, and vice versa —
proven by a cross-language test (tests/test_verify.py verifies a JS-signed fixture).
No EP account, no API key. Just math.
Install
pip install emilia-verify # once published
# or, from the repo: pip install packages/python-verify
Use
from emilia_verify import verify_receipt
result = verify_receipt(receipt_doc, signer_public_key_base64url)
if result.valid:
print("authorized by", receipt_doc["payload"]["claim"]["approver"])
else:
print("rejected:", result.checks, result.error)
verify_receipt(doc, public_key_base64url) -> VerifyResult(valid, checks, error) checks
the version, the Ed25519 signature over the canonical payload, and (when present) the
Merkle anchor. It never raises on bad input — a malformed receipt returns valid=False.
Also exported: verify_merkle_anchor(leaf_hash, proof, expected_root) and
canonicalize(value) (the exact canonical-JSON used for signing).
Why this exists
A trust receipt is only as useful as the number of places that can check it. Shipping a verifier in the Python agent ecosystem (LangChain, CrewAI, AutoGen, LlamaIndex) means a receipt minted anywhere can be verified offline, in the language your agent already speaks.
Apache-2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file emilia_verify-1.0.0.tar.gz.
File metadata
- Download URL: emilia_verify-1.0.0.tar.gz
- Upload date:
- Size: 8.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71f6511a124c8a19063e7fed191980c2a19b48c53e05b7eb53256f667bc179bd
|
|
| MD5 |
5a44509444733ff8d1c72f86e7c7b958
|
|
| BLAKE2b-256 |
6e49b3b661ac610bba66475c66cef44a2f17abdd8b9ffbbb1b5c40889bbfbdc2
|
File details
Details for the file emilia_verify-1.0.0-py3-none-any.whl.
File metadata
- Download URL: emilia_verify-1.0.0-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e73b6dba95d90c21fbb0ae4b46d8759553f7ba958c2c02769564a098ee2ec2b
|
|
| MD5 |
9e7adb5b06ebf3817439967b1c6e9f14
|
|
| BLAKE2b-256 |
0b9ecea1d03e5c072785542aeb13a7b1c4e9ecd36712ab0cd7f2fad06a82dbcb
|