Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/crypto/aes_generic.c
26131 views
1
/*
2
* Cryptographic API.
3
*
4
* AES Cipher Algorithm.
5
*
6
* Based on Brian Gladman's code.
7
*
8
* Linux developers:
9
* Alexander Kjeldaas <[email protected]>
10
* Herbert Valerio Riedel <[email protected]>
11
* Kyle McMartin <[email protected]>
12
* Adam J. Richter <[email protected]> (conversion to 2.5 API).
13
*
14
* This program is free software; you can redistribute it and/or modify
15
* it under the terms of the GNU General Public License as published by
16
* the Free Software Foundation; either version 2 of the License, or
17
* (at your option) any later version.
18
*
19
* ---------------------------------------------------------------------------
20
* Copyright (c) 2002, Dr Brian Gladman <[email protected]>, Worcester, UK.
21
* All rights reserved.
22
*
23
* LICENSE TERMS
24
*
25
* The free distribution and use of this software in both source and binary
26
* form is allowed (with or without changes) provided that:
27
*
28
* 1. distributions of this source code include the above copyright
29
* notice, this list of conditions and the following disclaimer;
30
*
31
* 2. distributions in binary form include the above copyright
32
* notice, this list of conditions and the following disclaimer
33
* in the documentation and/or other associated materials;
34
*
35
* 3. the copyright holder's name is not used to endorse products
36
* built using this software without specific written permission.
37
*
38
* ALTERNATIVELY, provided that this notice is retained in full, this product
39
* may be distributed under the terms of the GNU General Public License (GPL),
40
* in which case the provisions of the GPL apply INSTEAD OF those given above.
41
*
42
* DISCLAIMER
43
*
44
* This software is provided 'as is' with no explicit or implied warranties
45
* in respect of its properties, including, but not limited to, correctness
46
* and/or fitness for purpose.
47
* ---------------------------------------------------------------------------
48
*/
49
50
#include <crypto/aes.h>
51
#include <crypto/algapi.h>
52
#include <linux/module.h>
53
#include <linux/init.h>
54
#include <linux/types.h>
55
#include <linux/errno.h>
56
#include <asm/byteorder.h>
57
#include <linux/unaligned.h>
58
59
static inline u8 byte(const u32 x, const unsigned n)
60
{
61
return x >> (n << 3);
62
}
63
64
/* cacheline-aligned to facilitate prefetching into cache */
65
__visible const u32 crypto_ft_tab[4][256] ____cacheline_aligned = {
66
{
67
0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6,
68
0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591,
69
0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56,
70
0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec,
71
0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa,
72
0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb,
73
0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45,
74
0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b,
75
0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c,
76
0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83,
77
0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9,
78
0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a,
79
0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d,
80
0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f,
81
0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df,
82
0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea,
83
0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34,
84
0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b,
85
0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d,
86
0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413,
87
0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1,
88
0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6,
89
0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972,
90
0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85,
91
0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed,
92
0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511,
93
0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe,
94
0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b,
95
0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05,
96
0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1,
97
0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142,
98
0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf,
99
0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3,
100
0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e,
101
0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a,
102
0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6,
103
0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3,
104
0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b,
105
0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428,
106
0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad,
107
0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14,
108
0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8,
109
0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4,
110
0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2,
111
0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda,
112
0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949,
113
0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf,
114
0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810,
115
0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c,
116
0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697,
117
0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e,
118
0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f,
119
0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc,
120
0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c,
121
0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969,
122
0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27,
123
0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122,
124
0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433,
125
0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9,
126
0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5,
127
0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a,
128
0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0,
129
0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e,
130
0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c,
131
}, {
132
0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d,
133
0xf2f2ff0d, 0x6b6bd6bd, 0x6f6fdeb1, 0xc5c59154,
134
0x30306050, 0x01010203, 0x6767cea9, 0x2b2b567d,
135
0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a,
136
0xcaca8f45, 0x82821f9d, 0xc9c98940, 0x7d7dfa87,
137
0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b,
138
0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea,
139
0x9c9c23bf, 0xa4a453f7, 0x7272e496, 0xc0c09b5b,
140
0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a,
141
0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f,
142
0x3434685c, 0xa5a551f4, 0xe5e5d134, 0xf1f1f908,
143
0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f,
144
0x0404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e,
145
0x18183028, 0x969637a1, 0x05050a0f, 0x9a9a2fb5,
146
0x07070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d,
147
0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f,
148
0x0909121b, 0x83831d9e, 0x2c2c5874, 0x1a1a342e,
149
0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb,
150
0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce,
151
0x2929527b, 0xe3e3dd3e, 0x2f2f5e71, 0x84841397,
152
0x5353a6f5, 0xd1d1b968, 0x00000000, 0xededc12c,
153
0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed,
154
0x6a6ad4be, 0xcbcb8d46, 0xbebe67d9, 0x3939724b,
155
0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a,
156
0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16,
157
0x434386c5, 0x4d4d9ad7, 0x33336655, 0x85851194,
158
0x45458acf, 0xf9f9e910, 0x02020406, 0x7f7ffe81,
159
0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3,
160
0x5151a2f3, 0xa3a35dfe, 0x404080c0, 0x8f8f058a,
161
0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104,
162
0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263,
163
0x10102030, 0xffffe51a, 0xf3f3fd0e, 0xd2d2bf6d,
164
0xcdcd814c, 0x0c0c1814, 0x13132635, 0xececc32f,
165
0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39,
166
0xc4c49357, 0xa7a755f2, 0x7e7efc82, 0x3d3d7a47,
167
0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695,
168
0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f,
169
0x22224466, 0x2a2a547e, 0x90903bab, 0x88880b83,
170
0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c,
171
0xdedea779, 0x5e5ebce2, 0x0b0b161d, 0xdbdbad76,
172
0xe0e0db3b, 0x32326456, 0x3a3a744e, 0x0a0a141e,
173
0x494992db, 0x06060c0a, 0x2424486c, 0x5c5cb8e4,
174
0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6,
175
0x919139a8, 0x959531a4, 0xe4e4d337, 0x7979f28b,
176
0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7,
177
0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0,
178
0x6c6cd8b4, 0x5656acfa, 0xf4f4f307, 0xeaeacf25,
179
0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x08081018,
180
0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72,
181
0x1c1c3824, 0xa6a657f1, 0xb4b473c7, 0xc6c69751,
182
0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21,
183
0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85,
184
0x7070e090, 0x3e3e7c42, 0xb5b571c4, 0x6666ccaa,
185
0x484890d8, 0x03030605, 0xf6f6f701, 0x0e0e1c12,
186
0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0,
187
0x86861791, 0xc1c19958, 0x1d1d3a27, 0x9e9e27b9,
188
0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233,
189
0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7,
190
0x9b9b2db6, 0x1e1e3c22, 0x87871592, 0xe9e9c920,
191
0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a,
192
0x8c8c038f, 0xa1a159f8, 0x89890980, 0x0d0d1a17,
193
0xbfbf65da, 0xe6e6d731, 0x424284c6, 0x6868d0b8,
194
0x414182c3, 0x999929b0, 0x2d2d5a77, 0x0f0f1e11,
195
0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a,
196
}, {
197
0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b,
198
0xf2ff0df2, 0x6bd6bd6b, 0x6fdeb16f, 0xc59154c5,
199
0x30605030, 0x01020301, 0x67cea967, 0x2b567d2b,
200
0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76,
201
0xca8f45ca, 0x821f9d82, 0xc98940c9, 0x7dfa877d,
202
0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0,
203
0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf,
204
0x9c23bf9c, 0xa453f7a4, 0x72e49672, 0xc09b5bc0,
205
0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26,
206
0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc,
207
0x34685c34, 0xa551f4a5, 0xe5d134e5, 0xf1f908f1,
208
0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15,
209
0x04080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3,
210
0x18302818, 0x9637a196, 0x050a0f05, 0x9a2fb59a,
211
0x070e0907, 0x12243612, 0x801b9b80, 0xe2df3de2,
212
0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75,
213
0x09121b09, 0x831d9e83, 0x2c58742c, 0x1a342e1a,
214
0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0,
215
0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3,
216
0x29527b29, 0xe3dd3ee3, 0x2f5e712f, 0x84139784,
217
0x53a6f553, 0xd1b968d1, 0x00000000, 0xedc12ced,
218
0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b,
219
0x6ad4be6a, 0xcb8d46cb, 0xbe67d9be, 0x39724b39,
220
0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf,
221
0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb,
222
0x4386c543, 0x4d9ad74d, 0x33665533, 0x85119485,
223
0x458acf45, 0xf9e910f9, 0x02040602, 0x7ffe817f,
224
0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8,
225
0x51a2f351, 0xa35dfea3, 0x4080c040, 0x8f058a8f,
226
0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5,
227
0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321,
228
0x10203010, 0xffe51aff, 0xf3fd0ef3, 0xd2bf6dd2,
229
0xcd814ccd, 0x0c18140c, 0x13263513, 0xecc32fec,
230
0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917,
231
0xc49357c4, 0xa755f2a7, 0x7efc827e, 0x3d7a473d,
232
0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573,
233
0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc,
234
0x22446622, 0x2a547e2a, 0x903bab90, 0x880b8388,
235
0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14,
236
0xdea779de, 0x5ebce25e, 0x0b161d0b, 0xdbad76db,
237
0xe0db3be0, 0x32645632, 0x3a744e3a, 0x0a141e0a,
238
0x4992db49, 0x060c0a06, 0x24486c24, 0x5cb8e45c,
239
0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662,
240
0x9139a891, 0x9531a495, 0xe4d337e4, 0x79f28b79,
241
0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d,
242
0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9,
243
0x6cd8b46c, 0x56acfa56, 0xf4f307f4, 0xeacf25ea,
244
0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x08101808,
245
0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e,
246
0x1c38241c, 0xa657f1a6, 0xb473c7b4, 0xc69751c6,
247
0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f,
248
0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a,
249
0x70e09070, 0x3e7c423e, 0xb571c4b5, 0x66ccaa66,
250
0x4890d848, 0x03060503, 0xf6f701f6, 0x0e1c120e,
251
0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9,
252
0x86179186, 0xc19958c1, 0x1d3a271d, 0x9e27b99e,
253
0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311,
254
0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794,
255
0x9b2db69b, 0x1e3c221e, 0x87159287, 0xe9c920e9,
256
0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf,
257
0x8c038f8c, 0xa159f8a1, 0x89098089, 0x0d1a170d,
258
0xbf65dabf, 0xe6d731e6, 0x4284c642, 0x68d0b868,
259
0x4182c341, 0x9929b099, 0x2d5a772d, 0x0f1e110f,
260
0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16,
261
}, {
262
0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b,
263
0xff0df2f2, 0xd6bd6b6b, 0xdeb16f6f, 0x9154c5c5,
264
0x60503030, 0x02030101, 0xcea96767, 0x567d2b2b,
265
0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676,
266
0x8f45caca, 0x1f9d8282, 0x8940c9c9, 0xfa877d7d,
267
0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0,
268
0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf,
269
0x23bf9c9c, 0x53f7a4a4, 0xe4967272, 0x9b5bc0c0,
270
0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626,
271
0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc,
272
0x685c3434, 0x51f4a5a5, 0xd134e5e5, 0xf908f1f1,
273
0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515,
274
0x080c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3,
275
0x30281818, 0x37a19696, 0x0a0f0505, 0x2fb59a9a,
276
0x0e090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2,
277
0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575,
278
0x121b0909, 0x1d9e8383, 0x58742c2c, 0x342e1a1a,
279
0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0,
280
0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3,
281
0x527b2929, 0xdd3ee3e3, 0x5e712f2f, 0x13978484,
282
0xa6f55353, 0xb968d1d1, 0x00000000, 0xc12ceded,
283
0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b,
284
0xd4be6a6a, 0x8d46cbcb, 0x67d9bebe, 0x724b3939,
285
0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf,
286
0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb,
287
0x86c54343, 0x9ad74d4d, 0x66553333, 0x11948585,
288
0x8acf4545, 0xe910f9f9, 0x04060202, 0xfe817f7f,
289
0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8,
290
0xa2f35151, 0x5dfea3a3, 0x80c04040, 0x058a8f8f,
291
0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5,
292
0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121,
293
0x20301010, 0xe51affff, 0xfd0ef3f3, 0xbf6dd2d2,
294
0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec,
295
0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717,
296
0x9357c4c4, 0x55f2a7a7, 0xfc827e7e, 0x7a473d3d,
297
0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373,
298
0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc,
299
0x44662222, 0x547e2a2a, 0x3bab9090, 0x0b838888,
300
0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414,
301
0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb,
302
0xdb3be0e0, 0x64563232, 0x744e3a3a, 0x141e0a0a,
303
0x92db4949, 0x0c0a0606, 0x486c2424, 0xb8e45c5c,
304
0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262,
305
0x39a89191, 0x31a49595, 0xd337e4e4, 0xf28b7979,
306
0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d,
307
0x018c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9,
308
0xd8b46c6c, 0xacfa5656, 0xf307f4f4, 0xcf25eaea,
309
0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808,
310
0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e,
311
0x38241c1c, 0x57f1a6a6, 0x73c7b4b4, 0x9751c6c6,
312
0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f,
313
0x96dd4b4b, 0x61dcbdbd, 0x0d868b8b, 0x0f858a8a,
314
0xe0907070, 0x7c423e3e, 0x71c4b5b5, 0xccaa6666,
315
0x90d84848, 0x06050303, 0xf701f6f6, 0x1c120e0e,
316
0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9,
317
0x17918686, 0x9958c1c1, 0x3a271d1d, 0x27b99e9e,
318
0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111,
319
0xd2bb6969, 0xa970d9d9, 0x07898e8e, 0x33a79494,
320
0x2db69b9b, 0x3c221e1e, 0x15928787, 0xc920e9e9,
321
0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf,
322
0x038f8c8c, 0x59f8a1a1, 0x09808989, 0x1a170d0d,
323
0x65dabfbf, 0xd731e6e6, 0x84c64242, 0xd0b86868,
324
0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f,
325
0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616,
326
}
327
};
328
329
static const u32 crypto_fl_tab[4][256] ____cacheline_aligned = {
330
{
331
0x00000063, 0x0000007c, 0x00000077, 0x0000007b,
332
0x000000f2, 0x0000006b, 0x0000006f, 0x000000c5,
333
0x00000030, 0x00000001, 0x00000067, 0x0000002b,
334
0x000000fe, 0x000000d7, 0x000000ab, 0x00000076,
335
0x000000ca, 0x00000082, 0x000000c9, 0x0000007d,
336
0x000000fa, 0x00000059, 0x00000047, 0x000000f0,
337
0x000000ad, 0x000000d4, 0x000000a2, 0x000000af,
338
0x0000009c, 0x000000a4, 0x00000072, 0x000000c0,
339
0x000000b7, 0x000000fd, 0x00000093, 0x00000026,
340
0x00000036, 0x0000003f, 0x000000f7, 0x000000cc,
341
0x00000034, 0x000000a5, 0x000000e5, 0x000000f1,
342
0x00000071, 0x000000d8, 0x00000031, 0x00000015,
343
0x00000004, 0x000000c7, 0x00000023, 0x000000c3,
344
0x00000018, 0x00000096, 0x00000005, 0x0000009a,
345
0x00000007, 0x00000012, 0x00000080, 0x000000e2,
346
0x000000eb, 0x00000027, 0x000000b2, 0x00000075,
347
0x00000009, 0x00000083, 0x0000002c, 0x0000001a,
348
0x0000001b, 0x0000006e, 0x0000005a, 0x000000a0,
349
0x00000052, 0x0000003b, 0x000000d6, 0x000000b3,
350
0x00000029, 0x000000e3, 0x0000002f, 0x00000084,
351
0x00000053, 0x000000d1, 0x00000000, 0x000000ed,
352
0x00000020, 0x000000fc, 0x000000b1, 0x0000005b,
353
0x0000006a, 0x000000cb, 0x000000be, 0x00000039,
354
0x0000004a, 0x0000004c, 0x00000058, 0x000000cf,
355
0x000000d0, 0x000000ef, 0x000000aa, 0x000000fb,
356
0x00000043, 0x0000004d, 0x00000033, 0x00000085,
357
0x00000045, 0x000000f9, 0x00000002, 0x0000007f,
358
0x00000050, 0x0000003c, 0x0000009f, 0x000000a8,
359
0x00000051, 0x000000a3, 0x00000040, 0x0000008f,
360
0x00000092, 0x0000009d, 0x00000038, 0x000000f5,
361
0x000000bc, 0x000000b6, 0x000000da, 0x00000021,
362
0x00000010, 0x000000ff, 0x000000f3, 0x000000d2,
363
0x000000cd, 0x0000000c, 0x00000013, 0x000000ec,
364
0x0000005f, 0x00000097, 0x00000044, 0x00000017,
365
0x000000c4, 0x000000a7, 0x0000007e, 0x0000003d,
366
0x00000064, 0x0000005d, 0x00000019, 0x00000073,
367
0x00000060, 0x00000081, 0x0000004f, 0x000000dc,
368
0x00000022, 0x0000002a, 0x00000090, 0x00000088,
369
0x00000046, 0x000000ee, 0x000000b8, 0x00000014,
370
0x000000de, 0x0000005e, 0x0000000b, 0x000000db,
371
0x000000e0, 0x00000032, 0x0000003a, 0x0000000a,
372
0x00000049, 0x00000006, 0x00000024, 0x0000005c,
373
0x000000c2, 0x000000d3, 0x000000ac, 0x00000062,
374
0x00000091, 0x00000095, 0x000000e4, 0x00000079,
375
0x000000e7, 0x000000c8, 0x00000037, 0x0000006d,
376
0x0000008d, 0x000000d5, 0x0000004e, 0x000000a9,
377
0x0000006c, 0x00000056, 0x000000f4, 0x000000ea,
378
0x00000065, 0x0000007a, 0x000000ae, 0x00000008,
379
0x000000ba, 0x00000078, 0x00000025, 0x0000002e,
380
0x0000001c, 0x000000a6, 0x000000b4, 0x000000c6,
381
0x000000e8, 0x000000dd, 0x00000074, 0x0000001f,
382
0x0000004b, 0x000000bd, 0x0000008b, 0x0000008a,
383
0x00000070, 0x0000003e, 0x000000b5, 0x00000066,
384
0x00000048, 0x00000003, 0x000000f6, 0x0000000e,
385
0x00000061, 0x00000035, 0x00000057, 0x000000b9,
386
0x00000086, 0x000000c1, 0x0000001d, 0x0000009e,
387
0x000000e1, 0x000000f8, 0x00000098, 0x00000011,
388
0x00000069, 0x000000d9, 0x0000008e, 0x00000094,
389
0x0000009b, 0x0000001e, 0x00000087, 0x000000e9,
390
0x000000ce, 0x00000055, 0x00000028, 0x000000df,
391
0x0000008c, 0x000000a1, 0x00000089, 0x0000000d,
392
0x000000bf, 0x000000e6, 0x00000042, 0x00000068,
393
0x00000041, 0x00000099, 0x0000002d, 0x0000000f,
394
0x000000b0, 0x00000054, 0x000000bb, 0x00000016,
395
}, {
396
0x00006300, 0x00007c00, 0x00007700, 0x00007b00,
397
0x0000f200, 0x00006b00, 0x00006f00, 0x0000c500,
398
0x00003000, 0x00000100, 0x00006700, 0x00002b00,
399
0x0000fe00, 0x0000d700, 0x0000ab00, 0x00007600,
400
0x0000ca00, 0x00008200, 0x0000c900, 0x00007d00,
401
0x0000fa00, 0x00005900, 0x00004700, 0x0000f000,
402
0x0000ad00, 0x0000d400, 0x0000a200, 0x0000af00,
403
0x00009c00, 0x0000a400, 0x00007200, 0x0000c000,
404
0x0000b700, 0x0000fd00, 0x00009300, 0x00002600,
405
0x00003600, 0x00003f00, 0x0000f700, 0x0000cc00,
406
0x00003400, 0x0000a500, 0x0000e500, 0x0000f100,
407
0x00007100, 0x0000d800, 0x00003100, 0x00001500,
408
0x00000400, 0x0000c700, 0x00002300, 0x0000c300,
409
0x00001800, 0x00009600, 0x00000500, 0x00009a00,
410
0x00000700, 0x00001200, 0x00008000, 0x0000e200,
411
0x0000eb00, 0x00002700, 0x0000b200, 0x00007500,
412
0x00000900, 0x00008300, 0x00002c00, 0x00001a00,
413
0x00001b00, 0x00006e00, 0x00005a00, 0x0000a000,
414
0x00005200, 0x00003b00, 0x0000d600, 0x0000b300,
415
0x00002900, 0x0000e300, 0x00002f00, 0x00008400,
416
0x00005300, 0x0000d100, 0x00000000, 0x0000ed00,
417
0x00002000, 0x0000fc00, 0x0000b100, 0x00005b00,
418
0x00006a00, 0x0000cb00, 0x0000be00, 0x00003900,
419
0x00004a00, 0x00004c00, 0x00005800, 0x0000cf00,
420
0x0000d000, 0x0000ef00, 0x0000aa00, 0x0000fb00,
421
0x00004300, 0x00004d00, 0x00003300, 0x00008500,
422
0x00004500, 0x0000f900, 0x00000200, 0x00007f00,
423
0x00005000, 0x00003c00, 0x00009f00, 0x0000a800,
424
0x00005100, 0x0000a300, 0x00004000, 0x00008f00,
425
0x00009200, 0x00009d00, 0x00003800, 0x0000f500,
426
0x0000bc00, 0x0000b600, 0x0000da00, 0x00002100,
427
0x00001000, 0x0000ff00, 0x0000f300, 0x0000d200,
428
0x0000cd00, 0x00000c00, 0x00001300, 0x0000ec00,
429
0x00005f00, 0x00009700, 0x00004400, 0x00001700,
430
0x0000c400, 0x0000a700, 0x00007e00, 0x00003d00,
431
0x00006400, 0x00005d00, 0x00001900, 0x00007300,
432
0x00006000, 0x00008100, 0x00004f00, 0x0000dc00,
433
0x00002200, 0x00002a00, 0x00009000, 0x00008800,
434
0x00004600, 0x0000ee00, 0x0000b800, 0x00001400,
435
0x0000de00, 0x00005e00, 0x00000b00, 0x0000db00,
436
0x0000e000, 0x00003200, 0x00003a00, 0x00000a00,
437
0x00004900, 0x00000600, 0x00002400, 0x00005c00,
438
0x0000c200, 0x0000d300, 0x0000ac00, 0x00006200,
439
0x00009100, 0x00009500, 0x0000e400, 0x00007900,
440
0x0000e700, 0x0000c800, 0x00003700, 0x00006d00,
441
0x00008d00, 0x0000d500, 0x00004e00, 0x0000a900,
442
0x00006c00, 0x00005600, 0x0000f400, 0x0000ea00,
443
0x00006500, 0x00007a00, 0x0000ae00, 0x00000800,
444
0x0000ba00, 0x00007800, 0x00002500, 0x00002e00,
445
0x00001c00, 0x0000a600, 0x0000b400, 0x0000c600,
446
0x0000e800, 0x0000dd00, 0x00007400, 0x00001f00,
447
0x00004b00, 0x0000bd00, 0x00008b00, 0x00008a00,
448
0x00007000, 0x00003e00, 0x0000b500, 0x00006600,
449
0x00004800, 0x00000300, 0x0000f600, 0x00000e00,
450
0x00006100, 0x00003500, 0x00005700, 0x0000b900,
451
0x00008600, 0x0000c100, 0x00001d00, 0x00009e00,
452
0x0000e100, 0x0000f800, 0x00009800, 0x00001100,
453
0x00006900, 0x0000d900, 0x00008e00, 0x00009400,
454
0x00009b00, 0x00001e00, 0x00008700, 0x0000e900,
455
0x0000ce00, 0x00005500, 0x00002800, 0x0000df00,
456
0x00008c00, 0x0000a100, 0x00008900, 0x00000d00,
457
0x0000bf00, 0x0000e600, 0x00004200, 0x00006800,
458
0x00004100, 0x00009900, 0x00002d00, 0x00000f00,
459
0x0000b000, 0x00005400, 0x0000bb00, 0x00001600,
460
}, {
461
0x00630000, 0x007c0000, 0x00770000, 0x007b0000,
462
0x00f20000, 0x006b0000, 0x006f0000, 0x00c50000,
463
0x00300000, 0x00010000, 0x00670000, 0x002b0000,
464
0x00fe0000, 0x00d70000, 0x00ab0000, 0x00760000,
465
0x00ca0000, 0x00820000, 0x00c90000, 0x007d0000,
466
0x00fa0000, 0x00590000, 0x00470000, 0x00f00000,
467
0x00ad0000, 0x00d40000, 0x00a20000, 0x00af0000,
468
0x009c0000, 0x00a40000, 0x00720000, 0x00c00000,
469
0x00b70000, 0x00fd0000, 0x00930000, 0x00260000,
470
0x00360000, 0x003f0000, 0x00f70000, 0x00cc0000,
471
0x00340000, 0x00a50000, 0x00e50000, 0x00f10000,
472
0x00710000, 0x00d80000, 0x00310000, 0x00150000,
473
0x00040000, 0x00c70000, 0x00230000, 0x00c30000,
474
0x00180000, 0x00960000, 0x00050000, 0x009a0000,
475
0x00070000, 0x00120000, 0x00800000, 0x00e20000,
476
0x00eb0000, 0x00270000, 0x00b20000, 0x00750000,
477
0x00090000, 0x00830000, 0x002c0000, 0x001a0000,
478
0x001b0000, 0x006e0000, 0x005a0000, 0x00a00000,
479
0x00520000, 0x003b0000, 0x00d60000, 0x00b30000,
480
0x00290000, 0x00e30000, 0x002f0000, 0x00840000,
481
0x00530000, 0x00d10000, 0x00000000, 0x00ed0000,
482
0x00200000, 0x00fc0000, 0x00b10000, 0x005b0000,
483
0x006a0000, 0x00cb0000, 0x00be0000, 0x00390000,
484
0x004a0000, 0x004c0000, 0x00580000, 0x00cf0000,
485
0x00d00000, 0x00ef0000, 0x00aa0000, 0x00fb0000,
486
0x00430000, 0x004d0000, 0x00330000, 0x00850000,
487
0x00450000, 0x00f90000, 0x00020000, 0x007f0000,
488
0x00500000, 0x003c0000, 0x009f0000, 0x00a80000,
489
0x00510000, 0x00a30000, 0x00400000, 0x008f0000,
490
0x00920000, 0x009d0000, 0x00380000, 0x00f50000,
491
0x00bc0000, 0x00b60000, 0x00da0000, 0x00210000,
492
0x00100000, 0x00ff0000, 0x00f30000, 0x00d20000,
493
0x00cd0000, 0x000c0000, 0x00130000, 0x00ec0000,
494
0x005f0000, 0x00970000, 0x00440000, 0x00170000,
495
0x00c40000, 0x00a70000, 0x007e0000, 0x003d0000,
496
0x00640000, 0x005d0000, 0x00190000, 0x00730000,
497
0x00600000, 0x00810000, 0x004f0000, 0x00dc0000,
498
0x00220000, 0x002a0000, 0x00900000, 0x00880000,
499
0x00460000, 0x00ee0000, 0x00b80000, 0x00140000,
500
0x00de0000, 0x005e0000, 0x000b0000, 0x00db0000,
501
0x00e00000, 0x00320000, 0x003a0000, 0x000a0000,
502
0x00490000, 0x00060000, 0x00240000, 0x005c0000,
503
0x00c20000, 0x00d30000, 0x00ac0000, 0x00620000,
504
0x00910000, 0x00950000, 0x00e40000, 0x00790000,
505
0x00e70000, 0x00c80000, 0x00370000, 0x006d0000,
506
0x008d0000, 0x00d50000, 0x004e0000, 0x00a90000,
507
0x006c0000, 0x00560000, 0x00f40000, 0x00ea0000,
508
0x00650000, 0x007a0000, 0x00ae0000, 0x00080000,
509
0x00ba0000, 0x00780000, 0x00250000, 0x002e0000,
510
0x001c0000, 0x00a60000, 0x00b40000, 0x00c60000,
511
0x00e80000, 0x00dd0000, 0x00740000, 0x001f0000,
512
0x004b0000, 0x00bd0000, 0x008b0000, 0x008a0000,
513
0x00700000, 0x003e0000, 0x00b50000, 0x00660000,
514
0x00480000, 0x00030000, 0x00f60000, 0x000e0000,
515
0x00610000, 0x00350000, 0x00570000, 0x00b90000,
516
0x00860000, 0x00c10000, 0x001d0000, 0x009e0000,
517
0x00e10000, 0x00f80000, 0x00980000, 0x00110000,
518
0x00690000, 0x00d90000, 0x008e0000, 0x00940000,
519
0x009b0000, 0x001e0000, 0x00870000, 0x00e90000,
520
0x00ce0000, 0x00550000, 0x00280000, 0x00df0000,
521
0x008c0000, 0x00a10000, 0x00890000, 0x000d0000,
522
0x00bf0000, 0x00e60000, 0x00420000, 0x00680000,
523
0x00410000, 0x00990000, 0x002d0000, 0x000f0000,
524
0x00b00000, 0x00540000, 0x00bb0000, 0x00160000,
525
}, {
526
0x63000000, 0x7c000000, 0x77000000, 0x7b000000,
527
0xf2000000, 0x6b000000, 0x6f000000, 0xc5000000,
528
0x30000000, 0x01000000, 0x67000000, 0x2b000000,
529
0xfe000000, 0xd7000000, 0xab000000, 0x76000000,
530
0xca000000, 0x82000000, 0xc9000000, 0x7d000000,
531
0xfa000000, 0x59000000, 0x47000000, 0xf0000000,
532
0xad000000, 0xd4000000, 0xa2000000, 0xaf000000,
533
0x9c000000, 0xa4000000, 0x72000000, 0xc0000000,
534
0xb7000000, 0xfd000000, 0x93000000, 0x26000000,
535
0x36000000, 0x3f000000, 0xf7000000, 0xcc000000,
536
0x34000000, 0xa5000000, 0xe5000000, 0xf1000000,
537
0x71000000, 0xd8000000, 0x31000000, 0x15000000,
538
0x04000000, 0xc7000000, 0x23000000, 0xc3000000,
539
0x18000000, 0x96000000, 0x05000000, 0x9a000000,
540
0x07000000, 0x12000000, 0x80000000, 0xe2000000,
541
0xeb000000, 0x27000000, 0xb2000000, 0x75000000,
542
0x09000000, 0x83000000, 0x2c000000, 0x1a000000,
543
0x1b000000, 0x6e000000, 0x5a000000, 0xa0000000,
544
0x52000000, 0x3b000000, 0xd6000000, 0xb3000000,
545
0x29000000, 0xe3000000, 0x2f000000, 0x84000000,
546
0x53000000, 0xd1000000, 0x00000000, 0xed000000,
547
0x20000000, 0xfc000000, 0xb1000000, 0x5b000000,
548
0x6a000000, 0xcb000000, 0xbe000000, 0x39000000,
549
0x4a000000, 0x4c000000, 0x58000000, 0xcf000000,
550
0xd0000000, 0xef000000, 0xaa000000, 0xfb000000,
551
0x43000000, 0x4d000000, 0x33000000, 0x85000000,
552
0x45000000, 0xf9000000, 0x02000000, 0x7f000000,
553
0x50000000, 0x3c000000, 0x9f000000, 0xa8000000,
554
0x51000000, 0xa3000000, 0x40000000, 0x8f000000,
555
0x92000000, 0x9d000000, 0x38000000, 0xf5000000,
556
0xbc000000, 0xb6000000, 0xda000000, 0x21000000,
557
0x10000000, 0xff000000, 0xf3000000, 0xd2000000,
558
0xcd000000, 0x0c000000, 0x13000000, 0xec000000,
559
0x5f000000, 0x97000000, 0x44000000, 0x17000000,
560
0xc4000000, 0xa7000000, 0x7e000000, 0x3d000000,
561
0x64000000, 0x5d000000, 0x19000000, 0x73000000,
562
0x60000000, 0x81000000, 0x4f000000, 0xdc000000,
563
0x22000000, 0x2a000000, 0x90000000, 0x88000000,
564
0x46000000, 0xee000000, 0xb8000000, 0x14000000,
565
0xde000000, 0x5e000000, 0x0b000000, 0xdb000000,
566
0xe0000000, 0x32000000, 0x3a000000, 0x0a000000,
567
0x49000000, 0x06000000, 0x24000000, 0x5c000000,
568
0xc2000000, 0xd3000000, 0xac000000, 0x62000000,
569
0x91000000, 0x95000000, 0xe4000000, 0x79000000,
570
0xe7000000, 0xc8000000, 0x37000000, 0x6d000000,
571
0x8d000000, 0xd5000000, 0x4e000000, 0xa9000000,
572
0x6c000000, 0x56000000, 0xf4000000, 0xea000000,
573
0x65000000, 0x7a000000, 0xae000000, 0x08000000,
574
0xba000000, 0x78000000, 0x25000000, 0x2e000000,
575
0x1c000000, 0xa6000000, 0xb4000000, 0xc6000000,
576
0xe8000000, 0xdd000000, 0x74000000, 0x1f000000,
577
0x4b000000, 0xbd000000, 0x8b000000, 0x8a000000,
578
0x70000000, 0x3e000000, 0xb5000000, 0x66000000,
579
0x48000000, 0x03000000, 0xf6000000, 0x0e000000,
580
0x61000000, 0x35000000, 0x57000000, 0xb9000000,
581
0x86000000, 0xc1000000, 0x1d000000, 0x9e000000,
582
0xe1000000, 0xf8000000, 0x98000000, 0x11000000,
583
0x69000000, 0xd9000000, 0x8e000000, 0x94000000,
584
0x9b000000, 0x1e000000, 0x87000000, 0xe9000000,
585
0xce000000, 0x55000000, 0x28000000, 0xdf000000,
586
0x8c000000, 0xa1000000, 0x89000000, 0x0d000000,
587
0xbf000000, 0xe6000000, 0x42000000, 0x68000000,
588
0x41000000, 0x99000000, 0x2d000000, 0x0f000000,
589
0xb0000000, 0x54000000, 0xbb000000, 0x16000000,
590
}
591
};
592
593
__visible const u32 crypto_it_tab[4][256] ____cacheline_aligned = {
594
{
595
0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a,
596
0xcb6bab3b, 0xf1459d1f, 0xab58faac, 0x9303e34b,
597
0x55fa3020, 0xf66d76ad, 0x9176cc88, 0x254c02f5,
598
0xfcd7e54f, 0xd7cb2ac5, 0x80443526, 0x8fa362b5,
599
0x495ab1de, 0x671bba25, 0x980eea45, 0xe1c0fe5d,
600
0x02752fc3, 0x12f04c81, 0xa397468d, 0xc6f9d36b,
601
0xe75f8f03, 0x959c9215, 0xeb7a6dbf, 0xda595295,
602
0x2d83bed4, 0xd3217458, 0x2969e049, 0x44c8c98e,
603
0x6a89c275, 0x78798ef4, 0x6b3e5899, 0xdd71b927,
604
0xb64fe1be, 0x17ad88f0, 0x66ac20c9, 0xb43ace7d,
605
0x184adf63, 0x82311ae5, 0x60335197, 0x457f5362,
606
0xe07764b1, 0x84ae6bbb, 0x1ca081fe, 0x942b08f9,
607
0x58684870, 0x19fd458f, 0x876cde94, 0xb7f87b52,
608
0x23d373ab, 0xe2024b72, 0x578f1fe3, 0x2aab5566,
609
0x0728ebb2, 0x03c2b52f, 0x9a7bc586, 0xa50837d3,
610
0xf2872830, 0xb2a5bf23, 0xba6a0302, 0x5c8216ed,
611
0x2b1ccf8a, 0x92b479a7, 0xf0f207f3, 0xa1e2694e,
612
0xcdf4da65, 0xd5be0506, 0x1f6234d1, 0x8afea6c4,
613
0x9d532e34, 0xa055f3a2, 0x32e18a05, 0x75ebf6a4,
614
0x39ec830b, 0xaaef6040, 0x069f715e, 0x51106ebd,
615
0xf98a213e, 0x3d06dd96, 0xae053edd, 0x46bde64d,
616
0xb58d5491, 0x055dc471, 0x6fd40604, 0xff155060,
617
0x24fb9819, 0x97e9bdd6, 0xcc434089, 0x779ed967,
618
0xbd42e8b0, 0x888b8907, 0x385b19e7, 0xdbeec879,
619
0x470a7ca1, 0xe90f427c, 0xc91e84f8, 0x00000000,
620
0x83868009, 0x48ed2b32, 0xac70111e, 0x4e725a6c,
621
0xfbff0efd, 0x5638850f, 0x1ed5ae3d, 0x27392d36,
622
0x64d90f0a, 0x21a65c68, 0xd1545b9b, 0x3a2e3624,
623
0xb1670a0c, 0x0fe75793, 0xd296eeb4, 0x9e919b1b,
624
0x4fc5c080, 0xa220dc61, 0x694b775a, 0x161a121c,
625
0x0aba93e2, 0xe52aa0c0, 0x43e0223c, 0x1d171b12,
626
0x0b0d090e, 0xadc78bf2, 0xb9a8b62d, 0xc8a91e14,
627
0x8519f157, 0x4c0775af, 0xbbdd99ee, 0xfd607fa3,
628
0x9f2601f7, 0xbcf5725c, 0xc53b6644, 0x347efb5b,
629
0x7629438b, 0xdcc623cb, 0x68fcedb6, 0x63f1e4b8,
630
0xcadc31d7, 0x10856342, 0x40229713, 0x2011c684,
631
0x7d244a85, 0xf83dbbd2, 0x1132f9ae, 0x6da129c7,
632
0x4b2f9e1d, 0xf330b2dc, 0xec52860d, 0xd0e3c177,
633
0x6c16b32b, 0x99b970a9, 0xfa489411, 0x2264e947,
634
0xc48cfca8, 0x1a3ff0a0, 0xd82c7d56, 0xef903322,
635
0xc74e4987, 0xc1d138d9, 0xfea2ca8c, 0x360bd498,
636
0xcf81f5a6, 0x28de7aa5, 0x268eb7da, 0xa4bfad3f,
637
0xe49d3a2c, 0x0d927850, 0x9bcc5f6a, 0x62467e54,
638
0xc2138df6, 0xe8b8d890, 0x5ef7392e, 0xf5afc382,
639
0xbe805d9f, 0x7c93d069, 0xa92dd56f, 0xb31225cf,
640
0x3b99acc8, 0xa77d1810, 0x6e639ce8, 0x7bbb3bdb,
641
0x097826cd, 0xf418596e, 0x01b79aec, 0xa89a4f83,
642
0x656e95e6, 0x7ee6ffaa, 0x08cfbc21, 0xe6e815ef,
643
0xd99be7ba, 0xce366f4a, 0xd4099fea, 0xd67cb029,
644
0xafb2a431, 0x31233f2a, 0x3094a5c6, 0xc066a235,
645
0x37bc4e74, 0xa6ca82fc, 0xb0d090e0, 0x15d8a733,
646
0x4a9804f1, 0xf7daec41, 0x0e50cd7f, 0x2ff69117,
647
0x8dd64d76, 0x4db0ef43, 0x544daacc, 0xdf0496e4,
648
0xe3b5d19e, 0x1b886a4c, 0xb81f2cc1, 0x7f516546,
649
0x04ea5e9d, 0x5d358c01, 0x737487fa, 0x2e410bfb,
650
0x5a1d67b3, 0x52d2db92, 0x335610e9, 0x1347d66d,
651
0x8c61d79a, 0x7a0ca137, 0x8e14f859, 0x893c13eb,
652
0xee27a9ce, 0x35c961b7, 0xede51ce1, 0x3cb1477a,
653
0x59dfd29c, 0x3f73f255, 0x79ce1418, 0xbf37c773,
654
0xeacdf753, 0x5baafd5f, 0x146f3ddf, 0x86db4478,
655
0x81f3afca, 0x3ec468b9, 0x2c342438, 0x5f40a3c2,
656
0x72c31d16, 0x0c25e2bc, 0x8b493c28, 0x41950dff,
657
0x7101a839, 0xdeb30c08, 0x9ce4b4d8, 0x90c15664,
658
0x6184cb7b, 0x70b632d5, 0x745c6c48, 0x4257b8d0,
659
}, {
660
0xa7f45150, 0x65417e53, 0xa4171ac3, 0x5e273a96,
661
0x6bab3bcb, 0x459d1ff1, 0x58faacab, 0x03e34b93,
662
0xfa302055, 0x6d76adf6, 0x76cc8891, 0x4c02f525,
663
0xd7e54ffc, 0xcb2ac5d7, 0x44352680, 0xa362b58f,
664
0x5ab1de49, 0x1bba2567, 0x0eea4598, 0xc0fe5de1,
665
0x752fc302, 0xf04c8112, 0x97468da3, 0xf9d36bc6,
666
0x5f8f03e7, 0x9c921595, 0x7a6dbfeb, 0x595295da,
667
0x83bed42d, 0x217458d3, 0x69e04929, 0xc8c98e44,
668
0x89c2756a, 0x798ef478, 0x3e58996b, 0x71b927dd,
669
0x4fe1beb6, 0xad88f017, 0xac20c966, 0x3ace7db4,
670
0x4adf6318, 0x311ae582, 0x33519760, 0x7f536245,
671
0x7764b1e0, 0xae6bbb84, 0xa081fe1c, 0x2b08f994,
672
0x68487058, 0xfd458f19, 0x6cde9487, 0xf87b52b7,
673
0xd373ab23, 0x024b72e2, 0x8f1fe357, 0xab55662a,
674
0x28ebb207, 0xc2b52f03, 0x7bc5869a, 0x0837d3a5,
675
0x872830f2, 0xa5bf23b2, 0x6a0302ba, 0x8216ed5c,
676
0x1ccf8a2b, 0xb479a792, 0xf207f3f0, 0xe2694ea1,
677
0xf4da65cd, 0xbe0506d5, 0x6234d11f, 0xfea6c48a,
678
0x532e349d, 0x55f3a2a0, 0xe18a0532, 0xebf6a475,
679
0xec830b39, 0xef6040aa, 0x9f715e06, 0x106ebd51,
680
0x8a213ef9, 0x06dd963d, 0x053eddae, 0xbde64d46,
681
0x8d5491b5, 0x5dc47105, 0xd406046f, 0x155060ff,
682
0xfb981924, 0xe9bdd697, 0x434089cc, 0x9ed96777,
683
0x42e8b0bd, 0x8b890788, 0x5b19e738, 0xeec879db,
684
0x0a7ca147, 0x0f427ce9, 0x1e84f8c9, 0x00000000,
685
0x86800983, 0xed2b3248, 0x70111eac, 0x725a6c4e,
686
0xff0efdfb, 0x38850f56, 0xd5ae3d1e, 0x392d3627,
687
0xd90f0a64, 0xa65c6821, 0x545b9bd1, 0x2e36243a,
688
0x670a0cb1, 0xe757930f, 0x96eeb4d2, 0x919b1b9e,
689
0xc5c0804f, 0x20dc61a2, 0x4b775a69, 0x1a121c16,
690
0xba93e20a, 0x2aa0c0e5, 0xe0223c43, 0x171b121d,
691
0x0d090e0b, 0xc78bf2ad, 0xa8b62db9, 0xa91e14c8,
692
0x19f15785, 0x0775af4c, 0xdd99eebb, 0x607fa3fd,
693
0x2601f79f, 0xf5725cbc, 0x3b6644c5, 0x7efb5b34,
694
0x29438b76, 0xc623cbdc, 0xfcedb668, 0xf1e4b863,
695
0xdc31d7ca, 0x85634210, 0x22971340, 0x11c68420,
696
0x244a857d, 0x3dbbd2f8, 0x32f9ae11, 0xa129c76d,
697
0x2f9e1d4b, 0x30b2dcf3, 0x52860dec, 0xe3c177d0,
698
0x16b32b6c, 0xb970a999, 0x489411fa, 0x64e94722,
699
0x8cfca8c4, 0x3ff0a01a, 0x2c7d56d8, 0x903322ef,
700
0x4e4987c7, 0xd138d9c1, 0xa2ca8cfe, 0x0bd49836,
701
0x81f5a6cf, 0xde7aa528, 0x8eb7da26, 0xbfad3fa4,
702
0x9d3a2ce4, 0x9278500d, 0xcc5f6a9b, 0x467e5462,
703
0x138df6c2, 0xb8d890e8, 0xf7392e5e, 0xafc382f5,
704
0x805d9fbe, 0x93d0697c, 0x2dd56fa9, 0x1225cfb3,
705
0x99acc83b, 0x7d1810a7, 0x639ce86e, 0xbb3bdb7b,
706
0x7826cd09, 0x18596ef4, 0xb79aec01, 0x9a4f83a8,
707
0x6e95e665, 0xe6ffaa7e, 0xcfbc2108, 0xe815efe6,
708
0x9be7bad9, 0x366f4ace, 0x099fead4, 0x7cb029d6,
709
0xb2a431af, 0x233f2a31, 0x94a5c630, 0x66a235c0,
710
0xbc4e7437, 0xca82fca6, 0xd090e0b0, 0xd8a73315,
711
0x9804f14a, 0xdaec41f7, 0x50cd7f0e, 0xf691172f,
712
0xd64d768d, 0xb0ef434d, 0x4daacc54, 0x0496e4df,
713
0xb5d19ee3, 0x886a4c1b, 0x1f2cc1b8, 0x5165467f,
714
0xea5e9d04, 0x358c015d, 0x7487fa73, 0x410bfb2e,
715
0x1d67b35a, 0xd2db9252, 0x5610e933, 0x47d66d13,
716
0x61d79a8c, 0x0ca1377a, 0x14f8598e, 0x3c13eb89,
717
0x27a9ceee, 0xc961b735, 0xe51ce1ed, 0xb1477a3c,
718
0xdfd29c59, 0x73f2553f, 0xce141879, 0x37c773bf,
719
0xcdf753ea, 0xaafd5f5b, 0x6f3ddf14, 0xdb447886,
720
0xf3afca81, 0xc468b93e, 0x3424382c, 0x40a3c25f,
721
0xc31d1672, 0x25e2bc0c, 0x493c288b, 0x950dff41,
722
0x01a83971, 0xb30c08de, 0xe4b4d89c, 0xc1566490,
723
0x84cb7b61, 0xb632d570, 0x5c6c4874, 0x57b8d042,
724
}, {
725
0xf45150a7, 0x417e5365, 0x171ac3a4, 0x273a965e,
726
0xab3bcb6b, 0x9d1ff145, 0xfaacab58, 0xe34b9303,
727
0x302055fa, 0x76adf66d, 0xcc889176, 0x02f5254c,
728
0xe54ffcd7, 0x2ac5d7cb, 0x35268044, 0x62b58fa3,
729
0xb1de495a, 0xba25671b, 0xea45980e, 0xfe5de1c0,
730
0x2fc30275, 0x4c8112f0, 0x468da397, 0xd36bc6f9,
731
0x8f03e75f, 0x9215959c, 0x6dbfeb7a, 0x5295da59,
732
0xbed42d83, 0x7458d321, 0xe0492969, 0xc98e44c8,
733
0xc2756a89, 0x8ef47879, 0x58996b3e, 0xb927dd71,
734
0xe1beb64f, 0x88f017ad, 0x20c966ac, 0xce7db43a,
735
0xdf63184a, 0x1ae58231, 0x51976033, 0x5362457f,
736
0x64b1e077, 0x6bbb84ae, 0x81fe1ca0, 0x08f9942b,
737
0x48705868, 0x458f19fd, 0xde94876c, 0x7b52b7f8,
738
0x73ab23d3, 0x4b72e202, 0x1fe3578f, 0x55662aab,
739
0xebb20728, 0xb52f03c2, 0xc5869a7b, 0x37d3a508,
740
0x2830f287, 0xbf23b2a5, 0x0302ba6a, 0x16ed5c82,
741
0xcf8a2b1c, 0x79a792b4, 0x07f3f0f2, 0x694ea1e2,
742
0xda65cdf4, 0x0506d5be, 0x34d11f62, 0xa6c48afe,
743
0x2e349d53, 0xf3a2a055, 0x8a0532e1, 0xf6a475eb,
744
0x830b39ec, 0x6040aaef, 0x715e069f, 0x6ebd5110,
745
0x213ef98a, 0xdd963d06, 0x3eddae05, 0xe64d46bd,
746
0x5491b58d, 0xc471055d, 0x06046fd4, 0x5060ff15,
747
0x981924fb, 0xbdd697e9, 0x4089cc43, 0xd967779e,
748
0xe8b0bd42, 0x8907888b, 0x19e7385b, 0xc879dbee,
749
0x7ca1470a, 0x427ce90f, 0x84f8c91e, 0x00000000,
750
0x80098386, 0x2b3248ed, 0x111eac70, 0x5a6c4e72,
751
0x0efdfbff, 0x850f5638, 0xae3d1ed5, 0x2d362739,
752
0x0f0a64d9, 0x5c6821a6, 0x5b9bd154, 0x36243a2e,
753
0x0a0cb167, 0x57930fe7, 0xeeb4d296, 0x9b1b9e91,
754
0xc0804fc5, 0xdc61a220, 0x775a694b, 0x121c161a,
755
0x93e20aba, 0xa0c0e52a, 0x223c43e0, 0x1b121d17,
756
0x090e0b0d, 0x8bf2adc7, 0xb62db9a8, 0x1e14c8a9,
757
0xf1578519, 0x75af4c07, 0x99eebbdd, 0x7fa3fd60,
758
0x01f79f26, 0x725cbcf5, 0x6644c53b, 0xfb5b347e,
759
0x438b7629, 0x23cbdcc6, 0xedb668fc, 0xe4b863f1,
760
0x31d7cadc, 0x63421085, 0x97134022, 0xc6842011,
761
0x4a857d24, 0xbbd2f83d, 0xf9ae1132, 0x29c76da1,
762
0x9e1d4b2f, 0xb2dcf330, 0x860dec52, 0xc177d0e3,
763
0xb32b6c16, 0x70a999b9, 0x9411fa48, 0xe9472264,
764
0xfca8c48c, 0xf0a01a3f, 0x7d56d82c, 0x3322ef90,
765
0x4987c74e, 0x38d9c1d1, 0xca8cfea2, 0xd498360b,
766
0xf5a6cf81, 0x7aa528de, 0xb7da268e, 0xad3fa4bf,
767
0x3a2ce49d, 0x78500d92, 0x5f6a9bcc, 0x7e546246,
768
0x8df6c213, 0xd890e8b8, 0x392e5ef7, 0xc382f5af,
769
0x5d9fbe80, 0xd0697c93, 0xd56fa92d, 0x25cfb312,
770
0xacc83b99, 0x1810a77d, 0x9ce86e63, 0x3bdb7bbb,
771
0x26cd0978, 0x596ef418, 0x9aec01b7, 0x4f83a89a,
772
0x95e6656e, 0xffaa7ee6, 0xbc2108cf, 0x15efe6e8,
773
0xe7bad99b, 0x6f4ace36, 0x9fead409, 0xb029d67c,
774
0xa431afb2, 0x3f2a3123, 0xa5c63094, 0xa235c066,
775
0x4e7437bc, 0x82fca6ca, 0x90e0b0d0, 0xa73315d8,
776
0x04f14a98, 0xec41f7da, 0xcd7f0e50, 0x91172ff6,
777
0x4d768dd6, 0xef434db0, 0xaacc544d, 0x96e4df04,
778
0xd19ee3b5, 0x6a4c1b88, 0x2cc1b81f, 0x65467f51,
779
0x5e9d04ea, 0x8c015d35, 0x87fa7374, 0x0bfb2e41,
780
0x67b35a1d, 0xdb9252d2, 0x10e93356, 0xd66d1347,
781
0xd79a8c61, 0xa1377a0c, 0xf8598e14, 0x13eb893c,
782
0xa9ceee27, 0x61b735c9, 0x1ce1ede5, 0x477a3cb1,
783
0xd29c59df, 0xf2553f73, 0x141879ce, 0xc773bf37,
784
0xf753eacd, 0xfd5f5baa, 0x3ddf146f, 0x447886db,
785
0xafca81f3, 0x68b93ec4, 0x24382c34, 0xa3c25f40,
786
0x1d1672c3, 0xe2bc0c25, 0x3c288b49, 0x0dff4195,
787
0xa8397101, 0x0c08deb3, 0xb4d89ce4, 0x566490c1,
788
0xcb7b6184, 0x32d570b6, 0x6c48745c, 0xb8d04257,
789
}, {
790
0x5150a7f4, 0x7e536541, 0x1ac3a417, 0x3a965e27,
791
0x3bcb6bab, 0x1ff1459d, 0xacab58fa, 0x4b9303e3,
792
0x2055fa30, 0xadf66d76, 0x889176cc, 0xf5254c02,
793
0x4ffcd7e5, 0xc5d7cb2a, 0x26804435, 0xb58fa362,
794
0xde495ab1, 0x25671bba, 0x45980eea, 0x5de1c0fe,
795
0xc302752f, 0x8112f04c, 0x8da39746, 0x6bc6f9d3,
796
0x03e75f8f, 0x15959c92, 0xbfeb7a6d, 0x95da5952,
797
0xd42d83be, 0x58d32174, 0x492969e0, 0x8e44c8c9,
798
0x756a89c2, 0xf478798e, 0x996b3e58, 0x27dd71b9,
799
0xbeb64fe1, 0xf017ad88, 0xc966ac20, 0x7db43ace,
800
0x63184adf, 0xe582311a, 0x97603351, 0x62457f53,
801
0xb1e07764, 0xbb84ae6b, 0xfe1ca081, 0xf9942b08,
802
0x70586848, 0x8f19fd45, 0x94876cde, 0x52b7f87b,
803
0xab23d373, 0x72e2024b, 0xe3578f1f, 0x662aab55,
804
0xb20728eb, 0x2f03c2b5, 0x869a7bc5, 0xd3a50837,
805
0x30f28728, 0x23b2a5bf, 0x02ba6a03, 0xed5c8216,
806
0x8a2b1ccf, 0xa792b479, 0xf3f0f207, 0x4ea1e269,
807
0x65cdf4da, 0x06d5be05, 0xd11f6234, 0xc48afea6,
808
0x349d532e, 0xa2a055f3, 0x0532e18a, 0xa475ebf6,
809
0x0b39ec83, 0x40aaef60, 0x5e069f71, 0xbd51106e,
810
0x3ef98a21, 0x963d06dd, 0xddae053e, 0x4d46bde6,
811
0x91b58d54, 0x71055dc4, 0x046fd406, 0x60ff1550,
812
0x1924fb98, 0xd697e9bd, 0x89cc4340, 0x67779ed9,
813
0xb0bd42e8, 0x07888b89, 0xe7385b19, 0x79dbeec8,
814
0xa1470a7c, 0x7ce90f42, 0xf8c91e84, 0x00000000,
815
0x09838680, 0x3248ed2b, 0x1eac7011, 0x6c4e725a,
816
0xfdfbff0e, 0x0f563885, 0x3d1ed5ae, 0x3627392d,
817
0x0a64d90f, 0x6821a65c, 0x9bd1545b, 0x243a2e36,
818
0x0cb1670a, 0x930fe757, 0xb4d296ee, 0x1b9e919b,
819
0x804fc5c0, 0x61a220dc, 0x5a694b77, 0x1c161a12,
820
0xe20aba93, 0xc0e52aa0, 0x3c43e022, 0x121d171b,
821
0x0e0b0d09, 0xf2adc78b, 0x2db9a8b6, 0x14c8a91e,
822
0x578519f1, 0xaf4c0775, 0xeebbdd99, 0xa3fd607f,
823
0xf79f2601, 0x5cbcf572, 0x44c53b66, 0x5b347efb,
824
0x8b762943, 0xcbdcc623, 0xb668fced, 0xb863f1e4,
825
0xd7cadc31, 0x42108563, 0x13402297, 0x842011c6,
826
0x857d244a, 0xd2f83dbb, 0xae1132f9, 0xc76da129,
827
0x1d4b2f9e, 0xdcf330b2, 0x0dec5286, 0x77d0e3c1,
828
0x2b6c16b3, 0xa999b970, 0x11fa4894, 0x472264e9,
829
0xa8c48cfc, 0xa01a3ff0, 0x56d82c7d, 0x22ef9033,
830
0x87c74e49, 0xd9c1d138, 0x8cfea2ca, 0x98360bd4,
831
0xa6cf81f5, 0xa528de7a, 0xda268eb7, 0x3fa4bfad,
832
0x2ce49d3a, 0x500d9278, 0x6a9bcc5f, 0x5462467e,
833
0xf6c2138d, 0x90e8b8d8, 0x2e5ef739, 0x82f5afc3,
834
0x9fbe805d, 0x697c93d0, 0x6fa92dd5, 0xcfb31225,
835
0xc83b99ac, 0x10a77d18, 0xe86e639c, 0xdb7bbb3b,
836
0xcd097826, 0x6ef41859, 0xec01b79a, 0x83a89a4f,
837
0xe6656e95, 0xaa7ee6ff, 0x2108cfbc, 0xefe6e815,
838
0xbad99be7, 0x4ace366f, 0xead4099f, 0x29d67cb0,
839
0x31afb2a4, 0x2a31233f, 0xc63094a5, 0x35c066a2,
840
0x7437bc4e, 0xfca6ca82, 0xe0b0d090, 0x3315d8a7,
841
0xf14a9804, 0x41f7daec, 0x7f0e50cd, 0x172ff691,
842
0x768dd64d, 0x434db0ef, 0xcc544daa, 0xe4df0496,
843
0x9ee3b5d1, 0x4c1b886a, 0xc1b81f2c, 0x467f5165,
844
0x9d04ea5e, 0x015d358c, 0xfa737487, 0xfb2e410b,
845
0xb35a1d67, 0x9252d2db, 0xe9335610, 0x6d1347d6,
846
0x9a8c61d7, 0x377a0ca1, 0x598e14f8, 0xeb893c13,
847
0xceee27a9, 0xb735c961, 0xe1ede51c, 0x7a3cb147,
848
0x9c59dfd2, 0x553f73f2, 0x1879ce14, 0x73bf37c7,
849
0x53eacdf7, 0x5f5baafd, 0xdf146f3d, 0x7886db44,
850
0xca81f3af, 0xb93ec468, 0x382c3424, 0xc25f40a3,
851
0x1672c31d, 0xbc0c25e2, 0x288b493c, 0xff41950d,
852
0x397101a8, 0x08deb30c, 0xd89ce4b4, 0x6490c156,
853
0x7b6184cb, 0xd570b632, 0x48745c6c, 0xd04257b8,
854
}
855
};
856
857
static const u32 crypto_il_tab[4][256] ____cacheline_aligned = {
858
{
859
0x00000052, 0x00000009, 0x0000006a, 0x000000d5,
860
0x00000030, 0x00000036, 0x000000a5, 0x00000038,
861
0x000000bf, 0x00000040, 0x000000a3, 0x0000009e,
862
0x00000081, 0x000000f3, 0x000000d7, 0x000000fb,
863
0x0000007c, 0x000000e3, 0x00000039, 0x00000082,
864
0x0000009b, 0x0000002f, 0x000000ff, 0x00000087,
865
0x00000034, 0x0000008e, 0x00000043, 0x00000044,
866
0x000000c4, 0x000000de, 0x000000e9, 0x000000cb,
867
0x00000054, 0x0000007b, 0x00000094, 0x00000032,
868
0x000000a6, 0x000000c2, 0x00000023, 0x0000003d,
869
0x000000ee, 0x0000004c, 0x00000095, 0x0000000b,
870
0x00000042, 0x000000fa, 0x000000c3, 0x0000004e,
871
0x00000008, 0x0000002e, 0x000000a1, 0x00000066,
872
0x00000028, 0x000000d9, 0x00000024, 0x000000b2,
873
0x00000076, 0x0000005b, 0x000000a2, 0x00000049,
874
0x0000006d, 0x0000008b, 0x000000d1, 0x00000025,
875
0x00000072, 0x000000f8, 0x000000f6, 0x00000064,
876
0x00000086, 0x00000068, 0x00000098, 0x00000016,
877
0x000000d4, 0x000000a4, 0x0000005c, 0x000000cc,
878
0x0000005d, 0x00000065, 0x000000b6, 0x00000092,
879
0x0000006c, 0x00000070, 0x00000048, 0x00000050,
880
0x000000fd, 0x000000ed, 0x000000b9, 0x000000da,
881
0x0000005e, 0x00000015, 0x00000046, 0x00000057,
882
0x000000a7, 0x0000008d, 0x0000009d, 0x00000084,
883
0x00000090, 0x000000d8, 0x000000ab, 0x00000000,
884
0x0000008c, 0x000000bc, 0x000000d3, 0x0000000a,
885
0x000000f7, 0x000000e4, 0x00000058, 0x00000005,
886
0x000000b8, 0x000000b3, 0x00000045, 0x00000006,
887
0x000000d0, 0x0000002c, 0x0000001e, 0x0000008f,
888
0x000000ca, 0x0000003f, 0x0000000f, 0x00000002,
889
0x000000c1, 0x000000af, 0x000000bd, 0x00000003,
890
0x00000001, 0x00000013, 0x0000008a, 0x0000006b,
891
0x0000003a, 0x00000091, 0x00000011, 0x00000041,
892
0x0000004f, 0x00000067, 0x000000dc, 0x000000ea,
893
0x00000097, 0x000000f2, 0x000000cf, 0x000000ce,
894
0x000000f0, 0x000000b4, 0x000000e6, 0x00000073,
895
0x00000096, 0x000000ac, 0x00000074, 0x00000022,
896
0x000000e7, 0x000000ad, 0x00000035, 0x00000085,
897
0x000000e2, 0x000000f9, 0x00000037, 0x000000e8,
898
0x0000001c, 0x00000075, 0x000000df, 0x0000006e,
899
0x00000047, 0x000000f1, 0x0000001a, 0x00000071,
900
0x0000001d, 0x00000029, 0x000000c5, 0x00000089,
901
0x0000006f, 0x000000b7, 0x00000062, 0x0000000e,
902
0x000000aa, 0x00000018, 0x000000be, 0x0000001b,
903
0x000000fc, 0x00000056, 0x0000003e, 0x0000004b,
904
0x000000c6, 0x000000d2, 0x00000079, 0x00000020,
905
0x0000009a, 0x000000db, 0x000000c0, 0x000000fe,
906
0x00000078, 0x000000cd, 0x0000005a, 0x000000f4,
907
0x0000001f, 0x000000dd, 0x000000a8, 0x00000033,
908
0x00000088, 0x00000007, 0x000000c7, 0x00000031,
909
0x000000b1, 0x00000012, 0x00000010, 0x00000059,
910
0x00000027, 0x00000080, 0x000000ec, 0x0000005f,
911
0x00000060, 0x00000051, 0x0000007f, 0x000000a9,
912
0x00000019, 0x000000b5, 0x0000004a, 0x0000000d,
913
0x0000002d, 0x000000e5, 0x0000007a, 0x0000009f,
914
0x00000093, 0x000000c9, 0x0000009c, 0x000000ef,
915
0x000000a0, 0x000000e0, 0x0000003b, 0x0000004d,
916
0x000000ae, 0x0000002a, 0x000000f5, 0x000000b0,
917
0x000000c8, 0x000000eb, 0x000000bb, 0x0000003c,
918
0x00000083, 0x00000053, 0x00000099, 0x00000061,
919
0x00000017, 0x0000002b, 0x00000004, 0x0000007e,
920
0x000000ba, 0x00000077, 0x000000d6, 0x00000026,
921
0x000000e1, 0x00000069, 0x00000014, 0x00000063,
922
0x00000055, 0x00000021, 0x0000000c, 0x0000007d,
923
}, {
924
0x00005200, 0x00000900, 0x00006a00, 0x0000d500,
925
0x00003000, 0x00003600, 0x0000a500, 0x00003800,
926
0x0000bf00, 0x00004000, 0x0000a300, 0x00009e00,
927
0x00008100, 0x0000f300, 0x0000d700, 0x0000fb00,
928
0x00007c00, 0x0000e300, 0x00003900, 0x00008200,
929
0x00009b00, 0x00002f00, 0x0000ff00, 0x00008700,
930
0x00003400, 0x00008e00, 0x00004300, 0x00004400,
931
0x0000c400, 0x0000de00, 0x0000e900, 0x0000cb00,
932
0x00005400, 0x00007b00, 0x00009400, 0x00003200,
933
0x0000a600, 0x0000c200, 0x00002300, 0x00003d00,
934
0x0000ee00, 0x00004c00, 0x00009500, 0x00000b00,
935
0x00004200, 0x0000fa00, 0x0000c300, 0x00004e00,
936
0x00000800, 0x00002e00, 0x0000a100, 0x00006600,
937
0x00002800, 0x0000d900, 0x00002400, 0x0000b200,
938
0x00007600, 0x00005b00, 0x0000a200, 0x00004900,
939
0x00006d00, 0x00008b00, 0x0000d100, 0x00002500,
940
0x00007200, 0x0000f800, 0x0000f600, 0x00006400,
941
0x00008600, 0x00006800, 0x00009800, 0x00001600,
942
0x0000d400, 0x0000a400, 0x00005c00, 0x0000cc00,
943
0x00005d00, 0x00006500, 0x0000b600, 0x00009200,
944
0x00006c00, 0x00007000, 0x00004800, 0x00005000,
945
0x0000fd00, 0x0000ed00, 0x0000b900, 0x0000da00,
946
0x00005e00, 0x00001500, 0x00004600, 0x00005700,
947
0x0000a700, 0x00008d00, 0x00009d00, 0x00008400,
948
0x00009000, 0x0000d800, 0x0000ab00, 0x00000000,
949
0x00008c00, 0x0000bc00, 0x0000d300, 0x00000a00,
950
0x0000f700, 0x0000e400, 0x00005800, 0x00000500,
951
0x0000b800, 0x0000b300, 0x00004500, 0x00000600,
952
0x0000d000, 0x00002c00, 0x00001e00, 0x00008f00,
953
0x0000ca00, 0x00003f00, 0x00000f00, 0x00000200,
954
0x0000c100, 0x0000af00, 0x0000bd00, 0x00000300,
955
0x00000100, 0x00001300, 0x00008a00, 0x00006b00,
956
0x00003a00, 0x00009100, 0x00001100, 0x00004100,
957
0x00004f00, 0x00006700, 0x0000dc00, 0x0000ea00,
958
0x00009700, 0x0000f200, 0x0000cf00, 0x0000ce00,
959
0x0000f000, 0x0000b400, 0x0000e600, 0x00007300,
960
0x00009600, 0x0000ac00, 0x00007400, 0x00002200,
961
0x0000e700, 0x0000ad00, 0x00003500, 0x00008500,
962
0x0000e200, 0x0000f900, 0x00003700, 0x0000e800,
963
0x00001c00, 0x00007500, 0x0000df00, 0x00006e00,
964
0x00004700, 0x0000f100, 0x00001a00, 0x00007100,
965
0x00001d00, 0x00002900, 0x0000c500, 0x00008900,
966
0x00006f00, 0x0000b700, 0x00006200, 0x00000e00,
967
0x0000aa00, 0x00001800, 0x0000be00, 0x00001b00,
968
0x0000fc00, 0x00005600, 0x00003e00, 0x00004b00,
969
0x0000c600, 0x0000d200, 0x00007900, 0x00002000,
970
0x00009a00, 0x0000db00, 0x0000c000, 0x0000fe00,
971
0x00007800, 0x0000cd00, 0x00005a00, 0x0000f400,
972
0x00001f00, 0x0000dd00, 0x0000a800, 0x00003300,
973
0x00008800, 0x00000700, 0x0000c700, 0x00003100,
974
0x0000b100, 0x00001200, 0x00001000, 0x00005900,
975
0x00002700, 0x00008000, 0x0000ec00, 0x00005f00,
976
0x00006000, 0x00005100, 0x00007f00, 0x0000a900,
977
0x00001900, 0x0000b500, 0x00004a00, 0x00000d00,
978
0x00002d00, 0x0000e500, 0x00007a00, 0x00009f00,
979
0x00009300, 0x0000c900, 0x00009c00, 0x0000ef00,
980
0x0000a000, 0x0000e000, 0x00003b00, 0x00004d00,
981
0x0000ae00, 0x00002a00, 0x0000f500, 0x0000b000,
982
0x0000c800, 0x0000eb00, 0x0000bb00, 0x00003c00,
983
0x00008300, 0x00005300, 0x00009900, 0x00006100,
984
0x00001700, 0x00002b00, 0x00000400, 0x00007e00,
985
0x0000ba00, 0x00007700, 0x0000d600, 0x00002600,
986
0x0000e100, 0x00006900, 0x00001400, 0x00006300,
987
0x00005500, 0x00002100, 0x00000c00, 0x00007d00,
988
}, {
989
0x00520000, 0x00090000, 0x006a0000, 0x00d50000,
990
0x00300000, 0x00360000, 0x00a50000, 0x00380000,
991
0x00bf0000, 0x00400000, 0x00a30000, 0x009e0000,
992
0x00810000, 0x00f30000, 0x00d70000, 0x00fb0000,
993
0x007c0000, 0x00e30000, 0x00390000, 0x00820000,
994
0x009b0000, 0x002f0000, 0x00ff0000, 0x00870000,
995
0x00340000, 0x008e0000, 0x00430000, 0x00440000,
996
0x00c40000, 0x00de0000, 0x00e90000, 0x00cb0000,
997
0x00540000, 0x007b0000, 0x00940000, 0x00320000,
998
0x00a60000, 0x00c20000, 0x00230000, 0x003d0000,
999
0x00ee0000, 0x004c0000, 0x00950000, 0x000b0000,
1000
0x00420000, 0x00fa0000, 0x00c30000, 0x004e0000,
1001
0x00080000, 0x002e0000, 0x00a10000, 0x00660000,
1002
0x00280000, 0x00d90000, 0x00240000, 0x00b20000,
1003
0x00760000, 0x005b0000, 0x00a20000, 0x00490000,
1004
0x006d0000, 0x008b0000, 0x00d10000, 0x00250000,
1005
0x00720000, 0x00f80000, 0x00f60000, 0x00640000,
1006
0x00860000, 0x00680000, 0x00980000, 0x00160000,
1007
0x00d40000, 0x00a40000, 0x005c0000, 0x00cc0000,
1008
0x005d0000, 0x00650000, 0x00b60000, 0x00920000,
1009
0x006c0000, 0x00700000, 0x00480000, 0x00500000,
1010
0x00fd0000, 0x00ed0000, 0x00b90000, 0x00da0000,
1011
0x005e0000, 0x00150000, 0x00460000, 0x00570000,
1012
0x00a70000, 0x008d0000, 0x009d0000, 0x00840000,
1013
0x00900000, 0x00d80000, 0x00ab0000, 0x00000000,
1014
0x008c0000, 0x00bc0000, 0x00d30000, 0x000a0000,
1015
0x00f70000, 0x00e40000, 0x00580000, 0x00050000,
1016
0x00b80000, 0x00b30000, 0x00450000, 0x00060000,
1017
0x00d00000, 0x002c0000, 0x001e0000, 0x008f0000,
1018
0x00ca0000, 0x003f0000, 0x000f0000, 0x00020000,
1019
0x00c10000, 0x00af0000, 0x00bd0000, 0x00030000,
1020
0x00010000, 0x00130000, 0x008a0000, 0x006b0000,
1021
0x003a0000, 0x00910000, 0x00110000, 0x00410000,
1022
0x004f0000, 0x00670000, 0x00dc0000, 0x00ea0000,
1023
0x00970000, 0x00f20000, 0x00cf0000, 0x00ce0000,
1024
0x00f00000, 0x00b40000, 0x00e60000, 0x00730000,
1025
0x00960000, 0x00ac0000, 0x00740000, 0x00220000,
1026
0x00e70000, 0x00ad0000, 0x00350000, 0x00850000,
1027
0x00e20000, 0x00f90000, 0x00370000, 0x00e80000,
1028
0x001c0000, 0x00750000, 0x00df0000, 0x006e0000,
1029
0x00470000, 0x00f10000, 0x001a0000, 0x00710000,
1030
0x001d0000, 0x00290000, 0x00c50000, 0x00890000,
1031
0x006f0000, 0x00b70000, 0x00620000, 0x000e0000,
1032
0x00aa0000, 0x00180000, 0x00be0000, 0x001b0000,
1033
0x00fc0000, 0x00560000, 0x003e0000, 0x004b0000,
1034
0x00c60000, 0x00d20000, 0x00790000, 0x00200000,
1035
0x009a0000, 0x00db0000, 0x00c00000, 0x00fe0000,
1036
0x00780000, 0x00cd0000, 0x005a0000, 0x00f40000,
1037
0x001f0000, 0x00dd0000, 0x00a80000, 0x00330000,
1038
0x00880000, 0x00070000, 0x00c70000, 0x00310000,
1039
0x00b10000, 0x00120000, 0x00100000, 0x00590000,
1040
0x00270000, 0x00800000, 0x00ec0000, 0x005f0000,
1041
0x00600000, 0x00510000, 0x007f0000, 0x00a90000,
1042
0x00190000, 0x00b50000, 0x004a0000, 0x000d0000,
1043
0x002d0000, 0x00e50000, 0x007a0000, 0x009f0000,
1044
0x00930000, 0x00c90000, 0x009c0000, 0x00ef0000,
1045
0x00a00000, 0x00e00000, 0x003b0000, 0x004d0000,
1046
0x00ae0000, 0x002a0000, 0x00f50000, 0x00b00000,
1047
0x00c80000, 0x00eb0000, 0x00bb0000, 0x003c0000,
1048
0x00830000, 0x00530000, 0x00990000, 0x00610000,
1049
0x00170000, 0x002b0000, 0x00040000, 0x007e0000,
1050
0x00ba0000, 0x00770000, 0x00d60000, 0x00260000,
1051
0x00e10000, 0x00690000, 0x00140000, 0x00630000,
1052
0x00550000, 0x00210000, 0x000c0000, 0x007d0000,
1053
}, {
1054
0x52000000, 0x09000000, 0x6a000000, 0xd5000000,
1055
0x30000000, 0x36000000, 0xa5000000, 0x38000000,
1056
0xbf000000, 0x40000000, 0xa3000000, 0x9e000000,
1057
0x81000000, 0xf3000000, 0xd7000000, 0xfb000000,
1058
0x7c000000, 0xe3000000, 0x39000000, 0x82000000,
1059
0x9b000000, 0x2f000000, 0xff000000, 0x87000000,
1060
0x34000000, 0x8e000000, 0x43000000, 0x44000000,
1061
0xc4000000, 0xde000000, 0xe9000000, 0xcb000000,
1062
0x54000000, 0x7b000000, 0x94000000, 0x32000000,
1063
0xa6000000, 0xc2000000, 0x23000000, 0x3d000000,
1064
0xee000000, 0x4c000000, 0x95000000, 0x0b000000,
1065
0x42000000, 0xfa000000, 0xc3000000, 0x4e000000,
1066
0x08000000, 0x2e000000, 0xa1000000, 0x66000000,
1067
0x28000000, 0xd9000000, 0x24000000, 0xb2000000,
1068
0x76000000, 0x5b000000, 0xa2000000, 0x49000000,
1069
0x6d000000, 0x8b000000, 0xd1000000, 0x25000000,
1070
0x72000000, 0xf8000000, 0xf6000000, 0x64000000,
1071
0x86000000, 0x68000000, 0x98000000, 0x16000000,
1072
0xd4000000, 0xa4000000, 0x5c000000, 0xcc000000,
1073
0x5d000000, 0x65000000, 0xb6000000, 0x92000000,
1074
0x6c000000, 0x70000000, 0x48000000, 0x50000000,
1075
0xfd000000, 0xed000000, 0xb9000000, 0xda000000,
1076
0x5e000000, 0x15000000, 0x46000000, 0x57000000,
1077
0xa7000000, 0x8d000000, 0x9d000000, 0x84000000,
1078
0x90000000, 0xd8000000, 0xab000000, 0x00000000,
1079
0x8c000000, 0xbc000000, 0xd3000000, 0x0a000000,
1080
0xf7000000, 0xe4000000, 0x58000000, 0x05000000,
1081
0xb8000000, 0xb3000000, 0x45000000, 0x06000000,
1082
0xd0000000, 0x2c000000, 0x1e000000, 0x8f000000,
1083
0xca000000, 0x3f000000, 0x0f000000, 0x02000000,
1084
0xc1000000, 0xaf000000, 0xbd000000, 0x03000000,
1085
0x01000000, 0x13000000, 0x8a000000, 0x6b000000,
1086
0x3a000000, 0x91000000, 0x11000000, 0x41000000,
1087
0x4f000000, 0x67000000, 0xdc000000, 0xea000000,
1088
0x97000000, 0xf2000000, 0xcf000000, 0xce000000,
1089
0xf0000000, 0xb4000000, 0xe6000000, 0x73000000,
1090
0x96000000, 0xac000000, 0x74000000, 0x22000000,
1091
0xe7000000, 0xad000000, 0x35000000, 0x85000000,
1092
0xe2000000, 0xf9000000, 0x37000000, 0xe8000000,
1093
0x1c000000, 0x75000000, 0xdf000000, 0x6e000000,
1094
0x47000000, 0xf1000000, 0x1a000000, 0x71000000,
1095
0x1d000000, 0x29000000, 0xc5000000, 0x89000000,
1096
0x6f000000, 0xb7000000, 0x62000000, 0x0e000000,
1097
0xaa000000, 0x18000000, 0xbe000000, 0x1b000000,
1098
0xfc000000, 0x56000000, 0x3e000000, 0x4b000000,
1099
0xc6000000, 0xd2000000, 0x79000000, 0x20000000,
1100
0x9a000000, 0xdb000000, 0xc0000000, 0xfe000000,
1101
0x78000000, 0xcd000000, 0x5a000000, 0xf4000000,
1102
0x1f000000, 0xdd000000, 0xa8000000, 0x33000000,
1103
0x88000000, 0x07000000, 0xc7000000, 0x31000000,
1104
0xb1000000, 0x12000000, 0x10000000, 0x59000000,
1105
0x27000000, 0x80000000, 0xec000000, 0x5f000000,
1106
0x60000000, 0x51000000, 0x7f000000, 0xa9000000,
1107
0x19000000, 0xb5000000, 0x4a000000, 0x0d000000,
1108
0x2d000000, 0xe5000000, 0x7a000000, 0x9f000000,
1109
0x93000000, 0xc9000000, 0x9c000000, 0xef000000,
1110
0xa0000000, 0xe0000000, 0x3b000000, 0x4d000000,
1111
0xae000000, 0x2a000000, 0xf5000000, 0xb0000000,
1112
0xc8000000, 0xeb000000, 0xbb000000, 0x3c000000,
1113
0x83000000, 0x53000000, 0x99000000, 0x61000000,
1114
0x17000000, 0x2b000000, 0x04000000, 0x7e000000,
1115
0xba000000, 0x77000000, 0xd6000000, 0x26000000,
1116
0xe1000000, 0x69000000, 0x14000000, 0x63000000,
1117
0x55000000, 0x21000000, 0x0c000000, 0x7d000000,
1118
}
1119
};
1120
1121
EXPORT_SYMBOL_GPL(crypto_ft_tab);
1122
EXPORT_SYMBOL_GPL(crypto_it_tab);
1123
1124
/**
1125
* crypto_aes_set_key - Set the AES key.
1126
* @tfm: The %crypto_tfm that is used in the context.
1127
* @in_key: The input key.
1128
* @key_len: The size of the key.
1129
*
1130
* This function uses aes_expand_key() to expand the key. &crypto_aes_ctx
1131
* _must_ be the private data embedded in @tfm which is retrieved with
1132
* crypto_tfm_ctx().
1133
*
1134
* Return: 0 on success; -EINVAL on failure (only happens for bad key lengths)
1135
*/
1136
int crypto_aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
1137
unsigned int key_len)
1138
{
1139
struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm);
1140
1141
return aes_expandkey(ctx, in_key, key_len);
1142
}
1143
EXPORT_SYMBOL_GPL(crypto_aes_set_key);
1144
1145
/* encrypt a block of text */
1146
1147
#define f_rn(bo, bi, n, k) do { \
1148
bo[n] = crypto_ft_tab[0][byte(bi[n], 0)] ^ \
1149
crypto_ft_tab[1][byte(bi[(n + 1) & 3], 1)] ^ \
1150
crypto_ft_tab[2][byte(bi[(n + 2) & 3], 2)] ^ \
1151
crypto_ft_tab[3][byte(bi[(n + 3) & 3], 3)] ^ *(k + n); \
1152
} while (0)
1153
1154
#define f_nround(bo, bi, k) do {\
1155
f_rn(bo, bi, 0, k); \
1156
f_rn(bo, bi, 1, k); \
1157
f_rn(bo, bi, 2, k); \
1158
f_rn(bo, bi, 3, k); \
1159
k += 4; \
1160
} while (0)
1161
1162
#define f_rl(bo, bi, n, k) do { \
1163
bo[n] = crypto_fl_tab[0][byte(bi[n], 0)] ^ \
1164
crypto_fl_tab[1][byte(bi[(n + 1) & 3], 1)] ^ \
1165
crypto_fl_tab[2][byte(bi[(n + 2) & 3], 2)] ^ \
1166
crypto_fl_tab[3][byte(bi[(n + 3) & 3], 3)] ^ *(k + n); \
1167
} while (0)
1168
1169
#define f_lround(bo, bi, k) do {\
1170
f_rl(bo, bi, 0, k); \
1171
f_rl(bo, bi, 1, k); \
1172
f_rl(bo, bi, 2, k); \
1173
f_rl(bo, bi, 3, k); \
1174
} while (0)
1175
1176
static void crypto_aes_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
1177
{
1178
const struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm);
1179
u32 b0[4], b1[4];
1180
const u32 *kp = ctx->key_enc + 4;
1181
const int key_len = ctx->key_length;
1182
1183
b0[0] = ctx->key_enc[0] ^ get_unaligned_le32(in);
1184
b0[1] = ctx->key_enc[1] ^ get_unaligned_le32(in + 4);
1185
b0[2] = ctx->key_enc[2] ^ get_unaligned_le32(in + 8);
1186
b0[3] = ctx->key_enc[3] ^ get_unaligned_le32(in + 12);
1187
1188
if (key_len > 24) {
1189
f_nround(b1, b0, kp);
1190
f_nround(b0, b1, kp);
1191
}
1192
1193
if (key_len > 16) {
1194
f_nround(b1, b0, kp);
1195
f_nround(b0, b1, kp);
1196
}
1197
1198
f_nround(b1, b0, kp);
1199
f_nround(b0, b1, kp);
1200
f_nround(b1, b0, kp);
1201
f_nround(b0, b1, kp);
1202
f_nround(b1, b0, kp);
1203
f_nround(b0, b1, kp);
1204
f_nround(b1, b0, kp);
1205
f_nround(b0, b1, kp);
1206
f_nround(b1, b0, kp);
1207
f_lround(b0, b1, kp);
1208
1209
put_unaligned_le32(b0[0], out);
1210
put_unaligned_le32(b0[1], out + 4);
1211
put_unaligned_le32(b0[2], out + 8);
1212
put_unaligned_le32(b0[3], out + 12);
1213
}
1214
1215
/* decrypt a block of text */
1216
1217
#define i_rn(bo, bi, n, k) do { \
1218
bo[n] = crypto_it_tab[0][byte(bi[n], 0)] ^ \
1219
crypto_it_tab[1][byte(bi[(n + 3) & 3], 1)] ^ \
1220
crypto_it_tab[2][byte(bi[(n + 2) & 3], 2)] ^ \
1221
crypto_it_tab[3][byte(bi[(n + 1) & 3], 3)] ^ *(k + n); \
1222
} while (0)
1223
1224
#define i_nround(bo, bi, k) do {\
1225
i_rn(bo, bi, 0, k); \
1226
i_rn(bo, bi, 1, k); \
1227
i_rn(bo, bi, 2, k); \
1228
i_rn(bo, bi, 3, k); \
1229
k += 4; \
1230
} while (0)
1231
1232
#define i_rl(bo, bi, n, k) do { \
1233
bo[n] = crypto_il_tab[0][byte(bi[n], 0)] ^ \
1234
crypto_il_tab[1][byte(bi[(n + 3) & 3], 1)] ^ \
1235
crypto_il_tab[2][byte(bi[(n + 2) & 3], 2)] ^ \
1236
crypto_il_tab[3][byte(bi[(n + 1) & 3], 3)] ^ *(k + n); \
1237
} while (0)
1238
1239
#define i_lround(bo, bi, k) do {\
1240
i_rl(bo, bi, 0, k); \
1241
i_rl(bo, bi, 1, k); \
1242
i_rl(bo, bi, 2, k); \
1243
i_rl(bo, bi, 3, k); \
1244
} while (0)
1245
1246
static void crypto_aes_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
1247
{
1248
const struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm);
1249
u32 b0[4], b1[4];
1250
const int key_len = ctx->key_length;
1251
const u32 *kp = ctx->key_dec + 4;
1252
1253
b0[0] = ctx->key_dec[0] ^ get_unaligned_le32(in);
1254
b0[1] = ctx->key_dec[1] ^ get_unaligned_le32(in + 4);
1255
b0[2] = ctx->key_dec[2] ^ get_unaligned_le32(in + 8);
1256
b0[3] = ctx->key_dec[3] ^ get_unaligned_le32(in + 12);
1257
1258
if (key_len > 24) {
1259
i_nround(b1, b0, kp);
1260
i_nround(b0, b1, kp);
1261
}
1262
1263
if (key_len > 16) {
1264
i_nround(b1, b0, kp);
1265
i_nround(b0, b1, kp);
1266
}
1267
1268
i_nround(b1, b0, kp);
1269
i_nround(b0, b1, kp);
1270
i_nround(b1, b0, kp);
1271
i_nround(b0, b1, kp);
1272
i_nround(b1, b0, kp);
1273
i_nround(b0, b1, kp);
1274
i_nround(b1, b0, kp);
1275
i_nround(b0, b1, kp);
1276
i_nround(b1, b0, kp);
1277
i_lround(b0, b1, kp);
1278
1279
put_unaligned_le32(b0[0], out);
1280
put_unaligned_le32(b0[1], out + 4);
1281
put_unaligned_le32(b0[2], out + 8);
1282
put_unaligned_le32(b0[3], out + 12);
1283
}
1284
1285
static struct crypto_alg aes_alg = {
1286
.cra_name = "aes",
1287
.cra_driver_name = "aes-generic",
1288
.cra_priority = 100,
1289
.cra_flags = CRYPTO_ALG_TYPE_CIPHER,
1290
.cra_blocksize = AES_BLOCK_SIZE,
1291
.cra_ctxsize = sizeof(struct crypto_aes_ctx),
1292
.cra_module = THIS_MODULE,
1293
.cra_u = {
1294
.cipher = {
1295
.cia_min_keysize = AES_MIN_KEY_SIZE,
1296
.cia_max_keysize = AES_MAX_KEY_SIZE,
1297
.cia_setkey = crypto_aes_set_key,
1298
.cia_encrypt = crypto_aes_encrypt,
1299
.cia_decrypt = crypto_aes_decrypt
1300
}
1301
}
1302
};
1303
1304
static int __init aes_init(void)
1305
{
1306
return crypto_register_alg(&aes_alg);
1307
}
1308
1309
static void __exit aes_fini(void)
1310
{
1311
crypto_unregister_alg(&aes_alg);
1312
}
1313
1314
module_init(aes_init);
1315
module_exit(aes_fini);
1316
1317
MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm");
1318
MODULE_LICENSE("Dual BSD/GPL");
1319
MODULE_ALIAS_CRYPTO("aes");
1320
MODULE_ALIAS_CRYPTO("aes-generic");
1321
1322