Deleted Added
full compact
aes_core.c (160814) aes_core.c (162911)
1/* crypto/aes/aes_core.c -*- mode:C; c-file-style: "eay" -*- */
2/**
3 * rijndael-alg-fst.c
4 *
5 * @version 3.0 (December 2000)
6 *
7 * Optimised ANSI C code for the Rijndael cipher (now AES)
8 *

--- 30 unchanged lines hidden (view full) ---

39#include <openssl/aes.h>
40#include "aes_locl.h"
41
42/*
43Te0[x] = S [x].[02, 01, 01, 03];
44Te1[x] = S [x].[03, 02, 01, 01];
45Te2[x] = S [x].[01, 03, 02, 01];
46Te3[x] = S [x].[01, 01, 03, 02];
1/* crypto/aes/aes_core.c -*- mode:C; c-file-style: "eay" -*- */
2/**
3 * rijndael-alg-fst.c
4 *
5 * @version 3.0 (December 2000)
6 *
7 * Optimised ANSI C code for the Rijndael cipher (now AES)
8 *

--- 30 unchanged lines hidden (view full) ---

39#include <openssl/aes.h>
40#include "aes_locl.h"
41
42/*
43Te0[x] = S [x].[02, 01, 01, 03];
44Te1[x] = S [x].[03, 02, 01, 01];
45Te2[x] = S [x].[01, 03, 02, 01];
46Te3[x] = S [x].[01, 01, 03, 02];
47Te4[x] = S [x].[01, 01, 01, 01];
48
49Td0[x] = Si[x].[0e, 09, 0d, 0b];
50Td1[x] = Si[x].[0b, 0e, 09, 0d];
51Td2[x] = Si[x].[0d, 0b, 0e, 09];
52Td3[x] = Si[x].[09, 0d, 0b, 0e];
47
48Td0[x] = Si[x].[0e, 09, 0d, 0b];
49Td1[x] = Si[x].[0b, 0e, 09, 0d];
50Td2[x] = Si[x].[0d, 0b, 0e, 09];
51Td3[x] = Si[x].[09, 0d, 0b, 0e];
53Td4[x] = Si[x].[01, 01, 01, 01];
52Td4[x] = Si[x].[01];
54*/
55
53*/
54
56#ifdef AES_ASM
57extern const u32 AES_Te[5][256];
58#define Te0 AES_Te[0]
59#define Te1 AES_Te[1]
60#define Te2 AES_Te[2]
61#define Te3 AES_Te[3]
62#else
63static const u32 Te0[256] = {
64 0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
65 0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
66 0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU,
67 0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU,
68 0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U,
69 0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU,
70 0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU,

--- 248 unchanged lines hidden (view full) ---

319 0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U,
320 0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U,
321 0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U,
322 0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU,
323 0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U,
324 0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU,
325 0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU,
326};
55static const u32 Te0[256] = {
56 0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
57 0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
58 0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU,
59 0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU,
60 0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U,
61 0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU,
62 0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU,

--- 248 unchanged lines hidden (view full) ---

311 0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U,
312 0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U,
313 0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U,
314 0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU,
315 0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U,
316 0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU,
317 0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU,
318};
327#endif
328static const u32 Te4[256] = {
329 0x63636363U, 0x7c7c7c7cU, 0x77777777U, 0x7b7b7b7bU,
330 0xf2f2f2f2U, 0x6b6b6b6bU, 0x6f6f6f6fU, 0xc5c5c5c5U,
331 0x30303030U, 0x01010101U, 0x67676767U, 0x2b2b2b2bU,
332 0xfefefefeU, 0xd7d7d7d7U, 0xababababU, 0x76767676U,
333 0xcacacacaU, 0x82828282U, 0xc9c9c9c9U, 0x7d7d7d7dU,
334 0xfafafafaU, 0x59595959U, 0x47474747U, 0xf0f0f0f0U,
335 0xadadadadU, 0xd4d4d4d4U, 0xa2a2a2a2U, 0xafafafafU,
336 0x9c9c9c9cU, 0xa4a4a4a4U, 0x72727272U, 0xc0c0c0c0U,
337 0xb7b7b7b7U, 0xfdfdfdfdU, 0x93939393U, 0x26262626U,
338 0x36363636U, 0x3f3f3f3fU, 0xf7f7f7f7U, 0xccccccccU,
339 0x34343434U, 0xa5a5a5a5U, 0xe5e5e5e5U, 0xf1f1f1f1U,
340 0x71717171U, 0xd8d8d8d8U, 0x31313131U, 0x15151515U,
341 0x04040404U, 0xc7c7c7c7U, 0x23232323U, 0xc3c3c3c3U,
342 0x18181818U, 0x96969696U, 0x05050505U, 0x9a9a9a9aU,
343 0x07070707U, 0x12121212U, 0x80808080U, 0xe2e2e2e2U,
344 0xebebebebU, 0x27272727U, 0xb2b2b2b2U, 0x75757575U,
345 0x09090909U, 0x83838383U, 0x2c2c2c2cU, 0x1a1a1a1aU,
346 0x1b1b1b1bU, 0x6e6e6e6eU, 0x5a5a5a5aU, 0xa0a0a0a0U,
347 0x52525252U, 0x3b3b3b3bU, 0xd6d6d6d6U, 0xb3b3b3b3U,
348 0x29292929U, 0xe3e3e3e3U, 0x2f2f2f2fU, 0x84848484U,
349 0x53535353U, 0xd1d1d1d1U, 0x00000000U, 0xededededU,
350 0x20202020U, 0xfcfcfcfcU, 0xb1b1b1b1U, 0x5b5b5b5bU,
351 0x6a6a6a6aU, 0xcbcbcbcbU, 0xbebebebeU, 0x39393939U,
352 0x4a4a4a4aU, 0x4c4c4c4cU, 0x58585858U, 0xcfcfcfcfU,
353 0xd0d0d0d0U, 0xefefefefU, 0xaaaaaaaaU, 0xfbfbfbfbU,
354 0x43434343U, 0x4d4d4d4dU, 0x33333333U, 0x85858585U,
355 0x45454545U, 0xf9f9f9f9U, 0x02020202U, 0x7f7f7f7fU,
356 0x50505050U, 0x3c3c3c3cU, 0x9f9f9f9fU, 0xa8a8a8a8U,
357 0x51515151U, 0xa3a3a3a3U, 0x40404040U, 0x8f8f8f8fU,
358 0x92929292U, 0x9d9d9d9dU, 0x38383838U, 0xf5f5f5f5U,
359 0xbcbcbcbcU, 0xb6b6b6b6U, 0xdadadadaU, 0x21212121U,
360 0x10101010U, 0xffffffffU, 0xf3f3f3f3U, 0xd2d2d2d2U,
361 0xcdcdcdcdU, 0x0c0c0c0cU, 0x13131313U, 0xececececU,
362 0x5f5f5f5fU, 0x97979797U, 0x44444444U, 0x17171717U,
363 0xc4c4c4c4U, 0xa7a7a7a7U, 0x7e7e7e7eU, 0x3d3d3d3dU,
364 0x64646464U, 0x5d5d5d5dU, 0x19191919U, 0x73737373U,
365 0x60606060U, 0x81818181U, 0x4f4f4f4fU, 0xdcdcdcdcU,
366 0x22222222U, 0x2a2a2a2aU, 0x90909090U, 0x88888888U,
367 0x46464646U, 0xeeeeeeeeU, 0xb8b8b8b8U, 0x14141414U,
368 0xdedededeU, 0x5e5e5e5eU, 0x0b0b0b0bU, 0xdbdbdbdbU,
369 0xe0e0e0e0U, 0x32323232U, 0x3a3a3a3aU, 0x0a0a0a0aU,
370 0x49494949U, 0x06060606U, 0x24242424U, 0x5c5c5c5cU,
371 0xc2c2c2c2U, 0xd3d3d3d3U, 0xacacacacU, 0x62626262U,
372 0x91919191U, 0x95959595U, 0xe4e4e4e4U, 0x79797979U,
373 0xe7e7e7e7U, 0xc8c8c8c8U, 0x37373737U, 0x6d6d6d6dU,
374 0x8d8d8d8dU, 0xd5d5d5d5U, 0x4e4e4e4eU, 0xa9a9a9a9U,
375 0x6c6c6c6cU, 0x56565656U, 0xf4f4f4f4U, 0xeaeaeaeaU,
376 0x65656565U, 0x7a7a7a7aU, 0xaeaeaeaeU, 0x08080808U,
377 0xbabababaU, 0x78787878U, 0x25252525U, 0x2e2e2e2eU,
378 0x1c1c1c1cU, 0xa6a6a6a6U, 0xb4b4b4b4U, 0xc6c6c6c6U,
379 0xe8e8e8e8U, 0xddddddddU, 0x74747474U, 0x1f1f1f1fU,
380 0x4b4b4b4bU, 0xbdbdbdbdU, 0x8b8b8b8bU, 0x8a8a8a8aU,
381 0x70707070U, 0x3e3e3e3eU, 0xb5b5b5b5U, 0x66666666U,
382 0x48484848U, 0x03030303U, 0xf6f6f6f6U, 0x0e0e0e0eU,
383 0x61616161U, 0x35353535U, 0x57575757U, 0xb9b9b9b9U,
384 0x86868686U, 0xc1c1c1c1U, 0x1d1d1d1dU, 0x9e9e9e9eU,
385 0xe1e1e1e1U, 0xf8f8f8f8U, 0x98989898U, 0x11111111U,
386 0x69696969U, 0xd9d9d9d9U, 0x8e8e8e8eU, 0x94949494U,
387 0x9b9b9b9bU, 0x1e1e1e1eU, 0x87878787U, 0xe9e9e9e9U,
388 0xcecececeU, 0x55555555U, 0x28282828U, 0xdfdfdfdfU,
389 0x8c8c8c8cU, 0xa1a1a1a1U, 0x89898989U, 0x0d0d0d0dU,
390 0xbfbfbfbfU, 0xe6e6e6e6U, 0x42424242U, 0x68686868U,
391 0x41414141U, 0x99999999U, 0x2d2d2d2dU, 0x0f0f0f0fU,
392 0xb0b0b0b0U, 0x54545454U, 0xbbbbbbbbU, 0x16161616U,
393};
394
319
395#ifdef AES_ASM
396extern const u32 AES_Td[5][256];
397#define Td0 AES_Td[0]
398#define Td1 AES_Td[1]
399#define Td2 AES_Td[2]
400#define Td3 AES_Td[3]
401#else
402static const u32 Td0[256] = {
403 0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U,
404 0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U,
405 0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U,
406 0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU,
407 0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U,
408 0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U,
409 0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU,

--- 248 unchanged lines hidden (view full) ---

658 0xa927eeceU, 0x61c935b7U, 0x1ce5ede1U, 0x47b13c7aU,
659 0xd2df599cU, 0xf2733f55U, 0x14ce7918U, 0xc737bf73U,
660 0xf7cdea53U, 0xfdaa5b5fU, 0x3d6f14dfU, 0x44db8678U,
661 0xaff381caU, 0x68c43eb9U, 0x24342c38U, 0xa3405fc2U,
662 0x1dc37216U, 0xe2250cbcU, 0x3c498b28U, 0x0d9541ffU,
663 0xa8017139U, 0x0cb3de08U, 0xb4e49cd8U, 0x56c19064U,
664 0xcb84617bU, 0x32b670d5U, 0x6c5c7448U, 0xb85742d0U,
665};
320static const u32 Td0[256] = {
321 0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U,
322 0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U,
323 0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U,
324 0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU,
325 0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U,
326 0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U,
327 0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU,

--- 248 unchanged lines hidden (view full) ---

576 0xa927eeceU, 0x61c935b7U, 0x1ce5ede1U, 0x47b13c7aU,
577 0xd2df599cU, 0xf2733f55U, 0x14ce7918U, 0xc737bf73U,
578 0xf7cdea53U, 0xfdaa5b5fU, 0x3d6f14dfU, 0x44db8678U,
579 0xaff381caU, 0x68c43eb9U, 0x24342c38U, 0xa3405fc2U,
580 0x1dc37216U, 0xe2250cbcU, 0x3c498b28U, 0x0d9541ffU,
581 0xa8017139U, 0x0cb3de08U, 0xb4e49cd8U, 0x56c19064U,
582 0xcb84617bU, 0x32b670d5U, 0x6c5c7448U, 0xb85742d0U,
583};
666#endif
667static const u32 Td4[256] = {
668 0x52525252U, 0x09090909U, 0x6a6a6a6aU, 0xd5d5d5d5U,
669 0x30303030U, 0x36363636U, 0xa5a5a5a5U, 0x38383838U,
670 0xbfbfbfbfU, 0x40404040U, 0xa3a3a3a3U, 0x9e9e9e9eU,
671 0x81818181U, 0xf3f3f3f3U, 0xd7d7d7d7U, 0xfbfbfbfbU,
672 0x7c7c7c7cU, 0xe3e3e3e3U, 0x39393939U, 0x82828282U,
673 0x9b9b9b9bU, 0x2f2f2f2fU, 0xffffffffU, 0x87878787U,
674 0x34343434U, 0x8e8e8e8eU, 0x43434343U, 0x44444444U,
675 0xc4c4c4c4U, 0xdedededeU, 0xe9e9e9e9U, 0xcbcbcbcbU,
676 0x54545454U, 0x7b7b7b7bU, 0x94949494U, 0x32323232U,
677 0xa6a6a6a6U, 0xc2c2c2c2U, 0x23232323U, 0x3d3d3d3dU,
678 0xeeeeeeeeU, 0x4c4c4c4cU, 0x95959595U, 0x0b0b0b0bU,
679 0x42424242U, 0xfafafafaU, 0xc3c3c3c3U, 0x4e4e4e4eU,
680 0x08080808U, 0x2e2e2e2eU, 0xa1a1a1a1U, 0x66666666U,
681 0x28282828U, 0xd9d9d9d9U, 0x24242424U, 0xb2b2b2b2U,
682 0x76767676U, 0x5b5b5b5bU, 0xa2a2a2a2U, 0x49494949U,
683 0x6d6d6d6dU, 0x8b8b8b8bU, 0xd1d1d1d1U, 0x25252525U,
684 0x72727272U, 0xf8f8f8f8U, 0xf6f6f6f6U, 0x64646464U,
685 0x86868686U, 0x68686868U, 0x98989898U, 0x16161616U,
686 0xd4d4d4d4U, 0xa4a4a4a4U, 0x5c5c5c5cU, 0xccccccccU,
687 0x5d5d5d5dU, 0x65656565U, 0xb6b6b6b6U, 0x92929292U,
688 0x6c6c6c6cU, 0x70707070U, 0x48484848U, 0x50505050U,
689 0xfdfdfdfdU, 0xededededU, 0xb9b9b9b9U, 0xdadadadaU,
690 0x5e5e5e5eU, 0x15151515U, 0x46464646U, 0x57575757U,
691 0xa7a7a7a7U, 0x8d8d8d8dU, 0x9d9d9d9dU, 0x84848484U,
692 0x90909090U, 0xd8d8d8d8U, 0xababababU, 0x00000000U,
693 0x8c8c8c8cU, 0xbcbcbcbcU, 0xd3d3d3d3U, 0x0a0a0a0aU,
694 0xf7f7f7f7U, 0xe4e4e4e4U, 0x58585858U, 0x05050505U,
695 0xb8b8b8b8U, 0xb3b3b3b3U, 0x45454545U, 0x06060606U,
696 0xd0d0d0d0U, 0x2c2c2c2cU, 0x1e1e1e1eU, 0x8f8f8f8fU,
697 0xcacacacaU, 0x3f3f3f3fU, 0x0f0f0f0fU, 0x02020202U,
698 0xc1c1c1c1U, 0xafafafafU, 0xbdbdbdbdU, 0x03030303U,
699 0x01010101U, 0x13131313U, 0x8a8a8a8aU, 0x6b6b6b6bU,
700 0x3a3a3a3aU, 0x91919191U, 0x11111111U, 0x41414141U,
701 0x4f4f4f4fU, 0x67676767U, 0xdcdcdcdcU, 0xeaeaeaeaU,
702 0x97979797U, 0xf2f2f2f2U, 0xcfcfcfcfU, 0xcecececeU,
703 0xf0f0f0f0U, 0xb4b4b4b4U, 0xe6e6e6e6U, 0x73737373U,
704 0x96969696U, 0xacacacacU, 0x74747474U, 0x22222222U,
705 0xe7e7e7e7U, 0xadadadadU, 0x35353535U, 0x85858585U,
706 0xe2e2e2e2U, 0xf9f9f9f9U, 0x37373737U, 0xe8e8e8e8U,
707 0x1c1c1c1cU, 0x75757575U, 0xdfdfdfdfU, 0x6e6e6e6eU,
708 0x47474747U, 0xf1f1f1f1U, 0x1a1a1a1aU, 0x71717171U,
709 0x1d1d1d1dU, 0x29292929U, 0xc5c5c5c5U, 0x89898989U,
710 0x6f6f6f6fU, 0xb7b7b7b7U, 0x62626262U, 0x0e0e0e0eU,
711 0xaaaaaaaaU, 0x18181818U, 0xbebebebeU, 0x1b1b1b1bU,
712 0xfcfcfcfcU, 0x56565656U, 0x3e3e3e3eU, 0x4b4b4b4bU,
713 0xc6c6c6c6U, 0xd2d2d2d2U, 0x79797979U, 0x20202020U,
714 0x9a9a9a9aU, 0xdbdbdbdbU, 0xc0c0c0c0U, 0xfefefefeU,
715 0x78787878U, 0xcdcdcdcdU, 0x5a5a5a5aU, 0xf4f4f4f4U,
716 0x1f1f1f1fU, 0xddddddddU, 0xa8a8a8a8U, 0x33333333U,
717 0x88888888U, 0x07070707U, 0xc7c7c7c7U, 0x31313131U,
718 0xb1b1b1b1U, 0x12121212U, 0x10101010U, 0x59595959U,
719 0x27272727U, 0x80808080U, 0xececececU, 0x5f5f5f5fU,
720 0x60606060U, 0x51515151U, 0x7f7f7f7fU, 0xa9a9a9a9U,
721 0x19191919U, 0xb5b5b5b5U, 0x4a4a4a4aU, 0x0d0d0d0dU,
722 0x2d2d2d2dU, 0xe5e5e5e5U, 0x7a7a7a7aU, 0x9f9f9f9fU,
723 0x93939393U, 0xc9c9c9c9U, 0x9c9c9c9cU, 0xefefefefU,
724 0xa0a0a0a0U, 0xe0e0e0e0U, 0x3b3b3b3bU, 0x4d4d4d4dU,
725 0xaeaeaeaeU, 0x2a2a2a2aU, 0xf5f5f5f5U, 0xb0b0b0b0U,
726 0xc8c8c8c8U, 0xebebebebU, 0xbbbbbbbbU, 0x3c3c3c3cU,
727 0x83838383U, 0x53535353U, 0x99999999U, 0x61616161U,
728 0x17171717U, 0x2b2b2b2bU, 0x04040404U, 0x7e7e7e7eU,
729 0xbabababaU, 0x77777777U, 0xd6d6d6d6U, 0x26262626U,
730 0xe1e1e1e1U, 0x69696969U, 0x14141414U, 0x63636363U,
731 0x55555555U, 0x21212121U, 0x0c0c0c0cU, 0x7d7d7d7dU,
584static const u8 Td4[256] = {
585 0x52U, 0x09U, 0x6aU, 0xd5U, 0x30U, 0x36U, 0xa5U, 0x38U,
586 0xbfU, 0x40U, 0xa3U, 0x9eU, 0x81U, 0xf3U, 0xd7U, 0xfbU,
587 0x7cU, 0xe3U, 0x39U, 0x82U, 0x9bU, 0x2fU, 0xffU, 0x87U,
588 0x34U, 0x8eU, 0x43U, 0x44U, 0xc4U, 0xdeU, 0xe9U, 0xcbU,
589 0x54U, 0x7bU, 0x94U, 0x32U, 0xa6U, 0xc2U, 0x23U, 0x3dU,
590 0xeeU, 0x4cU, 0x95U, 0x0bU, 0x42U, 0xfaU, 0xc3U, 0x4eU,
591 0x08U, 0x2eU, 0xa1U, 0x66U, 0x28U, 0xd9U, 0x24U, 0xb2U,
592 0x76U, 0x5bU, 0xa2U, 0x49U, 0x6dU, 0x8bU, 0xd1U, 0x25U,
593 0x72U, 0xf8U, 0xf6U, 0x64U, 0x86U, 0x68U, 0x98U, 0x16U,
594 0xd4U, 0xa4U, 0x5cU, 0xccU, 0x5dU, 0x65U, 0xb6U, 0x92U,
595 0x6cU, 0x70U, 0x48U, 0x50U, 0xfdU, 0xedU, 0xb9U, 0xdaU,
596 0x5eU, 0x15U, 0x46U, 0x57U, 0xa7U, 0x8dU, 0x9dU, 0x84U,
597 0x90U, 0xd8U, 0xabU, 0x00U, 0x8cU, 0xbcU, 0xd3U, 0x0aU,
598 0xf7U, 0xe4U, 0x58U, 0x05U, 0xb8U, 0xb3U, 0x45U, 0x06U,
599 0xd0U, 0x2cU, 0x1eU, 0x8fU, 0xcaU, 0x3fU, 0x0fU, 0x02U,
600 0xc1U, 0xafU, 0xbdU, 0x03U, 0x01U, 0x13U, 0x8aU, 0x6bU,
601 0x3aU, 0x91U, 0x11U, 0x41U, 0x4fU, 0x67U, 0xdcU, 0xeaU,
602 0x97U, 0xf2U, 0xcfU, 0xceU, 0xf0U, 0xb4U, 0xe6U, 0x73U,
603 0x96U, 0xacU, 0x74U, 0x22U, 0xe7U, 0xadU, 0x35U, 0x85U,
604 0xe2U, 0xf9U, 0x37U, 0xe8U, 0x1cU, 0x75U, 0xdfU, 0x6eU,
605 0x47U, 0xf1U, 0x1aU, 0x71U, 0x1dU, 0x29U, 0xc5U, 0x89U,
606 0x6fU, 0xb7U, 0x62U, 0x0eU, 0xaaU, 0x18U, 0xbeU, 0x1bU,
607 0xfcU, 0x56U, 0x3eU, 0x4bU, 0xc6U, 0xd2U, 0x79U, 0x20U,
608 0x9aU, 0xdbU, 0xc0U, 0xfeU, 0x78U, 0xcdU, 0x5aU, 0xf4U,
609 0x1fU, 0xddU, 0xa8U, 0x33U, 0x88U, 0x07U, 0xc7U, 0x31U,
610 0xb1U, 0x12U, 0x10U, 0x59U, 0x27U, 0x80U, 0xecU, 0x5fU,
611 0x60U, 0x51U, 0x7fU, 0xa9U, 0x19U, 0xb5U, 0x4aU, 0x0dU,
612 0x2dU, 0xe5U, 0x7aU, 0x9fU, 0x93U, 0xc9U, 0x9cU, 0xefU,
613 0xa0U, 0xe0U, 0x3bU, 0x4dU, 0xaeU, 0x2aU, 0xf5U, 0xb0U,
614 0xc8U, 0xebU, 0xbbU, 0x3cU, 0x83U, 0x53U, 0x99U, 0x61U,
615 0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U,
616 0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU,
732};
733static const u32 rcon[] = {
734 0x01000000, 0x02000000, 0x04000000, 0x08000000,
735 0x10000000, 0x20000000, 0x40000000, 0x80000000,
736 0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
737};
738
739/**

--- 23 unchanged lines hidden (view full) ---

763 rk[0] = GETU32(userKey );
764 rk[1] = GETU32(userKey + 4);
765 rk[2] = GETU32(userKey + 8);
766 rk[3] = GETU32(userKey + 12);
767 if (bits == 128) {
768 while (1) {
769 temp = rk[3];
770 rk[4] = rk[0] ^
617};
618static const u32 rcon[] = {
619 0x01000000, 0x02000000, 0x04000000, 0x08000000,
620 0x10000000, 0x20000000, 0x40000000, 0x80000000,
621 0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
622};
623
624/**

--- 23 unchanged lines hidden (view full) ---

648 rk[0] = GETU32(userKey );
649 rk[1] = GETU32(userKey + 4);
650 rk[2] = GETU32(userKey + 8);
651 rk[3] = GETU32(userKey + 12);
652 if (bits == 128) {
653 while (1) {
654 temp = rk[3];
655 rk[4] = rk[0] ^
771 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
772 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
773 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
774 (Te4[(temp >> 24) ] & 0x000000ff) ^
656 (Te2[(temp >> 16) & 0xff] & 0xff000000) ^
657 (Te3[(temp >> 8) & 0xff] & 0x00ff0000) ^
658 (Te0[(temp ) & 0xff] & 0x0000ff00) ^
659 (Te1[(temp >> 24) ] & 0x000000ff) ^
775 rcon[i];
776 rk[5] = rk[1] ^ rk[4];
777 rk[6] = rk[2] ^ rk[5];
778 rk[7] = rk[3] ^ rk[6];
779 if (++i == 10) {
780 return 0;
781 }
782 rk += 4;
783 }
784 }
785 rk[4] = GETU32(userKey + 16);
786 rk[5] = GETU32(userKey + 20);
787 if (bits == 192) {
788 while (1) {
789 temp = rk[ 5];
790 rk[ 6] = rk[ 0] ^
660 rcon[i];
661 rk[5] = rk[1] ^ rk[4];
662 rk[6] = rk[2] ^ rk[5];
663 rk[7] = rk[3] ^ rk[6];
664 if (++i == 10) {
665 return 0;
666 }
667 rk += 4;
668 }
669 }
670 rk[4] = GETU32(userKey + 16);
671 rk[5] = GETU32(userKey + 20);
672 if (bits == 192) {
673 while (1) {
674 temp = rk[ 5];
675 rk[ 6] = rk[ 0] ^
791 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
792 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
793 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
794 (Te4[(temp >> 24) ] & 0x000000ff) ^
676 (Te2[(temp >> 16) & 0xff] & 0xff000000) ^
677 (Te3[(temp >> 8) & 0xff] & 0x00ff0000) ^
678 (Te0[(temp ) & 0xff] & 0x0000ff00) ^
679 (Te1[(temp >> 24) ] & 0x000000ff) ^
795 rcon[i];
796 rk[ 7] = rk[ 1] ^ rk[ 6];
797 rk[ 8] = rk[ 2] ^ rk[ 7];
798 rk[ 9] = rk[ 3] ^ rk[ 8];
799 if (++i == 8) {
800 return 0;
801 }
802 rk[10] = rk[ 4] ^ rk[ 9];
803 rk[11] = rk[ 5] ^ rk[10];
804 rk += 6;
805 }
806 }
807 rk[6] = GETU32(userKey + 24);
808 rk[7] = GETU32(userKey + 28);
809 if (bits == 256) {
810 while (1) {
811 temp = rk[ 7];
812 rk[ 8] = rk[ 0] ^
680 rcon[i];
681 rk[ 7] = rk[ 1] ^ rk[ 6];
682 rk[ 8] = rk[ 2] ^ rk[ 7];
683 rk[ 9] = rk[ 3] ^ rk[ 8];
684 if (++i == 8) {
685 return 0;
686 }
687 rk[10] = rk[ 4] ^ rk[ 9];
688 rk[11] = rk[ 5] ^ rk[10];
689 rk += 6;
690 }
691 }
692 rk[6] = GETU32(userKey + 24);
693 rk[7] = GETU32(userKey + 28);
694 if (bits == 256) {
695 while (1) {
696 temp = rk[ 7];
697 rk[ 8] = rk[ 0] ^
813 (Te4[(temp >> 16) & 0xff] & 0xff000000) ^
814 (Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^
815 (Te4[(temp ) & 0xff] & 0x0000ff00) ^
816 (Te4[(temp >> 24) ] & 0x000000ff) ^
698 (Te2[(temp >> 16) & 0xff] & 0xff000000) ^
699 (Te3[(temp >> 8) & 0xff] & 0x00ff0000) ^
700 (Te0[(temp ) & 0xff] & 0x0000ff00) ^
701 (Te1[(temp >> 24) ] & 0x000000ff) ^
817 rcon[i];
818 rk[ 9] = rk[ 1] ^ rk[ 8];
819 rk[10] = rk[ 2] ^ rk[ 9];
820 rk[11] = rk[ 3] ^ rk[10];
821 if (++i == 7) {
822 return 0;
823 }
824 temp = rk[11];
825 rk[12] = rk[ 4] ^
702 rcon[i];
703 rk[ 9] = rk[ 1] ^ rk[ 8];
704 rk[10] = rk[ 2] ^ rk[ 9];
705 rk[11] = rk[ 3] ^ rk[10];
706 if (++i == 7) {
707 return 0;
708 }
709 temp = rk[11];
710 rk[12] = rk[ 4] ^
826 (Te4[(temp >> 24) ] & 0xff000000) ^
827 (Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^
828 (Te4[(temp >> 8) & 0xff] & 0x0000ff00) ^
829 (Te4[(temp ) & 0xff] & 0x000000ff);
711 (Te2[(temp >> 24) ] & 0xff000000) ^
712 (Te3[(temp >> 16) & 0xff] & 0x00ff0000) ^
713 (Te0[(temp >> 8) & 0xff] & 0x0000ff00) ^
714 (Te1[(temp ) & 0xff] & 0x000000ff);
830 rk[13] = rk[ 5] ^ rk[12];
831 rk[14] = rk[ 6] ^ rk[13];
832 rk[15] = rk[ 7] ^ rk[14];
833
834 rk += 8;
835 }
836 }
837 return 0;

--- 22 unchanged lines hidden (view full) ---

860 temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;
861 temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;
862 temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;
863 }
864 /* apply the inverse MixColumn transform to all round keys but the first and the last: */
865 for (i = 1; i < (key->rounds); i++) {
866 rk += 4;
867 rk[0] =
715 rk[13] = rk[ 5] ^ rk[12];
716 rk[14] = rk[ 6] ^ rk[13];
717 rk[15] = rk[ 7] ^ rk[14];
718
719 rk += 8;
720 }
721 }
722 return 0;

