tizen 2.4 release
[external/nettle.git] / aes-decrypt.c
1 /* aes-decrypt.c
2  *
3  * Decryption function for aes/rijndael block cipher.
4  */
5
6 /* nettle, low-level cryptographics library
7  *
8  * Copyright (C) 2002 Niels Möller
9  *  
10  * The nettle library is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU Lesser General Public License as published by
12  * the Free Software Foundation; either version 2.1 of the License, or (at your
13  * option) any later version.
14  * 
15  * The nettle library is distributed in the hope that it will be useful, but
16  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
18  * License for more details.
19  * 
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with the nettle library; see the file COPYING.LIB.  If not, write to
22  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23  * MA 02111-1301, USA.
24  */
25
26 #if HAVE_CONFIG_H
27 # include "config.h"
28 #endif
29
30 #include <assert.h>
31
32 #include "aes-internal.h"
33
34 static const struct aes_table
35 _aes_decrypt_table =
36   { /* isbox */
37     {
38       0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38,
39       0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb,
40       0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87,
41       0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb,
42       0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d,
43       0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e,
44       0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2,
45       0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25,
46       0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16,
47       0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92,
48       0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda,
49       0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84,
50       0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a,
51       0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06,
52       0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02,
53       0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b,
54       0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea,
55       0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73,
56       0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85,
57       0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e,
58       0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89,
59       0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b,
60       0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20,
61       0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4,
62       0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31,
63       0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f,
64       0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d,
65       0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef,
66       0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0,
67       0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61,
68       0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26,
69       0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d,
70     },
71     { /* itable */
72       { 
73         0x50a7f451,0x5365417e,0xc3a4171a,0x965e273a,
74         0xcb6bab3b,0xf1459d1f,0xab58faac,0x9303e34b,
75         0x55fa3020,0xf66d76ad,0x9176cc88,0x254c02f5,
76         0xfcd7e54f,0xd7cb2ac5,0x80443526,0x8fa362b5,
77         0x495ab1de,0x671bba25,0x980eea45,0xe1c0fe5d,
78         0x02752fc3,0x12f04c81,0xa397468d,0xc6f9d36b,
79         0xe75f8f03,0x959c9215,0xeb7a6dbf,0xda595295,
80         0x2d83bed4,0xd3217458,0x2969e049,0x44c8c98e,
81         0x6a89c275,0x78798ef4,0x6b3e5899,0xdd71b927,
82         0xb64fe1be,0x17ad88f0,0x66ac20c9,0xb43ace7d,
83         0x184adf63,0x82311ae5,0x60335197,0x457f5362,
84         0xe07764b1,0x84ae6bbb,0x1ca081fe,0x942b08f9,
85         0x58684870,0x19fd458f,0x876cde94,0xb7f87b52,
86         0x23d373ab,0xe2024b72,0x578f1fe3,0x2aab5566,
87         0x0728ebb2,0x03c2b52f,0x9a7bc586,0xa50837d3,
88         0xf2872830,0xb2a5bf23,0xba6a0302,0x5c8216ed,
89         0x2b1ccf8a,0x92b479a7,0xf0f207f3,0xa1e2694e,
90         0xcdf4da65,0xd5be0506,0x1f6234d1,0x8afea6c4,
91         0x9d532e34,0xa055f3a2,0x32e18a05,0x75ebf6a4,
92         0x39ec830b,0xaaef6040,0x069f715e,0x51106ebd,
93         0xf98a213e,0x3d06dd96,0xae053edd,0x46bde64d,
94         0xb58d5491,0x055dc471,0x6fd40604,0xff155060,
95         0x24fb9819,0x97e9bdd6,0xcc434089,0x779ed967,
96         0xbd42e8b0,0x888b8907,0x385b19e7,0xdbeec879,
97         0x470a7ca1,0xe90f427c,0xc91e84f8,0x00000000,
98         0x83868009,0x48ed2b32,0xac70111e,0x4e725a6c,
99         0xfbff0efd,0x5638850f,0x1ed5ae3d,0x27392d36,
100         0x64d90f0a,0x21a65c68,0xd1545b9b,0x3a2e3624,
101         0xb1670a0c,0x0fe75793,0xd296eeb4,0x9e919b1b,
102         0x4fc5c080,0xa220dc61,0x694b775a,0x161a121c,
103         0x0aba93e2,0xe52aa0c0,0x43e0223c,0x1d171b12,
104         0x0b0d090e,0xadc78bf2,0xb9a8b62d,0xc8a91e14,
105         0x8519f157,0x4c0775af,0xbbdd99ee,0xfd607fa3,
106         0x9f2601f7,0xbcf5725c,0xc53b6644,0x347efb5b,
107         0x7629438b,0xdcc623cb,0x68fcedb6,0x63f1e4b8,
108         0xcadc31d7,0x10856342,0x40229713,0x2011c684,
109         0x7d244a85,0xf83dbbd2,0x1132f9ae,0x6da129c7,
110         0x4b2f9e1d,0xf330b2dc,0xec52860d,0xd0e3c177,
111         0x6c16b32b,0x99b970a9,0xfa489411,0x2264e947,
112         0xc48cfca8,0x1a3ff0a0,0xd82c7d56,0xef903322,
113         0xc74e4987,0xc1d138d9,0xfea2ca8c,0x360bd498,
114         0xcf81f5a6,0x28de7aa5,0x268eb7da,0xa4bfad3f,
115         0xe49d3a2c,0x0d927850,0x9bcc5f6a,0x62467e54,
116         0xc2138df6,0xe8b8d890,0x5ef7392e,0xf5afc382,
117         0xbe805d9f,0x7c93d069,0xa92dd56f,0xb31225cf,
118         0x3b99acc8,0xa77d1810,0x6e639ce8,0x7bbb3bdb,
119         0x097826cd,0xf418596e,0x01b79aec,0xa89a4f83,
120         0x656e95e6,0x7ee6ffaa,0x08cfbc21,0xe6e815ef,
121         0xd99be7ba,0xce366f4a,0xd4099fea,0xd67cb029,
122         0xafb2a431,0x31233f2a,0x3094a5c6,0xc066a235,
123         0x37bc4e74,0xa6ca82fc,0xb0d090e0,0x15d8a733,
124         0x4a9804f1,0xf7daec41,0x0e50cd7f,0x2ff69117,
125         0x8dd64d76,0x4db0ef43,0x544daacc,0xdf0496e4,
126         0xe3b5d19e,0x1b886a4c,0xb81f2cc1,0x7f516546,
127         0x04ea5e9d,0x5d358c01,0x737487fa,0x2e410bfb,
128         0x5a1d67b3,0x52d2db92,0x335610e9,0x1347d66d,
129         0x8c61d79a,0x7a0ca137,0x8e14f859,0x893c13eb,
130         0xee27a9ce,0x35c961b7,0xede51ce1,0x3cb1477a,
131         0x59dfd29c,0x3f73f255,0x79ce1418,0xbf37c773,
132         0xeacdf753,0x5baafd5f,0x146f3ddf,0x86db4478,
133         0x81f3afca,0x3ec468b9,0x2c342438,0x5f40a3c2,
134         0x72c31d16,0x0c25e2bc,0x8b493c28,0x41950dff,
135         0x7101a839,0xdeb30c08,0x9ce4b4d8,0x90c15664,
136         0x6184cb7b,0x70b632d5,0x745c6c48,0x4257b8d0,
137       },
138 #if !AES_SMALL
139       { /* Before: itable[1] */
140         0xa7f45150,0x65417e53,0xa4171ac3,0x5e273a96,
141         0x6bab3bcb,0x459d1ff1,0x58faacab,0x03e34b93,
142         0xfa302055,0x6d76adf6,0x76cc8891,0x4c02f525,
143         0xd7e54ffc,0xcb2ac5d7,0x44352680,0xa362b58f,
144         0x5ab1de49,0x1bba2567,0x0eea4598,0xc0fe5de1,
145         0x752fc302,0xf04c8112,0x97468da3,0xf9d36bc6,
146         0x5f8f03e7,0x9c921595,0x7a6dbfeb,0x595295da,
147         0x83bed42d,0x217458d3,0x69e04929,0xc8c98e44,
148         0x89c2756a,0x798ef478,0x3e58996b,0x71b927dd,
149         0x4fe1beb6,0xad88f017,0xac20c966,0x3ace7db4,
150         0x4adf6318,0x311ae582,0x33519760,0x7f536245,
151         0x7764b1e0,0xae6bbb84,0xa081fe1c,0x2b08f994,
152         0x68487058,0xfd458f19,0x6cde9487,0xf87b52b7,
153         0xd373ab23,0x024b72e2,0x8f1fe357,0xab55662a,
154         0x28ebb207,0xc2b52f03,0x7bc5869a,0x0837d3a5,
155         0x872830f2,0xa5bf23b2,0x6a0302ba,0x8216ed5c,
156         0x1ccf8a2b,0xb479a792,0xf207f3f0,0xe2694ea1,
157         0xf4da65cd,0xbe0506d5,0x6234d11f,0xfea6c48a,
158         0x532e349d,0x55f3a2a0,0xe18a0532,0xebf6a475,
159         0xec830b39,0xef6040aa,0x9f715e06,0x106ebd51,
160         0x8a213ef9,0x06dd963d,0x053eddae,0xbde64d46,
161         0x8d5491b5,0x5dc47105,0xd406046f,0x155060ff,
162         0xfb981924,0xe9bdd697,0x434089cc,0x9ed96777,
163         0x42e8b0bd,0x8b890788,0x5b19e738,0xeec879db,
164         0x0a7ca147,0x0f427ce9,0x1e84f8c9,0x00000000,
165         0x86800983,0xed2b3248,0x70111eac,0x725a6c4e,
166         0xff0efdfb,0x38850f56,0xd5ae3d1e,0x392d3627,
167         0xd90f0a64,0xa65c6821,0x545b9bd1,0x2e36243a,
168         0x670a0cb1,0xe757930f,0x96eeb4d2,0x919b1b9e,
169         0xc5c0804f,0x20dc61a2,0x4b775a69,0x1a121c16,
170         0xba93e20a,0x2aa0c0e5,0xe0223c43,0x171b121d,
171         0x0d090e0b,0xc78bf2ad,0xa8b62db9,0xa91e14c8,
172         0x19f15785,0x0775af4c,0xdd99eebb,0x607fa3fd,
173         0x2601f79f,0xf5725cbc,0x3b6644c5,0x7efb5b34,
174         0x29438b76,0xc623cbdc,0xfcedb668,0xf1e4b863,
175         0xdc31d7ca,0x85634210,0x22971340,0x11c68420,
176         0x244a857d,0x3dbbd2f8,0x32f9ae11,0xa129c76d,
177         0x2f9e1d4b,0x30b2dcf3,0x52860dec,0xe3c177d0,
178         0x16b32b6c,0xb970a999,0x489411fa,0x64e94722,
179         0x8cfca8c4,0x3ff0a01a,0x2c7d56d8,0x903322ef,
180         0x4e4987c7,0xd138d9c1,0xa2ca8cfe,0x0bd49836,
181         0x81f5a6cf,0xde7aa528,0x8eb7da26,0xbfad3fa4,
182         0x9d3a2ce4,0x9278500d,0xcc5f6a9b,0x467e5462,
183         0x138df6c2,0xb8d890e8,0xf7392e5e,0xafc382f5,
184         0x805d9fbe,0x93d0697c,0x2dd56fa9,0x1225cfb3,
185         0x99acc83b,0x7d1810a7,0x639ce86e,0xbb3bdb7b,
186         0x7826cd09,0x18596ef4,0xb79aec01,0x9a4f83a8,
187         0x6e95e665,0xe6ffaa7e,0xcfbc2108,0xe815efe6,
188         0x9be7bad9,0x366f4ace,0x099fead4,0x7cb029d6,
189         0xb2a431af,0x233f2a31,0x94a5c630,0x66a235c0,
190         0xbc4e7437,0xca82fca6,0xd090e0b0,0xd8a73315,
191         0x9804f14a,0xdaec41f7,0x50cd7f0e,0xf691172f,
192         0xd64d768d,0xb0ef434d,0x4daacc54,0x0496e4df,
193         0xb5d19ee3,0x886a4c1b,0x1f2cc1b8,0x5165467f,
194         0xea5e9d04,0x358c015d,0x7487fa73,0x410bfb2e,
195         0x1d67b35a,0xd2db9252,0x5610e933,0x47d66d13,
196         0x61d79a8c,0x0ca1377a,0x14f8598e,0x3c13eb89,
197         0x27a9ceee,0xc961b735,0xe51ce1ed,0xb1477a3c,
198         0xdfd29c59,0x73f2553f,0xce141879,0x37c773bf,
199         0xcdf753ea,0xaafd5f5b,0x6f3ddf14,0xdb447886,
200         0xf3afca81,0xc468b93e,0x3424382c,0x40a3c25f,
201         0xc31d1672,0x25e2bc0c,0x493c288b,0x950dff41,
202         0x01a83971,0xb30c08de,0xe4b4d89c,0xc1566490,
203         0x84cb7b61,0xb632d570,0x5c6c4874,0x57b8d042,
204       },{ /* Before: itable[2] */
205         0xf45150a7,0x417e5365,0x171ac3a4,0x273a965e,
206         0xab3bcb6b,0x9d1ff145,0xfaacab58,0xe34b9303,
207         0x302055fa,0x76adf66d,0xcc889176,0x02f5254c,
208         0xe54ffcd7,0x2ac5d7cb,0x35268044,0x62b58fa3,
209         0xb1de495a,0xba25671b,0xea45980e,0xfe5de1c0,
210         0x2fc30275,0x4c8112f0,0x468da397,0xd36bc6f9,
211         0x8f03e75f,0x9215959c,0x6dbfeb7a,0x5295da59,
212         0xbed42d83,0x7458d321,0xe0492969,0xc98e44c8,
213         0xc2756a89,0x8ef47879,0x58996b3e,0xb927dd71,
214         0xe1beb64f,0x88f017ad,0x20c966ac,0xce7db43a,
215         0xdf63184a,0x1ae58231,0x51976033,0x5362457f,
216         0x64b1e077,0x6bbb84ae,0x81fe1ca0,0x08f9942b,
217         0x48705868,0x458f19fd,0xde94876c,0x7b52b7f8,
218         0x73ab23d3,0x4b72e202,0x1fe3578f,0x55662aab,
219         0xebb20728,0xb52f03c2,0xc5869a7b,0x37d3a508,
220         0x2830f287,0xbf23b2a5,0x0302ba6a,0x16ed5c82,
221         0xcf8a2b1c,0x79a792b4,0x07f3f0f2,0x694ea1e2,
222         0xda65cdf4,0x0506d5be,0x34d11f62,0xa6c48afe,
223         0x2e349d53,0xf3a2a055,0x8a0532e1,0xf6a475eb,
224         0x830b39ec,0x6040aaef,0x715e069f,0x6ebd5110,
225         0x213ef98a,0xdd963d06,0x3eddae05,0xe64d46bd,
226         0x5491b58d,0xc471055d,0x06046fd4,0x5060ff15,
227         0x981924fb,0xbdd697e9,0x4089cc43,0xd967779e,
228         0xe8b0bd42,0x8907888b,0x19e7385b,0xc879dbee,
229         0x7ca1470a,0x427ce90f,0x84f8c91e,0x00000000,
230         0x80098386,0x2b3248ed,0x111eac70,0x5a6c4e72,
231         0x0efdfbff,0x850f5638,0xae3d1ed5,0x2d362739,
232         0x0f0a64d9,0x5c6821a6,0x5b9bd154,0x36243a2e,
233         0x0a0cb167,0x57930fe7,0xeeb4d296,0x9b1b9e91,
234         0xc0804fc5,0xdc61a220,0x775a694b,0x121c161a,
235         0x93e20aba,0xa0c0e52a,0x223c43e0,0x1b121d17,
236         0x090e0b0d,0x8bf2adc7,0xb62db9a8,0x1e14c8a9,
237         0xf1578519,0x75af4c07,0x99eebbdd,0x7fa3fd60,
238         0x01f79f26,0x725cbcf5,0x6644c53b,0xfb5b347e,
239         0x438b7629,0x23cbdcc6,0xedb668fc,0xe4b863f1,
240         0x31d7cadc,0x63421085,0x97134022,0xc6842011,
241         0x4a857d24,0xbbd2f83d,0xf9ae1132,0x29c76da1,
242         0x9e1d4b2f,0xb2dcf330,0x860dec52,0xc177d0e3,
243         0xb32b6c16,0x70a999b9,0x9411fa48,0xe9472264,
244         0xfca8c48c,0xf0a01a3f,0x7d56d82c,0x3322ef90,
245         0x4987c74e,0x38d9c1d1,0xca8cfea2,0xd498360b,
246         0xf5a6cf81,0x7aa528de,0xb7da268e,0xad3fa4bf,
247         0x3a2ce49d,0x78500d92,0x5f6a9bcc,0x7e546246,
248         0x8df6c213,0xd890e8b8,0x392e5ef7,0xc382f5af,
249         0x5d9fbe80,0xd0697c93,0xd56fa92d,0x25cfb312,
250         0xacc83b99,0x1810a77d,0x9ce86e63,0x3bdb7bbb,
251         0x26cd0978,0x596ef418,0x9aec01b7,0x4f83a89a,
252         0x95e6656e,0xffaa7ee6,0xbc2108cf,0x15efe6e8,
253         0xe7bad99b,0x6f4ace36,0x9fead409,0xb029d67c,
254         0xa431afb2,0x3f2a3123,0xa5c63094,0xa235c066,
255         0x4e7437bc,0x82fca6ca,0x90e0b0d0,0xa73315d8,
256         0x04f14a98,0xec41f7da,0xcd7f0e50,0x91172ff6,
257         0x4d768dd6,0xef434db0,0xaacc544d,0x96e4df04,
258         0xd19ee3b5,0x6a4c1b88,0x2cc1b81f,0x65467f51,
259         0x5e9d04ea,0x8c015d35,0x87fa7374,0x0bfb2e41,
260         0x67b35a1d,0xdb9252d2,0x10e93356,0xd66d1347,
261         0xd79a8c61,0xa1377a0c,0xf8598e14,0x13eb893c,
262         0xa9ceee27,0x61b735c9,0x1ce1ede5,0x477a3cb1,
263         0xd29c59df,0xf2553f73,0x141879ce,0xc773bf37,
264         0xf753eacd,0xfd5f5baa,0x3ddf146f,0x447886db,
265         0xafca81f3,0x68b93ec4,0x24382c34,0xa3c25f40,
266         0x1d1672c3,0xe2bc0c25,0x3c288b49,0x0dff4195,
267         0xa8397101,0x0c08deb3,0xb4d89ce4,0x566490c1,
268         0xcb7b6184,0x32d570b6,0x6c48745c,0xb8d04257,
269       },{ /* Before: itable[3] */
270         0x5150a7f4,0x7e536541,0x1ac3a417,0x3a965e27,
271         0x3bcb6bab,0x1ff1459d,0xacab58fa,0x4b9303e3,
272         0x2055fa30,0xadf66d76,0x889176cc,0xf5254c02,
273         0x4ffcd7e5,0xc5d7cb2a,0x26804435,0xb58fa362,
274         0xde495ab1,0x25671bba,0x45980eea,0x5de1c0fe,
275         0xc302752f,0x8112f04c,0x8da39746,0x6bc6f9d3,
276         0x03e75f8f,0x15959c92,0xbfeb7a6d,0x95da5952,
277         0xd42d83be,0x58d32174,0x492969e0,0x8e44c8c9,
278         0x756a89c2,0xf478798e,0x996b3e58,0x27dd71b9,
279         0xbeb64fe1,0xf017ad88,0xc966ac20,0x7db43ace,
280         0x63184adf,0xe582311a,0x97603351,0x62457f53,
281         0xb1e07764,0xbb84ae6b,0xfe1ca081,0xf9942b08,
282         0x70586848,0x8f19fd45,0x94876cde,0x52b7f87b,
283         0xab23d373,0x72e2024b,0xe3578f1f,0x662aab55,
284         0xb20728eb,0x2f03c2b5,0x869a7bc5,0xd3a50837,
285         0x30f28728,0x23b2a5bf,0x02ba6a03,0xed5c8216,
286         0x8a2b1ccf,0xa792b479,0xf3f0f207,0x4ea1e269,
287         0x65cdf4da,0x06d5be05,0xd11f6234,0xc48afea6,
288         0x349d532e,0xa2a055f3,0x0532e18a,0xa475ebf6,
289         0x0b39ec83,0x40aaef60,0x5e069f71,0xbd51106e,
290         0x3ef98a21,0x963d06dd,0xddae053e,0x4d46bde6,
291         0x91b58d54,0x71055dc4,0x046fd406,0x60ff1550,
292         0x1924fb98,0xd697e9bd,0x89cc4340,0x67779ed9,
293         0xb0bd42e8,0x07888b89,0xe7385b19,0x79dbeec8,
294         0xa1470a7c,0x7ce90f42,0xf8c91e84,0x00000000,
295         0x09838680,0x3248ed2b,0x1eac7011,0x6c4e725a,
296         0xfdfbff0e,0x0f563885,0x3d1ed5ae,0x3627392d,
297         0x0a64d90f,0x6821a65c,0x9bd1545b,0x243a2e36,
298         0x0cb1670a,0x930fe757,0xb4d296ee,0x1b9e919b,
299         0x804fc5c0,0x61a220dc,0x5a694b77,0x1c161a12,
300         0xe20aba93,0xc0e52aa0,0x3c43e022,0x121d171b,
301         0x0e0b0d09,0xf2adc78b,0x2db9a8b6,0x14c8a91e,
302         0x578519f1,0xaf4c0775,0xeebbdd99,0xa3fd607f,
303         0xf79f2601,0x5cbcf572,0x44c53b66,0x5b347efb,
304         0x8b762943,0xcbdcc623,0xb668fced,0xb863f1e4,
305         0xd7cadc31,0x42108563,0x13402297,0x842011c6,
306         0x857d244a,0xd2f83dbb,0xae1132f9,0xc76da129,
307         0x1d4b2f9e,0xdcf330b2,0x0dec5286,0x77d0e3c1,
308         0x2b6c16b3,0xa999b970,0x11fa4894,0x472264e9,
309         0xa8c48cfc,0xa01a3ff0,0x56d82c7d,0x22ef9033,
310         0x87c74e49,0xd9c1d138,0x8cfea2ca,0x98360bd4,
311         0xa6cf81f5,0xa528de7a,0xda268eb7,0x3fa4bfad,
312         0x2ce49d3a,0x500d9278,0x6a9bcc5f,0x5462467e,
313         0xf6c2138d,0x90e8b8d8,0x2e5ef739,0x82f5afc3,
314         0x9fbe805d,0x697c93d0,0x6fa92dd5,0xcfb31225,
315         0xc83b99ac,0x10a77d18,0xe86e639c,0xdb7bbb3b,
316         0xcd097826,0x6ef41859,0xec01b79a,0x83a89a4f,
317         0xe6656e95,0xaa7ee6ff,0x2108cfbc,0xefe6e815,
318         0xbad99be7,0x4ace366f,0xead4099f,0x29d67cb0,
319         0x31afb2a4,0x2a31233f,0xc63094a5,0x35c066a2,
320         0x7437bc4e,0xfca6ca82,0xe0b0d090,0x3315d8a7,
321         0xf14a9804,0x41f7daec,0x7f0e50cd,0x172ff691,
322         0x768dd64d,0x434db0ef,0xcc544daa,0xe4df0496,
323         0x9ee3b5d1,0x4c1b886a,0xc1b81f2c,0x467f5165,
324         0x9d04ea5e,0x015d358c,0xfa737487,0xfb2e410b,
325         0xb35a1d67,0x9252d2db,0xe9335610,0x6d1347d6,
326         0x9a8c61d7,0x377a0ca1,0x598e14f8,0xeb893c13,
327         0xceee27a9,0xb735c961,0xe1ede51c,0x7a3cb147,
328         0x9c59dfd2,0x553f73f2,0x1879ce14,0x73bf37c7,
329         0x53eacdf7,0x5f5baafd,0xdf146f3d,0x7886db44,
330         0xca81f3af,0xb93ec468,0x382c3424,0xc25f40a3,
331         0x1672c31d,0xbc0c25e2,0x288b493c,0xff41950d,
332         0x397101a8,0x08deb30c,0xd89ce4b4,0x6490c156,
333         0x7b6184cb,0xd570b632,0x48745c6c,0xd04257b8,
334       },
335 #endif /* !AES_SMALL */  
336     }
337   };
338
339 void
340 aes_decrypt(const struct aes_ctx *ctx,
341             unsigned length, uint8_t *dst,
342             const uint8_t *src)
343 {
344   assert(!(length % AES_BLOCK_SIZE) );
345   _aes_decrypt(ctx, &_aes_decrypt_table,
346                length, dst, src);
347 }