aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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