Chatroom Setup
| Description | Pseudo-code |
|---|---|
| Generate ephemeral DH private key of the room initiator | ![]() |
| Generate DH key for BD, Triple DH and Signature | ![]() |
| Set participant list | ![]() |
Join
| Description | Pseudo-code |
|---|---|
| Generate ephemeral DH private key | ![]() |
| Generate DH key for BD, Triple DH and Signature | ![]() |
| Broadcast User identity and the DH key | ![]() |
| Receive other users' id/key | ![]() |
| Compute Session Id | ![]() |
| Generate Triple Diffie-Hellman P2P keys | }}
|
| Generate key confirmations | }}
|
| Generate secret shares | ![]() |
| Generate public shares | ![]() |
| Sign identity, shares | ![]() |
| Broadcast key shares and confirmation | ![]() |
| Receive other users' key shares and confirmation | ![]() |
| Check validity of key confirmation | ![]() |
| Check public shares | ![]() |
| Check signatures | ![]() |
| Recover secret shares | ![]() |
| Generate session key | ![]() |
| Broadcast session key confirmation | ![]() |
Accept
| Description | Pseudo-code |
|---|---|
| broadcast all user's identities | ![]() |
| Receive other users' id/key and update participant list | ![]() |
| Compute Session Id | ![]() |
| Generate Triple Diffie-Hellman P2P key for the new participant | ![]() |
| Generate key confirmations | ![]() |
| Generate secret shares | ![]() |
| Generate public shares | ![]() |
| Sign identity, shares | ![]() |
| Broadcast key shares and confirmation | ![]() |
| Receive other users' key shares and new users confirmation | ![]() |
| Check validity of key confirmation | ![]() |
| Check public shares | ![]() |
| Check signatures | ![]() |
| Recover secret shares | ![]() |
| Generate session key | ![]() |
| Broadcast session key confirmation | ![]() |
Leave
| Description | Pseudo-code |
|---|---|
| Remove leaving user's id/key and update participant list | ![]() |
| Compute Session Id | ![]() |
| Generate secret shares | ![]() |
| Generate public shares | ![]() |
| Sign identity, shares | ![]() |
| Broadcast key shares | ![]() |
| Receive other users' key shares | ![]() |
| Check public shares | ![]() |
| Check signatures | ![]() |
| Recover secret shares | ![]() |
| Generate session key | ![]() |
| Broadcast session key confirmation | ![]() |
Send
| Description | Pseudo-code |
|---|---|
| Generate new DH Key or new key share if needed and append | ![]() |
| Append the hash of the session digest up to parent of current message | ![]() |
| Sign the message | ![]() |
| Encrypt | ![]() |
| Broadcast the message | ![]() |
Receive
| Description | Pseudo-code |
|---|---|
| check signature | ![]() |
| update message block chain | ![]() |
| decrypt messagen | ![]() |
| Verify session id and hash | ![]() |
| Update sender key or share key | ![]() |
| if all users' share are received session key | ![]() |
| return m | ![]() |
![x_{i}\leftarrow [0,order(g)]](https://learn.equalit.ie/mathupload/1/2/d/12d8053eb32075495eaa2b3ba8587435.png)

![plist\leftarrow [U_{i}]](https://learn.equalit.ie/mathupload/0/e/6/0e6f38c92925621271a93a3227820837.png)



}}
}}





![kc_{i}[j]==H(k_{{j,i}},U_{j}){\textrm {for}}j\in \{1,\dots ,n\}](https://learn.equalit.ie/mathupload/2/7/a/27aa90fe2faee1ecc6c6e0a911aeaf73.png)
























