aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-02-14 15:25:24 +0100
committerAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-02-16 17:58:17 +0100
commit0a43c023b94e12b3130572f2dd0d6ac8bb4ed110 (patch)
tree46e9bc94c44e1118e2fcede133c01aaed0ca652d /lib
parent2178ca994c4b33197239155f7f6715e0451b9172 (diff)
downloadlibquotient-0a43c023b94e12b3130572f2dd0d6ac8bb4ed110.tar.gz
libquotient-0a43c023b94e12b3130572f2dd0d6ac8bb4ed110.zip
isSupportedAlgorithm()
That's a better primitive than just exposing SupportedAlgorithms list.
Diffstat (limited to 'lib')
-rw-r--r--lib/connection.cpp7
-rw-r--r--lib/e2ee/e2ee.h9
-rw-r--r--lib/events/encryptedevent.cpp9
3 files changed, 17 insertions, 8 deletions
diff --git a/lib/connection.cpp b/lib/connection.cpp
index 0562d416..87fc8e2c 100644
--- a/lib/connection.cpp
+++ b/lib/connection.cpp
@@ -2000,8 +2000,11 @@ void Connection::Private::loadOutdatedUserDevices()
<< device.userId << user;
continue;
}
- if(!device.algorithms.contains("m.olm.v1.curve25519-aes-sha2") || !device.algorithms.contains("m.megolm.v1.aes-sha2")) {
- qCWarning(E2EE) << "Unsupported encryption algorithms found" << device.algorithms;
+ if (!std::all_of(device.algorithms.cbegin(),
+ device.algorithms.cend(),
+ isSupportedAlgorithm)) {
+ qCWarning(E2EE) << "Unsupported encryption algorithms found"
+ << device.algorithms;
continue;
}
if(!verifyIdentitySignature(device, device.deviceId, device.userId)) {
diff --git a/lib/e2ee/e2ee.h b/lib/e2ee/e2ee.h
index 361c48ff..268cb525 100644
--- a/lib/e2ee/e2ee.h
+++ b/lib/e2ee/e2ee.h
@@ -33,6 +33,15 @@ constexpr auto SignedCurve25519Key = "signed_curve25519"_ls;
constexpr auto OlmV1Curve25519AesSha2AlgoKey = "m.olm.v1.curve25519-aes-sha2"_ls;
constexpr auto MegolmV1AesSha2AlgoKey = "m.megolm.v1.aes-sha2"_ls;
+inline bool isSupportedAlgorithm(const QString& algorithm)
+{
+ static constexpr auto SupportedAlgorithms =
+ make_array(OlmV1Curve25519AesSha2AlgoKey, MegolmV1AesSha2AlgoKey);
+ return std::find(SupportedAlgorithms.cbegin(), SupportedAlgorithms.cend(),
+ algorithm)
+ != SupportedAlgorithms.cend();
+}
+
struct Unencrypted {};
struct Encrypted {
QByteArray key;
diff --git a/lib/events/encryptedevent.cpp b/lib/events/encryptedevent.cpp
index ba4dd154..9d07a35f 100644
--- a/lib/events/encryptedevent.cpp
+++ b/lib/events/encryptedevent.cpp
@@ -35,14 +35,11 @@ EncryptedEvent::EncryptedEvent(const QJsonObject& obj)
QString EncryptedEvent::algorithm() const
{
- auto algo = contentPart<QString>(AlgorithmKeyL);
- static constexpr auto SupportedAlgorithms =
- make_array(OlmV1Curve25519AesSha2AlgoKey, MegolmV1AesSha2AlgoKey);
- if (std::find(SupportedAlgorithms.cbegin(), SupportedAlgorithms.cend(),
- algo) == SupportedAlgorithms.cend()) {
+ const auto algo = contentPart<QString>(AlgorithmKeyL);
+ if (!isSupportedAlgorithm(algo))
qWarning(MAIN) << "The EncryptedEvent's algorithm" << algo
<< "is not supported";
- }
+
return algo;
}