mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-11-16 12:34:45 +00:00
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:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user