// SPDX-FileCopyrightText: 2017 Kitsune Ral // SPDX-FileCopyrightText: 2019 Alexey Andreyev // SPDX-License-Identifier: LGPL-2.1-or-later #include "encryptionevent.h" #include "logging.h" #include "e2ee/e2ee.h" using namespace Quotient; static constexpr std::array encryptionStrings { MegolmV1AesSha2AlgoKey }; template <> EncryptionType Quotient::fromJson(const QJsonValue& jv) { const auto& encryptionString = jv.toString(); for (auto it = encryptionStrings.begin(); it != encryptionStrings.end(); ++it) if (encryptionString == *it) return EncryptionType(it - encryptionStrings.begin()); if (!encryptionString.isEmpty()) qCWarning(EVENTS) << "Unknown EncryptionType: " << encryptionString; return EncryptionType::Undefined; } EncryptionEventContent::EncryptionEventContent(const QJsonObject& json) : encryption(fromJson(json[AlgorithmKeyL])) , algorithm(sanitized(json[AlgorithmKeyL].toString())) { // NB: fillFromJson only fills the variable if the JSON key exists fillFromJson(json[RotationPeriodMsKeyL], rotationPeriodMs); fillFromJson(json[RotationPeriodMsgsKeyL], rotationPeriodMsgs); } EncryptionEventContent::EncryptionEventContent(Quotient::EncryptionType et) : encryption(et) { if(encryption != Quotient::EncryptionType::Undefined) { algorithm = encryptionStrings[static_cast(encryption)]; } } QJsonObject EncryptionEventContent::toJson() const { QJsonObject o; if (encryption != Quotient::EncryptionType::Undefined) o.insert(AlgorithmKey, algorithm); o.insert(RotationPeriodMsKey, rotationPeriodMs); o.insert(RotationPeriodMsgsKey, rotationPeriodMsgs); return o; } >
blob: a0279d7e314a3878e3d56047cdb5cc3f66785c15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22