Update Group chat feature (design draft)

This commit is contained in:
Sébastien Blin 2020-11-16 12:21:39 -05:00
parent 70a4080e59
commit e057afc232
1 changed files with 7 additions and 4 deletions

View File

@ -6,7 +6,7 @@ A *swarm* is a group able to discuss without any central authority in a resilien
So, the *swarm* is defined by: So, the *swarm* is defined by:
1. Ability to split and merge following the connectivity. 1. Ability to split and merge following the connectivity.
2. Syncing of the hitory. Anyone must be able to send a message to the whole group. 2. Syncing of the history. Anyone must be able to send a message to the whole group.
3. No central authority. Can't rely on any server. 3. No central authority. Can't rely on any server.
4. Non-repudiation. Devices must be able to verify old messages validity and to replay the whole history. 4. Non-repudiation. Devices must be able to verify old messages validity and to replay the whole history.
5. PFS on the transport. Storage is managed by the device. 5. PFS on the transport. Storage is managed by the device.
@ -31,17 +31,20 @@ Main idea is to get a synchronized merkle tree with the participants.
*Alice adds Bob* *Alice adds Bob*
TODO 1. Alice adds Bob to the repo:
+ Adds the public key in `/invited`
+ Adds the CRL into `/crls`
2. Alice sends a request on the DHT
## Receiving an invite ## Receiving an invite
*Alice gets the invite to join the previously create swarm* *Alice gets the invite to join the previously create swarm*
1. She accepts the invite 1. She accepts the invite (if decline, do nothing, it will just stay into invited and Alice will never receives any message)
2. A peer to peer connection between Alice and Bob is done. 2. A peer to peer connection between Alice and Bob is done.
3. Alice pull the git repo of Bob. **WARNING this means that messages needs a connection, not from the DHT like today** 3. Alice pull the git repo of Bob. **WARNING this means that messages needs a connection, not from the DHT like today**
4. Alice validates commits from Bob 4. Alice validates commits from Bob
5. To validate that Alice is a member, she removes the invite from invited directory, then adds her certificate into the members directory 5. To validate that Alice is a member, she removes the invite from `/invited` directory, then adds her certificate into the `/members` directory
6. Once all commits validated and on her device, other members of the group are discovered by Alice. with these peers, she will construct the **DRT** (explained below) with Bob as a bootstrap. 6. Once all commits validated and on her device, other members of the group are discovered by Alice. with these peers, she will construct the **DRT** (explained below) with Bob as a bootstrap.
## Sending a message ## Sending a message