From e7394afc6730b16673f4173fcbc55d54a810a80b Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Sun, 28 Apr 2019 22:11:25 +0200 Subject: Implement XEP-0380: Explicit Message Encryption This adds parsing and serialization for XEP-0380: Explicit Message Encryption in version 0.3.0. https://xmpp.org/extensions/xep-0380.html --- tests/qxmppmessage/tst_qxmppmessage.cpp | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'tests/qxmppmessage/tst_qxmppmessage.cpp') diff --git a/tests/qxmppmessage/tst_qxmppmessage.cpp b/tests/qxmppmessage/tst_qxmppmessage.cpp index 9441acef..5fe4b964 100644 --- a/tests/qxmppmessage/tst_qxmppmessage.cpp +++ b/tests/qxmppmessage/tst_qxmppmessage.cpp @@ -50,6 +50,7 @@ private slots: void testMessageCorrect(); void testMessageAttaching(); void testMix(); + void testEme(); void testSpoiler(); }; @@ -114,6 +115,7 @@ void tst_QXmppMessage::testBasic() QCOMPARE(message.isReceiptRequested(), false); QCOMPARE(message.receiptId(), QString()); QCOMPARE(message.xhtml(), QString()); + QCOMPARE(message.encryptionMethod(), QXmppMessage::NoEncryption); QVERIFY(!message.isSpoiler()); serializePacket(message, xml); } @@ -663,6 +665,50 @@ void tst_QXmppMessage::testMix() QCOMPARE(message.mixUserNick(), QString("erik")); } +void tst_QXmppMessage::testEme() +{ + // test standard encryption: OMEMO + const QByteArray xmlOmemo( + "" + "This message is encrypted with OMEMO, but your client doesn't seem to support that." + "" + ""); + + QXmppMessage messageOmemo; + parsePacket(messageOmemo, xmlOmemo); + QCOMPARE(messageOmemo.encryptionMethodNs(), QString("eu.siacs.conversations.axolotl")); + QCOMPARE(messageOmemo.encryptionMethod(), QXmppMessage::OMEMO); + QCOMPARE(messageOmemo.encryptionName(), QString("OMEMO")); + serializePacket(messageOmemo, xmlOmemo); + + // test custom encryption + const QByteArray xmlCustom( + "" + "This message is encrypted with CustomCrypt, but your client doesn't seem to support that." + "" + ""); + + QXmppMessage messageCustom; + parsePacket(messageCustom, xmlCustom); + QCOMPARE(messageCustom.encryptionMethodNs(), QString("im:example:customcrypt:1")); + QCOMPARE(messageCustom.encryptionMethod(), QXmppMessage::UnknownEncryption); + QCOMPARE(messageCustom.encryptionName(), QString("CustomCrypt")); + serializePacket(messageCustom, xmlCustom); + + // test setters/getters + QXmppMessage message; + message.setEncryptionMethod(QXmppMessage::LegacyOpenPGP); + QCOMPARE(message.encryptionMethod(), QXmppMessage::LegacyOpenPGP); + QCOMPARE(message.encryptionMethodNs(), QString("jabber:x:encrypted")); + QCOMPARE(message.encryptionName(), QString("Legacy OpenPGP")); + + message.setEncryptionMethodNs("fancyorg:encryption:fancycrypt:0"); + message.setEncryptionName("FancyCrypt"); + QCOMPARE(message.encryptionMethod(), QXmppMessage::UnknownEncryption); + QCOMPARE(message.encryptionMethodNs(), QString("fancyorg:encryption:fancycrypt:0")); + QCOMPARE(message.encryptionName(), QString("FancyCrypt")); +} + void tst_QXmppMessage::testSpoiler() { // test parsing with hint -- cgit v1.2.3