mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-21 07:57:22 -06:00
@@ -60,6 +60,13 @@ QList<QByteArrayView> Utils::ByteArray::splitToViews(const QByteArrayView in, co
|
||||
return ret;
|
||||
}
|
||||
|
||||
QByteArray Utils::ByteArray::asQByteArray(const QByteArrayView view)
|
||||
{
|
||||
// `QByteArrayView::toByteArray()` will deep copy the data
|
||||
// So we provide our own fast path for appropriate situations/code
|
||||
return QByteArray::fromRawData(view.constData(), view.size());
|
||||
}
|
||||
|
||||
QByteArray Utils::ByteArray::toBase32(const QByteArray &in)
|
||||
{
|
||||
const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
|
||||
|
||||
@@ -39,6 +39,7 @@ namespace Utils::ByteArray
|
||||
{
|
||||
// Mimic QStringView(in).split(sep, behavior)
|
||||
QList<QByteArrayView> splitToViews(QByteArrayView in, QByteArrayView sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts);
|
||||
QByteArray asQByteArray(QByteArrayView view);
|
||||
|
||||
QByteArray toBase32(const QByteArray &in);
|
||||
}
|
||||
|
||||
@@ -103,8 +103,8 @@ bool Utils::Password::PBKDF2::verify(const QByteArray &secret, const QByteArray
|
||||
if (list.size() != 2)
|
||||
return false;
|
||||
|
||||
const QByteArray salt = QByteArray::fromBase64(list[0].toByteArray());
|
||||
const QByteArray key = QByteArray::fromBase64(list[1].toByteArray());
|
||||
const QByteArray salt = QByteArray::fromBase64(Utils::ByteArray::asQByteArray(list[0]));
|
||||
const QByteArray key = QByteArray::fromBase64(Utils::ByteArray::asQByteArray(list[1]));
|
||||
|
||||
std::array<unsigned char, 64> outBuf {};
|
||||
const int hmacResult = PKCS5_PBKDF2_HMAC(password.constData(), password.size()
|
||||
|
||||
Reference in New Issue
Block a user