Changes

Np1sec/SenderKeys

15 bytes removed, 9 years ago
= Algorithms =
== Nonblocking Blocking Join ==On entering a room, a user sends a QUERY. She is present in the room but hasn't yet joined the conversation. Someone (or multiple parties) will respond with a MEMBER_LIST. If two users try to join simultaneously, the second QUERY will not be responded to until the first user has finished joining.
On receiving a MEMBER_LIST, a present the new user learns the room's membership and sequence numbers. To finish joining, and can keep track of the membership by observing subsequent new user sends a JOIN / USER_LEFT messages, including a CONFIRM for each existing member. Each member will respond to her JOIN message with a CONFIRM, containing a new sender key.
To join a room, a present Until the new user sends a JOINhas finished joining, including a CONFIRM for each member in its parentexisting members continue exchanging DATA with their old sender keys. Once the last confirmation has been received, and expects existing users switch to receive a CONFIRM from each member shortlytheir new sender key.
After sending the JOIN, Once the present user considers herself part of has received all CONFIRM messages from the conversation and can send DATA messages and respond to QUERY messages. She responds to any subsequent JOINs with a CONFIRMexisting membership, she is successfully joined. If the subsequent JOIN doesn't include other users sent a CONFIRM for QUERY in the user (simultaneous join)meantime, then she expects the next one will be responded to receive one shortlywith a MEMBER_LIST.
== Blocking Nonblocking Join ==As aboveOn entering a room, except:* A a user is only added sends a QUERY. Someone will respond with a MEMBER_LIST. If multiple users try to group membership once all CONFIRMs from her JOIN, and any subsequent CONFIRMS (due to simultaneous join) have been simultaneously, they will all be responded to with CONFIRMsimmediately.* In On receiving a simultaneous JOIN caseMEMBER_LIST, the JOINs are handled based on new user learns the server ordering (earliest first)room's membership and sequence numbers. To finish joining, the new user sends a JOIN, including a CONFIRM for each existing member. Each member will respond to her JOIN message with a CONFIRM, containing their current sender key.
Example: Alice and Bob are existing members. Charlie and Dave send simultaneous JOINs, but the server places Charlie's first. Alice and Bob send CONFIRM messages to both Charlie and Dave. Charlie and Dave send CONFIRM messages to each other. Once Charlie receive Alice and Bob's CONFIRMs, he's The new user is part of the group and can send DATAonce her JOIN message is received. Once Dave receives Alice, Bob, and Charlie's CONFIRMs, he's part of the This means that DATA can be sent between group and can send DATAmembers who have not yet confirmed each other.
[[Category: mpOTR]]
21
edits