X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fstorage.cpp;h=98ae96806807734f4b2481fcbd21ff79db0fa84e;hp=4b56573220e17a241c935c3c0690198e51237ae0;hb=c1cf157116de7fc3da96203aa6f03c38c7ebb650;hpb=19e7b3c69e79d27939a7fa2a570e31e865093bc0 diff --git a/src/core/storage.cpp b/src/core/storage.cpp index 4b565732..98ae9680 100644 --- a/src/core/storage.cpp +++ b/src/core/storage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,27 +20,23 @@ #include "storage.h" -#include #include -#if QT_VERSION < 0x050000 -# include "../../3rdparty/sha512/sha512.h" -#endif +#include -Storage::Storage(QObject *parent) +Storage::Storage(QObject* parent) : QObject(parent) -{ -} +{} -QString Storage::hashPassword(const QString &password) +QString Storage::hashPassword(const QString& password) { return hashPasswordSha2_512(password); } -bool Storage::checkHashedPassword(const UserId user, const QString &password, const QString &hashedPassword, const Storage::HashVersion version) +bool Storage::checkHashedPassword(const UserId user, const QString& password, const QString& hashedPassword, const Storage::HashVersion version) { bool passwordCorrect = false; - + switch (version) { case Storage::HashVersion::Sha1: passwordCorrect = checkHashedPasswordSha1(password, hashedPassword); @@ -53,25 +49,25 @@ bool Storage::checkHashedPassword(const UserId user, const QString &password, co default: qWarning() << "Password hash version" << QString(version) << "is not supported, please reset password"; } - + if (passwordCorrect && version < Storage::HashVersion::Latest) { updateUser(user, password); } - + return passwordCorrect; } -QString Storage::hashPasswordSha1(const QString &password) +QString Storage::hashPasswordSha1(const QString& password) { return QString(QCryptographicHash::hash(password.toUtf8(), QCryptographicHash::Sha1).toHex()); } -bool Storage::checkHashedPasswordSha1(const QString &password, const QString &hashedPassword) +bool Storage::checkHashedPasswordSha1(const QString& password, const QString& hashedPassword) { return hashPasswordSha1(password) == hashedPassword; } -QString Storage::hashPasswordSha2_512(const QString &password) +QString Storage::hashPasswordSha2_512(const QString& password) { // Generate a salt of 512 bits (64 bytes) using the Mersenne Twister std::random_device seed; @@ -80,7 +76,7 @@ QString Storage::hashPasswordSha2_512(const QString &password) QByteArray saltBytes; saltBytes.resize(64); for (int i = 0; i < 64; i++) { - saltBytes[i] = (unsigned char) distribution(generator); + saltBytes[i] = (unsigned char)distribution(generator); } QString salt(saltBytes.toHex()); @@ -88,12 +84,12 @@ QString Storage::hashPasswordSha2_512(const QString &password) return sha2_512(password + salt) + ":" + salt; } -bool Storage::checkHashedPasswordSha2_512(const QString &password, const QString &hashedPassword) +bool Storage::checkHashedPasswordSha2_512(const QString& password, const QString& hashedPassword) { QRegExp colonSplitter("\\:"); QStringList hashedPasswordAndSalt = hashedPassword.split(colonSplitter); - if (hashedPasswordAndSalt.size() == 2){ + if (hashedPasswordAndSalt.size() == 2) { return sha2_512(password + hashedPasswordAndSalt[1]) == hashedPasswordAndSalt[0]; } else { @@ -102,14 +98,7 @@ bool Storage::checkHashedPasswordSha2_512(const QString &password, const QString } } -QString Storage::sha2_512(const QString &input) +QString Storage::sha2_512(const QString& input) { -#if QT_VERSION >= 0x050000 return QString(QCryptographicHash::hash(input.toUtf8(), QCryptographicHash::Sha512).toHex()); -#else - QByteArray inputBytes = input.toUtf8(); - unsigned char output[64]; - sha512((unsigned char*) inputBytes.constData(), inputBytes.size(), output, false); - return QString(QByteArray::fromRawData((char*) output, 64).toHex()); -#endif }