package join

Mouse Melon logoGet desktop application:
View/edit binary Protocol Buffers messages

message Begin

md-d2d-join.proto:194

Initial message sent by ED after nomination and user confirmation that RPH is identical on both devices. When creating this message, after confirmation by the user: 1. Stop displaying RPH and notify the user that the device join process is in progress. 2. Begin a transaction (scope `NEW_DEVICE_SYNC`, precondition: none) on the D2M connection. This transaction is to be held until the connection to ND drops or until a `Registered` message was received. While the transaction is being held, no `Reflected` and no end-to-end encrypted message coming from the chat server is allowed to be processed! If the D2M connection is lost, the established connection must also be closed, aborting any running steps of this protocol. 3. Send the `Begin` message and continue with the steps for creating `EssentialData`. When receiving this message: 1. If `Begin` has been received before, close the connection and abort these steps. 2. Stop displaying RPH and notify the user that the device join process is in progress.

Used in: EdToNd

(message has no fields)

message EdToNd

md-d2d-join.proto:152

Root message envelope for messages from the existing device (ED) to the new device (ND).

message EssentialData

md-d2d-join.proto:230

Essential data ND needs to be able to participate in the device group. Note: The transmitted used nonces are hashed with HMAC-SHA256 using the identity as _key_. When creating this message: 1. Gather all blobs referenced for the user's profile picture, contact profile pictures, etc. and send them as `common.BlobData` before this message. 2. Send the gathered `EssentialData`. When receiving this message: 1. If `EssentialData` has been received before, close the connection and abort these steps. 2. If any Blob ID is missing from the previously received set of `common.BlobData`, close the connection and abort these steps. 3. Store the data in the device's database. 4. Generate a random D2M Device ID and a random CSP Device ID and store both in the device's database. 5. Establish a D2M connection by connecting to the provided mediator server. 6. Wait until the `ServerInfo` has been received on the D2M connection. Validate that the provided `DeviceSlotState` is `NEW`. Otherwise, close both the D2M connection (normally) and the connection to ED and abort these steps. 7. Send a `Registered` message to ED. 8. Ask the user whether conversation history data should be requested from ND: 1. If the user does not want to request conversation history data, wait until all buffered data on the connection has been written. Then, close the connection and abort these steps. 2. If the user wants to request conversation history data from ED, leave the connection running and start the History Exchange Protocol.

Used in: EdToNd

message EssentialData.AugmentedContact

md-d2d-join.proto:272

Contacts

Used in: EssentialData

message EssentialData.AugmentedDistributionList

md-d2d-join.proto:296

Distribution lists

Used in: EssentialData

message EssentialData.AugmentedGroup

md-d2d-join.proto:285

Groups

Used in: EssentialData

message EssentialData.DeviceGroupData

md-d2d-join.proto:256

Device group data

Used in: EssentialData

message EssentialData.IdentityData

md-d2d-join.proto:234

User's identity data

Used in: EssentialData

message NdToEd

md-d2d-join.proto:143

Root message envelope for messages from the new device (ND) to the existing device (ED).

message Registered

md-d2d-join.proto:324

Lets ED know that ND has received all essential data and successfully registered itself on the mediator server. When receiving this message: 1. Commit the transaction on the D2M connection. From this point on, processing `Reflected` and end-to-end encrypted message coming from the chat server is allowed again. 2. Wait for ND to either close the connection or for ND to request conversation history data. Any further messages from ND will move into the History Exchange Protocol.

Used in: NdToEd

(message has no fields)