boringssl/crypto/fipsmodule/sha
David Benjamin 2fe0360a4e Fix undefined pointer casts in SHA-512 code.
Casting an unaligned pointer to uint64_t* is undefined, even on
platforms that support unaligned access. Additionally, dereferencing as
uint64_t violates strict aliasing rules. Instead, use memcpys which we
assume any sensible compiler can optimize. Also simplify the PULL64
business with the existing CRYPTO_bswap8.

This also removes the need for the
SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA logic. The generic C code now
handles unaligned data and the assembly already can as well. (The only
problematic platform with assembly is old ARM, but sha512-armv4.pl
already handles this via an __ARM_ARCH__ check.  See also OpenSSL's
version of this file which always defines
SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA if SHA512_ASM is defined.)

Add unaligned tests to digest_test.cc, so we retain coverage of
unaligned EVP_MD inputs.

Change-Id: Idfd8586c64bab2a77292af2fa8eebbd193e57c7d
Reviewed-on: https://boringssl-review.googlesource.com/c/34444
Commit-Queue: Adam Langley <agl@google.com>
Reviewed-by: Adam Langley <agl@google.com>
2019-01-22 23:18:36 +00:00
..
asm Remove XOP code from sha512-x86_64.pl. 2018-12-04 01:10:32 +00:00
internal.h Fix undefined pointer casts in SHA-512 code. 2019-01-22 23:18:36 +00:00
sha1-altivec.c Run the comment converter on libcrypto. 2017-08-18 21:49:04 +00:00
sha1.c Add ABI tests for SHA*. 2019-01-04 19:14:11 +00:00
sha256.c Add ABI tests for SHA*. 2019-01-04 19:14:11 +00:00
sha512.c Fix undefined pointer casts in SHA-512 code. 2019-01-22 23:18:36 +00:00
sha_test.cc Fix undefined pointer casts in SHA-512 code. 2019-01-22 23:18:36 +00:00