xref: /freebsd/contrib/wpa/src/crypto/aes-internal.c (revision f05cddf9)
1e28a4053SRui Paulo /*
2e28a4053SRui Paulo  * AES (Rijndael) cipher
3e28a4053SRui Paulo  *
4e28a4053SRui Paulo  * Modifications to public domain implementation:
5e28a4053SRui Paulo  * - cleanup
6e28a4053SRui Paulo  * - use C pre-processor to make it easier to change S table access
7e28a4053SRui Paulo  * - added option (AES_SMALL_TABLES) for reducing code size by about 8 kB at
8e28a4053SRui Paulo  *   cost of reduced throughput (quite small difference on Pentium 4,
9e28a4053SRui Paulo  *   10-25% when using -O1 or -O2 optimization)
10e28a4053SRui Paulo  *
11*f05cddf9SRui Paulo  * Copyright (c) 2003-2012, Jouni Malinen <j@w1.fi>
12e28a4053SRui Paulo  *
13*f05cddf9SRui Paulo  * This software may be distributed under the terms of the BSD license.
14*f05cddf9SRui Paulo  * See README for more details.
15e28a4053SRui Paulo  */
16e28a4053SRui Paulo 
17e28a4053SRui Paulo #include "includes.h"
18e28a4053SRui Paulo 
19e28a4053SRui Paulo #include "common.h"
20e28a4053SRui Paulo #include "crypto.h"
21e28a4053SRui Paulo #include "aes_i.h"
22e28a4053SRui Paulo 
23e28a4053SRui Paulo /*
24e28a4053SRui Paulo  * rijndael-alg-fst.c
25e28a4053SRui Paulo  *
26e28a4053SRui Paulo  * @version 3.0 (December 2000)
27e28a4053SRui Paulo  *
28e28a4053SRui Paulo  * Optimised ANSI C code for the Rijndael cipher (now AES)
29e28a4053SRui Paulo  *
30e28a4053SRui Paulo  * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
31e28a4053SRui Paulo  * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
32e28a4053SRui Paulo  * @author Paulo Barreto <paulo.barreto@terra.com.br>
33e28a4053SRui Paulo  *
34e28a4053SRui Paulo  * This code is hereby placed in the public domain.
35e28a4053SRui Paulo  *
36e28a4053SRui Paulo  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
37e28a4053SRui Paulo  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
38e28a4053SRui Paulo  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
39e28a4053SRui Paulo  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
40e28a4053SRui Paulo  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
41e28a4053SRui Paulo  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
42e28a4053SRui Paulo  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
43e28a4053SRui Paulo  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
44e28a4053SRui Paulo  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
45e28a4053SRui Paulo  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
46e28a4053SRui Paulo  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47e28a4053SRui Paulo  */
48e28a4053SRui Paulo 
49e28a4053SRui Paulo 
50e28a4053SRui Paulo /*
51e28a4053SRui Paulo Te0[x] = S [x].[02, 01, 01, 03];
52e28a4053SRui Paulo Te1[x] = S [x].[03, 02, 01, 01];
53e28a4053SRui Paulo Te2[x] = S [x].[01, 03, 02, 01];
54e28a4053SRui Paulo Te3[x] = S [x].[01, 01, 03, 02];
55e28a4053SRui Paulo Te4[x] = S [x].[01, 01, 01, 01];
56e28a4053SRui Paulo 
57e28a4053SRui Paulo Td0[x] = Si[x].[0e, 09, 0d, 0b];
58e28a4053SRui Paulo Td1[x] = Si[x].[0b, 0e, 09, 0d];
59e28a4053SRui Paulo Td2[x] = Si[x].[0d, 0b, 0e, 09];
60e28a4053SRui Paulo Td3[x] = Si[x].[09, 0d, 0b, 0e];
61e28a4053SRui Paulo Td4[x] = Si[x].[01, 01, 01, 01];
62e28a4053SRui Paulo */
63e28a4053SRui Paulo 
64e28a4053SRui Paulo const u32 Te0[256] = {
65e28a4053SRui Paulo     0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
66e28a4053SRui Paulo     0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
67e28a4053SRui Paulo     0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU,
68e28a4053SRui Paulo     0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU,
69e28a4053SRui Paulo     0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U,
70e28a4053SRui Paulo     0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU,
71e28a4053SRui Paulo     0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU,
72e28a4053SRui Paulo     0x239c9cbfU, 0x53a4a4f7U, 0xe4727296U, 0x9bc0c05bU,
73e28a4053SRui Paulo     0x75b7b7c2U, 0xe1fdfd1cU, 0x3d9393aeU, 0x4c26266aU,
74e28a4053SRui Paulo     0x6c36365aU, 0x7e3f3f41U, 0xf5f7f702U, 0x83cccc4fU,
75e28a4053SRui Paulo     0x6834345cU, 0x51a5a5f4U, 0xd1e5e534U, 0xf9f1f108U,
76e28a4053SRui Paulo     0xe2717193U, 0xabd8d873U, 0x62313153U, 0x2a15153fU,
77e28a4053SRui Paulo     0x0804040cU, 0x95c7c752U, 0x46232365U, 0x9dc3c35eU,
78e28a4053SRui Paulo     0x30181828U, 0x379696a1U, 0x0a05050fU, 0x2f9a9ab5U,
79e28a4053SRui Paulo     0x0e070709U, 0x24121236U, 0x1b80809bU, 0xdfe2e23dU,
80e28a4053SRui Paulo     0xcdebeb26U, 0x4e272769U, 0x7fb2b2cdU, 0xea75759fU,
81e28a4053SRui Paulo     0x1209091bU, 0x1d83839eU, 0x582c2c74U, 0x341a1a2eU,
82e28a4053SRui Paulo     0x361b1b2dU, 0xdc6e6eb2U, 0xb45a5aeeU, 0x5ba0a0fbU,
83e28a4053SRui Paulo     0xa45252f6U, 0x763b3b4dU, 0xb7d6d661U, 0x7db3b3ceU,
84e28a4053SRui Paulo     0x5229297bU, 0xdde3e33eU, 0x5e2f2f71U, 0x13848497U,
85e28a4053SRui Paulo     0xa65353f5U, 0xb9d1d168U, 0x00000000U, 0xc1eded2cU,
86e28a4053SRui Paulo     0x40202060U, 0xe3fcfc1fU, 0x79b1b1c8U, 0xb65b5bedU,
87e28a4053SRui Paulo     0xd46a6abeU, 0x8dcbcb46U, 0x67bebed9U, 0x7239394bU,
88e28a4053SRui Paulo     0x944a4adeU, 0x984c4cd4U, 0xb05858e8U, 0x85cfcf4aU,
89e28a4053SRui Paulo     0xbbd0d06bU, 0xc5efef2aU, 0x4faaaae5U, 0xedfbfb16U,
90e28a4053SRui Paulo     0x864343c5U, 0x9a4d4dd7U, 0x66333355U, 0x11858594U,
91e28a4053SRui Paulo     0x8a4545cfU, 0xe9f9f910U, 0x04020206U, 0xfe7f7f81U,
92e28a4053SRui Paulo     0xa05050f0U, 0x783c3c44U, 0x259f9fbaU, 0x4ba8a8e3U,
93e28a4053SRui Paulo     0xa25151f3U, 0x5da3a3feU, 0x804040c0U, 0x058f8f8aU,
94e28a4053SRui Paulo     0x3f9292adU, 0x219d9dbcU, 0x70383848U, 0xf1f5f504U,
95e28a4053SRui Paulo     0x63bcbcdfU, 0x77b6b6c1U, 0xafdada75U, 0x42212163U,
96e28a4053SRui Paulo     0x20101030U, 0xe5ffff1aU, 0xfdf3f30eU, 0xbfd2d26dU,
97e28a4053SRui Paulo     0x81cdcd4cU, 0x180c0c14U, 0x26131335U, 0xc3ecec2fU,
98e28a4053SRui Paulo     0xbe5f5fe1U, 0x359797a2U, 0x884444ccU, 0x2e171739U,
99e28a4053SRui Paulo     0x93c4c457U, 0x55a7a7f2U, 0xfc7e7e82U, 0x7a3d3d47U,
100e28a4053SRui Paulo     0xc86464acU, 0xba5d5de7U, 0x3219192bU, 0xe6737395U,
101e28a4053SRui Paulo     0xc06060a0U, 0x19818198U, 0x9e4f4fd1U, 0xa3dcdc7fU,
102e28a4053SRui Paulo     0x44222266U, 0x542a2a7eU, 0x3b9090abU, 0x0b888883U,
103e28a4053SRui Paulo     0x8c4646caU, 0xc7eeee29U, 0x6bb8b8d3U, 0x2814143cU,
104e28a4053SRui Paulo     0xa7dede79U, 0xbc5e5ee2U, 0x160b0b1dU, 0xaddbdb76U,
105e28a4053SRui Paulo     0xdbe0e03bU, 0x64323256U, 0x743a3a4eU, 0x140a0a1eU,
106e28a4053SRui Paulo     0x924949dbU, 0x0c06060aU, 0x4824246cU, 0xb85c5ce4U,
107e28a4053SRui Paulo     0x9fc2c25dU, 0xbdd3d36eU, 0x43acacefU, 0xc46262a6U,
108e28a4053SRui Paulo     0x399191a8U, 0x319595a4U, 0xd3e4e437U, 0xf279798bU,
109e28a4053SRui Paulo     0xd5e7e732U, 0x8bc8c843U, 0x6e373759U, 0xda6d6db7U,
110e28a4053SRui Paulo     0x018d8d8cU, 0xb1d5d564U, 0x9c4e4ed2U, 0x49a9a9e0U,
111e28a4053SRui Paulo     0xd86c6cb4U, 0xac5656faU, 0xf3f4f407U, 0xcfeaea25U,
112e28a4053SRui Paulo     0xca6565afU, 0xf47a7a8eU, 0x47aeaee9U, 0x10080818U,
113e28a4053SRui Paulo     0x6fbabad5U, 0xf0787888U, 0x4a25256fU, 0x5c2e2e72U,
114e28a4053SRui Paulo     0x381c1c24U, 0x57a6a6f1U, 0x73b4b4c7U, 0x97c6c651U,
115e28a4053SRui Paulo     0xcbe8e823U, 0xa1dddd7cU, 0xe874749cU, 0x3e1f1f21U,
116e28a4053SRui Paulo     0x964b4bddU, 0x61bdbddcU, 0x0d8b8b86U, 0x0f8a8a85U,
117e28a4053SRui Paulo     0xe0707090U, 0x7c3e3e42U, 0x71b5b5c4U, 0xcc6666aaU,
118e28a4053SRui Paulo     0x904848d8U, 0x06030305U, 0xf7f6f601U, 0x1c0e0e12U,
119e28a4053SRui Paulo     0xc26161a3U, 0x6a35355fU, 0xae5757f9U, 0x69b9b9d0U,
120e28a4053SRui Paulo     0x17868691U, 0x99c1c158U, 0x3a1d1d27U, 0x279e9eb9U,
121e28a4053SRui Paulo     0xd9e1e138U, 0xebf8f813U, 0x2b9898b3U, 0x22111133U,
122e28a4053SRui Paulo     0xd26969bbU, 0xa9d9d970U, 0x078e8e89U, 0x339494a7U,
123e28a4053SRui Paulo     0x2d9b9bb6U, 0x3c1e1e22U, 0x15878792U, 0xc9e9e920U,
124e28a4053SRui Paulo     0x87cece49U, 0xaa5555ffU, 0x50282878U, 0xa5dfdf7aU,
125e28a4053SRui Paulo     0x038c8c8fU, 0x59a1a1f8U, 0x09898980U, 0x1a0d0d17U,
126e28a4053SRui Paulo     0x65bfbfdaU, 0xd7e6e631U, 0x844242c6U, 0xd06868b8U,
127e28a4053SRui Paulo     0x824141c3U, 0x299999b0U, 0x5a2d2d77U, 0x1e0f0f11U,
128e28a4053SRui Paulo     0x7bb0b0cbU, 0xa85454fcU, 0x6dbbbbd6U, 0x2c16163aU,
129e28a4053SRui Paulo };
130e28a4053SRui Paulo #ifndef AES_SMALL_TABLES
131e28a4053SRui Paulo const u32 Te1[256] = {
132e28a4053SRui Paulo     0xa5c66363U, 0x84f87c7cU, 0x99ee7777U, 0x8df67b7bU,
133e28a4053SRui Paulo     0x0dfff2f2U, 0xbdd66b6bU, 0xb1de6f6fU, 0x5491c5c5U,
134e28a4053SRui Paulo     0x50603030U, 0x03020101U, 0xa9ce6767U, 0x7d562b2bU,
135e28a4053SRui Paulo     0x19e7fefeU, 0x62b5d7d7U, 0xe64dababU, 0x9aec7676U,
136e28a4053SRui Paulo     0x458fcacaU, 0x9d1f8282U, 0x4089c9c9U, 0x87fa7d7dU,
137e28a4053SRui Paulo     0x15effafaU, 0xebb25959U, 0xc98e4747U, 0x0bfbf0f0U,
138e28a4053SRui Paulo     0xec41adadU, 0x67b3d4d4U, 0xfd5fa2a2U, 0xea45afafU,
139e28a4053SRui Paulo     0xbf239c9cU, 0xf753a4a4U, 0x96e47272U, 0x5b9bc0c0U,
140e28a4053SRui Paulo     0xc275b7b7U, 0x1ce1fdfdU, 0xae3d9393U, 0x6a4c2626U,
141e28a4053SRui Paulo     0x5a6c3636U, 0x417e3f3fU, 0x02f5f7f7U, 0x4f83ccccU,
142e28a4053SRui Paulo     0x5c683434U, 0xf451a5a5U, 0x34d1e5e5U, 0x08f9f1f1U,
143e28a4053SRui Paulo     0x93e27171U, 0x73abd8d8U, 0x53623131U, 0x3f2a1515U,
144e28a4053SRui Paulo     0x0c080404U, 0x5295c7c7U, 0x65462323U, 0x5e9dc3c3U,
145e28a4053SRui Paulo     0x28301818U, 0xa1379696U, 0x0f0a0505U, 0xb52f9a9aU,
146e28a4053SRui Paulo     0x090e0707U, 0x36241212U, 0x9b1b8080U, 0x3ddfe2e2U,
147e28a4053SRui Paulo     0x26cdebebU, 0x694e2727U, 0xcd7fb2b2U, 0x9fea7575U,
148e28a4053SRui Paulo     0x1b120909U, 0x9e1d8383U, 0x74582c2cU, 0x2e341a1aU,
149e28a4053SRui Paulo     0x2d361b1bU, 0xb2dc6e6eU, 0xeeb45a5aU, 0xfb5ba0a0U,
150e28a4053SRui Paulo     0xf6a45252U, 0x4d763b3bU, 0x61b7d6d6U, 0xce7db3b3U,
151e28a4053SRui Paulo     0x7b522929U, 0x3edde3e3U, 0x715e2f2fU, 0x97138484U,
152e28a4053SRui Paulo     0xf5a65353U, 0x68b9d1d1U, 0x00000000U, 0x2cc1ededU,
153e28a4053SRui Paulo     0x60402020U, 0x1fe3fcfcU, 0xc879b1b1U, 0xedb65b5bU,
154e28a4053SRui Paulo     0xbed46a6aU, 0x468dcbcbU, 0xd967bebeU, 0x4b723939U,
155e28a4053SRui Paulo     0xde944a4aU, 0xd4984c4cU, 0xe8b05858U, 0x4a85cfcfU,
156e28a4053SRui Paulo     0x6bbbd0d0U, 0x2ac5efefU, 0xe54faaaaU, 0x16edfbfbU,
157e28a4053SRui Paulo     0xc5864343U, 0xd79a4d4dU, 0x55663333U, 0x94118585U,
158e28a4053SRui Paulo     0xcf8a4545U, 0x10e9f9f9U, 0x06040202U, 0x81fe7f7fU,
159e28a4053SRui Paulo     0xf0a05050U, 0x44783c3cU, 0xba259f9fU, 0xe34ba8a8U,
160e28a4053SRui Paulo     0xf3a25151U, 0xfe5da3a3U, 0xc0804040U, 0x8a058f8fU,
161e28a4053SRui Paulo     0xad3f9292U, 0xbc219d9dU, 0x48703838U, 0x04f1f5f5U,
162e28a4053SRui Paulo     0xdf63bcbcU, 0xc177b6b6U, 0x75afdadaU, 0x63422121U,
163e28a4053SRui Paulo     0x30201010U, 0x1ae5ffffU, 0x0efdf3f3U, 0x6dbfd2d2U,
164e28a4053SRui Paulo     0x4c81cdcdU, 0x14180c0cU, 0x35261313U, 0x2fc3ececU,
165e28a4053SRui Paulo     0xe1be5f5fU, 0xa2359797U, 0xcc884444U, 0x392e1717U,
166e28a4053SRui Paulo     0x5793c4c4U, 0xf255a7a7U, 0x82fc7e7eU, 0x477a3d3dU,
167e28a4053SRui Paulo     0xacc86464U, 0xe7ba5d5dU, 0x2b321919U, 0x95e67373U,
168e28a4053SRui Paulo     0xa0c06060U, 0x98198181U, 0xd19e4f4fU, 0x7fa3dcdcU,
169e28a4053SRui Paulo     0x66442222U, 0x7e542a2aU, 0xab3b9090U, 0x830b8888U,
170e28a4053SRui Paulo     0xca8c4646U, 0x29c7eeeeU, 0xd36bb8b8U, 0x3c281414U,
171e28a4053SRui Paulo     0x79a7dedeU, 0xe2bc5e5eU, 0x1d160b0bU, 0x76addbdbU,
172e28a4053SRui Paulo     0x3bdbe0e0U, 0x56643232U, 0x4e743a3aU, 0x1e140a0aU,
173e28a4053SRui Paulo     0xdb924949U, 0x0a0c0606U, 0x6c482424U, 0xe4b85c5cU,
174e28a4053SRui Paulo     0x5d9fc2c2U, 0x6ebdd3d3U, 0xef43acacU, 0xa6c46262U,
175e28a4053SRui Paulo     0xa8399191U, 0xa4319595U, 0x37d3e4e4U, 0x8bf27979U,
176e28a4053SRui Paulo     0x32d5e7e7U, 0x438bc8c8U, 0x596e3737U, 0xb7da6d6dU,
177e28a4053SRui Paulo     0x8c018d8dU, 0x64b1d5d5U, 0xd29c4e4eU, 0xe049a9a9U,
178e28a4053SRui Paulo     0xb4d86c6cU, 0xfaac5656U, 0x07f3f4f4U, 0x25cfeaeaU,
179e28a4053SRui Paulo     0xafca6565U, 0x8ef47a7aU, 0xe947aeaeU, 0x18100808U,
180e28a4053SRui Paulo     0xd56fbabaU, 0x88f07878U, 0x6f4a2525U, 0x725c2e2eU,
181e28a4053SRui Paulo     0x24381c1cU, 0xf157a6a6U, 0xc773b4b4U, 0x5197c6c6U,
182e28a4053SRui Paulo     0x23cbe8e8U, 0x7ca1ddddU, 0x9ce87474U, 0x213e1f1fU,
183e28a4053SRui Paulo     0xdd964b4bU, 0xdc61bdbdU, 0x860d8b8bU, 0x850f8a8aU,
184e28a4053SRui Paulo     0x90e07070U, 0x427c3e3eU, 0xc471b5b5U, 0xaacc6666U,
185e28a4053SRui Paulo     0xd8904848U, 0x05060303U, 0x01f7f6f6U, 0x121c0e0eU,
186e28a4053SRui Paulo     0xa3c26161U, 0x5f6a3535U, 0xf9ae5757U, 0xd069b9b9U,
187e28a4053SRui Paulo     0x91178686U, 0x5899c1c1U, 0x273a1d1dU, 0xb9279e9eU,
188e28a4053SRui Paulo     0x38d9e1e1U, 0x13ebf8f8U, 0xb32b9898U, 0x33221111U,
189e28a4053SRui Paulo     0xbbd26969U, 0x70a9d9d9U, 0x89078e8eU, 0xa7339494U,
190e28a4053SRui Paulo     0xb62d9b9bU, 0x223c1e1eU, 0x92158787U, 0x20c9e9e9U,
191e28a4053SRui Paulo     0x4987ceceU, 0xffaa5555U, 0x78502828U, 0x7aa5dfdfU,
192e28a4053SRui Paulo     0x8f038c8cU, 0xf859a1a1U, 0x80098989U, 0x171a0d0dU,
193e28a4053SRui Paulo     0xda65bfbfU, 0x31d7e6e6U, 0xc6844242U, 0xb8d06868U,
194e28a4053SRui Paulo     0xc3824141U, 0xb0299999U, 0x775a2d2dU, 0x111e0f0fU,
195e28a4053SRui Paulo     0xcb7bb0b0U, 0xfca85454U, 0xd66dbbbbU, 0x3a2c1616U,
196e28a4053SRui Paulo };
197e28a4053SRui Paulo const u32 Te2[256] = {
198e28a4053SRui Paulo     0x63a5c663U, 0x7c84f87cU, 0x7799ee77U, 0x7b8df67bU,
199e28a4053SRui Paulo     0xf20dfff2U, 0x6bbdd66bU, 0x6fb1de6fU, 0xc55491c5U,
200e28a4053SRui Paulo     0x30506030U, 0x01030201U, 0x67a9ce67U, 0x2b7d562bU,
201e28a4053SRui Paulo     0xfe19e7feU, 0xd762b5d7U, 0xabe64dabU, 0x769aec76U,
202e28a4053SRui Paulo     0xca458fcaU, 0x829d1f82U, 0xc94089c9U, 0x7d87fa7dU,
203e28a4053SRui Paulo     0xfa15effaU, 0x59ebb259U, 0x47c98e47U, 0xf00bfbf0U,
204e28a4053SRui Paulo     0xadec41adU, 0xd467b3d4U, 0xa2fd5fa2U, 0xafea45afU,
205e28a4053SRui Paulo     0x9cbf239cU, 0xa4f753a4U, 0x7296e472U, 0xc05b9bc0U,
206e28a4053SRui Paulo     0xb7c275b7U, 0xfd1ce1fdU, 0x93ae3d93U, 0x266a4c26U,
207e28a4053SRui Paulo     0x365a6c36U, 0x3f417e3fU, 0xf702f5f7U, 0xcc4f83ccU,
208e28a4053SRui Paulo     0x345c6834U, 0xa5f451a5U, 0xe534d1e5U, 0xf108f9f1U,
209e28a4053SRui Paulo     0x7193e271U, 0xd873abd8U, 0x31536231U, 0x153f2a15U,
210e28a4053SRui Paulo     0x040c0804U, 0xc75295c7U, 0x23654623U, 0xc35e9dc3U,
211e28a4053SRui Paulo     0x18283018U, 0x96a13796U, 0x050f0a05U, 0x9ab52f9aU,
212e28a4053SRui Paulo     0x07090e07U, 0x12362412U, 0x809b1b80U, 0xe23ddfe2U,
213e28a4053SRui Paulo     0xeb26cdebU, 0x27694e27U, 0xb2cd7fb2U, 0x759fea75U,
214e28a4053SRui Paulo     0x091b1209U, 0x839e1d83U, 0x2c74582cU, 0x1a2e341aU,
215e28a4053SRui Paulo     0x1b2d361bU, 0x6eb2dc6eU, 0x5aeeb45aU, 0xa0fb5ba0U,
216e28a4053SRui Paulo     0x52f6a452U, 0x3b4d763bU, 0xd661b7d6U, 0xb3ce7db3U,
217e28a4053SRui Paulo     0x297b5229U, 0xe33edde3U, 0x2f715e2fU, 0x84971384U,
218e28a4053SRui Paulo     0x53f5a653U, 0xd168b9d1U, 0x00000000U, 0xed2cc1edU,
219e28a4053SRui Paulo     0x20604020U, 0xfc1fe3fcU, 0xb1c879b1U, 0x5bedb65bU,
220e28a4053SRui Paulo     0x6abed46aU, 0xcb468dcbU, 0xbed967beU, 0x394b7239U,
221e28a4053SRui Paulo     0x4ade944aU, 0x4cd4984cU, 0x58e8b058U, 0xcf4a85cfU,
222e28a4053SRui Paulo     0xd06bbbd0U, 0xef2ac5efU, 0xaae54faaU, 0xfb16edfbU,
223e28a4053SRui Paulo     0x43c58643U, 0x4dd79a4dU, 0x33556633U, 0x85941185U,
224e28a4053SRui Paulo     0x45cf8a45U, 0xf910e9f9U, 0x02060402U, 0x7f81fe7fU,
225e28a4053SRui Paulo     0x50f0a050U, 0x3c44783cU, 0x9fba259fU, 0xa8e34ba8U,
226e28a4053SRui Paulo     0x51f3a251U, 0xa3fe5da3U, 0x40c08040U, 0x8f8a058fU,
227e28a4053SRui Paulo     0x92ad3f92U, 0x9dbc219dU, 0x38487038U, 0xf504f1f5U,
228e28a4053SRui Paulo     0xbcdf63bcU, 0xb6c177b6U, 0xda75afdaU, 0x21634221U,
229e28a4053SRui Paulo     0x10302010U, 0xff1ae5ffU, 0xf30efdf3U, 0xd26dbfd2U,
230e28a4053SRui Paulo     0xcd4c81cdU, 0x0c14180cU, 0x13352613U, 0xec2fc3ecU,
231e28a4053SRui Paulo     0x5fe1be5fU, 0x97a23597U, 0x44cc8844U, 0x17392e17U,
232e28a4053SRui Paulo     0xc45793c4U, 0xa7f255a7U, 0x7e82fc7eU, 0x3d477a3dU,
233e28a4053SRui Paulo     0x64acc864U, 0x5de7ba5dU, 0x192b3219U, 0x7395e673U,
234e28a4053SRui Paulo     0x60a0c060U, 0x81981981U, 0x4fd19e4fU, 0xdc7fa3dcU,
235e28a4053SRui Paulo     0x22664422U, 0x2a7e542aU, 0x90ab3b90U, 0x88830b88U,
236e28a4053SRui Paulo     0x46ca8c46U, 0xee29c7eeU, 0xb8d36bb8U, 0x143c2814U,
237e28a4053SRui Paulo     0xde79a7deU, 0x5ee2bc5eU, 0x0b1d160bU, 0xdb76addbU,
238e28a4053SRui Paulo     0xe03bdbe0U, 0x32566432U, 0x3a4e743aU, 0x0a1e140aU,
239e28a4053SRui Paulo     0x49db9249U, 0x060a0c06U, 0x246c4824U, 0x5ce4b85cU,
240e28a4053SRui Paulo     0xc25d9fc2U, 0xd36ebdd3U, 0xacef43acU, 0x62a6c462U,
241e28a4053SRui Paulo     0x91a83991U, 0x95a43195U, 0xe437d3e4U, 0x798bf279U,
242e28a4053SRui Paulo     0xe732d5e7U, 0xc8438bc8U, 0x37596e37U, 0x6db7da6dU,
243e28a4053SRui Paulo     0x8d8c018dU, 0xd564b1d5U, 0x4ed29c4eU, 0xa9e049a9U,
244e28a4053SRui Paulo     0x6cb4d86cU, 0x56faac56U, 0xf407f3f4U, 0xea25cfeaU,
245e28a4053SRui Paulo     0x65afca65U, 0x7a8ef47aU, 0xaee947aeU, 0x08181008U,
246e28a4053SRui Paulo     0xbad56fbaU, 0x7888f078U, 0x256f4a25U, 0x2e725c2eU,
247e28a4053SRui Paulo     0x1c24381cU, 0xa6f157a6U, 0xb4c773b4U, 0xc65197c6U,
248e28a4053SRui Paulo     0xe823cbe8U, 0xdd7ca1ddU, 0x749ce874U, 0x1f213e1fU,
249e28a4053SRui Paulo     0x4bdd964bU, 0xbddc61bdU, 0x8b860d8bU, 0x8a850f8aU,
250e28a4053SRui Paulo     0x7090e070U, 0x3e427c3eU, 0xb5c471b5U, 0x66aacc66U,
251e28a4053SRui Paulo     0x48d89048U, 0x03050603U, 0xf601f7f6U, 0x0e121c0eU,
252e28a4053SRui Paulo     0x61a3c261U, 0x355f6a35U, 0x57f9ae57U, 0xb9d069b9U,
253e28a4053SRui Paulo     0x86911786U, 0xc15899c1U, 0x1d273a1dU, 0x9eb9279eU,
254e28a4053SRui Paulo     0xe138d9e1U, 0xf813ebf8U, 0x98b32b98U, 0x11332211U,
255e28a4053SRui Paulo     0x69bbd269U, 0xd970a9d9U, 0x8e89078eU, 0x94a73394U,
256e28a4053SRui Paulo     0x9bb62d9bU, 0x1e223c1eU, 0x87921587U, 0xe920c9e9U,
257e28a4053SRui Paulo     0xce4987ceU, 0x55ffaa55U, 0x28785028U, 0xdf7aa5dfU,
258e28a4053SRui Paulo     0x8c8f038cU, 0xa1f859a1U, 0x89800989U, 0x0d171a0dU,
259e28a4053SRui Paulo     0xbfda65bfU, 0xe631d7e6U, 0x42c68442U, 0x68b8d068U,
260e28a4053SRui Paulo     0x41c38241U, 0x99b02999U, 0x2d775a2dU, 0x0f111e0fU,
261e28a4053SRui Paulo     0xb0cb7bb0U, 0x54fca854U, 0xbbd66dbbU, 0x163a2c16U,
262e28a4053SRui Paulo };
263e28a4053SRui Paulo const u32 Te3[256] = {
264e28a4053SRui Paulo 
265e28a4053SRui Paulo     0x6363a5c6U, 0x7c7c84f8U, 0x777799eeU, 0x7b7b8df6U,
266e28a4053SRui Paulo     0xf2f20dffU, 0x6b6bbdd6U, 0x6f6fb1deU, 0xc5c55491U,
267e28a4053SRui Paulo     0x30305060U, 0x01010302U, 0x6767a9ceU, 0x2b2b7d56U,
268e28a4053SRui Paulo     0xfefe19e7U, 0xd7d762b5U, 0xababe64dU, 0x76769aecU,
269e28a4053SRui Paulo     0xcaca458fU, 0x82829d1fU, 0xc9c94089U, 0x7d7d87faU,
270e28a4053SRui Paulo     0xfafa15efU, 0x5959ebb2U, 0x4747c98eU, 0xf0f00bfbU,
271e28a4053SRui Paulo     0xadadec41U, 0xd4d467b3U, 0xa2a2fd5fU, 0xafafea45U,
272e28a4053SRui Paulo     0x9c9cbf23U, 0xa4a4f753U, 0x727296e4U, 0xc0c05b9bU,
273e28a4053SRui Paulo     0xb7b7c275U, 0xfdfd1ce1U, 0x9393ae3dU, 0x26266a4cU,
274e28a4053SRui Paulo     0x36365a6cU, 0x3f3f417eU, 0xf7f702f5U, 0xcccc4f83U,
275e28a4053SRui Paulo     0x34345c68U, 0xa5a5f451U, 0xe5e534d1U, 0xf1f108f9U,
276e28a4053SRui Paulo     0x717193e2U, 0xd8d873abU, 0x31315362U, 0x15153f2aU,
277e28a4053SRui Paulo     0x04040c08U, 0xc7c75295U, 0x23236546U, 0xc3c35e9dU,
278e28a4053SRui Paulo     0x18182830U, 0x9696a137U, 0x05050f0aU, 0x9a9ab52fU,
279e28a4053SRui Paulo     0x0707090eU, 0x12123624U, 0x80809b1bU, 0xe2e23ddfU,
280e28a4053SRui Paulo     0xebeb26cdU, 0x2727694eU, 0xb2b2cd7fU, 0x75759feaU,
281e28a4053SRui Paulo     0x09091b12U, 0x83839e1dU, 0x2c2c7458U, 0x1a1a2e34U,
282e28a4053SRui Paulo     0x1b1b2d36U, 0x6e6eb2dcU, 0x5a5aeeb4U, 0xa0a0fb5bU,
283e28a4053SRui Paulo     0x5252f6a4U, 0x3b3b4d76U, 0xd6d661b7U, 0xb3b3ce7dU,
284e28a4053SRui Paulo     0x29297b52U, 0xe3e33eddU, 0x2f2f715eU, 0x84849713U,
285e28a4053SRui Paulo     0x5353f5a6U, 0xd1d168b9U, 0x00000000U, 0xeded2cc1U,
286e28a4053SRui Paulo     0x20206040U, 0xfcfc1fe3U, 0xb1b1c879U, 0x5b5bedb6U,
287e28a4053SRui Paulo     0x6a6abed4U, 0xcbcb468dU, 0xbebed967U, 0x39394b72U,
288e28a4053SRui Paulo     0x4a4ade94U, 0x4c4cd498U, 0x5858e8b0U, 0xcfcf4a85U,
289e28a4053SRui Paulo     0xd0d06bbbU, 0xefef2ac5U, 0xaaaae54fU, 0xfbfb16edU,
290e28a4053SRui Paulo     0x4343c586U, 0x4d4dd79aU, 0x33335566U, 0x85859411U,
291e28a4053SRui Paulo     0x4545cf8aU, 0xf9f910e9U, 0x02020604U, 0x7f7f81feU,
292e28a4053SRui Paulo     0x5050f0a0U, 0x3c3c4478U, 0x9f9fba25U, 0xa8a8e34bU,
293e28a4053SRui Paulo     0x5151f3a2U, 0xa3a3fe5dU, 0x4040c080U, 0x8f8f8a05U,
294e28a4053SRui Paulo     0x9292ad3fU, 0x9d9dbc21U, 0x38384870U, 0xf5f504f1U,
295e28a4053SRui Paulo     0xbcbcdf63U, 0xb6b6c177U, 0xdada75afU, 0x21216342U,
296e28a4053SRui Paulo     0x10103020U, 0xffff1ae5U, 0xf3f30efdU, 0xd2d26dbfU,
297e28a4053SRui Paulo     0xcdcd4c81U, 0x0c0c1418U, 0x13133526U, 0xecec2fc3U,
298e28a4053SRui Paulo     0x5f5fe1beU, 0x9797a235U, 0x4444cc88U, 0x1717392eU,
299e28a4053SRui Paulo     0xc4c45793U, 0xa7a7f255U, 0x7e7e82fcU, 0x3d3d477aU,
300e28a4053SRui Paulo     0x6464acc8U, 0x5d5de7baU, 0x19192b32U, 0x737395e6U,
301e28a4053SRui Paulo     0x6060a0c0U, 0x81819819U, 0x4f4fd19eU, 0xdcdc7fa3U,
302e28a4053SRui Paulo     0x22226644U, 0x2a2a7e54U, 0x9090ab3bU, 0x8888830bU,
303e28a4053SRui Paulo     0x4646ca8cU, 0xeeee29c7U, 0xb8b8d36bU, 0x14143c28U,
304e28a4053SRui Paulo     0xdede79a7U, 0x5e5ee2bcU, 0x0b0b1d16U, 0xdbdb76adU,
305e28a4053SRui Paulo     0xe0e03bdbU, 0x32325664U, 0x3a3a4e74U, 0x0a0a1e14U,
306e28a4053SRui Paulo     0x4949db92U, 0x06060a0cU, 0x24246c48U, 0x5c5ce4b8U,
307e28a4053SRui Paulo     0xc2c25d9fU, 0xd3d36ebdU, 0xacacef43U, 0x6262a6c4U,
308e28a4053SRui Paulo     0x9191a839U, 0x9595a431U, 0xe4e437d3U, 0x79798bf2U,
309e28a4053SRui Paulo     0xe7e732d5U, 0xc8c8438bU, 0x3737596eU, 0x6d6db7daU,
310e28a4053SRui Paulo     0x8d8d8c01U, 0xd5d564b1U, 0x4e4ed29cU, 0xa9a9e049U,
311e28a4053SRui Paulo     0x6c6cb4d8U, 0x5656faacU, 0xf4f407f3U, 0xeaea25cfU,
312e28a4053SRui Paulo     0x6565afcaU, 0x7a7a8ef4U, 0xaeaee947U, 0x08081810U,
313e28a4053SRui Paulo     0xbabad56fU, 0x787888f0U, 0x25256f4aU, 0x2e2e725cU,
314e28a4053SRui Paulo     0x1c1c2438U, 0xa6a6f157U, 0xb4b4c773U, 0xc6c65197U,
315e28a4053SRui Paulo     0xe8e823cbU, 0xdddd7ca1U, 0x74749ce8U, 0x1f1f213eU,
316e28a4053SRui Paulo     0x4b4bdd96U, 0xbdbddc61U, 0x8b8b860dU, 0x8a8a850fU,
317e28a4053SRui Paulo     0x707090e0U, 0x3e3e427cU, 0xb5b5c471U, 0x6666aaccU,
318e28a4053SRui Paulo     0x4848d890U, 0x03030506U, 0xf6f601f7U, 0x0e0e121cU,
319e28a4053SRui Paulo     0x6161a3c2U, 0x35355f6aU, 0x5757f9aeU, 0xb9b9d069U,
320e28a4053SRui Paulo     0x86869117U, 0xc1c15899U, 0x1d1d273aU, 0x9e9eb927U,
321e28a4053SRui Paulo     0xe1e138d9U, 0xf8f813ebU, 0x9898b32bU, 0x11113322U,
322e28a4053SRui Paulo     0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U,
323e28a4053SRui Paulo     0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U,
324e28a4053SRui Paulo     0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U,
325e28a4053SRui Paulo     0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU,
326e28a4053SRui Paulo     0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U,
327e28a4053SRui Paulo     0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU,
328e28a4053SRui Paulo     0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU,
329e28a4053SRui Paulo };
330e28a4053SRui Paulo const u32 Te4[256] = {
331e28a4053SRui Paulo     0x63636363U, 0x7c7c7c7cU, 0x77777777U, 0x7b7b7b7bU,
332e28a4053SRui Paulo     0xf2f2f2f2U, 0x6b6b6b6bU, 0x6f6f6f6fU, 0xc5c5c5c5U,
333e28a4053SRui Paulo     0x30303030U, 0x01010101U, 0x67676767U, 0x2b2b2b2bU,
334e28a4053SRui Paulo     0xfefefefeU, 0xd7d7d7d7U, 0xababababU, 0x76767676U,
335e28a4053SRui Paulo     0xcacacacaU, 0x82828282U, 0xc9c9c9c9U, 0x7d7d7d7dU,
336e28a4053SRui Paulo     0xfafafafaU, 0x59595959U, 0x47474747U, 0xf0f0f0f0U,
337e28a4053SRui Paulo     0xadadadadU, 0xd4d4d4d4U, 0xa2a2a2a2U, 0xafafafafU,
338e28a4053SRui Paulo     0x9c9c9c9cU, 0xa4a4a4a4U, 0x72727272U, 0xc0c0c0c0U,
339e28a4053SRui Paulo     0xb7b7b7b7U, 0xfdfdfdfdU, 0x93939393U, 0x26262626U,
340e28a4053SRui Paulo     0x36363636U, 0x3f3f3f3fU, 0xf7f7f7f7U, 0xccccccccU,
341e28a4053SRui Paulo     0x34343434U, 0xa5a5a5a5U, 0xe5e5e5e5U, 0xf1f1f1f1U,
342e28a4053SRui Paulo     0x71717171U, 0xd8d8d8d8U, 0x31313131U, 0x15151515U,
343e28a4053SRui Paulo     0x04040404U, 0xc7c7c7c7U, 0x23232323U, 0xc3c3c3c3U,
344e28a4053SRui Paulo     0x18181818U, 0x96969696U, 0x05050505U, 0x9a9a9a9aU,
345e28a4053SRui Paulo     0x07070707U, 0x12121212U, 0x80808080U, 0xe2e2e2e2U,
346e28a4053SRui Paulo     0xebebebebU, 0x27272727U, 0xb2b2b2b2U, 0x75757575U,
347e28a4053SRui Paulo     0x09090909U, 0x83838383U, 0x2c2c2c2cU, 0x1a1a1a1aU,
348e28a4053SRui Paulo     0x1b1b1b1bU, 0x6e6e6e6eU, 0x5a5a5a5aU, 0xa0a0a0a0U,
349e28a4053SRui Paulo     0x52525252U, 0x3b3b3b3bU, 0xd6d6d6d6U, 0xb3b3b3b3U,
350e28a4053SRui Paulo     0x29292929U, 0xe3e3e3e3U, 0x2f2f2f2fU, 0x84848484U,
351e28a4053SRui Paulo     0x53535353U, 0xd1d1d1d1U, 0x00000000U, 0xededededU,
352e28a4053SRui Paulo     0x20202020U, 0xfcfcfcfcU, 0xb1b1b1b1U, 0x5b5b5b5bU,
353e28a4053SRui Paulo     0x6a6a6a6aU, 0xcbcbcbcbU, 0xbebebebeU, 0x39393939U,
354e28a4053SRui Paulo     0x4a4a4a4aU, 0x4c4c4c4cU, 0x58585858U, 0xcfcfcfcfU,
355e28a4053SRui Paulo     0xd0d0d0d0U, 0xefefefefU, 0xaaaaaaaaU, 0xfbfbfbfbU,
356e28a4053SRui Paulo     0x43434343U, 0x4d4d4d4dU, 0x33333333U, 0x85858585U,
357e28a4053SRui Paulo     0x45454545U, 0xf9f9f9f9U, 0x02020202U, 0x7f7f7f7fU,
358e28a4053SRui Paulo     0x50505050U, 0x3c3c3c3cU, 0x9f9f9f9fU, 0xa8a8a8a8U,
359e28a4053SRui Paulo     0x51515151U, 0xa3a3a3a3U, 0x40404040U, 0x8f8f8f8fU,
360e28a4053SRui Paulo     0x92929292U, 0x9d9d9d9dU, 0x38383838U, 0xf5f5f5f5U,
361e28a4053SRui Paulo     0xbcbcbcbcU, 0xb6b6b6b6U, 0xdadadadaU, 0x21212121U,
362e28a4053SRui Paulo     0x10101010U, 0xffffffffU, 0xf3f3f3f3U, 0xd2d2d2d2U,
363e28a4053SRui Paulo     0xcdcdcdcdU, 0x0c0c0c0cU, 0x13131313U, 0xececececU,
364e28a4053SRui Paulo     0x5f5f5f5fU, 0x97979797U, 0x44444444U, 0x17171717U,
365e28a4053SRui Paulo     0xc4c4c4c4U, 0xa7a7a7a7U, 0x7e7e7e7eU, 0x3d3d3d3dU,
366e28a4053SRui Paulo     0x64646464U, 0x5d5d5d5dU, 0x19191919U, 0x73737373U,
367e28a4053SRui Paulo     0x60606060U, 0x81818181U, 0x4f4f4f4fU, 0xdcdcdcdcU,
368e28a4053SRui Paulo     0x22222222U, 0x2a2a2a2aU, 0x90909090U, 0x88888888U,
369e28a4053SRui Paulo     0x46464646U, 0xeeeeeeeeU, 0xb8b8b8b8U, 0x14141414U,
370e28a4053SRui Paulo     0xdedededeU, 0x5e5e5e5eU, 0x0b0b0b0bU, 0xdbdbdbdbU,
371e28a4053SRui Paulo     0xe0e0e0e0U, 0x32323232U, 0x3a3a3a3aU, 0x0a0a0a0aU,
372e28a4053SRui Paulo     0x49494949U, 0x06060606U, 0x24242424U, 0x5c5c5c5cU,
373e28a4053SRui Paulo     0xc2c2c2c2U, 0xd3d3d3d3U, 0xacacacacU, 0x62626262U,
374e28a4053SRui Paulo     0x91919191U, 0x95959595U, 0xe4e4e4e4U, 0x79797979U,
375e28a4053SRui Paulo     0xe7e7e7e7U, 0xc8c8c8c8U, 0x37373737U, 0x6d6d6d6dU,
376e28a4053SRui Paulo     0x8d8d8d8dU, 0xd5d5d5d5U, 0x4e4e4e4eU, 0xa9a9a9a9U,
377e28a4053SRui Paulo     0x6c6c6c6cU, 0x56565656U, 0xf4f4f4f4U, 0xeaeaeaeaU,
378e28a4053SRui Paulo     0x65656565U, 0x7a7a7a7aU, 0xaeaeaeaeU, 0x08080808U,
379e28a4053SRui Paulo     0xbabababaU, 0x78787878U, 0x25252525U, 0x2e2e2e2eU,
380e28a4053SRui Paulo     0x1c1c1c1cU, 0xa6a6a6a6U, 0xb4b4b4b4U, 0xc6c6c6c6U,
381e28a4053SRui Paulo     0xe8e8e8e8U, 0xddddddddU, 0x74747474U, 0x1f1f1f1fU,
382e28a4053SRui Paulo     0x4b4b4b4bU, 0xbdbdbdbdU, 0x8b8b8b8bU, 0x8a8a8a8aU,
383e28a4053SRui Paulo     0x70707070U, 0x3e3e3e3eU, 0xb5b5b5b5U, 0x66666666U,
384e28a4053SRui Paulo     0x48484848U, 0x03030303U, 0xf6f6f6f6U, 0x0e0e0e0eU,
385e28a4053SRui Paulo     0x61616161U, 0x35353535U, 0x57575757U, 0xb9b9b9b9U,
386e28a4053SRui Paulo     0x86868686U, 0xc1c1c1c1U, 0x1d1d1d1dU, 0x9e9e9e9eU,
387e28a4053SRui Paulo     0xe1e1e1e1U, 0xf8f8f8f8U, 0x98989898U, 0x11111111U,
388e28a4053SRui Paulo     0x69696969U, 0xd9d9d9d9U, 0x8e8e8e8eU, 0x94949494U,
389e28a4053SRui Paulo     0x9b9b9b9bU, 0x1e1e1e1eU, 0x87878787U, 0xe9e9e9e9U,
390e28a4053SRui Paulo     0xcecececeU, 0x55555555U, 0x28282828U, 0xdfdfdfdfU,
391e28a4053SRui Paulo     0x8c8c8c8cU, 0xa1a1a1a1U, 0x89898989U, 0x0d0d0d0dU,
392e28a4053SRui Paulo     0xbfbfbfbfU, 0xe6e6e6e6U, 0x42424242U, 0x68686868U,
393e28a4053SRui Paulo     0x41414141U, 0x99999999U, 0x2d2d2d2dU, 0x0f0f0f0fU,
394e28a4053SRui Paulo     0xb0b0b0b0U, 0x54545454U, 0xbbbbbbbbU, 0x16161616U,
395e28a4053SRui Paulo };
396e28a4053SRui Paulo #endif /* AES_SMALL_TABLES */
397e28a4053SRui Paulo const u32 Td0[256] = {
398e28a4053SRui Paulo     0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U,
399e28a4053SRui Paulo     0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U,
400e28a4053SRui Paulo     0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U,
401e28a4053SRui Paulo     0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU,
402e28a4053SRui Paulo     0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U,
403e28a4053SRui Paulo     0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U,
404e28a4053SRui Paulo     0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU,
405e28a4053SRui Paulo     0xd4be832dU, 0x587421d3U, 0x49e06929U, 0x8ec9c844U,
406e28a4053SRui Paulo     0x75c2896aU, 0xf48e7978U, 0x99583e6bU, 0x27b971ddU,
407e28a4053SRui Paulo     0xbee14fb6U, 0xf088ad17U, 0xc920ac66U, 0x7dce3ab4U,
408e28a4053SRui Paulo     0x63df4a18U, 0xe51a3182U, 0x97513360U, 0x62537f45U,
409e28a4053SRui Paulo     0xb16477e0U, 0xbb6bae84U, 0xfe81a01cU, 0xf9082b94U,
410e28a4053SRui Paulo     0x70486858U, 0x8f45fd19U, 0x94de6c87U, 0x527bf8b7U,
411e28a4053SRui Paulo     0xab73d323U, 0x724b02e2U, 0xe31f8f57U, 0x6655ab2aU,
412e28a4053SRui Paulo     0xb2eb2807U, 0x2fb5c203U, 0x86c57b9aU, 0xd33708a5U,
413e28a4053SRui Paulo     0x302887f2U, 0x23bfa5b2U, 0x02036abaU, 0xed16825cU,
414e28a4053SRui Paulo     0x8acf1c2bU, 0xa779b492U, 0xf307f2f0U, 0x4e69e2a1U,
415e28a4053SRui Paulo     0x65daf4cdU, 0x0605bed5U, 0xd134621fU, 0xc4a6fe8aU,
416e28a4053SRui Paulo     0x342e539dU, 0xa2f355a0U, 0x058ae132U, 0xa4f6eb75U,
417e28a4053SRui Paulo     0x0b83ec39U, 0x4060efaaU, 0x5e719f06U, 0xbd6e1051U,
418e28a4053SRui Paulo     0x3e218af9U, 0x96dd063dU, 0xdd3e05aeU, 0x4de6bd46U,
419e28a4053SRui Paulo     0x91548db5U, 0x71c45d05U, 0x0406d46fU, 0x605015ffU,
420e28a4053SRui Paulo     0x1998fb24U, 0xd6bde997U, 0x894043ccU, 0x67d99e77U,
421e28a4053SRui Paulo     0xb0e842bdU, 0x07898b88U, 0xe7195b38U, 0x79c8eedbU,
422e28a4053SRui Paulo     0xa17c0a47U, 0x7c420fe9U, 0xf8841ec9U, 0x00000000U,
423e28a4053SRui Paulo     0x09808683U, 0x322bed48U, 0x1e1170acU, 0x6c5a724eU,
424e28a4053SRui Paulo     0xfd0efffbU, 0x0f853856U, 0x3daed51eU, 0x362d3927U,
425e28a4053SRui Paulo     0x0a0fd964U, 0x685ca621U, 0x9b5b54d1U, 0x24362e3aU,
426e28a4053SRui Paulo     0x0c0a67b1U, 0x9357e70fU, 0xb4ee96d2U, 0x1b9b919eU,
427e28a4053SRui Paulo     0x80c0c54fU, 0x61dc20a2U, 0x5a774b69U, 0x1c121a16U,
428e28a4053SRui Paulo     0xe293ba0aU, 0xc0a02ae5U, 0x3c22e043U, 0x121b171dU,
429e28a4053SRui Paulo     0x0e090d0bU, 0xf28bc7adU, 0x2db6a8b9U, 0x141ea9c8U,
430e28a4053SRui Paulo     0x57f11985U, 0xaf75074cU, 0xee99ddbbU, 0xa37f60fdU,
431e28a4053SRui Paulo     0xf701269fU, 0x5c72f5bcU, 0x44663bc5U, 0x5bfb7e34U,
432e28a4053SRui Paulo     0x8b432976U, 0xcb23c6dcU, 0xb6edfc68U, 0xb8e4f163U,
433e28a4053SRui Paulo     0xd731dccaU, 0x42638510U, 0x13972240U, 0x84c61120U,
434e28a4053SRui Paulo     0x854a247dU, 0xd2bb3df8U, 0xaef93211U, 0xc729a16dU,
435e28a4053SRui Paulo     0x1d9e2f4bU, 0xdcb230f3U, 0x0d8652ecU, 0x77c1e3d0U,
436e28a4053SRui Paulo     0x2bb3166cU, 0xa970b999U, 0x119448faU, 0x47e96422U,
437e28a4053SRui Paulo     0xa8fc8cc4U, 0xa0f03f1aU, 0x567d2cd8U, 0x223390efU,
438e28a4053SRui Paulo     0x87494ec7U, 0xd938d1c1U, 0x8ccaa2feU, 0x98d40b36U,
439e28a4053SRui Paulo     0xa6f581cfU, 0xa57ade28U, 0xdab78e26U, 0x3fadbfa4U,
440e28a4053SRui Paulo     0x2c3a9de4U, 0x5078920dU, 0x6a5fcc9bU, 0x547e4662U,
441e28a4053SRui Paulo     0xf68d13c2U, 0x90d8b8e8U, 0x2e39f75eU, 0x82c3aff5U,
442e28a4053SRui Paulo     0x9f5d80beU, 0x69d0937cU, 0x6fd52da9U, 0xcf2512b3U,
443e28a4053SRui Paulo     0xc8ac993bU, 0x10187da7U, 0xe89c636eU, 0xdb3bbb7bU,
444e28a4053SRui Paulo     0xcd267809U, 0x6e5918f4U, 0xec9ab701U, 0x834f9aa8U,
445e28a4053SRui Paulo     0xe6956e65U, 0xaaffe67eU, 0x21bccf08U, 0xef15e8e6U,
446e28a4053SRui Paulo     0xbae79bd9U, 0x4a6f36ceU, 0xea9f09d4U, 0x29b07cd6U,
447e28a4053SRui Paulo     0x31a4b2afU, 0x2a3f2331U, 0xc6a59430U, 0x35a266c0U,
448e28a4053SRui Paulo     0x744ebc37U, 0xfc82caa6U, 0xe090d0b0U, 0x33a7d815U,
449e28a4053SRui Paulo     0xf104984aU, 0x41ecdaf7U, 0x7fcd500eU, 0x1791f62fU,
450e28a4053SRui Paulo     0x764dd68dU, 0x43efb04dU, 0xccaa4d54U, 0xe49604dfU,
451e28a4053SRui Paulo     0x9ed1b5e3U, 0x4c6a881bU, 0xc12c1fb8U, 0x4665517fU,
452e28a4053SRui Paulo     0x9d5eea04U, 0x018c355dU, 0xfa877473U, 0xfb0b412eU,
453e28a4053SRui Paulo     0xb3671d5aU, 0x92dbd252U, 0xe9105633U, 0x6dd64713U,
454e28a4053SRui Paulo     0x9ad7618cU, 0x37a10c7aU, 0x59f8148eU, 0xeb133c89U,
455e28a4053SRui Paulo     0xcea927eeU, 0xb761c935U, 0xe11ce5edU, 0x7a47b13cU,
456e28a4053SRui Paulo     0x9cd2df59U, 0x55f2733fU, 0x1814ce79U, 0x73c737bfU,
457e28a4053SRui Paulo     0x53f7cdeaU, 0x5ffdaa5bU, 0xdf3d6f14U, 0x7844db86U,
458e28a4053SRui Paulo     0xcaaff381U, 0xb968c43eU, 0x3824342cU, 0xc2a3405fU,
459e28a4053SRui Paulo     0x161dc372U, 0xbce2250cU, 0x283c498bU, 0xff0d9541U,
460e28a4053SRui Paulo     0x39a80171U, 0x080cb3deU, 0xd8b4e49cU, 0x6456c190U,
461e28a4053SRui Paulo     0x7bcb8461U, 0xd532b670U, 0x486c5c74U, 0xd0b85742U,
462e28a4053SRui Paulo };
463e28a4053SRui Paulo #ifndef AES_SMALL_TABLES
464e28a4053SRui Paulo const u32 Td1[256] = {
465e28a4053SRui Paulo     0x5051f4a7U, 0x537e4165U, 0xc31a17a4U, 0x963a275eU,
466e28a4053SRui Paulo     0xcb3bab6bU, 0xf11f9d45U, 0xabacfa58U, 0x934be303U,
467e28a4053SRui Paulo     0x552030faU, 0xf6ad766dU, 0x9188cc76U, 0x25f5024cU,
468e28a4053SRui Paulo     0xfc4fe5d7U, 0xd7c52acbU, 0x80263544U, 0x8fb562a3U,
469e28a4053SRui Paulo     0x49deb15aU, 0x6725ba1bU, 0x9845ea0eU, 0xe15dfec0U,
470e28a4053SRui Paulo     0x02c32f75U, 0x12814cf0U, 0xa38d4697U, 0xc66bd3f9U,
471e28a4053SRui Paulo     0xe7038f5fU, 0x9515929cU, 0xebbf6d7aU, 0xda955259U,
472e28a4053SRui Paulo     0x2dd4be83U, 0xd3587421U, 0x2949e069U, 0x448ec9c8U,
473e28a4053SRui Paulo     0x6a75c289U, 0x78f48e79U, 0x6b99583eU, 0xdd27b971U,
474e28a4053SRui Paulo     0xb6bee14fU, 0x17f088adU, 0x66c920acU, 0xb47dce3aU,
475e28a4053SRui Paulo     0x1863df4aU, 0x82e51a31U, 0x60975133U, 0x4562537fU,
476e28a4053SRui Paulo     0xe0b16477U, 0x84bb6baeU, 0x1cfe81a0U, 0x94f9082bU,
477e28a4053SRui Paulo     0x58704868U, 0x198f45fdU, 0x8794de6cU, 0xb7527bf8U,
478e28a4053SRui Paulo     0x23ab73d3U, 0xe2724b02U, 0x57e31f8fU, 0x2a6655abU,
479e28a4053SRui Paulo     0x07b2eb28U, 0x032fb5c2U, 0x9a86c57bU, 0xa5d33708U,
480e28a4053SRui Paulo     0xf2302887U, 0xb223bfa5U, 0xba02036aU, 0x5ced1682U,
481e28a4053SRui Paulo     0x2b8acf1cU, 0x92a779b4U, 0xf0f307f2U, 0xa14e69e2U,
482e28a4053SRui Paulo     0xcd65daf4U, 0xd50605beU, 0x1fd13462U, 0x8ac4a6feU,
483e28a4053SRui Paulo     0x9d342e53U, 0xa0a2f355U, 0x32058ae1U, 0x75a4f6ebU,
484e28a4053SRui Paulo     0x390b83ecU, 0xaa4060efU, 0x065e719fU, 0x51bd6e10U,
485e28a4053SRui Paulo     0xf93e218aU, 0x3d96dd06U, 0xaedd3e05U, 0x464de6bdU,
486e28a4053SRui Paulo     0xb591548dU, 0x0571c45dU, 0x6f0406d4U, 0xff605015U,
487e28a4053SRui Paulo     0x241998fbU, 0x97d6bde9U, 0xcc894043U, 0x7767d99eU,
488e28a4053SRui Paulo     0xbdb0e842U, 0x8807898bU, 0x38e7195bU, 0xdb79c8eeU,
489e28a4053SRui Paulo     0x47a17c0aU, 0xe97c420fU, 0xc9f8841eU, 0x00000000U,
490e28a4053SRui Paulo     0x83098086U, 0x48322bedU, 0xac1e1170U, 0x4e6c5a72U,
491e28a4053SRui Paulo     0xfbfd0effU, 0x560f8538U, 0x1e3daed5U, 0x27362d39U,
492e28a4053SRui Paulo     0x640a0fd9U, 0x21685ca6U, 0xd19b5b54U, 0x3a24362eU,
493e28a4053SRui Paulo     0xb10c0a67U, 0x0f9357e7U, 0xd2b4ee96U, 0x9e1b9b91U,
494e28a4053SRui Paulo     0x4f80c0c5U, 0xa261dc20U, 0x695a774bU, 0x161c121aU,
495e28a4053SRui Paulo     0x0ae293baU, 0xe5c0a02aU, 0x433c22e0U, 0x1d121b17U,
496e28a4053SRui Paulo     0x0b0e090dU, 0xadf28bc7U, 0xb92db6a8U, 0xc8141ea9U,
497e28a4053SRui Paulo     0x8557f119U, 0x4caf7507U, 0xbbee99ddU, 0xfda37f60U,
498e28a4053SRui Paulo     0x9ff70126U, 0xbc5c72f5U, 0xc544663bU, 0x345bfb7eU,
499e28a4053SRui Paulo     0x768b4329U, 0xdccb23c6U, 0x68b6edfcU, 0x63b8e4f1U,
500e28a4053SRui Paulo     0xcad731dcU, 0x10426385U, 0x40139722U, 0x2084c611U,
501e28a4053SRui Paulo     0x7d854a24U, 0xf8d2bb3dU, 0x11aef932U, 0x6dc729a1U,
502e28a4053SRui Paulo     0x4b1d9e2fU, 0xf3dcb230U, 0xec0d8652U, 0xd077c1e3U,
503e28a4053SRui Paulo     0x6c2bb316U, 0x99a970b9U, 0xfa119448U, 0x2247e964U,
504e28a4053SRui Paulo     0xc4a8fc8cU, 0x1aa0f03fU, 0xd8567d2cU, 0xef223390U,
505e28a4053SRui Paulo     0xc787494eU, 0xc1d938d1U, 0xfe8ccaa2U, 0x3698d40bU,
506e28a4053SRui Paulo     0xcfa6f581U, 0x28a57adeU, 0x26dab78eU, 0xa43fadbfU,
507e28a4053SRui Paulo     0xe42c3a9dU, 0x0d507892U, 0x9b6a5fccU, 0x62547e46U,
508e28a4053SRui Paulo     0xc2f68d13U, 0xe890d8b8U, 0x5e2e39f7U, 0xf582c3afU,
509e28a4053SRui Paulo     0xbe9f5d80U, 0x7c69d093U, 0xa96fd52dU, 0xb3cf2512U,
510e28a4053SRui Paulo     0x3bc8ac99U, 0xa710187dU, 0x6ee89c63U, 0x7bdb3bbbU,
511e28a4053SRui Paulo     0x09cd2678U, 0xf46e5918U, 0x01ec9ab7U, 0xa8834f9aU,
512e28a4053SRui Paulo     0x65e6956eU, 0x7eaaffe6U, 0x0821bccfU, 0xe6ef15e8U,
513e28a4053SRui Paulo     0xd9bae79bU, 0xce4a6f36U, 0xd4ea9f09U, 0xd629b07cU,
514e28a4053SRui Paulo     0xaf31a4b2U, 0x312a3f23U, 0x30c6a594U, 0xc035a266U,
515e28a4053SRui Paulo     0x37744ebcU, 0xa6fc82caU, 0xb0e090d0U, 0x1533a7d8U,
516e28a4053SRui Paulo     0x4af10498U, 0xf741ecdaU, 0x0e7fcd50U, 0x2f1791f6U,
517e28a4053SRui Paulo     0x8d764dd6U, 0x4d43efb0U, 0x54ccaa4dU, 0xdfe49604U,
518e28a4053SRui Paulo     0xe39ed1b5U, 0x1b4c6a88U, 0xb8c12c1fU, 0x7f466551U,
519e28a4053SRui Paulo     0x049d5eeaU, 0x5d018c35U, 0x73fa8774U, 0x2efb0b41U,
520e28a4053SRui Paulo     0x5ab3671dU, 0x5292dbd2U, 0x33e91056U, 0x136dd647U,
521e28a4053SRui Paulo     0x8c9ad761U, 0x7a37a10cU, 0x8e59f814U, 0x89eb133cU,
522e28a4053SRui Paulo     0xeecea927U, 0x35b761c9U, 0xede11ce5U, 0x3c7a47b1U,
523e28a4053SRui Paulo     0x599cd2dfU, 0x3f55f273U, 0x791814ceU, 0xbf73c737U,
524e28a4053SRui Paulo     0xea53f7cdU, 0x5b5ffdaaU, 0x14df3d6fU, 0x867844dbU,
525e28a4053SRui Paulo     0x81caaff3U, 0x3eb968c4U, 0x2c382434U, 0x5fc2a340U,
526e28a4053SRui Paulo     0x72161dc3U, 0x0cbce225U, 0x8b283c49U, 0x41ff0d95U,
527e28a4053SRui Paulo     0x7139a801U, 0xde080cb3U, 0x9cd8b4e4U, 0x906456c1U,
528e28a4053SRui Paulo     0x617bcb84U, 0x70d532b6U, 0x74486c5cU, 0x42d0b857U,
529e28a4053SRui Paulo };
530e28a4053SRui Paulo const u32 Td2[256] = {
531e28a4053SRui Paulo     0xa75051f4U, 0x65537e41U, 0xa4c31a17U, 0x5e963a27U,
532e28a4053SRui Paulo     0x6bcb3babU, 0x45f11f9dU, 0x58abacfaU, 0x03934be3U,
533e28a4053SRui Paulo     0xfa552030U, 0x6df6ad76U, 0x769188ccU, 0x4c25f502U,
534e28a4053SRui Paulo     0xd7fc4fe5U, 0xcbd7c52aU, 0x44802635U, 0xa38fb562U,
535e28a4053SRui Paulo     0x5a49deb1U, 0x1b6725baU, 0x0e9845eaU, 0xc0e15dfeU,
536e28a4053SRui Paulo     0x7502c32fU, 0xf012814cU, 0x97a38d46U, 0xf9c66bd3U,
537e28a4053SRui Paulo     0x5fe7038fU, 0x9c951592U, 0x7aebbf6dU, 0x59da9552U,
538e28a4053SRui Paulo     0x832dd4beU, 0x21d35874U, 0x692949e0U, 0xc8448ec9U,
539e28a4053SRui Paulo     0x896a75c2U, 0x7978f48eU, 0x3e6b9958U, 0x71dd27b9U,
540e28a4053SRui Paulo     0x4fb6bee1U, 0xad17f088U, 0xac66c920U, 0x3ab47dceU,
541e28a4053SRui Paulo     0x4a1863dfU, 0x3182e51aU, 0x33609751U, 0x7f456253U,
542e28a4053SRui Paulo     0x77e0b164U, 0xae84bb6bU, 0xa01cfe81U, 0x2b94f908U,
543e28a4053SRui Paulo     0x68587048U, 0xfd198f45U, 0x6c8794deU, 0xf8b7527bU,
544e28a4053SRui Paulo     0xd323ab73U, 0x02e2724bU, 0x8f57e31fU, 0xab2a6655U,
545e28a4053SRui Paulo     0x2807b2ebU, 0xc2032fb5U, 0x7b9a86c5U, 0x08a5d337U,
546e28a4053SRui Paulo     0x87f23028U, 0xa5b223bfU, 0x6aba0203U, 0x825ced16U,
547e28a4053SRui Paulo     0x1c2b8acfU, 0xb492a779U, 0xf2f0f307U, 0xe2a14e69U,
548e28a4053SRui Paulo     0xf4cd65daU, 0xbed50605U, 0x621fd134U, 0xfe8ac4a6U,
549e28a4053SRui Paulo     0x539d342eU, 0x55a0a2f3U, 0xe132058aU, 0xeb75a4f6U,
550e28a4053SRui Paulo     0xec390b83U, 0xefaa4060U, 0x9f065e71U, 0x1051bd6eU,
551e28a4053SRui Paulo 
552e28a4053SRui Paulo     0x8af93e21U, 0x063d96ddU, 0x05aedd3eU, 0xbd464de6U,
553e28a4053SRui Paulo     0x8db59154U, 0x5d0571c4U, 0xd46f0406U, 0x15ff6050U,
554e28a4053SRui Paulo     0xfb241998U, 0xe997d6bdU, 0x43cc8940U, 0x9e7767d9U,
555e28a4053SRui Paulo     0x42bdb0e8U, 0x8b880789U, 0x5b38e719U, 0xeedb79c8U,
556e28a4053SRui Paulo     0x0a47a17cU, 0x0fe97c42U, 0x1ec9f884U, 0x00000000U,
557e28a4053SRui Paulo     0x86830980U, 0xed48322bU, 0x70ac1e11U, 0x724e6c5aU,
558e28a4053SRui Paulo     0xfffbfd0eU, 0x38560f85U, 0xd51e3daeU, 0x3927362dU,
559e28a4053SRui Paulo     0xd9640a0fU, 0xa621685cU, 0x54d19b5bU, 0x2e3a2436U,
560e28a4053SRui Paulo     0x67b10c0aU, 0xe70f9357U, 0x96d2b4eeU, 0x919e1b9bU,
561e28a4053SRui Paulo     0xc54f80c0U, 0x20a261dcU, 0x4b695a77U, 0x1a161c12U,
562e28a4053SRui Paulo     0xba0ae293U, 0x2ae5c0a0U, 0xe0433c22U, 0x171d121bU,
563e28a4053SRui Paulo     0x0d0b0e09U, 0xc7adf28bU, 0xa8b92db6U, 0xa9c8141eU,
564e28a4053SRui Paulo     0x198557f1U, 0x074caf75U, 0xddbbee99U, 0x60fda37fU,
565e28a4053SRui Paulo     0x269ff701U, 0xf5bc5c72U, 0x3bc54466U, 0x7e345bfbU,
566e28a4053SRui Paulo     0x29768b43U, 0xc6dccb23U, 0xfc68b6edU, 0xf163b8e4U,
567e28a4053SRui Paulo     0xdccad731U, 0x85104263U, 0x22401397U, 0x112084c6U,
568e28a4053SRui Paulo     0x247d854aU, 0x3df8d2bbU, 0x3211aef9U, 0xa16dc729U,
569e28a4053SRui Paulo     0x2f4b1d9eU, 0x30f3dcb2U, 0x52ec0d86U, 0xe3d077c1U,
570e28a4053SRui Paulo     0x166c2bb3U, 0xb999a970U, 0x48fa1194U, 0x642247e9U,
571e28a4053SRui Paulo     0x8cc4a8fcU, 0x3f1aa0f0U, 0x2cd8567dU, 0x90ef2233U,
572e28a4053SRui Paulo     0x4ec78749U, 0xd1c1d938U, 0xa2fe8ccaU, 0x0b3698d4U,
573e28a4053SRui Paulo     0x81cfa6f5U, 0xde28a57aU, 0x8e26dab7U, 0xbfa43fadU,
574e28a4053SRui Paulo     0x9de42c3aU, 0x920d5078U, 0xcc9b6a5fU, 0x4662547eU,
575e28a4053SRui Paulo     0x13c2f68dU, 0xb8e890d8U, 0xf75e2e39U, 0xaff582c3U,
576e28a4053SRui Paulo     0x80be9f5dU, 0x937c69d0U, 0x2da96fd5U, 0x12b3cf25U,
577e28a4053SRui Paulo     0x993bc8acU, 0x7da71018U, 0x636ee89cU, 0xbb7bdb3bU,
578e28a4053SRui Paulo     0x7809cd26U, 0x18f46e59U, 0xb701ec9aU, 0x9aa8834fU,
579e28a4053SRui Paulo     0x6e65e695U, 0xe67eaaffU, 0xcf0821bcU, 0xe8e6ef15U,
580e28a4053SRui Paulo     0x9bd9bae7U, 0x36ce4a6fU, 0x09d4ea9fU, 0x7cd629b0U,
581e28a4053SRui Paulo     0xb2af31a4U, 0x23312a3fU, 0x9430c6a5U, 0x66c035a2U,
582e28a4053SRui Paulo     0xbc37744eU, 0xcaa6fc82U, 0xd0b0e090U, 0xd81533a7U,
583e28a4053SRui Paulo     0x984af104U, 0xdaf741ecU, 0x500e7fcdU, 0xf62f1791U,
584e28a4053SRui Paulo     0xd68d764dU, 0xb04d43efU, 0x4d54ccaaU, 0x04dfe496U,
585e28a4053SRui Paulo     0xb5e39ed1U, 0x881b4c6aU, 0x1fb8c12cU, 0x517f4665U,
586e28a4053SRui Paulo     0xea049d5eU, 0x355d018cU, 0x7473fa87U, 0x412efb0bU,
587e28a4053SRui Paulo     0x1d5ab367U, 0xd25292dbU, 0x5633e910U, 0x47136dd6U,
588e28a4053SRui Paulo     0x618c9ad7U, 0x0c7a37a1U, 0x148e59f8U, 0x3c89eb13U,
589e28a4053SRui Paulo     0x27eecea9U, 0xc935b761U, 0xe5ede11cU, 0xb13c7a47U,
590e28a4053SRui Paulo     0xdf599cd2U, 0x733f55f2U, 0xce791814U, 0x37bf73c7U,
591e28a4053SRui Paulo     0xcdea53f7U, 0xaa5b5ffdU, 0x6f14df3dU, 0xdb867844U,
592e28a4053SRui Paulo     0xf381caafU, 0xc43eb968U, 0x342c3824U, 0x405fc2a3U,
593e28a4053SRui Paulo     0xc372161dU, 0x250cbce2U, 0x498b283cU, 0x9541ff0dU,
594e28a4053SRui Paulo     0x017139a8U, 0xb3de080cU, 0xe49cd8b4U, 0xc1906456U,
595e28a4053SRui Paulo     0x84617bcbU, 0xb670d532U, 0x5c74486cU, 0x5742d0b8U,
596e28a4053SRui Paulo };
597e28a4053SRui Paulo const u32 Td3[256] = {
598e28a4053SRui Paulo     0xf4a75051U, 0x4165537eU, 0x17a4c31aU, 0x275e963aU,
599e28a4053SRui Paulo     0xab6bcb3bU, 0x9d45f11fU, 0xfa58abacU, 0xe303934bU,
600e28a4053SRui Paulo     0x30fa5520U, 0x766df6adU, 0xcc769188U, 0x024c25f5U,
601e28a4053SRui Paulo     0xe5d7fc4fU, 0x2acbd7c5U, 0x35448026U, 0x62a38fb5U,
602e28a4053SRui Paulo     0xb15a49deU, 0xba1b6725U, 0xea0e9845U, 0xfec0e15dU,
603e28a4053SRui Paulo     0x2f7502c3U, 0x4cf01281U, 0x4697a38dU, 0xd3f9c66bU,
604e28a4053SRui Paulo     0x8f5fe703U, 0x929c9515U, 0x6d7aebbfU, 0x5259da95U,
605e28a4053SRui Paulo     0xbe832dd4U, 0x7421d358U, 0xe0692949U, 0xc9c8448eU,
606e28a4053SRui Paulo     0xc2896a75U, 0x8e7978f4U, 0x583e6b99U, 0xb971dd27U,
607e28a4053SRui Paulo     0xe14fb6beU, 0x88ad17f0U, 0x20ac66c9U, 0xce3ab47dU,
608e28a4053SRui Paulo     0xdf4a1863U, 0x1a3182e5U, 0x51336097U, 0x537f4562U,
609e28a4053SRui Paulo     0x6477e0b1U, 0x6bae84bbU, 0x81a01cfeU, 0x082b94f9U,
610e28a4053SRui Paulo     0x48685870U, 0x45fd198fU, 0xde6c8794U, 0x7bf8b752U,
611e28a4053SRui Paulo     0x73d323abU, 0x4b02e272U, 0x1f8f57e3U, 0x55ab2a66U,
612e28a4053SRui Paulo     0xeb2807b2U, 0xb5c2032fU, 0xc57b9a86U, 0x3708a5d3U,
613e28a4053SRui Paulo     0x2887f230U, 0xbfa5b223U, 0x036aba02U, 0x16825cedU,
614e28a4053SRui Paulo     0xcf1c2b8aU, 0x79b492a7U, 0x07f2f0f3U, 0x69e2a14eU,
615e28a4053SRui Paulo     0xdaf4cd65U, 0x05bed506U, 0x34621fd1U, 0xa6fe8ac4U,
616e28a4053SRui Paulo     0x2e539d34U, 0xf355a0a2U, 0x8ae13205U, 0xf6eb75a4U,
617e28a4053SRui Paulo     0x83ec390bU, 0x60efaa40U, 0x719f065eU, 0x6e1051bdU,
618e28a4053SRui Paulo     0x218af93eU, 0xdd063d96U, 0x3e05aeddU, 0xe6bd464dU,
619e28a4053SRui Paulo     0x548db591U, 0xc45d0571U, 0x06d46f04U, 0x5015ff60U,
620e28a4053SRui Paulo     0x98fb2419U, 0xbde997d6U, 0x4043cc89U, 0xd99e7767U,
621e28a4053SRui Paulo     0xe842bdb0U, 0x898b8807U, 0x195b38e7U, 0xc8eedb79U,
622e28a4053SRui Paulo     0x7c0a47a1U, 0x420fe97cU, 0x841ec9f8U, 0x00000000U,
623e28a4053SRui Paulo     0x80868309U, 0x2bed4832U, 0x1170ac1eU, 0x5a724e6cU,
624e28a4053SRui Paulo     0x0efffbfdU, 0x8538560fU, 0xaed51e3dU, 0x2d392736U,
625e28a4053SRui Paulo     0x0fd9640aU, 0x5ca62168U, 0x5b54d19bU, 0x362e3a24U,
626e28a4053SRui Paulo     0x0a67b10cU, 0x57e70f93U, 0xee96d2b4U, 0x9b919e1bU,
627e28a4053SRui Paulo     0xc0c54f80U, 0xdc20a261U, 0x774b695aU, 0x121a161cU,
628e28a4053SRui Paulo     0x93ba0ae2U, 0xa02ae5c0U, 0x22e0433cU, 0x1b171d12U,
629e28a4053SRui Paulo     0x090d0b0eU, 0x8bc7adf2U, 0xb6a8b92dU, 0x1ea9c814U,
630e28a4053SRui Paulo     0xf1198557U, 0x75074cafU, 0x99ddbbeeU, 0x7f60fda3U,
631e28a4053SRui Paulo     0x01269ff7U, 0x72f5bc5cU, 0x663bc544U, 0xfb7e345bU,
632e28a4053SRui Paulo     0x4329768bU, 0x23c6dccbU, 0xedfc68b6U, 0xe4f163b8U,
633e28a4053SRui Paulo     0x31dccad7U, 0x63851042U, 0x97224013U, 0xc6112084U,
634e28a4053SRui Paulo     0x4a247d85U, 0xbb3df8d2U, 0xf93211aeU, 0x29a16dc7U,
635e28a4053SRui Paulo     0x9e2f4b1dU, 0xb230f3dcU, 0x8652ec0dU, 0xc1e3d077U,
636e28a4053SRui Paulo     0xb3166c2bU, 0x70b999a9U, 0x9448fa11U, 0xe9642247U,
637e28a4053SRui Paulo     0xfc8cc4a8U, 0xf03f1aa0U, 0x7d2cd856U, 0x3390ef22U,
638e28a4053SRui Paulo     0x494ec787U, 0x38d1c1d9U, 0xcaa2fe8cU, 0xd40b3698U,
639e28a4053SRui Paulo     0xf581cfa6U, 0x7ade28a5U, 0xb78e26daU, 0xadbfa43fU,
640e28a4053SRui Paulo     0x3a9de42cU, 0x78920d50U, 0x5fcc9b6aU, 0x7e466254U,
641e28a4053SRui Paulo     0x8d13c2f6U, 0xd8b8e890U, 0x39f75e2eU, 0xc3aff582U,
642e28a4053SRui Paulo     0x5d80be9fU, 0xd0937c69U, 0xd52da96fU, 0x2512b3cfU,
643e28a4053SRui Paulo     0xac993bc8U, 0x187da710U, 0x9c636ee8U, 0x3bbb7bdbU,
644e28a4053SRui Paulo     0x267809cdU, 0x5918f46eU, 0x9ab701ecU, 0x4f9aa883U,
645e28a4053SRui Paulo     0x956e65e6U, 0xffe67eaaU, 0xbccf0821U, 0x15e8e6efU,
646e28a4053SRui Paulo     0xe79bd9baU, 0x6f36ce4aU, 0x9f09d4eaU, 0xb07cd629U,
647e28a4053SRui Paulo     0xa4b2af31U, 0x3f23312aU, 0xa59430c6U, 0xa266c035U,
648e28a4053SRui Paulo     0x4ebc3774U, 0x82caa6fcU, 0x90d0b0e0U, 0xa7d81533U,
649e28a4053SRui Paulo     0x04984af1U, 0xecdaf741U, 0xcd500e7fU, 0x91f62f17U,
650e28a4053SRui Paulo     0x4dd68d76U, 0xefb04d43U, 0xaa4d54ccU, 0x9604dfe4U,
651e28a4053SRui Paulo     0xd1b5e39eU, 0x6a881b4cU, 0x2c1fb8c1U, 0x65517f46U,
652e28a4053SRui Paulo     0x5eea049dU, 0x8c355d01U, 0x877473faU, 0x0b412efbU,
653e28a4053SRui Paulo     0x671d5ab3U, 0xdbd25292U, 0x105633e9U, 0xd647136dU,
654e28a4053SRui Paulo     0xd7618c9aU, 0xa10c7a37U, 0xf8148e59U, 0x133c89ebU,
655e28a4053SRui Paulo     0xa927eeceU, 0x61c935b7U, 0x1ce5ede1U, 0x47b13c7aU,
656e28a4053SRui Paulo     0xd2df599cU, 0xf2733f55U, 0x14ce7918U, 0xc737bf73U,
657e28a4053SRui Paulo     0xf7cdea53U, 0xfdaa5b5fU, 0x3d6f14dfU, 0x44db8678U,
658e28a4053SRui Paulo     0xaff381caU, 0x68c43eb9U, 0x24342c38U, 0xa3405fc2U,
659e28a4053SRui Paulo     0x1dc37216U, 0xe2250cbcU, 0x3c498b28U, 0x0d9541ffU,
660e28a4053SRui Paulo     0xa8017139U, 0x0cb3de08U, 0xb4e49cd8U, 0x56c19064U,
661e28a4053SRui Paulo     0xcb84617bU, 0x32b670d5U, 0x6c5c7448U, 0xb85742d0U,
662e28a4053SRui Paulo };
663e28a4053SRui Paulo const u32 Td4[256] = {
664e28a4053SRui Paulo     0x52525252U, 0x09090909U, 0x6a6a6a6aU, 0xd5d5d5d5U,
665e28a4053SRui Paulo     0x30303030U, 0x36363636U, 0xa5a5a5a5U, 0x38383838U,
666e28a4053SRui Paulo     0xbfbfbfbfU, 0x40404040U, 0xa3a3a3a3U, 0x9e9e9e9eU,
667e28a4053SRui Paulo     0x81818181U, 0xf3f3f3f3U, 0xd7d7d7d7U, 0xfbfbfbfbU,
668e28a4053SRui Paulo     0x7c7c7c7cU, 0xe3e3e3e3U, 0x39393939U, 0x82828282U,
669e28a4053SRui Paulo     0x9b9b9b9bU, 0x2f2f2f2fU, 0xffffffffU, 0x87878787U,
670e28a4053SRui Paulo     0x34343434U, 0x8e8e8e8eU, 0x43434343U, 0x44444444U,
671e28a4053SRui Paulo     0xc4c4c4c4U, 0xdedededeU, 0xe9e9e9e9U, 0xcbcbcbcbU,
672e28a4053SRui Paulo     0x54545454U, 0x7b7b7b7bU, 0x94949494U, 0x32323232U,
673e28a4053SRui Paulo     0xa6a6a6a6U, 0xc2c2c2c2U, 0x23232323U, 0x3d3d3d3dU,
674e28a4053SRui Paulo     0xeeeeeeeeU, 0x4c4c4c4cU, 0x95959595U, 0x0b0b0b0bU,
675e28a4053SRui Paulo     0x42424242U, 0xfafafafaU, 0xc3c3c3c3U, 0x4e4e4e4eU,
676e28a4053SRui Paulo     0x08080808U, 0x2e2e2e2eU, 0xa1a1a1a1U, 0x66666666U,
677e28a4053SRui Paulo     0x28282828U, 0xd9d9d9d9U, 0x24242424U, 0xb2b2b2b2U,
678e28a4053SRui Paulo     0x76767676U, 0x5b5b5b5bU, 0xa2a2a2a2U, 0x49494949U,
679e28a4053SRui Paulo     0x6d6d6d6dU, 0x8b8b8b8bU, 0xd1d1d1d1U, 0x25252525U,
680e28a4053SRui Paulo     0x72727272U, 0xf8f8f8f8U, 0xf6f6f6f6U, 0x64646464U,
681e28a4053SRui Paulo     0x86868686U, 0x68686868U, 0x98989898U, 0x16161616U,
682e28a4053SRui Paulo     0xd4d4d4d4U, 0xa4a4a4a4U, 0x5c5c5c5cU, 0xccccccccU,
683e28a4053SRui Paulo     0x5d5d5d5dU, 0x65656565U, 0xb6b6b6b6U, 0x92929292U,
684e28a4053SRui Paulo     0x6c6c6c6cU, 0x70707070U, 0x48484848U, 0x50505050U,
685e28a4053SRui Paulo     0xfdfdfdfdU, 0xededededU, 0xb9b9b9b9U, 0xdadadadaU,
686e28a4053SRui Paulo     0x5e5e5e5eU, 0x15151515U, 0x46464646U, 0x57575757U,
687e28a4053SRui Paulo     0xa7a7a7a7U, 0x8d8d8d8dU, 0x9d9d9d9dU, 0x84848484U,
688e28a4053SRui Paulo     0x90909090U, 0xd8d8d8d8U, 0xababababU, 0x00000000U,
689e28a4053SRui Paulo     0x8c8c8c8cU, 0xbcbcbcbcU, 0xd3d3d3d3U, 0x0a0a0a0aU,
690e28a4053SRui Paulo     0xf7f7f7f7U, 0xe4e4e4e4U, 0x58585858U, 0x05050505U,
691e28a4053SRui Paulo     0xb8b8b8b8U, 0xb3b3b3b3U, 0x45454545U, 0x06060606U,
692e28a4053SRui Paulo     0xd0d0d0d0U, 0x2c2c2c2cU, 0x1e1e1e1eU, 0x8f8f8f8fU,
693e28a4053SRui Paulo     0xcacacacaU, 0x3f3f3f3fU, 0x0f0f0f0fU, 0x02020202U,
694e28a4053SRui Paulo     0xc1c1c1c1U, 0xafafafafU, 0xbdbdbdbdU, 0x03030303U,
695e28a4053SRui Paulo     0x01010101U, 0x13131313U, 0x8a8a8a8aU, 0x6b6b6b6bU,
696e28a4053SRui Paulo     0x3a3a3a3aU, 0x91919191U, 0x11111111U, 0x41414141U,
697e28a4053SRui Paulo     0x4f4f4f4fU, 0x67676767U, 0xdcdcdcdcU, 0xeaeaeaeaU,
698e28a4053SRui Paulo     0x97979797U, 0xf2f2f2f2U, 0xcfcfcfcfU, 0xcecececeU,
699e28a4053SRui Paulo     0xf0f0f0f0U, 0xb4b4b4b4U, 0xe6e6e6e6U, 0x73737373U,
700e28a4053SRui Paulo     0x96969696U, 0xacacacacU, 0x74747474U, 0x22222222U,
701e28a4053SRui Paulo     0xe7e7e7e7U, 0xadadadadU, 0x35353535U, 0x85858585U,
702e28a4053SRui Paulo     0xe2e2e2e2U, 0xf9f9f9f9U, 0x37373737U, 0xe8e8e8e8U,
703e28a4053SRui Paulo     0x1c1c1c1cU, 0x75757575U, 0xdfdfdfdfU, 0x6e6e6e6eU,
704e28a4053SRui Paulo     0x47474747U, 0xf1f1f1f1U, 0x1a1a1a1aU, 0x71717171U,
705e28a4053SRui Paulo     0x1d1d1d1dU, 0x29292929U, 0xc5c5c5c5U, 0x89898989U,
706e28a4053SRui Paulo     0x6f6f6f6fU, 0xb7b7b7b7U, 0x62626262U, 0x0e0e0e0eU,
707e28a4053SRui Paulo     0xaaaaaaaaU, 0x18181818U, 0xbebebebeU, 0x1b1b1b1bU,
708e28a4053SRui Paulo     0xfcfcfcfcU, 0x56565656U, 0x3e3e3e3eU, 0x4b4b4b4bU,
709e28a4053SRui Paulo     0xc6c6c6c6U, 0xd2d2d2d2U, 0x79797979U, 0x20202020U,
710e28a4053SRui Paulo     0x9a9a9a9aU, 0xdbdbdbdbU, 0xc0c0c0c0U, 0xfefefefeU,
711e28a4053SRui Paulo     0x78787878U, 0xcdcdcdcdU, 0x5a5a5a5aU, 0xf4f4f4f4U,
712e28a4053SRui Paulo     0x1f1f1f1fU, 0xddddddddU, 0xa8a8a8a8U, 0x33333333U,
713e28a4053SRui Paulo     0x88888888U, 0x07070707U, 0xc7c7c7c7U, 0x31313131U,
714e28a4053SRui Paulo     0xb1b1b1b1U, 0x12121212U, 0x10101010U, 0x59595959U,
715e28a4053SRui Paulo     0x27272727U, 0x80808080U, 0xececececU, 0x5f5f5f5fU,
716e28a4053SRui Paulo     0x60606060U, 0x51515151U, 0x7f7f7f7fU, 0xa9a9a9a9U,
717e28a4053SRui Paulo     0x19191919U, 0xb5b5b5b5U, 0x4a4a4a4aU, 0x0d0d0d0dU,
718e28a4053SRui Paulo     0x2d2d2d2dU, 0xe5e5e5e5U, 0x7a7a7a7aU, 0x9f9f9f9fU,
719e28a4053SRui Paulo     0x93939393U, 0xc9c9c9c9U, 0x9c9c9c9cU, 0xefefefefU,
720e28a4053SRui Paulo     0xa0a0a0a0U, 0xe0e0e0e0U, 0x3b3b3b3bU, 0x4d4d4d4dU,
721e28a4053SRui Paulo     0xaeaeaeaeU, 0x2a2a2a2aU, 0xf5f5f5f5U, 0xb0b0b0b0U,
722e28a4053SRui Paulo     0xc8c8c8c8U, 0xebebebebU, 0xbbbbbbbbU, 0x3c3c3c3cU,
723e28a4053SRui Paulo     0x83838383U, 0x53535353U, 0x99999999U, 0x61616161U,
724e28a4053SRui Paulo     0x17171717U, 0x2b2b2b2bU, 0x04040404U, 0x7e7e7e7eU,
725e28a4053SRui Paulo     0xbabababaU, 0x77777777U, 0xd6d6d6d6U, 0x26262626U,
726e28a4053SRui Paulo     0xe1e1e1e1U, 0x69696969U, 0x14141414U, 0x63636363U,
727e28a4053SRui Paulo     0x55555555U, 0x21212121U, 0x0c0c0c0cU, 0x7d7d7d7dU,
728e28a4053SRui Paulo };
729e28a4053SRui Paulo const u32 rcon[] = {
730e28a4053SRui Paulo 	0x01000000, 0x02000000, 0x04000000, 0x08000000,
731e28a4053SRui Paulo 	0x10000000, 0x20000000, 0x40000000, 0x80000000,
732e28a4053SRui Paulo 	0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
733e28a4053SRui Paulo };
734e28a4053SRui Paulo #else /* AES_SMALL_TABLES */
735e28a4053SRui Paulo const u8 Td4s[256] = {
736e28a4053SRui Paulo     0x52U, 0x09U, 0x6aU, 0xd5U, 0x30U, 0x36U, 0xa5U, 0x38U,
737e28a4053SRui Paulo     0xbfU, 0x40U, 0xa3U, 0x9eU, 0x81U, 0xf3U, 0xd7U, 0xfbU,
738e28a4053SRui Paulo     0x7cU, 0xe3U, 0x39U, 0x82U, 0x9bU, 0x2fU, 0xffU, 0x87U,
739e28a4053SRui Paulo     0x34U, 0x8eU, 0x43U, 0x44U, 0xc4U, 0xdeU, 0xe9U, 0xcbU,
740e28a4053SRui Paulo     0x54U, 0x7bU, 0x94U, 0x32U, 0xa6U, 0xc2U, 0x23U, 0x3dU,
741e28a4053SRui Paulo     0xeeU, 0x4cU, 0x95U, 0x0bU, 0x42U, 0xfaU, 0xc3U, 0x4eU,
742e28a4053SRui Paulo     0x08U, 0x2eU, 0xa1U, 0x66U, 0x28U, 0xd9U, 0x24U, 0xb2U,
743e28a4053SRui Paulo     0x76U, 0x5bU, 0xa2U, 0x49U, 0x6dU, 0x8bU, 0xd1U, 0x25U,
744e28a4053SRui Paulo     0x72U, 0xf8U, 0xf6U, 0x64U, 0x86U, 0x68U, 0x98U, 0x16U,
745e28a4053SRui Paulo     0xd4U, 0xa4U, 0x5cU, 0xccU, 0x5dU, 0x65U, 0xb6U, 0x92U,
746e28a4053SRui Paulo     0x6cU, 0x70U, 0x48U, 0x50U, 0xfdU, 0xedU, 0xb9U, 0xdaU,
747e28a4053SRui Paulo     0x5eU, 0x15U, 0x46U, 0x57U, 0xa7U, 0x8dU, 0x9dU, 0x84U,
748e28a4053SRui Paulo     0x90U, 0xd8U, 0xabU, 0x00U, 0x8cU, 0xbcU, 0xd3U, 0x0aU,
749e28a4053SRui Paulo     0xf7U, 0xe4U, 0x58U, 0x05U, 0xb8U, 0xb3U, 0x45U, 0x06U,
750e28a4053SRui Paulo     0xd0U, 0x2cU, 0x1eU, 0x8fU, 0xcaU, 0x3fU, 0x0fU, 0x02U,
751e28a4053SRui Paulo     0xc1U, 0xafU, 0xbdU, 0x03U, 0x01U, 0x13U, 0x8aU, 0x6bU,
752e28a4053SRui Paulo     0x3aU, 0x91U, 0x11U, 0x41U, 0x4fU, 0x67U, 0xdcU, 0xeaU,
753e28a4053SRui Paulo     0x97U, 0xf2U, 0xcfU, 0xceU, 0xf0U, 0xb4U, 0xe6U, 0x73U,
754e28a4053SRui Paulo     0x96U, 0xacU, 0x74U, 0x22U, 0xe7U, 0xadU, 0x35U, 0x85U,
755e28a4053SRui Paulo     0xe2U, 0xf9U, 0x37U, 0xe8U, 0x1cU, 0x75U, 0xdfU, 0x6eU,
756e28a4053SRui Paulo     0x47U, 0xf1U, 0x1aU, 0x71U, 0x1dU, 0x29U, 0xc5U, 0x89U,
757e28a4053SRui Paulo     0x6fU, 0xb7U, 0x62U, 0x0eU, 0xaaU, 0x18U, 0xbeU, 0x1bU,
758e28a4053SRui Paulo     0xfcU, 0x56U, 0x3eU, 0x4bU, 0xc6U, 0xd2U, 0x79U, 0x20U,
759e28a4053SRui Paulo     0x9aU, 0xdbU, 0xc0U, 0xfeU, 0x78U, 0xcdU, 0x5aU, 0xf4U,
760e28a4053SRui Paulo     0x1fU, 0xddU, 0xa8U, 0x33U, 0x88U, 0x07U, 0xc7U, 0x31U,
761e28a4053SRui Paulo     0xb1U, 0x12U, 0x10U, 0x59U, 0x27U, 0x80U, 0xecU, 0x5fU,
762e28a4053SRui Paulo     0x60U, 0x51U, 0x7fU, 0xa9U, 0x19U, 0xb5U, 0x4aU, 0x0dU,
763e28a4053SRui Paulo     0x2dU, 0xe5U, 0x7aU, 0x9fU, 0x93U, 0xc9U, 0x9cU, 0xefU,
764e28a4053SRui Paulo     0xa0U, 0xe0U, 0x3bU, 0x4dU, 0xaeU, 0x2aU, 0xf5U, 0xb0U,
765e28a4053SRui Paulo     0xc8U, 0xebU, 0xbbU, 0x3cU, 0x83U, 0x53U, 0x99U, 0x61U,
766e28a4053SRui Paulo     0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U,
767e28a4053SRui Paulo     0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU,
768e28a4053SRui Paulo };
769e28a4053SRui Paulo const u8 rcons[] = {
770e28a4053SRui Paulo 	0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1B, 0x36
771e28a4053SRui Paulo 	/* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
772e28a4053SRui Paulo };
773e28a4053SRui Paulo #endif /* AES_SMALL_TABLES */
774e28a4053SRui Paulo /**
775e28a4053SRui Paulo  * Expand the cipher key into the encryption key schedule.
776e28a4053SRui Paulo  *
777e28a4053SRui Paulo  * @return	the number of rounds for the given cipher key size.
778e28a4053SRui Paulo  */
rijndaelKeySetupEnc(u32 rk[],const u8 cipherKey[],int keyBits)779*f05cddf9SRui Paulo int rijndaelKeySetupEnc(u32 rk[], const u8 cipherKey[], int keyBits)
780e28a4053SRui Paulo {
781e28a4053SRui Paulo 	int i;
782e28a4053SRui Paulo 	u32 temp;
783e28a4053SRui Paulo 
784e28a4053SRui Paulo 	rk[0] = GETU32(cipherKey     );
785e28a4053SRui Paulo 	rk[1] = GETU32(cipherKey +  4);
786e28a4053SRui Paulo 	rk[2] = GETU32(cipherKey +  8);
787e28a4053SRui Paulo 	rk[3] = GETU32(cipherKey + 12);
788*f05cddf9SRui Paulo 
789*f05cddf9SRui Paulo 	if (keyBits == 128) {
790e28a4053SRui Paulo 		for (i = 0; i < 10; i++) {
791e28a4053SRui Paulo 			temp  = rk[3];
792*f05cddf9SRui Paulo 			rk[4] = rk[0] ^ TE421(temp) ^ TE432(temp) ^
793*f05cddf9SRui Paulo 				TE443(temp) ^ TE414(temp) ^ RCON(i);
794e28a4053SRui Paulo 			rk[5] = rk[1] ^ rk[4];
795e28a4053SRui Paulo 			rk[6] = rk[2] ^ rk[5];
796e28a4053SRui Paulo 			rk[7] = rk[3] ^ rk[6];
797e28a4053SRui Paulo 			rk += 4;
798e28a4053SRui Paulo 		}
799*f05cddf9SRui Paulo 		return 10;
800*f05cddf9SRui Paulo 	}
801*f05cddf9SRui Paulo 
802*f05cddf9SRui Paulo 	rk[4] = GETU32(cipherKey + 16);
803*f05cddf9SRui Paulo 	rk[5] = GETU32(cipherKey + 20);
804*f05cddf9SRui Paulo 
805*f05cddf9SRui Paulo 	if (keyBits == 192) {
806*f05cddf9SRui Paulo 		for (i = 0; i < 8; i++) {
807*f05cddf9SRui Paulo 			temp  = rk[5];
808*f05cddf9SRui Paulo 			rk[6] = rk[0] ^ TE421(temp) ^ TE432(temp) ^
809*f05cddf9SRui Paulo 				TE443(temp) ^ TE414(temp) ^ RCON(i);
810*f05cddf9SRui Paulo 			rk[7] = rk[1] ^ rk[6];
811*f05cddf9SRui Paulo 			rk[8] = rk[2] ^ rk[7];
812*f05cddf9SRui Paulo 			rk[9] = rk[3] ^ rk[8];
813*f05cddf9SRui Paulo 			if (i == 7)
814*f05cddf9SRui Paulo 				return 12;
815*f05cddf9SRui Paulo 			rk[10] = rk[4] ^ rk[9];
816*f05cddf9SRui Paulo 			rk[11] = rk[5] ^ rk[10];
817*f05cddf9SRui Paulo 			rk += 6;
818*f05cddf9SRui Paulo 		}
819*f05cddf9SRui Paulo 	}
820*f05cddf9SRui Paulo 
821*f05cddf9SRui Paulo 	rk[6] = GETU32(cipherKey + 24);
822*f05cddf9SRui Paulo 	rk[7] = GETU32(cipherKey + 28);
823*f05cddf9SRui Paulo 
824*f05cddf9SRui Paulo 	if (keyBits == 256) {
825*f05cddf9SRui Paulo 		for (i = 0; i < 7; i++) {
826*f05cddf9SRui Paulo 			temp  = rk[7];
827*f05cddf9SRui Paulo 			rk[8] = rk[0] ^ TE421(temp) ^ TE432(temp) ^
828*f05cddf9SRui Paulo 				TE443(temp) ^ TE414(temp) ^ RCON(i);
829*f05cddf9SRui Paulo 			rk[9] = rk[1] ^ rk[8];
830*f05cddf9SRui Paulo 			rk[10] = rk[2] ^ rk[9];
831*f05cddf9SRui Paulo 			rk[11] = rk[3] ^ rk[10];
832*f05cddf9SRui Paulo 			if (i == 6)
833*f05cddf9SRui Paulo 				return 14;
834*f05cddf9SRui Paulo 			temp  = rk[11];
835*f05cddf9SRui Paulo 			rk[12] = rk[4] ^ TE411(temp) ^ TE422(temp) ^
836*f05cddf9SRui Paulo 				TE433(temp) ^ TE444(temp);
837*f05cddf9SRui Paulo 			rk[13] = rk[5] ^ rk[12];
838*f05cddf9SRui Paulo 			rk[14] = rk[6] ^ rk[13];
839*f05cddf9SRui Paulo 			rk[15] = rk[7] ^ rk[14];
840*f05cddf9SRui Paulo 			rk += 8;
841*f05cddf9SRui Paulo 		}
842*f05cddf9SRui Paulo 	}
843*f05cddf9SRui Paulo 
844*f05cddf9SRui Paulo 	return -1;
845e28a4053SRui Paulo }
846