aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Hand <sdhand@users.noreply.github.com>2018-05-28 15:19:51 +0100
committerfiaxh <fiaxh@users.noreply.github.com>2018-05-28 16:19:51 +0200
commit62e5e6485e75df355226e3d48ee23ea11aff223f (patch)
tree0dd41573e658aa1d377bfa4b257ad3f857bc5a3f
parent5425243203cbf5f86b33c4014c5aa787c6aae856 (diff)
downloaddino-62e5e6485e75df355226e3d48ee23ea11aff223f.tar.gz
dino-62e5e6485e75df355226e3d48ee23ea11aff223f.zip
Implement XEP-0380 for the OMEMO and OpenPGP plugins (#359)
* Implement XEP-0380 in a naive fashion for both the OMEMO and OpenPGP plugins * Move the XEP-0380 namespace to a constant * Move the implementation for xep-0380 to its own module * Remove un-needed lines from plugins/openpgp/src/stream_module.vala
-rw-r--r--plugins/omemo/src/stream_module.vala1
-rw-r--r--plugins/openpgp/src/stream_module.vala1
-rw-r--r--xmpp-vala/CMakeLists.txt1
-rw-r--r--xmpp-vala/src/module/xep/0380_explicit_encryption.vala14
4 files changed, 17 insertions, 0 deletions
diff --git a/plugins/omemo/src/stream_module.vala b/plugins/omemo/src/stream_module.vala
index 4494e834..0148a7f2 100644
--- a/plugins/omemo/src/stream_module.vala
+++ b/plugins/omemo/src/stream_module.vala
@@ -94,6 +94,7 @@ public class StreamModule : XmppStreamModule {
}
message.stanza.put_node(encrypted);
+ Xep.ExplicitEncryption.add_encryption_tag_to_message(message, NS_URI, "OMEMO");
message.body = "[This message is OMEMO encrypted]";
status.encrypted = true;
} catch (Error e) {
diff --git a/plugins/openpgp/src/stream_module.vala b/plugins/openpgp/src/stream_module.vala
index 3bcc3326..f7c24b80 100644
--- a/plugins/openpgp/src/stream_module.vala
+++ b/plugins/openpgp/src/stream_module.vala
@@ -37,6 +37,7 @@ namespace Dino.Plugins.OpenPgp {
if (enc_body != null) {
message.stanza.put_node(new StanzaNode.build("x", NS_URI_ENCRYPTED).add_self_xmlns().put_node(new StanzaNode.text(enc_body)));
message.body = "[This message is OpenPGP encrypted (see XEP-0027)]";
+ Xep.ExplicitEncryption.add_encryption_tag_to_message(message, NS_URI_ENCRYPTED);
return true;
}
return false;
diff --git a/xmpp-vala/CMakeLists.txt b/xmpp-vala/CMakeLists.txt
index 3190fad0..6734f0ee 100644
--- a/xmpp-vala/CMakeLists.txt
+++ b/xmpp-vala/CMakeLists.txt
@@ -68,6 +68,7 @@ SOURCES
"src/module/xep/0313_message_archive_management.vala"
"src/module/xep/0333_chat_markers.vala"
"src/module/xep/0368_srv_records_tls.vala"
+ "src/module/xep/0380_explicit_encryption.vala"
"src/module/xep/pixbuf_storage.vala"
PACKAGES
${ENGINE_PACKAGES}
diff --git a/xmpp-vala/src/module/xep/0380_explicit_encryption.vala b/xmpp-vala/src/module/xep/0380_explicit_encryption.vala
new file mode 100644
index 00000000..710da92d
--- /dev/null
+++ b/xmpp-vala/src/module/xep/0380_explicit_encryption.vala
@@ -0,0 +1,14 @@
+namespace Xmpp.Xep.ExplicitEncryption {
+public const string NS_URI = "urn:xmpp:eme:0";
+
+public static void add_encryption_tag_to_message(MessageStanza message, string ns, string? name = null) {
+ StanzaNode encryption = new StanzaNode.build("encryption", NS_URI).add_self_xmlns()
+ .put_attribute("namespace", ns);
+
+ if(name != null)
+ encryption.put_attribute("name", name);
+
+ message.stanza.put_node(encryption);
+}
+
+}