aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlexey Rusakov <Kitsune-Ral@users.sf.net>2021-09-12 10:04:21 +0200
committerGitHub <noreply@github.com>2021-09-12 10:04:21 +0200
commita76ed82eb298d30c7b654c74378f93a9a35580a6 (patch)
tree9359d204c59561f0c9ba12810c7b7fae88eaae07 /lib
parent41944ac3ee76029201c2108a063ae2b6354f6a22 (diff)
parent0209be8305aa38722a3d25593ae71fbb3ac05e52 (diff)
downloadlibquotient-a76ed82eb298d30c7b654c74378f93a9a35580a6.tar.gz
libquotient-a76ed82eb298d30c7b654c74378f93a9a35580a6.zip
Merge pull request #506 from TobiasFella/activateencryption
Add convenience function for activating encryption
Diffstat (limited to 'lib')
-rw-r--r--lib/events/encryptionevent.cpp8
-rw-r--r--lib/events/encryptionevent.h4
-rw-r--r--lib/room.cpp9
-rw-r--r--lib/room.h6
4 files changed, 24 insertions, 3 deletions
diff --git a/lib/events/encryptionevent.cpp b/lib/events/encryptionevent.cpp
index 490a5e8a..aa05a96e 100644
--- a/lib/events/encryptionevent.cpp
+++ b/lib/events/encryptionevent.cpp
@@ -39,6 +39,14 @@ EncryptionEventContent::EncryptionEventContent(const QJsonObject& json)
, rotationPeriodMsgs(json[RotationPeriodMsgsKeyL].toInt(100))
{}
+EncryptionEventContent::EncryptionEventContent(EncryptionType et)
+ : encryption(et)
+{
+ if(encryption != Undefined) {
+ algorithm = encryptionStrings[encryption];
+ }
+}
+
void EncryptionEventContent::fillJson(QJsonObject* o) const
{
Q_ASSERT(o);
diff --git a/lib/events/encryptionevent.h b/lib/events/encryptionevent.h
index 65ee4187..14439fcc 100644
--- a/lib/events/encryptionevent.h
+++ b/lib/events/encryptionevent.h
@@ -12,9 +12,7 @@ class EncryptionEventContent : public EventContent::Base {
public:
enum EncryptionType : size_t { MegolmV1AesSha2 = 0, Undefined };
- explicit EncryptionEventContent(EncryptionType et = Undefined)
- : encryption(et)
- {}
+ explicit EncryptionEventContent(EncryptionType et = Undefined);
explicit EncryptionEventContent(const QJsonObject& json);
EncryptionType encryption;
diff --git a/lib/room.cpp b/lib/room.cpp
index bcbb121b..fb65fd84 100644
--- a/lib/room.cpp
+++ b/lib/room.cpp
@@ -3020,3 +3020,12 @@ bool MemberSorter::operator()(User* u1, QStringView u2name) const
return n1.localeAwareCompare(n2) < 0;
}
+
+void Room::activateEncryption()
+{
+ if(usesEncryption()) {
+ qCWarning(E2EE) << "Room" << objectName() << "is already encrypted";
+ return;
+ }
+ setState<EncryptionEvent>(EncryptionEventContent::MegolmV1AesSha2);
+}
diff --git a/lib/room.h b/lib/room.h
index 7290f9a9..c4d94c02 100644
--- a/lib/room.h
+++ b/lib/room.h
@@ -607,6 +607,12 @@ public Q_SLOTS:
void answerCall(const QString& callId, const QString& sdp);
void hangupCall(const QString& callId);
+ /**
+ * Activates encryption for this room.
+ * Warning: Cannot be undone
+ */
+ void activateEncryption();
+
Q_SIGNALS:
/// Initial set of state events has been loaded
/**