Merge pull request #3995 from SparkiDev/sha3_align

SHA-3: Aligned access of 64 bit value.
This commit is contained in:
David Garske
2021-04-30 10:54:21 -07:00
committed by GitHub

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;