Files
amnezia-client/client/secure_qsettings.h
T

57 lines
1.5 KiB
C++
Raw Normal View History

2022-08-05 14:31:12 +03:00
#ifndef SECUREQSETTINGS_H
#define SECUREQSETTINGS_H
#include <QSettings>
#include <QObject>
2022-08-26 00:35:03 +03:00
#include <QMutex>
#include <QMutexLocker>
2022-08-27 17:35:43 +03:00
#include "keychain.h"
2022-08-05 14:31:12 +03:00
2022-08-06 19:47:29 +03:00
constexpr const char* settingsKeyTag = "settingsKeyTag";
constexpr const char* settingsIvTag = "settingsIvTag";
2022-08-31 13:29:28 -07:00
constexpr const char* keyChainName = "AmneziaVPN-Keychain";
2022-08-06 19:47:29 +03:00
2022-08-23 22:47:23 +03:00
2022-08-05 14:31:12 +03:00
class SecureQSettings : public QObject
{
public:
explicit SecureQSettings(const QString &organization, const QString &application = QString(), QObject *parent = nullptr);
QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const;
void setValue(const QString &key, const QVariant &value);
2022-08-05 18:59:47 +03:00
void remove(const QString &key);
void sync();
QByteArray backupAppConfig() const;
2022-08-27 17:35:43 +03:00
bool restoreAppConfig(const QByteArray &json);
2022-08-05 14:31:12 +03:00
2022-08-06 19:47:29 +03:00
QByteArray encryptText(const QByteArray &value) const;
QByteArray decryptText(const QByteArray& ba) const;
bool encryptionRequired() const;
2022-08-24 07:38:13 -07:00
QByteArray getEncKey() const;
QByteArray getEncIv() const;
2022-08-27 17:35:43 +03:00
static QByteArray getSecTag(const QString &tag);
static void setSecTag(const QString &tag, const QByteArray &data);
2022-08-05 14:31:12 +03:00
private:
2022-08-23 22:47:23 +03:00
QSettings m_settings;
2022-08-05 18:59:47 +03:00
mutable QMap<QString, QVariant> m_cache;
QStringList encryptedKeys; // encode only key listed here
2022-08-06 19:47:29 +03:00
2022-08-24 07:38:13 -07:00
mutable QByteArray m_key;
mutable QByteArray m_iv;
2022-08-23 22:47:23 +03:00
const QByteArray magicString { "EncData" }; // Magic keyword used for mark encrypted QByteArray
2022-08-26 00:35:03 +03:00
mutable QMutex mutex;
2022-08-05 14:31:12 +03:00
};
#endif // SECUREQSETTINGS_H