Secure settings 2

This commit is contained in:
pokamest 2022-08-05 14:31:12 +03:00
parent 870cb26e01
commit 71b57bfed1
7 changed files with 110 additions and 35 deletions

View file

@ -0,0 +1,47 @@
#include "secure_qsettings.h"
#include "secureformat.h"
#include <QDataStream>
SecureQSettings::SecureQSettings(const QString &organization, const QString &application, QObject *parent)
: QObject{parent},
m_setting(organization, application, parent)
{
encrypted = m_setting.value("encrypted").toBool();
// convert settings to encrypted
if (! encrypted) {
// TODO: convert
// m_setting.sync();
}
}
QVariant SecureQSettings::value(const QString &key, const QVariant &defaultValue) const
{
if (encrypted) {
QByteArray encryptedValue = m_setting.value(key, defaultValue).toByteArray();
QByteArray decryptedValue = decryptText(encryptedValue);
QDataStream ds(&decryptedValue, QIODevice::ReadOnly);
QVariant v;
ds >> v;
return v;
}
else {
return m_setting.value(key, defaultValue);
}
}
void SecureQSettings::setValue(const QString &key, const QVariant &value)
{
QByteArray decryptedValue;
{
QDataStream ds(&decryptedValue, QIODevice::WriteOnly);
ds << value;
}
QByteArray encryptedValue = encryptText(decryptedValue);
m_setting.setValue(key, encryptedValue);
}