diff options
| author | Melvin Keskin <melvo@olomono.de> | 2021-10-07 16:35:50 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2021-10-10 20:12:46 +0200 |
| commit | e4970a79535dd5cfff2d010049cf39b644a87850 (patch) | |
| tree | f274962b1063012ce0482e9e7328070bec69fba0 /src/base | |
| parent | e1836d08b2f659d2ac5c98280e08d96c8df60d88 (diff) | |
| download | qxmpp-e4970a79535dd5cfff2d010049cf39b644a87850.tar.gz | |
Update to OMEMO 0.8, TM 0.6 and ATM 0.4
* OMEMO has namespace 'urn:xmpp:omemo:2' and uses SCE 0.4 now
* TM has namespace 'urn:xmpp:tm:1' and uses Base64 for key identifiers
* ATM uses Base64 for key identifiers
Diffstat (limited to 'src/base')
| -rw-r--r-- | src/base/QXmppConstants.cpp | 4 | ||||
| -rw-r--r-- | src/base/QXmppConstants_p.h | 2 | ||||
| -rw-r--r-- | src/base/QXmppMessage.cpp | 7 | ||||
| -rw-r--r-- | src/base/QXmppMessage.h | 5 | ||||
| -rw-r--r-- | src/base/QXmppOmemoData.cpp | 16 | ||||
| -rw-r--r-- | src/base/QXmppTrustMessageKeyOwner.h | 8 | ||||
| -rw-r--r-- | src/base/QXmppTrustMessages.cpp | 24 |
7 files changed, 34 insertions, 32 deletions
diff --git a/src/base/QXmppConstants.cpp b/src/base/QXmppConstants.cpp index c6ae77de..0f06a3da 100644 --- a/src/base/QXmppConstants.cpp +++ b/src/base/QXmppConstants.cpp @@ -175,7 +175,7 @@ const char* ns_eme = "urn:xmpp:eme:0"; const char* ns_spoiler = "urn:xmpp:spoiler:0"; // XEP-0384: OMEMO Encryption const char* ns_omemo = "eu.siacs.conversations.axolotl"; -const char* ns_omemo_1 = "urn:xmpp:omemo:1"; +const char* ns_omemo_2 = "urn:xmpp:omemo:2"; // XEP-0405: Mediated Information eXchange (MIX): Participant Server Requirements const char* ns_mix_pam = "urn:xmpp:mix:pam:1"; const char* ns_mix_roster = "urn:xmpp:mix:roster:0"; @@ -185,6 +185,6 @@ const char* ns_mix_misc = "urn:xmpp:mix:misc:0"; // XEP-0428: Fallback Indication const char* ns_fallback_indication = "urn:xmpp:fallback:0"; // XEP-0434: Trust Messages (TM) -const char* ns_tm = "urn:xmpp:tm:0"; +const char* ns_tm = "urn:xmpp:tm:1"; // XEP-0450: Automatic Trust Management (ATM) const char* ns_atm = "urn:xmpp:atm:1"; diff --git a/src/base/QXmppConstants_p.h b/src/base/QXmppConstants_p.h index 2b9e70d6..47dbdd87 100644 --- a/src/base/QXmppConstants_p.h +++ b/src/base/QXmppConstants_p.h @@ -187,7 +187,7 @@ extern const char* ns_eme; extern const char* ns_spoiler; // XEP-0384: OMEMO Encryption extern const char* ns_omemo; -extern const char* ns_omemo_1; +extern const char* ns_omemo_2; // XEP-0405: Mediated Information eXchange (MIX): Participant Server Requirements extern const char* ns_mix_pam; extern const char* ns_mix_roster; diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp index c6313c65..c5a30a46 100644 --- a/src/base/QXmppMessage.cpp +++ b/src/base/QXmppMessage.cpp @@ -5,6 +5,7 @@ * Manjeet Dahiya * Jeremy Lainé * Linus Jahn + * Melvin Keskin * * Source: * https://github.com/qxmpp-project/qxmpp @@ -108,7 +109,7 @@ public: QString thread; QString parentThread; QXmppMessage::Type type; - QString senderKey; + QByteArray senderKey; // XEP-0066: Out of Band Data QString outOfBandUrl; @@ -339,7 +340,7 @@ void QXmppMessage::setParentThread(const QString &parent) /// /// \since QXmpp 1.5 /// -QString QXmppMessage::senderKey() const +QByteArray QXmppMessage::senderKey() const { return d->senderKey; } @@ -358,7 +359,7 @@ QString QXmppMessage::senderKey() const /// /// \since QXmpp 1.5 /// -void QXmppMessage::setSenderKey(const QString &keyId) +void QXmppMessage::setSenderKey(const QByteArray &keyId) { d->senderKey = keyId; } diff --git a/src/base/QXmppMessage.h b/src/base/QXmppMessage.h index 242420ff..ee1ecdca 100644 --- a/src/base/QXmppMessage.h +++ b/src/base/QXmppMessage.h @@ -5,6 +5,7 @@ * Manjeet Dahiya * Jeremy Lainé * Linus Jahn + * Melvin Keskin * * Source: * https://github.com/qxmpp-project/qxmpp @@ -136,8 +137,8 @@ public: QXmppMessage::Type type() const; void setType(QXmppMessage::Type); - QString senderKey() const; - void setSenderKey(const QString &keyId); + QByteArray senderKey() const; + void setSenderKey(const QByteArray &keyId); // XEP-0066: Out of Band Data QString outOfBandUrl() const; diff --git a/src/base/QXmppOmemoData.cpp b/src/base/QXmppOmemoData.cpp index fbcf8261..46932f03 100644 --- a/src/base/QXmppOmemoData.cpp +++ b/src/base/QXmppOmemoData.cpp @@ -163,7 +163,7 @@ void QXmppOmemoDeviceElement::toXml(QXmlStreamWriter *writer) const bool QXmppOmemoDeviceElement::isOmemoDeviceElement(const QDomElement &element) { return element.tagName() == QStringLiteral("device") && - element.namespaceURI() == ns_omemo_1; + element.namespaceURI() == ns_omemo_2; } /// @@ -213,7 +213,7 @@ void QXmppOmemoDeviceList::parse(const QDomElement &element) void QXmppOmemoDeviceList::toXml(QXmlStreamWriter *writer) const { writer->writeStartElement("devices"); - writer->writeDefaultNamespace(ns_omemo_1); + writer->writeDefaultNamespace(ns_omemo_2); for (const auto &device : *this) { device.toXml(writer); @@ -233,7 +233,7 @@ void QXmppOmemoDeviceList::toXml(QXmlStreamWriter *writer) const bool QXmppOmemoDeviceList::isOmemoDeviceList(const QDomElement &element) { return element.tagName() == QStringLiteral("devices") && - element.namespaceURI() == ns_omemo_1; + element.namespaceURI() == ns_omemo_2; } /// @@ -427,7 +427,7 @@ void QXmppOmemoDeviceBundle::parse(const QDomElement &element) void QXmppOmemoDeviceBundle::toXml(QXmlStreamWriter *writer) const { writer->writeStartElement(QStringLiteral("bundle")); - writer->writeDefaultNamespace(ns_omemo_1); + writer->writeDefaultNamespace(ns_omemo_2); writer->writeStartElement(QStringLiteral("ik")); writer->writeCharacters(publicIdentityKey().toBase64()); @@ -465,7 +465,7 @@ void QXmppOmemoDeviceBundle::toXml(QXmlStreamWriter *writer) const bool QXmppOmemoDeviceBundle::isOmemoDeviceBundle(const QDomElement &element) { return element.tagName() == QStringLiteral("bundle") && - element.namespaceURI() == ns_omemo_1; + element.namespaceURI() == ns_omemo_2; } /// @@ -617,7 +617,7 @@ void QXmppOmemoEnvelope::toXml(QXmlStreamWriter *writer) const bool QXmppOmemoEnvelope::isOmemoEnvelope(const QDomElement &element) { return element.tagName() == QStringLiteral("key") && - element.namespaceURI() == ns_omemo_1; + element.namespaceURI() == ns_omemo_2; } /// @@ -767,7 +767,7 @@ void QXmppOmemoElement::parse(const QDomElement &element) void QXmppOmemoElement::toXml(QXmlStreamWriter *writer) const { writer->writeStartElement("encrypted"); - writer->writeAttribute("xmlns", ns_omemo_1); + writer->writeAttribute("xmlns", ns_omemo_2); writer->writeStartElement("header"); writer->writeAttribute("sid", QString::number(d->senderDeviceId)); @@ -803,5 +803,5 @@ void QXmppOmemoElement::toXml(QXmlStreamWriter *writer) const bool QXmppOmemoElement::isOmemoElement(const QDomElement &element) { return element.tagName() == QStringLiteral("encrypted") && - element.namespaceURI() == ns_omemo_1; + element.namespaceURI() == ns_omemo_2; } diff --git a/src/base/QXmppTrustMessageKeyOwner.h b/src/base/QXmppTrustMessageKeyOwner.h index 84a0d610..9c351b3c 100644 --- a/src/base/QXmppTrustMessageKeyOwner.h +++ b/src/base/QXmppTrustMessageKeyOwner.h @@ -44,11 +44,11 @@ public: QString jid() const; void setJid(const QString &jid); - QList<QString> trustedKeys() const; - void setTrustedKeys(const QList<QString> &keyIds); + QList<QByteArray> trustedKeys() const; + void setTrustedKeys(const QList<QByteArray> &keyIds); - QList<QString> distrustedKeys() const; - void setDistrustedKeys(const QList<QString> &keyIds); + QList<QByteArray> distrustedKeys() const; + void setDistrustedKeys(const QList<QByteArray> &keyIds); /// \cond void parse(const QDomElement &element); diff --git a/src/base/QXmppTrustMessages.cpp b/src/base/QXmppTrustMessages.cpp index 621fb5dd..ce76ab26 100644 --- a/src/base/QXmppTrustMessages.cpp +++ b/src/base/QXmppTrustMessages.cpp @@ -200,8 +200,8 @@ class QXmppTrustMessageKeyOwnerPrivate : public QSharedData { public: QString jid; - QList<QString> trustedKeys; - QList<QString> distrustedKeys; + QList<QByteArray> trustedKeys; + QList<QByteArray> distrustedKeys; }; /// @@ -255,7 +255,7 @@ void QXmppTrustMessageKeyOwner::setJid(const QString &jid) /// /// \return the IDs of trusted keys /// -QList<QString> QXmppTrustMessageKeyOwner::trustedKeys() const +QList<QByteArray> QXmppTrustMessageKeyOwner::trustedKeys() const { return d->trustedKeys; } @@ -265,7 +265,7 @@ QList<QString> QXmppTrustMessageKeyOwner::trustedKeys() const /// /// \param keyIds IDs of trusted keys /// -void QXmppTrustMessageKeyOwner::setTrustedKeys(const QList<QString> &keyIds) +void QXmppTrustMessageKeyOwner::setTrustedKeys(const QList<QByteArray> &keyIds) { d->trustedKeys = keyIds; } @@ -275,7 +275,7 @@ void QXmppTrustMessageKeyOwner::setTrustedKeys(const QList<QString> &keyIds) /// /// \return the IDs of distrusted keys /// -QList<QString> QXmppTrustMessageKeyOwner::distrustedKeys() const +QList<QByteArray> QXmppTrustMessageKeyOwner::distrustedKeys() const { return d->distrustedKeys; } @@ -285,7 +285,7 @@ QList<QString> QXmppTrustMessageKeyOwner::distrustedKeys() const /// /// \param keyIds IDs of distrusted keys /// -void QXmppTrustMessageKeyOwner::setDistrustedKeys(const QList<QString> &keyIds) +void QXmppTrustMessageKeyOwner::setDistrustedKeys(const QList<QByteArray> &keyIds) { d->distrustedKeys = keyIds; } @@ -298,10 +298,10 @@ void QXmppTrustMessageKeyOwner::parse(const QDomElement &element) for (auto childElement = element.firstChildElement(); !childElement.isNull(); childElement = childElement.nextSiblingElement()) { - if (childElement.tagName() == "trust") { - d->trustedKeys.append(childElement.text()); - } else if (childElement.tagName() == "distrust") { - d->distrustedKeys.append(childElement.text()); + if (const auto tagName = childElement.tagName(); tagName == "trust") { + d->trustedKeys.append(QByteArray::fromBase64(childElement.text().toLatin1())); + } else if (tagName == "distrust") { + d->distrustedKeys.append(QByteArray::fromBase64(childElement.text().toLatin1())); } } } @@ -312,11 +312,11 @@ void QXmppTrustMessageKeyOwner::toXml(QXmlStreamWriter *writer) const writer->writeAttribute("jid", d->jid); for (const auto &keyIdentifier : d->trustedKeys) { - writer->writeTextElement("trust", keyIdentifier); + writer->writeTextElement("trust", keyIdentifier.toBase64()); } for (const auto &keyIdentifier : d->distrustedKeys) { - writer->writeTextElement("distrust", keyIdentifier); + writer->writeTextElement("distrust", keyIdentifier.toBase64()); } writer->writeEndElement(); |
