144d924e0b
Symptom: When using larger hash functions and short messages, these six blocks take too much time to be conditionally copied. Observations: - SHA-384 consumes more data per iteration, unlike SHA-256. - The value of `kVarianceBlocks` must depend on the parameters of the selected hash algorithm. - Avoid magic constants. Changes: - A new formula for the kVarianceBlocks value. - Stronger test vectors were created in change: 32724. - The new formula passes these tests. Discussion: OpenSSL team: https://github.com/openssl/openssl/pull/7342 Quoting mattcaswell: > The "real" data that needs to be hashed has to be padded for the > hashing algorithm. For SHA1 the smallest amount of padding that > can be added is the "0x80" byte plus 8 bytes containing the message > length, i.e. 9 bytes. If the data length is within 9 bytes of the > end of the hash block boundary then the padding will push it into > an extra block to be hashed. Change-Id: Id1ad2389927014316eed2b453aac6e4c2a585c5c Reviewed-on: https://boringssl-review.googlesource.com/c/32624 Reviewed-by: Adam Langley <agl@google.com> Reviewed-by: David Benjamin <davidben@google.com> Commit-Queue: Adam Langley <agl@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org> |
||
---|---|---|
.. | ||
asn1 | ||
base64 | ||
bio | ||
bn_extra | ||
buf | ||
bytestring | ||
chacha | ||
cipher_extra | ||
cmac | ||
conf | ||
curve25519 | ||
dh | ||
digest_extra | ||
dsa | ||
ec_extra | ||
ecdh_extra | ||
ecdsa_extra | ||
engine | ||
err | ||
evp | ||
fipsmodule | ||
hkdf | ||
hmac_extra | ||
lhash | ||
obj | ||
pem | ||
perlasm | ||
pkcs7 | ||
pkcs8 | ||
poly1305 | ||
pool | ||
rand_extra | ||
rc4 | ||
rsa_extra | ||
stack | ||
test | ||
x509 | ||
x509v3 | ||
CMakeLists.txt | ||
compiler_test.cc | ||
constant_time_test.cc | ||
cpu-aarch64-fuchsia.c | ||
cpu-aarch64-linux.c | ||
cpu-arm-linux_test.cc | ||
cpu-arm-linux.c | ||
cpu-arm-linux.h | ||
cpu-arm.c | ||
cpu-intel.c | ||
cpu-ppc64le.c | ||
crypto.c | ||
ex_data.c | ||
internal.h | ||
mem.c | ||
refcount_c11.c | ||
refcount_lock.c | ||
refcount_test.cc | ||
self_test.cc | ||
thread_none.c | ||
thread_pthread.c | ||
thread_test.cc | ||
thread_win.c | ||
thread.c |