Sync client to establish keys for newly added transports
Write a sync client that establishes transport keys with each contact for any transports that were added more recently than the contact was added.
Subtask of #1802 (closed)
Activity
-
Newest first Oldest first
-
Show all activity Show comments only Show history only
- akwizgran changed due date to July 31, 2021
changed due date to July 31, 2021
- akwizgran changed milestone to %Transfer content securely via SD cards and USB memory sticks
changed milestone to %Transfer content securely via SD cards and USB memory sticks
- akwizgran added S: in progress Sponsor 6 T: task labels
added S: in progress Sponsor 6 T: task labels
- akwizgran marked this issue as related to #1802 (closed)
marked this issue as related to #1802 (closed)
- Author Owner
Messages: key, activate, abort
States: await transport, await key, await activate, end
At startup:
- look up (contact id, transport id) for all transport keys in db
- for each contact and each supported transport:
- if db already contains keys for contact and transport, continue
- look up session for contact and transport
- if no session or state == await transport:
- generate key pair and timestamp
- add private key to session
- send key message
- state = await key
- save session
When key message is received:
- if transport is supported:
- look up session for contact and transport
- if no session and db already contains keys for contact and transport:
- // when contact was added, we supported the transport but the contact didn't
- generate key pair and timestamp
- send key message
- derive and add rotation keys
- delete incoming key message
- send activate message
- state = await activate
- save session
- else if session exists and state == await key:
- derive and add rotation keys
- delete private key from session
- delete incoming key message
- send activate message
- state = await activate
- save session
- else:
- delete session and all messages
- send abort message
- else:
- state = await transport
- save session
When activate message is received:
- look up session for contact and transport
- if session exists and state == await activate:
- activate rotation keys
- delete local key message
- state = end
- save session
- else:
- delete session and all messages
- send abort message
When abort message is received:
- look up session for contact and transport
- if session exists:
- delete session and all messages
- send abort message
- Owner
might be nice to put in the extra work to draw the state transition diagram and put it into the wiki where the other clients live.
- akwizgran mentioned in merge request !1472 (merged)
mentioned in merge request !1472 (merged)
- akwizgran mentioned in merge request !1473 (merged)
mentioned in merge request !1473 (merged)
- akwizgran mentioned in merge request !1474 (merged)
mentioned in merge request !1474 (merged)
- akwizgran marked this issue as related to #2069 (closed)
marked this issue as related to #2069 (closed)
- akwizgran marked this issue as related to #2070 (closed)
marked this issue as related to #2070 (closed)
- akwizgran added R: fixed label and removed S: in progress label
added R: fixed label and removed S: in progress label
- akwizgran closed
closed