~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/crypto/aes_generic.c

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /crypto/aes_generic.c (Version linux-6.11.5) and /crypto/aes_generic.c (Version linux-2.4.37.11)


  1 /*                                                  1 
  2  * Cryptographic API.                             
  3  *                                                
  4  * AES Cipher Algorithm.                          
  5  *                                                
  6  * Based on Brian Gladman's code.                 
  7  *                                                
  8  * Linux developers:                              
  9  *  Alexander Kjeldaas <astor@fast.no>            
 10  *  Herbert Valerio Riedel <hvr@hvrlab.org>       
 11  *  Kyle McMartin <kyle@debian.org>               
 12  *  Adam J. Richter <adam@yggdrasil.com> (conv    
 13  *                                                
 14  * This program is free software; you can redi    
 15  * it under the terms of the GNU General Publi    
 16  * the Free Software Foundation; either versio    
 17  * (at your option) any later version.            
 18  *                                                
 19  * -------------------------------------------    
 20  * Copyright (c) 2002, Dr Brian Gladman <brg@g    
 21  * All rights reserved.                           
 22  *                                                
 23  * LICENSE TERMS                                  
 24  *                                                
 25  * The free distribution and use of this softw    
 26  * form is allowed (with or without changes) p    
 27  *                                                
 28  *   1. distributions of this source code incl    
 29  *      notice, this list of conditions and th    
 30  *                                                
 31  *   2. distributions in binary form include t    
 32  *      notice, this list of conditions and th    
 33  *      in the documentation and/or other asso    
 34  *                                                
 35  *   3. the copyright holder's name is not use    
 36  *      built using this software without spec    
 37  *                                                
 38  * ALTERNATIVELY, provided that this notice is    
 39  * may be distributed under the terms of the G    
 40  * in which case the provisions of the GPL app    
 41  *                                                
 42  * DISCLAIMER                                     
 43  *                                                
 44  * This software is provided 'as is' with no e    
 45  * in respect of its properties, including, bu    
 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 <asm/unaligned.h>                        
 58                                                   
 59 static inline u8 byte(const u32 x, const unsig    
 60 {                                                 
 61         return x >> (n << 3);                     
 62 }                                                 
 63                                                   
 64 /* cacheline-aligned to facilitate prefetching    
 65 __visible const u32 crypto_ft_tab[4][256] ____    
 66         {                                         
 67                 0xa56363c6, 0x847c7cf8, 0x9977    
 68                 0x0df2f2ff, 0xbd6b6bd6, 0xb16f    
 69                 0x50303060, 0x03010102, 0xa967    
 70                 0x19fefee7, 0x62d7d7b5, 0xe6ab    
 71                 0x45caca8f, 0x9d82821f, 0x40c9    
 72                 0x15fafaef, 0xeb5959b2, 0xc947    
 73                 0xecadad41, 0x67d4d4b3, 0xfda2    
 74                 0xbf9c9c23, 0xf7a4a453, 0x9672    
 75                 0xc2b7b775, 0x1cfdfde1, 0xae93    
 76                 0x5a36366c, 0x413f3f7e, 0x02f7    
 77                 0x5c343468, 0xf4a5a551, 0x34e5    
 78                 0x937171e2, 0x73d8d8ab, 0x5331    
 79                 0x0c040408, 0x52c7c795, 0x6523    
 80                 0x28181830, 0xa1969637, 0x0f05    
 81                 0x0907070e, 0x36121224, 0x9b80    
 82                 0x26ebebcd, 0x6927274e, 0xcdb2    
 83                 0x1b090912, 0x9e83831d, 0x742c    
 84                 0x2d1b1b36, 0xb26e6edc, 0xee5a    
 85                 0xf65252a4, 0x4d3b3b76, 0x61d6    
 86                 0x7b292952, 0x3ee3e3dd, 0x712f    
 87                 0xf55353a6, 0x68d1d1b9, 0x0000    
 88                 0x60202040, 0x1ffcfce3, 0xc8b1    
 89                 0xbe6a6ad4, 0x46cbcb8d, 0xd9be    
 90                 0xde4a4a94, 0xd44c4c98, 0xe858    
 91                 0x6bd0d0bb, 0x2aefefc5, 0xe5aa    
 92                 0xc5434386, 0xd74d4d9a, 0x5533    
 93                 0xcf45458a, 0x10f9f9e9, 0x0602    
 94                 0xf05050a0, 0x443c3c78, 0xba9f    
 95                 0xf35151a2, 0xfea3a35d, 0xc040    
 96                 0xad92923f, 0xbc9d9d21, 0x4838    
 97                 0xdfbcbc63, 0xc1b6b677, 0x75da    
 98                 0x30101020, 0x1affffe5, 0x0ef3    
 99                 0x4ccdcd81, 0x140c0c18, 0x3513    
100                 0xe15f5fbe, 0xa2979735, 0xcc44    
101                 0x57c4c493, 0xf2a7a755, 0x827e    
102                 0xac6464c8, 0xe75d5dba, 0x2b19    
103                 0xa06060c0, 0x98818119, 0xd14f    
104                 0x66222244, 0x7e2a2a54, 0xab90    
105                 0xca46468c, 0x29eeeec7, 0xd3b8    
106                 0x79dedea7, 0xe25e5ebc, 0x1d0b    
107                 0x3be0e0db, 0x56323264, 0x4e3a    
108                 0xdb494992, 0x0a06060c, 0x6c24    
109                 0x5dc2c29f, 0x6ed3d3bd, 0xefac    
110                 0xa8919139, 0xa4959531, 0x37e4    
111                 0x32e7e7d5, 0x43c8c88b, 0x5937    
112                 0x8c8d8d01, 0x64d5d5b1, 0xd24e    
113                 0xb46c6cd8, 0xfa5656ac, 0x07f4    
114                 0xaf6565ca, 0x8e7a7af4, 0xe9ae    
115                 0xd5baba6f, 0x887878f0, 0x6f25    
116                 0x241c1c38, 0xf1a6a657, 0xc7b4    
117                 0x23e8e8cb, 0x7cdddda1, 0x9c74    
118                 0xdd4b4b96, 0xdcbdbd61, 0x868b    
119                 0x907070e0, 0x423e3e7c, 0xc4b5    
120                 0xd8484890, 0x05030306, 0x01f6    
121                 0xa36161c2, 0x5f35356a, 0xf957    
122                 0x91868617, 0x58c1c199, 0x271d    
123                 0x38e1e1d9, 0x13f8f8eb, 0xb398    
124                 0xbb6969d2, 0x70d9d9a9, 0x898e    
125                 0xb69b9b2d, 0x221e1e3c, 0x9287    
126                 0x49cece87, 0xff5555aa, 0x7828    
127                 0x8f8c8c03, 0xf8a1a159, 0x8089    
128                 0xdabfbf65, 0x31e6e6d7, 0xc642    
129                 0xc3414182, 0xb0999929, 0x772d    
130                 0xcbb0b07b, 0xfc5454a8, 0xd6bb    
131         }, {                                      
132                 0x6363c6a5, 0x7c7cf884, 0x7777    
133                 0xf2f2ff0d, 0x6b6bd6bd, 0x6f6f    
134                 0x30306050, 0x01010203, 0x6767    
135                 0xfefee719, 0xd7d7b562, 0xabab    
136                 0xcaca8f45, 0x82821f9d, 0xc9c9    
137                 0xfafaef15, 0x5959b2eb, 0x4747    
138                 0xadad41ec, 0xd4d4b367, 0xa2a2    
139                 0x9c9c23bf, 0xa4a453f7, 0x7272    
140                 0xb7b775c2, 0xfdfde11c, 0x9393    
141                 0x36366c5a, 0x3f3f7e41, 0xf7f7    
142                 0x3434685c, 0xa5a551f4, 0xe5e5    
143                 0x7171e293, 0xd8d8ab73, 0x3131    
144                 0x0404080c, 0xc7c79552, 0x2323    
145                 0x18183028, 0x969637a1, 0x0505    
146                 0x07070e09, 0x12122436, 0x8080    
147                 0xebebcd26, 0x27274e69, 0xb2b2    
148                 0x0909121b, 0x83831d9e, 0x2c2c    
149                 0x1b1b362d, 0x6e6edcb2, 0x5a5a    
150                 0x5252a4f6, 0x3b3b764d, 0xd6d6    
151                 0x2929527b, 0xe3e3dd3e, 0x2f2f    
152                 0x5353a6f5, 0xd1d1b968, 0x0000    
153                 0x20204060, 0xfcfce31f, 0xb1b1    
154                 0x6a6ad4be, 0xcbcb8d46, 0xbebe    
155                 0x4a4a94de, 0x4c4c98d4, 0x5858    
156                 0xd0d0bb6b, 0xefefc52a, 0xaaaa    
157                 0x434386c5, 0x4d4d9ad7, 0x3333    
158                 0x45458acf, 0xf9f9e910, 0x0202    
159                 0x5050a0f0, 0x3c3c7844, 0x9f9f    
160                 0x5151a2f3, 0xa3a35dfe, 0x4040    
161                 0x92923fad, 0x9d9d21bc, 0x3838    
162                 0xbcbc63df, 0xb6b677c1, 0xdada    
163                 0x10102030, 0xffffe51a, 0xf3f3    
164                 0xcdcd814c, 0x0c0c1814, 0x1313    
165                 0x5f5fbee1, 0x979735a2, 0x4444    
166                 0xc4c49357, 0xa7a755f2, 0x7e7e    
167                 0x6464c8ac, 0x5d5dbae7, 0x1919    
168                 0x6060c0a0, 0x81811998, 0x4f4f    
169                 0x22224466, 0x2a2a547e, 0x9090    
170                 0x46468cca, 0xeeeec729, 0xb8b8    
171                 0xdedea779, 0x5e5ebce2, 0x0b0b    
172                 0xe0e0db3b, 0x32326456, 0x3a3a    
173                 0x494992db, 0x06060c0a, 0x2424    
174                 0xc2c29f5d, 0xd3d3bd6e, 0xacac    
175                 0x919139a8, 0x959531a4, 0xe4e4    
176                 0xe7e7d532, 0xc8c88b43, 0x3737    
177                 0x8d8d018c, 0xd5d5b164, 0x4e4e    
178                 0x6c6cd8b4, 0x5656acfa, 0xf4f4    
179                 0x6565caaf, 0x7a7af48e, 0xaeae    
180                 0xbaba6fd5, 0x7878f088, 0x2525    
181                 0x1c1c3824, 0xa6a657f1, 0xb4b4    
182                 0xe8e8cb23, 0xdddda17c, 0x7474    
183                 0x4b4b96dd, 0xbdbd61dc, 0x8b8b    
184                 0x7070e090, 0x3e3e7c42, 0xb5b5    
185                 0x484890d8, 0x03030605, 0xf6f6    
186                 0x6161c2a3, 0x35356a5f, 0x5757    
187                 0x86861791, 0xc1c19958, 0x1d1d    
188                 0xe1e1d938, 0xf8f8eb13, 0x9898    
189                 0x6969d2bb, 0xd9d9a970, 0x8e8e    
190                 0x9b9b2db6, 0x1e1e3c22, 0x8787    
191                 0xcece8749, 0x5555aaff, 0x2828    
192                 0x8c8c038f, 0xa1a159f8, 0x8989    
193                 0xbfbf65da, 0xe6e6d731, 0x4242    
194                 0x414182c3, 0x999929b0, 0x2d2d    
195                 0xb0b07bcb, 0x5454a8fc, 0xbbbb    
196         }, {                                      
197                 0x63c6a563, 0x7cf8847c, 0x77ee    
198                 0xf2ff0df2, 0x6bd6bd6b, 0x6fde    
199                 0x30605030, 0x01020301, 0x67ce    
200                 0xfee719fe, 0xd7b562d7, 0xab4d    
201                 0xca8f45ca, 0x821f9d82, 0xc989    
202                 0xfaef15fa, 0x59b2eb59, 0x478e    
203                 0xad41ecad, 0xd4b367d4, 0xa25f    
204                 0x9c23bf9c, 0xa453f7a4, 0x72e4    
205                 0xb775c2b7, 0xfde11cfd, 0x933d    
206                 0x366c5a36, 0x3f7e413f, 0xf7f5    
207                 0x34685c34, 0xa551f4a5, 0xe5d1    
208                 0x71e29371, 0xd8ab73d8, 0x3162    
209                 0x04080c04, 0xc79552c7, 0x2346    
210                 0x18302818, 0x9637a196, 0x050a    
211                 0x070e0907, 0x12243612, 0x801b    
212                 0xebcd26eb, 0x274e6927, 0xb27f    
213                 0x09121b09, 0x831d9e83, 0x2c58    
214                 0x1b362d1b, 0x6edcb26e, 0x5ab4    
215                 0x52a4f652, 0x3b764d3b, 0xd6b7    
216                 0x29527b29, 0xe3dd3ee3, 0x2f5e    
217                 0x53a6f553, 0xd1b968d1, 0x0000    
218                 0x20406020, 0xfce31ffc, 0xb179    
219                 0x6ad4be6a, 0xcb8d46cb, 0xbe67    
220                 0x4a94de4a, 0x4c98d44c, 0x58b0    
221                 0xd0bb6bd0, 0xefc52aef, 0xaa4f    
222                 0x4386c543, 0x4d9ad74d, 0x3366    
223                 0x458acf45, 0xf9e910f9, 0x0204    
224                 0x50a0f050, 0x3c78443c, 0x9f25    
225                 0x51a2f351, 0xa35dfea3, 0x4080    
226                 0x923fad92, 0x9d21bc9d, 0x3870    
227                 0xbc63dfbc, 0xb677c1b6, 0xdaaf    
228                 0x10203010, 0xffe51aff, 0xf3fd    
229                 0xcd814ccd, 0x0c18140c, 0x1326    
230                 0x5fbee15f, 0x9735a297, 0x4488    
231                 0xc49357c4, 0xa755f2a7, 0x7efc    
232                 0x64c8ac64, 0x5dbae75d, 0x1932    
233                 0x60c0a060, 0x81199881, 0x4f9e    
234                 0x22446622, 0x2a547e2a, 0x903b    
235                 0x468cca46, 0xeec729ee, 0xb86b    
236                 0xdea779de, 0x5ebce25e, 0x0b16    
237                 0xe0db3be0, 0x32645632, 0x3a74    
238                 0x4992db49, 0x060c0a06, 0x2448    
239                 0xc29f5dc2, 0xd3bd6ed3, 0xac43    
240                 0x9139a891, 0x9531a495, 0xe4d3    
241                 0xe7d532e7, 0xc88b43c8, 0x376e    
242                 0x8d018c8d, 0xd5b164d5, 0x4e9c    
243                 0x6cd8b46c, 0x56acfa56, 0xf4f3    
244                 0x65caaf65, 0x7af48e7a, 0xae47    
245                 0xba6fd5ba, 0x78f08878, 0x254a    
246                 0x1c38241c, 0xa657f1a6, 0xb473    
247                 0xe8cb23e8, 0xdda17cdd, 0x74e8    
248                 0x4b96dd4b, 0xbd61dcbd, 0x8b0d    
249                 0x70e09070, 0x3e7c423e, 0xb571    
250                 0x4890d848, 0x03060503, 0xf6f7    
251                 0x61c2a361, 0x356a5f35, 0x57ae    
252                 0x86179186, 0xc19958c1, 0x1d3a    
253                 0xe1d938e1, 0xf8eb13f8, 0x982b    
254                 0x69d2bb69, 0xd9a970d9, 0x8e07    
255                 0x9b2db69b, 0x1e3c221e, 0x8715    
256                 0xce8749ce, 0x55aaff55, 0x2850    
257                 0x8c038f8c, 0xa159f8a1, 0x8909    
258                 0xbf65dabf, 0xe6d731e6, 0x4284    
259                 0x4182c341, 0x9929b099, 0x2d5a    
260                 0xb07bcbb0, 0x54a8fc54, 0xbb6d    
261         }, {                                      
262                 0xc6a56363, 0xf8847c7c, 0xee99    
263                 0xff0df2f2, 0xd6bd6b6b, 0xdeb1    
264                 0x60503030, 0x02030101, 0xcea9    
265                 0xe719fefe, 0xb562d7d7, 0x4de6    
266                 0x8f45caca, 0x1f9d8282, 0x8940    
267                 0xef15fafa, 0xb2eb5959, 0x8ec9    
268                 0x41ecadad, 0xb367d4d4, 0x5ffd    
269                 0x23bf9c9c, 0x53f7a4a4, 0xe496    
270                 0x75c2b7b7, 0xe11cfdfd, 0x3dae    
271                 0x6c5a3636, 0x7e413f3f, 0xf502    
272                 0x685c3434, 0x51f4a5a5, 0xd134    
273                 0xe2937171, 0xab73d8d8, 0x6253    
274                 0x080c0404, 0x9552c7c7, 0x4665    
275                 0x30281818, 0x37a19696, 0x0a0f    
276                 0x0e090707, 0x24361212, 0x1b9b    
277                 0xcd26ebeb, 0x4e692727, 0x7fcd    
278                 0x121b0909, 0x1d9e8383, 0x5874    
279                 0x362d1b1b, 0xdcb26e6e, 0xb4ee    
280                 0xa4f65252, 0x764d3b3b, 0xb761    
281                 0x527b2929, 0xdd3ee3e3, 0x5e71    
282                 0xa6f55353, 0xb968d1d1, 0x0000    
283                 0x40602020, 0xe31ffcfc, 0x79c8    
284                 0xd4be6a6a, 0x8d46cbcb, 0x67d9    
285                 0x94de4a4a, 0x98d44c4c, 0xb0e8    
286                 0xbb6bd0d0, 0xc52aefef, 0x4fe5    
287                 0x86c54343, 0x9ad74d4d, 0x6655    
288                 0x8acf4545, 0xe910f9f9, 0x0406    
289                 0xa0f05050, 0x78443c3c, 0x25ba    
290                 0xa2f35151, 0x5dfea3a3, 0x80c0    
291                 0x3fad9292, 0x21bc9d9d, 0x7048    
292                 0x63dfbcbc, 0x77c1b6b6, 0xaf75    
293                 0x20301010, 0xe51affff, 0xfd0e    
294                 0x814ccdcd, 0x18140c0c, 0x2635    
295                 0xbee15f5f, 0x35a29797, 0x88cc    
296                 0x9357c4c4, 0x55f2a7a7, 0xfc82    
297                 0xc8ac6464, 0xbae75d5d, 0x322b    
298                 0xc0a06060, 0x19988181, 0x9ed1    
299                 0x44662222, 0x547e2a2a, 0x3bab    
300                 0x8cca4646, 0xc729eeee, 0x6bd3    
301                 0xa779dede, 0xbce25e5e, 0x161d    
302                 0xdb3be0e0, 0x64563232, 0x744e    
303                 0x92db4949, 0x0c0a0606, 0x486c    
304                 0x9f5dc2c2, 0xbd6ed3d3, 0x43ef    
305                 0x39a89191, 0x31a49595, 0xd337    
306                 0xd532e7e7, 0x8b43c8c8, 0x6e59    
307                 0x018c8d8d, 0xb164d5d5, 0x9cd2    
308                 0xd8b46c6c, 0xacfa5656, 0xf307    
309                 0xcaaf6565, 0xf48e7a7a, 0x47e9    
310                 0x6fd5baba, 0xf0887878, 0x4a6f    
311                 0x38241c1c, 0x57f1a6a6, 0x73c7    
312                 0xcb23e8e8, 0xa17cdddd, 0xe89c    
313                 0x96dd4b4b, 0x61dcbdbd, 0x0d86    
314                 0xe0907070, 0x7c423e3e, 0x71c4    
315                 0x90d84848, 0x06050303, 0xf701    
316                 0xc2a36161, 0x6a5f3535, 0xaef9    
317                 0x17918686, 0x9958c1c1, 0x3a27    
318                 0xd938e1e1, 0xeb13f8f8, 0x2bb3    
319                 0xd2bb6969, 0xa970d9d9, 0x0789    
320                 0x2db69b9b, 0x3c221e1e, 0x1592    
321                 0x8749cece, 0xaaff5555, 0x5078    
322                 0x038f8c8c, 0x59f8a1a1, 0x0980    
323                 0x65dabfbf, 0xd731e6e6, 0x84c6    
324                 0x82c34141, 0x29b09999, 0x5a77    
325                 0x7bcbb0b0, 0xa8fc5454, 0x6dd6    
326         }                                         
327 };                                                
328                                                   
329 static const u32 crypto_fl_tab[4][256] ____cac    
330         {                                         
331                 0x00000063, 0x0000007c, 0x0000    
332                 0x000000f2, 0x0000006b, 0x0000    
333                 0x00000030, 0x00000001, 0x0000    
334                 0x000000fe, 0x000000d7, 0x0000    
335                 0x000000ca, 0x00000082, 0x0000    
336                 0x000000fa, 0x00000059, 0x0000    
337                 0x000000ad, 0x000000d4, 0x0000    
338                 0x0000009c, 0x000000a4, 0x0000    
339                 0x000000b7, 0x000000fd, 0x0000    
340                 0x00000036, 0x0000003f, 0x0000    
341                 0x00000034, 0x000000a5, 0x0000    
342                 0x00000071, 0x000000d8, 0x0000    
343                 0x00000004, 0x000000c7, 0x0000    
344                 0x00000018, 0x00000096, 0x0000    
345                 0x00000007, 0x00000012, 0x0000    
346                 0x000000eb, 0x00000027, 0x0000    
347                 0x00000009, 0x00000083, 0x0000    
348                 0x0000001b, 0x0000006e, 0x0000    
349                 0x00000052, 0x0000003b, 0x0000    
350                 0x00000029, 0x000000e3, 0x0000    
351                 0x00000053, 0x000000d1, 0x0000    
352                 0x00000020, 0x000000fc, 0x0000    
353                 0x0000006a, 0x000000cb, 0x0000    
354                 0x0000004a, 0x0000004c, 0x0000    
355                 0x000000d0, 0x000000ef, 0x0000    
356                 0x00000043, 0x0000004d, 0x0000    
357                 0x00000045, 0x000000f9, 0x0000    
358                 0x00000050, 0x0000003c, 0x0000    
359                 0x00000051, 0x000000a3, 0x0000    
360                 0x00000092, 0x0000009d, 0x0000    
361                 0x000000bc, 0x000000b6, 0x0000    
362                 0x00000010, 0x000000ff, 0x0000    
363                 0x000000cd, 0x0000000c, 0x0000    
364                 0x0000005f, 0x00000097, 0x0000    
365                 0x000000c4, 0x000000a7, 0x0000    
366                 0x00000064, 0x0000005d, 0x0000    
367                 0x00000060, 0x00000081, 0x0000    
368                 0x00000022, 0x0000002a, 0x0000    
369                 0x00000046, 0x000000ee, 0x0000    
370                 0x000000de, 0x0000005e, 0x0000    
371                 0x000000e0, 0x00000032, 0x0000    
372                 0x00000049, 0x00000006, 0x0000    
373                 0x000000c2, 0x000000d3, 0x0000    
374                 0x00000091, 0x00000095, 0x0000    
375                 0x000000e7, 0x000000c8, 0x0000    
376                 0x0000008d, 0x000000d5, 0x0000    
377                 0x0000006c, 0x00000056, 0x0000    
378                 0x00000065, 0x0000007a, 0x0000    
379                 0x000000ba, 0x00000078, 0x0000    
380                 0x0000001c, 0x000000a6, 0x0000    
381                 0x000000e8, 0x000000dd, 0x0000    
382                 0x0000004b, 0x000000bd, 0x0000    
383                 0x00000070, 0x0000003e, 0x0000    
384                 0x00000048, 0x00000003, 0x0000    
385                 0x00000061, 0x00000035, 0x0000    
386                 0x00000086, 0x000000c1, 0x0000    
387                 0x000000e1, 0x000000f8, 0x0000    
388                 0x00000069, 0x000000d9, 0x0000    
389                 0x0000009b, 0x0000001e, 0x0000    
390                 0x000000ce, 0x00000055, 0x0000    
391                 0x0000008c, 0x000000a1, 0x0000    
392                 0x000000bf, 0x000000e6, 0x0000    
393                 0x00000041, 0x00000099, 0x0000    
394                 0x000000b0, 0x00000054, 0x0000    
395         }, {                                      
396                 0x00006300, 0x00007c00, 0x0000    
397                 0x0000f200, 0x00006b00, 0x0000    
398                 0x00003000, 0x00000100, 0x0000    
399                 0x0000fe00, 0x0000d700, 0x0000    
400                 0x0000ca00, 0x00008200, 0x0000    
401                 0x0000fa00, 0x00005900, 0x0000    
402                 0x0000ad00, 0x0000d400, 0x0000    
403                 0x00009c00, 0x0000a400, 0x0000    
404                 0x0000b700, 0x0000fd00, 0x0000    
405                 0x00003600, 0x00003f00, 0x0000    
406                 0x00003400, 0x0000a500, 0x0000    
407                 0x00007100, 0x0000d800, 0x0000    
408                 0x00000400, 0x0000c700, 0x0000    
409                 0x00001800, 0x00009600, 0x0000    
410                 0x00000700, 0x00001200, 0x0000    
411                 0x0000eb00, 0x00002700, 0x0000    
412                 0x00000900, 0x00008300, 0x0000    
413                 0x00001b00, 0x00006e00, 0x0000    
414                 0x00005200, 0x00003b00, 0x0000    
415                 0x00002900, 0x0000e300, 0x0000    
416                 0x00005300, 0x0000d100, 0x0000    
417                 0x00002000, 0x0000fc00, 0x0000    
418                 0x00006a00, 0x0000cb00, 0x0000    
419                 0x00004a00, 0x00004c00, 0x0000    
420                 0x0000d000, 0x0000ef00, 0x0000    
421                 0x00004300, 0x00004d00, 0x0000    
422                 0x00004500, 0x0000f900, 0x0000    
423                 0x00005000, 0x00003c00, 0x0000    
424                 0x00005100, 0x0000a300, 0x0000    
425                 0x00009200, 0x00009d00, 0x0000    
426                 0x0000bc00, 0x0000b600, 0x0000    
427                 0x00001000, 0x0000ff00, 0x0000    
428                 0x0000cd00, 0x00000c00, 0x0000    
429                 0x00005f00, 0x00009700, 0x0000    
430                 0x0000c400, 0x0000a700, 0x0000    
431                 0x00006400, 0x00005d00, 0x0000    
432                 0x00006000, 0x00008100, 0x0000    
433                 0x00002200, 0x00002a00, 0x0000    
434                 0x00004600, 0x0000ee00, 0x0000    
435                 0x0000de00, 0x00005e00, 0x0000    
436                 0x0000e000, 0x00003200, 0x0000    
437                 0x00004900, 0x00000600, 0x0000    
438                 0x0000c200, 0x0000d300, 0x0000    
439                 0x00009100, 0x00009500, 0x0000    
440                 0x0000e700, 0x0000c800, 0x0000    
441                 0x00008d00, 0x0000d500, 0x0000    
442                 0x00006c00, 0x00005600, 0x0000    
443                 0x00006500, 0x00007a00, 0x0000    
444                 0x0000ba00, 0x00007800, 0x0000    
445                 0x00001c00, 0x0000a600, 0x0000    
446                 0x0000e800, 0x0000dd00, 0x0000    
447                 0x00004b00, 0x0000bd00, 0x0000    
448                 0x00007000, 0x00003e00, 0x0000    
449                 0x00004800, 0x00000300, 0x0000    
450                 0x00006100, 0x00003500, 0x0000    
451                 0x00008600, 0x0000c100, 0x0000    
452                 0x0000e100, 0x0000f800, 0x0000    
453                 0x00006900, 0x0000d900, 0x0000    
454                 0x00009b00, 0x00001e00, 0x0000    
455                 0x0000ce00, 0x00005500, 0x0000    
456                 0x00008c00, 0x0000a100, 0x0000    
457                 0x0000bf00, 0x0000e600, 0x0000    
458                 0x00004100, 0x00009900, 0x0000    
459                 0x0000b000, 0x00005400, 0x0000    
460         }, {                                      
461                 0x00630000, 0x007c0000, 0x0077    
462                 0x00f20000, 0x006b0000, 0x006f    
463                 0x00300000, 0x00010000, 0x0067    
464                 0x00fe0000, 0x00d70000, 0x00ab    
465                 0x00ca0000, 0x00820000, 0x00c9    
466                 0x00fa0000, 0x00590000, 0x0047    
467                 0x00ad0000, 0x00d40000, 0x00a2    
468                 0x009c0000, 0x00a40000, 0x0072    
469                 0x00b70000, 0x00fd0000, 0x0093    
470                 0x00360000, 0x003f0000, 0x00f7    
471                 0x00340000, 0x00a50000, 0x00e5    
472                 0x00710000, 0x00d80000, 0x0031    
473                 0x00040000, 0x00c70000, 0x0023    
474                 0x00180000, 0x00960000, 0x0005    
475                 0x00070000, 0x00120000, 0x0080    
476                 0x00eb0000, 0x00270000, 0x00b2    
477                 0x00090000, 0x00830000, 0x002c    
478                 0x001b0000, 0x006e0000, 0x005a    
479                 0x00520000, 0x003b0000, 0x00d6    
480                 0x00290000, 0x00e30000, 0x002f    
481                 0x00530000, 0x00d10000, 0x0000    
482                 0x00200000, 0x00fc0000, 0x00b1    
483                 0x006a0000, 0x00cb0000, 0x00be    
484                 0x004a0000, 0x004c0000, 0x0058    
485                 0x00d00000, 0x00ef0000, 0x00aa    
486                 0x00430000, 0x004d0000, 0x0033    
487                 0x00450000, 0x00f90000, 0x0002    
488                 0x00500000, 0x003c0000, 0x009f    
489                 0x00510000, 0x00a30000, 0x0040    
490                 0x00920000, 0x009d0000, 0x0038    
491                 0x00bc0000, 0x00b60000, 0x00da    
492                 0x00100000, 0x00ff0000, 0x00f3    
493                 0x00cd0000, 0x000c0000, 0x0013    
494                 0x005f0000, 0x00970000, 0x0044    
495                 0x00c40000, 0x00a70000, 0x007e    
496                 0x00640000, 0x005d0000, 0x0019    
497                 0x00600000, 0x00810000, 0x004f    
498                 0x00220000, 0x002a0000, 0x0090    
499                 0x00460000, 0x00ee0000, 0x00b8    
500                 0x00de0000, 0x005e0000, 0x000b    
501                 0x00e00000, 0x00320000, 0x003a    
502                 0x00490000, 0x00060000, 0x0024    
503                 0x00c20000, 0x00d30000, 0x00ac    
504                 0x00910000, 0x00950000, 0x00e4    
505                 0x00e70000, 0x00c80000, 0x0037    
506                 0x008d0000, 0x00d50000, 0x004e    
507                 0x006c0000, 0x00560000, 0x00f4    
508                 0x00650000, 0x007a0000, 0x00ae    
509                 0x00ba0000, 0x00780000, 0x0025    
510                 0x001c0000, 0x00a60000, 0x00b4    
511                 0x00e80000, 0x00dd0000, 0x0074    
512                 0x004b0000, 0x00bd0000, 0x008b    
513                 0x00700000, 0x003e0000, 0x00b5    
514                 0x00480000, 0x00030000, 0x00f6    
515                 0x00610000, 0x00350000, 0x0057    
516                 0x00860000, 0x00c10000, 0x001d    
517                 0x00e10000, 0x00f80000, 0x0098    
518                 0x00690000, 0x00d90000, 0x008e    
519                 0x009b0000, 0x001e0000, 0x0087    
520                 0x00ce0000, 0x00550000, 0x0028    
521                 0x008c0000, 0x00a10000, 0x0089    
522                 0x00bf0000, 0x00e60000, 0x0042    
523                 0x00410000, 0x00990000, 0x002d    
524                 0x00b00000, 0x00540000, 0x00bb    
525         }, {                                      
526                 0x63000000, 0x7c000000, 0x7700    
527                 0xf2000000, 0x6b000000, 0x6f00    
528                 0x30000000, 0x01000000, 0x6700    
529                 0xfe000000, 0xd7000000, 0xab00    
530                 0xca000000, 0x82000000, 0xc900    
531                 0xfa000000, 0x59000000, 0x4700    
532                 0xad000000, 0xd4000000, 0xa200    
533                 0x9c000000, 0xa4000000, 0x7200    
534                 0xb7000000, 0xfd000000, 0x9300    
535                 0x36000000, 0x3f000000, 0xf700    
536                 0x34000000, 0xa5000000, 0xe500    
537                 0x71000000, 0xd8000000, 0x3100    
538                 0x04000000, 0xc7000000, 0x2300    
539                 0x18000000, 0x96000000, 0x0500    
540                 0x07000000, 0x12000000, 0x8000    
541                 0xeb000000, 0x27000000, 0xb200    
542                 0x09000000, 0x83000000, 0x2c00    
543                 0x1b000000, 0x6e000000, 0x5a00    
544                 0x52000000, 0x3b000000, 0xd600    
545                 0x29000000, 0xe3000000, 0x2f00    
546                 0x53000000, 0xd1000000, 0x0000    
547                 0x20000000, 0xfc000000, 0xb100    
548                 0x6a000000, 0xcb000000, 0xbe00    
549                 0x4a000000, 0x4c000000, 0x5800    
550                 0xd0000000, 0xef000000, 0xaa00    
551                 0x43000000, 0x4d000000, 0x3300    
552                 0x45000000, 0xf9000000, 0x0200    
553                 0x50000000, 0x3c000000, 0x9f00    
554                 0x51000000, 0xa3000000, 0x4000    
555                 0x92000000, 0x9d000000, 0x3800    
556                 0xbc000000, 0xb6000000, 0xda00    
557                 0x10000000, 0xff000000, 0xf300    
558                 0xcd000000, 0x0c000000, 0x1300    
559                 0x5f000000, 0x97000000, 0x4400    
560                 0xc4000000, 0xa7000000, 0x7e00    
561                 0x64000000, 0x5d000000, 0x1900    
562                 0x60000000, 0x81000000, 0x4f00    
563                 0x22000000, 0x2a000000, 0x9000    
564                 0x46000000, 0xee000000, 0xb800    
565                 0xde000000, 0x5e000000, 0x0b00    
566                 0xe0000000, 0x32000000, 0x3a00    
567                 0x49000000, 0x06000000, 0x2400    
568                 0xc2000000, 0xd3000000, 0xac00    
569                 0x91000000, 0x95000000, 0xe400    
570                 0xe7000000, 0xc8000000, 0x3700    
571                 0x8d000000, 0xd5000000, 0x4e00    
572                 0x6c000000, 0x56000000, 0xf400    
573                 0x65000000, 0x7a000000, 0xae00    
574                 0xba000000, 0x78000000, 0x2500    
575                 0x1c000000, 0xa6000000, 0xb400    
576                 0xe8000000, 0xdd000000, 0x7400    
577                 0x4b000000, 0xbd000000, 0x8b00    
578                 0x70000000, 0x3e000000, 0xb500    
579                 0x48000000, 0x03000000, 0xf600    
580                 0x61000000, 0x35000000, 0x5700    
581                 0x86000000, 0xc1000000, 0x1d00    
582                 0xe1000000, 0xf8000000, 0x9800    
583                 0x69000000, 0xd9000000, 0x8e00    
584                 0x9b000000, 0x1e000000, 0x8700    
585                 0xce000000, 0x55000000, 0x2800    
586                 0x8c000000, 0xa1000000, 0x8900    
587                 0xbf000000, 0xe6000000, 0x4200    
588                 0x41000000, 0x99000000, 0x2d00    
589                 0xb0000000, 0x54000000, 0xbb00    
590         }                                         
591 };                                                
592                                                   
593 __visible const u32 crypto_it_tab[4][256] ____    
594         {                                         
595                 0x50a7f451, 0x5365417e, 0xc3a4    
596                 0xcb6bab3b, 0xf1459d1f, 0xab58    
597                 0x55fa3020, 0xf66d76ad, 0x9176    
598                 0xfcd7e54f, 0xd7cb2ac5, 0x8044    
599                 0x495ab1de, 0x671bba25, 0x980e    
600                 0x02752fc3, 0x12f04c81, 0xa397    
601                 0xe75f8f03, 0x959c9215, 0xeb7a    
602                 0x2d83bed4, 0xd3217458, 0x2969    
603                 0x6a89c275, 0x78798ef4, 0x6b3e    
604                 0xb64fe1be, 0x17ad88f0, 0x66ac    
605                 0x184adf63, 0x82311ae5, 0x6033    
606                 0xe07764b1, 0x84ae6bbb, 0x1ca0    
607                 0x58684870, 0x19fd458f, 0x876c    
608                 0x23d373ab, 0xe2024b72, 0x578f    
609                 0x0728ebb2, 0x03c2b52f, 0x9a7b    
610                 0xf2872830, 0xb2a5bf23, 0xba6a    
611                 0x2b1ccf8a, 0x92b479a7, 0xf0f2    
612                 0xcdf4da65, 0xd5be0506, 0x1f62    
613                 0x9d532e34, 0xa055f3a2, 0x32e1    
614                 0x39ec830b, 0xaaef6040, 0x069f    
615                 0xf98a213e, 0x3d06dd96, 0xae05    
616                 0xb58d5491, 0x055dc471, 0x6fd4    
617                 0x24fb9819, 0x97e9bdd6, 0xcc43    
618                 0xbd42e8b0, 0x888b8907, 0x385b    
619                 0x470a7ca1, 0xe90f427c, 0xc91e    
620                 0x83868009, 0x48ed2b32, 0xac70    
621                 0xfbff0efd, 0x5638850f, 0x1ed5    
622                 0x64d90f0a, 0x21a65c68, 0xd154    
623                 0xb1670a0c, 0x0fe75793, 0xd296    
624                 0x4fc5c080, 0xa220dc61, 0x694b    
625                 0x0aba93e2, 0xe52aa0c0, 0x43e0    
626                 0x0b0d090e, 0xadc78bf2, 0xb9a8    
627                 0x8519f157, 0x4c0775af, 0xbbdd    
628                 0x9f2601f7, 0xbcf5725c, 0xc53b    
629                 0x7629438b, 0xdcc623cb, 0x68fc    
630                 0xcadc31d7, 0x10856342, 0x4022    
631                 0x7d244a85, 0xf83dbbd2, 0x1132    
632                 0x4b2f9e1d, 0xf330b2dc, 0xec52    
633                 0x6c16b32b, 0x99b970a9, 0xfa48    
634                 0xc48cfca8, 0x1a3ff0a0, 0xd82c    
635                 0xc74e4987, 0xc1d138d9, 0xfea2    
636                 0xcf81f5a6, 0x28de7aa5, 0x268e    
637                 0xe49d3a2c, 0x0d927850, 0x9bcc    
638                 0xc2138df6, 0xe8b8d890, 0x5ef7    
639                 0xbe805d9f, 0x7c93d069, 0xa92d    
640                 0x3b99acc8, 0xa77d1810, 0x6e63    
641                 0x097826cd, 0xf418596e, 0x01b7    
642                 0x656e95e6, 0x7ee6ffaa, 0x08cf    
643                 0xd99be7ba, 0xce366f4a, 0xd409    
644                 0xafb2a431, 0x31233f2a, 0x3094    
645                 0x37bc4e74, 0xa6ca82fc, 0xb0d0    
646                 0x4a9804f1, 0xf7daec41, 0x0e50    
647                 0x8dd64d76, 0x4db0ef43, 0x544d    
648                 0xe3b5d19e, 0x1b886a4c, 0xb81f    
649                 0x04ea5e9d, 0x5d358c01, 0x7374    
650                 0x5a1d67b3, 0x52d2db92, 0x3356    
651                 0x8c61d79a, 0x7a0ca137, 0x8e14    
652                 0xee27a9ce, 0x35c961b7, 0xede5    
653                 0x59dfd29c, 0x3f73f255, 0x79ce    
654                 0xeacdf753, 0x5baafd5f, 0x146f    
655                 0x81f3afca, 0x3ec468b9, 0x2c34    
656                 0x72c31d16, 0x0c25e2bc, 0x8b49    
657                 0x7101a839, 0xdeb30c08, 0x9ce4    
658                 0x6184cb7b, 0x70b632d5, 0x745c    
659         }, {                                      
660                 0xa7f45150, 0x65417e53, 0xa417    
661                 0x6bab3bcb, 0x459d1ff1, 0x58fa    
662                 0xfa302055, 0x6d76adf6, 0x76cc    
663                 0xd7e54ffc, 0xcb2ac5d7, 0x4435    
664                 0x5ab1de49, 0x1bba2567, 0x0eea    
665                 0x752fc302, 0xf04c8112, 0x9746    
666                 0x5f8f03e7, 0x9c921595, 0x7a6d    
667                 0x83bed42d, 0x217458d3, 0x69e0    
668                 0x89c2756a, 0x798ef478, 0x3e58    
669                 0x4fe1beb6, 0xad88f017, 0xac20    
670                 0x4adf6318, 0x311ae582, 0x3351    
671                 0x7764b1e0, 0xae6bbb84, 0xa081    
672                 0x68487058, 0xfd458f19, 0x6cde    
673                 0xd373ab23, 0x024b72e2, 0x8f1f    
674                 0x28ebb207, 0xc2b52f03, 0x7bc5    
675                 0x872830f2, 0xa5bf23b2, 0x6a03    
676                 0x1ccf8a2b, 0xb479a792, 0xf207    
677                 0xf4da65cd, 0xbe0506d5, 0x6234    
678                 0x532e349d, 0x55f3a2a0, 0xe18a    
679                 0xec830b39, 0xef6040aa, 0x9f71    
680                 0x8a213ef9, 0x06dd963d, 0x053e    
681                 0x8d5491b5, 0x5dc47105, 0xd406    
682                 0xfb981924, 0xe9bdd697, 0x4340    
683                 0x42e8b0bd, 0x8b890788, 0x5b19    
684                 0x0a7ca147, 0x0f427ce9, 0x1e84    
685                 0x86800983, 0xed2b3248, 0x7011    
686                 0xff0efdfb, 0x38850f56, 0xd5ae    
687                 0xd90f0a64, 0xa65c6821, 0x545b    
688                 0x670a0cb1, 0xe757930f, 0x96ee    
689                 0xc5c0804f, 0x20dc61a2, 0x4b77    
690                 0xba93e20a, 0x2aa0c0e5, 0xe022    
691                 0x0d090e0b, 0xc78bf2ad, 0xa8b6    
692                 0x19f15785, 0x0775af4c, 0xdd99    
693                 0x2601f79f, 0xf5725cbc, 0x3b66    
694                 0x29438b76, 0xc623cbdc, 0xfced    
695                 0xdc31d7ca, 0x85634210, 0x2297    
696                 0x244a857d, 0x3dbbd2f8, 0x32f9    
697                 0x2f9e1d4b, 0x30b2dcf3, 0x5286    
698                 0x16b32b6c, 0xb970a999, 0x4894    
699                 0x8cfca8c4, 0x3ff0a01a, 0x2c7d    
700                 0x4e4987c7, 0xd138d9c1, 0xa2ca    
701                 0x81f5a6cf, 0xde7aa528, 0x8eb7    
702                 0x9d3a2ce4, 0x9278500d, 0xcc5f    
703                 0x138df6c2, 0xb8d890e8, 0xf739    
704                 0x805d9fbe, 0x93d0697c, 0x2dd5    
705                 0x99acc83b, 0x7d1810a7, 0x639c    
706                 0x7826cd09, 0x18596ef4, 0xb79a    
707                 0x6e95e665, 0xe6ffaa7e, 0xcfbc    
708                 0x9be7bad9, 0x366f4ace, 0x099f    
709                 0xb2a431af, 0x233f2a31, 0x94a5    
710                 0xbc4e7437, 0xca82fca6, 0xd090    
711                 0x9804f14a, 0xdaec41f7, 0x50cd    
712                 0xd64d768d, 0xb0ef434d, 0x4daa    
713                 0xb5d19ee3, 0x886a4c1b, 0x1f2c    
714                 0xea5e9d04, 0x358c015d, 0x7487    
715                 0x1d67b35a, 0xd2db9252, 0x5610    
716                 0x61d79a8c, 0x0ca1377a, 0x14f8    
717                 0x27a9ceee, 0xc961b735, 0xe51c    
718                 0xdfd29c59, 0x73f2553f, 0xce14    
719                 0xcdf753ea, 0xaafd5f5b, 0x6f3d    
720                 0xf3afca81, 0xc468b93e, 0x3424    
721                 0xc31d1672, 0x25e2bc0c, 0x493c    
722                 0x01a83971, 0xb30c08de, 0xe4b4    
723                 0x84cb7b61, 0xb632d570, 0x5c6c    
724         }, {                                      
725                 0xf45150a7, 0x417e5365, 0x171a    
726                 0xab3bcb6b, 0x9d1ff145, 0xfaac    
727                 0x302055fa, 0x76adf66d, 0xcc88    
728                 0xe54ffcd7, 0x2ac5d7cb, 0x3526    
729                 0xb1de495a, 0xba25671b, 0xea45    
730                 0x2fc30275, 0x4c8112f0, 0x468d    
731                 0x8f03e75f, 0x9215959c, 0x6dbf    
732                 0xbed42d83, 0x7458d321, 0xe049    
733                 0xc2756a89, 0x8ef47879, 0x5899    
734                 0xe1beb64f, 0x88f017ad, 0x20c9    
735                 0xdf63184a, 0x1ae58231, 0x5197    
736                 0x64b1e077, 0x6bbb84ae, 0x81fe    
737                 0x48705868, 0x458f19fd, 0xde94    
738                 0x73ab23d3, 0x4b72e202, 0x1fe3    
739                 0xebb20728, 0xb52f03c2, 0xc586    
740                 0x2830f287, 0xbf23b2a5, 0x0302    
741                 0xcf8a2b1c, 0x79a792b4, 0x07f3    
742                 0xda65cdf4, 0x0506d5be, 0x34d1    
743                 0x2e349d53, 0xf3a2a055, 0x8a05    
744                 0x830b39ec, 0x6040aaef, 0x715e    
745                 0x213ef98a, 0xdd963d06, 0x3edd    
746                 0x5491b58d, 0xc471055d, 0x0604    
747                 0x981924fb, 0xbdd697e9, 0x4089    
748                 0xe8b0bd42, 0x8907888b, 0x19e7    
749                 0x7ca1470a, 0x427ce90f, 0x84f8    
750                 0x80098386, 0x2b3248ed, 0x111e    
751                 0x0efdfbff, 0x850f5638, 0xae3d    
752                 0x0f0a64d9, 0x5c6821a6, 0x5b9b    
753                 0x0a0cb167, 0x57930fe7, 0xeeb4    
754                 0xc0804fc5, 0xdc61a220, 0x775a    
755                 0x93e20aba, 0xa0c0e52a, 0x223c    
756                 0x090e0b0d, 0x8bf2adc7, 0xb62d    
757                 0xf1578519, 0x75af4c07, 0x99ee    
758                 0x01f79f26, 0x725cbcf5, 0x6644    
759                 0x438b7629, 0x23cbdcc6, 0xedb6    
760                 0x31d7cadc, 0x63421085, 0x9713    
761                 0x4a857d24, 0xbbd2f83d, 0xf9ae    
762                 0x9e1d4b2f, 0xb2dcf330, 0x860d    
763                 0xb32b6c16, 0x70a999b9, 0x9411    
764                 0xfca8c48c, 0xf0a01a3f, 0x7d56    
765                 0x4987c74e, 0x38d9c1d1, 0xca8c    
766                 0xf5a6cf81, 0x7aa528de, 0xb7da    
767                 0x3a2ce49d, 0x78500d92, 0x5f6a    
768                 0x8df6c213, 0xd890e8b8, 0x392e    
769                 0x5d9fbe80, 0xd0697c93, 0xd56f    
770                 0xacc83b99, 0x1810a77d, 0x9ce8    
771                 0x26cd0978, 0x596ef418, 0x9aec    
772                 0x95e6656e, 0xffaa7ee6, 0xbc21    
773                 0xe7bad99b, 0x6f4ace36, 0x9fea    
774                 0xa431afb2, 0x3f2a3123, 0xa5c6    
775                 0x4e7437bc, 0x82fca6ca, 0x90e0    
776                 0x04f14a98, 0xec41f7da, 0xcd7f    
777                 0x4d768dd6, 0xef434db0, 0xaacc    
778                 0xd19ee3b5, 0x6a4c1b88, 0x2cc1    
779                 0x5e9d04ea, 0x8c015d35, 0x87fa    
780                 0x67b35a1d, 0xdb9252d2, 0x10e9    
781                 0xd79a8c61, 0xa1377a0c, 0xf859    
782                 0xa9ceee27, 0x61b735c9, 0x1ce1    
783                 0xd29c59df, 0xf2553f73, 0x1418    
784                 0xf753eacd, 0xfd5f5baa, 0x3ddf    
785                 0xafca81f3, 0x68b93ec4, 0x2438    
786                 0x1d1672c3, 0xe2bc0c25, 0x3c28    
787                 0xa8397101, 0x0c08deb3, 0xb4d8    
788                 0xcb7b6184, 0x32d570b6, 0x6c48    
789         }, {                                      
790                 0x5150a7f4, 0x7e536541, 0x1ac3    
791                 0x3bcb6bab, 0x1ff1459d, 0xacab    
792                 0x2055fa30, 0xadf66d76, 0x8891    
793                 0x4ffcd7e5, 0xc5d7cb2a, 0x2680    
794                 0xde495ab1, 0x25671bba, 0x4598    
795                 0xc302752f, 0x8112f04c, 0x8da3    
796                 0x03e75f8f, 0x15959c92, 0xbfeb    
797                 0xd42d83be, 0x58d32174, 0x4929    
798                 0x756a89c2, 0xf478798e, 0x996b    
799                 0xbeb64fe1, 0xf017ad88, 0xc966    
800                 0x63184adf, 0xe582311a, 0x9760    
801                 0xb1e07764, 0xbb84ae6b, 0xfe1c    
802                 0x70586848, 0x8f19fd45, 0x9487    
803                 0xab23d373, 0x72e2024b, 0xe357    
804                 0xb20728eb, 0x2f03c2b5, 0x869a    
805                 0x30f28728, 0x23b2a5bf, 0x02ba    
806                 0x8a2b1ccf, 0xa792b479, 0xf3f0    
807                 0x65cdf4da, 0x06d5be05, 0xd11f    
808                 0x349d532e, 0xa2a055f3, 0x0532    
809                 0x0b39ec83, 0x40aaef60, 0x5e06    
810                 0x3ef98a21, 0x963d06dd, 0xddae    
811                 0x91b58d54, 0x71055dc4, 0x046f    
812                 0x1924fb98, 0xd697e9bd, 0x89cc    
813                 0xb0bd42e8, 0x07888b89, 0xe738    
814                 0xa1470a7c, 0x7ce90f42, 0xf8c9    
815                 0x09838680, 0x3248ed2b, 0x1eac    
816                 0xfdfbff0e, 0x0f563885, 0x3d1e    
817                 0x0a64d90f, 0x6821a65c, 0x9bd1    
818                 0x0cb1670a, 0x930fe757, 0xb4d2    
819                 0x804fc5c0, 0x61a220dc, 0x5a69    
820                 0xe20aba93, 0xc0e52aa0, 0x3c43    
821                 0x0e0b0d09, 0xf2adc78b, 0x2db9    
822                 0x578519f1, 0xaf4c0775, 0xeebb    
823                 0xf79f2601, 0x5cbcf572, 0x44c5    
824                 0x8b762943, 0xcbdcc623, 0xb668    
825                 0xd7cadc31, 0x42108563, 0x1340    
826                 0x857d244a, 0xd2f83dbb, 0xae11    
827                 0x1d4b2f9e, 0xdcf330b2, 0x0dec    
828                 0x2b6c16b3, 0xa999b970, 0x11fa    
829                 0xa8c48cfc, 0xa01a3ff0, 0x56d8    
830                 0x87c74e49, 0xd9c1d138, 0x8cfe    
831                 0xa6cf81f5, 0xa528de7a, 0xda26    
832                 0x2ce49d3a, 0x500d9278, 0x6a9b    
833                 0xf6c2138d, 0x90e8b8d8, 0x2e5e    
834                 0x9fbe805d, 0x697c93d0, 0x6fa9    
835                 0xc83b99ac, 0x10a77d18, 0xe86e    
836                 0xcd097826, 0x6ef41859, 0xec01    
837                 0xe6656e95, 0xaa7ee6ff, 0x2108    
838                 0xbad99be7, 0x4ace366f, 0xead4    
839                 0x31afb2a4, 0x2a31233f, 0xc630    
840                 0x7437bc4e, 0xfca6ca82, 0xe0b0    
841                 0xf14a9804, 0x41f7daec, 0x7f0e    
842                 0x768dd64d, 0x434db0ef, 0xcc54    
843                 0x9ee3b5d1, 0x4c1b886a, 0xc1b8    
844                 0x9d04ea5e, 0x015d358c, 0xfa73    
845                 0xb35a1d67, 0x9252d2db, 0xe933    
846                 0x9a8c61d7, 0x377a0ca1, 0x598e    
847                 0xceee27a9, 0xb735c961, 0xe1ed    
848                 0x9c59dfd2, 0x553f73f2, 0x1879    
849                 0x53eacdf7, 0x5f5baafd, 0xdf14    
850                 0xca81f3af, 0xb93ec468, 0x382c    
851                 0x1672c31d, 0xbc0c25e2, 0x288b    
852                 0x397101a8, 0x08deb30c, 0xd89c    
853                 0x7b6184cb, 0xd570b632, 0x4874    
854         }                                         
855 };                                                
856                                                   
857 static const u32 crypto_il_tab[4][256] ____cac    
858         {                                         
859                 0x00000052, 0x00000009, 0x0000    
860                 0x00000030, 0x00000036, 0x0000    
861                 0x000000bf, 0x00000040, 0x0000    
862                 0x00000081, 0x000000f3, 0x0000    
863                 0x0000007c, 0x000000e3, 0x0000    
864                 0x0000009b, 0x0000002f, 0x0000    
865                 0x00000034, 0x0000008e, 0x0000    
866                 0x000000c4, 0x000000de, 0x0000    
867                 0x00000054, 0x0000007b, 0x0000    
868                 0x000000a6, 0x000000c2, 0x0000    
869                 0x000000ee, 0x0000004c, 0x0000    
870                 0x00000042, 0x000000fa, 0x0000    
871                 0x00000008, 0x0000002e, 0x0000    
872                 0x00000028, 0x000000d9, 0x0000    
873                 0x00000076, 0x0000005b, 0x0000    
874                 0x0000006d, 0x0000008b, 0x0000    
875                 0x00000072, 0x000000f8, 0x0000    
876                 0x00000086, 0x00000068, 0x0000    
877                 0x000000d4, 0x000000a4, 0x0000    
878                 0x0000005d, 0x00000065, 0x0000    
879                 0x0000006c, 0x00000070, 0x0000    
880                 0x000000fd, 0x000000ed, 0x0000    
881                 0x0000005e, 0x00000015, 0x0000    
882                 0x000000a7, 0x0000008d, 0x0000    
883                 0x00000090, 0x000000d8, 0x0000    
884                 0x0000008c, 0x000000bc, 0x0000    
885                 0x000000f7, 0x000000e4, 0x0000    
886                 0x000000b8, 0x000000b3, 0x0000    
887                 0x000000d0, 0x0000002c, 0x0000    
888                 0x000000ca, 0x0000003f, 0x0000    
889                 0x000000c1, 0x000000af, 0x0000    
890                 0x00000001, 0x00000013, 0x0000    
891                 0x0000003a, 0x00000091, 0x0000    
892                 0x0000004f, 0x00000067, 0x0000    
893                 0x00000097, 0x000000f2, 0x0000    
894                 0x000000f0, 0x000000b4, 0x0000    
895                 0x00000096, 0x000000ac, 0x0000    
896                 0x000000e7, 0x000000ad, 0x0000    
897                 0x000000e2, 0x000000f9, 0x0000    
898                 0x0000001c, 0x00000075, 0x0000    
899                 0x00000047, 0x000000f1, 0x0000    
900                 0x0000001d, 0x00000029, 0x0000    
901                 0x0000006f, 0x000000b7, 0x0000    
902                 0x000000aa, 0x00000018, 0x0000    
903                 0x000000fc, 0x00000056, 0x0000    
904                 0x000000c6, 0x000000d2, 0x0000    
905                 0x0000009a, 0x000000db, 0x0000    
906                 0x00000078, 0x000000cd, 0x0000    
907                 0x0000001f, 0x000000dd, 0x0000    
908                 0x00000088, 0x00000007, 0x0000    
909                 0x000000b1, 0x00000012, 0x0000    
910                 0x00000027, 0x00000080, 0x0000    
911                 0x00000060, 0x00000051, 0x0000    
912                 0x00000019, 0x000000b5, 0x0000    
913                 0x0000002d, 0x000000e5, 0x0000    
914                 0x00000093, 0x000000c9, 0x0000    
915                 0x000000a0, 0x000000e0, 0x0000    
916                 0x000000ae, 0x0000002a, 0x0000    
917                 0x000000c8, 0x000000eb, 0x0000    
918                 0x00000083, 0x00000053, 0x0000    
919                 0x00000017, 0x0000002b, 0x0000    
920                 0x000000ba, 0x00000077, 0x0000    
921                 0x000000e1, 0x00000069, 0x0000    
922                 0x00000055, 0x00000021, 0x0000    
923         }, {                                      
924                 0x00005200, 0x00000900, 0x0000    
925                 0x00003000, 0x00003600, 0x0000    
926                 0x0000bf00, 0x00004000, 0x0000    
927                 0x00008100, 0x0000f300, 0x0000    
928                 0x00007c00, 0x0000e300, 0x0000    
929                 0x00009b00, 0x00002f00, 0x0000    
930                 0x00003400, 0x00008e00, 0x0000    
931                 0x0000c400, 0x0000de00, 0x0000    
932                 0x00005400, 0x00007b00, 0x0000    
933                 0x0000a600, 0x0000c200, 0x0000    
934                 0x0000ee00, 0x00004c00, 0x0000    
935                 0x00004200, 0x0000fa00, 0x0000    
936                 0x00000800, 0x00002e00, 0x0000    
937                 0x00002800, 0x0000d900, 0x0000    
938                 0x00007600, 0x00005b00, 0x0000    
939                 0x00006d00, 0x00008b00, 0x0000    
940                 0x00007200, 0x0000f800, 0x0000    
941                 0x00008600, 0x00006800, 0x0000    
942                 0x0000d400, 0x0000a400, 0x0000    
943                 0x00005d00, 0x00006500, 0x0000    
944                 0x00006c00, 0x00007000, 0x0000    
945                 0x0000fd00, 0x0000ed00, 0x0000    
946                 0x00005e00, 0x00001500, 0x0000    
947                 0x0000a700, 0x00008d00, 0x0000    
948                 0x00009000, 0x0000d800, 0x0000    
949                 0x00008c00, 0x0000bc00, 0x0000    
950                 0x0000f700, 0x0000e400, 0x0000    
951                 0x0000b800, 0x0000b300, 0x0000    
952                 0x0000d000, 0x00002c00, 0x0000    
953                 0x0000ca00, 0x00003f00, 0x0000    
954                 0x0000c100, 0x0000af00, 0x0000    
955                 0x00000100, 0x00001300, 0x0000    
956                 0x00003a00, 0x00009100, 0x0000    
957                 0x00004f00, 0x00006700, 0x0000    
958                 0x00009700, 0x0000f200, 0x0000    
959                 0x0000f000, 0x0000b400, 0x0000    
960                 0x00009600, 0x0000ac00, 0x0000    
961                 0x0000e700, 0x0000ad00, 0x0000    
962                 0x0000e200, 0x0000f900, 0x0000    
963                 0x00001c00, 0x00007500, 0x0000    
964                 0x00004700, 0x0000f100, 0x0000    
965                 0x00001d00, 0x00002900, 0x0000    
966                 0x00006f00, 0x0000b700, 0x0000    
967                 0x0000aa00, 0x00001800, 0x0000    
968                 0x0000fc00, 0x00005600, 0x0000    
969                 0x0000c600, 0x0000d200, 0x0000    
970                 0x00009a00, 0x0000db00, 0x0000    
971                 0x00007800, 0x0000cd00, 0x0000    
972                 0x00001f00, 0x0000dd00, 0x0000    
973                 0x00008800, 0x00000700, 0x0000    
974                 0x0000b100, 0x00001200, 0x0000    
975                 0x00002700, 0x00008000, 0x0000    
976                 0x00006000, 0x00005100, 0x0000    
977                 0x00001900, 0x0000b500, 0x0000    
978                 0x00002d00, 0x0000e500, 0x0000    
979                 0x00009300, 0x0000c900, 0x0000    
980                 0x0000a000, 0x0000e000, 0x0000    
981                 0x0000ae00, 0x00002a00, 0x0000    
982                 0x0000c800, 0x0000eb00, 0x0000    
983                 0x00008300, 0x00005300, 0x0000    
984                 0x00001700, 0x00002b00, 0x0000    
985                 0x0000ba00, 0x00007700, 0x0000    
986                 0x0000e100, 0x00006900, 0x0000    
987                 0x00005500, 0x00002100, 0x0000    
988         }, {                                      
989                 0x00520000, 0x00090000, 0x006a    
990                 0x00300000, 0x00360000, 0x00a5    
991                 0x00bf0000, 0x00400000, 0x00a3    
992                 0x00810000, 0x00f30000, 0x00d7    
993                 0x007c0000, 0x00e30000, 0x0039    
994                 0x009b0000, 0x002f0000, 0x00ff    
995                 0x00340000, 0x008e0000, 0x0043    
996                 0x00c40000, 0x00de0000, 0x00e9    
997                 0x00540000, 0x007b0000, 0x0094    
998                 0x00a60000, 0x00c20000, 0x0023    
999                 0x00ee0000, 0x004c0000, 0x0095    
1000                 0x00420000, 0x00fa0000, 0x00c    
1001                 0x00080000, 0x002e0000, 0x00a    
1002                 0x00280000, 0x00d90000, 0x002    
1003                 0x00760000, 0x005b0000, 0x00a    
1004                 0x006d0000, 0x008b0000, 0x00d    
1005                 0x00720000, 0x00f80000, 0x00f    
1006                 0x00860000, 0x00680000, 0x009    
1007                 0x00d40000, 0x00a40000, 0x005    
1008                 0x005d0000, 0x00650000, 0x00b    
1009                 0x006c0000, 0x00700000, 0x004    
1010                 0x00fd0000, 0x00ed0000, 0x00b    
1011                 0x005e0000, 0x00150000, 0x004    
1012                 0x00a70000, 0x008d0000, 0x009    
1013                 0x00900000, 0x00d80000, 0x00a    
1014                 0x008c0000, 0x00bc0000, 0x00d    
1015                 0x00f70000, 0x00e40000, 0x005    
1016                 0x00b80000, 0x00b30000, 0x004    
1017                 0x00d00000, 0x002c0000, 0x001    
1018                 0x00ca0000, 0x003f0000, 0x000    
1019                 0x00c10000, 0x00af0000, 0x00b    
1020                 0x00010000, 0x00130000, 0x008    
1021                 0x003a0000, 0x00910000, 0x001    
1022                 0x004f0000, 0x00670000, 0x00d    
1023                 0x00970000, 0x00f20000, 0x00c    
1024                 0x00f00000, 0x00b40000, 0x00e    
1025                 0x00960000, 0x00ac0000, 0x007    
1026                 0x00e70000, 0x00ad0000, 0x003    
1027                 0x00e20000, 0x00f90000, 0x003    
1028                 0x001c0000, 0x00750000, 0x00d    
1029                 0x00470000, 0x00f10000, 0x001    
1030                 0x001d0000, 0x00290000, 0x00c    
1031                 0x006f0000, 0x00b70000, 0x006    
1032                 0x00aa0000, 0x00180000, 0x00b    
1033                 0x00fc0000, 0x00560000, 0x003    
1034                 0x00c60000, 0x00d20000, 0x007    
1035                 0x009a0000, 0x00db0000, 0x00c    
1036                 0x00780000, 0x00cd0000, 0x005    
1037                 0x001f0000, 0x00dd0000, 0x00a    
1038                 0x00880000, 0x00070000, 0x00c    
1039                 0x00b10000, 0x00120000, 0x001    
1040                 0x00270000, 0x00800000, 0x00e    
1041                 0x00600000, 0x00510000, 0x007    
1042                 0x00190000, 0x00b50000, 0x004    
1043                 0x002d0000, 0x00e50000, 0x007    
1044                 0x00930000, 0x00c90000, 0x009    
1045                 0x00a00000, 0x00e00000, 0x003    
1046                 0x00ae0000, 0x002a0000, 0x00f    
1047                 0x00c80000, 0x00eb0000, 0x00b    
1048                 0x00830000, 0x00530000, 0x009    
1049                 0x00170000, 0x002b0000, 0x000    
1050                 0x00ba0000, 0x00770000, 0x00d    
1051                 0x00e10000, 0x00690000, 0x001    
1052                 0x00550000, 0x00210000, 0x000    
1053         }, {                                     
1054                 0x52000000, 0x09000000, 0x6a0    
1055                 0x30000000, 0x36000000, 0xa50    
1056                 0xbf000000, 0x40000000, 0xa30    
1057                 0x81000000, 0xf3000000, 0xd70    
1058                 0x7c000000, 0xe3000000, 0x390    
1059                 0x9b000000, 0x2f000000, 0xff0    
1060                 0x34000000, 0x8e000000, 0x430    
1061                 0xc4000000, 0xde000000, 0xe90    
1062                 0x54000000, 0x7b000000, 0x940    
1063                 0xa6000000, 0xc2000000, 0x230    
1064                 0xee000000, 0x4c000000, 0x950    
1065                 0x42000000, 0xfa000000, 0xc30    
1066                 0x08000000, 0x2e000000, 0xa10    
1067                 0x28000000, 0xd9000000, 0x240    
1068                 0x76000000, 0x5b000000, 0xa20    
1069                 0x6d000000, 0x8b000000, 0xd10    
1070                 0x72000000, 0xf8000000, 0xf60    
1071                 0x86000000, 0x68000000, 0x980    
1072                 0xd4000000, 0xa4000000, 0x5c0    
1073                 0x5d000000, 0x65000000, 0xb60    
1074                 0x6c000000, 0x70000000, 0x480    
1075                 0xfd000000, 0xed000000, 0xb90    
1076                 0x5e000000, 0x15000000, 0x460    
1077                 0xa7000000, 0x8d000000, 0x9d0    
1078                 0x90000000, 0xd8000000, 0xab0    
1079                 0x8c000000, 0xbc000000, 0xd30    
1080                 0xf7000000, 0xe4000000, 0x580    
1081                 0xb8000000, 0xb3000000, 0x450    
1082                 0xd0000000, 0x2c000000, 0x1e0    
1083                 0xca000000, 0x3f000000, 0x0f0    
1084                 0xc1000000, 0xaf000000, 0xbd0    
1085                 0x01000000, 0x13000000, 0x8a0    
1086                 0x3a000000, 0x91000000, 0x110    
1087                 0x4f000000, 0x67000000, 0xdc0    
1088                 0x97000000, 0xf2000000, 0xcf0    
1089                 0xf0000000, 0xb4000000, 0xe60    
1090                 0x96000000, 0xac000000, 0x740    
1091                 0xe7000000, 0xad000000, 0x350    
1092                 0xe2000000, 0xf9000000, 0x370    
1093                 0x1c000000, 0x75000000, 0xdf0    
1094                 0x47000000, 0xf1000000, 0x1a0    
1095                 0x1d000000, 0x29000000, 0xc50    
1096                 0x6f000000, 0xb7000000, 0x620    
1097                 0xaa000000, 0x18000000, 0xbe0    
1098                 0xfc000000, 0x56000000, 0x3e0    
1099                 0xc6000000, 0xd2000000, 0x790    
1100                 0x9a000000, 0xdb000000, 0xc00    
1101                 0x78000000, 0xcd000000, 0x5a0    
1102                 0x1f000000, 0xdd000000, 0xa80    
1103                 0x88000000, 0x07000000, 0xc70    
1104                 0xb1000000, 0x12000000, 0x100    
1105                 0x27000000, 0x80000000, 0xec0    
1106                 0x60000000, 0x51000000, 0x7f0    
1107                 0x19000000, 0xb5000000, 0x4a0    
1108                 0x2d000000, 0xe5000000, 0x7a0    
1109                 0x93000000, 0xc9000000, 0x9c0    
1110                 0xa0000000, 0xe0000000, 0x3b0    
1111                 0xae000000, 0x2a000000, 0xf50    
1112                 0xc8000000, 0xeb000000, 0xbb0    
1113                 0x83000000, 0x53000000, 0x990    
1114                 0x17000000, 0x2b000000, 0x040    
1115                 0xba000000, 0x77000000, 0xd60    
1116                 0xe1000000, 0x69000000, 0x140    
1117                 0x55000000, 0x21000000, 0x0c0    
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     
1127  * @in_key:     The input key.                   
1128  * @key_len:    The size of the key.             
1129  *                                               
1130  * This function uses aes_expand_key() to exp    
1131  * _must_ be the private data embedded in @tf    
1132  * crypto_tfm_ctx().                             
1133  *                                               
1134  * Return: 0 on success; -EINVAL on failure (    
1135  */                                              
1136 int crypto_aes_set_key(struct crypto_tfm *tfm    
1137                 unsigned int key_len)            
1138 {                                                
1139         struct crypto_aes_ctx *ctx = crypto_t    
1140                                                  
1141         return aes_expandkey(ctx, in_key, key    
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],     
1149                 crypto_ft_tab[1][byte(bi[(n +    
1150                 crypto_ft_tab[2][byte(bi[(n +    
1151                 crypto_ft_tab[3][byte(bi[(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],     
1164                 crypto_fl_tab[1][byte(bi[(n +    
1165                 crypto_fl_tab[2][byte(bi[(n +    
1166                 crypto_fl_tab[3][byte(bi[(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_    
1177 {                                                
1178         const struct crypto_aes_ctx *ctx = cr    
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_unalign    
1184         b0[1] = ctx->key_enc[1] ^ get_unalign    
1185         b0[2] = ctx->key_enc[2] ^ get_unalign    
1186         b0[3] = ctx->key_enc[3] ^ get_unalign    
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],     
1219                 crypto_it_tab[1][byte(bi[(n +    
1220                 crypto_it_tab[2][byte(bi[(n +    
1221                 crypto_it_tab[3][byte(bi[(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],     
1234         crypto_il_tab[1][byte(bi[(n + 3) & 3]    
1235         crypto_il_tab[2][byte(bi[(n + 2) & 3]    
1236         crypto_il_tab[3][byte(bi[(n + 1) & 3]    
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_    
1247 {                                                
1248         const struct crypto_aes_ctx *ctx = cr    
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_unalign    
1254         b0[1] = ctx->key_dec[1] ^ get_unalign    
1255         b0[2] = ctx->key_dec[2] ^ get_unalign    
1256         b0[3] = ctx->key_dec[3] ^ get_unalign    
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-    
1288         .cra_priority           =       100,     
1289         .cra_flags              =       CRYPT    
1290         .cra_blocksize          =       AES_B    
1291         .cra_ctxsize            =       sizeo    
1292         .cra_module             =       THIS_    
1293         .cra_u                  =       {        
1294                 .cipher = {                      
1295                         .cia_min_keysize         
1296                         .cia_max_keysize         
1297                         .cia_setkey              
1298                         .cia_encrypt             
1299                         .cia_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 subsys_initcall(aes_init);                       
1315 module_exit(aes_fini);                           
1316                                                  
1317 MODULE_DESCRIPTION("Rijndael (AES) Cipher Alg    
1318 MODULE_LICENSE("Dual BSD/GPL");                  
1319 MODULE_ALIAS_CRYPTO("aes");                      
1320 MODULE_ALIAS_CRYPTO("aes-generic");              
1321                                                  

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php