3 #ifndef CRYPTOPP_SERPENTP_H 4 #define CRYPTOPP_SERPENTP_H 9 #define LT(i,a,b,c,d,e) {\ 10 a = rotlConstant<13>(a); \ 11 c = rotlConstant<3>(c); \ 12 d = rotlConstant<7>(d ^ c ^ (a << 3)); \ 13 b = rotlConstant<1>(b ^ a ^ c); \ 14 a = rotlConstant<5>(a ^ b ^ d); \ 15 c = rotlConstant<22>(c ^ d ^ (b << 7));} 18 #define ILT(i,a,b,c,d,e) {\ 19 c = rotrConstant<22>(c); \ 20 a = rotrConstant<5>(a); \ 23 b = rotrConstant<1>(b); \ 24 d = rotrConstant<7>(d) ^ c ^ (a << 3); \ 26 c = rotrConstant<3>(c); \ 27 a = rotrConstant<13>(a);} 30 #define beforeS0(f) f(0,a,b,c,d,e) 31 #define afterS0(f) f(1,b,e,c,a,d) 32 #define afterS1(f) f(2,c,b,a,e,d) 33 #define afterS2(f) f(3,a,e,b,d,c) 34 #define afterS3(f) f(4,e,b,d,c,a) 35 #define afterS4(f) f(5,b,a,e,c,d) 36 #define afterS5(f) f(6,a,c,b,e,d) 37 #define afterS6(f) f(7,a,c,d,b,e) 38 #define afterS7(f) f(8,d,e,b,a,c) 41 #define beforeI7(f) f(8,a,b,c,d,e) 42 #define afterI7(f) f(7,d,a,b,e,c) 43 #define afterI6(f) f(6,a,b,c,e,d) 44 #define afterI5(f) f(5,b,d,e,c,a) 45 #define afterI4(f) f(4,b,c,e,a,d) 46 #define afterI3(f) f(3,a,b,e,c,d) 47 #define afterI2(f) f(2,b,d,e,c,a) 48 #define afterI1(f) f(1,a,b,c,e,d) 49 #define afterI0(f) f(0,a,d,b,e,c) 54 #define S0(i, r0, r1, r2, r3, r4) \ 76 #define I0(i, r0, r1, r2, r3, r4) \ 99 #define S1(i, r0, r1, r2, r3, r4) \ 121 #define I1(i, r0, r1, r2, r3, r4) \ 144 #define S2(i, r0, r1, r2, r3, r4) \ 164 #define I2(i, r0, r1, r2, r3, r4) \ 187 #define S3(i, r0, r1, r2, r3, r4) \ 210 #define I3(i, r0, r1, r2, r3, r4) \ 232 #define S4(i, r0, r1, r2, r3, r4) \ 256 #define I4(i, r0, r1, r2, r3, r4) \ 280 #define S5(i, r0, r1, r2, r3, r4) \ 303 #define I5(i, r0, r1, r2, r3, r4) \ 326 #define S6(i, r0, r1, r2, r3, r4) \ 348 #define I6(i, r0, r1, r2, r3, r4) \ 369 #define S7(i, r0, r1, r2, r3, r4) \ 393 #define I7(i, r0, r1, r2, r3, r4) \ 417 #define KX(r, a, b, c, d, e) {\ 423 #define LK(r, a, b, c, d, e) {\ 424 a = k[(8-r)*4 + 0]; \ 425 b = k[(8-r)*4 + 1]; \ 426 c = k[(8-r)*4 + 2]; \ 429 #define SK(r, a, b, c, d, e) {\ 430 k[(8-r)*4 + 4] = a; \ 431 k[(8-r)*4 + 5] = b; \ 432 k[(8-r)*4 + 6] = c; \ 435 void Serpent_KeySchedule(
word32 *k,
unsigned int rounds,
const byte *userKey,
size_t keylen);
439 #endif // CRYPTOPP_SERPENTP_H unsigned int word32
32-bit unsigned datatype
unsigned char byte
8-bit unsigned datatype
Crypto++ library namespace.