9 typedef unsigned char u8;
10 typedef unsigned int u32;
18 #define U32C(v) (v##U) 20 #define U8V(v) ((u8)(v) & U8C(0xFF)) 21 #define U32V(v) ((u32)(v) & U32C(0xFFFFFFFF)) 23 #define ROTL32(v, n) \ 24 (U32V((v) << (n)) | ((v) >> (32 - (n)))) 26 #define U8TO32_LITTLE(p) \ 28 ((u32)((p)[1]) << 8) | \ 29 ((u32)((p)[2]) << 16) | \ 30 ((u32)((p)[3]) << 24)) 32 #define U32TO8_LITTLE(p, v) \ 35 (p)[1] = U8V((v) >> 8); \ 36 (p)[2] = U8V((v) >> 16); \ 37 (p)[3] = U8V((v) >> 24); \ 40 #define ROTATE(v,c) (ROTL32(v,c)) 41 #define XOR(v,w) ((v) ^ (w)) 42 #define PLUS(v,w) (U32V((v) + (w))) 43 #define PLUSONE(v) (PLUS((v),1)) 45 #define QUARTERROUND(a,b,c,d) \ 46 a = PLUS(a,b); d = ROTATE(XOR(d,a),16); \ 47 c = PLUS(c,d); b = ROTATE(XOR(b,c),12); \ 48 a = PLUS(a,b); d = ROTATE(XOR(d,a), 8); \ 49 c = PLUS(c,d); b = ROTATE(XOR(b,c), 7); 51 static const char sigma[16] =
"expand 32-byte k";
52 static const char tau[16] =
"expand 16-byte k";
57 const char *constants;
91 u32 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15;
92 u32 j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, j15;
118 for (i = 0;i < bytes;++i) tmp[i] = m[i];
139 for (i = 20;i > 0;i -= 2) {
166 #ifndef KEYSTREAM_ONLY 210 for (i = 0;i < bytes;++i) ctarget[i] = c[i];
218 #ifndef KEYSTREAM_ONLY
#define QUARTERROUND(a, b, c, d)
#define U32TO8_LITTLE(p, v)