Carry a signed wipe instruction, without being able to forge one #89

Merged
paulhitt merged 2 commits from feat/carry-device-wipe-orders into main 2026-09-02 23:56:31 +00:00
paulhitt commented 2026-09-02 17:42:11 +00:00 (Migrated from gitlab.com)

Relay half of flamenet-messenger-ios#38; pairs with flamenet-messenger-ios!69. Spec flamenet-e2e!20 (§6.26).

The relay is a courier. The blob is signed by the account key it never sees, so it cannot forge one — which is the whole reason this exists rather than the relay telling a device it has been removed. That handed an untrusted server the power to destroy every user's history at will (ios#60).

Suppression is the only attack left, and it fails safe — withholding stops a wipe, it cannot cause one.

A device learns only about its own order; a route taking a device id would let anybody enumerate which devices were wiped.

Pending encodes its optional by hand. The synthesised encoder uses encodeIfPresent, so "nothing waiting" came back as {} — an absent key, not a null. A client telling those apart by accident wipes on a parse quirk. The test failed as it should have; the fix is in the encoder.

8 new tests; full relay suite green.

Relay half of flamenet-messenger-ios#38; pairs with flamenet-messenger-ios!69. Spec flamenet-e2e!20 (§6.26). **The relay is a courier.** The blob is signed by the account key it never sees, so it cannot forge one — which is the whole reason this exists rather than the relay telling a device it has been removed. That handed an untrusted server the power to destroy every user's history at will (ios#60). **Suppression is the only attack left, and it fails safe** — withholding stops a wipe, it cannot cause one. A device learns only about **its own** order; a route taking a device id would let anybody enumerate which devices were wiped. **`Pending` encodes its optional by hand.** The synthesised encoder uses `encodeIfPresent`, so "nothing waiting" came back as `{}` — an absent key, not a null. A client telling those apart by accident wipes on a parse quirk. The test failed as it should have; the fix is in the encoder. 8 new tests; full relay suite green.
paulhitt commented 2026-09-02 19:40:56 +00:00 (Migrated from gitlab.com)

added 6 commits

  • 8165231f...1a0a93fa - 4 commits from branch main
  • fab637f4 - Carry a signed wipe instruction, without being able to forge one
  • dc42a3d7 - Carry wipe orders only when switched on, and default it off

Compare with previous version

added 6 commits <ul><li>8165231f...1a0a93fa - 4 commits from branch <code>main</code></li><li>fab637f4 - Carry a signed wipe instruction, without being able to forge one</li><li>dc42a3d7 - Carry wipe orders only when switched on, and default it off</li></ul> [Compare with previous version](/paulhitt/flamenet-relay/-/merge_requests/26/diffs?diff_id=2000720407&start_sha=8165231f266d9837e52298473d9d7821317c762a)
paulhitt commented 2026-09-02 23:56:20 +00:00 (Migrated from gitlab.com)

added 14 commits

  • dc42a3d7...657e5369 - 12 commits from branch main
  • 2f720f82 - Carry a signed wipe instruction, without being able to forge one
  • 4a6bcb07 - Carry wipe orders only when switched on, and default it off

Compare with previous version

added 14 commits <ul><li>dc42a3d7...657e5369 - 12 commits from branch <code>main</code></li><li>2f720f82 - Carry a signed wipe instruction, without being able to forge one</li><li>4a6bcb07 - Carry wipe orders only when switched on, and default it off</li></ul> [Compare with previous version](/paulhitt/flamenet-relay/-/merge_requests/26/diffs?diff_id=2001134835&start_sha=dc42a3d726c5f06a2649fdb7ef4d451cb1d29b10)
paulhitt commented 2026-09-02 23:56:32 +00:00 (Migrated from gitlab.com)

mentioned in commit 58e2d980c6

mentioned in commit 58e2d980c6aeffe98251ec24170a32d2d4ed83ec
paulhitt (Migrated from gitlab.com) merged commit 58e2d980c6 into main 2026-09-02 23:56:32 +00:00
paulhitt commented 2026-09-09 18:59:17 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
Sign in to join this conversation.