You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Offline receipt primitive for delivered agent artifacts (Ed25519, MIT)
#513
What this is: one narrow primitive that may fit what you already do — proving that the file an agent delivered is the file it produced, offline, without a chain or a service.
receipt.py (Python, stdlib + cryptography, MIT):
issue signs an artifact's SHA-256 with the agent's Ed25519 key, together with task, agent id and amount
verify checks signature + file hash + every field, with no network and no account
tampering with one field or one character of the file fails verification
$ python3 receipt.py verify --receipt q-1042.json --artifact report.pdf
OK signature valid · issuer QRs56MmYfzwtOAih…
OK artifact matches 04002a7e5527bbad…
$ # amount changed after signing
FAIL signature: InvalidSignature
$ # artifact edited after signing
FAIL artifact: receipt says 04002a7e… file is f7b25442…
Canonical JSON (sorted keys) is signed, so the signed bytes are reproducible in any language. Money fields are decimal strings, never floats.
Delete this if it is not useful to you — I am not going to follow up. If it is useful, the next thing I am adding is a daily Merkle root so a receipt proves inclusion, not just authorship.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
What this is: one narrow primitive that may fit what you already do — proving that the file an agent delivered is the file it produced, offline, without a chain or a service.
receipt.py(Python, stdlib +cryptography, MIT):issuesigns an artifact's SHA-256 with the agent's Ed25519 key, together with task, agent id and amountverifychecks signature + file hash + every field, with no network and no accountCanonical JSON (sorted keys) is signed, so the signed bytes are reproducible in any language. Money fields are decimal strings, never floats.
Repo, MIT, no dependencies beyond
cryptography: https://github.com/ecstatica/ggbank-receiptDelete this if it is not useful to you — I am not going to follow up. If it is useful, the next thing I am adding is a daily Merkle root so a receipt proves inclusion, not just authorship.
All reactions