mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
add save encryption
This commit is contained in:
parent
9df2b49d07
commit
c33d387465
22
core.cpp
22
core.cpp
|
@ -1126,10 +1126,27 @@ void Core::saveConfiguration()
|
||||||
|
|
||||||
qDebug() << "Core: Saving";
|
qDebug() << "Core: Saving";
|
||||||
|
|
||||||
uint32_t fileSize = tox_size(tox);
|
uint32_t fileSize;
|
||||||
|
if (Settings::getInstance().getEncryptTox())
|
||||||
|
fileSize = tox_encrypted_size(tox);
|
||||||
|
else
|
||||||
|
fileSize = tox_size(tox);
|
||||||
|
|
||||||
if (fileSize > 0 && fileSize <= INT32_MAX) {
|
if (fileSize > 0 && fileSize <= INT32_MAX) {
|
||||||
uint8_t *data = new uint8_t[fileSize];
|
uint8_t *data = new uint8_t[fileSize];
|
||||||
|
|
||||||
|
if (Settings::getInstance().getEncryptTox())
|
||||||
|
{
|
||||||
|
int ret = tox_encrypted_save(tox, data, pwhash, TOX_HASH_LENGTH);
|
||||||
|
if (ret == -1)
|
||||||
|
{
|
||||||
|
qCritical() << "Core::saveConfiguration: encryption of save file failed!!!";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
tox_save(tox, data);
|
tox_save(tox, data);
|
||||||
|
|
||||||
configurationFile.write(reinterpret_cast<char *>(data), fileSize);
|
configurationFile.write(reinterpret_cast<char *>(data), fileSize);
|
||||||
configurationFile.commit();
|
configurationFile.commit();
|
||||||
delete[] data;
|
delete[] data;
|
||||||
|
@ -1435,13 +1452,12 @@ void Core::clearPassword()
|
||||||
delete[] pwhash;
|
delete[] pwhash;
|
||||||
pwhash = nullptr;
|
pwhash = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray Core::encryptData(const QByteArray& data)
|
QByteArray Core::encryptData(const QByteArray& data)
|
||||||
{
|
{
|
||||||
if (!pwhash)
|
if (!pwhash)
|
||||||
return;
|
return QByteArray();
|
||||||
uint8_t encrypted[data.size() + TOX_PASS_ENCRYPTION_EXTRA_LENGTH];
|
uint8_t encrypted[data.size() + TOX_PASS_ENCRYPTION_EXTRA_LENGTH];
|
||||||
if (tox_pass_encrypt(data.data(), data.size(), pwhash, TOX_HASH_LENGTH, encrypted) == -1)
|
if (tox_pass_encrypt(data.data(), data.size(), pwhash, TOX_HASH_LENGTH, encrypted) == -1)
|
||||||
{
|
{
|
||||||
|
|
1
core.h
1
core.h
|
@ -95,6 +95,7 @@ public slots:
|
||||||
void micMuteToggle(int callId);
|
void micMuteToggle(int callId);
|
||||||
|
|
||||||
void setPassword(QString& password);
|
void setPassword(QString& password);
|
||||||
|
void clearPassword();
|
||||||
bool encryptFile(const QString& path);
|
bool encryptFile(const QString& path);
|
||||||
QByteArray encryptData(const QByteArray& data);
|
QByteArray encryptData(const QByteArray& data);
|
||||||
|
|
||||||
|
|
|
@ -430,6 +430,16 @@ void Settings::setEncryptLogs(bool newValue)
|
||||||
encryptLogs = newValue;
|
encryptLogs = newValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Settings::getEncryptTox() const
|
||||||
|
{
|
||||||
|
return encryptTox;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::setEncryptTox(bool newValue)
|
||||||
|
{
|
||||||
|
encryptTox = newValue;
|
||||||
|
}
|
||||||
|
|
||||||
void Settings::setWidgetData(const QString& uniqueName, const QByteArray& data)
|
void Settings::setWidgetData(const QString& uniqueName, const QByteArray& data)
|
||||||
{
|
{
|
||||||
widgetSettings[uniqueName] = data;
|
widgetSettings[uniqueName] = data;
|
||||||
|
|
|
@ -73,6 +73,9 @@ public:
|
||||||
bool getEncryptLogs() const;
|
bool getEncryptLogs() const;
|
||||||
void setEncryptLogs(bool newValue);
|
void setEncryptLogs(bool newValue);
|
||||||
|
|
||||||
|
bool getEncryptTox() const;
|
||||||
|
void setEncryptTox(bool newValue);
|
||||||
|
|
||||||
QPixmap getSavedAvatar(const QString& ownerId);
|
QPixmap getSavedAvatar(const QString& ownerId);
|
||||||
void saveAvatar(QPixmap& pic, const QString& ownerId);
|
void saveAvatar(QPixmap& pic, const QString& ownerId);
|
||||||
|
|
||||||
|
@ -178,6 +181,7 @@ private:
|
||||||
|
|
||||||
bool enableLogging;
|
bool enableLogging;
|
||||||
bool encryptLogs;
|
bool encryptLogs;
|
||||||
|
bool encryptTox;
|
||||||
|
|
||||||
QHash<QString, QByteArray> widgetSettings;
|
QHash<QString, QByteArray> widgetSettings;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user