mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 18:57:27 +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)
|
static word64 Load64BitBigEndian(const byte* a)
|
||||||
{
|
{
|
||||||
#ifdef BIG_ENDIAN_ORDER
|
#if defined(BIG_ENDIAN_ORDER) || (WOLFSSL_GENERAL_ALIGNMENT == 1)
|
||||||
word64 n = 0;
|
word64 n = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
n |= (word64)a[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;
|
return n;
|
||||||
#else
|
#else
|
||||||
return *(const word64*)a;
|
return *(const word64*)a;
|
||||||
|
Reference in New Issue
Block a user