dynamicfeed-verify
Verify Dynamic Feed DF-VERIFY/1 Ed25519-signed responses — independently, in one line. No account, no dependency on Dynamic Feed at runtime beyond fetching the public key. You can verify, even against us.
Reference implementation of the DF-VERIFY/1 standard.
Install
pip install dynamicfeed-verify
Use
from dynamicfeed_verify import verify, verify_live
# 1) fetch a fresh signed awareness verdict and verify it
env, result = verify_live()
print(result) # {'ok': True, 'key_id': 'df-ed25519-…', 'verdict': 'caution', ...}
# 2) verify any signed response you already hold
result = verify(signed_response)
if not result["ok"]:
raise RuntimeError(result["error"])
# 3) verify fully offline if you already have the JWKS
result = verify(signed_response, jwks={"df-ed25519-…": "<base64url public key>"})
CLI
dynamicfeed-verify # fetch a live verdict + verify
dynamicfeed-verify - < response.json # verify a saved signed response
How it works
A signed response carries a signature block (alg, key_id, canonicalization, sig). Verification:
- Drop the
signaturefield; keep the rest as the payload. - Canonicalize — JSON, keys sorted recursively, compact separators (
,:), UTF-8. Equivalent tojson.dumps(payload, sort_keys=True, separators=(",", ":")). - Fetch the public key from
https://dynamicfeed.ai/.well-known/keysand look upsignature.key_id. - Verify the Ed25519 signature over the canonical bytes. Change one byte → it fails.
Full specification: https://dynamicfeed.ai/standard
License
MIT.
Release files for dynamicfeed-verify 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dynamicfeed_verify-1.0.2.tar.gz | 8.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dynamicfeed_verify-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.4 kB
Release files / dynamicfeed_verify-1.0.2.tar.gz
| Download URL | dynamicfeed_verify-1.0.2.tar.gz |
|---|---|
| Size | 8.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b6266325c644e854945e32974dea480c8119c4fc1ab674c5188897b70b2d81be
|
|
BLAKE2b-256 checksum How to use checksums |
f72f5ff14521b44fc06dd7ee564e745f9e8b002b721699cbaf5bc5d4313506d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|
Release files / dynamicfeed_verify-1.0.2-py3-none-any.whl
| Download URL | dynamicfeed_verify-1.0.2-py3-none-any.whl |
|---|---|
| Size | 5.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a91f4240da2105ef40248c7527861a29eb6b6c4fdf6111fc1094ae1f699f864d
|
|
BLAKE2b-256 checksum How to use checksums |
d49b7f08ef646ef5e41564331a338cdf8e3d6264060e22293840763c4181832d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|