mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-06-23 02:00:20 +07:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 238d149593 |
@@ -95,13 +95,17 @@ void SecureQSettings::setValue(const QString &key, const QVariant &value)
|
|||||||
ds << value;
|
ds << value;
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray encryptedValue = encryptText(decryptedValue);
|
const auto encryptedValue = encryptText(decryptedValue);
|
||||||
m_settings.setValue(key, magicString + encryptedValue);
|
if (encryptedValue.has_value()) {
|
||||||
|
m_settings.setValue(key, magicString + *encryptedValue);
|
||||||
|
} else {
|
||||||
|
qCritical() << "SecureQSettings::setValue encryption failed, plaintext fallback";
|
||||||
|
m_settings.setValue(key, value);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
qCritical() << "SecureQSettings::setValue Encryption required, but key is empty";
|
qCritical() << "SecureQSettings::setValue Encryption required, but key is empty. plaintext fallback";
|
||||||
return;
|
m_settings.setValue(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
m_settings.setValue(key, value);
|
m_settings.setValue(key, value);
|
||||||
}
|
}
|
||||||
@@ -177,16 +181,21 @@ bool SecureQSettings::restoreAppConfig(const QByteArray &json)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray SecureQSettings::encryptText(const QByteArray &value) const
|
std::optional<QByteArray> SecureQSettings::encryptText(const QByteArray &value) const
|
||||||
{
|
{
|
||||||
QSimpleCrypto::QBlockCipher cipher;
|
QSimpleCrypto::QBlockCipher cipher;
|
||||||
QByteArray result;
|
QByteArray encrypted;
|
||||||
try {
|
try {
|
||||||
result = cipher.encryptAesBlockCipher(value, getEncKey(), getEncIv());
|
encrypted = cipher.encryptAesBlockCipher(value, getEncKey(), getEncIv());
|
||||||
} catch (...) { // todo change error handling in QSimpleCrypto?
|
} catch (...) { // todo change error handling in QSimpleCrypto?
|
||||||
qCritical() << "error when encrypting the settings value";
|
qCritical() << "error when encrypting the settings value";
|
||||||
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
return result;
|
if (encrypted.isEmpty() && !value.isEmpty()) {
|
||||||
|
qCritical() << "error when encrypting the settings value: empty result";
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
return encrypted;
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray SecureQSettings::decryptText(const QByteArray &ba) const
|
QByteArray SecureQSettings::decryptText(const QByteArray &ba) const
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include <QMutexLocker>
|
#include <QMutexLocker>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
#include "../client/3rd/qtkeychain/qtkeychain/keychain.h"
|
#include "../client/3rd/qtkeychain/qtkeychain/keychain.h"
|
||||||
|
|
||||||
@@ -24,7 +25,7 @@ public:
|
|||||||
QByteArray backupAppConfig() const;
|
QByteArray backupAppConfig() const;
|
||||||
bool restoreAppConfig(const QByteArray &json);
|
bool restoreAppConfig(const QByteArray &json);
|
||||||
|
|
||||||
QByteArray encryptText(const QByteArray &value) const;
|
std::optional<QByteArray> encryptText(const QByteArray &value) const;
|
||||||
QByteArray decryptText(const QByteArray &ba) const;
|
QByteArray decryptText(const QByteArray &ba) const;
|
||||||
|
|
||||||
bool encryptionRequired() const;
|
bool encryptionRequired() const;
|
||||||
|
|||||||
Reference in New Issue
Block a user