15 #if CRYPTOPP_MSC_VERSION 16 # pragma warning(disable: 4456) 17 # if (CRYPTOPP_MSC_VERSION >= 1400) 18 # pragma warning(disable: 6246) 29 #define SLOW_ROUND(lh, ll, rh, rl, kh, kl) { \ 30 word32 zr = ll ^ kl; \ 31 word32 zl = lh ^ kh; \ 32 zr= rotlFixed(s1[GETBYTE(zr, 3)], 1) | \ 33 (rotrFixed(s1[GETBYTE(zr, 2)], 1) << 24) | \ 34 (s1[rotlFixed(CRYPTOPP_GET_BYTE_AS_BYTE(zr, 1),1)] << 16) | \ 35 (s1[GETBYTE(zr, 0)] << 8); \ 36 zl= (s1[GETBYTE(zl, 3)] << 24) | \ 37 (rotlFixed(s1[GETBYTE(zl, 2)], 1) << 16) | \ 38 (rotrFixed(s1[GETBYTE(zl, 1)], 1) << 8) | \ 39 s1[rotlFixed(CRYPTOPP_GET_BYTE_AS_BYTE(zl, 0), 1)]; \ 41 zr = zl ^ rotlFixed(zr, 8); \ 42 zl = zr ^ rotrFixed(zl, 8); \ 43 rh ^= rotlFixed(zr, 16); \ 45 rl ^= rotlFixed(zl, 8); \ 49 #define ROUND(lh, ll, rh, rl, kh, kl) { \ 50 word32 th = lh ^ kh; \ 51 word32 tl = ll ^ kl; \ 52 word32 d = SP[0][GETBYTE(tl,0)] ^ SP[1][GETBYTE(tl,3)] ^ SP[2][GETBYTE(tl,2)] ^ SP[3][GETBYTE(tl,1)]; \ 53 word32 u = SP[0][GETBYTE(th,3)] ^ SP[1][GETBYTE(th,2)] ^ SP[2][GETBYTE(th,1)] ^ SP[3][GETBYTE(th,0)]; \ 57 rl ^= rotrFixed(u, 8);} 59 #define DOUBLE_ROUND(lh, ll, rh, rl, k0, k1, k2, k3) \ 60 ROUND(lh, ll, rh, rl, k0, k1) \ 61 ROUND(rh, rl, lh, ll, k2, k3) 63 #ifdef IS_LITTLE_ENDIAN 64 #define EFI(i) (1-(i)) 69 void Camellia::Base::UncheckedSetKey(
const byte *key,
unsigned int keylen,
const NameValuePairs &)
71 m_rounds = (keylen >= 24) ? 4 : 3;
72 unsigned int kslen = (8 * m_rounds + 2);
74 word32 *ks32 = m_key.data();
76 if (!IsForwardTransformation())
79 word32 kl0, kl1, kl2, kl3;
81 getBlock(kl0)(kl1)(kl2)(kl3);
82 word32 k0=kl0, k1=kl1, k2=kl2, k3=kl3;
84 #define CALC_ADDR2(base, i, j) ((byte *)(base)+8*(i)+4*(j)+((-16*(i))&m)) 85 #define CALC_ADDR(base, i) CALC_ADDR2(base, i, 0) 90 #define PREPARE_KS_ROUNDS \ 91 kwl = (word64(k0) << 32) | k1; \ 92 kwr = (word64(k2) << 32) | k3 93 #define KS_ROUND_0(i) \ 94 *(word64*)CALC_ADDR(ks32, i+EFI(0)) = kwl; \ 95 *(word64*)CALC_ADDR(ks32, i+EFI(1)) = kwr 96 #define KS_ROUND(i, r, which) \ 97 if (which & (1<<int(r<64))) *(word64*)CALC_ADDR(ks32, i+EFI(r<64)) = (kwr << (r%64)) | (kwl >> (64 - (r%64))); \ 98 if (which & (1<<int(r>64))) *(word64*)CALC_ADDR(ks32, i+EFI(r>64)) = (kwl << (r%64)) | (kwr >> (64 - (r%64))) 103 __m128i *ks128 = (__m128i *)ks32+a/2;
105 #define PREPARE_KS_ROUNDS \ 106 kw = _mm_set_epi32(k0, k1, k2, k3); \ 107 if (m) kw2 = kw, kw = _mm_shuffle_epi32(kw, _MM_SHUFFLE(1, 0, 3, 2)); \ 108 else kw2 = _mm_shuffle_epi32(kw, _MM_SHUFFLE(1, 0, 3, 2)) 109 #define KS_ROUND_0(i) \ 110 _mm_store_si128((__m128i *)CALC_ADDR(ks128, i), kw) 111 #define KS_ROUND(i, r, which) { \ 113 if (r<64 && (which!=1 || m)) temp = _mm_or_si128(_mm_slli_epi64(kw, r%64), _mm_srli_epi64(kw2, 64-r%64)); \ 114 else temp = _mm_or_si128(_mm_slli_epi64(kw2, r%64), _mm_srli_epi64(kw, 64-r%64)); \ 115 if (which & 2) _mm_store_si128((__m128i *)CALC_ADDR(ks128, i), temp); \ 116 else _mm_storel_epi64((__m128i*)CALC_ADDR(ks32, i+EFI(0)), temp); \ 130 KS_ROUND(22, 111, 3);
133 k0=kl0, k1=kl1, k2=kl2, k3=kl3;
134 DOUBLE_ROUND(k0, k1, k2, k3, 0xA09E667Ful, 0x3BCC908Bul, 0xB67AE858ul, 0x4CAA73B2ul);
135 k0^=kl0, k1^=kl1, k2^=kl2, k3^=kl3;
136 DOUBLE_ROUND(k0, k1, k2, k3, 0xC6EF372Ful, 0xE94F82BEul, 0x54FF53A5ul, 0xF1D36F1Cul);
155 KS_ROUND(30, 111, 3);
158 word32 kr0, kr1, kr2, kr3;
161 kr2 = ~kr0, kr3 = ~kr1;
164 k0=kr0, k1=kr1, k2=kr2, k3=kr3;
173 k0^=kl0, k1^=kl1, k2^=kl2, k3^=kl3;
174 DOUBLE_ROUND(k0, k1, k2, k3, 0xA09E667Ful, 0x3BCC908Bul, 0xB67AE858ul, 0x4CAA73B2ul);
175 k0^=kl0, k1^=kl1, k2^=kl2, k3^=kl3;
176 DOUBLE_ROUND(k0, k1, k2, k3, 0xC6EF372Ful, 0xE94F82BEul, 0x54FF53A5ul, 0xF1D36F1Cul);
185 k0^=kr0, k1^=kr1, k2^=kr2, k3^=kr3;
186 DOUBLE_ROUND(k0, k1, k2, k3, 0x10E527FAul, 0xDE682D1Dul, 0xB05688C2ul, 0xB3E6C1FDul);
196 void Camellia::Base::ProcessAndXorBlock(
const byte *inBlock,
const byte *xorBlock, byte *outBlock)
const 198 #define KS(i, j) ks[i*4 + EFI(j/2)*2 + EFI(j%2)] 200 #define FL(klh, kll, krh, krl) \ 201 ll ^= rotlFixed(lh & klh, 1); \ 204 rl ^= rotlFixed(rh & krh, 1); 206 word32 lh, ll, rh, rl;
208 Block::Get(inBlock)(lh)(ll)(rh)(rl);
209 const word32 *ks = m_key.data();
216 const int cacheLineSize = GetCacheLineSize();
219 for (i=0; i<256; i+=cacheLineSize)
220 u &= *(
const word32 *)(s1+i);
221 u &= *(
const word32 *)(s1+252);
224 SLOW_ROUND(lh, ll, rh, rl, KS(1,0), KS(1,1))
225 SLOW_ROUND(rh, rl, lh, ll, KS(1,2), KS(1,3))
226 for (i = m_rounds-1; i > 0; --i)
228 DOUBLE_ROUND(lh, ll, rh, rl, KS(2,0), KS(2,1), KS(2,2), KS(2,3))
229 DOUBLE_ROUND(lh, ll, rh, rl, KS(3,0), KS(3,1), KS(3,2), KS(3,3))
230 FL(KS(4,0), KS(4,1), KS(4,2), KS(4,3));
231 DOUBLE_ROUND(lh, ll, rh, rl, KS(5,0), KS(5,1), KS(5,2), KS(5,3))
234 DOUBLE_ROUND(lh, ll, rh, rl, KS(2,0), KS(2,1), KS(2,2), KS(2,3))
235 ROUND(lh, ll, rh, rl, KS(3,0), KS(3,1))
236 SLOW_ROUND(rh, rl, lh, ll, KS(3,2), KS(3,3))
241 Block::Put(xorBlock, outBlock)(rh)(rl)(lh)(ll);
246 const byte
Camellia::Base::s1[256] =
248 112,130,44,236,179,39,192,229,228,133,87,53,234,12,174,65,
249 35,239,107,147,69,25,165,33,237,14,79,78,29,101,146,189,
250 134,184,175,143,124,235,31,206,62,48,220,95,94,197,11,26,
251 166,225,57,202,213,71,93,61,217,1,90,214,81,86,108,77,
252 139,13,154,102,251,204,176,45,116,18,43,32,240,177,132,153,
253 223,76,203,194,52,126,118,5,109,183,169,49,209,23,4,215,
254 20,88,58,97,222,27,17,28,50,15,156,22,83,24,242,34,
255 254,68,207,178,195,181,122,145,36,8,232,168,96,252,105,80,
256 170,208,160,125,161,137,98,151,84,91,30,149,224,255,100,210,
257 16,196,0,72,163,247,117,219,138,3,230,218,9,63,221,148,
258 135,92,131,2,205,74,144,51,115,103,246,243,157,127,191,226,
259 82,155,216,38,200,55,198,59,129,150,111,75,19,190,99,46,
260 233,121,167,140,159,110,188,142,41,245,249,182,47,253,180,89,
261 120,152,6,106,231,70,113,186,212,37,171,66,136,162,141,250,
262 114,7,185,85,248,238,172,10,54,73,42,104,60,56,241,164,
263 64,40,211,123,187,201,67,193,21,227,173,244,119,199,128,158
266 const word32 Camellia::Base::SP[4][256] = {
268 0x70707000, 0x82828200, 0x2c2c2c00, 0xececec00,
269 0xb3b3b300, 0x27272700, 0xc0c0c000, 0xe5e5e500,
270 0xe4e4e400, 0x85858500, 0x57575700, 0x35353500,
271 0xeaeaea00, 0x0c0c0c00, 0xaeaeae00, 0x41414100,
272 0x23232300, 0xefefef00, 0x6b6b6b00, 0x93939300,
273 0x45454500, 0x19191900, 0xa5a5a500, 0x21212100,
274 0xededed00, 0x0e0e0e00, 0x4f4f4f00, 0x4e4e4e00,
275 0x1d1d1d00, 0x65656500, 0x92929200, 0xbdbdbd00,
276 0x86868600, 0xb8b8b800, 0xafafaf00, 0x8f8f8f00,
277 0x7c7c7c00, 0xebebeb00, 0x1f1f1f00, 0xcecece00,
278 0x3e3e3e00, 0x30303000, 0xdcdcdc00, 0x5f5f5f00,
279 0x5e5e5e00, 0xc5c5c500, 0x0b0b0b00, 0x1a1a1a00,
280 0xa6a6a600, 0xe1e1e100, 0x39393900, 0xcacaca00,
281 0xd5d5d500, 0x47474700, 0x5d5d5d00, 0x3d3d3d00,
282 0xd9d9d900, 0x01010100, 0x5a5a5a00, 0xd6d6d600,
283 0x51515100, 0x56565600, 0x6c6c6c00, 0x4d4d4d00,
284 0x8b8b8b00, 0x0d0d0d00, 0x9a9a9a00, 0x66666600,
285 0xfbfbfb00, 0xcccccc00, 0xb0b0b000, 0x2d2d2d00,
286 0x74747400, 0x12121200, 0x2b2b2b00, 0x20202000,
287 0xf0f0f000, 0xb1b1b100, 0x84848400, 0x99999900,
288 0xdfdfdf00, 0x4c4c4c00, 0xcbcbcb00, 0xc2c2c200,
289 0x34343400, 0x7e7e7e00, 0x76767600, 0x05050500,
290 0x6d6d6d00, 0xb7b7b700, 0xa9a9a900, 0x31313100,
291 0xd1d1d100, 0x17171700, 0x04040400, 0xd7d7d700,
292 0x14141400, 0x58585800, 0x3a3a3a00, 0x61616100,
293 0xdedede00, 0x1b1b1b00, 0x11111100, 0x1c1c1c00,
294 0x32323200, 0x0f0f0f00, 0x9c9c9c00, 0x16161600,
295 0x53535300, 0x18181800, 0xf2f2f200, 0x22222200,
296 0xfefefe00, 0x44444400, 0xcfcfcf00, 0xb2b2b200,
297 0xc3c3c300, 0xb5b5b500, 0x7a7a7a00, 0x91919100,
298 0x24242400, 0x08080800, 0xe8e8e800, 0xa8a8a800,
299 0x60606000, 0xfcfcfc00, 0x69696900, 0x50505000,
300 0xaaaaaa00, 0xd0d0d000, 0xa0a0a000, 0x7d7d7d00,
301 0xa1a1a100, 0x89898900, 0x62626200, 0x97979700,
302 0x54545400, 0x5b5b5b00, 0x1e1e1e00, 0x95959500,
303 0xe0e0e000, 0xffffff00, 0x64646400, 0xd2d2d200,
304 0x10101000, 0xc4c4c400, 0x00000000, 0x48484800,
305 0xa3a3a300, 0xf7f7f700, 0x75757500, 0xdbdbdb00,
306 0x8a8a8a00, 0x03030300, 0xe6e6e600, 0xdadada00,
307 0x09090900, 0x3f3f3f00, 0xdddddd00, 0x94949400,
308 0x87878700, 0x5c5c5c00, 0x83838300, 0x02020200,
309 0xcdcdcd00, 0x4a4a4a00, 0x90909000, 0x33333300,
310 0x73737300, 0x67676700, 0xf6f6f600, 0xf3f3f300,
311 0x9d9d9d00, 0x7f7f7f00, 0xbfbfbf00, 0xe2e2e200,
312 0x52525200, 0x9b9b9b00, 0xd8d8d800, 0x26262600,
313 0xc8c8c800, 0x37373700, 0xc6c6c600, 0x3b3b3b00,
314 0x81818100, 0x96969600, 0x6f6f6f00, 0x4b4b4b00,
315 0x13131300, 0xbebebe00, 0x63636300, 0x2e2e2e00,
316 0xe9e9e900, 0x79797900, 0xa7a7a700, 0x8c8c8c00,
317 0x9f9f9f00, 0x6e6e6e00, 0xbcbcbc00, 0x8e8e8e00,
318 0x29292900, 0xf5f5f500, 0xf9f9f900, 0xb6b6b600,
319 0x2f2f2f00, 0xfdfdfd00, 0xb4b4b400, 0x59595900,
320 0x78787800, 0x98989800, 0x06060600, 0x6a6a6a00,
321 0xe7e7e700, 0x46464600, 0x71717100, 0xbababa00,
322 0xd4d4d400, 0x25252500, 0xababab00, 0x42424200,
323 0x88888800, 0xa2a2a200, 0x8d8d8d00, 0xfafafa00,
324 0x72727200, 0x07070700, 0xb9b9b900, 0x55555500,
325 0xf8f8f800, 0xeeeeee00, 0xacacac00, 0x0a0a0a00,
326 0x36363600, 0x49494900, 0x2a2a2a00, 0x68686800,
327 0x3c3c3c00, 0x38383800, 0xf1f1f100, 0xa4a4a400,
328 0x40404000, 0x28282800, 0xd3d3d300, 0x7b7b7b00,
329 0xbbbbbb00, 0xc9c9c900, 0x43434300, 0xc1c1c100,
330 0x15151500, 0xe3e3e300, 0xadadad00, 0xf4f4f400,
331 0x77777700, 0xc7c7c700, 0x80808000, 0x9e9e9e00
334 0x00e0e0e0, 0x00050505, 0x00585858, 0x00d9d9d9,
335 0x00676767, 0x004e4e4e, 0x00818181, 0x00cbcbcb,
336 0x00c9c9c9, 0x000b0b0b, 0x00aeaeae, 0x006a6a6a,
337 0x00d5d5d5, 0x00181818, 0x005d5d5d, 0x00828282,
338 0x00464646, 0x00dfdfdf, 0x00d6d6d6, 0x00272727,
339 0x008a8a8a, 0x00323232, 0x004b4b4b, 0x00424242,
340 0x00dbdbdb, 0x001c1c1c, 0x009e9e9e, 0x009c9c9c,
341 0x003a3a3a, 0x00cacaca, 0x00252525, 0x007b7b7b,
342 0x000d0d0d, 0x00717171, 0x005f5f5f, 0x001f1f1f,
343 0x00f8f8f8, 0x00d7d7d7, 0x003e3e3e, 0x009d9d9d,
344 0x007c7c7c, 0x00606060, 0x00b9b9b9, 0x00bebebe,
345 0x00bcbcbc, 0x008b8b8b, 0x00161616, 0x00343434,
346 0x004d4d4d, 0x00c3c3c3, 0x00727272, 0x00959595,
347 0x00ababab, 0x008e8e8e, 0x00bababa, 0x007a7a7a,
348 0x00b3b3b3, 0x00020202, 0x00b4b4b4, 0x00adadad,
349 0x00a2a2a2, 0x00acacac, 0x00d8d8d8, 0x009a9a9a,
350 0x00171717, 0x001a1a1a, 0x00353535, 0x00cccccc,
351 0x00f7f7f7, 0x00999999, 0x00616161, 0x005a5a5a,
352 0x00e8e8e8, 0x00242424, 0x00565656, 0x00404040,
353 0x00e1e1e1, 0x00636363, 0x00090909, 0x00333333,
354 0x00bfbfbf, 0x00989898, 0x00979797, 0x00858585,
355 0x00686868, 0x00fcfcfc, 0x00ececec, 0x000a0a0a,
356 0x00dadada, 0x006f6f6f, 0x00535353, 0x00626262,
357 0x00a3a3a3, 0x002e2e2e, 0x00080808, 0x00afafaf,
358 0x00282828, 0x00b0b0b0, 0x00747474, 0x00c2c2c2,
359 0x00bdbdbd, 0x00363636, 0x00222222, 0x00383838,
360 0x00646464, 0x001e1e1e, 0x00393939, 0x002c2c2c,
361 0x00a6a6a6, 0x00303030, 0x00e5e5e5, 0x00444444,
362 0x00fdfdfd, 0x00888888, 0x009f9f9f, 0x00656565,
363 0x00878787, 0x006b6b6b, 0x00f4f4f4, 0x00232323,
364 0x00484848, 0x00101010, 0x00d1d1d1, 0x00515151,
365 0x00c0c0c0, 0x00f9f9f9, 0x00d2d2d2, 0x00a0a0a0,
366 0x00555555, 0x00a1a1a1, 0x00414141, 0x00fafafa,
367 0x00434343, 0x00131313, 0x00c4c4c4, 0x002f2f2f,
368 0x00a8a8a8, 0x00b6b6b6, 0x003c3c3c, 0x002b2b2b,
369 0x00c1c1c1, 0x00ffffff, 0x00c8c8c8, 0x00a5a5a5,
370 0x00202020, 0x00898989, 0x00000000, 0x00909090,
371 0x00474747, 0x00efefef, 0x00eaeaea, 0x00b7b7b7,
372 0x00151515, 0x00060606, 0x00cdcdcd, 0x00b5b5b5,
373 0x00121212, 0x007e7e7e, 0x00bbbbbb, 0x00292929,
374 0x000f0f0f, 0x00b8b8b8, 0x00070707, 0x00040404,
375 0x009b9b9b, 0x00949494, 0x00212121, 0x00666666,
376 0x00e6e6e6, 0x00cecece, 0x00ededed, 0x00e7e7e7,
377 0x003b3b3b, 0x00fefefe, 0x007f7f7f, 0x00c5c5c5,
378 0x00a4a4a4, 0x00373737, 0x00b1b1b1, 0x004c4c4c,
379 0x00919191, 0x006e6e6e, 0x008d8d8d, 0x00767676,
380 0x00030303, 0x002d2d2d, 0x00dedede, 0x00969696,
381 0x00262626, 0x007d7d7d, 0x00c6c6c6, 0x005c5c5c,
382 0x00d3d3d3, 0x00f2f2f2, 0x004f4f4f, 0x00191919,
383 0x003f3f3f, 0x00dcdcdc, 0x00797979, 0x001d1d1d,
384 0x00525252, 0x00ebebeb, 0x00f3f3f3, 0x006d6d6d,
385 0x005e5e5e, 0x00fbfbfb, 0x00696969, 0x00b2b2b2,
386 0x00f0f0f0, 0x00313131, 0x000c0c0c, 0x00d4d4d4,
387 0x00cfcfcf, 0x008c8c8c, 0x00e2e2e2, 0x00757575,
388 0x00a9a9a9, 0x004a4a4a, 0x00575757, 0x00848484,
389 0x00111111, 0x00454545, 0x001b1b1b, 0x00f5f5f5,
390 0x00e4e4e4, 0x000e0e0e, 0x00737373, 0x00aaaaaa,
391 0x00f1f1f1, 0x00dddddd, 0x00595959, 0x00141414,
392 0x006c6c6c, 0x00929292, 0x00545454, 0x00d0d0d0,
393 0x00787878, 0x00707070, 0x00e3e3e3, 0x00494949,
394 0x00808080, 0x00505050, 0x00a7a7a7, 0x00f6f6f6,
395 0x00777777, 0x00939393, 0x00868686, 0x00838383,
396 0x002a2a2a, 0x00c7c7c7, 0x005b5b5b, 0x00e9e9e9,
397 0x00eeeeee, 0x008f8f8f, 0x00010101, 0x003d3d3d
400 0x38003838, 0x41004141, 0x16001616, 0x76007676,
401 0xd900d9d9, 0x93009393, 0x60006060, 0xf200f2f2,
402 0x72007272, 0xc200c2c2, 0xab00abab, 0x9a009a9a,
403 0x75007575, 0x06000606, 0x57005757, 0xa000a0a0,
404 0x91009191, 0xf700f7f7, 0xb500b5b5, 0xc900c9c9,
405 0xa200a2a2, 0x8c008c8c, 0xd200d2d2, 0x90009090,
406 0xf600f6f6, 0x07000707, 0xa700a7a7, 0x27002727,
407 0x8e008e8e, 0xb200b2b2, 0x49004949, 0xde00dede,
408 0x43004343, 0x5c005c5c, 0xd700d7d7, 0xc700c7c7,
409 0x3e003e3e, 0xf500f5f5, 0x8f008f8f, 0x67006767,
410 0x1f001f1f, 0x18001818, 0x6e006e6e, 0xaf00afaf,
411 0x2f002f2f, 0xe200e2e2, 0x85008585, 0x0d000d0d,
412 0x53005353, 0xf000f0f0, 0x9c009c9c, 0x65006565,
413 0xea00eaea, 0xa300a3a3, 0xae00aeae, 0x9e009e9e,
414 0xec00ecec, 0x80008080, 0x2d002d2d, 0x6b006b6b,
415 0xa800a8a8, 0x2b002b2b, 0x36003636, 0xa600a6a6,
416 0xc500c5c5, 0x86008686, 0x4d004d4d, 0x33003333,
417 0xfd00fdfd, 0x66006666, 0x58005858, 0x96009696,
418 0x3a003a3a, 0x09000909, 0x95009595, 0x10001010,
419 0x78007878, 0xd800d8d8, 0x42004242, 0xcc00cccc,
420 0xef00efef, 0x26002626, 0xe500e5e5, 0x61006161,
421 0x1a001a1a, 0x3f003f3f, 0x3b003b3b, 0x82008282,
422 0xb600b6b6, 0xdb00dbdb, 0xd400d4d4, 0x98009898,
423 0xe800e8e8, 0x8b008b8b, 0x02000202, 0xeb00ebeb,
424 0x0a000a0a, 0x2c002c2c, 0x1d001d1d, 0xb000b0b0,
425 0x6f006f6f, 0x8d008d8d, 0x88008888, 0x0e000e0e,
426 0x19001919, 0x87008787, 0x4e004e4e, 0x0b000b0b,
427 0xa900a9a9, 0x0c000c0c, 0x79007979, 0x11001111,
428 0x7f007f7f, 0x22002222, 0xe700e7e7, 0x59005959,
429 0xe100e1e1, 0xda00dada, 0x3d003d3d, 0xc800c8c8,
430 0x12001212, 0x04000404, 0x74007474, 0x54005454,
431 0x30003030, 0x7e007e7e, 0xb400b4b4, 0x28002828,
432 0x55005555, 0x68006868, 0x50005050, 0xbe00bebe,
433 0xd000d0d0, 0xc400c4c4, 0x31003131, 0xcb00cbcb,
434 0x2a002a2a, 0xad00adad, 0x0f000f0f, 0xca00caca,
435 0x70007070, 0xff00ffff, 0x32003232, 0x69006969,
436 0x08000808, 0x62006262, 0x00000000, 0x24002424,
437 0xd100d1d1, 0xfb00fbfb, 0xba00baba, 0xed00eded,
438 0x45004545, 0x81008181, 0x73007373, 0x6d006d6d,
439 0x84008484, 0x9f009f9f, 0xee00eeee, 0x4a004a4a,
440 0xc300c3c3, 0x2e002e2e, 0xc100c1c1, 0x01000101,
441 0xe600e6e6, 0x25002525, 0x48004848, 0x99009999,
442 0xb900b9b9, 0xb300b3b3, 0x7b007b7b, 0xf900f9f9,
443 0xce00cece, 0xbf00bfbf, 0xdf00dfdf, 0x71007171,
444 0x29002929, 0xcd00cdcd, 0x6c006c6c, 0x13001313,
445 0x64006464, 0x9b009b9b, 0x63006363, 0x9d009d9d,
446 0xc000c0c0, 0x4b004b4b, 0xb700b7b7, 0xa500a5a5,
447 0x89008989, 0x5f005f5f, 0xb100b1b1, 0x17001717,
448 0xf400f4f4, 0xbc00bcbc, 0xd300d3d3, 0x46004646,
449 0xcf00cfcf, 0x37003737, 0x5e005e5e, 0x47004747,
450 0x94009494, 0xfa00fafa, 0xfc00fcfc, 0x5b005b5b,
451 0x97009797, 0xfe00fefe, 0x5a005a5a, 0xac00acac,
452 0x3c003c3c, 0x4c004c4c, 0x03000303, 0x35003535,
453 0xf300f3f3, 0x23002323, 0xb800b8b8, 0x5d005d5d,
454 0x6a006a6a, 0x92009292, 0xd500d5d5, 0x21002121,
455 0x44004444, 0x51005151, 0xc600c6c6, 0x7d007d7d,
456 0x39003939, 0x83008383, 0xdc00dcdc, 0xaa00aaaa,
457 0x7c007c7c, 0x77007777, 0x56005656, 0x05000505,
458 0x1b001b1b, 0xa400a4a4, 0x15001515, 0x34003434,
459 0x1e001e1e, 0x1c001c1c, 0xf800f8f8, 0x52005252,
460 0x20002020, 0x14001414, 0xe900e9e9, 0xbd00bdbd,
461 0xdd00dddd, 0xe400e4e4, 0xa100a1a1, 0xe000e0e0,
462 0x8a008a8a, 0xf100f1f1, 0xd600d6d6, 0x7a007a7a,
463 0xbb00bbbb, 0xe300e3e3, 0x40004040, 0x4f004f4f
466 0x70700070, 0x2c2c002c, 0xb3b300b3, 0xc0c000c0,
467 0xe4e400e4, 0x57570057, 0xeaea00ea, 0xaeae00ae,
468 0x23230023, 0x6b6b006b, 0x45450045, 0xa5a500a5,
469 0xeded00ed, 0x4f4f004f, 0x1d1d001d, 0x92920092,
470 0x86860086, 0xafaf00af, 0x7c7c007c, 0x1f1f001f,
471 0x3e3e003e, 0xdcdc00dc, 0x5e5e005e, 0x0b0b000b,
472 0xa6a600a6, 0x39390039, 0xd5d500d5, 0x5d5d005d,
473 0xd9d900d9, 0x5a5a005a, 0x51510051, 0x6c6c006c,
474 0x8b8b008b, 0x9a9a009a, 0xfbfb00fb, 0xb0b000b0,
475 0x74740074, 0x2b2b002b, 0xf0f000f0, 0x84840084,
476 0xdfdf00df, 0xcbcb00cb, 0x34340034, 0x76760076,
477 0x6d6d006d, 0xa9a900a9, 0xd1d100d1, 0x04040004,
478 0x14140014, 0x3a3a003a, 0xdede00de, 0x11110011,
479 0x32320032, 0x9c9c009c, 0x53530053, 0xf2f200f2,
480 0xfefe00fe, 0xcfcf00cf, 0xc3c300c3, 0x7a7a007a,
481 0x24240024, 0xe8e800e8, 0x60600060, 0x69690069,
482 0xaaaa00aa, 0xa0a000a0, 0xa1a100a1, 0x62620062,
483 0x54540054, 0x1e1e001e, 0xe0e000e0, 0x64640064,
484 0x10100010, 0x00000000, 0xa3a300a3, 0x75750075,
485 0x8a8a008a, 0xe6e600e6, 0x09090009, 0xdddd00dd,
486 0x87870087, 0x83830083, 0xcdcd00cd, 0x90900090,
487 0x73730073, 0xf6f600f6, 0x9d9d009d, 0xbfbf00bf,
488 0x52520052, 0xd8d800d8, 0xc8c800c8, 0xc6c600c6,
489 0x81810081, 0x6f6f006f, 0x13130013, 0x63630063,
490 0xe9e900e9, 0xa7a700a7, 0x9f9f009f, 0xbcbc00bc,
491 0x29290029, 0xf9f900f9, 0x2f2f002f, 0xb4b400b4,
492 0x78780078, 0x06060006, 0xe7e700e7, 0x71710071,
493 0xd4d400d4, 0xabab00ab, 0x88880088, 0x8d8d008d,
494 0x72720072, 0xb9b900b9, 0xf8f800f8, 0xacac00ac,
495 0x36360036, 0x2a2a002a, 0x3c3c003c, 0xf1f100f1,
496 0x40400040, 0xd3d300d3, 0xbbbb00bb, 0x43430043,
497 0x15150015, 0xadad00ad, 0x77770077, 0x80800080,
498 0x82820082, 0xecec00ec, 0x27270027, 0xe5e500e5,
499 0x85850085, 0x35350035, 0x0c0c000c, 0x41410041,
500 0xefef00ef, 0x93930093, 0x19190019, 0x21210021,
501 0x0e0e000e, 0x4e4e004e, 0x65650065, 0xbdbd00bd,
502 0xb8b800b8, 0x8f8f008f, 0xebeb00eb, 0xcece00ce,
503 0x30300030, 0x5f5f005f, 0xc5c500c5, 0x1a1a001a,
504 0xe1e100e1, 0xcaca00ca, 0x47470047, 0x3d3d003d,
505 0x01010001, 0xd6d600d6, 0x56560056, 0x4d4d004d,
506 0x0d0d000d, 0x66660066, 0xcccc00cc, 0x2d2d002d,
507 0x12120012, 0x20200020, 0xb1b100b1, 0x99990099,
508 0x4c4c004c, 0xc2c200c2, 0x7e7e007e, 0x05050005,
509 0xb7b700b7, 0x31310031, 0x17170017, 0xd7d700d7,
510 0x58580058, 0x61610061, 0x1b1b001b, 0x1c1c001c,
511 0x0f0f000f, 0x16160016, 0x18180018, 0x22220022,
512 0x44440044, 0xb2b200b2, 0xb5b500b5, 0x91910091,
513 0x08080008, 0xa8a800a8, 0xfcfc00fc, 0x50500050,
514 0xd0d000d0, 0x7d7d007d, 0x89890089, 0x97970097,
515 0x5b5b005b, 0x95950095, 0xffff00ff, 0xd2d200d2,
516 0xc4c400c4, 0x48480048, 0xf7f700f7, 0xdbdb00db,
517 0x03030003, 0xdada00da, 0x3f3f003f, 0x94940094,
518 0x5c5c005c, 0x02020002, 0x4a4a004a, 0x33330033,
519 0x67670067, 0xf3f300f3, 0x7f7f007f, 0xe2e200e2,
520 0x9b9b009b, 0x26260026, 0x37370037, 0x3b3b003b,
521 0x96960096, 0x4b4b004b, 0xbebe00be, 0x2e2e002e,
522 0x79790079, 0x8c8c008c, 0x6e6e006e, 0x8e8e008e,
523 0xf5f500f5, 0xb6b600b6, 0xfdfd00fd, 0x59590059,
524 0x98980098, 0x6a6a006a, 0x46460046, 0xbaba00ba,
525 0x25250025, 0x42420042, 0xa2a200a2, 0xfafa00fa,
526 0x07070007, 0x55550055, 0xeeee00ee, 0x0a0a000a,
527 0x49490049, 0x68680068, 0x38380038, 0xa4a400a4,
528 0x28280028, 0x7b7b007b, 0xc9c900c9, 0xc1c100c1,
529 0xe3e300e3, 0xf4f400f4, 0xc7c700c7, 0x9e9e009e
Utility functions for the Crypto++ library.
Library configuration file.
Classes for the Cameliia block cipher.
Classes, functions, intrinsics and features for X86, X32 nd X64 assembly.
Crypto++ library namespace.
Interface for retrieving values given their names.