--- 22 unchanged lines hidden (view full) ---

745 temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;
746 temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;
747 temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;
748 }
749 /* apply the inverse MixColumn transform to all round keys but the first and the last: */
750 for (i = 1; i < (key->rounds); i++) {
751 rk += 4;
752 rk[0] =
868 Td0[Te4[(rk[0] >> 24) ] & 0xff] ^
869 Td1[Te4[(rk[0] >> 16) & 0xff] & 0xff] ^
870 Td2[Te4[(rk[0] >> 8) & 0xff] & 0xff] ^
871 Td3[Te4[(rk[0] ) & 0xff] & 0xff];
753 Td0[Te1[(rk[0] >> 24) ] & 0xff] ^
754 Td1[Te1[(rk[0] >> 16) & 0xff] & 0xff] ^
755 Td2[Te1[(rk[0] >> 8) & 0xff] & 0xff] ^
756 Td3[Te1[(rk[0] ) & 0xff] & 0xff];
872 rk[1] =
757 rk[1] =
873 Td0[Te4[(rk[1] >> 24) ] & 0xff] ^
874 Td1[Te4[(rk[1] >> 16) & 0xff] & 0xff] ^
875 Td2[Te4[(rk[1] >> 8) & 0xff] & 0xff] ^
876 Td3[Te4[(rk[1] ) & 0xff] & 0xff];
758 Td0[Te1[(rk[1] >> 24) ] & 0xff] ^
759 Td1[Te1[(rk[1] >> 16) & 0xff] & 0xff] ^
760 Td2[Te1[(rk[1] >> 8) & 0xff] & 0xff] ^
761 Td3[Te1[(rk[1] ) & 0xff] & 0xff];
877 rk[2] =
762 rk[2] =
878 Td0[Te4[(rk[2] >> 24) ] & 0xff] ^
879 Td1[Te4[(rk[2] >> 16) & 0xff] & 0xff] ^
880 Td2[Te4[(rk[2] >> 8) & 0xff] & 0xff] ^
881 Td3[Te4[(rk[2] ) & 0xff] & 0xff];
763 Td0[Te1[(rk[2] >> 24) ] & 0xff] ^
764 Td1[Te1[(rk[2] >> 16) & 0xff] & 0xff] ^
765 Td2[Te1[(rk[2] >> 8) & 0xff] & 0xff] ^
766 Td3[Te1[(rk[2] ) & 0xff] & 0xff];
882 rk[3] =
767 rk[3] =
883 Td0[Te4[(rk[3] >> 24) ] & 0xff] ^
884 Td1[Te4[(rk[3] >> 16) & 0xff] & 0xff] ^
885 Td2[Te4[(rk[3] >> 8) & 0xff] & 0xff] ^
886 Td3[Te4[(rk[3] ) & 0xff] & 0xff];
768 Td0[Te1[(rk[3] >> 24) ] & 0xff] ^
769 Td1[Te1[(rk[3] >> 16) & 0xff] & 0xff] ^
770 Td2[Te1[(rk[3] >> 8) & 0xff] & 0xff] ^
771 Td3[Te1[(rk[3] ) & 0xff] & 0xff];
887 }
888 return 0;
889}
890
891#ifndef AES_ASM
892/*
893 * Encrypt a single block
894 * in and out can overlap

--- 151 unchanged lines hidden (view full) ---

1046 rk[3];
1047 }
1048#endif /* ?FULL_UNROLL */
1049 /*
1050 * apply last round and
1051 * map cipher state to byte array block:
1052 */
1053 s0 =
772 }
773 return 0;
774}
775
776#ifndef AES_ASM
777/*
778 * Encrypt a single block
779 * in and out can overlap

--- 151 unchanged lines hidden (view full) ---

931 rk[3];
932 }
933#endif /* ?FULL_UNROLL */
934 /*
935 * apply last round and
936 * map cipher state to byte array block:
937 */
938 s0 =
1054 (Te4[(t0 >> 24) ] & 0xff000000) ^
1055 (Te4[(t1 >> 16) & 0xff] & 0x00ff0000) ^
1056 (Te4[(t2 >> 8) & 0xff] & 0x0000ff00) ^
1057 (Te4[(t3 ) & 0xff] & 0x000000ff) ^
939 (Te2[(t0 >> 24) ] & 0xff000000) ^
940 (Te3[(t1 >> 16) & 0xff] & 0x00ff0000) ^
941 (Te0[(t2 >> 8) & 0xff] & 0x0000ff00) ^
942 (Te1[(t3 ) & 0xff] & 0x000000ff) ^
1058 rk[0];
1059 PUTU32(out , s0);
1060 s1 =
943 rk[0];
944 PUTU32(out , s0);
945 s1 =
1061 (Te4[(t1 >> 24) ] & 0xff000000) ^
1062 (Te4[(t2 >> 16) & 0xff] & 0x00ff0000) ^
1063 (Te4[(t3 >> 8) & 0xff] & 0x0000ff00) ^
1064 (Te4[(t0 ) & 0xff] & 0x000000ff) ^
946 (Te2[(t1 >> 24) ] & 0xff000000) ^
947 (Te3[(t2 >> 16) & 0xff] & 0x00ff0000) ^
948 (Te0[(t3 >> 8) & 0xff] & 0x0000ff00) ^
949 (Te1[(t0 ) & 0xff] & 0x000000ff) ^
1065 rk[1];
1066 PUTU32(out + 4, s1);
1067 s2 =
950 rk[1];
951 PUTU32(out + 4, s1);
952 s2 =
1068 (Te4[(t2 >> 24) ] & 0xff000000) ^
1069 (Te4[(t3 >> 16) & 0xff] & 0x00ff0000) ^
1070 (Te4[(t0 >> 8) & 0xff] & 0x0000ff00) ^
1071 (Te4[(t1 ) & 0xff] & 0x000000ff) ^
953 (Te2[(t2 >> 24) ] & 0xff000000) ^
954 (Te3[(t3 >> 16) & 0xff] & 0x00ff0000) ^
955 (Te0[(t0 >> 8) & 0xff] & 0x0000ff00) ^
956 (Te1[(t1 ) & 0xff] & 0x000000ff) ^
1072 rk[2];
1073 PUTU32(out + 8, s2);
1074 s3 =
957 rk[2];
958 PUTU32(out + 8, s2);
959 s3 =
1075 (Te4[(t3 >> 24) ] & 0xff000000) ^
1076 (Te4[(t0 >> 16) & 0xff] & 0x00ff0000) ^
1077 (Te4[(t1 >> 8) & 0xff] & 0x0000ff00) ^
1078 (Te4[(t2 ) & 0xff] & 0x000000ff) ^
960 (Te2[(t3 >> 24) ] & 0xff000000) ^
961 (Te3[(t0 >> 16) & 0xff] & 0x00ff0000) ^
962 (Te0[(t1 >> 8) & 0xff] & 0x0000ff00) ^
963 (Te1[(t2 ) & 0xff] & 0x000000ff) ^
1079 rk[3];
1080 PUTU32(out + 12, s3);
1081}
1082
1083/*
1084 * Decrypt a single block
1085 * in and out can overlap
1086 */

