From 28fbed2f5cfa311067ed42268302c15b99769876 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 6 Jul 2021 16:16:06 +0200 Subject: [PATCH] QCryptographicHash: share more code between switch cases Now that calling hashLengthInternal() is cheap, use it to factor common code in switch statements. For sha3, that would have been possible before, too. Reason for duplicating the case bodies is unclear. Change-Id: I281617546e0b3e701315eee2f10df8d26ada92ae Reviewed-by: Edward Welbourne Reviewed-by: Lars Knoll --- src/corelib/tools/qcryptographichash.cpp | 40 +++++------------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp index f5c5cbb2043..512d38b02ba 100644 --- a/src/corelib/tools/qcryptographichash.cpp +++ b/src/corelib/tools/qcryptographichash.cpp @@ -480,16 +480,10 @@ void QCryptographicHashPrivate::addData(QByteArrayView bytes) noexcept break; case QCryptographicHash::RealSha3_224: case QCryptographicHash::Keccak_224: - sha3Update(&sha3Context, reinterpret_cast(data), uint64_t(length) * 8); - break; case QCryptographicHash::RealSha3_256: case QCryptographicHash::Keccak_256: - sha3Update(&sha3Context, reinterpret_cast(data), uint64_t(length) * 8); - break; case QCryptographicHash::RealSha3_384: case QCryptographicHash::Keccak_384: - sha3Update(&sha3Context, reinterpret_cast(data), uint64_t(length) * 8); - break; case QCryptographicHash::RealSha3_512: case QCryptographicHash::Keccak_512: sha3Update(&sha3Context, reinterpret_cast(data), uint64_t(length) * 8); @@ -600,36 +594,18 @@ QByteArray QCryptographicHashPrivate::finalize() SHA512Result(©, reinterpret_cast(result.data())); break; } - case QCryptographicHash::RealSha3_224: { - sha3Finish(224, QCryptographicHashPrivate::Sha3Variant::Sha3); - break; - } - case QCryptographicHash::RealSha3_256: { - sha3Finish(256, QCryptographicHashPrivate::Sha3Variant::Sha3); - break; - } - case QCryptographicHash::RealSha3_384: { - sha3Finish(384, QCryptographicHashPrivate::Sha3Variant::Sha3); - break; - } + case QCryptographicHash::RealSha3_224: + case QCryptographicHash::RealSha3_256: + case QCryptographicHash::RealSha3_384: case QCryptographicHash::RealSha3_512: { - sha3Finish(512, QCryptographicHashPrivate::Sha3Variant::Sha3); - break; - } - case QCryptographicHash::Keccak_224: { - sha3Finish(224, QCryptographicHashPrivate::Sha3Variant::Keccak); - break; - } - case QCryptographicHash::Keccak_256: { - sha3Finish(256, QCryptographicHashPrivate::Sha3Variant::Keccak); - break; - } - case QCryptographicHash::Keccak_384: { - sha3Finish(384, QCryptographicHashPrivate::Sha3Variant::Keccak); + sha3Finish(8 * hashLengthInternal(method), Sha3Variant::Sha3); break; } + case QCryptographicHash::Keccak_224: + case QCryptographicHash::Keccak_256: + case QCryptographicHash::Keccak_384: case QCryptographicHash::Keccak_512: { - sha3Finish(512, QCryptographicHashPrivate::Sha3Variant::Keccak); + sha3Finish(8 * hashLengthInternal(method), Sha3Variant::Keccak); break; } case QCryptographicHash::Blake2b_160: