Skip to main content

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
# 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).

verify_trust_receipt(receipt, opts) also accepts pinned approverKeys, a trusted logPublicKey, and an optional RFC 3339 now. A key entry containing compromised_at is terminal regardless of the receipt's claimed issued_at; when now is supplied, issuance more than five minutes in the future is refused. Omitting now retains offline historical verification.

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.

Publishing (maintainers)

Direct local upload is intentionally unsupported. Create the version-matching python-verify-v<version> tag from merged main, then manually dispatch publish-python-verify.yml with the exact typed confirmation and approve the protected registry-publishing-approval job. The workflow builds twice, attests the exact wheel and source distribution, publishes through PyPI OIDC, and byte-compares both registry artifacts.

Apache-2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

emilia_verify-2.8.5.tar.gz (83.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

emilia_verify-2.8.5-py3-none-any.whl (64.5 kB view details)

Uploaded Python 3

File details

Details for the file emilia_verify-2.8.5.tar.gz.

File metadata

  • Download URL: emilia_verify-2.8.5.tar.gz
  • Upload date:
  • Size: 83.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for emilia_verify-2.8.5.tar.gz
Algorithm Hash digest
SHA256 5211dad60c6a51e770a3a6dd2c6073f13e446ad123ca078784d2786d39160a90
MD5 37e4ed4f33ee2918e460447500c8317c
BLAKE2b-256 816e3952035d64cac7831d6342b7ad042b390d294ed58f6c8ced6ff6aa7dccb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for emilia_verify-2.8.5.tar.gz:

Publisher: publish-python-verify.yml on emiliaprotocol/emilia-protocol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file emilia_verify-2.8.5-py3-none-any.whl.

File metadata

  • Download URL: emilia_verify-2.8.5-py3-none-any.whl
  • Upload date:
  • Size: 64.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for emilia_verify-2.8.5-py3-none-any.whl
Algorithm Hash digest
SHA256 495c503abfe2664b2daf9d678eee71cdec3371677ff7eac8a803508e3d064ed2
MD5 3acd6653eaa26ce00c3965fb348d965a
BLAKE2b-256 18773065754ab45c4d8fdb9c8811fae177024c08825e52df87d6ef3276a39fc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for emilia_verify-2.8.5-py3-none-any.whl:

Publisher: publish-python-verify.yml on emiliaprotocol/emilia-protocol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.8.5 This release

2 files

2.8.3

2 files

2.8.2

2 files

2.8.0

2 files

2.7.0

2 files

2.6.0

2 files

2.5.2

2 files

2.5.1

2 files

2.5.0

2 files

2.4.4

2 files

2.4.3

2 files

2.4.2

2 files

2.4.1

2 files

2.4.0

2 files

2.2.0

2 files

2.1.0

2 files

2.0.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page