feat: content hashes on document versions + signed project export manifest
Stores a SHA-256 of every document version's bytes at write time and adds a per-project export manifest listing them alongside the accept/reject trail, so an exported file set can be checked against what the workspace held. The manifest carries a SHA-256 digest over a canonical form of its body, Ed25519-signed when MANIFEST_SIGNING_KEY is set. Signing is optional so a self-hosted deployment without key custody can still export; a malformed key throws rather than silently downgrading to unsigned. The signature covers a versioned context string and a NUL byte before the digest bytes, so it cannot be replayed as a signature over another object, and it verifies with any Ed25519 library. The public key is served at GET /manifest-signing-key. Rebase of #181 onto current main, plus the signing requested on that PR.
| Repository | open-legal-products/mike |
|---|---|
| Author | Andy <102524336+b1rdmania@users.noreply.github.com> |
| Authored | |
| Committed | |
| Parents | 14de1509 |
| Stats | 16 files changed , +892 , -5 |
| Part of | Add tamper-evident project exports |
Capture this commit into my fork
Download a Markdown prompt that tells Claude how to port this
exact commit into your working tree. Run it via
claude -p < capture-commit-562a8139.md
from inside the repo you want the change in.