From d071f033c8298fb159eb8f2fb24462e4d0371dc4 Mon Sep 17 00:00:00 2001 From: Melvin Keskin Date: Fri, 17 Sep 2021 01:35:59 +0200 Subject: TrustMemoryStorage: Add security policies --- src/client/QXmppTrustMemoryStorage.cpp | 21 +++++++++++++++++++++ src/client/QXmppTrustMemoryStorage.h | 3 +++ 2 files changed, 24 insertions(+) (limited to 'src') diff --git a/src/client/QXmppTrustMemoryStorage.cpp b/src/client/QXmppTrustMemoryStorage.cpp index 1d9d1909..c6d80179 100644 --- a/src/client/QXmppTrustMemoryStorage.cpp +++ b/src/client/QXmppTrustMemoryStorage.cpp @@ -72,6 +72,9 @@ struct UnprocessedKey class QXmppTrustMemoryStoragePrivate { public: + // encryption protocols mapped to security policies + QMap securityPolicies; + // encryption protocols mapped to keys of this client instance QMap ownKeys; @@ -94,6 +97,24 @@ QXmppTrustMemoryStorage::QXmppTrustMemoryStorage() QXmppTrustMemoryStorage::~QXmppTrustMemoryStorage() = default; /// \cond +QFuture QXmppTrustMemoryStorage::setSecurityPolicies(const QString &encryption, const QXmppTrustStorage::SecurityPolicy securityPolicy) +{ + if (encryption.isEmpty()) { + d->securityPolicies.clear(); + } else if (securityPolicy == QXmppTrustStorage::NoSecurityPolicy) { + d->securityPolicies.remove(encryption); + } else { + d->securityPolicies.insert(encryption, securityPolicy); + } + + return makeReadyFuture(); +} + +QFuture QXmppTrustMemoryStorage::securityPolicy(const QString &encryption) +{ + return makeReadyFuture(std::move(d->securityPolicies.value(encryption))); +} + QFuture QXmppTrustMemoryStorage::addOwnKey(const QString &encryption, const QString &keyId) { d->ownKeys.insert(encryption, keyId); diff --git a/src/client/QXmppTrustMemoryStorage.h b/src/client/QXmppTrustMemoryStorage.h index 6c1eb668..eecbaa33 100644 --- a/src/client/QXmppTrustMemoryStorage.h +++ b/src/client/QXmppTrustMemoryStorage.h @@ -38,6 +38,9 @@ public: ~QXmppTrustMemoryStorage(); /// \cond + QFuture setSecurityPolicies(const QString &encryption = {}, SecurityPolicy securityPolicy = QXmppTrustStorage::NoSecurityPolicy) override; + QFuture securityPolicy(const QString &encryption) override; + QFuture addOwnKey(const QString &encryption, const QString &keyId) override; QFuture removeOwnKey(const QString &encryption) override; QFuture ownKey(const QString &encryption) const override; -- cgit v1.2.3