Skip to main content

Canonical Python proof-of-possession (PoP) request signer for the VAID standard.

Project description

vaid-pop

Canonical Python proof-of-possession (PoP) request signer for the VAID standard.

This is the single Python definition of the PoP signing contract. A VAID-bound request carries a fresh, replay-protected Ed25519 signature; this package builds the four x-synthera-* headers that carry it. Import it directly — no extra runtime, no framework.

from vaid_pop import RequestSigner

signer = RequestSigner(vaid=vaid_doc, private_key=agent_key)
headers = signer.sign_headers("POST", "/vaid/mint", body_bytes)
# -> {"x-synthera-vaid": ..., "x-synthera-timestamp": ...,
#     "x-synthera-nonce": ..., "x-synthera-signature": ...}

The x-synthera-* header names are the VAID wire contract — the prefix is the fixed header namespace a conforming verifier reads, not a package dependency.

The firewall

Cross-language byte-identity is the whole point. The signer is locked against the frozen cross-language vector (vendored here at vaid_pop/vectors/operator_pop_v1.json), which the Rust client (vaid-client) and the verifier (vaid_pop) assert against too. The pop-conformance CI job proves Rust output == Python output == vector byte-for-byte. A mismatch is a hard blocker.

Contract: RFC 8785 (JCS) over the camelCase RequestAuthPayload → SHA-256 → pure Ed25519 over the 32-byte digest → raw 64-byte signature.

Standardized on rfc8785 for JCS — the byte-for-byte JCS implementation the vector is proven against. Do not substitute another JCS library without re-proving byte-equality.

Relationship to other packages

  • vaid-client (Rust) is the cross-language peer, proven against the same vector.
  • Language-specific agent integrations depend on this package and re-export RequestSigner.
  • Clients consume this directly to authenticate a VAID-bound request.

Project details


Download files

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

Source Distribution

vaid_pop-0.1.0.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

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

vaid_pop-0.1.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file vaid_pop-0.1.0.tar.gz.

File metadata

  • Download URL: vaid_pop-0.1.0.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for vaid_pop-0.1.0.tar.gz
Algorithm Hash digest
SHA256 62c628602ba676a757cc73e961d6002c658aac60f8cab61e95e37731c57e450b
MD5 5830121e397e9bdef98c972b2d8083a6
BLAKE2b-256 825d37ecc3956558718b795724f4818325b4c23ac2fd45641fb7fa197deb4214

See more details on using hashes here.

File details

Details for the file vaid_pop-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: vaid_pop-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for vaid_pop-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 06f3691f77abbccb65c4d5459362be47270240fb65c438e06655c3409a582c98
MD5 fab31a776ea4531066b614f792963f31
BLAKE2b-256 82b87a8bd0771f8ba7c23f253b977bb7772083e860573468c2aefadf4ee73a78

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page