SHA-3: Aligned access of 64 bit value.

This commit is contained in:
Sean Parkinson
2021-04-30 08:45:05 +10:00
parent 385e0bedaa
commit 1fbe0cb408

View File

@ -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;