sha512_224: Fix SHA512_224_Final() on little-endian machines.

PR:		266863
MFC after:	1 week
Reviewed by:	allanjude, cperciva, des
Differential Revision:	https://reviews.freebsd.org/D38372
This commit is contained in:
Sebastian Huber
2023-02-06 17:57:28 +01:00
parent 1d07dfad83
commit a67b944329

View File

@@ -50,23 +50,26 @@ __FBSDID("$FreeBSD$");
#else /* BYTE_ORDER != BIG_ENDIAN */ #else /* BYTE_ORDER != BIG_ENDIAN */
/* /*
* Encode a length len/4 vector of (uint64_t) into a length len vector of * Encode a length (len + 7) / 8 vector of (uint64_t) into a length len
* (unsigned char) in big-endian form. Assumes len is a multiple of 8. * vector of (unsigned char) in big-endian form. Assumes len is a
* multiple of 4.
*/ */
static void static inline void
be64enc_vect(unsigned char *dst, const uint64_t *src, size_t len) be64enc_vect(unsigned char *dst, const uint64_t *src, size_t len)
{ {
size_t i; size_t i;
for (i = 0; i < len / 8; i++) for (i = 0; i < len / 8; i++)
be64enc(dst + i * 8, src[i]); be64enc(dst + i * 8, src[i]);
if (len % 8 == 4)
be32enc(dst + i * 8, src[i] >> 32);
} }
/* /*
* Decode a big-endian length len vector of (unsigned char) into a length * Decode a big-endian length len vector of (unsigned char) into a length
* len/4 vector of (uint64_t). Assumes len is a multiple of 8. * len/8 vector of (uint64_t). Assumes len is a multiple of 8.
*/ */
static void static inline void
be64dec_vect(uint64_t *dst, const unsigned char *src, size_t len) be64dec_vect(uint64_t *dst, const unsigned char *src, size_t len)
{ {
size_t i; size_t i;