Create mls_key_packages (id, deviceId → user_devices.id, package bytea/text, expiresAt, consumed, createdAt). Each device publishes MLS key packages (public). Endpoints: POST /devices/:id/mls-key-packages (upload batch), GET /users/:id/devices/:deviceId/mls-key-package (fetch + consume one for adding to a group). Validate key material server-side.
Acceptance criteria:
- Key packages stored (public only)
- Fetch consumes one package atomically
- Replenishment signal emitted like prekeys
Create
mls_key_packages (id, deviceId → user_devices.id, package bytea/text, expiresAt, consumed, createdAt). Each device publishes MLS key packages (public). Endpoints:POST /devices/:id/mls-key-packages(upload batch),GET /users/:id/devices/:deviceId/mls-key-package(fetch + consume one for adding to a group). Validate key material server-side.Acceptance criteria: