New file hash algorithm (still based on SHA-1).
This commit is contained in:
parent
7994e06822
commit
87a3166f8b
@ -50,7 +50,35 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
LockedFile::LockedFile(const QString &resourcePath, const QString &outPath, const QByteArray &expectedHash)
|
||||
static const char *g_seed = "bdf29c2e76473e307f07cff5dd866422f59ca921";
|
||||
static const char *g_salt = "f6f39c58271b985d1c67ee5604397c89dd9668b9";
|
||||
|
||||
static QByteArray fileHash(QFile &file)
|
||||
{
|
||||
QByteArray hash = QString(g_seed).toLatin1();
|
||||
QByteArray salt = QString(g_salt).toLatin1();
|
||||
|
||||
if(file.isOpen() && file.reset())
|
||||
{
|
||||
QByteArray data = file.readAll();
|
||||
QCryptographicHash sha1(QCryptographicHash::Sha1);
|
||||
|
||||
for(int r = 0; r < 8; r++)
|
||||
{
|
||||
sha1.addData(hash);
|
||||
sha1.addData(data);
|
||||
sha1.addData(salt);
|
||||
hash = sha1.result().toHex();
|
||||
sha1.reset();
|
||||
}
|
||||
}
|
||||
|
||||
return hash;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
LockedFile::LockedFile(const QString &resourcePath, const QString &outPath, const QByteArray &expectedHash)
|
||||
{
|
||||
m_fileHandle = NULL;
|
||||
QResource resource(resourcePath);
|
||||
@ -122,10 +150,10 @@
|
||||
}
|
||||
|
||||
//Verify file contents
|
||||
QCryptographicHash fileHash(QCryptographicHash::Sha1);
|
||||
if(outFile.isOpen() /*&& outFile.isReadable()*/)
|
||||
QByteArray hash;
|
||||
if(outFile.isOpen())
|
||||
{
|
||||
fileHash.addData(outFile.readAll());
|
||||
hash = fileHash(outFile);
|
||||
outFile.close();
|
||||
}
|
||||
else
|
||||
@ -135,9 +163,9 @@
|
||||
}
|
||||
|
||||
//Compare hashes
|
||||
if(_stricmp(fileHash.result().toHex().constData(), expectedHash.constData()))
|
||||
if(hash.isNull() || _stricmp(hash.constData(), expectedHash.constData()))
|
||||
{
|
||||
qWarning("\nFile checksum error:\n Expected = %040s\n Detected = %040s\n", expectedHash.constData(), fileHash.result().toHex().constData());
|
||||
qWarning("\nFile checksum error:\n Expected = %040s\n Detected = %040s\n", expectedHash.constData(), hash.constData());
|
||||
LAMEXP_CLOSE(m_fileHandle);
|
||||
QFile::remove(m_filePath);
|
||||
THROW(QString("File '%1' is corruputed, take care!").arg(QFileInfo(resourcePath).absoluteFilePath().replace(QRegExp("^:/"), QString())).toLatin1().constData());
|
||||
|
@ -52,34 +52,34 @@ static const struct
|
||||
}
|
||||
g_lamexp_tools[] =
|
||||
{
|
||||
{"0a6252606c1ceda7b8973e5935ef72d60b8fd64d", CPU_TYPE_X86, "aften.i386.exe", 8},
|
||||
{"22253052acba92a0088bbf0aa82a8c505c07b854", CPU_TYPE_SSE, "aften.sse2.exe", 8},
|
||||
{"2996a48b01b65a2c1806482654beeea7ffcf1f80", CPU_TYPE_X64, "aften.x64.exe", 8},
|
||||
{"3b41f85dde8d4a5a0f4cd5f461099d0db24610ba", CPU_TYPE_ALL, "alac.exe", 20},
|
||||
{"3e2cce2e090bab7c7d7d54c21c1fe96917698960", CPU_TYPE_ALL, "avs2wav.exe", 12},
|
||||
{"fb74ac8b73ad8cba2c3b4e6e61f23401d630dc22", CPU_TYPE_ALL, "elevator.exe", UINT_MAX},
|
||||
{"80e372d8b20be24102c18284286fcdf5fa14bd86", CPU_TYPE_ALL, "faad.exe", 27},
|
||||
{"d33cd86f04bd4067e244d2804466583c7b90a4e2", CPU_TYPE_ALL, "flac.exe", 121},
|
||||
{"9328a50e89b54ec065637496d9681a7e3eebf915", CPU_TYPE_ALL, "gpgv.exe", 1411},
|
||||
{"d837bf6ee4dab557d8b02d46c75a24e58980fffa", CPU_TYPE_ALL, "gpgv.gpg", UINT_MAX},
|
||||
{"d5b3b80220d85a9fd2f486e37c1fb6511f3c2d72", CPU_TYPE_ALL, "lame.exe", 3990},
|
||||
{"a4e929cfaa42fa2e61a3d0c6434c77a06d45aef3", CPU_TYPE_ALL, "mac.exe", 406},
|
||||
{"a9aa99209fb9ad6ceb97b7a46774fc97141d3dce", CPU_TYPE_GEN, "mediainfo.i386.exe", 745},
|
||||
{"9f6b81378e4c408fe5ded8a26ddd0d6c705d81cb", CPU_TYPE_X64, "mediainfo.x64.exe", 745},
|
||||
{"aa89763a5ba4d1a5986549b9ee53e005c51940c1", CPU_TYPE_ALL, "mpcdec.exe", 435},
|
||||
{"c327400fcee268f581d8c03e2a5cbbe8031abb6f", CPU_TYPE_ALL, "mpg123.exe", 1133},
|
||||
{"8dd7138714c3bcb39f5a3213413addba13d06f1e", CPU_TYPE_ALL, "oggdec.exe", UINT_MAX},
|
||||
{"97fed9ab0657baa36b6c7764461d66318654dbe6", CPU_TYPE_X86, "oggenc2.i386.exe", 287603},
|
||||
{"e6dc1f31ce822588fa9cf52a341cebffd526546c", CPU_TYPE_SSE, "oggenc2.sse2.exe", 287603},
|
||||
{"79aa9da24b2a0728cdf0a6927be316b864595b83", CPU_TYPE_X64, "oggenc2.x64.exe", 287603},
|
||||
{"0d9035bb62bdf46a2785261f8be5a4a0972abd15", CPU_TYPE_ALL, "shorten.exe", 361},
|
||||
{"50ead3b852cbfc067a402e6c2d0d0d8879663dec", CPU_TYPE_ALL, "sox.exe", 1432},
|
||||
{"8671e16497a2d217d3707d4aa418678d02b16bcc", CPU_TYPE_ALL, "speexdec.exe", 12},
|
||||
{"093bfdec22872ca99e40183937c88785468be989", CPU_TYPE_ALL, "tta.exe", 21},
|
||||
{"8c842eef65248b46fa6cb9a9e5714f575672d999", CPU_TYPE_ALL, "valdec.exe", 31},
|
||||
{"62e2805d1b2eb2a4d86a5ca6e6ea58010d05d2a7", CPU_TYPE_ALL, "wget.exe", 1114},
|
||||
{"a7e8aad52213e339ad985829722f35eab62be182", CPU_TYPE_ALL, "wupdate.exe", UINT_MAX},
|
||||
{"b7d14b3540d24df13119a55d97623a61412de6e3", CPU_TYPE_ALL, "wvunpack.exe", 4601},
|
||||
{"3b4106d22e34df6327bef222622eb327ea067a40", CPU_TYPE_X86, "aften.i386.exe", 8},
|
||||
{"f424e28296851d86a85b3863923009549efaf0f2", CPU_TYPE_SSE, "aften.sse2.exe", 8},
|
||||
{"abd48661d8990c63178cd639451d6dfdbd1ef28a", CPU_TYPE_X64, "aften.x64.exe", 8},
|
||||
{"30cc614bb576c91eb8439d47596e6dbdc088919c", CPU_TYPE_ALL, "alac.exe", 20},
|
||||
{"6a7b9db0cc3e3fc3c87643aaafc8ddd9fef928d7", CPU_TYPE_ALL, "avs2wav.exe", 12},
|
||||
{"f4c0a20fbcb6e848207c53e1e29c467d4dc70757", CPU_TYPE_ALL, "elevator.exe", UINT_MAX},
|
||||
{"81f0ff6b9b1f906d7c0004cbbddf4dc539903591", CPU_TYPE_ALL, "faad.exe", 27},
|
||||
{"a2c85f2d9368097207c2c0faf133152e846e7d4b", CPU_TYPE_ALL, "flac.exe", 121},
|
||||
{"ee40b5026935126f596351fbaf1dfada8ef06591", CPU_TYPE_ALL, "gpgv.exe", 1411},
|
||||
{"8a7d6de45f589588f9210d2cc988b3108a306b84", CPU_TYPE_ALL, "gpgv.gpg", UINT_MAX},
|
||||
{"feba4ae2c50a540652b978aa862cf5c02f1da7c4", CPU_TYPE_ALL, "lame.exe", 3990},
|
||||
{"70147c86858b5daea33fa7274f70753d6901b061", CPU_TYPE_ALL, "mac.exe", 406},
|
||||
{"7f52d7e5f5136f1a24bec7a0664c6ade6f914a47", CPU_TYPE_GEN, "mediainfo.i386.exe", 745},
|
||||
{"a532b2661bfecec44f3ad6354639e2e245beab4f", CPU_TYPE_X64, "mediainfo.x64.exe", 745},
|
||||
{"e1d675ae5cdd8fff486a14d6a481b6d5a4fb90e7", CPU_TYPE_ALL, "mpcdec.exe", 435},
|
||||
{"d444f2ef6bf94ab3a46ee854934b722bf3d4d16a", CPU_TYPE_ALL, "mpg123.exe", 1133},
|
||||
{"1b51ad3b25e6d7bcec5491c948bfacec2b132204", CPU_TYPE_ALL, "oggdec.exe", UINT_MAX},
|
||||
{"634cbe6ddb151a1803541664bb6a7089eb8c30ac", CPU_TYPE_X86, "oggenc2.i386.exe", 287603},
|
||||
{"33ad609d0b1edf6d7726d85ea930b5c435a39d6a", CPU_TYPE_SSE, "oggenc2.sse2.exe", 287603},
|
||||
{"6d50367552ad2a015133f5a83e307bb80b811c06", CPU_TYPE_X64, "oggenc2.x64.exe", 287603},
|
||||
{"1f073cc23f7321beafcfc5a8f0ce775b2a01b943", CPU_TYPE_ALL, "shorten.exe", 361},
|
||||
{"945a4b40743f4fd39a687986ec02a871d5a658db", CPU_TYPE_ALL, "sox.exe", 1432},
|
||||
{"55b6e03238ed7da0b169ff5a4e957a8c0e193cec", CPU_TYPE_ALL, "speexdec.exe", 12},
|
||||
{"8b587006515085574c5a9de1efc060018414d481", CPU_TYPE_ALL, "tta.exe", 21},
|
||||
{"e8578f1ed9cf6cb636befae2bb3ca5b5fd71bc01", CPU_TYPE_ALL, "valdec.exe", 31},
|
||||
{"9440b64b7772078d391a014d7e0cca8a7e58e8c7", CPU_TYPE_ALL, "wget.exe", 1114},
|
||||
{"bb5f3f72c927fb26910b22676d68fc08960868dc", CPU_TYPE_ALL, "wupdate.exe", UINT_MAX},
|
||||
{"972930436457f0b939223d4d3cc51d1535df6c3d", CPU_TYPE_ALL, "wvunpack.exe", 4601},
|
||||
{NULL, NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user