mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 02:37:28 +02:00
SHA-3: Aligned access of 64 bit value.
This commit is contained in:
@ -545,13 +545,29 @@ static void BlockSha3(word64 *s)
|
||||
*/
|
||||
static word64 Load64BitBigEndian(const byte* a)
|
||||
{
|
||||
#ifdef BIG_ENDIAN_ORDER
|
||||
#if defined(BIG_ENDIAN_ORDER) || (WOLFSSL_GENERAL_ALIGNMENT == 1)
|
||||
word64 n = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
n |= (word64)a[i] << (8 * i);
|
||||
|
||||
return n;
|
||||
#elif ((WOLFSSL_GENERAL_ALIGNMENT > 0) && (WOLFSSL_GENERAL_ALIGNMENT == 4))
|
||||
word64 n;
|
||||
|
||||
n = *(word32*) a;
|
||||
n |= ((word64)*(word32*)(a + 4)) << 32;
|
||||
|
||||
return n;
|
||||
#elif ((WOLFSSL_GENERAL_ALIGNMENT > 0) && (WOLFSSL_GENERAL_ALIGNMENT == 2))
|
||||
word64 n;
|
||||
|
||||
n = *(word16*) a;
|
||||
n |= ((word64)*(word16*)(a + 2)) << 16;
|
||||
n |= ((word64)*(word16*)(a + 4)) << 32;
|
||||
n |= ((word64)*(word16*)(a + 6)) << 48;
|
||||
|
||||
return n;
|
||||
#else
|
||||
return *(const word64*)a;
|
||||
|
Reference in New Issue
Block a user