diff options
| author | Melvin Keskin <melvo@olomono.de> | 2021-09-17 01:26:05 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2021-09-25 15:42:05 +0200 |
| commit | ceff219b2b7fec21a5feac0b9606a2ebad8c4822 (patch) | |
| tree | 6b25afb7293dcb7a4f2d9baf418195b0f471f0c1 /src/client | |
| parent | 335b0152948ae3cb5d928b7e6dc69c249e2c0b86 (diff) | |
| download | qxmpp-ceff219b2b7fec21a5feac0b9606a2ebad8c4822.tar.gz | |
TrustStorage: Add security policies
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/QXmppTrustStorage.cpp | 24 | ||||
| -rw-r--r-- | src/client/QXmppTrustStorage.h | 15 |
2 files changed, 38 insertions, 1 deletions
diff --git a/src/client/QXmppTrustStorage.cpp b/src/client/QXmppTrustStorage.cpp index 67f1ace9..16b858c2 100644 --- a/src/client/QXmppTrustStorage.cpp +++ b/src/client/QXmppTrustStorage.cpp @@ -33,6 +33,30 @@ /// /// +/// \fn QXmppTrustStorage::setSecurityPolicies(const QString &encryption = {}, SecurityPolicy securityPolicy = SecurityPolicy::NoSecurityPolicy) +/// +/// Sets the security policy for an encryption protocol or resets the set +/// security policies. +/// +/// If securityPolicy is not passed, the set security policy for encryption is +/// reset. +/// If also encryption is not passed, all set security policies are reset. +/// +/// \param encryption encryption protocol namespace +/// \param securityPolicy security policy being applied +/// + +/// +/// \fn QXmppTrustStorage::securityPolicy(const QString &encryption) +/// +/// Returns the security policy for an encryption protocol. +/// +/// \param encryption encryption protocol namespace +/// +/// \return the set security policy +/// + +/// /// \fn QXmppTrustStorage::addOwnKey(const QString &encryption, const QString &keyId) /// /// Adds an own key (i.e., the key used by this client instance). diff --git a/src/client/QXmppTrustStorage.h b/src/client/QXmppTrustStorage.h index 1252c06b..f1b426b5 100644 --- a/src/client/QXmppTrustStorage.h +++ b/src/client/QXmppTrustStorage.h @@ -34,7 +34,16 @@ class QXMPP_EXPORT QXmppTrustStorage { public: /// - /// trust level of public long-term keys used by end-to-end encryption + /// Security policy to decide which public long-term keys are used for + /// encryption because they are trusted + /// + enum SecurityPolicy { + NoSecurityPolicy, ///< New keys must be trusted manually. + Toakafa, ///< New keys are trusted automatically until the first authentication but automatically distrusted afterwards. + }; + + /// + /// Trust level of public long-term keys used by end-to-end encryption /// protocols /// enum TrustLevel { @@ -46,6 +55,9 @@ public: }; Q_DECLARE_FLAGS(TrustLevels, TrustLevel) + virtual QFuture<void> setSecurityPolicies(const QString &encryption = {}, SecurityPolicy securityPolicy = SecurityPolicy::NoSecurityPolicy) = 0; + virtual QFuture<SecurityPolicy> securityPolicy(const QString &encryption) = 0; + virtual QFuture<void> addOwnKey(const QString &encryption, const QString &keyId) = 0; virtual QFuture<void> removeOwnKey(const QString &encryption) = 0; virtual QFuture<QString> ownKey(const QString &encryption) const = 0; @@ -64,6 +76,7 @@ public: virtual QFuture<QHash<bool, QMultiHash<QString, QString>>> keysForPostponedTrustDecisions(const QString &encryption, const QList<QString> &senderKeyIds = {}) = 0; }; +Q_DECLARE_METATYPE(QXmppTrustStorage::SecurityPolicy) Q_DECLARE_OPERATORS_FOR_FLAGS(QXmppTrustStorage::TrustLevels) #endif // QXMPPTRUSTSTORAGE_H |
