From 4869429eb6ffbec2d0dcfaf6e0189a7f234b6af8 Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Sun, 19 Jan 2025 10:12:30 +0700 Subject: [PATCH] refactoring: improved the performance of secure_settings --- client/secure_qsettings.cpp | 8 +++++++- client/secure_qsettings.h | 6 +----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/client/secure_qsettings.cpp b/client/secure_qsettings.cpp index 88c0242b..4fd199db 100644 --- a/client/secure_qsettings.cpp +++ b/client/secure_qsettings.cpp @@ -15,6 +15,12 @@ using namespace QKeychain; +namespace { + constexpr const char *settingsKeyTag = "settingsKeyTag"; + constexpr const char *settingsIvTag = "settingsIvTag"; + constexpr const char *keyChainName = "AmneziaVPN-Keychain"; +} + SecureQSettings::SecureQSettings(const QString &organization, const QString &application, QObject *parent) : QObject { parent }, m_settings(organization, application, parent), encryptedKeys({ "Servers/serversList" }) { @@ -49,7 +55,7 @@ QVariant SecureQSettings::value(const QString &key, const QVariant &defaultValue // check if value is not encrypted, v. < 2.0.x retVal = m_settings.value(key); if (retVal.isValid()) { - if (retVal.userType() == QVariant::ByteArray && retVal.toByteArray().mid(0, magicString.size()) == magicString) { + if (retVal.userType() == QMetaType::QByteArray && retVal.toByteArray().mid(0, magicString.size()) == magicString) { if (getEncKey().isEmpty() || getEncIv().isEmpty()) { qCritical() << "SecureQSettings::setValue Decryption requested, but key is empty"; diff --git a/client/secure_qsettings.h b/client/secure_qsettings.h index 43890578..3f04096e 100644 --- a/client/secure_qsettings.h +++ b/client/secure_qsettings.h @@ -8,10 +8,6 @@ #include "keychain.h" -constexpr const char *settingsKeyTag = "settingsKeyTag"; -constexpr const char *settingsIvTag = "settingsIvTag"; -constexpr const char *keyChainName = "AmneziaVPN-Keychain"; - class SecureQSettings : public QObject { Q_OBJECT @@ -44,7 +40,7 @@ public: private: QSettings m_settings; - mutable QMap m_cache; + mutable QHash m_cache; QStringList encryptedKeys; // encode only key listed here // only this fields need for backup