XEP-0384: define group chats

This commit is contained in:
Daniel Gultsch 2020-03-08 16:02:09 +01:00
parent 834bf3fd87
commit f17f86418c
1 changed files with 68 additions and 1 deletions

View File

@ -29,6 +29,32 @@
<email>andy@strb.org</email>
<jid>andy@strb.org</jid>
</author>
<author>
<firstname>Daniel</firstname>
<surname>Gultsch</surname>
<jid>daniel@gultsch.de</jid>
<email>daniel@gultsch.de</email>
</author>
<author>
<firstname>Tim</firstname>
<surname>Henkes</surname>
</author>
<author>
<firstname>Klaus</firstname>
<surname>Herberth</surname>
<jid>klaus@jsxc.org</jid>
</author>
<author>
<firstname>Paul</firstname>
<surname>Schaub</surname>
<email>vanitasvitae@fsfe.org</email>
</author>
<author>
<firstname>Marvin</firstname>
<surname>Wißfeld</surname>
<jid>jabber@larma.de</jid>
<email>xmpp@larma.de</email>
</author>
<revision>
<version>0.3.0</version>
<date>2018-07-31</date>
@ -465,7 +491,7 @@
<keys jid='juliet@capulet.lit'>
<key rid='31415'>BASE64ENCODED...</key>
</keys>
<keys jid='remeo@montague.lit'>
<keys jid='romeo@montague.lit'>
<key rid='1337'>BASE64ENCODED...</key>
<key prekey="true" rid='12321'>BASE64ENCODED...</key>
<!-- ... -->
@ -487,6 +513,47 @@
After either the OMEMOKeyExchange or the OMEMOAuthenticatedMessage is decrypted, the content is decrypted as described in the section about <link url="#protocol-message_decryption">Message Decryption</link>.
</p>
</section2>
<section2 topic='Group Chats' anchor='group-chats'>
<p>Note: OMEMO encrypted group chats are currently specified to work with &xep0045;. This XEP might be updated in the future to also specify the usage in &xep0369;.</p>
<p>A Multi-User Chat room that supports OMEMO MUST be configured non-anonymous and SHOULD be configured members-only.</p>
<p>A participant wanting to send a message to a group chat MUST first retrieve the members list and then fetch the device list for each member (via pubsub and to their real JIDs) and then subsequently fetch all active bundles.</p>
<section3 topic='Retrieving and maintaining members list' anchor='members-list'>
<p>On join a participant MUST request the member list, the admin list and the owner list as described in <link url='https://xmpp.org/extensions/xep-0045.html#modifymember'><cite>XEP-0045</cite> §9.5</link>, <link url='https://xmpp.org/extensions/xep-0045.html#modifyadmin'><cite>XEP-0045</cite> §10.8</link>, and <link url='https://xmpp.org/extensions/xep-0045.html#modifyowner'><cite>XEP-0045</cite> §10.5</link> respectively. Those three lists MUST be combined as the recipients of OMEMO encrypted messages. Once joined a participant MUST keep track of affiliation changes that occur in the room. This is both for removals (users getting banned or have their affiliation set to none) and users becoming members, admins or owners.</p>
</section3>
<section3 topic='Fetching devices and bundles' anchor='group-fetch'>
<p>Before sending a message a participant SHOULD explicitly fetch device lists for all other participant if the list isnt already cached..</p>
<example caption='Juliet fetching devices for Remeo and Mercutio'><![CDATA[
<iq type='get' from='juliet@capulet.lit' to='romeo@montague.lit' id='gfetch0'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='urn:xmpp:omemo:1:devices'/>
</pubsub>
</iq>
<iq type='get' from='juliet@capulet.lit' to='mercutio@verona.lit' id='gfetch1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='urn:xmpp:omemo:1:devices'/>
</pubsub>
</iq>
]]></example>
<example caption='Juliet fetches bundles for Remeo and Mercutio'><![CDATA[
<iq type='get' from='juliet@capulet.lit' to='romeo@montague.lit' id='gfetch2'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='urn:xmpp:omemo:1:bundles'>
<item id='123'/>
<items>
</pubsub>
</iq>
<iq type='get' from='juliet@capulet.lit' to='mercutio@verona.lit' id='gfetch3'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='urn:xmpp:omemo:1:bundles'>
<item id='456'/>
<items>
</pubsub>
</iq>
]]></example>
</section3>
<section3 topic='Sending a message' anchor='group-send'>
</section3>
</section2>
</section1>
<section1 topic='Business Rules' anchor='rules'>
<p>Before publishing a freshly generated Device ID for the first time, a device MUST check whether that Device ID already exists, and if so, generate a new one.</p>