--- 150 unchanged lines hidden (view full) ---

1237 rk[3];
1238 }
1239#endif /* ?FULL_UNROLL */
1240 /*
1241 * apply last round and
1242 * map cipher state to byte array block:
1243 */
1244 s0 =
964 rk[3];
965 PUTU32(out + 12, s3);
966}
967
968/*
969 * Decrypt a single block
970 * in and out can overlap
971 */

--- 150 unchanged lines hidden (view full) ---

1122 rk[3];
1123 }
1124#endif /* ?FULL_UNROLL */
1125 /*
1126 * apply last round and
1127 * map cipher state to byte array block:
1128 */
1129 s0 =
1245 (Td4[(t0 >> 24) ] & 0xff000000) ^
1246 (Td4[(t3 >> 16) & 0xff] & 0x00ff0000) ^
1247 (Td4[(t2 >> 8) & 0xff] & 0x0000ff00) ^
1248 (Td4[(t1 ) & 0xff] & 0x000000ff) ^
1130 (Td4[(t0 >> 24) ] << 24) ^
1131 (Td4[(t3 >> 16) & 0xff] << 16) ^
1132 (Td4[(t2 >> 8) & 0xff] << 8) ^
1133 (Td4[(t1 ) & 0xff]) ^
1249 rk[0];
1250 PUTU32(out , s0);
1251 s1 =
1134 rk[0];
1135 PUTU32(out , s0);
1136 s1 =
1252 (Td4[(t1 >> 24) ] & 0xff000000) ^
1253 (Td4[(t0 >> 16) & 0xff] & 0x00ff0000) ^
1254 (Td4[(t3 >> 8) & 0xff] & 0x0000ff00) ^
1255 (Td4[(t2 ) & 0xff] & 0x000000ff) ^
1137 (Td4[(t1 >> 24) ] << 24) ^
1138 (Td4[(t0 >> 16) & 0xff] << 16) ^
1139 (Td4[(t3 >> 8) & 0xff] << 8) ^
1140 (Td4[(t2 ) & 0xff]) ^
1256 rk[1];
1257 PUTU32(out + 4, s1);
1258 s2 =
1141 rk[1];
1142 PUTU32(out + 4, s1);
1143 s2 =
1259 (Td4[(t2 >> 24) ] & 0xff000000) ^
1260 (Td4[(t1 >> 16) & 0xff] & 0x00ff0000) ^
1261 (Td4[(t0 >> 8) & 0xff] & 0x0000ff00) ^
1262 (Td4[(t3 ) & 0xff] & 0x000000ff) ^
1144 (Td4[(t2 >> 24) ] << 24) ^
1145 (Td4[(t1 >> 16) & 0xff] << 16) ^
1146 (Td4[(t0 >> 8) & 0xff] << 8) ^
1147 (Td4[(t3 ) & 0xff]) ^
1263 rk[2];
1264 PUTU32(out + 8, s2);
1265 s3 =
1148 rk[2];
1149 PUTU32(out + 8, s2);
1150 s3 =
1266 (Td4[(t3 >> 24) ] & 0xff000000) ^
1267 (Td4[(t2 >> 16) & 0xff] & 0x00ff0000) ^
1268 (Td4[(t1 >> 8) & 0xff] & 0x0000ff00) ^
1269 (Td4[(t0 ) & 0xff] & 0x000000ff) ^
1151 (Td4[(t3 >> 24) ] << 24) ^
1152 (Td4[(t2 >> 16) & 0xff] << 16) ^
1153 (Td4[(t1 >> 8) & 0xff] << 8) ^
1154 (Td4[(t0 ) & 0xff]) ^
1270 rk[3];
1271 PUTU32(out + 12, s3);
1272}
1273
1274#endif /* AES_ASM */
1155 rk[3];
1156 PUTU32(out + 12, s3);
1157}
1158
1159#endif /* AES_ASM */