Give the device a key, and sign consent with it #18
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude/device-key"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The consent record's
signaturefield held the stringunsigned-devbecause no device key existed.What changes. The device has an Ed25519 key derived from the store's data key, so it lives under the same custody and is stable across restarts. Consent is signed over the record's canonical JSON; the consent event on the log is the signed record with its signature; the public key travels in every batch header and shows on the Account tab. The server's adapter verifies each consent line against the header's key and refuses one that does not verify. A header with no key, from an older client, is not checked and the code says so.
Proof. Canonical JSON pinned to one literal on both sides; a signed consent verifies and stops verifying when anything in it moves; the key survives reopening the store; the consent on the log verifies against the store's key; the header carries the key; the adapter refuses a bad consent line. The verifier accepting everything fails the test, checked by making it. Linux verifier green on the pinned toolchain; the Windows crates cross-check clean; 67 adapter tests pass.