Write down the bounds for the sha*_block_data_order functions May as well. Change-Id: I0d15f0f6f703129f08df4a105a34c8ff06cb06b5 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/65871 Commit-Queue: David Benjamin <davidben@google.com> Reviewed-by: Bob Beck <bbe@google.com>
diff --git a/crypto/fipsmodule/sha/internal.h b/crypto/fipsmodule/sha/internal.h index 0c05d73..4a2f081 100644 --- a/crypto/fipsmodule/sha/internal.h +++ b/crypto/fipsmodule/sha/internal.h
@@ -32,11 +32,11 @@ #define SHA256_ASM #define SHA512_ASM -void sha1_block_data_order(uint32_t *state, const uint8_t *data, +void sha1_block_data_order(uint32_t state[5], const uint8_t *data, size_t num_blocks); -void sha256_block_data_order(uint32_t *state, const uint8_t *data, +void sha256_block_data_order(uint32_t state[8], const uint8_t *data, size_t num_blocks); -void sha512_block_data_order(uint64_t *state, const uint8_t *data, +void sha512_block_data_order(uint64_t state[8], const uint8_t *data, size_t num_blocks); #elif !defined(OPENSSL_NO_ASM) && defined(OPENSSL_ARM) @@ -51,7 +51,7 @@ } #define SHA1_ASM_NEON -void sha1_block_data_order_neon(uint32_t *state, const uint8_t *data, +void sha1_block_data_order_neon(uint32_t state[5], const uint8_t *data, size_t num); #define SHA256_ASM_HW @@ -60,12 +60,12 @@ } #define SHA256_ASM_NEON -void sha256_block_data_order_neon(uint32_t *state, const uint8_t *data, +void sha256_block_data_order_neon(uint32_t state[8], const uint8_t *data, size_t num); // Armv8.2 SHA-512 instructions are not available in 32-bit. #define SHA512_ASM_NEON -void sha512_block_data_order_neon(uint64_t *state, const uint8_t *data, +void sha512_block_data_order_neon(uint64_t state[8], const uint8_t *data, size_t num); #elif !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64) @@ -105,7 +105,7 @@ return CRYPTO_is_AVX2_capable() && CRYPTO_is_BMI2_capable() && CRYPTO_is_BMI1_capable(); } -void sha1_block_data_order_avx2(uint32_t *state, const uint8_t *data, +void sha1_block_data_order_avx2(uint32_t state[5], const uint8_t *data, size_t num); #define SHA1_ASM_AVX @@ -114,14 +114,14 @@ // discussion in sha1-586.pl. return CRYPTO_is_AVX_capable() && CRYPTO_is_intel_cpu(); } -void sha1_block_data_order_avx(uint32_t *state, const uint8_t *data, +void sha1_block_data_order_avx(uint32_t state[5], const uint8_t *data, size_t num); #define SHA1_ASM_SSSE3 OPENSSL_INLINE int sha1_ssse3_capable(void) { return CRYPTO_is_SSSE3_capable(); } -void sha1_block_data_order_ssse3(uint32_t *state, const uint8_t *data, +void sha1_block_data_order_ssse3(uint32_t state[5], const uint8_t *data, size_t num); #define SHA256_ASM_HW @@ -136,14 +136,14 @@ // discussion in sha1-586.pl. return CRYPTO_is_AVX_capable() && CRYPTO_is_intel_cpu(); } -void sha256_block_data_order_avx(uint32_t *state, const uint8_t *data, +void sha256_block_data_order_avx(uint32_t state[8], const uint8_t *data, size_t num); #define SHA256_ASM_SSSE3 OPENSSL_INLINE int sha256_ssse3_capable(void) { return CRYPTO_is_SSSE3_capable(); } -void sha256_block_data_order_ssse3(uint32_t *state, const uint8_t *data, +void sha256_block_data_order_ssse3(uint32_t state[8], const uint8_t *data, size_t num); #define SHA512_ASM_AVX @@ -152,35 +152,36 @@ // discussion in sha1-586.pl. return CRYPTO_is_AVX_capable() && CRYPTO_is_intel_cpu(); } -void sha512_block_data_order_avx(uint64_t *state, const uint8_t *data, +void sha512_block_data_order_avx(uint64_t state[8], const uint8_t *data, size_t num); #endif #if defined(SHA1_ASM_HW) -void sha1_block_data_order_hw(uint32_t *state, const uint8_t *data, size_t num); +void sha1_block_data_order_hw(uint32_t state[5], const uint8_t *data, + size_t num); #endif #if defined(SHA1_ASM_NOHW) -void sha1_block_data_order_nohw(uint32_t *state, const uint8_t *data, +void sha1_block_data_order_nohw(uint32_t state[5], const uint8_t *data, size_t num); #endif #if defined(SHA256_ASM_HW) -void sha256_block_data_order_hw(uint32_t *state, const uint8_t *data, +void sha256_block_data_order_hw(uint32_t state[8], const uint8_t *data, size_t num); #endif #if defined(SHA256_ASM_NOHW) -void sha256_block_data_order_nohw(uint32_t *state, const uint8_t *data, +void sha256_block_data_order_nohw(uint32_t state[8], const uint8_t *data, size_t num); #endif #if defined(SHA512_ASM_HW) -void sha512_block_data_order_hw(uint64_t *state, const uint8_t *data, +void sha512_block_data_order_hw(uint64_t state[8], const uint8_t *data, size_t num); #endif #if defined(SHA512_ASM_NOHW) -void sha512_block_data_order_nohw(uint64_t *state, const uint8_t *data, +void sha512_block_data_order_nohw(uint64_t state[8], const uint8_t *data, size_t num); #endif
diff --git a/crypto/fipsmodule/sha/sha1.c b/crypto/fipsmodule/sha/sha1.c index 7a97266..060baa4 100644 --- a/crypto/fipsmodule/sha/sha1.c +++ b/crypto/fipsmodule/sha/sha1.c
@@ -86,7 +86,7 @@ } #if !defined(SHA1_ASM) -static void sha1_block_data_order(uint32_t *state, const uint8_t *data, +static void sha1_block_data_order(uint32_t state[5], const uint8_t *data, size_t num); #endif @@ -234,7 +234,7 @@ #if !defined(SHA1_ASM) #if !defined(SHA1_ASM_NOHW) -static void sha1_block_data_order_nohw(uint32_t *state, const uint8_t *data, +static void sha1_block_data_order_nohw(uint32_t state[5], const uint8_t *data, size_t num) { register uint32_t A, B, C, D, E, T; uint32_t XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, XX8, XX9, XX10, @@ -384,7 +384,7 @@ } #endif // !SHA1_ASM_NOHW -static void sha1_block_data_order(uint32_t *state, const uint8_t *data, +static void sha1_block_data_order(uint32_t state[5], const uint8_t *data, size_t num) { #if defined(SHA1_ASM_HW) if (sha1_hw_capable()) {
diff --git a/crypto/fipsmodule/sha/sha256.c b/crypto/fipsmodule/sha/sha256.c index 8cedc5f..b7c616b 100644 --- a/crypto/fipsmodule/sha/sha256.c +++ b/crypto/fipsmodule/sha/sha256.c
@@ -115,7 +115,7 @@ } #if !defined(SHA256_ASM) -static void sha256_block_data_order(uint32_t *state, const uint8_t *in, +static void sha256_block_data_order(uint32_t state[8], const uint8_t *in, size_t num); #endif @@ -223,7 +223,7 @@ ROUND_00_15(i, a, b, c, d, e, f, g, h); \ } while (0) -static void sha256_block_data_order_nohw(uint32_t *state, const uint8_t *data, +static void sha256_block_data_order_nohw(uint32_t state[8], const uint8_t *data, size_t num) { uint32_t a, b, c, d, e, f, g, h, s0, s1, T1; uint32_t X[16]; @@ -312,7 +312,7 @@ #endif // !defined(SHA256_ASM_NOHW) -static void sha256_block_data_order(uint32_t *state, const uint8_t *data, +static void sha256_block_data_order(uint32_t state[8], const uint8_t *data, size_t num) { #if defined(SHA256_ASM_HW) if (sha256_hw_capable()) {
diff --git a/crypto/fipsmodule/sha/sha512.c b/crypto/fipsmodule/sha/sha512.c index d31ab71..ba9d42d 100644 --- a/crypto/fipsmodule/sha/sha512.c +++ b/crypto/fipsmodule/sha/sha512.c
@@ -156,7 +156,7 @@ } #if !defined(SHA512_ASM) -static void sha512_block_data_order(uint64_t *state, const uint8_t *in, +static void sha512_block_data_order(uint64_t state[8], const uint8_t *in, size_t num_blocks); #endif @@ -343,7 +343,7 @@ #if defined(__i386) || defined(__i386__) || defined(_M_IX86) // This code should give better results on 32-bit CPU with less than // ~24 registers, both size and performance wise... -static void sha512_block_data_order_nohw(uint64_t *state, const uint8_t *in, +static void sha512_block_data_order_nohw(uint64_t state[8], const uint8_t *in, size_t num) { uint64_t A, E, T; uint64_t X[9 + 80], *F; @@ -416,7 +416,7 @@ ROUND_00_15(i + j, a, b, c, d, e, f, g, h); \ } while (0) -static void sha512_block_data_order_nohw(uint64_t *state, const uint8_t *in, +static void sha512_block_data_order_nohw(uint64_t state[8], const uint8_t *in, size_t num) { uint64_t a, b, c, d, e, f, g, h, s0, s1, T1; uint64_t X[16]; @@ -502,7 +502,7 @@ #endif // !SHA512_ASM_NOHW -static void sha512_block_data_order(uint64_t *state, const uint8_t *data, +static void sha512_block_data_order(uint64_t state[8], const uint8_t *data, size_t num) { #if defined(SHA512_ASM_HW) if (sha512_hw_capable()) {