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 <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
Marc Mutz 2021-07-06 16:16:06 +02:00
parent e9fffbaf81
commit 28fbed2f5c

View File

@ -480,16 +480,10 @@ void QCryptographicHashPrivate::addData(QByteArrayView bytes) noexcept
break;
case QCryptographicHash::RealSha3_224:
case QCryptographicHash::Keccak_224:
sha3Update(&sha3Context, reinterpret_cast<const BitSequence *>(data), uint64_t(length) * 8);
break;
case QCryptographicHash::RealSha3_256:
case QCryptographicHash::Keccak_256:
sha3Update(&sha3Context, reinterpret_cast<const BitSequence *>(data), uint64_t(length) * 8);
break;
case QCryptographicHash::RealSha3_384:
case QCryptographicHash::Keccak_384:
sha3Update(&sha3Context, reinterpret_cast<const BitSequence *>(data), uint64_t(length) * 8);
break;
case QCryptographicHash::RealSha3_512:
case QCryptographicHash::Keccak_512:
sha3Update(&sha3Context, reinterpret_cast<const BitSequence *>(data), uint64_t(length) * 8);
@ -600,36 +594,18 @@ QByteArray QCryptographicHashPrivate::finalize()
SHA512Result(&copy, reinterpret_cast<unsigned char *>(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: