Completes the server-side invite-signing story. The web UI's create-invite flow needs the mesh owner's ed25519 SECRET key to sign each invite payload; these columns let the backend hold + use them per mesh. - mesh.mesh.owner_secret_key (text, nullable): ed25519 secret key (hex, 64 bytes) paired with owner_pubkey. Stored PLAINTEXT AT REST for v0.1.0. Acceptable trade-off for a managed-broker SaaS launch — the operator controls the key anyway. v0.2.0 will either encrypt with a column-level KEK or migrate to client-held keys. - mesh.mesh.root_key (text, nullable): 32-byte shared key (base64url, no padding) used by channel/broadcast encryption in later steps. Embedded in every invite so joiners receive it at join time. migrations/0002_vengeful_enchantress.sql — two ALTER TABLE ADD COLUMN. Nullable so existing rows don't need backfill to migrate; the backfill script populates them idempotently. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
139 B
139 B