aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2021-09-17 01:26:05 +0200
committerLinus Jahn <lnj@kaidan.im>2021-09-25 15:42:05 +0200
commitceff219b2b7fec21a5feac0b9606a2ebad8c4822 (patch)
tree6b25afb7293dcb7a4f2d9baf418195b0f471f0c1 /src/client
parent335b0152948ae3cb5d928b7e6dc69c249e2c0b86 (diff)
downloadqxmpp-ceff219b2b7fec21a5feac0b9606a2ebad8c4822.tar.gz
TrustStorage: Add security policies
Diffstat (limited to 'src/client')
-rw-r--r--src/client/QXmppTrustStorage.cpp24
-rw-r--r--src/client/QXmppTrustStorage.h15
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