update: systemController

This commit is contained in:
MrMirDan
2026-03-13 13:30:03 +02:00
parent e044507b94
commit 91307cf49a

View File

@@ -128,38 +128,38 @@ static bool deriveKey(const QByteArray &password, const QByteArray &salt, QByteA
static bool aesCrypt(const QByteArray &in, const QByteArray &key, const QByteArray &iv, QByteArray &out, bool encrypt) static bool aesCrypt(const QByteArray &in, const QByteArray &key, const QByteArray &iv, QByteArray &out, bool encrypt)
{ {
EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); std::unique_ptr<EVP_CIPHER_CTX, void (*)(EVP_CIPHER_CTX *)> ctx { EVP_CIPHER_CTX_new(), EVP_CIPHER_CTX_free };
if (!ctx) { if (!ctx) {
qDebug() << "EVP_CIPHER_CTX_new failed"; qDebug() << "EVP_CIPHER_CTX_new failed";
return false; return false;
} }
const EVP_CIPHER *cipher = EVP_aes_256_cbc(); const EVP_CIPHER *cipher = EVP_aes_256_cbc();
if (1
!= EVP_CipherInit_ex(ctx, cipher, nullptr, reinterpret_cast<const unsigned char *>(key.constData()), if (1 != EVP_CipherInit_ex(ctx.get(), cipher, nullptr, reinterpret_cast<const unsigned char *>(key.constData()),
reinterpret_cast<const unsigned char *>(iv.constData()), encrypt ? 1 : 0)) { reinterpret_cast<const unsigned char *>(iv.constData()), encrypt ? 1 : 0)) {
qDebug() << opensslErrString(); qDebug() << opensslErrString();
EVP_CIPHER_CTX_free(ctx);
return false; return false;
} }
out.clear(); out.clear();
out.resize(in.size() + EVP_CIPHER_block_size(cipher)); out.resize(in.size() + EVP_CIPHER_block_size(cipher));
int outlen1 = 0; int outlen1 = 0;
if (1 if (1 != EVP_CipherUpdate(ctx.get(), reinterpret_cast<unsigned char *>(out.data()), &outlen1,
!= EVP_CipherUpdate(ctx, reinterpret_cast<unsigned char *>(out.data()), &outlen1, reinterpret_cast<const unsigned char *>(in.constData()), in.size())) {
reinterpret_cast<const unsigned char *>(in.constData()), in.size())) {
qDebug() << opensslErrString(); qDebug() << opensslErrString();
EVP_CIPHER_CTX_free(ctx);
return false; return false;
} }
int outlen2 = 0; int outlen2 = 0;
if (1 != EVP_CipherFinal_ex(ctx, reinterpret_cast<unsigned char *>(out.data()) + outlen1, &outlen2)) { if (1 != EVP_CipherFinal_ex(ctx.get(), reinterpret_cast<unsigned char *>(out.data()) + outlen1, &outlen2)) {
qDebug() << opensslErrString(); qDebug() << opensslErrString();
EVP_CIPHER_CTX_free(ctx);
return false; return false;
} }
out.resize(outlen1 + outlen2); out.resize(outlen1 + outlen2);
EVP_CIPHER_CTX_free(ctx);
return true; return true;
} }
@@ -304,6 +304,9 @@ bool SystemController::isPasswordValid(const QString &filePath, const QString &p
QString SystemController::readHint(const QString &filePath) QString SystemController::readHint(const QString &filePath)
{ {
if (filePath.isEmpty())
return "";
QByteArray data; QByteArray data;
readFile(filePath, data); readFile(filePath, data);