diff options
author | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2021-09-12 10:04:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-12 10:04:21 +0200 |
commit | a76ed82eb298d30c7b654c74378f93a9a35580a6 (patch) | |
tree | 9359d204c59561f0c9ba12810c7b7fae88eaae07 | |
parent | 41944ac3ee76029201c2108a063ae2b6354f6a22 (diff) | |
parent | 0209be8305aa38722a3d25593ae71fbb3ac05e52 (diff) | |
download | libquotient-a76ed82eb298d30c7b654c74378f93a9a35580a6.tar.gz libquotient-a76ed82eb298d30c7b654c74378f93a9a35580a6.zip |
Merge pull request #506 from TobiasFella/activateencryption
Add convenience function for activating encryption
-rw-r--r-- | lib/events/encryptionevent.cpp | 8 | ||||
-rw-r--r-- | lib/events/encryptionevent.h | 4 | ||||
-rw-r--r-- | lib/room.cpp | 9 | ||||
-rw-r--r-- | lib/room.h | 6 |
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); +} @@ -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 /** |