aboutsummaryrefslogtreecommitdiff
path: root/lib/events/keyverificationevent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/events/keyverificationevent.cpp')
-rw-r--r--lib/events/keyverificationevent.cpp193
1 files changed, 193 insertions, 0 deletions
diff --git a/lib/events/keyverificationevent.cpp b/lib/events/keyverificationevent.cpp
new file mode 100644
index 00000000..938b3bde
--- /dev/null
+++ b/lib/events/keyverificationevent.cpp
@@ -0,0 +1,193 @@
+// SPDX-FileCopyrightText: 2021 Carl Schwan <carlschwan@kde.org>
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#include "keyverificationevent.h"
+
+using namespace Quotient;
+
+KeyVerificationRequestEvent::KeyVerificationRequestEvent(const QJsonObject &obj)
+ : Event(typeId(), obj)
+{}
+
+QString KeyVerificationRequestEvent::fromDevice() const
+{
+ return contentJson()["from_device"_ls].toString();
+}
+
+QString KeyVerificationRequestEvent::transactionId() const
+{
+ return contentJson()["transaction_id"_ls].toString();
+}
+
+QStringList KeyVerificationRequestEvent::methods() const
+{
+ QStringList methods;
+ for (const auto &method : contentJson()["methods"].toArray()) {
+ methods.append(method.toString());
+ }
+ return methods;
+}
+
+uint64_t KeyVerificationRequestEvent::timestamp() const
+{
+ return contentJson()["timestamp"_ls].toDouble();
+}
+
+KeyVerificationStartEvent::KeyVerificationStartEvent(const QJsonObject &obj)
+ : Event(typeId(), obj)
+{}
+
+QString KeyVerificationStartEvent::fromDevice() const
+{
+ return contentJson()["from_device"_ls].toString();
+}
+
+QString KeyVerificationStartEvent::transactionId() const
+{
+ return contentJson()["transaction_id"_ls].toString();
+}
+
+QString KeyVerificationStartEvent::method() const
+{
+ return contentJson()["method"_ls].toString();
+}
+
+Omittable<QString> KeyVerificationStartEvent::nextMethod() const
+{
+ auto next = contentJson()["method"_ls];
+ if (next.isUndefined()) {
+ return std::nullopt;
+ }
+ return next.toString();
+}
+
+QStringList KeyVerificationStartEvent::keyAgreementProtocols() const
+{
+ Q_ASSERT(method() == QStringLiteral("m.sas.v1"));
+ QStringList protocols;
+ for (const auto &proto : contentJson()["key_agreement_protocols"_ls].toArray()) {
+ protocols.append(proto.toString());
+ }
+ return protocols;
+}
+
+QStringList KeyVerificationStartEvent::hashes() const
+{
+ Q_ASSERT(method() == QStringLiteral("m.sas.v1"));
+ QStringList hashes;
+ for (const auto &hashItem : contentJson()["hashes"_ls].toArray()) {
+ hashes.append(hashItem.toString());
+ }
+ return hashes;
+}
+
+QStringList KeyVerificationStartEvent::messageAuthenticationCodes() const
+{
+ Q_ASSERT(method() == QStringLiteral("m.sas.v1"));
+
+ QStringList codes;
+ for (const auto &code : contentJson()["message_authentication_codes"_ls].toArray()) {
+ codes.append(code.toString());
+ }
+ return codes;
+}
+
+QString KeyVerificationStartEvent::shortAuthenticationString() const
+{
+ return contentJson()["short_authentification_string"_ls].toString();
+}
+
+KeyVerificationAcceptEvent::KeyVerificationAcceptEvent(const QJsonObject &obj)
+ : Event(typeId(), obj)
+{}
+
+QString KeyVerificationAcceptEvent::transactionId() const
+{
+ return contentJson()["transaction_id"_ls].toString();
+}
+
+QString KeyVerificationAcceptEvent::method() const
+{
+ return contentJson()["method"_ls].toString();
+}
+
+QString KeyVerificationAcceptEvent::keyAgreementProtocol() const
+{
+ return contentJson()["key_agreement_protocol"_ls].toString();
+}
+
+QString KeyVerificationAcceptEvent::hashData() const
+{
+ return contentJson()["hash"_ls].toString();
+}
+
+QStringList KeyVerificationAcceptEvent::shortAuthenticationString() const
+{
+ QStringList strings;
+ for (const auto &authenticationString : contentJson()["short_authentification_string"].toArray()) {
+ strings.append(authenticationString.toString());
+ }
+ return strings;
+}
+
+QString KeyVerificationAcceptEvent::commitement() const
+{
+ return contentJson()["commitement"].toString();
+}
+
+KeyVerificationCancelEvent::KeyVerificationCancelEvent(const QJsonObject &obj)
+ : Event(typeId(), obj)
+{}
+
+QString KeyVerificationCancelEvent::transactionId() const
+{
+ return contentJson()["transaction_id"_ls].toString();
+}
+
+QString KeyVerificationCancelEvent::reason() const
+{
+ return contentJson()["reason"_ls].toString();
+}
+
+QString KeyVerificationCancelEvent::code() const
+{
+ return contentJson()["code"_ls].toString();
+}
+
+KeyVerificationKeyEvent::KeyVerificationKeyEvent(const QJsonObject &obj)
+ : Event(typeId(), obj)
+{}
+
+QString KeyVerificationKeyEvent::transactionId() const
+{
+ return contentJson()["transaction_id"_ls].toString();
+}
+
+QString KeyVerificationKeyEvent::key() const
+{
+ return contentJson()["key"_ls].toString();
+}
+
+KeyVerificationMacEvent::KeyVerificationMacEvent(const QJsonObject &obj)
+ : Event(typeId(), obj)
+{}
+
+QString KeyVerificationMacEvent::transactionId() const
+{
+ return contentJson()["transaction_id"].toString();
+}
+
+QString KeyVerificationMacEvent::keys() const
+{
+ return contentJson()["keys"].toString();
+}
+
+QHash<QString, QString> KeyVerificationMacEvent::mac() const
+{
+ QHash<QString, QString> macs;
+ const auto macObj = contentJson()["mac"_ls].toObject();
+ for (auto mac = macObj.constBegin(); mac != macObj.constEnd(); mac++) {
+ macs.insert(mac.key(), mac.value().toString());
+ }
+ return macs;
+}