Merge pull request #241 from linkmauve/eme

Explicit Message Encryption ProtoXEP: Add a 0.0.2 version
This commit is contained in:
Florian Schmaus 2016-10-26 22:20:31 +02:00 committed by GitHub
commit 557c240e56
1 changed files with 39 additions and 14 deletions

View File

@ -29,6 +29,20 @@
<email>linkmauve@linkmauve.fr</email> <email>linkmauve@linkmauve.fr</email>
<jid>linkmauve@linkmauve.fr</jid> <jid>linkmauve@linkmauve.fr</jid>
</author> </author>
<revision>
<version>0.0.2</version>
<date>2016-08-28</date>
<initials>egp</initials>
<remark><ul>
<li>Made the 'name' attribute optional for existing mechanisms.</li>
<li>Added a remark about the possibility to hide encrypted messages
following user input.</li>
<li>Made explicit that this protocol affects any encryption mechanism,
present or future, not only those listed here.</li>
<li>Display the namespace of the encryption mechanism in the default
messages.</li>
</ul></remark>
</revision>
<revision> <revision>
<version>0.0.1</version> <version>0.0.1</version>
<date>2016-08-14</date> <date>2016-08-14</date>
@ -77,7 +91,6 @@
id='secret1'> id='secret1'>
<body>?OTR?v23?...</body> <body>?OTR?v23?...</body>
<encryption xmlns='urn:xmpp:eme:0' <encryption xmlns='urn:xmpp:eme:0'
name='OTR'
namespace='urn:xmpp:otr:0'/> namespace='urn:xmpp:otr:0'/>
</message> </message>
]]></example> ]]></example>
@ -86,7 +99,8 @@
display that the message was encrypted but that it is not able to decrypt display that the message was encrypted but that it is not able to decrypt
it instead of displaying the body, for example:</p> it instead of displaying the body, for example:</p>
<div class='example'> <div class='example'>
<p>🔒 This message was encrypted with OTR and could not be decrypted.</p> <p>🔒 This message was encrypted with OTR (urn:xmpp:otr:0) and could not be
decrypted.</p>
</div> </div>
<p>Juliet may then communicate to Romeo that she was unable to receive his <p>Juliet may then communicate to Romeo that she was unable to receive his
@ -104,7 +118,6 @@
</openpgp> </openpgp>
<body>This message is encrypted with OpenPGP for XMPP.</body> <body>This message is encrypted with OpenPGP for XMPP.</body>
<encryption xmlns='urn:xmpp:eme:0' <encryption xmlns='urn:xmpp:eme:0'
name='OpenPGP for XMPP'
namespace='urn:xmpp:openpgp:0'/> namespace='urn:xmpp:openpgp:0'/>
</message> </message>
]]></example> ]]></example>
@ -112,17 +125,19 @@
<p>Upon receiving this message, Juliets current client prompts her to enable <p>Upon receiving this message, Juliets current client prompts her to enable
a plugin, or even do it on its own, possible representations include:</p> a plugin, or even do it on its own, possible representations include:</p>
<div class='example'> <div class='example'>
<p>🔒 This message was encrypted with OpenPGP for XMPP, <link url="#">click <p>🔒 This message was encrypted with OpenPGP for XMPP
here</link> to enable this plugin.</p> (urn:xmpp:openpgp:0), <link url="#">click here</link> to enable this
</div> plugin.</p>
<div class='example'>
<p>🔒 This message was encrypted with OpenPGP for XMPP, downloading and
installing an appropriate plugin, your message will be displayed
shortly.</p>
</div> </div>
</section2> </section2>
<section2 topic='Protocols Supported' anchor='protocols'> <section2 topic='Protocols Supported' anchor='protocols'>
<p>Any encryption mechanism using message as a transport is a candidate, and
MAY have a 'name' attribute to help the receiving client display it to the
user, in case this client doesnt understand its namespace yet. A 'name'
attribute SHOULD NOT be included for the protocols listed herein, and
SHOULD be ignored by a receiving client:</p>
<table> <table>
<tr> <tr>
<th>Name</th> <th>Name</th>
@ -156,7 +171,7 @@
<p>If an entity supports the Encrypted Message Extension protocol, it MUST <p>If an entity supports the Encrypted Message Extension protocol, it MUST
report that by including a &xep0030; feature of "urn:xmpp:eme:0" in report that by including a &xep0030; feature of "urn:xmpp:eme:0" in
response to disco#info requests:</p> response to disco#info requests:</p>
<example caption='Client queries for entity features'><![CDATA[ <example caption='Client queries for entity features'><![CDATA[
<iq type='get' <iq type='get'
id='disco1' id='disco1'
to='juliet@capulet.lit/balcony' to='juliet@capulet.lit/balcony'
@ -165,7 +180,7 @@
</iq> </iq>
]]></example> ]]></example>
<example caption='Entity responds with features'><![CDATA[ <example caption='Entity responds with features'><![CDATA[
<iq type='result' <iq type='result'
id='disco1' id='disco1'
to='romeo@montague.lit/orchard' to='romeo@montague.lit/orchard'
@ -195,12 +210,22 @@
recipient doesnt advertise support for it in their disco, or isnt recipient doesnt advertise support for it in their disco, or isnt
currently connected, since the recipient may be using multiple clients with currently connected, since the recipient may be using multiple clients with
different capabilities.</p> different capabilities.</p>
<p>A sender entity MAY include a 'name' attribute for any encryption
mechanism not listed in this specification, to help the receiving entity
present it to the user, but SHOULD NOT include one for the ones listed
here.</p>
<p>A receiving entity MUST NOT use the 'name' attribute if it is present and
they already have a name associated with it.</p>
<p>A receiving entity MAY not display anything in case an encrypted message
has been received, if the user agreed to that behaviour.</p>
</section1> </section1>
<section1 topic='Internationalization Considerations' anchor='i18n'> <section1 topic='Internationalization Considerations' anchor='i18n'>
<p>When a message is marked with an encryption tag and can not be decrypted, <p>When a message is marked with an encryption tag and can not be decrypted,
the body can safely be ignored and a localized message displayed the body can safely be ignored and a localized message displayed
instead.</p> instead.</p>
<p>If an entity includes a 'name' attribute, it should attempt to localise it
to the best of its abilities for the receiving client.</p>
</section1> </section1>
<section1 topic='Security Considerations' anchor='security'> <section1 topic='Security Considerations' anchor='security'>
@ -216,7 +241,7 @@
<section1 topic='XMPP Registrar Considerations' anchor='registrar'> <section1 topic='XMPP Registrar Considerations' anchor='registrar'>
<section2 topic='Protocol Namespaces' anchor='registrar-ns'> <section2 topic='Protocol Namespaces' anchor='registrar-ns'>
<p>This specification defines the following XML namespace:</p> <p>This specification defines the following XML namespace:</p>
<ul> <ul>
<li>'urn:xmpp:eme:0'</li> <li>'urn:xmpp:eme:0'</li>
</ul> </ul>
@ -241,8 +266,8 @@
<xs:element name="encryption"> <xs:element name="encryption">
<xs:complexType> <xs:complexType>
<xs:attribute type="xs:string" use="required" name="name"/>
<xs:attribute type="xs:string" use="required" name="namespace"/> <xs:attribute type="xs:string" use="required" name="namespace"/>
<xs:attribute type="xs:string" use="optional" name="name"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>