summaryrefslogtreecommitdiffstats
path: root/crypto/aes
diff options
context:
space:
mode:
authorShane Lontis <shane.lontis@oracle.com>2021-06-21 11:12:43 +1000
committerPauli <pauli@openssl.org>2021-06-22 13:24:51 +1000
commit4aaed2a5fb06ea327f60eea9f17a8f31a664eb99 (patch)
tree306ffd09c92087593e4a83b0daf5113d0df82475 /crypto/aes
parentd65d2963839433bb4f15525df37d0f4f799466e5 (diff)
Fix aes_core to use U64() macro..
AIX reported warnings of the form: 1506-207 (W) Integer constant 0x8080808080808080u out of range. This truncation causes all startup self tests related to AES to fail. Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15842)
Diffstat (limited to 'crypto/aes')
-rw-r--r--crypto/aes/aes_core.c293
1 files changed, 151 insertions, 142 deletions
diff --git a/crypto/aes/aes_core.c b/crypto/aes/aes_core.c
index 0c4f6115db..7b9989fd47 100644
--- a/crypto/aes/aes_core.c
+++ b/crypto/aes/aes_core.c
@@ -51,6 +51,15 @@
#include "aes_local.h"
#if !defined(OPENSSL_NO_AES_CONST_TIME) && !defined(AES_ASM)
+
+# if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
+# define U64(C) C##UI64
+# elif defined(__arch64__)
+# define U64(C) C##UL
+# else
+# define U64(C) C##ULL
+# endif
+
typedef union {
unsigned char b[8];
u32 w[2];
@@ -79,10 +88,10 @@ static void XtimeLong(u64 *w)
u64 a, b;
a = *w;
- b = a & 0x8080808080808080u;
+ b = a & U64(0x8080808080808080);
a ^= b;
b -= b >> 7;
- b &= 0x1B1B1B1B1B1B1B1Bu;
+ b &= U64(0x1B1B1B1B1B1B1B1B);
b ^= a << 1;
*w = b;
}
@@ -229,89 +238,89 @@ static void SubLong(u64 *w)
u64 x, y, a1, a2, a3, a4, a5, a6;
x = *w;
- y = ((x & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((x & 0x0101010101010101u) << 7);
- x &= 0xDDDDDDDDDDDDDDDDu;
- x ^= y & 0x5757575757575757u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x1C1C1C1C1C1C1C1Cu;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x4A4A4A4A4A4A4A4Au;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x4242424242424242u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x6464646464646464u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0xE0E0E0E0E0E0E0E0u;
+ y = ((x & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((x & U64(0x0101010101010101)) << 7);
+ x &= U64(0xDDDDDDDDDDDDDDDD);
+ x ^= y & U64(0x5757575757575757);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x1C1C1C1C1C1C1C1C);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x4A4A4A4A4A4A4A4A);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x4242424242424242);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x6464646464646464);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0xE0E0E0E0E0E0E0E0);
a1 = x;
- a1 ^= (x & 0xF0F0F0F0F0F0F0F0u) >> 4;
- a2 = ((x & 0xCCCCCCCCCCCCCCCCu) >> 2) | ((x & 0x3333333333333333u) << 2);
+ a1 ^= (x & U64(0xF0F0F0F0F0F0F0F0)) >> 4;
+ a2 = ((x & U64(0xCCCCCCCCCCCCCCCC)) >> 2) | ((x & U64(0x3333333333333333)) << 2);
a3 = x & a1;
- a3 ^= (a3 & 0xAAAAAAAAAAAAAAAAu) >> 1;
- a3 ^= (((x << 1) & a1) ^ ((a1 << 1) & x)) & 0xAAAAAAAAAAAAAAAAu;
+ a3 ^= (a3 & U64(0xAAAAAAAAAAAAAAAA)) >> 1;
+ a3 ^= (((x << 1) & a1) ^ ((a1 << 1) & x)) & U64(0xAAAAAAAAAAAAAAAA);
a4 = a2 & a1;
- a4 ^= (a4 & 0xAAAAAAAAAAAAAAAAu) >> 1;
- a4 ^= (((a2 << 1) & a1) ^ ((a1 << 1) & a2)) & 0xAAAAAAAAAAAAAAAAu;
- a5 = (a3 & 0xCCCCCCCCCCCCCCCCu) >> 2;
- a3 ^= ((a4 << 2) ^ a4) & 0xCCCCCCCCCCCCCCCCu;
- a4 = a5 & 0x2222222222222222u;
+ a4 ^= (a4 & U64(0xAAAAAAAAAAAAAAAA)) >> 1;
+ a4 ^= (((a2 << 1) & a1) ^ ((a1 << 1) & a2)) & U64(0xAAAAAAAAAAAAAAAA);
+ a5 = (a3 & U64(0xCCCCCCCCCCCCCCCC)) >> 2;
+ a3 ^= ((a4 << 2) ^ a4) & U64(0xCCCCCCCCCCCCCCCC);
+ a4 = a5 & U64(0x2222222222222222);
a4 |= a4 >> 1;
- a4 ^= (a5 << 1) & 0x2222222222222222u;
+ a4 ^= (a5 << 1) & U64(0x2222222222222222);
a3 ^= a4;
- a5 = a3 & 0xA0A0A0A0A0A0A0A0u;
+ a5 = a3 & U64(0xA0A0A0A0A0A0A0A0);
a5 |= a5 >> 1;
- a5 ^= (a3 << 1) & 0xA0A0A0A0A0A0A0A0u;
- a4 = a5 & 0xC0C0C0C0C0C0C0C0u;
+ a5 ^= (a3 << 1) & U64(0xA0A0A0A0A0A0A0A0);
+ a4 = a5 & U64(0xC0C0C0C0C0C0C0C0);
a6 = a4 >> 2;
- a4 ^= (a5 << 2) & 0xC0C0C0C0C0C0C0C0u;
- a5 = a6 & 0x2020202020202020u;
+ a4 ^= (a5 << 2) & U64(0xC0C0C0C0C0C0C0C0);
+ a5 = a6 & U64(0x2020202020202020);
a5 |= a5 >> 1;
- a5 ^= (a6 << 1) & 0x2020202020202020u;
+ a5 ^= (a6 << 1) & U64(0x2020202020202020);
a4 |= a5;
a3 ^= a4 >> 4;
- a3 &= 0x0F0F0F0F0F0F0F0Fu;
+ a3 &= U64(0x0F0F0F0F0F0F0F0F);
a2 = a3;
- a2 ^= (a3 & 0x0C0C0C0C0C0C0C0Cu) >> 2;
+ a2 ^= (a3 & U64(0x0C0C0C0C0C0C0C0C)) >> 2;
a4 = a3 & a2;
- a4 ^= (a4 & 0x0A0A0A0A0A0A0A0Au) >> 1;
- a4 ^= (((a3 << 1) & a2) ^ ((a2 << 1) & a3)) & 0x0A0A0A0A0A0A0A0Au;
- a5 = a4 & 0x0808080808080808u;
+ a4 ^= (a4 & U64(0x0A0A0A0A0A0A0A0A)) >> 1;
+ a4 ^= (((a3 << 1) & a2) ^ ((a2 << 1) & a3)) & U64(0x0A0A0A0A0A0A0A0A);
+ a5 = a4 & U64(0x0808080808080808);
a5 |= a5 >> 1;
- a5 ^= (a4 << 1) & 0x0808080808080808u;
+ a5 ^= (a4 << 1) & U64(0x0808080808080808);
a4 ^= a5 >> 2;
- a4 &= 0x0303030303030303u;
- a4 ^= (a4 & 0x0202020202020202u) >> 1;
+ a4 &= U64(0x0303030303030303);
+ a4 ^= (a4 & U64(0x0202020202020202)) >> 1;
a4 |= a4 << 2;
a3 = a2 & a4;
- a3 ^= (a3 & 0x0A0A0A0A0A0A0A0Au) >> 1;
- a3 ^= (((a2 << 1) & a4) ^ ((a4 << 1) & a2)) & 0x0A0A0A0A0A0A0A0Au;
+ a3 ^= (a3 & U64(0x0A0A0A0A0A0A0A0A)) >> 1;
+ a3 ^= (((a2 << 1) & a4) ^ ((a4 << 1) & a2)) & U64(0x0A0A0A0A0A0A0A0A);
a3 |= a3 << 4;
- a2 = ((a1 & 0xCCCCCCCCCCCCCCCCu) >> 2) | ((a1 & 0x3333333333333333u) << 2);
+ a2 = ((a1 & U64(0xCCCCCCCCCCCCCCCC)) >> 2) | ((a1 & U64(0x3333333333333333)) << 2);
x = a1 & a3;
- x ^= (x & 0xAAAAAAAAAAAAAAAAu) >> 1;
- x ^= (((a1 << 1) & a3) ^ ((a3 << 1) & a1)) & 0xAAAAAAAAAAAAAAAAu;
+ x ^= (x & U64(0xAAAAAAAAAAAAAAAA)) >> 1;
+ x ^= (((a1 << 1) & a3) ^ ((a3 << 1) & a1)) & U64(0xAAAAAAAAAAAAAAAA);
a4 = a2 & a3;
- a4 ^= (a4 & 0xAAAAAAAAAAAAAAAAu) >> 1;
- a4 ^= (((a2 << 1) & a3) ^ ((a3 << 1) & a2)) & 0xAAAAAAAAAAAAAAAAu;
- a5 = (x & 0xCCCCCCCCCCCCCCCCu) >> 2;
- x ^= ((a4 << 2) ^ a4) & 0xCCCCCCCCCCCCCCCCu;
- a4 = a5 & 0x2222222222222222u;
+ a4 ^= (a4 & U64(0xAAAAAAAAAAAAAAAA)) >> 1;
+ a4 ^= (((a2 << 1) & a3) ^ ((a3 << 1) & a2)) & U64(0xAAAAAAAAAAAAAAAA);
+ a5 = (x & U64(0xCCCCCCCCCCCCCCCC)) >> 2;
+ x ^= ((a4 << 2) ^ a4) & U64(0xCCCCCCCCCCCCCCCC);
+ a4 = a5 & U64(0x2222222222222222);
a4 |= a4 >> 1;
- a4 ^= (a5 << 1) & 0x2222222222222222u;
+ a4 ^= (a5 << 1) & U64(0x2222222222222222);
x ^= a4;
- y = ((x & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((x & 0x0101010101010101u) << 7);
- x &= 0x3939393939393939u;
- x ^= y & 0x3F3F3F3F3F3F3F3Fu;
- y = ((y & 0xFCFCFCFCFCFCFCFCu) >> 2) | ((y & 0x0303030303030303u) << 6);
- x ^= y & 0x9797979797979797u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x9B9B9B9B9B9B9B9Bu;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x3C3C3C3C3C3C3C3Cu;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0xDDDDDDDDDDDDDDDDu;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x7272727272727272u;
- x ^= 0x6363636363636363u;
+ y = ((x & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((x & U64(0x0101010101010101)) << 7);
+ x &= U64(0x3939393939393939);
+ x ^= y & U64(0x3F3F3F3F3F3F3F3F);
+ y = ((y & U64(0xFCFCFCFCFCFCFCFC)) >> 2) | ((y & U64(0x0303030303030303)) << 6);
+ x ^= y & U64(0x9797979797979797);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x9B9B9B9B9B9B9B9B);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x3C3C3C3C3C3C3C3C);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0xDDDDDDDDDDDDDDDD);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x7272727272727272);
+ x ^= U64(0x6363636363636363);
*w = x;
}
@@ -323,93 +332,93 @@ static void InvSubLong(u64 *w)
u64 x, y, a1, a2, a3, a4, a5, a6;
x = *w;
- x ^= 0x6363636363636363u;
- y = ((x & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((x & 0x0101010101010101u) << 7);
- x &= 0xFDFDFDFDFDFDFDFDu;
- x ^= y & 0x5E5E5E5E5E5E5E5Eu;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0xF3F3F3F3F3F3F3F3u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0xF5F5F5F5F5F5F5F5u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x7878787878787878u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x7777777777777777u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x1515151515151515u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0xA5A5A5A5A5A5A5A5u;
+ x ^= U64(0x6363636363636363);
+ y = ((x & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((x & U64(0x0101010101010101)) << 7);
+ x &= U64(0xFDFDFDFDFDFDFDFD);
+ x ^= y & U64(0x5E5E5E5E5E5E5E5E);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0xF3F3F3F3F3F3F3F3);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0xF5F5F5F5F5F5F5F5);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x7878787878787878);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x7777777777777777);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x1515151515151515);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0xA5A5A5A5A5A5A5A5);
a1 = x;
- a1 ^= (x & 0xF0F0F0F0F0F0F0F0u) >> 4;
- a2 = ((x & 0xCCCCCCCCCCCCCCCCu) >> 2) | ((x & 0x3333333333333333u) << 2);
+ a1 ^= (x & U64(0xF0F0F0F0F0F0F0F0)) >> 4;
+ a2 = ((x & U64(0xCCCCCCCCCCCCCCCC)) >> 2) | ((x & U64(0x3333333333333333)) << 2);
a3 = x & a1;
- a3 ^= (a3 & 0xAAAAAAAAAAAAAAAAu) >> 1;
- a3 ^= (((x << 1) & a1) ^ ((a1 << 1) & x)) & 0xAAAAAAAAAAAAAAAAu;
+ a3 ^= (a3 & U64(0xAAAAAAAAAAAAAAAA)) >> 1;
+ a3 ^= (((x << 1) & a1) ^ ((a1 << 1) & x)) & U64(0xAAAAAAAAAAAAAAAA);
a4 = a2 & a1;
- a4 ^= (a4 & 0xAAAAAAAAAAAAAAAAu) >> 1;
- a4 ^= (((a2 << 1) & a1) ^ ((a1 << 1) & a2)) & 0xAAAAAAAAAAAAAAAAu;
- a5 = (a3 & 0xCCCCCCCCCCCCCCCCu) >> 2;
- a3 ^= ((a4 << 2) ^ a4) & 0xCCCCCCCCCCCCCCCCu;
- a4 = a5 & 0x2222222222222222u;
+ a4 ^= (a4 & U64(0xAAAAAAAAAAAAAAAA)) >> 1;
+ a4 ^= (((a2 << 1) & a1) ^ ((a1 << 1) & a2)) & U64(0xAAAAAAAAAAAAAAAA);
+ a5 = (a3 & U64(0xCCCCCCCCCCCCCCCC)) >> 2;
+ a3 ^= ((a4 << 2) ^ a4) & U64(0xCCCCCCCCCCCCCCCC);
+ a4 = a5 & U64(0x2222222222222222);
a4 |= a4 >> 1;
- a4 ^= (a5 << 1) & 0x2222222222222222u;
+ a4 ^= (a5 << 1) & U64(0x2222222222222222);
a3 ^= a4;
- a5 = a3 & 0xA0A0A0A0A0A0A0A0u;
+ a5 = a3 & U64(0xA0A0A0A0A0A0A0A0);
a5 |= a5 >> 1;
- a5 ^= (a3 << 1) & 0xA0A0A0A0A0A0A0A0u;
- a4 = a5 & 0xC0C0C0C0C0C0C0C0u;
+ a5 ^= (a3 << 1) & U64(0xA0A0A0A0A0A0A0A0);
+ a4 = a5 & U64(0xC0C0C0C0C0C0C0C0);
a6 = a4 >> 2;
- a4 ^= (a5 << 2) & 0xC0C0C0C0C0C0C0C0u;
- a5 = a6 & 0x2020202020202020u;
+ a4 ^= (a5 << 2) & U64(0xC0C0C0C0C0C0C0C0);
+ a5 = a6 & U64(0x2020202020202020);
a5 |= a5 >> 1;
- a5 ^= (a6 << 1) & 0x2020202020202020u;
+ a5 ^= (a6 << 1) & U64(0x2020202020202020);
a4 |= a5;
a3 ^= a4 >> 4;
- a3 &= 0x0F0F0F0F0F0F0F0Fu;
+ a3 &= U64(0x0F0F0F0F0F0F0F0F);
a2 = a3;
- a2 ^= (a3 & 0x0C0C0C0C0C0C0C0Cu) >> 2;
+ a2 ^= (a3 & U64(0x0C0C0C0C0C0C0C0C)) >> 2;
a4 = a3 & a2;
- a4 ^= (a4 & 0x0A0A0A0A0A0A0A0Au) >> 1;
- a4 ^= (((a3 << 1) & a2) ^ ((a2 << 1) & a3)) & 0x0A0A0A0A0A0A0A0Au;
- a5 = a4 & 0x0808080808080808u;
+ a4 ^= (a4 & U64(0x0A0A0A0A0A0A0A0A)) >> 1;
+ a4 ^= (((a3 << 1) & a2) ^ ((a2 << 1) & a3)) & U64(0x0A0A0A0A0A0A0A0A);
+ a5 = a4 & U64(0x0808080808080808);
a5 |= a5 >> 1;
- a5 ^= (a4 << 1) & 0x0808080808080808u;
+ a5 ^= (a4 << 1) & U64(0x0808080808080808);
a4 ^= a5 >> 2;
- a4 &= 0x0303030303030303u;
- a4 ^= (a4 & 0x0202020202020202u) >> 1;
+ a4 &= U64(0x0303030303030303);
+ a4 ^= (a4 & U64(0x0202020202020202)) >> 1;
a4 |= a4 << 2;
a3 = a2 & a4;
- a3 ^= (a3 & 0x0A0A0A0A0A0A0A0Au) >> 1;
- a3 ^= (((a2 << 1) & a4) ^ ((a4 << 1) & a2)) & 0x0A0A0A0A0A0A0A0Au;
+ a3 ^= (a3 & U64(0x0A0A0A0A0A0A0A0A)) >> 1;
+ a3 ^= (((a2 << 1) & a4) ^ ((a4 << 1) & a2)) & U64(0x0A0A0A0A0A0A0A0A);
a3 |= a3 << 4;
- a2 = ((a1 & 0xCCCCCCCCCCCCCCCCu) >> 2) | ((a1 & 0x3333333333333333u) << 2);
+ a2 = ((a1 & U64(0xCCCCCCCCCCCCCCCC)) >> 2) | ((a1 & U64(0x3333333333333333)) << 2);
x = a1 & a3;
- x ^= (x & 0xAAAAAAAAAAAAAAAAu) >> 1;
- x ^= (((a1 << 1) & a3) ^ ((a3 << 1) & a1)) & 0xAAAAAAAAAAAAAAAAu;
+ x ^= (x & U64(0xAAAAAAAAAAAAAAAA)) >> 1;
+ x ^= (((a1 << 1) & a3) ^ ((a3 << 1) & a1)) & U64(0xAAAAAAAAAAAAAAAA);
a4 = a2 & a3;
- a4 ^= (a4 & 0xAAAAAAAAAAAAAAAAu) >> 1;
- a4 ^= (((a2 << 1) & a3) ^ ((a3 << 1) & a2)) & 0xAAAAAAAAAAAAAAAAu;
- a5 = (x & 0xCCCCCCCCCCCCCCCCu) >> 2;
- x ^= ((a4 << 2) ^ a4) & 0xCCCCCCCCCCCCCCCCu;
- a4 = a5 & 0x2222222222222222u;
+ a4 ^= (a4 & U64(0xAAAAAAAAAAAAAAAA)) >> 1;
+ a4 ^= (((a2 << 1) & a3) ^ ((a3 << 1) & a2)) & U64(0xAAAAAAAAAAAAAAAA);
+ a5 = (x & U64(0xCCCCCCCCCCCCCCCC)) >> 2;
+ x ^= ((a4 << 2) ^ a4) & U64(0xCCCCCCCCCCCCCCCC);
+ a4 = a5 & U64(0x2222222222222222);
a4 |= a4 >> 1;
- a4 ^= (a5 << 1) & 0x2222222222222222u;
+ a4 ^= (a5 << 1) & U64(0x2222222222222222);
x ^= a4;
- y = ((x & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((x & 0x0101010101010101u) << 7);
- x &= 0xB5B5B5B5B5B5B5B5u;
- x ^= y & 0x4040404040404040u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x8080808080808080u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x1616161616161616u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0xEBEBEBEBEBEBEBEBu;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x9797979797979797u;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0xFBFBFBFBFBFBFBFBu;
- y = ((y & 0xFEFEFEFEFEFEFEFEu) >> 1) | ((y & 0x0101010101010101u) << 7);
- x ^= y & 0x7D7D7D7D7D7D7D7Du;
+ y = ((x & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((x & U64(0x0101010101010101)) << 7);
+ x &= U64(0xB5B5B5B5B5B5B5B5);
+ x ^= y & U64(0x4040404040404040);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x8080808080808080);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x1616161616161616);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0xEBEBEBEBEBEBEBEB);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x9797979797979797);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0xFBFBFBFBFBFBFBFB);
+ y = ((y & U64(0xFEFEFEFEFEFEFEFE)) >> 1) | ((y & U64(0x0101010101010101)) << 7);
+ x ^= y & U64(0x7D7D7D7D7D7D7D7D);
*w = x;
}
@@ -460,10 +469,10 @@ static void MixColumns(u64 *state)
for (c = 0; c < 2; c++) {
s1.d = state[c];
s.d = s1.d;
- s.d ^= ((s.d & 0xFFFF0000FFFF0000u) >> 16)
- | ((s.d & 0x0000FFFF0000FFFFu) << 16);
- s.d ^= ((s.d & 0xFF00FF00FF00FF00u) >> 8)
- | ((s.d & 0x00FF00FF00FF00FFu) << 8);
+ s.d ^= ((s.d & U64(0xFFFF0000FFFF0000)) >> 16)
+ | ((s.d & U64(0x0000FFFF0000FFFF)) << 16);
+ s.d ^= ((s.d & U64(0xFF00FF00FF00FF00)) >> 8)
+ | ((s.d & U64(0x00FF00FF00FF00FF)) << 8);
s.d ^= s1.d;
XtimeLong(&s1.d);
s.d ^= s1.d;
@@ -488,10 +497,10 @@ static void InvMixColumns(u64 *state)
for (c = 0; c < 2; c++) {
s1.d = state[c];
s.d = s1.d;
- s.d ^= ((s.d & 0xFFFF0000FFFF0000u) >> 16)
- | ((s.d & 0x0000FFFF0000FFFFu) << 16);
- s.d ^= ((s.d & 0xFF00FF00FF00FF00u) >> 8)
- | ((s.d & 0x00FF00FF00FF00FFu) << 8);
+ s.d ^= ((s.d & U64(0xFFFF0000FFFF0000)) >> 16)
+ | ((s.d & U64(0x0000FFFF0000FFFF)) << 16);
+ s.d ^= ((s.d & U64(0xFF00FF00FF00FF00)) >> 8)
+ | ((s.d & U64(0x00FF00FF00FF00FF)) << 8);
s.d ^= s1.d;
XtimeLong(&s1.d);
s.d ^= s1.d;
@@ -504,12 +513,12 @@ static void InvMixColumns(u64 *state)
s.b[6] ^= s1.b[7];
s.b[7] ^= s1.b[4];
XtimeLong(&s1.d);
- s1.d ^= ((s1.d & 0xFFFF0000FFFF0000u) >> 16)
- | ((s1.d & 0x0000FFFF0000FFFFu) << 16);
+ s1.d ^= ((s1.d & U64(0xFFFF0000FFFF0000)) >> 16)
+ | ((s1.d & U64(0x0000FFFF0000FFFF)) << 16);
s.d ^= s1.d;
XtimeLong(&s1.d);
- s1.d ^= ((s1.d & 0xFF00FF00FF00FF00u) >> 8)
- | ((s1.d & 0x00FF00FF00FF00FFu) << 8);
+ s1.d ^= ((s1.d & U64(0xFF00FF00FF00FF00)) >> 8)
+ | ((s1.d & U64(0x00FF00FF00FF00FF)) << 8);
s.d ^= s1.d;
state[c] = s.d;
}