[CRYPTO] tcrypt: Shrink speed templates
[linux-flexiantxendom0-natty.git] / crypto / tcrypt.h
1 /*
2  * Quick & dirty crypto testing module.
3  *
4  * This will only exist until we have a better testing mechanism
5  * (e.g. a char device).
6  *
7  * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
8  * Copyright (c) 2002 Jean-Francois Dive <jef@linuxbe.org>
9  * Copyright (c) 2007 Nokia Siemens Networks
10  *
11  * This program is free software; you can redistribute it and/or modify it
12  * under the terms of the GNU General Public License as published by the Free
13  * Software Foundation; either version 2 of the License, or (at your option)
14  * any later version.
15  *
16  * 2007-11-13 Added GCM tests
17  * 2007-11-13 Added AEAD support
18  * 2006-12-07 Added SHA384 HMAC and SHA512 HMAC tests
19  * 2004-08-09 Cipher speed tests by Reyk Floeter <reyk@vantronix.net>
20  * 2003-09-14 Changes by Kartikey Mahendra Bhatt
21  *
22  */
23 #ifndef _CRYPTO_TCRYPT_H
24 #define _CRYPTO_TCRYPT_H
25
26 #define MAX_DIGEST_SIZE         64
27 #define MAX_TAP                 8
28
29 #define MAX_KEYLEN              56
30 #define MAX_IVLEN               32
31
32 struct hash_testvec {
33         /* only used with keyed hash algorithms */
34         char key[132] __attribute__ ((__aligned__(4)));
35         char plaintext[240];
36         char digest[MAX_DIGEST_SIZE];
37         unsigned char tap[MAX_TAP];
38         unsigned char psize;
39         unsigned char np;
40         unsigned char ksize;
41 };
42
43 struct cipher_testvec {
44         char key[MAX_KEYLEN] __attribute__ ((__aligned__(4)));
45         char iv[MAX_IVLEN];
46         char input[4100];
47         char result[4100];
48         unsigned char tap[MAX_TAP];
49         int np;
50         unsigned char fail;
51         unsigned char wk; /* weak key flag */
52         unsigned char klen;
53         unsigned short ilen;
54         unsigned short rlen;
55 };
56
57 struct aead_testvec {
58         char key[MAX_KEYLEN] __attribute__ ((__aligned__(4)));
59         char iv[MAX_IVLEN];
60         char input[512];
61         char assoc[512];
62         char result[512];
63         unsigned char tap[MAX_TAP];
64         unsigned char atap[MAX_TAP];
65         int np;
66         int anp;
67         unsigned char fail;
68         unsigned char wk; /* weak key flag */
69         unsigned char klen;
70         unsigned short ilen;
71         unsigned short alen;
72         unsigned short rlen;
73 };
74
75 struct hash_speed {
76         unsigned int blen;      /* buffer length */
77         unsigned int plen;      /* per-update length */
78 };
79
80 /*
81  * MD4 test vectors from RFC1320
82  */
83 #define MD4_TEST_VECTORS        7
84
85 static struct hash_testvec md4_tv_template [] = {
86         {
87                 .plaintext = "",
88                 .digest = { 0x31, 0xd6, 0xcf, 0xe0, 0xd1, 0x6a, 0xe9, 0x31,
89                             0xb7, 0x3c, 0x59, 0xd7, 0xe0, 0xc0, 0x89, 0xc0 },
90         }, {
91                 .plaintext = "a",
92                 .psize  = 1,
93                 .digest = { 0xbd, 0xe5, 0x2c, 0xb3, 0x1d, 0xe3, 0x3e, 0x46,
94                             0x24, 0x5e, 0x05, 0xfb, 0xdb, 0xd6, 0xfb, 0x24 },
95         }, {
96                 .plaintext = "abc",
97                 .psize  = 3,
98                 .digest = { 0xa4, 0x48, 0x01, 0x7a, 0xaf, 0x21, 0xd8, 0x52,
99                             0x5f, 0xc1, 0x0a, 0xe8, 0x7a, 0xa6, 0x72, 0x9d },
100         }, {
101                 .plaintext = "message digest",
102                 .psize  = 14,
103                 .digest = { 0xd9, 0x13, 0x0a, 0x81, 0x64, 0x54, 0x9f, 0xe8,
104                             0x18, 0x87, 0x48, 0x06, 0xe1, 0xc7, 0x01, 0x4b },
105         }, {
106                 .plaintext = "abcdefghijklmnopqrstuvwxyz",
107                 .psize  = 26,
108                 .digest = { 0xd7, 0x9e, 0x1c, 0x30, 0x8a, 0xa5, 0xbb, 0xcd,
109                             0xee, 0xa8, 0xed, 0x63, 0xdf, 0x41, 0x2d, 0xa9 },
110                 .np     = 2,
111                 .tap    = { 13, 13 },
112         }, {
113                 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
114                 .psize  = 62,
115                 .digest = { 0x04, 0x3f, 0x85, 0x82, 0xf2, 0x41, 0xdb, 0x35,
116                             0x1c, 0xe6, 0x27, 0xe1, 0x53, 0xe7, 0xf0, 0xe4 },
117         }, {
118                 .plaintext = "123456789012345678901234567890123456789012345678901234567890123"
119                              "45678901234567890",
120                 .psize  = 80,
121                 .digest = { 0xe3, 0x3b, 0x4d, 0xdc, 0x9c, 0x38, 0xf2, 0x19,
122                             0x9c, 0x3e, 0x7b, 0x16, 0x4f, 0xcc, 0x05, 0x36 },
123         },
124 };
125
126 /*
127  * MD5 test vectors from RFC1321
128  */
129 #define MD5_TEST_VECTORS        7
130
131 static struct hash_testvec md5_tv_template[] = {
132         {
133                 .digest = { 0xd4, 0x1d, 0x8c, 0xd9, 0x8f, 0x00, 0xb2, 0x04,
134                             0xe9, 0x80, 0x09, 0x98, 0xec, 0xf8, 0x42, 0x7e },
135         }, {
136                 .plaintext = "a",
137                 .psize  = 1,
138                 .digest = { 0x0c, 0xc1, 0x75, 0xb9, 0xc0, 0xf1, 0xb6, 0xa8,
139                             0x31, 0xc3, 0x99, 0xe2, 0x69, 0x77, 0x26, 0x61 },
140         }, {
141                 .plaintext = "abc",
142                 .psize  = 3,
143                 .digest = { 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0,
144                             0xd6, 0x96, 0x3f, 0x7d, 0x28, 0xe1, 0x7f, 0x72 },
145         }, {
146                 .plaintext = "message digest",
147                 .psize  = 14,
148                 .digest = { 0xf9, 0x6b, 0x69, 0x7d, 0x7c, 0xb7, 0x93, 0x8d,
149                             0x52, 0x5a, 0x2f, 0x31, 0xaa, 0xf1, 0x61, 0xd0 },
150         }, {
151                 .plaintext = "abcdefghijklmnopqrstuvwxyz",
152                 .psize  = 26,
153                 .digest = { 0xc3, 0xfc, 0xd3, 0xd7, 0x61, 0x92, 0xe4, 0x00,
154                             0x7d, 0xfb, 0x49, 0x6c, 0xca, 0x67, 0xe1, 0x3b },
155                 .np     = 2,
156                 .tap    = {13, 13}
157         }, {
158                 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
159                 .psize  = 62,
160                 .digest = { 0xd1, 0x74, 0xab, 0x98, 0xd2, 0x77, 0xd9, 0xf5,
161                             0xa5, 0x61, 0x1c, 0x2c, 0x9f, 0x41, 0x9d, 0x9f },
162         }, {
163                 .plaintext = "12345678901234567890123456789012345678901234567890123456789012"
164                              "345678901234567890",
165                 .psize  = 80,
166                 .digest = { 0x57, 0xed, 0xf4, 0xa2, 0x2b, 0xe3, 0xc9, 0x55,
167                             0xac, 0x49, 0xda, 0x2e, 0x21, 0x07, 0xb6, 0x7a },
168         }
169 };
170
171 /*
172  * SHA1 test vectors  from from FIPS PUB 180-1
173  */
174 #define SHA1_TEST_VECTORS       2
175
176 static struct hash_testvec sha1_tv_template[] = {
177         {
178                 .plaintext = "abc",
179                 .psize  = 3,
180                 .digest = { 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, 0x6a, 0xba, 0x3e,
181                             0x25, 0x71, 0x78, 0x50, 0xc2, 0x6c, 0x9c, 0xd0, 0xd8, 0x9d },
182         }, {
183                 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
184                 .psize  = 56,
185                 .digest = { 0x84, 0x98, 0x3e, 0x44, 0x1c, 0x3b, 0xd2, 0x6e, 0xba, 0xae,
186                             0x4a, 0xa1, 0xf9, 0x51, 0x29, 0xe5, 0xe5, 0x46, 0x70, 0xf1 },
187                 .np     = 2,
188                 .tap    = { 28, 28 }
189         }
190 };
191
192
193 /*
194  * SHA224 test vectors from from FIPS PUB 180-2
195  */
196 #define SHA224_TEST_VECTORS     2
197
198 static struct hash_testvec sha224_tv_template[] = {
199         {
200                 .plaintext = "abc",
201                 .psize  = 3,
202                 .digest = { 0x23, 0x09, 0x7D, 0x22, 0x34, 0x05, 0xD8, 0x22,
203                         0x86, 0x42, 0xA4, 0x77, 0xBD, 0xA2, 0x55, 0xB3,
204                         0x2A, 0xAD, 0xBC, 0xE4, 0xBD, 0xA0, 0xB3, 0xF7,
205                         0xE3, 0x6C, 0x9D, 0xA7},
206         }, {
207                 .plaintext =
208                 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
209                 .psize  = 56,
210                 .digest = { 0x75, 0x38, 0x8B, 0x16, 0x51, 0x27, 0x76, 0xCC,
211                         0x5D, 0xBA, 0x5D, 0xA1, 0xFD, 0x89, 0x01, 0x50,
212                         0xB0, 0xC6, 0x45, 0x5C, 0xB4, 0xF5, 0x8B, 0x19,
213                         0x52, 0x52, 0x25, 0x25 },
214                 .np     = 2,
215                 .tap    = { 28, 28 }
216         }
217 };
218
219 /*
220  * SHA256 test vectors from from NIST
221  */
222 #define SHA256_TEST_VECTORS     2
223
224 static struct hash_testvec sha256_tv_template[] = {
225         {
226                 .plaintext = "abc",
227                 .psize  = 3,
228                 .digest = { 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea,
229                             0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23,
230                             0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c,
231                             0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad },
232         }, {
233                 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
234                 .psize  = 56,
235                 .digest = { 0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8,
236                             0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39,
237                             0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67,
238                             0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1 },
239                 .np     = 2,
240                 .tap    = { 28, 28 }
241         },
242 };
243
244 /*
245  * SHA384 test vectors from from NIST and kerneli
246  */
247 #define SHA384_TEST_VECTORS     4
248
249 static struct hash_testvec sha384_tv_template[] = {
250         {
251                 .plaintext= "abc",
252                 .psize  = 3,
253                 .digest = { 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b,
254                             0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07,
255                             0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63,
256                             0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed,
257                             0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23,
258                             0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7 },
259         }, {
260                 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
261                 .psize  = 56,
262                 .digest = { 0x33, 0x91, 0xfd, 0xdd, 0xfc, 0x8d, 0xc7, 0x39,
263                             0x37, 0x07, 0xa6, 0x5b, 0x1b, 0x47, 0x09, 0x39,
264                             0x7c, 0xf8, 0xb1, 0xd1, 0x62, 0xaf, 0x05, 0xab,
265                             0xfe, 0x8f, 0x45, 0x0d, 0xe5, 0xf3, 0x6b, 0xc6,
266                             0xb0, 0x45, 0x5a, 0x85, 0x20, 0xbc, 0x4e, 0x6f,
267                             0x5f, 0xe9, 0x5b, 0x1f, 0xe3, 0xc8, 0x45, 0x2b},
268         }, {
269                 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
270                              "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
271                 .psize  = 112,
272                 .digest = { 0x09, 0x33, 0x0c, 0x33, 0xf7, 0x11, 0x47, 0xe8,
273                             0x3d, 0x19, 0x2f, 0xc7, 0x82, 0xcd, 0x1b, 0x47,
274                             0x53, 0x11, 0x1b, 0x17, 0x3b, 0x3b, 0x05, 0xd2,
275                             0x2f, 0xa0, 0x80, 0x86, 0xe3, 0xb0, 0xf7, 0x12,
276                             0xfc, 0xc7, 0xc7, 0x1a, 0x55, 0x7e, 0x2d, 0xb9,
277                             0x66, 0xc3, 0xe9, 0xfa, 0x91, 0x74, 0x60, 0x39  },
278         }, {
279                 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
280                              "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
281                 .psize  = 104,
282                 .digest = { 0x3d, 0x20, 0x89, 0x73, 0xab, 0x35, 0x08, 0xdb,
283                             0xbd, 0x7e, 0x2c, 0x28, 0x62, 0xba, 0x29, 0x0a,
284                             0xd3, 0x01, 0x0e, 0x49, 0x78, 0xc1, 0x98, 0xdc,
285                             0x4d, 0x8f, 0xd0, 0x14, 0xe5, 0x82, 0x82, 0x3a,
286                             0x89, 0xe1, 0x6f, 0x9b, 0x2a, 0x7b, 0xbc, 0x1a,
287                             0xc9, 0x38, 0xe2, 0xd1, 0x99, 0xe8, 0xbe, 0xa4 },
288                 .np     = 4,
289                 .tap    = { 26, 26, 26, 26 }
290         },
291 };
292
293 /*
294  * SHA512 test vectors from from NIST and kerneli
295  */
296 #define SHA512_TEST_VECTORS     4
297
298 static struct hash_testvec sha512_tv_template[] = {
299         {
300                 .plaintext = "abc",
301                 .psize  = 3,
302                 .digest = { 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba,
303                             0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31,
304                             0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2,
305                             0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a,
306                             0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8,
307                             0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd,
308                             0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e,
309                             0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f },
310         }, {
311                 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
312                 .psize  = 56,
313                 .digest = { 0x20, 0x4a, 0x8f, 0xc6, 0xdd, 0xa8, 0x2f, 0x0a,
314                             0x0c, 0xed, 0x7b, 0xeb, 0x8e, 0x08, 0xa4, 0x16,
315                             0x57, 0xc1, 0x6e, 0xf4, 0x68, 0xb2, 0x28, 0xa8,
316                             0x27, 0x9b, 0xe3, 0x31, 0xa7, 0x03, 0xc3, 0x35,
317                             0x96, 0xfd, 0x15, 0xc1, 0x3b, 0x1b, 0x07, 0xf9,
318                             0xaa, 0x1d, 0x3b, 0xea, 0x57, 0x78, 0x9c, 0xa0,
319                             0x31, 0xad, 0x85, 0xc7, 0xa7, 0x1d, 0xd7, 0x03,
320                             0x54, 0xec, 0x63, 0x12, 0x38, 0xca, 0x34, 0x45 },
321         }, {
322                 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
323                              "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
324                 .psize  = 112,
325                 .digest = { 0x8e, 0x95, 0x9b, 0x75, 0xda, 0xe3, 0x13, 0xda,
326                             0x8c, 0xf4, 0xf7, 0x28, 0x14, 0xfc, 0x14, 0x3f,
327                             0x8f, 0x77, 0x79, 0xc6, 0xeb, 0x9f, 0x7f, 0xa1,
328                             0x72, 0x99, 0xae, 0xad, 0xb6, 0x88, 0x90, 0x18,
329                             0x50, 0x1d, 0x28, 0x9e, 0x49, 0x00, 0xf7, 0xe4,
330                             0x33, 0x1b, 0x99, 0xde, 0xc4, 0xb5, 0x43, 0x3a,
331                             0xc7, 0xd3, 0x29, 0xee, 0xb6, 0xdd, 0x26, 0x54,
332                             0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09 },
333         }, {
334                 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
335                              "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
336                 .psize  = 104,
337                 .digest = { 0x93, 0x0d, 0x0c, 0xef, 0xcb, 0x30, 0xff, 0x11,
338                             0x33, 0xb6, 0x89, 0x81, 0x21, 0xf1, 0xcf, 0x3d,
339                             0x27, 0x57, 0x8a, 0xfc, 0xaf, 0xe8, 0x67, 0x7c,
340                             0x52, 0x57, 0xcf, 0x06, 0x99, 0x11, 0xf7, 0x5d,
341                             0x8f, 0x58, 0x31, 0xb5, 0x6e, 0xbf, 0xda, 0x67,
342                             0xb2, 0x78, 0xe6, 0x6d, 0xff, 0x8b, 0x84, 0xfe,
343                             0x2b, 0x28, 0x70, 0xf7, 0x42, 0xa5, 0x80, 0xd8,
344                             0xed, 0xb4, 0x19, 0x87, 0x23, 0x28, 0x50, 0xc9 },
345                 .np     = 4,
346                 .tap    = { 26, 26, 26, 26 }
347         },
348 };
349
350
351 /*
352  * WHIRLPOOL test vectors from Whirlpool package
353  * by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE
354  * submission
355  */
356 #define WP512_TEST_VECTORS      8
357
358 static struct hash_testvec wp512_tv_template[] = {
359         {
360                 .plaintext = "",
361                 .psize  = 0,
362                 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66,
363                             0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26,
364                             0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8,
365                             0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7,
366                             0x3E, 0x83, 0xBE, 0x69, 0x8B, 0x28, 0x8F, 0xEB,
367                             0xCF, 0x88, 0xE3, 0xE0, 0x3C, 0x4F, 0x07, 0x57,
368                             0xEA, 0x89, 0x64, 0xE5, 0x9B, 0x63, 0xD9, 0x37,
369                             0x08, 0xB1, 0x38, 0xCC, 0x42, 0xA6, 0x6E, 0xB3 },
370
371
372         }, {
373                 .plaintext = "a",
374                 .psize  = 1,
375                 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F,
376                             0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7,
377                             0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69,
378                             0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42,
379                             0xD1, 0x1B, 0xC6, 0x45, 0x41, 0x3A, 0xEF, 0xF6,
380                             0x3A, 0x42, 0x39, 0x1A, 0x39, 0x14, 0x5A, 0x59,
381                             0x1A, 0x92, 0x20, 0x0D, 0x56, 0x01, 0x95, 0xE5,
382                             0x3B, 0x47, 0x85, 0x84, 0xFD, 0xAE, 0x23, 0x1A },
383         }, {
384                 .plaintext = "abc",
385                 .psize  = 3,
386                 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB,
387                             0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B,
388                             0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72,
389                             0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C,
390                             0x71, 0x81, 0xEE, 0xBD, 0xB6, 0xC5, 0x7E, 0x27,
391                             0x7D, 0x0E, 0x34, 0x95, 0x71, 0x14, 0xCB, 0xD6,
392                             0xC7, 0x97, 0xFC, 0x9D, 0x95, 0xD8, 0xB5, 0x82,
393                             0xD2, 0x25, 0x29, 0x20, 0x76, 0xD4, 0xEE, 0xF5 },
394         }, {
395                 .plaintext = "message digest",
396                 .psize  = 14,
397                 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6,
398                             0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC,
399                             0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C,
400                             0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B,
401                             0x84, 0x21, 0x55, 0x76, 0x59, 0xEF, 0x55, 0xC1,
402                             0x06, 0xB4, 0xB5, 0x2A, 0xC5, 0xA4, 0xAA, 0xA6,
403                             0x92, 0xED, 0x92, 0x00, 0x52, 0x83, 0x8F, 0x33,
404                             0x62, 0xE8, 0x6D, 0xBD, 0x37, 0xA8, 0x90, 0x3E },
405         }, {
406                 .plaintext = "abcdefghijklmnopqrstuvwxyz",
407                 .psize  = 26,
408                 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9,
409                             0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A,
410                             0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5,
411                             0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B,
412                             0x08, 0xBF, 0x2A, 0x92, 0x51, 0xC3, 0x0B, 0x6A,
413                             0x0B, 0x8A, 0xAE, 0x86, 0x17, 0x7A, 0xB4, 0xA6,
414                             0xF6, 0x8F, 0x67, 0x3E, 0x72, 0x07, 0x86, 0x5D,
415                             0x5D, 0x98, 0x19, 0xA3, 0xDB, 0xA4, 0xEB, 0x3B },
416         }, {
417                 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
418                              "abcdefghijklmnopqrstuvwxyz0123456789",
419                 .psize  = 62,
420                 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B,
421                             0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90,
422                             0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC,
423                             0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E,
424                             0x08, 0xEB, 0xA2, 0x66, 0x29, 0x12, 0x9D, 0x8F,
425                             0xB7, 0xCB, 0x57, 0x21, 0x1B, 0x92, 0x81, 0xA6,
426                             0x55, 0x17, 0xCC, 0x87, 0x9D, 0x7B, 0x96, 0x21,
427                             0x42, 0xC6, 0x5F, 0x5A, 0x7A, 0xF0, 0x14, 0x67 },
428         }, {
429                 .plaintext = "1234567890123456789012345678901234567890"
430                              "1234567890123456789012345678901234567890",
431                 .psize  = 80,
432                 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D,
433                             0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0,
434                             0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6,
435                             0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29,
436                             0x4D, 0x5B, 0xD8, 0xDF, 0x2A, 0x6C, 0x44, 0xE5,
437                             0x38, 0xCD, 0x04, 0x7B, 0x26, 0x81, 0xA5, 0x1A,
438                             0x2C, 0x60, 0x48, 0x1E, 0x88, 0xC5, 0xA2, 0x0B,
439                             0x2C, 0x2A, 0x80, 0xCF, 0x3A, 0x9A, 0x08, 0x3B },
440         }, {
441                 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
442                 .psize  = 32,
443                 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61,
444                             0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48,
445                             0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62,
446                             0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69,
447                             0x16, 0xBD, 0xC8, 0x03, 0x1B, 0xC5, 0xBE, 0x1B,
448                             0x7B, 0x94, 0x76, 0x39, 0xFE, 0x05, 0x0B, 0x56,
449                             0x93, 0x9B, 0xAA, 0xA0, 0xAD, 0xFF, 0x9A, 0xE6,
450                             0x74, 0x5B, 0x7B, 0x18, 0x1C, 0x3B, 0xE3, 0xFD },
451         },
452 };
453
454 #define WP384_TEST_VECTORS      8
455
456 static struct hash_testvec wp384_tv_template[] = {
457         {
458                 .plaintext = "",
459                 .psize  = 0,
460                 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66,
461                             0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26,
462                             0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8,
463                             0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7,
464                             0x3E, 0x83, 0xBE, 0x69, 0x8B, 0x28, 0x8F, 0xEB,
465                             0xCF, 0x88, 0xE3, 0xE0, 0x3C, 0x4F, 0x07, 0x57 },
466
467
468         }, {
469                 .plaintext = "a",
470                 .psize  = 1,
471                 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F,
472                             0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7,
473                             0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69,
474                             0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42,
475                             0xD1, 0x1B, 0xC6, 0x45, 0x41, 0x3A, 0xEF, 0xF6,
476                             0x3A, 0x42, 0x39, 0x1A, 0x39, 0x14, 0x5A, 0x59 },
477         }, {
478                 .plaintext = "abc",
479                 .psize  = 3,
480                 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB,
481                             0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B,
482                             0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72,
483                             0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C,
484                             0x71, 0x81, 0xEE, 0xBD, 0xB6, 0xC5, 0x7E, 0x27,
485                             0x7D, 0x0E, 0x34, 0x95, 0x71, 0x14, 0xCB, 0xD6 },
486         }, {
487                 .plaintext = "message digest",
488                 .psize  = 14,
489                 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6,
490                             0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC,
491                             0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C,
492                             0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B,
493                             0x84, 0x21, 0x55, 0x76, 0x59, 0xEF, 0x55, 0xC1,
494                             0x06, 0xB4, 0xB5, 0x2A, 0xC5, 0xA4, 0xAA, 0xA6 },
495         }, {
496                 .plaintext = "abcdefghijklmnopqrstuvwxyz",
497                 .psize  = 26,
498                 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9,
499                             0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A,
500                             0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5,
501                             0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B,
502                             0x08, 0xBF, 0x2A, 0x92, 0x51, 0xC3, 0x0B, 0x6A,
503                             0x0B, 0x8A, 0xAE, 0x86, 0x17, 0x7A, 0xB4, 0xA6 },
504         }, {
505                 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
506                              "abcdefghijklmnopqrstuvwxyz0123456789",
507                 .psize  = 62,
508                 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B,
509                             0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90,
510                             0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC,
511                             0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E,
512                             0x08, 0xEB, 0xA2, 0x66, 0x29, 0x12, 0x9D, 0x8F,
513                             0xB7, 0xCB, 0x57, 0x21, 0x1B, 0x92, 0x81, 0xA6 },
514         }, {
515                 .plaintext = "1234567890123456789012345678901234567890"
516                              "1234567890123456789012345678901234567890",
517                 .psize  = 80,
518                 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D,
519                             0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0,
520                             0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6,
521                             0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29,
522                             0x4D, 0x5B, 0xD8, 0xDF, 0x2A, 0x6C, 0x44, 0xE5,
523                             0x38, 0xCD, 0x04, 0x7B, 0x26, 0x81, 0xA5, 0x1A },
524         }, {
525                 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
526                 .psize  = 32,
527                 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61,
528                             0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48,
529                             0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62,
530                             0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69,
531                             0x16, 0xBD, 0xC8, 0x03, 0x1B, 0xC5, 0xBE, 0x1B,
532                             0x7B, 0x94, 0x76, 0x39, 0xFE, 0x05, 0x0B, 0x56 },
533         },
534 };
535
536 #define WP256_TEST_VECTORS      8
537
538 static struct hash_testvec wp256_tv_template[] = {
539         {
540                 .plaintext = "",
541                 .psize  = 0,
542                 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66,
543                             0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26,
544                             0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8,
545                             0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7 },
546
547
548         }, {
549                 .plaintext = "a",
550                 .psize  = 1,
551                 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F,
552                             0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7,
553                             0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69,
554                             0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42 },
555         }, {
556                 .plaintext = "abc",
557                 .psize  = 3,
558                 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB,
559                             0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B,
560                             0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72,
561                             0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C },
562         }, {
563                 .plaintext = "message digest",
564                 .psize  = 14,
565                 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6,
566                             0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC,
567                             0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C,
568                             0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B },
569         }, {
570                 .plaintext = "abcdefghijklmnopqrstuvwxyz",
571                 .psize  = 26,
572                 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9,
573                             0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A,
574                             0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5,
575                             0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B },
576         }, {
577                 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
578                              "abcdefghijklmnopqrstuvwxyz0123456789",
579                 .psize  = 62,
580                 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B,
581                             0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90,
582                             0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC,
583                             0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E },
584         }, {
585                 .plaintext = "1234567890123456789012345678901234567890"
586                              "1234567890123456789012345678901234567890",
587                 .psize  = 80,
588                 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D,
589                             0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0,
590                             0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6,
591                             0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29 },
592         }, {
593                 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
594                 .psize  = 32,
595                 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61,
596                             0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48,
597                             0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62,
598                             0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69 },
599         },
600 };
601
602 /*
603  * TIGER test vectors from Tiger website
604  */
605 #define TGR192_TEST_VECTORS     6
606
607 static struct hash_testvec tgr192_tv_template[] = {
608         {
609                 .plaintext = "",
610                 .psize  = 0,
611                 .digest = { 0x24, 0xf0, 0x13, 0x0c, 0x63, 0xac, 0x93, 0x32,
612                             0x16, 0x16, 0x6e, 0x76, 0xb1, 0xbb, 0x92, 0x5f,
613                             0xf3, 0x73, 0xde, 0x2d, 0x49, 0x58, 0x4e, 0x7a },
614         }, {
615                 .plaintext = "abc",
616                 .psize  = 3,
617                 .digest = { 0xf2, 0x58, 0xc1, 0xe8, 0x84, 0x14, 0xab, 0x2a,
618                             0x52, 0x7a, 0xb5, 0x41, 0xff, 0xc5, 0xb8, 0xbf,
619                             0x93, 0x5f, 0x7b, 0x95, 0x1c, 0x13, 0x29, 0x51 },
620         }, {
621                 .plaintext = "Tiger",
622                 .psize  = 5,
623                 .digest = { 0x9f, 0x00, 0xf5, 0x99, 0x07, 0x23, 0x00, 0xdd,
624                             0x27, 0x6a, 0xbb, 0x38, 0xc8, 0xeb, 0x6d, 0xec,
625                             0x37, 0x79, 0x0c, 0x11, 0x6f, 0x9d, 0x2b, 0xdf },
626         }, {
627                 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
628                 .psize  = 64,
629                 .digest = { 0x87, 0xfb, 0x2a, 0x90, 0x83, 0x85, 0x1c, 0xf7,
630                             0x47, 0x0d, 0x2c, 0xf8, 0x10, 0xe6, 0xdf, 0x9e,
631                             0xb5, 0x86, 0x44, 0x50, 0x34, 0xa5, 0xa3, 0x86 },
632         }, {
633                 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
634                 .psize  = 64,
635                 .digest = { 0x46, 0x7d, 0xb8, 0x08, 0x63, 0xeb, 0xce, 0x48,
636                             0x8d, 0xf1, 0xcd, 0x12, 0x61, 0x65, 0x5d, 0xe9,
637                             0x57, 0x89, 0x65, 0x65, 0x97, 0x5f, 0x91, 0x97 },
638         }, {
639                 .plaintext = "Tiger - A Fast New Hash Function, "
640                              "by Ross Anderson and Eli Biham, "
641                              "proceedings of Fast Software Encryption 3, "
642                              "Cambridge, 1996.",
643                 .psize  = 125,
644                 .digest = { 0x3d, 0x9a, 0xeb, 0x03, 0xd1, 0xbd, 0x1a, 0x63,
645                             0x57, 0xb2, 0x77, 0x4d, 0xfd, 0x6d, 0x5b, 0x24,
646                             0xdd, 0x68, 0x15, 0x1d, 0x50, 0x39, 0x74, 0xfc },
647         },
648 };
649
650 #define TGR160_TEST_VECTORS     6
651
652 static struct hash_testvec tgr160_tv_template[] = {
653         {
654                 .plaintext = "",
655                 .psize  = 0,
656                 .digest = { 0x24, 0xf0, 0x13, 0x0c, 0x63, 0xac, 0x93, 0x32,
657                             0x16, 0x16, 0x6e, 0x76, 0xb1, 0xbb, 0x92, 0x5f,
658                             0xf3, 0x73, 0xde, 0x2d },
659         }, {
660                 .plaintext = "abc",
661                 .psize  = 3,
662                 .digest = { 0xf2, 0x58, 0xc1, 0xe8, 0x84, 0x14, 0xab, 0x2a,
663                             0x52, 0x7a, 0xb5, 0x41, 0xff, 0xc5, 0xb8, 0xbf,
664                             0x93, 0x5f, 0x7b, 0x95 },
665         }, {
666                 .plaintext = "Tiger",
667                 .psize  = 5,
668                 .digest = { 0x9f, 0x00, 0xf5, 0x99, 0x07, 0x23, 0x00, 0xdd,
669                             0x27, 0x6a, 0xbb, 0x38, 0xc8, 0xeb, 0x6d, 0xec,
670                             0x37, 0x79, 0x0c, 0x11 },
671         }, {
672                 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
673                 .psize  = 64,
674                 .digest = { 0x87, 0xfb, 0x2a, 0x90, 0x83, 0x85, 0x1c, 0xf7,
675                             0x47, 0x0d, 0x2c, 0xf8, 0x10, 0xe6, 0xdf, 0x9e,
676                             0xb5, 0x86, 0x44, 0x50 },
677         }, {
678                 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
679                 .psize  = 64,
680                 .digest = { 0x46, 0x7d, 0xb8, 0x08, 0x63, 0xeb, 0xce, 0x48,
681                             0x8d, 0xf1, 0xcd, 0x12, 0x61, 0x65, 0x5d, 0xe9,
682                             0x57, 0x89, 0x65, 0x65 },
683         }, {
684                 .plaintext = "Tiger - A Fast New Hash Function, "
685                              "by Ross Anderson and Eli Biham, "
686                              "proceedings of Fast Software Encryption 3, "
687                              "Cambridge, 1996.",
688                 .psize  = 125,
689                 .digest = { 0x3d, 0x9a, 0xeb, 0x03, 0xd1, 0xbd, 0x1a, 0x63,
690                             0x57, 0xb2, 0x77, 0x4d, 0xfd, 0x6d, 0x5b, 0x24,
691                             0xdd, 0x68, 0x15, 0x1d },
692         },
693 };
694
695 #define TGR128_TEST_VECTORS     6
696
697 static struct hash_testvec tgr128_tv_template[] = {
698         {
699                 .plaintext = "",
700                 .psize  = 0,
701                 .digest = { 0x24, 0xf0, 0x13, 0x0c, 0x63, 0xac, 0x93, 0x32,
702                             0x16, 0x16, 0x6e, 0x76, 0xb1, 0xbb, 0x92, 0x5f },
703         }, {
704                 .plaintext = "abc",
705                 .psize  = 3,
706                 .digest = { 0xf2, 0x58, 0xc1, 0xe8, 0x84, 0x14, 0xab, 0x2a,
707                             0x52, 0x7a, 0xb5, 0x41, 0xff, 0xc5, 0xb8, 0xbf },
708         }, {
709                 .plaintext = "Tiger",
710                 .psize  = 5,
711                 .digest = { 0x9f, 0x00, 0xf5, 0x99, 0x07, 0x23, 0x00, 0xdd,
712                             0x27, 0x6a, 0xbb, 0x38, 0xc8, 0xeb, 0x6d, 0xec },
713         }, {
714                 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
715                 .psize  = 64,
716                 .digest = { 0x87, 0xfb, 0x2a, 0x90, 0x83, 0x85, 0x1c, 0xf7,
717                             0x47, 0x0d, 0x2c, 0xf8, 0x10, 0xe6, 0xdf, 0x9e },
718         }, {
719                 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
720                 .psize  = 64,
721                 .digest = { 0x46, 0x7d, 0xb8, 0x08, 0x63, 0xeb, 0xce, 0x48,
722                             0x8d, 0xf1, 0xcd, 0x12, 0x61, 0x65, 0x5d, 0xe9 },
723         }, {
724                 .plaintext = "Tiger - A Fast New Hash Function, "
725                              "by Ross Anderson and Eli Biham, "
726                              "proceedings of Fast Software Encryption 3, "
727                              "Cambridge, 1996.",
728                 .psize  = 125,
729                 .digest = { 0x3d, 0x9a, 0xeb, 0x03, 0xd1, 0xbd, 0x1a, 0x63,
730                             0x57, 0xb2, 0x77, 0x4d, 0xfd, 0x6d, 0x5b, 0x24 },
731         },
732 };
733
734 /*
735  * HMAC-MD5 test vectors from RFC2202
736  * (These need to be fixed to not use strlen).
737  */
738 #define HMAC_MD5_TEST_VECTORS   7
739
740 static struct hash_testvec hmac_md5_tv_template[] =
741 {
742         {
743                 .key    = { [0 ... 15] =  0x0b },
744                 .ksize  = 16,
745                 .plaintext = "Hi There",
746                 .psize  = 8,
747                 .digest = { 0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c,
748                             0x13, 0xf4, 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d },
749         }, {
750                 .key    = { 'J', 'e', 'f', 'e' },
751                 .ksize  = 4,
752                 .plaintext = "what do ya want for nothing?",
753                 .psize  = 28,
754                 .digest = { 0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03,
755                             0xea, 0xa8, 0x6e, 0x31, 0x0a, 0x5d, 0xb7, 0x38 },
756                 .np     = 2,
757                 .tap    = {14, 14}
758         }, {
759                 .key    = { [0 ... 15] = 0xaa },
760                 .ksize  = 16,
761                 .plaintext = { [0 ... 49] =  0xdd },
762                 .psize  = 50,
763                 .digest = { 0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c, 0x88,
764                             0xdb, 0xb8, 0xc7, 0x33, 0xf0, 0xe8, 0xb3, 0xf6 },
765         }, {
766                 .key    = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
767                             0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
768                             0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, },
769                 .ksize  = 25,
770                 .plaintext = { [0 ... 49] =  0xcd },
771                 .psize  = 50,
772                 .digest = { 0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a, 0xea,
773                             0x3a, 0x75, 0x16, 0x47, 0x46, 0xff, 0xaa, 0x79 },
774         }, {
775                 .key    = { [0 ... 15] = 0x0c },
776                 .ksize  = 16,
777                 .plaintext = "Test With Truncation",
778                 .psize  = 20,
779                 .digest = { 0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc, 0x00,
780                             0xf9, 0xba, 0xb9, 0x95, 0x69, 0x0e, 0xfd, 0x4c },
781         }, {
782                 .key    = { [0 ... 79] =  0xaa },
783                 .ksize  = 80,
784                 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
785                 .psize  = 54,
786                 .digest = { 0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f,
787                             0x0b, 0x62, 0xe6, 0xce, 0x61, 0xb9, 0xd0, 0xcd },
788         }, {
789                 .key    = { [0 ... 79] =  0xaa },
790                 .ksize  = 80,
791                 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
792                              "Block-Size Data",
793                 .psize  = 73,
794                 .digest = { 0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee,
795                             0x1f, 0xb1, 0xf5, 0x62, 0xdb, 0x3a, 0xa5, 0x3e },
796         },
797 };
798
799 /*
800  * HMAC-SHA1 test vectors from RFC2202
801  */
802 #define HMAC_SHA1_TEST_VECTORS  7
803
804 static struct hash_testvec hmac_sha1_tv_template[] = {
805         {
806                 .key    = { [0 ... 19] = 0x0b },
807                 .ksize  = 20,
808                 .plaintext = "Hi There",
809                 .psize  = 8,
810                 .digest = { 0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64,
811                             0xe2, 0x8b, 0xc0, 0xb6, 0xfb, 0x37, 0x8c, 0x8e, 0xf1,
812                             0x46, 0xbe },
813         }, {
814                 .key    = { 'J', 'e', 'f', 'e' },
815                 .ksize  = 4,
816                 .plaintext = "what do ya want for nothing?",
817                 .psize  = 28,
818                 .digest = { 0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2, 0xd2, 0x74,
819                             0x16, 0xd5, 0xf1, 0x84, 0xdf, 0x9c, 0x25, 0x9a, 0x7c, 0x79 },
820                 .np     = 2,
821                 .tap    = { 14, 14 }
822         }, {
823                 .key    = { [0 ... 19] = 0xaa },
824                 .ksize  = 20,
825                 .plaintext = { [0 ... 49] = 0xdd },
826                 .psize  = 50,
827                 .digest = { 0x12, 0x5d, 0x73, 0x42, 0xb9, 0xac, 0x11, 0xcd, 0x91, 0xa3,
828                             0x9a, 0xf4, 0x8a, 0xa1, 0x7b, 0x4f, 0x63, 0xf1, 0x75, 0xd3 },
829         }, {
830                 .key    = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
831                             0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
832                             0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19 },
833                 .ksize  = 25,
834                 .plaintext = { [0 ... 49] = 0xcd },
835                 .psize  = 50,
836                 .digest = { 0x4c, 0x90, 0x07, 0xf4, 0x02, 0x62, 0x50, 0xc6, 0xbc, 0x84,
837                             0x14, 0xf9, 0xbf, 0x50, 0xc8, 0x6c, 0x2d, 0x72, 0x35, 0xda },
838         }, {
839                 .key    = { [0 ... 19] = 0x0c },
840                 .ksize  = 20,
841                 .plaintext = "Test With Truncation",
842                 .psize  = 20,
843                 .digest = { 0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f, 0xe7, 0xf2,
844                             0x7b, 0xe1, 0xd5, 0x8b, 0xb9, 0x32, 0x4a, 0x9a, 0x5a, 0x04 },
845         }, {
846                 .key    = { [0 ... 79] = 0xaa },
847                 .ksize  = 80,
848                 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
849                 .psize  = 54,
850                 .digest = { 0xaa, 0x4a, 0xe5, 0xe1, 0x52, 0x72, 0xd0, 0x0e, 0x95, 0x70,
851                             0x56, 0x37, 0xce, 0x8a, 0x3b, 0x55, 0xed, 0x40, 0x21, 0x12 },
852         }, {
853                 .key    = { [0 ... 79] = 0xaa },
854                 .ksize  = 80,
855                 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
856                              "Block-Size Data",
857                 .psize  = 73,
858                 .digest = { 0xe8, 0xe9, 0x9d, 0x0f, 0x45, 0x23, 0x7d, 0x78, 0x6d, 0x6b,
859                             0xba, 0xa7, 0x96, 0x5c, 0x78, 0x08, 0xbb, 0xff, 0x1a, 0x91 },
860         },
861 };
862
863
864 /*
865  * SHA224 HMAC test vectors from RFC4231
866  */
867 #define HMAC_SHA224_TEST_VECTORS    4
868
869 static struct hash_testvec hmac_sha224_tv_template[] = {
870         {
871                 .key    = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
872                         0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
873                         0x0b, 0x0b, 0x0b, 0x0b },
874                 .ksize  = 20,
875                 /*  ("Hi There") */
876                 .plaintext = { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 },
877                 .psize  = 8,
878                 .digest = { 0x89, 0x6f, 0xb1, 0x12, 0x8a, 0xbb, 0xdf, 0x19,
879                         0x68, 0x32, 0x10, 0x7c, 0xd4, 0x9d, 0xf3, 0x3f,
880                         0x47, 0xb4, 0xb1, 0x16, 0x99, 0x12, 0xba, 0x4f,
881                         0x53, 0x68, 0x4b, 0x22},
882         }, {
883                 .key    = { 0x4a, 0x65, 0x66, 0x65 }, /* ("Jefe") */
884                 .ksize  = 4,
885                 /* ("what do ya want for nothing?") */
886                 .plaintext = { 0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20,
887                         0x79, 0x61, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20,
888                         0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68,
889                         0x69, 0x6e, 0x67, 0x3f },
890                 .psize  = 28,
891                 .digest = { 0xa3, 0x0e, 0x01, 0x09, 0x8b, 0xc6, 0xdb, 0xbf,
892                         0x45, 0x69, 0x0f, 0x3a, 0x7e, 0x9e, 0x6d, 0x0f,
893                         0x8b, 0xbe, 0xa2, 0xa3, 0x9e, 0x61, 0x48, 0x00,
894                         0x8f, 0xd0, 0x5e, 0x44 },
895                 .np = 4,
896                 .tap    = { 7, 7, 7, 7 }
897         }, {
898                 .key    = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
899                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
900                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
901                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
902                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
903                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
904                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
905                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
906                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
907                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
908                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
909                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
910                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
911                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
912                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
913                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
914                         0xaa, 0xaa, 0xaa },
915                 .ksize  = 131,
916                 /* ("Test Using Larger Than Block-Size Key - Hash Key First") */
917                 .plaintext = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69,
918                         0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65,
919                         0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42,
920                         0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a,
921                         0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20,
922                         0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79,
923                         0x20, 0x46, 0x69, 0x72, 0x73, 0x74 },
924                 .psize  = 54,
925                 .digest = { 0x95, 0xe9, 0xa0, 0xdb, 0x96, 0x20, 0x95, 0xad,
926                         0xae, 0xbe, 0x9b, 0x2d, 0x6f, 0x0d, 0xbc, 0xe2,
927                         0xd4, 0x99, 0xf1, 0x12, 0xf2, 0xd2, 0xb7, 0x27,
928                         0x3f, 0xa6, 0x87, 0x0e },
929         }, {
930                 .key    = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
931                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
932                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
933                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
934                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
935                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
936                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
937                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
938                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
939                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
940                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
941                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
942                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
943                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
944                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
945                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
946                         0xaa, 0xaa, 0xaa },
947                 .ksize  = 131,
948                 /* ("This is a test using a larger than block-size key and a")
949                 (" larger than block-size data. The key needs to be")
950                         (" hashed before being used by the HMAC algorithm.") */
951                 .plaintext = { 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
952                         0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75,
953                         0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6c,
954                         0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68,
955                         0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
956                         0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6b, 0x65,
957                         0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20,
958                         0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74,
959                         0x68, 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63,
960                         0x6b, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x64,
961                         0x61, 0x74, 0x61, 0x2e, 0x20, 0x54, 0x68, 0x65,
962                         0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x65, 0x65,
963                         0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65,
964                         0x20, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x20,
965                         0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62,
966                         0x65, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65,
967                         0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
968                         0x20, 0x48, 0x4d, 0x41, 0x43, 0x20, 0x61, 0x6c,
969                         0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x2e },
970                 .psize  = 152,
971                 .digest = { 0x3a, 0x85, 0x41, 0x66, 0xac, 0x5d, 0x9f, 0x02,
972                         0x3f, 0x54, 0xd5, 0x17, 0xd0, 0xb3, 0x9d, 0xbd,
973                         0x94, 0x67, 0x70, 0xdb, 0x9c, 0x2b, 0x95, 0xc9,
974                         0xf6, 0xf5, 0x65, 0xd1 },
975         },
976 };
977
978 /*
979  * HMAC-SHA256 test vectors from
980  * draft-ietf-ipsec-ciph-sha-256-01.txt
981  */
982 #define HMAC_SHA256_TEST_VECTORS        10
983
984 static struct hash_testvec hmac_sha256_tv_template[] = {
985         {
986                 .key    = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
987                             0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
988                             0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
989                             0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20},
990                 .ksize  = 32,
991                 .plaintext = "abc",
992                 .psize  = 3,
993                 .digest = { 0xa2, 0x1b, 0x1f, 0x5d, 0x4c, 0xf4, 0xf7, 0x3a,
994                             0x4d, 0xd9, 0x39, 0x75, 0x0f, 0x7a, 0x06, 0x6a,
995                             0x7f, 0x98, 0xcc, 0x13, 0x1c, 0xb1, 0x6a, 0x66,
996                             0x92, 0x75, 0x90, 0x21, 0xcf, 0xab, 0x81, 0x81 },
997         }, {
998                 .key    = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
999                             0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
1000                             0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
1001                             0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 },
1002                 .ksize  = 32,
1003                 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1004                 .psize  = 56,
1005                 .digest = { 0x10, 0x4f, 0xdc, 0x12, 0x57, 0x32, 0x8f, 0x08,
1006                             0x18, 0x4b, 0xa7, 0x31, 0x31, 0xc5, 0x3c, 0xae,
1007                             0xe6, 0x98, 0xe3, 0x61, 0x19, 0x42, 0x11, 0x49,
1008                             0xea, 0x8c, 0x71, 0x24, 0x56, 0x69, 0x7d, 0x30 },
1009         }, {
1010                 .key    = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
1011                             0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
1012                             0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
1013                             0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 },
1014                 .ksize  = 32,
1015                 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
1016                              "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1017                 .psize  = 112,
1018                 .digest = { 0x47, 0x03, 0x05, 0xfc, 0x7e, 0x40, 0xfe, 0x34,
1019                             0xd3, 0xee, 0xb3, 0xe7, 0x73, 0xd9, 0x5a, 0xab,
1020                             0x73, 0xac, 0xf0, 0xfd, 0x06, 0x04, 0x47, 0xa5,
1021                             0xeb, 0x45, 0x95, 0xbf, 0x33, 0xa9, 0xd1, 0xa3 },
1022         }, {
1023                 .key    = { [0 ... 31] = 0x0b },
1024                 .ksize  = 32,
1025                 .plaintext = "Hi There",
1026                 .psize  = 8,
1027                 .digest = { 0x19, 0x8a, 0x60, 0x7e, 0xb4, 0x4b, 0xfb, 0xc6,
1028                             0x99, 0x03, 0xa0, 0xf1, 0xcf, 0x2b, 0xbd, 0xc5,
1029                             0xba, 0x0a, 0xa3, 0xf3, 0xd9, 0xae, 0x3c, 0x1c,
1030                             0x7a, 0x3b, 0x16, 0x96, 0xa0, 0xb6, 0x8c, 0xf7 },
1031         }, {
1032                 .key    = "Jefe",
1033                 .ksize  = 4,
1034                 .plaintext = "what do ya want for nothing?",
1035                 .psize  = 28,
1036                 .digest = { 0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e,
1037                             0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7,
1038                             0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83,
1039                             0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43 },
1040                 .np     = 2,
1041                 .tap    = { 14, 14 }
1042         }, {
1043                 .key    = { [0 ... 31] = 0xaa },
1044                 .ksize  = 32,
1045                 .plaintext = { [0 ... 49] = 0xdd },
1046                 .psize  = 50,
1047                 .digest = { 0xcd, 0xcb, 0x12, 0x20, 0xd1, 0xec, 0xcc, 0xea,
1048                             0x91, 0xe5, 0x3a, 0xba, 0x30, 0x92, 0xf9, 0x62,
1049                             0xe5, 0x49, 0xfe, 0x6c, 0xe9, 0xed, 0x7f, 0xdc,
1050                             0x43, 0x19, 0x1f, 0xbd, 0xe4, 0x5c, 0x30, 0xb0 },
1051         }, {
1052                 .key    = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
1053                             0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
1054                             0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
1055                             0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
1056                             0x21, 0x22, 0x23, 0x24, 0x25 },
1057                 .ksize  = 37,
1058                 .plaintext = { [0 ... 49] = 0xcd },
1059                 .psize  = 50,
1060                 .digest = { 0xd4, 0x63, 0x3c, 0x17, 0xf6, 0xfb, 0x8d, 0x74,
1061                             0x4c, 0x66, 0xde, 0xe0, 0xf8, 0xf0, 0x74, 0x55,
1062                             0x6e, 0xc4, 0xaf, 0x55, 0xef, 0x07, 0x99, 0x85,
1063                             0x41, 0x46, 0x8e, 0xb4, 0x9b, 0xd2, 0xe9, 0x17 },
1064         }, {
1065                 .key    = { [0 ... 31] = 0x0c },
1066                 .ksize  = 32,
1067                 .plaintext = "Test With Truncation",
1068                 .psize  = 20,
1069                 .digest = { 0x75, 0x46, 0xaf, 0x01, 0x84, 0x1f, 0xc0, 0x9b,
1070                             0x1a, 0xb9, 0xc3, 0x74, 0x9a, 0x5f, 0x1c, 0x17,
1071                             0xd4, 0xf5, 0x89, 0x66, 0x8a, 0x58, 0x7b, 0x27,
1072                             0x00, 0xa9, 0xc9, 0x7c, 0x11, 0x93, 0xcf, 0x42 },
1073         }, {
1074                 .key    = { [0 ... 79] = 0xaa },
1075                 .ksize  = 80,
1076                 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1077                 .psize  = 54,
1078                 .digest = { 0x69, 0x53, 0x02, 0x5e, 0xd9, 0x6f, 0x0c, 0x09,
1079                             0xf8, 0x0a, 0x96, 0xf7, 0x8e, 0x65, 0x38, 0xdb,
1080                             0xe2, 0xe7, 0xb8, 0x20, 0xe3, 0xdd, 0x97, 0x0e,
1081                             0x7d, 0xdd, 0x39, 0x09, 0x1b, 0x32, 0x35, 0x2f },
1082         }, {
1083                 .key    = { [0 ... 79] = 0xaa },
1084                 .ksize  = 80,
1085                 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than "
1086                              "One Block-Size Data",
1087                 .psize  = 73,
1088                 .digest = { 0x63, 0x55, 0xac, 0x22, 0xe8, 0x90, 0xd0, 0xa3,
1089                             0xc8, 0x48, 0x1a, 0x5c, 0xa4, 0x82, 0x5b, 0xc8,
1090                             0x84, 0xd3, 0xe7, 0xa1, 0xff, 0x98, 0xa2, 0xfc,
1091                             0x2a, 0xc7, 0xd8, 0xe0, 0x64, 0xc3, 0xb2, 0xe6 },
1092         },
1093 };
1094
1095 #define XCBC_AES_TEST_VECTORS 6
1096
1097 static struct hash_testvec aes_xcbc128_tv_template[] = {
1098         {
1099                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1100                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1101                 .plaintext = { [0 ... 15] = 0 },
1102                 .digest = { 0x75, 0xf0, 0x25, 0x1d, 0x52, 0x8a, 0xc0, 0x1c,
1103                             0x45, 0x73, 0xdf, 0xd5, 0x84, 0xd7, 0x9f, 0x29 },
1104                 .psize  = 0,
1105                 .ksize  = 16,
1106         }, {
1107                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1108                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1109                 .plaintext = { 0x00, 0x01, 0x02 },
1110                 .digest = { 0x5b, 0x37, 0x65, 0x80, 0xae, 0x2f, 0x19, 0xaf,
1111                             0xe7, 0x21, 0x9c, 0xee, 0xf1, 0x72, 0x75, 0x6f },
1112                 .psize  = 3,
1113                 .ksize  = 16,
1114         } , {
1115                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1116                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1117                 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1118                                0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1119                 .digest = { 0xd2, 0xa2, 0x46, 0xfa, 0x34, 0x9b, 0x68, 0xa7,
1120                             0x99, 0x98, 0xa4, 0x39, 0x4f, 0xf7, 0xa2, 0x63 },
1121                 .psize  = 16,
1122                 .ksize  = 16,
1123         }, {
1124                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1125                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1126                 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1127                                0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1128                                0x10, 0x11, 0x12, 0x13 },
1129                 .digest = { 0x47, 0xf5, 0x1b, 0x45, 0x64, 0x96, 0x62, 0x15,
1130                             0xb8, 0x98, 0x5c, 0x63, 0x05, 0x5e, 0xd3, 0x08 },
1131                 .tap    = { 10, 10 },
1132                 .psize  = 20,
1133                 .np     = 2,
1134                 .ksize  = 16,
1135         }, {
1136                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1137                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1138                 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1139                                0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1140                                0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1141                                0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
1142                 .digest = { 0xf5, 0x4f, 0x0e, 0xc8, 0xd2, 0xb9, 0xf3, 0xd3,
1143                             0x68, 0x07, 0x73, 0x4b, 0xd5, 0x28, 0x3f, 0xd4 },
1144                 .psize  = 32,
1145                 .ksize  = 16,
1146         }, {
1147                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1148                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1149                 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1150                                0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1151                                0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1152                                0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
1153                                0x20, 0x21 },
1154                 .digest = { 0xbe, 0xcb, 0xb3, 0xbc, 0xcd, 0xb5, 0x18, 0xa3,
1155                             0x06, 0x77, 0xd5, 0x48, 0x1f, 0xb6, 0xb4, 0xd8 },
1156                 .tap    = { 17, 17 },
1157                 .psize  = 34,
1158                 .np     = 2,
1159                 .ksize  = 16,
1160         }
1161 };
1162
1163 /*
1164  * SHA384 HMAC test vectors from RFC4231
1165  */
1166
1167 #define HMAC_SHA384_TEST_VECTORS        4
1168
1169 static struct hash_testvec hmac_sha384_tv_template[] = {
1170         {
1171                 .key    = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
1172                             0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
1173                             0x0b, 0x0b, 0x0b, 0x0b }, // (20 bytes)
1174                 .ksize  = 20,
1175                 .plaintext = { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 }, // ("Hi There")
1176                 .psize  = 8,
1177                 .digest = { 0xaf, 0xd0, 0x39, 0x44, 0xd8, 0x48, 0x95, 0x62,
1178                             0x6b, 0x08, 0x25, 0xf4, 0xab, 0x46, 0x90, 0x7f,
1179                             0x15, 0xf9, 0xda, 0xdb, 0xe4, 0x10, 0x1e, 0xc6,
1180                             0x82, 0xaa, 0x03, 0x4c, 0x7c, 0xeb, 0xc5, 0x9c,
1181                             0xfa, 0xea, 0x9e, 0xa9, 0x07, 0x6e, 0xde, 0x7f,
1182                             0x4a, 0xf1, 0x52, 0xe8, 0xb2, 0xfa, 0x9c, 0xb6 },
1183         }, {
1184                 .key    = { 0x4a, 0x65, 0x66, 0x65 }, // ("Jefe")
1185                 .ksize  = 4,
1186                 .plaintext = { 0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20,
1187                                0x79, 0x61, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, // ("what do ya want ")
1188                                0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68,
1189                                0x69, 0x6e, 0x67, 0x3f }, // ("for nothing?")
1190                 .psize  = 28,
1191                 .digest = { 0xaf, 0x45, 0xd2, 0xe3, 0x76, 0x48, 0x40, 0x31,
1192                             0x61, 0x7f, 0x78, 0xd2, 0xb5, 0x8a, 0x6b, 0x1b,
1193                             0x9c, 0x7e, 0xf4, 0x64, 0xf5, 0xa0, 0x1b, 0x47,
1194                             0xe4, 0x2e, 0xc3, 0x73, 0x63, 0x22, 0x44, 0x5e,
1195                             0x8e, 0x22, 0x40, 0xca, 0x5e, 0x69, 0xe2, 0xc7,
1196                             0x8b, 0x32, 0x39, 0xec, 0xfa, 0xb2, 0x16, 0x49 },
1197                 .np     = 4,
1198                 .tap    = { 7, 7, 7, 7 }
1199         }, {
1200                 .key    = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1201                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1202                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1203                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1204                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1205                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1206                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1207                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1208                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1209                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1210                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1211                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1212                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1213                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1214                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1215                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1216                             0xaa, 0xaa, 0xaa }, // (131 bytes)
1217                 .ksize  = 131,
1218                 .plaintext = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69,
1219                                0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, // ("Test Using Large")
1220                                0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42,
1221                                0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, // ("r Than Block-Siz")
1222                                0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20,
1223                                0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79, // ("e Key - Hash Key")
1224                                0x20, 0x46, 0x69, 0x72, 0x73, 0x74 }, // (" First")
1225                 .psize  = 54,
1226                 .digest = { 0x4e, 0xce, 0x08, 0x44, 0x85, 0x81, 0x3e, 0x90,
1227                             0x88, 0xd2, 0xc6, 0x3a, 0x04, 0x1b, 0xc5, 0xb4,
1228                             0x4f, 0x9e, 0xf1, 0x01, 0x2a, 0x2b, 0x58, 0x8f,
1229                             0x3c, 0xd1, 0x1f, 0x05, 0x03, 0x3a, 0xc4, 0xc6,
1230                             0x0c, 0x2e, 0xf6, 0xab, 0x40, 0x30, 0xfe, 0x82,
1231                             0x96, 0x24, 0x8d, 0xf1, 0x63, 0xf4, 0x49, 0x52 },
1232         }, {
1233                 .key    = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1234                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1235                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1236                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1237                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1238                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1239                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1240                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1241                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1242                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1243                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1244                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1245                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1246                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1247                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1248                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1249                             0xaa, 0xaa, 0xaa }, // (131 bytes)
1250                 .ksize  = 131,
1251                 .plaintext = { 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
1252                                0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75, // ("This is a test u")
1253                                0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6c,
1254                                0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68, // ("sing a larger th")
1255                                0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
1256                                0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6b, 0x65, // ("an block-size ke")
1257                                0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20,
1258                                0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, // ("y and a larger t")
1259                                0x68, 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63,
1260                                0x6b, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x64, // ("han block-size d")
1261                                0x61, 0x74, 0x61, 0x2e, 0x20, 0x54, 0x68, 0x65,
1262                                0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x65, 0x65, // ("ata. The key nee")
1263                                0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65,
1264                                0x20, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x20, // ("ds to be hashed ")
1265                                0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62,
1266                                0x65, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, // ("before being use")
1267                                0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
1268                                0x20, 0x48, 0x4d, 0x41, 0x43, 0x20, 0x61, 0x6c, // ("d by the HMAC al")
1269                                0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x2e }, // ("gorithm.")
1270                 .psize  = 152,
1271                 .digest = { 0x66, 0x17, 0x17, 0x8e, 0x94, 0x1f, 0x02, 0x0d,
1272                             0x35, 0x1e, 0x2f, 0x25, 0x4e, 0x8f, 0xd3, 0x2c,
1273                             0x60, 0x24, 0x20, 0xfe, 0xb0, 0xb8, 0xfb, 0x9a,
1274                             0xdc, 0xce, 0xbb, 0x82, 0x46, 0x1e, 0x99, 0xc5,
1275                             0xa6, 0x78, 0xcc, 0x31, 0xe7, 0x99, 0x17, 0x6d,
1276                             0x38, 0x60, 0xe6, 0x11, 0x0c, 0x46, 0x52, 0x3e },
1277         },
1278 };
1279
1280 /*
1281  * SHA512 HMAC test vectors from RFC4231
1282  */
1283
1284 #define HMAC_SHA512_TEST_VECTORS        4
1285
1286 static struct hash_testvec hmac_sha512_tv_template[] = {
1287         {
1288                 .key    = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
1289                             0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
1290                             0x0b, 0x0b, 0x0b, 0x0b }, // (20 bytes)
1291                 .ksize  = 20,
1292                 .plaintext = { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 }, // ("Hi There")
1293                 .psize  = 8,
1294                 .digest = { 0x87, 0xaa, 0x7c, 0xde, 0xa5, 0xef, 0x61, 0x9d,
1295                             0x4f, 0xf0, 0xb4, 0x24, 0x1a, 0x1d, 0x6c, 0xb0,
1296                             0x23, 0x79, 0xf4, 0xe2, 0xce, 0x4e, 0xc2, 0x78,
1297                             0x7a, 0xd0, 0xb3, 0x05, 0x45, 0xe1, 0x7c, 0xde,
1298                             0xda, 0xa8, 0x33, 0xb7, 0xd6, 0xb8, 0xa7, 0x02,
1299                             0x03, 0x8b, 0x27, 0x4e, 0xae, 0xa3, 0xf4, 0xe4,
1300                             0xbe, 0x9d, 0x91, 0x4e, 0xeb, 0x61, 0xf1, 0x70,
1301                             0x2e, 0x69, 0x6c, 0x20, 0x3a, 0x12, 0x68, 0x54 },
1302         }, {
1303                 .key    = { 0x4a, 0x65, 0x66, 0x65 }, // ("Jefe")
1304                 .ksize  = 4,
1305                 .plaintext = { 0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20,
1306                                0x79, 0x61, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, // ("what do ya want ")
1307                                0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68,
1308                                0x69, 0x6e, 0x67, 0x3f }, // ("for nothing?")
1309                 .psize  = 28,
1310                 .digest = { 0x16, 0x4b, 0x7a, 0x7b, 0xfc, 0xf8, 0x19, 0xe2,
1311                             0xe3, 0x95, 0xfb, 0xe7, 0x3b, 0x56, 0xe0, 0xa3,
1312                             0x87, 0xbd, 0x64, 0x22, 0x2e, 0x83, 0x1f, 0xd6,
1313                             0x10, 0x27, 0x0c, 0xd7, 0xea, 0x25, 0x05, 0x54,
1314                             0x97, 0x58, 0xbf, 0x75, 0xc0, 0x5a, 0x99, 0x4a,
1315                             0x6d, 0x03, 0x4f, 0x65, 0xf8, 0xf0, 0xe6, 0xfd,
1316                             0xca, 0xea, 0xb1, 0xa3, 0x4d, 0x4a, 0x6b, 0x4b,
1317                             0x63, 0x6e, 0x07, 0x0a, 0x38, 0xbc, 0xe7, 0x37 },
1318                 .np     = 4,
1319                 .tap    = { 7, 7, 7, 7 }
1320         }, {
1321                 .key    = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1322                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1323                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1324                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1325                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1326                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1327                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1328                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1329                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1330                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1331                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1332                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1333                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1334                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1335                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1336                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1337                             0xaa, 0xaa, 0xaa }, // (131 bytes)
1338                 .ksize  = 131,
1339                 .plaintext = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69,
1340                                0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, // ("Test Using Large")
1341                                0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42,
1342                                0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, // ("r Than Block-Siz")
1343                                0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20,
1344                                0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79, // ("e Key - Hash Key")
1345                                0x20, 0x46, 0x69, 0x72, 0x73, 0x74 }, // (" First")
1346                 .psize  = 54,
1347                 .digest = { 0x80, 0xb2, 0x42, 0x63, 0xc7, 0xc1, 0xa3, 0xeb,
1348                             0xb7, 0x14, 0x93, 0xc1, 0xdd, 0x7b, 0xe8, 0xb4,
1349                             0x9b, 0x46, 0xd1, 0xf4, 0x1b, 0x4a, 0xee, 0xc1,
1350                             0x12, 0x1b, 0x01, 0x37, 0x83, 0xf8, 0xf3, 0x52,
1351                             0x6b, 0x56, 0xd0, 0x37, 0xe0, 0x5f, 0x25, 0x98,
1352                             0xbd, 0x0f, 0xd2, 0x21, 0x5d, 0x6a, 0x1e, 0x52,
1353                             0x95, 0xe6, 0x4f, 0x73, 0xf6, 0x3f, 0x0a, 0xec,
1354                             0x8b, 0x91, 0x5a, 0x98, 0x5d, 0x78, 0x65, 0x98 },
1355         }, {
1356                 .key    = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1357                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1358                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1359                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1360                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1361                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1362                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1363                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1364                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1365                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1366                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1367                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1368                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1369                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1370                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1371                             0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1372                             0xaa, 0xaa, 0xaa }, // (131 bytes)
1373                 .ksize  = 131,
1374                 .plaintext = { 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
1375                                0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75, // ("This is a test u")
1376                                0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6c,
1377                                0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68, // ("sing a larger th")
1378                                0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
1379                                0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6b, 0x65, // ("an block-size ke")
1380                                0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20,
1381                                0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, // ("y and a larger t")
1382                                0x68, 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63,
1383                                0x6b, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x64, // ("han block-size d")
1384                                0x61, 0x74, 0x61, 0x2e, 0x20, 0x54, 0x68, 0x65,
1385                                0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x65, 0x65, // ("ata. The key nee")
1386                                0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65,
1387                                0x20, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x20, // ("ds to be hashed ")
1388                                0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62,
1389                                0x65, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, // ("before being use")
1390                                0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
1391                                0x20, 0x48, 0x4d, 0x41, 0x43, 0x20, 0x61, 0x6c, // ("d by the HMAC al")
1392                                0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x2e }, // ("gorithm.")
1393                 .psize  = 152,
1394                 .digest = { 0xe3, 0x7b, 0x6a, 0x77, 0x5d, 0xc8, 0x7d, 0xba,
1395                             0xa4, 0xdf, 0xa9, 0xf9, 0x6e, 0x5e, 0x3f, 0xfd,
1396                             0xde, 0xbd, 0x71, 0xf8, 0x86, 0x72, 0x89, 0x86,
1397                             0x5d, 0xf5, 0xa3, 0x2d, 0x20, 0xcd, 0xc9, 0x44,
1398                             0xb6, 0x02, 0x2c, 0xac, 0x3c, 0x49, 0x82, 0xb1,
1399                             0x0d, 0x5e, 0xeb, 0x55, 0xc3, 0xe4, 0xde, 0x15,
1400                             0x13, 0x46, 0x76, 0xfb, 0x6d, 0xe0, 0x44, 0x60,
1401                             0x65, 0xc9, 0x74, 0x40, 0xfa, 0x8c, 0x6a, 0x58 },
1402         },
1403 };
1404
1405 /*
1406  * DES test vectors.
1407  */
1408 #define DES_ENC_TEST_VECTORS            10
1409 #define DES_DEC_TEST_VECTORS            4
1410 #define DES_CBC_ENC_TEST_VECTORS        5
1411 #define DES_CBC_DEC_TEST_VECTORS        4
1412 #define DES3_EDE_ENC_TEST_VECTORS       3
1413 #define DES3_EDE_DEC_TEST_VECTORS       3
1414
1415 static struct cipher_testvec des_enc_tv_template[] = {
1416         { /* From Applied Cryptography */
1417                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1418                 .klen   = 8,
1419                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 },
1420                 .ilen   = 8,
1421                 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d },
1422                 .rlen   = 8,
1423         }, { /* Same key, different plaintext block */
1424                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1425                 .klen   = 8,
1426                 .input  = { 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
1427                 .ilen   = 8,
1428                 .result = { 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b },
1429                 .rlen   = 8,
1430         }, { /* Sbox test from NBS */
1431                 .key    = { 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57 },
1432                 .klen   = 8,
1433                 .input  = { 0x01, 0xa1, 0xd6, 0xd0, 0x39, 0x77, 0x67, 0x42 },
1434                 .ilen   = 8,
1435                 .result = { 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b },
1436                 .rlen   = 8,
1437         }, { /* Three blocks */
1438                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1439                 .klen   = 8,
1440                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1441                             0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
1442                             0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef },
1443                 .ilen   = 24,
1444                 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1445                             0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b,
1446                             0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90 },
1447                 .rlen   = 24,
1448         }, { /* Weak key */
1449                 .fail   = 1,
1450                 .wk     = 1,
1451                 .key    = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 },
1452                 .klen   = 8,
1453                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 },
1454                 .ilen   = 8,
1455                 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d },
1456                 .rlen   = 8,
1457         }, { /* Two blocks -- for testing encryption across pages */
1458                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1459                 .klen   = 8,
1460                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1461                             0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
1462                 .ilen   = 16,
1463                 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1464                             0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b },
1465                 .rlen   = 16,
1466                 .np     = 2,
1467                 .tap    = { 8, 8 }
1468         }, { /* Four blocks -- for testing encryption with chunking */
1469                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1470                 .klen   = 8,
1471                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1472                             0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
1473                             0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef,
1474                             0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
1475                 .ilen   = 32,
1476                 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1477                             0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b,
1478                             0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90,
1479                             0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b },
1480                 .rlen   = 32,
1481                 .np     = 3,
1482                 .tap    = { 14, 10, 8 }
1483         }, {
1484                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1485                 .klen   = 8,
1486                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1487                             0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
1488                             0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef },
1489                 .ilen   = 24,
1490                 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1491                             0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b,
1492                             0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90 },
1493                 .rlen   = 24,
1494                 .np     = 4,
1495                 .tap    = { 2, 1, 3, 18 }
1496         }, {
1497                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1498                 .klen   = 8,
1499                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1500                             0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
1501                 .ilen   = 16,
1502                 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1503                             0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b },
1504                 .rlen   = 16,
1505                 .np     = 5,
1506                 .tap    = { 2, 2, 2, 2, 8 }
1507         }, {
1508                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1509                 .klen   = 8,
1510                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 },
1511                 .ilen   = 8,
1512                 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d },
1513                 .rlen   = 8,
1514                 .np     = 8,
1515                 .tap    = { 1, 1, 1, 1, 1, 1, 1, 1 }
1516         },
1517 };
1518
1519 static struct cipher_testvec des_dec_tv_template[] = {
1520         { /* From Applied Cryptography */
1521                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1522                 .klen   = 8,
1523                 .input  = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d },
1524                 .ilen   = 8,
1525                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 },
1526                 .rlen   = 8,
1527         }, { /* Sbox test from NBS */
1528                 .key    = { 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57 },
1529                 .klen   = 8,
1530                 .input  = { 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b },
1531                 .ilen   = 8,
1532                 .result = { 0x01, 0xa1, 0xd6, 0xd0, 0x39, 0x77, 0x67, 0x42 },
1533                 .rlen   = 8,
1534         }, { /* Two blocks, for chunking test */
1535                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1536                 .klen   = 8,
1537                 .input  = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1538                             0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b },
1539                 .ilen   = 16,
1540                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1541                             0xa3, 0x99, 0x7b, 0xca, 0xaf, 0x69, 0xa0, 0xf5 },
1542                 .rlen   = 16,
1543                 .np     = 2,
1544                 .tap    = { 8, 8 }
1545         }, {
1546                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1547                 .klen   = 8,
1548                 .input  = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1549                             0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b },
1550                 .ilen   = 16,
1551                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1552                             0xa3, 0x99, 0x7b, 0xca, 0xaf, 0x69, 0xa0, 0xf5 },
1553                 .rlen   = 16,
1554                 .np     = 3,
1555                 .tap    = { 3, 12, 1 }
1556         },
1557 };
1558
1559 static struct cipher_testvec des_cbc_enc_tv_template[] = {
1560         { /* From OpenSSL */
1561                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef},
1562                 .klen   = 8,
1563                 .iv     = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10},
1564                 .input  = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
1565                             0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
1566                             0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 },
1567                 .ilen   = 24,
1568                 .result = { 0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4,
1569                             0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb,
1570                             0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68 },
1571                 .rlen   = 24,
1572         }, { /* FIPS Pub 81 */
1573                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1574                 .klen   = 8,
1575                 .iv     = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef },
1576                 .input  = { 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74 },
1577                 .ilen   = 8,
1578                 .result = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
1579                 .rlen   = 8,
1580         }, {
1581                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1582                 .klen   = 8,
1583                 .iv     = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
1584                 .input  = { 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 },
1585                 .ilen   = 8,
1586                 .result = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
1587                 .rlen   = 8,
1588         }, {
1589                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1590                 .klen   = 8,
1591                 .iv     = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
1592                 .input  = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 },
1593                 .ilen   = 8,
1594                 .result = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 },
1595                 .rlen   = 8,
1596         }, { /* Copy of openssl vector for chunk testing */
1597              /* From OpenSSL */
1598                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef},
1599                 .klen   = 8,
1600                 .iv     = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10},
1601                 .input  = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
1602                             0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
1603                             0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 },
1604                 .ilen   = 24,
1605                 .result = { 0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4,
1606                             0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb,
1607                             0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68 },
1608                 .rlen   = 24,
1609                 .np     = 2,
1610                 .tap    = { 13, 11 }
1611         },
1612 };
1613
1614 static struct cipher_testvec des_cbc_dec_tv_template[] = {
1615         { /* FIPS Pub 81 */
1616                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1617                 .klen   = 8,
1618                 .iv     = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef },
1619                 .input  = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
1620                 .ilen   = 8,
1621                 .result = { 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74 },
1622                 .rlen   = 8,
1623         }, {
1624                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1625                 .klen   = 8,
1626                 .iv     = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
1627                 .input  = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
1628                 .ilen   = 8,
1629                 .result = { 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 },
1630                 .rlen   = 8,
1631         }, {
1632                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1633                 .klen   = 8,
1634                 .iv     = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
1635                 .input  = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 },
1636                 .ilen   = 8,
1637                 .result = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 },
1638                 .rlen   = 8,
1639         }, { /* Copy of above, for chunk testing */
1640                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1641                 .klen   = 8,
1642                 .iv     = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
1643                 .input  = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 },
1644                 .ilen   = 8,
1645                 .result = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 },
1646                 .rlen   = 8,
1647                 .np     = 2,
1648                 .tap    = { 4, 4 }
1649         },
1650 };
1651
1652 /*
1653  * We really need some more test vectors, especially for DES3 CBC.
1654  */
1655 static struct cipher_testvec des3_ede_enc_tv_template[] = {
1656         { /* These are from openssl */
1657                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1658                             0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
1659                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10},
1660                 .klen   = 24,
1661                 .input  = { 0x73, 0x6f, 0x6d, 0x65, 0x64, 0x61, 0x74, 0x61 },
1662                 .ilen   = 8,
1663                 .result = { 0x18, 0xd7, 0x48, 0xe5, 0x63, 0x62, 0x05, 0x72 },
1664                 .rlen   = 8,
1665         }, {
1666                 .key    = { 0x03, 0x52, 0x02, 0x07, 0x67, 0x20, 0x82, 0x17,
1667                             0x86, 0x02, 0x87, 0x66, 0x59, 0x08, 0x21, 0x98,
1668                             0x64, 0x05, 0x6a, 0xbd, 0xfe, 0xa9, 0x34, 0x57 },
1669                 .klen   = 24,
1670                 .input  = { 0x73, 0x71, 0x75, 0x69, 0x67, 0x67, 0x6c, 0x65 },
1671                 .ilen   = 8,
1672                 .result = { 0xc0, 0x7d, 0x2a, 0x0f, 0xa5, 0x66, 0xfa, 0x30 },
1673                 .rlen   = 8,
1674         }, {
1675                 .key    = { 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20,
1676                             0x91, 0x07, 0xd0, 0x15, 0x89, 0x19, 0x01, 0x01,
1677                             0x19, 0x07, 0x92, 0x10, 0x98, 0x1a, 0x01, 0x01 },
1678                 .klen   = 24,
1679                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1680                 .ilen   = 8,
1681                 .result = { 0xe1, 0xef, 0x62, 0xc3, 0x32, 0xfe, 0x82, 0x5b },
1682                 .rlen   = 8,
1683         },
1684 };
1685
1686 static struct cipher_testvec des3_ede_dec_tv_template[] = {
1687         { /* These are from openssl */
1688                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1689                             0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
1690                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10},
1691                 .klen   = 24,
1692                 .input  = { 0x18, 0xd7, 0x48, 0xe5, 0x63, 0x62, 0x05, 0x72 },
1693                 .ilen   = 8,
1694                 .result = { 0x73, 0x6f, 0x6d, 0x65, 0x64, 0x61, 0x74, 0x61 },
1695                 .rlen   = 8,
1696         }, {
1697                 .key    = { 0x03, 0x52, 0x02, 0x07, 0x67, 0x20, 0x82, 0x17,
1698                             0x86, 0x02, 0x87, 0x66, 0x59, 0x08, 0x21, 0x98,
1699                             0x64, 0x05, 0x6a, 0xbd, 0xfe, 0xa9, 0x34, 0x57 },
1700                 .klen   = 24,
1701                 .input  = { 0xc0, 0x7d, 0x2a, 0x0f, 0xa5, 0x66, 0xfa, 0x30 },
1702                 .ilen   = 8,
1703                 .result = { 0x73, 0x71, 0x75, 0x69, 0x67, 0x67, 0x6c, 0x65 },
1704                 .rlen   = 8,
1705         }, {
1706                 .key    = { 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20,
1707                             0x91, 0x07, 0xd0, 0x15, 0x89, 0x19, 0x01, 0x01,
1708                             0x19, 0x07, 0x92, 0x10, 0x98, 0x1a, 0x01, 0x01 },
1709                 .klen   = 24,
1710                 .input  = { 0xe1, 0xef, 0x62, 0xc3, 0x32, 0xfe, 0x82, 0x5b },
1711                 .ilen   = 8,
1712                 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1713                 .rlen   = 8,
1714         },
1715 };
1716
1717 /*
1718  * Blowfish test vectors.
1719  */
1720 #define BF_ENC_TEST_VECTORS     6
1721 #define BF_DEC_TEST_VECTORS     6
1722 #define BF_CBC_ENC_TEST_VECTORS 1
1723 #define BF_CBC_DEC_TEST_VECTORS 1
1724
1725 static struct cipher_testvec bf_enc_tv_template[] = {
1726         { /* DES test vectors from OpenSSL */
1727                 .key    = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
1728                 .klen   = 8,
1729                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1730                 .ilen   = 8,
1731                 .result = { 0x4e, 0xf9, 0x97, 0x45, 0x61, 0x98, 0xdd, 0x78 },
1732                 .rlen   = 8,
1733         }, {
1734                 .key    = { 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e },
1735                 .klen   = 8,
1736                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1737                 .ilen   = 8,
1738                 .result = { 0xa7, 0x90, 0x79, 0x51, 0x08, 0xea, 0x3c, 0xae },
1739                 .rlen   = 8,
1740         }, {
1741                 .key    = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
1742                 .klen   = 8,
1743                 .input  = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1744                 .ilen   = 8,
1745                 .result = { 0xe8, 0x7a, 0x24, 0x4e, 0x2c, 0xc8, 0x5e, 0x82 },
1746                 .rlen   = 8,
1747         }, { /* Vary the keylength... */
1748                 .key    = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1749                             0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f },
1750                 .klen   = 16,
1751                 .input  = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1752                 .ilen   = 8,
1753                 .result = { 0x93, 0x14, 0x28, 0x87, 0xee, 0x3b, 0xe1, 0x5c },
1754                 .rlen   = 8,
1755         }, {
1756                 .key    = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1757                             0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f,
1758                             0x00, 0x11, 0x22, 0x33, 0x44 },
1759                 .klen   = 21,
1760                 .input  = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1761                 .ilen   = 8,
1762                 .result = { 0xe6, 0xf5, 0x1e, 0xd7, 0x9b, 0x9d, 0xb2, 0x1f },
1763                 .rlen   = 8,
1764         }, { /* Generated with bf488 */
1765                 .key    = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1766                             0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f,
1767                             0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1768                             0x04, 0x68, 0x91, 0x04, 0xc2, 0xfd, 0x3b, 0x2f,
1769                             0x58, 0x40, 0x23, 0x64, 0x1a, 0xba, 0x61, 0x76,
1770                             0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e,
1771                             0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1772                 .klen   = 56,
1773                 .input  = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1774                 .ilen   = 8,
1775                 .result = { 0xc0, 0x45, 0x04, 0x01, 0x2e, 0x4e, 0x1f, 0x53 },
1776                 .rlen   = 8,
1777         },
1778 };
1779
1780 static struct cipher_testvec bf_dec_tv_template[] = {
1781         { /* DES test vectors from OpenSSL */
1782                 .key    = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1783                 .klen   = 8,
1784                 .input  = { 0x4e, 0xf9, 0x97, 0x45, 0x61, 0x98, 0xdd, 0x78 },
1785                 .ilen   = 8,
1786                 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1787                 .rlen   = 8,
1788         }, {
1789                 .key    = { 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e },
1790                 .klen   = 8,
1791                 .input  = { 0xa7, 0x90, 0x79, 0x51, 0x08, 0xea, 0x3c, 0xae },
1792                 .ilen   = 8,
1793                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1794                 .rlen   = 8,
1795         }, {
1796                 .key    = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
1797                 .klen   = 8,
1798                 .input  = { 0xe8, 0x7a, 0x24, 0x4e, 0x2c, 0xc8, 0x5e, 0x82 },
1799                 .ilen   = 8,
1800                 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1801                 .rlen   = 8,
1802         }, { /* Vary the keylength... */
1803                 .key    = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1804                             0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f },
1805                 .klen   = 16,
1806                 .input  = { 0x93, 0x14, 0x28, 0x87, 0xee, 0x3b, 0xe1, 0x5c },
1807                 .ilen   = 8,
1808                 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1809                 .rlen   = 8,
1810         }, {
1811                 .key    = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1812                             0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f,
1813                             0x00, 0x11, 0x22, 0x33, 0x44 },
1814                 .klen   = 21,
1815                 .input  = { 0xe6, 0xf5, 0x1e, 0xd7, 0x9b, 0x9d, 0xb2, 0x1f },
1816                 .ilen   = 8,
1817                 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1818                 .rlen   = 8,
1819         }, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */
1820                 .key    = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1821                             0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f,
1822                             0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1823                             0x04, 0x68, 0x91, 0x04, 0xc2, 0xfd, 0x3b, 0x2f,
1824                             0x58, 0x40, 0x23, 0x64, 0x1a, 0xba, 0x61, 0x76,
1825                             0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e,
1826                             0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1827                 .klen   = 56,
1828                 .input  = { 0xc0, 0x45, 0x04, 0x01, 0x2e, 0x4e, 0x1f, 0x53 },
1829                 .ilen   = 8,
1830                 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1831                 .rlen   = 8,
1832         },
1833 };
1834
1835 static struct cipher_testvec bf_cbc_enc_tv_template[] = {
1836         { /* From OpenSSL */
1837                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1838                             0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
1839                 .klen   = 16,
1840                 .iv     = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1841                 .input  = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
1842                             0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
1843                             0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20,
1844                             0x66, 0x6f, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00 },
1845                 .ilen   = 32,
1846                 .result = { 0x6b, 0x77, 0xb4, 0xd6, 0x30, 0x06, 0xde, 0xe6,
1847                             0x05, 0xb1, 0x56, 0xe2, 0x74, 0x03, 0x97, 0x93,
1848                             0x58, 0xde, 0xb9, 0xe7, 0x15, 0x46, 0x16, 0xd9,
1849                             0x59, 0xf1, 0x65, 0x2b, 0xd5, 0xff, 0x92, 0xcc },
1850                 .rlen   = 32,
1851         },
1852 };
1853
1854 static struct cipher_testvec bf_cbc_dec_tv_template[] = {
1855         { /* From OpenSSL */
1856                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1857                             0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
1858                 .klen   = 16,
1859                 .iv     = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1860                 .input  = { 0x6b, 0x77, 0xb4, 0xd6, 0x30, 0x06, 0xde, 0xe6,
1861                             0x05, 0xb1, 0x56, 0xe2, 0x74, 0x03, 0x97, 0x93,
1862                             0x58, 0xde, 0xb9, 0xe7, 0x15, 0x46, 0x16, 0xd9,
1863                             0x59, 0xf1, 0x65, 0x2b, 0xd5, 0xff, 0x92, 0xcc },
1864                 .ilen   = 32,
1865                 .result = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
1866                             0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
1867                             0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20,
1868                             0x66, 0x6f, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00 },
1869                 .rlen   = 32,
1870         },
1871 };
1872
1873 /*
1874  * Twofish test vectors.
1875  */
1876 #define TF_ENC_TEST_VECTORS             3
1877 #define TF_DEC_TEST_VECTORS             3
1878 #define TF_CBC_ENC_TEST_VECTORS         4
1879 #define TF_CBC_DEC_TEST_VECTORS         4
1880
1881 static struct cipher_testvec tf_enc_tv_template[] = {
1882         {
1883                 .key    = { [0 ... 15] = 0x00 },
1884                 .klen   = 16,
1885                 .input  = { [0 ... 15] = 0x00 },
1886                 .ilen   = 16,
1887                 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1888                             0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1889                 .rlen   = 16,
1890         }, {
1891                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1892                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
1893                             0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
1894                 .klen   = 24,
1895                 .input  = { [0 ... 15] = 0x00 },
1896                 .ilen   = 16,
1897                 .result = { 0xcf, 0xd1, 0xd2, 0xe5, 0xa9, 0xbe, 0x9c, 0xdf,
1898                             0x50, 0x1f, 0x13, 0xb8, 0x92, 0xbd, 0x22, 0x48 },
1899                 .rlen   = 16,
1900         }, {
1901                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1902                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
1903                             0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1904                             0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
1905                 .klen   = 32,
1906                 .input  = { [0 ... 15] = 0x00 },
1907                 .ilen   = 16,
1908                 .result = { 0x37, 0x52, 0x7b, 0xe0, 0x05, 0x23, 0x34, 0xb8,
1909                             0x9f, 0x0c, 0xfc, 0xca, 0xe8, 0x7c, 0xfa, 0x20 },
1910                 .rlen   = 16,
1911         },
1912 };
1913
1914 static struct cipher_testvec tf_dec_tv_template[] = {
1915         {
1916                 .key    = { [0 ... 15] = 0x00 },
1917                 .klen   = 16,
1918                 .input  = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1919                             0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1920                 .ilen   = 16,
1921                 .result = { [0 ... 15] = 0x00 },
1922                 .rlen   = 16,
1923         }, {
1924                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1925                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
1926                             0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
1927                 .klen   = 24,
1928                 .input  = { 0xcf, 0xd1, 0xd2, 0xe5, 0xa9, 0xbe, 0x9c, 0xdf,
1929                             0x50, 0x1f, 0x13, 0xb8, 0x92, 0xbd, 0x22, 0x48 },
1930                 .ilen   = 16,
1931                 .result = { [0 ... 15] = 0x00 },
1932                 .rlen   = 16,
1933         }, {
1934                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1935                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
1936                             0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1937                             0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
1938                 .klen   = 32,
1939                 .input  = { 0x37, 0x52, 0x7b, 0xe0, 0x05, 0x23, 0x34, 0xb8,
1940                             0x9f, 0x0c, 0xfc, 0xca, 0xe8, 0x7c, 0xfa, 0x20 },
1941                 .ilen   = 16,
1942                 .result = { [0 ... 15] = 0x00 },
1943                 .rlen   = 16,
1944         },
1945 };
1946
1947 static struct cipher_testvec tf_cbc_enc_tv_template[] = {
1948         { /* Generated with Nettle */
1949                 .key    = { [0 ... 15] = 0x00 },
1950                 .klen   = 16,
1951                 .iv     = { [0 ... 15] = 0x00 },
1952                 .input  = { [0 ... 15] = 0x00 },
1953                 .ilen   = 16,
1954                 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1955                             0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1956                 .rlen   = 16,
1957         }, {
1958                 .key    = { [0 ... 15] = 0x00 },
1959                 .klen   = 16,
1960                 .iv     = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1961                             0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1962                 .input  = { [0 ... 15] = 0x00 },
1963                 .ilen   = 16,
1964                 .result = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1965                             0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
1966                 .rlen   = 16,
1967         }, {
1968                 .key    = { [0 ... 15] = 0x00 },
1969                 .klen   = 16,
1970                 .iv     = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1971                             0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
1972                 .input  = { [0 ... 15] = 0x00 },
1973                 .ilen   = 16,
1974                 .result = { 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
1975                             0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
1976                 .rlen   = 16,
1977         }, {
1978                 .key    = { [0 ... 15] = 0x00 },
1979                 .klen   = 16,
1980                 .iv     = { [0 ... 15] = 0x00 },
1981                 .input  = { [0 ... 47] = 0x00 },
1982                 .ilen   = 48,
1983                 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1984                             0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a,
1985                             0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1986                             0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19,
1987                             0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
1988                             0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
1989                 .rlen   = 48,
1990         },
1991 };
1992
1993 static struct cipher_testvec tf_cbc_dec_tv_template[] = {
1994         { /* Reverse of the first four above */
1995                 .key    = { [0 ... 15] = 0x00 },
1996                 .klen   = 16,
1997                 .iv     = { [0 ... 15] = 0x00 },
1998                 .input  = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1999                             0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
2000                 .ilen   = 16,
2001                 .result = { [0 ... 15] = 0x00 },
2002                 .rlen   = 16,
2003         }, {
2004                 .key    = { [0 ... 15] = 0x00 },
2005                 .klen   = 16,
2006                 .iv     = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
2007                             0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
2008                 .input  = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
2009                             0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
2010                 .ilen   = 16,
2011                 .result = { [0 ... 15] = 0x00 },
2012                 .rlen   = 16,
2013         }, {
2014                 .key    = { [0 ... 15] = 0x00 },
2015                 .klen   = 16,
2016                 .iv     = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
2017                             0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
2018                 .input  = { 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
2019                             0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
2020                 .ilen   = 16,
2021                 .result = { [0 ... 15] = 0x00 },
2022                 .rlen   = 16,
2023         }, {
2024                 .key    = { [0 ... 15] = 0x00 },
2025                 .klen   = 16,
2026                 .iv     = { [0 ... 15] = 0x00 },
2027                 .input  = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
2028                             0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a,
2029                             0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
2030                             0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19,
2031                             0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
2032                             0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
2033                 .ilen   = 48,
2034                 .result = { [0 ... 47] = 0x00 },
2035                 .rlen   = 48,
2036         },
2037 };
2038
2039 /*
2040  * Serpent test vectors.  These are backwards because Serpent writes
2041  * octet sequences in right-to-left mode.
2042  */
2043 #define SERPENT_ENC_TEST_VECTORS        4
2044 #define SERPENT_DEC_TEST_VECTORS        4
2045
2046 #define TNEPRES_ENC_TEST_VECTORS        4
2047 #define TNEPRES_DEC_TEST_VECTORS        4
2048
2049 static struct cipher_testvec serpent_enc_tv_template[] = {
2050         {
2051                 .input  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2052                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2053                 .ilen   = 16,
2054                 .result = { 0x12, 0x07, 0xfc, 0xce, 0x9b, 0xd0, 0xd6, 0x47,
2055                             0x6a, 0xe9, 0x8f, 0xbe, 0xd1, 0x43, 0xa0, 0xe2 },
2056                 .rlen   = 16,
2057         }, {
2058                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2059                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2060                 .klen   = 16,
2061                 .input  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2062                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2063                 .ilen   = 16,
2064                 .result = { 0x4c, 0x7d, 0x8a, 0x32, 0x80, 0x72, 0xa2, 0x2c,
2065                             0x82, 0x3e, 0x4a, 0x1f, 0x3a, 0xcd, 0xa1, 0x6d },
2066                 .rlen   = 16,
2067         }, {
2068                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2069                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2070                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2071                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2072                 .klen   = 32,
2073                 .input  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2074                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2075                 .ilen   = 16,
2076                 .result = { 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8,
2077                             0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c },
2078                 .rlen   = 16,
2079         }, {
2080                 .key    = { [15] = 0x80 },
2081                 .klen   = 16,
2082                 .input  = { [0 ... 15] = 0x00 },
2083                 .ilen   = 16,
2084                 .result = { 0xdd, 0xd2, 0x6b, 0x98, 0xa5, 0xff, 0xd8, 0x2c,
2085                             0x05, 0x34, 0x5a, 0x9d, 0xad, 0xbf, 0xaf, 0x49},
2086                 .rlen   = 16,
2087         },
2088 };
2089
2090 static struct cipher_testvec tnepres_enc_tv_template[] = {
2091         { /* KeySize=128, PT=0, I=1 */
2092                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2093                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2094                 .key    = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2095                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2096                 .klen   = 16,
2097                 .ilen   = 16,
2098                 .result = { 0x49, 0xaf, 0xbf, 0xad, 0x9d, 0x5a, 0x34, 0x05,
2099                             0x2c, 0xd8, 0xff, 0xa5, 0x98, 0x6b, 0xd2, 0xdd },
2100                 .rlen   = 16,
2101         }, { /* KeySize=192, PT=0, I=1 */
2102                 .key    = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2103                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2104                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2105                 .klen   = 24,
2106                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2107                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2108                 .ilen   = 16,
2109                 .result = { 0xe7, 0x8e, 0x54, 0x02, 0xc7, 0x19, 0x55, 0x68,
2110                             0xac, 0x36, 0x78, 0xf7, 0xa3, 0xf6, 0x0c, 0x66 },
2111                 .rlen   = 16,
2112         }, { /* KeySize=256, PT=0, I=1 */
2113                 .key    = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2114                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2115                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2116                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2117                 .klen   = 32,
2118                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2119                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2120                 .ilen   = 16,
2121                 .result = { 0xab, 0xed, 0x96, 0xe7, 0x66, 0xbf, 0x28, 0xcb,
2122                             0xc0, 0xeb, 0xd2, 0x1a, 0x82, 0xef, 0x08, 0x19 },
2123                 .rlen   = 16,
2124         }, { /* KeySize=256, I=257 */
2125                 .key    = { 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a, 0x19, 0x18,
2126                             0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10,
2127                             0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08,
2128                             0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 },
2129                 .klen   = 32,
2130                 .input  = { 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08,
2131                             0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 },
2132                 .ilen   = 16,
2133                 .result = { 0x5c, 0xe7, 0x1c, 0x70, 0xd2, 0x88, 0x2e, 0x5b,
2134                             0xb8, 0x32, 0xe4, 0x33, 0xf8, 0x9f, 0x26, 0xde },
2135                 .rlen   = 16,
2136         },
2137 };
2138
2139
2140 static struct cipher_testvec serpent_dec_tv_template[] = {
2141         {
2142                 .input  = { 0x12, 0x07, 0xfc, 0xce, 0x9b, 0xd0, 0xd6, 0x47,
2143                             0x6a, 0xe9, 0x8f, 0xbe, 0xd1, 0x43, 0xa0, 0xe2 },
2144                 .ilen   = 16,
2145                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2146                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2147                 .rlen   = 16,
2148         }, {
2149                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2150                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2151                 .klen   = 16,
2152                 .input  = { 0x4c, 0x7d, 0x8a, 0x32, 0x80, 0x72, 0xa2, 0x2c,
2153                             0x82, 0x3e, 0x4a, 0x1f, 0x3a, 0xcd, 0xa1, 0x6d },
2154                 .ilen   = 16,
2155                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2156                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2157                 .rlen   = 16,
2158         }, {
2159                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2160                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2161                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2162                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2163                 .klen   = 32,
2164                 .input  = { 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8,
2165                             0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c },
2166                 .ilen   = 16,
2167                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2168                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2169                 .rlen   = 16,
2170         }, {
2171                 .key    = { [15] = 0x80 },
2172                 .klen   = 16,
2173                 .input  = { 0xdd, 0xd2, 0x6b, 0x98, 0xa5, 0xff, 0xd8, 0x2c,
2174                             0x05, 0x34, 0x5a, 0x9d, 0xad, 0xbf, 0xaf, 0x49},
2175                 .ilen   = 16,
2176                 .result = { [0 ... 15] = 0x00 },
2177                 .rlen   = 16,
2178         },
2179 };
2180
2181 static struct cipher_testvec tnepres_dec_tv_template[] = {
2182         {
2183                 .input  = { 0x41, 0xcc, 0x6b, 0x31, 0x59, 0x31, 0x45, 0x97,
2184                             0x6d, 0x6f, 0xbb, 0x38, 0x4b, 0x37, 0x21, 0x28 },
2185                 .ilen   = 16,
2186                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2187                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2188                 .rlen   = 16,
2189         }, {
2190                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2191                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2192                 .klen   = 16,
2193                 .input  = { 0xea, 0xf4, 0xd7, 0xfc, 0xd8, 0x01, 0x34, 0x47,
2194                             0x81, 0x45, 0x0b, 0xfa, 0x0c, 0xd6, 0xad, 0x6e },
2195                 .ilen   = 16,
2196                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2197                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2198                 .rlen   = 16,
2199         }, {
2200                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2201                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2202                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2203                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2204                 .klen   = 32,
2205                 .input  = { 0x64, 0xa9, 0x1a, 0x37, 0xed, 0x9f, 0xe7, 0x49,
2206                             0xa8, 0x4e, 0x76, 0xd6, 0xf5, 0x0d, 0x78, 0xee },
2207                 .ilen   = 16,
2208                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2209                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2210                 .rlen   = 16,
2211         }, { /* KeySize=128, I=121 */
2212                 .key    = { [15] = 0x80 },
2213                 .klen   = 16,
2214                 .input  = { 0x3d, 0xda, 0xbf, 0xc0, 0x06, 0xda, 0xab, 0x06,
2215                             0x46, 0x2a, 0xf4, 0xef, 0x81, 0x54, 0x4e, 0x26 },
2216                 .ilen   = 16,
2217                 .result = { [0 ... 15] = 0x00 },
2218                 .rlen   = 16,
2219         },
2220 };
2221
2222
2223 /* Cast6 test vectors from RFC 2612 */
2224 #define CAST6_ENC_TEST_VECTORS  3
2225 #define CAST6_DEC_TEST_VECTORS  3
2226
2227 static struct cipher_testvec cast6_enc_tv_template[] = {
2228         {
2229                 .key    = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2230                             0x0a, 0xf7, 0x56, 0x47, 0xf2, 0x9f, 0x61, 0x5d },
2231                 .klen   = 16,
2232                 .input  = { [0 ... 15] = 0x00 },
2233                 .ilen   = 16,
2234                 .result = { 0xc8, 0x42, 0xa0, 0x89, 0x72, 0xb4, 0x3d, 0x20,
2235                             0x83, 0x6c, 0x91, 0xd1, 0xb7, 0x53, 0x0f, 0x6b },
2236                 .rlen   = 16,
2237         }, {
2238                 .key    = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2239                             0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98,
2240                             0xba, 0xc7, 0x7a, 0x77, 0x17, 0x94, 0x28, 0x63 },
2241                 .klen   = 24,
2242                 .input  = { [0 ... 15] = 0x00 },
2243                 .ilen   = 16,
2244                 .result = { 0x1b, 0x38, 0x6c, 0x02, 0x10, 0xdc, 0xad, 0xcb,
2245                             0xdd, 0x0e, 0x41, 0xaa, 0x08, 0xa7, 0xa7, 0xe8 },
2246                 .rlen   = 16,
2247         }, {
2248                 .key    = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2249                             0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98,
2250                             0x8d, 0x7c, 0x47, 0xce, 0x26, 0x49, 0x08, 0x46,
2251                             0x1c, 0xc1, 0xb5, 0x13, 0x7a, 0xe6, 0xb6, 0x04 },
2252                 .klen   = 32,
2253                 .input  = { [0 ... 15] = 0x00 },
2254                 .ilen   = 16,
2255                 .result = { 0x4f, 0x6a, 0x20, 0x38, 0x28, 0x68, 0x97, 0xb9,
2256                             0xc9, 0x87, 0x01, 0x36, 0x55, 0x33, 0x17, 0xfa },
2257                 .rlen   = 16,
2258         },
2259 };
2260
2261 static struct cipher_testvec cast6_dec_tv_template[] = {
2262         {
2263                 .key    = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2264                             0x0a, 0xf7, 0x56, 0x47, 0xf2, 0x9f, 0x61, 0x5d },
2265                 .klen   = 16,
2266                 .input  = { 0xc8, 0x42, 0xa0, 0x89, 0x72, 0xb4, 0x3d, 0x20,
2267                             0x83, 0x6c, 0x91, 0xd1, 0xb7, 0x53, 0x0f, 0x6b },
2268                 .ilen   = 16,
2269                 .result = { [0 ... 15] = 0x00 },
2270                 .rlen   = 16,
2271         }, {
2272                 .key    = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2273                             0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98,
2274                             0xba, 0xc7, 0x7a, 0x77, 0x17, 0x94, 0x28, 0x63 },
2275                 .klen   = 24,
2276                 .input  = { 0x1b, 0x38, 0x6c, 0x02, 0x10, 0xdc, 0xad, 0xcb,
2277                             0xdd, 0x0e, 0x41, 0xaa, 0x08, 0xa7, 0xa7, 0xe8 },
2278                 .ilen   = 16,
2279                 .result = { [0 ... 15] = 0x00 },
2280                 .rlen   = 16,
2281         }, {
2282                 .key    = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2283                             0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98,
2284                             0x8d, 0x7c, 0x47, 0xce, 0x26, 0x49, 0x08, 0x46,
2285                             0x1c, 0xc1, 0xb5, 0x13, 0x7a, 0xe6, 0xb6, 0x04 },
2286                 .klen   = 32,
2287                 .input  = { 0x4f, 0x6a, 0x20, 0x38, 0x28, 0x68, 0x97, 0xb9,
2288                             0xc9, 0x87, 0x01, 0x36, 0x55, 0x33, 0x17, 0xfa },
2289                 .ilen   = 16,
2290                 .result = { [0 ... 15] = 0x00 },
2291                 .rlen   = 16,
2292         },
2293 };
2294
2295
2296 /*
2297  * AES test vectors.
2298  */
2299 #define AES_ENC_TEST_VECTORS 3
2300 #define AES_DEC_TEST_VECTORS 3
2301 #define AES_CBC_ENC_TEST_VECTORS 4
2302 #define AES_CBC_DEC_TEST_VECTORS 4
2303 #define AES_LRW_ENC_TEST_VECTORS 8
2304 #define AES_LRW_DEC_TEST_VECTORS 8
2305 #define AES_XTS_ENC_TEST_VECTORS 4
2306 #define AES_XTS_DEC_TEST_VECTORS 4
2307 #define AES_CTR_ENC_TEST_VECTORS 7
2308 #define AES_CTR_DEC_TEST_VECTORS 6
2309 #define AES_GCM_ENC_TEST_VECTORS 9
2310 #define AES_GCM_DEC_TEST_VECTORS 8
2311 #define AES_CCM_ENC_TEST_VECTORS 7
2312 #define AES_CCM_DEC_TEST_VECTORS 7
2313
2314 static struct cipher_testvec aes_enc_tv_template[] = {
2315         { /* From FIPS-197 */
2316                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2317                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2318                 .klen   = 16,
2319                 .input  = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2320                             0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2321                 .ilen   = 16,
2322                 .result = { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30,
2323                             0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a },
2324                 .rlen   = 16,
2325         }, {
2326                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2327                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2328                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 },
2329                 .klen   = 24,
2330                 .input  = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2331                             0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2332                 .ilen   = 16,
2333                 .result = { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0,
2334                             0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 },
2335                 .rlen   = 16,
2336         }, {
2337                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2338                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2339                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2340                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2341                 .klen   = 32,
2342                 .input  = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2343                             0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2344                 .ilen   = 16,
2345                 .result = { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf,
2346                             0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 },
2347                 .rlen   = 16,
2348         },
2349 };
2350
2351 static struct cipher_testvec aes_dec_tv_template[] = {
2352         { /* From FIPS-197 */
2353                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2354                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2355                 .klen   = 16,
2356                 .input  = { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30,
2357                             0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a },
2358                 .ilen   = 16,
2359                 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2360                             0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2361                 .rlen   = 16,
2362         }, {
2363                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2364                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2365                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 },
2366                 .klen   = 24,
2367                 .input  = { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0,
2368                             0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 },
2369                 .ilen   = 16,
2370                 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2371                             0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2372                 .rlen   = 16,
2373         }, {
2374                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2375                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2376                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2377                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2378                 .klen   = 32,
2379                 .input  = { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf,
2380                             0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 },
2381                 .ilen   = 16,
2382                 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2383                             0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2384                 .rlen   = 16,
2385         },
2386 };
2387
2388 static struct cipher_testvec aes_cbc_enc_tv_template[] = {
2389         { /* From RFC 3602 */
2390                 .key    = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b,
2391                             0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 },
2392                 .klen   = 16,
2393                 .iv     = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30,
2394                             0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 },
2395                 .input  = { "Single block msg" },
2396                 .ilen   = 16,
2397                 .result = { 0xe3, 0x53, 0x77, 0x9c, 0x10, 0x79, 0xae, 0xb8,
2398                             0x27, 0x08, 0x94, 0x2d, 0xbe, 0x77, 0x18, 0x1a },
2399                 .rlen   = 16,
2400         }, {
2401                 .key    = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
2402                             0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a },
2403                 .klen   = 16,
2404                 .iv     = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
2405                             0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 },
2406                 .input  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2407                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2408                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2409                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2410                 .ilen   = 32,
2411                 .result = { 0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a,
2412                             0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a,
2413                             0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9,
2414                             0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1 },
2415                 .rlen   = 32,
2416         }, { /* From NIST SP800-38A */
2417                 .key    = { 0x8e, 0x73, 0xb0, 0xf7, 0xda, 0x0e, 0x64, 0x52,
2418                             0xc8, 0x10, 0xf3, 0x2b, 0x80, 0x90, 0x79, 0xe5,
2419                             0x62, 0xf8, 0xea, 0xd2, 0x52, 0x2c, 0x6b, 0x7b },
2420                 .klen   = 24,
2421                 .iv     = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2422                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2423                 .input  = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
2424                             0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
2425                             0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c,
2426                             0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51,
2427                             0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11,
2428                             0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef,
2429                             0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17,
2430                             0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 },
2431                 .ilen   = 64,
2432                 .result = { 0x4f, 0x02, 0x1d, 0xb2, 0x43, 0xbc, 0x63, 0x3d,
2433                             0x71, 0x78, 0x18, 0x3a, 0x9f, 0xa0, 0x71, 0xe8,
2434                             0xb4, 0xd9, 0xad, 0xa9, 0xad, 0x7d, 0xed, 0xf4,
2435                             0xe5, 0xe7, 0x38, 0x76, 0x3f, 0x69, 0x14, 0x5a,
2436                             0x57, 0x1b, 0x24, 0x20, 0x12, 0xfb, 0x7a, 0xe0,
2437                             0x7f, 0xa9, 0xba, 0xac, 0x3d, 0xf1, 0x02, 0xe0,
2438                             0x08, 0xb0, 0xe2, 0x79, 0x88, 0x59, 0x88, 0x81,
2439                             0xd9, 0x20, 0xa9, 0xe6, 0x4f, 0x56, 0x15, 0xcd },
2440                 .rlen   = 64,
2441         }, {
2442                 .key    = { 0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe,
2443                             0x2b, 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81,
2444                             0x1f, 0x35, 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7,
2445                             0x2d, 0x98, 0x10, 0xa3, 0x09, 0x14, 0xdf, 0xf4 },
2446                 .klen   = 32,
2447                 .iv     = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2448                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2449                 .input  = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
2450                             0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
2451                             0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c,
2452                             0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51,
2453                             0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11,
2454                             0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef,
2455                             0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17,
2456                             0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 },
2457                 .ilen   = 64,
2458                 .result = { 0xf5, 0x8c, 0x4c, 0x04, 0xd6, 0xe5, 0xf1, 0xba,
2459                             0x77, 0x9e, 0xab, 0xfb, 0x5f, 0x7b, 0xfb, 0xd6,
2460                             0x9c, 0xfc, 0x4e, 0x96, 0x7e, 0xdb, 0x80, 0x8d,
2461                             0x67, 0x9f, 0x77, 0x7b, 0xc6, 0x70, 0x2c, 0x7d,
2462                             0x39, 0xf2, 0x33, 0x69, 0xa9, 0xd9, 0xba, 0xcf,
2463                             0xa5, 0x30, 0xe2, 0x63, 0x04, 0x23, 0x14, 0x61,
2464                             0xb2, 0xeb, 0x05, 0xe2, 0xc3, 0x9b, 0xe9, 0xfc,
2465                             0xda, 0x6c, 0x19, 0x07, 0x8c, 0x6a, 0x9d, 0x1b },
2466                 .rlen   = 64,
2467         },
2468 };
2469
2470 static struct cipher_testvec aes_cbc_dec_tv_template[] = {
2471         { /* From RFC 3602 */
2472                 .key    = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b,
2473                             0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 },
2474                 .klen   = 16,
2475                 .iv     = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30,
2476                             0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 },
2477                 .input  = { 0xe3, 0x53, 0x77, 0x9c, 0x10, 0x79, 0xae, 0xb8,
2478                             0x27, 0x08, 0x94, 0x2d, 0xbe, 0x77, 0x18, 0x1a },
2479                 .ilen   = 16,
2480                 .result = { "Single block msg" },
2481                 .rlen   = 16,
2482         }, {
2483                 .key    = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
2484                             0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a },
2485                 .klen   = 16,
2486                 .iv     = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
2487                             0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 },
2488                 .input  = { 0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a,
2489                             0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a,
2490                             0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9,
2491                             0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1 },
2492                 .ilen   = 32,
2493                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2494                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2495                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2496                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2497                 .rlen   = 32,
2498         }, { /* From NIST SP800-38A */
2499                 .key    = { 0x8e, 0x73, 0xb0, 0xf7, 0xda, 0x0e, 0x64, 0x52,
2500                             0xc8, 0x10, 0xf3, 0x2b, 0x80, 0x90, 0x79, 0xe5,
2501                             0x62, 0xf8, 0xea, 0xd2, 0x52, 0x2c, 0x6b, 0x7b },
2502                 .klen   = 24,
2503                 .iv     = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2504                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2505                 .input  = { 0x4f, 0x02, 0x1d, 0xb2, 0x43, 0xbc, 0x63, 0x3d,
2506                             0x71, 0x78, 0x18, 0x3a, 0x9f, 0xa0, 0x71, 0xe8,
2507                             0xb4, 0xd9, 0xad, 0xa9, 0xad, 0x7d, 0xed, 0xf4,
2508                             0xe5, 0xe7, 0x38, 0x76, 0x3f, 0x69, 0x14, 0x5a,
2509                             0x57, 0x1b, 0x24, 0x20, 0x12, 0xfb, 0x7a, 0xe0,
2510                             0x7f, 0xa9, 0xba, 0xac, 0x3d, 0xf1, 0x02, 0xe0,
2511                             0x08, 0xb0, 0xe2, 0x79, 0x88, 0x59, 0x88, 0x81,
2512                             0xd9, 0x20, 0xa9, 0xe6, 0x4f, 0x56, 0x15, 0xcd },
2513                 .ilen   = 64,
2514                 .result = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
2515                             0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
2516                             0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c,
2517                             0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51,
2518                             0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11,
2519                             0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef,
2520                             0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17,
2521                             0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 },
2522                 .rlen   = 64,
2523         }, {
2524                 .key    = { 0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe,
2525                             0x2b, 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81,
2526                             0x1f, 0x35, 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7,
2527                             0x2d, 0x98, 0x10, 0xa3, 0x09, 0x14, 0xdf, 0xf4 },
2528                 .klen   = 32,
2529                 .iv     = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2530                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2531                 .input  = { 0xf5, 0x8c, 0x4c, 0x04, 0xd6, 0xe5, 0xf1, 0xba,
2532                             0x77, 0x9e, 0xab, 0xfb, 0x5f, 0x7b, 0xfb, 0xd6,
2533                             0x9c, 0xfc, 0x4e, 0x96, 0x7e, 0xdb, 0x80, 0x8d,
2534                             0x67, 0x9f, 0x77, 0x7b, 0xc6, 0x70, 0x2c, 0x7d,
2535                             0x39, 0xf2, 0x33, 0x69, 0xa9, 0xd9, 0xba, 0xcf,
2536                             0xa5, 0x30, 0xe2, 0x63, 0x04, 0x23, 0x14, 0x61,
2537                             0xb2, 0xeb, 0x05, 0xe2, 0xc3, 0x9b, 0xe9, 0xfc,
2538                             0xda, 0x6c, 0x19, 0x07, 0x8c, 0x6a, 0x9d, 0x1b },
2539                 .ilen   = 64,
2540                 .result = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
2541                             0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
2542                             0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c,
2543                             0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51,
2544                             0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11,
2545                             0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef,
2546                             0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17,
2547                             0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 },
2548                 .rlen   = 64,
2549         },
2550 };
2551
2552 static struct cipher_testvec aes_lrw_enc_tv_template[] = {
2553         /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
2554         { /* LRW-32-AES 1 */
2555                 .key    = { 0x45, 0x62, 0xac, 0x25, 0xf8, 0x28, 0x17, 0x6d,
2556                             0x4c, 0x26, 0x84, 0x14, 0xb5, 0x68, 0x01, 0x85,
2557                             0x25, 0x8e, 0x2a, 0x05, 0xe7, 0x3e, 0x9d, 0x03,
2558                             0xee, 0x5a, 0x83, 0x0c, 0xcc, 0x09, 0x4c, 0x87 },
2559                 .klen   = 32,
2560                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2561                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2562                 .input  = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2563                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2564                 .ilen   = 16,
2565                 .result = { 0xf1, 0xb2, 0x73, 0xcd, 0x65, 0xa3, 0xdf, 0x5f,
2566                             0xe9, 0x5d, 0x48, 0x92, 0x54, 0x63, 0x4e, 0xb8 },
2567                 .rlen   = 16,
2568         }, { /* LRW-32-AES 2 */
2569                 .key    = { 0x59, 0x70, 0x47, 0x14, 0xf5, 0x57, 0x47, 0x8c,
2570                             0xd7, 0x79, 0xe8, 0x0f, 0x54, 0x88, 0x79, 0x44,
2571                             0x0d, 0x48, 0xf0, 0xb7, 0xb1, 0x5a, 0x53, 0xea,
2572                             0x1c, 0xaa, 0x6b, 0x29, 0xc2, 0xca, 0xfb, 0xaf
2573                 },
2574                 .klen   = 32,
2575                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2576                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 },
2577                 .input  = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2578                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2579                 .ilen   = 16,
2580                 .result = { 0x00, 0xc8, 0x2b, 0xae, 0x95, 0xbb, 0xcd, 0xe5,
2581                             0x27, 0x4f, 0x07, 0x69, 0xb2, 0x60, 0xe1, 0x36 },
2582                 .rlen   = 16,
2583         }, { /* LRW-32-AES 3 */
2584                 .key    = { 0xd8, 0x2a, 0x91, 0x34, 0xb2, 0x6a, 0x56, 0x50,
2585                             0x30, 0xfe, 0x69, 0xe2, 0x37, 0x7f, 0x98, 0x47,
2586                             0xcd, 0xf9, 0x0b, 0x16, 0x0c, 0x64, 0x8f, 0xb6,
2587                             0xb0, 0x0d, 0x0d, 0x1b, 0xae, 0x85, 0x87, 0x1f },
2588                 .klen   = 32,
2589                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2590                             0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2591                 .input  = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2592                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2593                 .ilen   = 16,
2594                 .result = { 0x76, 0x32, 0x21, 0x83, 0xed, 0x8f, 0xf1, 0x82,
2595                             0xf9, 0x59, 0x62, 0x03, 0x69, 0x0e, 0x5e, 0x01 },
2596                 .rlen   = 16,
2597         }, { /* LRW-32-AES 4 */
2598                 .key    = { 0x0f, 0x6a, 0xef, 0xf8, 0xd3, 0xd2, 0xbb, 0x15,
2599                             0x25, 0x83, 0xf7, 0x3c, 0x1f, 0x01, 0x28, 0x74,
2600                             0xca, 0xc6, 0xbc, 0x35, 0x4d, 0x4a, 0x65, 0x54,
2601                             0x90, 0xae, 0x61, 0xcf, 0x7b, 0xae, 0xbd, 0xcc,
2602                             0xad, 0xe4, 0x94, 0xc5, 0x4a, 0x29, 0xae, 0x70 },
2603                 .klen   = 40,
2604                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2605                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2606                 .input  = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2607                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2608                 .ilen   = 16,
2609                 .result = { 0x9c, 0x0f, 0x15, 0x2f, 0x55, 0xa2, 0xd8, 0xf0,
2610                             0xd6, 0x7b, 0x8f, 0x9e, 0x28, 0x22, 0xbc, 0x41 },
2611                 .rlen   = 16,
2612         }, { /* LRW-32-AES 5 */
2613                 .key    = { 0x8a, 0xd4, 0xee, 0x10, 0x2f, 0xbd, 0x81, 0xff,
2614                             0xf8, 0x86, 0xce, 0xac, 0x93, 0xc5, 0xad, 0xc6,
2615                             0xa0, 0x19, 0x07, 0xc0, 0x9d, 0xf7, 0xbb, 0xdd,
2616                             0x52, 0x13, 0xb2, 0xb7, 0xf0, 0xff, 0x11, 0xd8,
2617                             0xd6, 0x08, 0xd0, 0xcd, 0x2e, 0xb1, 0x17, 0x6f },
2618                 .klen   = 40,
2619                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2620                             0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2621                 .input  = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2622                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2623                 .ilen   = 16,
2624                 .result = { 0xd4, 0x27, 0x6a, 0x7f, 0x14, 0x91, 0x3d, 0x65,
2625                             0xc8, 0x60, 0x48, 0x02, 0x87, 0xe3, 0x34, 0x06 },
2626                 .rlen   = 16,
2627         }, { /* LRW-32-AES 6 */
2628                 .key    = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c,
2629                             0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d,
2630                             0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21,
2631                             0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89,
2632                             0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1,
2633                             0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e },
2634                 .klen   = 48,
2635                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2636                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2637                 .input  = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2638                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2639                 .ilen   = 16,
2640                 .result = { 0xbd, 0x06, 0xb8, 0xe1, 0xdb, 0x98, 0x89, 0x9e,
2641                             0xc4, 0x98, 0xe4, 0x91, 0xcf, 0x1c, 0x70, 0x2b },
2642                 .rlen   = 16,
2643         }, { /* LRW-32-AES 7 */
2644                 .key    = { 0xfb, 0x76, 0x15, 0xb2, 0x3d, 0x80, 0x89, 0x1d,
2645                             0xd4, 0x70, 0x98, 0x0b, 0xc7, 0x95, 0x84, 0xc8,
2646                             0xb2, 0xfb, 0x64, 0xce, 0x60, 0x97, 0x87, 0x8d,
2647                             0x17, 0xfc, 0xe4, 0x5a, 0x49, 0xe8, 0x30, 0xb7,
2648                             0x6e, 0x78, 0x17, 0xe7, 0x2d, 0x5e, 0x12, 0xd4,
2649                             0x60, 0x64, 0x04, 0x7a, 0xf1, 0x2f, 0x9e, 0x0c },
2650                 .klen   = 48,
2651                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2652                             0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2653                 .input  = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2654                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2655                 .ilen   = 16,
2656                 .result = { 0x5b, 0x90, 0x8e, 0xc1, 0xab, 0xdd, 0x67, 0x5f,
2657                             0x3d, 0x69, 0x8a, 0x95, 0x53, 0xc8, 0x9c, 0xe5 },
2658                 .rlen   = 16,
2659         }, {
2660 /* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
2661                 .key    = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c,
2662                             0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d,
2663                             0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21,
2664                             0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89,
2665                             0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1,
2666                             0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e },
2667                 .klen   = 48,
2668                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2669                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2670                 .input  = { 0x05, 0x11, 0xb7, 0x18, 0xab, 0xc6, 0x2d, 0xac,
2671                             0x70, 0x5d, 0xf6, 0x22, 0x94, 0xcd, 0xe5, 0x6c,
2672                             0x17, 0x6b, 0xf6, 0x1c, 0xf0, 0xf3, 0x6e, 0xf8,
2673                             0x50, 0x38, 0x1f, 0x71, 0x49, 0xb6, 0x57, 0xd6,
2674                             0x8f, 0xcb, 0x8d, 0x6b, 0xe3, 0xa6, 0x29, 0x90,
2675                             0xfe, 0x2a, 0x62, 0x82, 0xae, 0x6d, 0x8b, 0xf6,
2676                             0xad, 0x1e, 0x9e, 0x20, 0x5f, 0x38, 0xbe, 0x04,
2677                             0xda, 0x10, 0x8e, 0xed, 0xa2, 0xa4, 0x87, 0xab,
2678                             0xda, 0x6b, 0xb4, 0x0c, 0x75, 0xba, 0xd3, 0x7c,
2679                             0xc9, 0xac, 0x42, 0x31, 0x95, 0x7c, 0xc9, 0x04,
2680                             0xeb, 0xd5, 0x6e, 0x32, 0x69, 0x8a, 0xdb, 0xa6,
2681                             0x15, 0xd7, 0x3f, 0x4f, 0x2f, 0x66, 0x69, 0x03,
2682                             0x9c, 0x1f, 0x54, 0x0f, 0xde, 0x1f, 0xf3, 0x65,
2683                             0x4c, 0x96, 0x12, 0xed, 0x7c, 0x92, 0x03, 0x01,
2684                             0x6f, 0xbc, 0x35, 0x93, 0xac, 0xf1, 0x27, 0xf1,
2685                             0xb4, 0x96, 0x82, 0x5a, 0x5f, 0xb0, 0xa0, 0x50,
2686                             0x89, 0xa4, 0x8e, 0x66, 0x44, 0x85, 0xcc, 0xfd,
2687                             0x33, 0x14, 0x70, 0xe3, 0x96, 0xb2, 0xc3, 0xd3,
2688                             0xbb, 0x54, 0x5a, 0x1a, 0xf9, 0x74, 0xa2, 0xc5,
2689                             0x2d, 0x64, 0x75, 0xdd, 0xb4, 0x54, 0xe6, 0x74,
2690                             0x8c, 0xd3, 0x9d, 0x9e, 0x86, 0xab, 0x51, 0x53,
2691                             0xb7, 0x93, 0x3e, 0x6f, 0xd0, 0x4e, 0x2c, 0x40,
2692                             0xf6, 0xa8, 0x2e, 0x3e, 0x9d, 0xf4, 0x66, 0xa5,
2693                             0x76, 0x12, 0x73, 0x44, 0x1a, 0x56, 0xd7, 0x72,
2694                             0x88, 0xcd, 0x21, 0x8c, 0x4c, 0x0f, 0xfe, 0xda,
2695                             0x95, 0xe0, 0x3a, 0xa6, 0xa5, 0x84, 0x46, 0xcd,
2696                             0xd5, 0x3e, 0x9d, 0x3a, 0xe2, 0x67, 0xe6, 0x60,
2697                             0x1a, 0xe2, 0x70, 0x85, 0x58, 0xc2, 0x1b, 0x09,
2698                             0xe1, 0xd7, 0x2c, 0xca, 0xad, 0xa8, 0x8f, 0xf9,
2699                             0xac, 0xb3, 0x0e, 0xdb, 0xca, 0x2e, 0xe2, 0xb8,
2700                             0x51, 0x71, 0xd9, 0x3c, 0x6c, 0xf1, 0x56, 0xf8,
2701                             0xea, 0x9c, 0xf1, 0xfb, 0x0c, 0xe6, 0xb7, 0x10,
2702                             0x1c, 0xf8, 0xa9, 0x7c, 0xe8, 0x53, 0x35, 0xc1,
2703                             0x90, 0x3e, 0x76, 0x4a, 0x74, 0xa4, 0x21, 0x2c,
2704                             0xf6, 0x2c, 0x4e, 0x0f, 0x94, 0x3a, 0x88, 0x2e,
2705                             0x41, 0x09, 0x6a, 0x33, 0x7d, 0xf6, 0xdd, 0x3f,
2706                             0x8d, 0x23, 0x31, 0x74, 0x84, 0xeb, 0x88, 0x6e,
2707                             0xcc, 0xb9, 0xbc, 0x22, 0x83, 0x19, 0x07, 0x22,
2708                             0xa5, 0x2d, 0xdf, 0xa5, 0xf3, 0x80, 0x85, 0x78,
2709                             0x84, 0x39, 0x6a, 0x6d, 0x6a, 0x99, 0x4f, 0xa5,
2710                             0x15, 0xfe, 0x46, 0xb0, 0xe4, 0x6c, 0xa5, 0x41,
2711                             0x3c, 0xce, 0x8f, 0x42, 0x60, 0x71, 0xa7, 0x75,
2712                             0x08, 0x40, 0x65, 0x8a, 0x82, 0xbf, 0xf5, 0x43,
2713                             0x71, 0x96, 0xa9, 0x4d, 0x44, 0x8a, 0x20, 0xbe,
2714                             0xfa, 0x4d, 0xbb, 0xc0, 0x7d, 0x31, 0x96, 0x65,
2715                             0xe7, 0x75, 0xe5, 0x3e, 0xfd, 0x92, 0x3b, 0xc9,
2716                             0x55, 0xbb, 0x16, 0x7e, 0xf7, 0xc2, 0x8c, 0xa4,
2717                             0x40, 0x1d, 0xe5, 0xef, 0x0e, 0xdf, 0xe4, 0x9a,
2718                             0x62, 0x73, 0x65, 0xfd, 0x46, 0x63, 0x25, 0x3d,
2719                             0x2b, 0xaf, 0xe5, 0x64, 0xfe, 0xa5, 0x5c, 0xcf,
2720                             0x24, 0xf3, 0xb4, 0xac, 0x64, 0xba, 0xdf, 0x4b,
2721                             0xc6, 0x96, 0x7d, 0x81, 0x2d, 0x8d, 0x97, 0xf7,
2722                             0xc5, 0x68, 0x77, 0x84, 0x32, 0x2b, 0xcc, 0x85,
2723                             0x74, 0x96, 0xf0, 0x12, 0x77, 0x61, 0xb9, 0xeb,
2724                             0x71, 0xaa, 0x82, 0xcb, 0x1c, 0xdb, 0x89, 0xc8,
2725                             0xc6, 0xb5, 0xe3, 0x5c, 0x7d, 0x39, 0x07, 0x24,
2726                             0xda, 0x39, 0x87, 0x45, 0xc0, 0x2b, 0xbb, 0x01,
2727                             0xac, 0xbc, 0x2a, 0x5c, 0x7f, 0xfc, 0xe8, 0xce,
2728                             0x6d, 0x9c, 0x6f, 0xed, 0xd3, 0xc1, 0xa1, 0xd6,
2729                             0xc5, 0x55, 0xa9, 0x66, 0x2f, 0xe1, 0xc8, 0x32,
2730                             0xa6, 0x5d, 0xa4, 0x3a, 0x98, 0x73, 0xe8, 0x45,
2731                             0xa4, 0xc7, 0xa8, 0xb4, 0xf6, 0x13, 0x03, 0xf6,
2732                             0xe9, 0x2e, 0xc4, 0x29, 0x0f, 0x84, 0xdb, 0xc4,
2733                             0x21, 0xc4, 0xc2, 0x75, 0x67, 0x89, 0x37, 0x0a },
2734                 .ilen   = 512,
2735                 .result = { 0x1a, 0x1d, 0xa9, 0x30, 0xad, 0xf9, 0x2f, 0x9b,
2736                             0xb6, 0x1d, 0xae, 0xef, 0xf0, 0x2f, 0xf8, 0x5a,
2737                             0x39, 0x3c, 0xbf, 0x2a, 0xb2, 0x45, 0xb2, 0x23,
2738                             0x1b, 0x63, 0x3c, 0xcf, 0xaa, 0xbe, 0xcf, 0x4e,
2739                             0xfa, 0xe8, 0x29, 0xc2, 0x20, 0x68, 0x2b, 0x3c,
2740                             0x2e, 0x8b, 0xf7, 0x6e, 0x25, 0xbd, 0xe3, 0x3d,
2741                             0x66, 0x27, 0xd6, 0xaf, 0xd6, 0x64, 0x3e, 0xe3,
2742                             0xe8, 0x58, 0x46, 0x97, 0x39, 0x51, 0x07, 0xde,
2743                             0xcb, 0x37, 0xbc, 0xa9, 0xc0, 0x5f, 0x75, 0xc3,
2744                             0x0e, 0x84, 0x23, 0x1d, 0x16, 0xd4, 0x1c, 0x59,
2745                             0x9c, 0x1a, 0x02, 0x55, 0xab, 0x3a, 0x97, 0x1d,
2746                             0xdf, 0xdd, 0xc7, 0x06, 0x51, 0xd7, 0x70, 0xae,
2747                             0x23, 0xc6, 0x8c, 0xf5, 0x1e, 0xa0, 0xe5, 0x82,
2748                             0xb8, 0xb2, 0xbf, 0x04, 0xa0, 0x32, 0x8e, 0x68,
2749                             0xeb, 0xaf, 0x6e, 0x2d, 0x94, 0x22, 0x2f, 0xce,
2750                             0x4c, 0xb5, 0x59, 0xe2, 0xa2, 0x2f, 0xa0, 0x98,
2751                             0x1a, 0x97, 0xc6, 0xd4, 0xb5, 0x00, 0x59, 0xf2,
2752                             0x84, 0x14, 0x72, 0xb1, 0x9a, 0x6e, 0xa3, 0x7f,
2753                             0xea, 0x20, 0xe7, 0xcb, 0x65, 0x77, 0x3a, 0xdf,
2754                             0xc8, 0x97, 0x67, 0x15, 0xc2, 0x2a, 0x27, 0xcc,
2755                             0x18, 0x55, 0xa1, 0x24, 0x0b, 0x24, 0x24, 0xaf,
2756                             0x5b, 0xec, 0x68, 0xb8, 0xc8, 0xf5, 0xba, 0x63,
2757                             0xff, 0xed, 0x89, 0xce, 0xd5, 0x3d, 0x88, 0xf3,
2758                             0x25, 0xef, 0x05, 0x7c, 0x3a, 0xef, 0xeb, 0xd8,
2759                             0x7a, 0x32, 0x0d, 0xd1, 0x1e, 0x58, 0x59, 0x99,
2760                             0x90, 0x25, 0xb5, 0x26, 0xb0, 0xe3, 0x2b, 0x6c,
2761                             0x4c, 0xa9, 0x8b, 0x84, 0x4f, 0x5e, 0x01, 0x50,
2762                             0x41, 0x30, 0x58, 0xc5, 0x62, 0x74, 0x52, 0x1d,
2763                             0x45, 0x24, 0x6a, 0x42, 0x64, 0x4f, 0x97, 0x1c,
2764                             0xa8, 0x66, 0xb5, 0x6d, 0x79, 0xd4, 0x0d, 0x48,
2765                             0xc5, 0x5f, 0xf3, 0x90, 0x32, 0xdd, 0xdd, 0xe1,
2766                             0xe4, 0xa9, 0x9f, 0xfc, 0xc3, 0x52, 0x5a, 0x46,
2767                             0xe4, 0x81, 0x84, 0x95, 0x36, 0x59, 0x7a, 0x6b,
2768                             0xaa, 0xb3, 0x60, 0xad, 0xce, 0x9f, 0x9f, 0x28,
2769                             0xe0, 0x01, 0x75, 0x22, 0xc4, 0x4e, 0xa9, 0x62,
2770                             0x5c, 0x62, 0x0d, 0x00, 0xcb, 0x13, 0xe8, 0x43,
2771                             0x72, 0xd4, 0x2d, 0x53, 0x46, 0xb5, 0xd1, 0x16,
2772                             0x22, 0x18, 0xdf, 0x34, 0x33, 0xf5, 0xd6, 0x1c,
2773                             0xb8, 0x79, 0x78, 0x97, 0x94, 0xff, 0x72, 0x13,
2774                             0x4c, 0x27, 0xfc, 0xcb, 0xbf, 0x01, 0x53, 0xa6,
2775                             0xb4, 0x50, 0x6e, 0xde, 0xdf, 0xb5, 0x43, 0xa4,
2776                             0x59, 0xdf, 0x52, 0xf9, 0x7c, 0xe0, 0x11, 0x6f,
2777                             0x2d, 0x14, 0x8e, 0x24, 0x61, 0x2c, 0xe1, 0x17,
2778                             0xcc, 0xce, 0x51, 0x0c, 0x19, 0x8a, 0x82, 0x30,
2779                             0x94, 0xd5, 0x3d, 0x6a, 0x53, 0x06, 0x5e, 0xbd,
2780                             0xb7, 0xeb, 0xfa, 0xfd, 0x27, 0x51, 0xde, 0x85,
2781                             0x1e, 0x86, 0x53, 0x11, 0x53, 0x94, 0x00, 0xee,
2782                             0x2b, 0x8c, 0x08, 0x2a, 0xbf, 0xdd, 0xae, 0x11,
2783                             0xcb, 0x1e, 0xa2, 0x07, 0x9a, 0x80, 0xcf, 0x62,
2784                             0x9b, 0x09, 0xdc, 0x95, 0x3c, 0x96, 0x8e, 0xb1,
2785                             0x09, 0xbd, 0xe4, 0xeb, 0xdb, 0xca, 0x70, 0x7a,
2786                             0x9e, 0xfa, 0x31, 0x18, 0x45, 0x3c, 0x21, 0x33,
2787                             0xb0, 0xb3, 0x2b, 0xea, 0xf3, 0x71, 0x2d, 0xe1,
2788                             0x03, 0xad, 0x1b, 0x48, 0xd4, 0x67, 0x27, 0xf0,
2789                             0x62, 0xe4, 0x3d, 0xfb, 0x9b, 0x08, 0x76, 0xe7,
2790                             0xdd, 0x2b, 0x01, 0x39, 0x04, 0x5a, 0x58, 0x7a,
2791                             0xf7, 0x11, 0x90, 0xec, 0xbd, 0x51, 0x5c, 0x32,
2792                             0x6b, 0xd7, 0x35, 0x39, 0x02, 0x6b, 0xf2, 0xa6,
2793                             0xd0, 0x0d, 0x07, 0xe1, 0x06, 0xc4, 0x5b, 0x7d,
2794                             0xe4, 0x6a, 0xd7, 0xee, 0x15, 0x1f, 0x83, 0xb4,
2795                             0xa3, 0xa7, 0x5e, 0xc3, 0x90, 0xb7, 0xef, 0xd3,
2796                             0xb7, 0x4f, 0xf8, 0x92, 0x4c, 0xb7, 0x3c, 0x29,
2797                             0xcd, 0x7e, 0x2b, 0x5d, 0x43, 0xea, 0x42, 0xe7,
2798                             0x74, 0x3f, 0x7d, 0x58, 0x88, 0x75, 0xde, 0x3e },
2799                 .rlen   = 512,
2800         }
2801 };
2802
2803 static struct cipher_testvec aes_lrw_dec_tv_template[] = {
2804         /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
2805         /* same as enc vectors with input and result reversed */
2806         { /* LRW-32-AES 1 */
2807                 .key    = { 0x45, 0x62, 0xac, 0x25, 0xf8, 0x28, 0x17, 0x6d,
2808                             0x4c, 0x26, 0x84, 0x14, 0xb5, 0x68, 0x01, 0x85,
2809                             0x25, 0x8e, 0x2a, 0x05, 0xe7, 0x3e, 0x9d, 0x03,
2810                             0xee, 0x5a, 0x83, 0x0c, 0xcc, 0x09, 0x4c, 0x87 },
2811                 .klen   = 32,
2812                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2813                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2814                 .input  = { 0xf1, 0xb2, 0x73, 0xcd, 0x65, 0xa3, 0xdf, 0x5f,
2815                             0xe9, 0x5d, 0x48, 0x92, 0x54, 0x63, 0x4e, 0xb8 },
2816                 .ilen   = 16,
2817                 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2818                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2819                 .rlen   = 16,
2820         }, { /* LRW-32-AES 2 */
2821                 .key    = { 0x59, 0x70, 0x47, 0x14, 0xf5, 0x57, 0x47, 0x8c,
2822                             0xd7, 0x79, 0xe8, 0x0f, 0x54, 0x88, 0x79, 0x44,
2823                             0x0d, 0x48, 0xf0, 0xb7, 0xb1, 0x5a, 0x53, 0xea,
2824                             0x1c, 0xaa, 0x6b, 0x29, 0xc2, 0xca, 0xfb, 0xaf
2825                 },
2826                 .klen   = 32,
2827                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2828                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 },
2829                 .input  = { 0x00, 0xc8, 0x2b, 0xae, 0x95, 0xbb, 0xcd, 0xe5,
2830                             0x27, 0x4f, 0x07, 0x69, 0xb2, 0x60, 0xe1, 0x36 },
2831                 .ilen   = 16,
2832                 .result  = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2833                              0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2834                 .rlen   = 16,
2835         }, { /* LRW-32-AES 3 */
2836                 .key    = { 0xd8, 0x2a, 0x91, 0x34, 0xb2, 0x6a, 0x56, 0x50,
2837                             0x30, 0xfe, 0x69, 0xe2, 0x37, 0x7f, 0x98, 0x47,
2838                             0xcd, 0xf9, 0x0b, 0x16, 0x0c, 0x64, 0x8f, 0xb6,
2839                             0xb0, 0x0d, 0x0d, 0x1b, 0xae, 0x85, 0x87, 0x1f },
2840                 .klen   = 32,
2841                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2842                             0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2843                 .input  = { 0x76, 0x32, 0x21, 0x83, 0xed, 0x8f, 0xf1, 0x82,
2844                             0xf9, 0x59, 0x62, 0x03, 0x69, 0x0e, 0x5e, 0x01 },
2845                 .ilen   = 16,
2846                 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2847                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2848                 .rlen   = 16,
2849         }, { /* LRW-32-AES 4 */
2850                 .key    = { 0x0f, 0x6a, 0xef, 0xf8, 0xd3, 0xd2, 0xbb, 0x15,
2851                             0x25, 0x83, 0xf7, 0x3c, 0x1f, 0x01, 0x28, 0x74,
2852                             0xca, 0xc6, 0xbc, 0x35, 0x4d, 0x4a, 0x65, 0x54,
2853                             0x90, 0xae, 0x61, 0xcf, 0x7b, 0xae, 0xbd, 0xcc,
2854                             0xad, 0xe4, 0x94, 0xc5, 0x4a, 0x29, 0xae, 0x70 },
2855                 .klen   = 40,
2856                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2857                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2858                 .input  = { 0x9c, 0x0f, 0x15, 0x2f, 0x55, 0xa2, 0xd8, 0xf0,
2859                             0xd6, 0x7b, 0x8f, 0x9e, 0x28, 0x22, 0xbc, 0x41 },
2860                 .ilen   = 16,
2861                 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2862                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2863                 .rlen   = 16,
2864         }, { /* LRW-32-AES 5 */
2865                 .key    = { 0x8a, 0xd4, 0xee, 0x10, 0x2f, 0xbd, 0x81, 0xff,
2866                             0xf8, 0x86, 0xce, 0xac, 0x93, 0xc5, 0xad, 0xc6,
2867                             0xa0, 0x19, 0x07, 0xc0, 0x9d, 0xf7, 0xbb, 0xdd,
2868                             0x52, 0x13, 0xb2, 0xb7, 0xf0, 0xff, 0x11, 0xd8,
2869                             0xd6, 0x08, 0xd0, 0xcd, 0x2e, 0xb1, 0x17, 0x6f },
2870                 .klen   = 40,
2871                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2872                             0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2873                 .input  = { 0xd4, 0x27, 0x6a, 0x7f, 0x14, 0x91, 0x3d, 0x65,
2874                             0xc8, 0x60, 0x48, 0x02, 0x87, 0xe3, 0x34, 0x06 },
2875                 .ilen   = 16,
2876                 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2877                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2878                 .rlen   = 16,
2879         }, { /* LRW-32-AES 6 */
2880                 .key    = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c,
2881                             0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d,
2882                             0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21,
2883                             0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89,
2884                             0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1,
2885                             0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e },
2886                 .klen   = 48,
2887                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2888                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2889                 .input  = { 0xbd, 0x06, 0xb8, 0xe1, 0xdb, 0x98, 0x89, 0x9e,
2890                             0xc4, 0x98, 0xe4, 0x91, 0xcf, 0x1c, 0x70, 0x2b },
2891                 .ilen   = 16,
2892                 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2893                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2894                 .rlen   = 16,
2895         }, { /* LRW-32-AES 7 */
2896                 .key    = { 0xfb, 0x76, 0x15, 0xb2, 0x3d, 0x80, 0x89, 0x1d,
2897                             0xd4, 0x70, 0x98, 0x0b, 0xc7, 0x95, 0x84, 0xc8,
2898                             0xb2, 0xfb, 0x64, 0xce, 0x60, 0x97, 0x87, 0x8d,
2899                             0x17, 0xfc, 0xe4, 0x5a, 0x49, 0xe8, 0x30, 0xb7,
2900                             0x6e, 0x78, 0x17, 0xe7, 0x2d, 0x5e, 0x12, 0xd4,
2901                             0x60, 0x64, 0x04, 0x7a, 0xf1, 0x2f, 0x9e, 0x0c },
2902                 .klen   = 48,
2903                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2904                             0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2905                 .input  = { 0x5b, 0x90, 0x8e, 0xc1, 0xab, 0xdd, 0x67, 0x5f,
2906                             0x3d, 0x69, 0x8a, 0x95, 0x53, 0xc8, 0x9c, 0xe5 },
2907                 .ilen   = 16,
2908                 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2909                             0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2910                 .rlen   = 16,
2911         }, {
2912 /* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
2913                 .key    = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c,
2914                             0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d,
2915                             0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21,
2916                             0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89,
2917                             0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1,
2918                             0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e },
2919                 .klen   = 48,
2920                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2921                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2922                 .input  = { 0x1a, 0x1d, 0xa9, 0x30, 0xad, 0xf9, 0x2f, 0x9b,
2923                             0xb6, 0x1d, 0xae, 0xef, 0xf0, 0x2f, 0xf8, 0x5a,
2924                             0x39, 0x3c, 0xbf, 0x2a, 0xb2, 0x45, 0xb2, 0x23,
2925                             0x1b, 0x63, 0x3c, 0xcf, 0xaa, 0xbe, 0xcf, 0x4e,
2926                             0xfa, 0xe8, 0x29, 0xc2, 0x20, 0x68, 0x2b, 0x3c,
2927                             0x2e, 0x8b, 0xf7, 0x6e, 0x25, 0xbd, 0xe3, 0x3d,
2928                             0x66, 0x27, 0xd6, 0xaf, 0xd6, 0x64, 0x3e, 0xe3,
2929                             0xe8, 0x58, 0x46, 0x97, 0x39, 0x51, 0x07, 0xde,
2930                             0xcb, 0x37, 0xbc, 0xa9, 0xc0, 0x5f, 0x75, 0xc3,
2931                             0x0e, 0x84, 0x23, 0x1d, 0x16, 0xd4, 0x1c, 0x59,
2932                             0x9c, 0x1a, 0x02, 0x55, 0xab, 0x3a, 0x97, 0x1d,
2933                             0xdf, 0xdd, 0xc7, 0x06, 0x51, 0xd7, 0x70, 0xae,
2934                             0x23, 0xc6, 0x8c, 0xf5, 0x1e, 0xa0, 0xe5, 0x82,
2935                             0xb8, 0xb2, 0xbf, 0x04, 0xa0, 0x32, 0x8e, 0x68,
2936                             0xeb, 0xaf, 0x6e, 0x2d, 0x94, 0x22, 0x2f, 0xce,
2937                             0x4c, 0xb5, 0x59, 0xe2, 0xa2, 0x2f, 0xa0, 0x98,
2938                             0x1a, 0x97, 0xc6, 0xd4, 0xb5, 0x00, 0x59, 0xf2,
2939                             0x84, 0x14, 0x72, 0xb1, 0x9a, 0x6e, 0xa3, 0x7f,
2940                             0xea, 0x20, 0xe7, 0xcb, 0x65, 0x77, 0x3a, 0xdf,
2941                             0xc8, 0x97, 0x67, 0x15, 0xc2, 0x2a, 0x27, 0xcc,
2942                             0x18, 0x55, 0xa1, 0x24, 0x0b, 0x24, 0x24, 0xaf,
2943                             0x5b, 0xec, 0x68, 0xb8, 0xc8, 0xf5, 0xba, 0x63,
2944                             0xff, 0xed, 0x89, 0xce, 0xd5, 0x3d, 0x88, 0xf3,
2945                             0x25, 0xef, 0x05, 0x7c, 0x3a, 0xef, 0xeb, 0xd8,
2946                             0x7a, 0x32, 0x0d, 0xd1, 0x1e, 0x58, 0x59, 0x99,
2947                             0x90, 0x25, 0xb5, 0x26, 0xb0, 0xe3, 0x2b, 0x6c,
2948                             0x4c, 0xa9, 0x8b, 0x84, 0x4f, 0x5e, 0x01, 0x50,
2949                             0x41, 0x30, 0x58, 0xc5, 0x62, 0x74, 0x52, 0x1d,
2950                             0x45, 0x24, 0x6a, 0x42, 0x64, 0x4f, 0x97, 0x1c,
2951                             0xa8, 0x66, 0xb5, 0x6d, 0x79, 0xd4, 0x0d, 0x48,
2952                             0xc5, 0x5f, 0xf3, 0x90, 0x32, 0xdd, 0xdd, 0xe1,
2953                             0xe4, 0xa9, 0x9f, 0xfc, 0xc3, 0x52, 0x5a, 0x46,
2954                             0xe4, 0x81, 0x84, 0x95, 0x36, 0x59, 0x7a, 0x6b,
2955                             0xaa, 0xb3, 0x60, 0xad, 0xce, 0x9f, 0x9f, 0x28,
2956                             0xe0, 0x01, 0x75, 0x22, 0xc4, 0x4e, 0xa9, 0x62,
2957                             0x5c, 0x62, 0x0d, 0x00, 0xcb, 0x13, 0xe8, 0x43,
2958                             0x72, 0xd4, 0x2d, 0x53, 0x46, 0xb5, 0xd1, 0x16,
2959                             0x22, 0x18, 0xdf, 0x34, 0x33, 0xf5, 0xd6, 0x1c,
2960                             0xb8, 0x79, 0x78, 0x97, 0x94, 0xff, 0x72, 0x13,
2961                             0x4c, 0x27, 0xfc, 0xcb, 0xbf, 0x01, 0x53, 0xa6,
2962                             0xb4, 0x50, 0x6e, 0xde, 0xdf, 0xb5, 0x43, 0xa4,
2963                             0x59, 0xdf, 0x52, 0xf9, 0x7c, 0xe0, 0x11, 0x6f,
2964                             0x2d, 0x14, 0x8e, 0x24, 0x61, 0x2c, 0xe1, 0x17,
2965                             0xcc, 0xce, 0x51, 0x0c, 0x19, 0x8a, 0x82, 0x30,
2966                             0x94, 0xd5, 0x3d, 0x6a, 0x53, 0x06, 0x5e, 0xbd,
2967                             0xb7, 0xeb, 0xfa, 0xfd, 0x27, 0x51, 0xde, 0x85,
2968                             0x1e, 0x86, 0x53, 0x11, 0x53, 0x94, 0x00, 0xee,
2969                             0x2b, 0x8c, 0x08, 0x2a, 0xbf, 0xdd, 0xae, 0x11,
2970                             0xcb, 0x1e, 0xa2, 0x07, 0x9a, 0x80, 0xcf, 0x62,
2971                             0x9b, 0x09, 0xdc, 0x95, 0x3c, 0x96, 0x8e, 0xb1,
2972                             0x09, 0xbd, 0xe4, 0xeb, 0xdb, 0xca, 0x70, 0x7a,
2973                             0x9e, 0xfa, 0x31, 0x18, 0x45, 0x3c, 0x21, 0x33,
2974                             0xb0, 0xb3, 0x2b, 0xea, 0xf3, 0x71, 0x2d, 0xe1,
2975                             0x03, 0xad, 0x1b, 0x48, 0xd4, 0x67, 0x27, 0xf0,
2976                             0x62, 0xe4, 0x3d, 0xfb, 0x9b, 0x08, 0x76, 0xe7,
2977                             0xdd, 0x2b, 0x01, 0x39, 0x04, 0x5a, 0x58, 0x7a,
2978                             0xf7, 0x11, 0x90, 0xec, 0xbd, 0x51, 0x5c, 0x32,
2979                             0x6b, 0xd7, 0x35, 0x39, 0x02, 0x6b, 0xf2, 0xa6,
2980                             0xd0, 0x0d, 0x07, 0xe1, 0x06, 0xc4, 0x5b, 0x7d,
2981                             0xe4, 0x6a, 0xd7, 0xee, 0x15, 0x1f, 0x83, 0xb4,
2982                             0xa3, 0xa7, 0x5e, 0xc3, 0x90, 0xb7, 0xef, 0xd3,
2983                             0xb7, 0x4f, 0xf8, 0x92, 0x4c, 0xb7, 0x3c, 0x29,
2984                             0xcd, 0x7e, 0x2b, 0x5d, 0x43, 0xea, 0x42, 0xe7,
2985                             0x74, 0x3f, 0x7d, 0x58, 0x88, 0x75, 0xde, 0x3e },
2986                 .ilen   = 512,
2987                 .result = { 0x05, 0x11, 0xb7, 0x18, 0xab, 0xc6, 0x2d, 0xac,
2988                             0x70, 0x5d, 0xf6, 0x22, 0x94, 0xcd, 0xe5, 0x6c,
2989                             0x17, 0x6b, 0xf6, 0x1c, 0xf0, 0xf3, 0x6e, 0xf8,
2990                             0x50, 0x38, 0x1f, 0x71, 0x49, 0xb6, 0x57, 0xd6,
2991                             0x8f, 0xcb, 0x8d, 0x6b, 0xe3, 0xa6, 0x29, 0x90,
2992                             0xfe, 0x2a, 0x62, 0x82, 0xae, 0x6d, 0x8b, 0xf6,
2993                             0xad, 0x1e, 0x9e, 0x20, 0x5f, 0x38, 0xbe, 0x04,
2994                             0xda, 0x10, 0x8e, 0xed, 0xa2, 0xa4, 0x87, 0xab,
2995                             0xda, 0x6b, 0xb4, 0x0c, 0x75, 0xba, 0xd3, 0x7c,
2996                             0xc9, 0xac, 0x42, 0x31, 0x95, 0x7c, 0xc9, 0x04,
2997                             0xeb, 0xd5, 0x6e, 0x32, 0x69, 0x8a, 0xdb, 0xa6,
2998                             0x15, 0xd7, 0x3f, 0x4f, 0x2f, 0x66, 0x69, 0x03,
2999                             0x9c, 0x1f, 0x54, 0x0f, 0xde, 0x1f, 0xf3, 0x65,
3000                             0x4c, 0x96, 0x12, 0xed, 0x7c, 0x92, 0x03, 0x01,
3001                             0x6f, 0xbc, 0x35, 0x93, 0xac, 0xf1, 0x27, 0xf1,
3002                             0xb4, 0x96, 0x82, 0x5a, 0x5f, 0xb0, 0xa0, 0x50,
3003                             0x89, 0xa4, 0x8e, 0x66, 0x44, 0x85, 0xcc, 0xfd,
3004                             0x33, 0x14, 0x70, 0xe3, 0x96, 0xb2, 0xc3, 0xd3,
3005                             0xbb, 0x54, 0x5a, 0x1a, 0xf9, 0x74, 0xa2, 0xc5,
3006                             0x2d, 0x64, 0x75, 0xdd, 0xb4, 0x54, 0xe6, 0x74,
3007                             0x8c, 0xd3, 0x9d, 0x9e, 0x86, 0xab, 0x51, 0x53,
3008                             0xb7, 0x93, 0x3e, 0x6f, 0xd0, 0x4e, 0x2c, 0x40,
3009                             0xf6, 0xa8, 0x2e, 0x3e, 0x9d, 0xf4, 0x66, 0xa5,
3010                             0x76, 0x12, 0x73, 0x44, 0x1a, 0x56, 0xd7, 0x72,
3011                             0x88, 0xcd, 0x21, 0x8c, 0x4c, 0x0f, 0xfe, 0xda,
3012                             0x95, 0xe0, 0x3a, 0xa6, 0xa5, 0x84, 0x46, 0xcd,
3013                             0xd5, 0x3e, 0x9d, 0x3a, 0xe2, 0x67, 0xe6, 0x60,
3014                             0x1a, 0xe2, 0x70, 0x85, 0x58, 0xc2, 0x1b, 0x09,
3015                             0xe1, 0xd7, 0x2c, 0xca, 0xad, 0xa8, 0x8f, 0xf9,
3016                             0xac, 0xb3, 0x0e, 0xdb, 0xca, 0x2e, 0xe2, 0xb8,
3017                             0x51, 0x71, 0xd9, 0x3c, 0x6c, 0xf1, 0x56, 0xf8,
3018                             0xea, 0x9c, 0xf1, 0xfb, 0x0c, 0xe6, 0xb7, 0x10,
3019                             0x1c, 0xf8, 0xa9, 0x7c, 0xe8, 0x53, 0x35, 0xc1,
3020                             0x90, 0x3e, 0x76, 0x4a, 0x74, 0xa4, 0x21, 0x2c,
3021                             0xf6, 0x2c, 0x4e, 0x0f, 0x94, 0x3a, 0x88, 0x2e,
3022                             0x41, 0x09, 0x6a, 0x33, 0x7d, 0xf6, 0xdd, 0x3f,
3023                             0x8d, 0x23, 0x31, 0x74, 0x84, 0xeb, 0x88, 0x6e,
3024                             0xcc, 0xb9, 0xbc, 0x22, 0x83, 0x19, 0x07, 0x22,
3025                             0xa5, 0x2d, 0xdf, 0xa5, 0xf3, 0x80, 0x85, 0x78,
3026                             0x84, 0x39, 0x6a, 0x6d, 0x6a, 0x99, 0x4f, 0xa5,
3027                             0x15, 0xfe, 0x46, 0xb0, 0xe4, 0x6c, 0xa5, 0x41,
3028                             0x3c, 0xce, 0x8f, 0x42, 0x60, 0x71, 0xa7, 0x75,
3029                             0x08, 0x40, 0x65, 0x8a, 0x82, 0xbf, 0xf5, 0x43,
3030                             0x71, 0x96, 0xa9, 0x4d, 0x44, 0x8a, 0x20, 0xbe,
3031                             0xfa, 0x4d, 0xbb, 0xc0, 0x7d, 0x31, 0x96, 0x65,
3032                             0xe7, 0x75, 0xe5, 0x3e, 0xfd, 0x92, 0x3b, 0xc9,
3033                             0x55, 0xbb, 0x16, 0x7e, 0xf7, 0xc2, 0x8c, 0xa4,
3034                             0x40, 0x1d, 0xe5, 0xef, 0x0e, 0xdf, 0xe4, 0x9a,
3035                             0x62, 0x73, 0x65, 0xfd, 0x46, 0x63, 0x25, 0x3d,
3036                             0x2b, 0xaf, 0xe5, 0x64, 0xfe, 0xa5, 0x5c, 0xcf,
3037                             0x24, 0xf3, 0xb4, 0xac, 0x64, 0xba, 0xdf, 0x4b,
3038                             0xc6, 0x96, 0x7d, 0x81, 0x2d, 0x8d, 0x97, 0xf7,
3039                             0xc5, 0x68, 0x77, 0x84, 0x32, 0x2b, 0xcc, 0x85,
3040                             0x74, 0x96, 0xf0, 0x12, 0x77, 0x61, 0xb9, 0xeb,
3041                             0x71, 0xaa, 0x82, 0xcb, 0x1c, 0xdb, 0x89, 0xc8,
3042                             0xc6, 0xb5, 0xe3, 0x5c, 0x7d, 0x39, 0x07, 0x24,
3043                             0xda, 0x39, 0x87, 0x45, 0xc0, 0x2b, 0xbb, 0x01,
3044                             0xac, 0xbc, 0x2a, 0x5c, 0x7f, 0xfc, 0xe8, 0xce,
3045                             0x6d, 0x9c, 0x6f, 0xed, 0xd3, 0xc1, 0xa1, 0xd6,
3046                             0xc5, 0x55, 0xa9, 0x66, 0x2f, 0xe1, 0xc8, 0x32,
3047                             0xa6, 0x5d, 0xa4, 0x3a, 0x98, 0x73, 0xe8, 0x45,
3048                             0xa4, 0xc7, 0xa8, 0xb4, 0xf6, 0x13, 0x03, 0xf6,
3049                             0xe9, 0x2e, 0xc4, 0x29, 0x0f, 0x84, 0xdb, 0xc4,
3050                             0x21, 0xc4, 0xc2, 0x75, 0x67, 0x89, 0x37, 0x0a },
3051                 .rlen   = 512,
3052         }
3053 };
3054
3055 static struct cipher_testvec aes_xts_enc_tv_template[] = {
3056         /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3057         { /* XTS-AES 1 */
3058                 .key    = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3059                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3060                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3061                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3062                 .klen   = 32,
3063                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3064                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3065                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3066                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3067                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3068                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3069                 .ilen   = 32,
3070                 .result = { 0x91, 0x7c, 0xf6, 0x9e, 0xbd, 0x68, 0xb2, 0xec,
3071                             0x9b, 0x9f, 0xe9, 0xa3, 0xea, 0xdd, 0xa6, 0x92,
3072                             0xcd, 0x43, 0xd2, 0xf5, 0x95, 0x98, 0xed, 0x85,
3073                             0x8c, 0x02, 0xc2, 0x65, 0x2f, 0xbf, 0x92, 0x2e },
3074                 .rlen   = 32,
3075         }, { /* XTS-AES 2 */
3076                 .key    = { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
3077                             0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
3078                             0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
3079                             0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 },
3080                 .klen   = 32,
3081                 .iv     = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00,
3082                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3083                 .input  = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3084                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3085                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3086                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 },
3087                 .ilen   = 32,
3088                 .result = { 0xc4, 0x54, 0x18, 0x5e, 0x6a, 0x16, 0x93, 0x6e,
3089                             0x39, 0x33, 0x40, 0x38, 0xac, 0xef, 0x83, 0x8b,
3090                             0xfb, 0x18, 0x6f, 0xff, 0x74, 0x80, 0xad, 0xc4,
3091                             0x28, 0x93, 0x82, 0xec, 0xd6, 0xd3, 0x94, 0xf0 },
3092                 .rlen   = 32,
3093         }, { /* XTS-AES 3 */
3094                 .key    = { 0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8,
3095                             0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, 0xf1, 0xf0,
3096                             0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
3097                             0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 },
3098                 .klen   = 32,
3099                 .iv     = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00,
3100                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3101                 .input  = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3102                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3103                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3104                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 },
3105                 .ilen   = 32,
3106                 .result = { 0xaf, 0x85, 0x33, 0x6b, 0x59, 0x7a, 0xfc, 0x1a,
3107                             0x90, 0x0b, 0x2e, 0xb2, 0x1e, 0xc9, 0x49, 0xd2,
3108                             0x92, 0xdf, 0x4c, 0x04, 0x7e, 0x0b, 0x21, 0x53,
3109                             0x21, 0x86, 0xa5, 0x97, 0x1a, 0x22, 0x7a, 0x89 },
3110                 .rlen   = 32,
3111         }, { /* XTS-AES 4 */
3112                 .key    = { 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45,
3113                             0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26,
3114                             0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93,
3115                             0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95 },
3116                 .klen   = 32,
3117                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3118                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3119                 .input  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
3120                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3121                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3122                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
3123                             0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
3124                             0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
3125                             0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
3126                             0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3127                             0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3128                             0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
3129                             0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
3130                             0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
3131                             0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
3132                             0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
3133                             0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
3134                             0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
3135                             0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
3136                             0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
3137                             0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
3138                             0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
3139                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
3140                             0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
3141                             0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
3142                             0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
3143                             0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
3144                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
3145                             0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
3146                             0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
3147                             0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
3148                             0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
3149                             0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
3150                             0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
3151                             0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
3152                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3153                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3154                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
3155                             0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
3156                             0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
3157                             0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
3158                             0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3159                             0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3160                             0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
3161                             0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
3162                             0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
3163                             0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
3164                             0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
3165                             0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
3166                             0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
3167                             0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
3168                             0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
3169                             0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
3170                             0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
3171                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
3172                             0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
3173                             0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
3174                             0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
3175                             0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
3176                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
3177                             0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
3178                             0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
3179                             0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
3180                             0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
3181                             0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
3182                             0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
3183                 .ilen   = 512,
3184                 .result = { 0x27, 0xa7, 0x47, 0x9b, 0xef, 0xa1, 0xd4, 0x76,
3185                             0x48, 0x9f, 0x30, 0x8c, 0xd4, 0xcf, 0xa6, 0xe2,
3186                             0xa9, 0x6e, 0x4b, 0xbe, 0x32, 0x08, 0xff, 0x25,
3187                             0x28, 0x7d, 0xd3, 0x81, 0x96, 0x16, 0xe8, 0x9c,
3188                             0xc7, 0x8c, 0xf7, 0xf5, 0xe5, 0x43, 0x44, 0x5f,
3189                             0x83, 0x33, 0xd8, 0xfa, 0x7f, 0x56, 0x00, 0x00,
3190                             0x05, 0x27, 0x9f, 0xa5, 0xd8, 0xb5, 0xe4, 0xad,
3191                             0x40, 0xe7, 0x36, 0xdd, 0xb4, 0xd3, 0x54, 0x12,
3192                             0x32, 0x80, 0x63, 0xfd, 0x2a, 0xab, 0x53, 0xe5,
3193                             0xea, 0x1e, 0x0a, 0x9f, 0x33, 0x25, 0x00, 0xa5,
3194                             0xdf, 0x94, 0x87, 0xd0, 0x7a, 0x5c, 0x92, 0xcc,
3195                             0x51, 0x2c, 0x88, 0x66, 0xc7, 0xe8, 0x60, 0xce,
3196                             0x93, 0xfd, 0xf1, 0x66, 0xa2, 0x49, 0x12, 0xb4,
3197                             0x22, 0x97, 0x61, 0x46, 0xae, 0x20, 0xce, 0x84,
3198                             0x6b, 0xb7, 0xdc, 0x9b, 0xa9, 0x4a, 0x76, 0x7a,
3199                             0xae, 0xf2, 0x0c, 0x0d, 0x61, 0xad, 0x02, 0x65,
3200                             0x5e, 0xa9, 0x2d, 0xc4, 0xc4, 0xe4, 0x1a, 0x89,
3201                             0x52, 0xc6, 0x51, 0xd3, 0x31, 0x74, 0xbe, 0x51,
3202                             0xa1, 0x0c, 0x42, 0x11, 0x10, 0xe6, 0xd8, 0x15,
3203                             0x88, 0xed, 0xe8, 0x21, 0x03, 0xa2, 0x52, 0xd8,
3204                             0xa7, 0x50, 0xe8, 0x76, 0x8d, 0xef, 0xff, 0xed,
3205                             0x91, 0x22, 0x81, 0x0a, 0xae, 0xb9, 0x9f, 0x91,
3206                             0x72, 0xaf, 0x82, 0xb6, 0x04, 0xdc, 0x4b, 0x8e,
3207                             0x51, 0xbc, 0xb0, 0x82, 0x35, 0xa6, 0xf4, 0x34,
3208                             0x13, 0x32, 0xe4, 0xca, 0x60, 0x48, 0x2a, 0x4b,
3209                             0xa1, 0xa0, 0x3b, 0x3e, 0x65, 0x00, 0x8f, 0xc5,
3210                             0xda, 0x76, 0xb7, 0x0b, 0xf1, 0x69, 0x0d, 0xb4,
3211                             0xea, 0xe2, 0x9c, 0x5f, 0x1b, 0xad, 0xd0, 0x3c,
3212                             0x5c, 0xcf, 0x2a, 0x55, 0xd7, 0x05, 0xdd, 0xcd,
3213                             0x86, 0xd4, 0x49, 0x51, 0x1c, 0xeb, 0x7e, 0xc3,
3214                             0x0b, 0xf1, 0x2b, 0x1f, 0xa3, 0x5b, 0x91, 0x3f,
3215                             0x9f, 0x74, 0x7a, 0x8a, 0xfd, 0x1b, 0x13, 0x0e,
3216                             0x94, 0xbf, 0xf9, 0x4e, 0xff, 0xd0, 0x1a, 0x91,
3217                             0x73, 0x5c, 0xa1, 0x72, 0x6a, 0xcd, 0x0b, 0x19,
3218                             0x7c, 0x4e, 0x5b, 0x03, 0x39, 0x36, 0x97, 0xe1,
3219                             0x26, 0x82, 0x6f, 0xb6, 0xbb, 0xde, 0x8e, 0xcc,
3220                             0x1e, 0x08, 0x29, 0x85, 0x16, 0xe2, 0xc9, 0xed,
3221                             0x03, 0xff, 0x3c, 0x1b, 0x78, 0x60, 0xf6, 0xde,
3222                             0x76, 0xd4, 0xce, 0xcd, 0x94, 0xc8, 0x11, 0x98,
3223                             0x55, 0xef, 0x52, 0x97, 0xca, 0x67, 0xe9, 0xf3,
3224                             0xe7, 0xff, 0x72, 0xb1, 0xe9, 0x97, 0x85, 0xca,
3225                             0x0a, 0x7e, 0x77, 0x20, 0xc5, 0xb3, 0x6d, 0xc6,
3226                             0xd7, 0x2c, 0xac, 0x95, 0x74, 0xc8, 0xcb, 0xbc,
3227                             0x2f, 0x80, 0x1e, 0x23, 0xe5, 0x6f, 0xd3, 0x44,
3228                             0xb0, 0x7f, 0x22, 0x15, 0x4b, 0xeb, 0xa0, 0xf0,
3229                             0x8c, 0xe8, 0x89, 0x1e, 0x64, 0x3e, 0xd9, 0x95,
3230                             0xc9, 0x4d, 0x9a, 0x69, 0xc9, 0xf1, 0xb5, 0xf4,
3231                             0x99, 0x02, 0x7a, 0x78, 0x57, 0x2a, 0xee, 0xbd,
3232                             0x74, 0xd2, 0x0c, 0xc3, 0x98, 0x81, 0xc2, 0x13,
3233                             0xee, 0x77, 0x0b, 0x10, 0x10, 0xe4, 0xbe, 0xa7,
3234                             0x18, 0x84, 0x69, 0x77, 0xae, 0x11, 0x9f, 0x7a,
3235                             0x02, 0x3a, 0xb5, 0x8c, 0xca, 0x0a, 0xd7, 0x52,
3236                             0xaf, 0xe6, 0x56, 0xbb, 0x3c, 0x17, 0x25, 0x6a,
3237                             0x9f, 0x6e, 0x9b, 0xf1, 0x9f, 0xdd, 0x5a, 0x38,
3238                             0xfc, 0x82, 0xbb, 0xe8, 0x72, 0xc5, 0x53, 0x9e,
3239                             0xdb, 0x60, 0x9e, 0xf4, 0xf7, 0x9c, 0x20, 0x3e,
3240                             0xbb, 0x14, 0x0f, 0x2e, 0x58, 0x3c, 0xb2, 0xad,
3241                             0x15, 0xb4, 0xaa, 0x5b, 0x65, 0x50, 0x16, 0xa8,
3242                             0x44, 0x92, 0x77, 0xdb, 0xd4, 0x77, 0xef, 0x2c,
3243                             0x8d, 0x6c, 0x01, 0x7d, 0xb7, 0x38, 0xb1, 0x8d,
3244                             0xeb, 0x4a, 0x42, 0x7d, 0x19, 0x23, 0xce, 0x3f,
3245                             0xf2, 0x62, 0x73, 0x57, 0x79, 0xa4, 0x18, 0xf2,
3246                             0x0a, 0x28, 0x2d, 0xf9, 0x20, 0x14, 0x7b, 0xea,
3247                             0xbe, 0x42, 0x1e, 0xe5, 0x31, 0x9d, 0x05, 0x68 },
3248                 .rlen   = 512,
3249         }
3250 };
3251
3252 static struct cipher_testvec aes_xts_dec_tv_template[] = {
3253         /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3254         { /* XTS-AES 1 */
3255                 .key    = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3256                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3257                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3258                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3259                 .klen   = 32,
3260                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3261                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3262                 .input = { 0x91, 0x7c, 0xf6, 0x9e, 0xbd, 0x68, 0xb2, 0xec,
3263                            0x9b, 0x9f, 0xe9, 0xa3, 0xea, 0xdd, 0xa6, 0x92,
3264                            0xcd, 0x43, 0xd2, 0xf5, 0x95, 0x98, 0xed, 0x85,
3265                            0x8c, 0x02, 0xc2, 0x65, 0x2f, 0xbf, 0x92, 0x2e },
3266                 .ilen   = 32,
3267                 .result  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3268                              0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3269                              0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3270                              0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3271                 .rlen   = 32,
3272         }, { /* XTS-AES 2 */
3273                 .key    = { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
3274                             0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
3275                             0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
3276                             0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 },
3277                 .klen   = 32,
3278                 .iv     = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00,
3279                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3280                 .input  = { 0xc4, 0x54, 0x18, 0x5e, 0x6a, 0x16, 0x93, 0x6e,
3281                             0x39, 0x33, 0x40, 0x38, 0xac, 0xef, 0x83, 0x8b,
3282                             0xfb, 0x18, 0x6f, 0xff, 0x74, 0x80, 0xad, 0xc4,
3283                             0x28, 0x93, 0x82, 0xec, 0xd6, 0xd3, 0x94, 0xf0 },
3284                 .ilen   = 32,
3285                 .result = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3286                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3287                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3288                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 },
3289                 .rlen   = 32,
3290         }, { /* XTS-AES 3 */
3291                 .key    = { 0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8,
3292                             0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, 0xf1, 0xf0,
3293                             0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
3294                             0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 },
3295                 .klen   = 32,
3296                 .iv     = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00,
3297                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3298                 .input = { 0xaf, 0x85, 0x33, 0x6b, 0x59, 0x7a, 0xfc, 0x1a,
3299                             0x90, 0x0b, 0x2e, 0xb2, 0x1e, 0xc9, 0x49, 0xd2,
3300                             0x92, 0xdf, 0x4c, 0x04, 0x7e, 0x0b, 0x21, 0x53,
3301                             0x21, 0x86, 0xa5, 0x97, 0x1a, 0x22, 0x7a, 0x89 },
3302                 .ilen   = 32,
3303                 .result  = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3304                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3305                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3306                             0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 },
3307                 .rlen   = 32,
3308         }, { /* XTS-AES 4 */
3309                 .key    = { 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45,
3310                             0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26,
3311                             0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93,
3312                             0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95 },
3313                 .klen   = 32,
3314                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3315                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3316                 .input  = { 0x27, 0xa7, 0x47, 0x9b, 0xef, 0xa1, 0xd4, 0x76,
3317                             0x48, 0x9f, 0x30, 0x8c, 0xd4, 0xcf, 0xa6, 0xe2,
3318                             0xa9, 0x6e, 0x4b, 0xbe, 0x32, 0x08, 0xff, 0x25,
3319                             0x28, 0x7d, 0xd3, 0x81, 0x96, 0x16, 0xe8, 0x9c,
3320                             0xc7, 0x8c, 0xf7, 0xf5, 0xe5, 0x43, 0x44, 0x5f,
3321                             0x83, 0x33, 0xd8, 0xfa, 0x7f, 0x56, 0x00, 0x00,
3322                             0x05, 0x27, 0x9f, 0xa5, 0xd8, 0xb5, 0xe4, 0xad,
3323                             0x40, 0xe7, 0x36, 0xdd, 0xb4, 0xd3, 0x54, 0x12,
3324                             0x32, 0x80, 0x63, 0xfd, 0x2a, 0xab, 0x53, 0xe5,
3325                             0xea, 0x1e, 0x0a, 0x9f, 0x33, 0x25, 0x00, 0xa5,
3326                             0xdf, 0x94, 0x87, 0xd0, 0x7a, 0x5c, 0x92, 0xcc,
3327                             0x51, 0x2c, 0x88, 0x66, 0xc7, 0xe8, 0x60, 0xce,
3328                             0x93, 0xfd, 0xf1, 0x66, 0xa2, 0x49, 0x12, 0xb4,
3329                             0x22, 0x97, 0x61, 0x46, 0xae, 0x20, 0xce, 0x84,
3330                             0x6b, 0xb7, 0xdc, 0x9b, 0xa9, 0x4a, 0x76, 0x7a,
3331                             0xae, 0xf2, 0x0c, 0x0d, 0x61, 0xad, 0x02, 0x65,
3332                             0x5e, 0xa9, 0x2d, 0xc4, 0xc4, 0xe4, 0x1a, 0x89,
3333                             0x52, 0xc6, 0x51, 0xd3, 0x31, 0x74, 0xbe, 0x51,
3334                             0xa1, 0x0c, 0x42, 0x11, 0x10, 0xe6, 0xd8, 0x15,
3335                             0x88, 0xed, 0xe8, 0x21, 0x03, 0xa2, 0x52, 0xd8,
3336                             0xa7, 0x50, 0xe8, 0x76, 0x8d, 0xef, 0xff, 0xed,
3337                             0x91, 0x22, 0x81, 0x0a, 0xae, 0xb9, 0x9f, 0x91,
3338                             0x72, 0xaf, 0x82, 0xb6, 0x04, 0xdc, 0x4b, 0x8e,
3339                             0x51, 0xbc, 0xb0, 0x82, 0x35, 0xa6, 0xf4, 0x34,
3340                             0x13, 0x32, 0xe4, 0xca, 0x60, 0x48, 0x2a, 0x4b,
3341                             0xa1, 0xa0, 0x3b, 0x3e, 0x65, 0x00, 0x8f, 0xc5,
3342                             0xda, 0x76, 0xb7, 0x0b, 0xf1, 0x69, 0x0d, 0xb4,
3343                             0xea, 0xe2, 0x9c, 0x5f, 0x1b, 0xad, 0xd0, 0x3c,
3344                             0x5c, 0xcf, 0x2a, 0x55, 0xd7, 0x05, 0xdd, 0xcd,
3345                             0x86, 0xd4, 0x49, 0x51, 0x1c, 0xeb, 0x7e, 0xc3,
3346                             0x0b, 0xf1, 0x2b, 0x1f, 0xa3, 0x5b, 0x91, 0x3f,
3347                             0x9f, 0x74, 0x7a, 0x8a, 0xfd, 0x1b, 0x13, 0x0e,
3348                             0x94, 0xbf, 0xf9, 0x4e, 0xff, 0xd0, 0x1a, 0x91,
3349                             0x73, 0x5c, 0xa1, 0x72, 0x6a, 0xcd, 0x0b, 0x19,
3350                             0x7c, 0x4e, 0x5b, 0x03, 0x39, 0x36, 0x97, 0xe1,
3351                             0x26, 0x82, 0x6f, 0xb6, 0xbb, 0xde, 0x8e, 0xcc,
3352                             0x1e, 0x08, 0x29, 0x85, 0x16, 0xe2, 0xc9, 0xed,
3353                             0x03, 0xff, 0x3c, 0x1b, 0x78, 0x60, 0xf6, 0xde,
3354                             0x76, 0xd4, 0xce, 0xcd, 0x94, 0xc8, 0x11, 0x98,
3355                             0x55, 0xef, 0x52, 0x97, 0xca, 0x67, 0xe9, 0xf3,
3356                             0xe7, 0xff, 0x72, 0xb1, 0xe9, 0x97, 0x85, 0xca,
3357                             0x0a, 0x7e, 0x77, 0x20, 0xc5, 0xb3, 0x6d, 0xc6,
3358                             0xd7, 0x2c, 0xac, 0x95, 0x74, 0xc8, 0xcb, 0xbc,
3359                             0x2f, 0x80, 0x1e, 0x23, 0xe5, 0x6f, 0xd3, 0x44,
3360                             0xb0, 0x7f, 0x22, 0x15, 0x4b, 0xeb, 0xa0, 0xf0,
3361                             0x8c, 0xe8, 0x89, 0x1e, 0x64, 0x3e, 0xd9, 0x95,
3362                             0xc9, 0x4d, 0x9a, 0x69, 0xc9, 0xf1, 0xb5, 0xf4,
3363                             0x99, 0x02, 0x7a, 0x78, 0x57, 0x2a, 0xee, 0xbd,
3364                             0x74, 0xd2, 0x0c, 0xc3, 0x98, 0x81, 0xc2, 0x13,
3365                             0xee, 0x77, 0x0b, 0x10, 0x10, 0xe4, 0xbe, 0xa7,
3366                             0x18, 0x84, 0x69, 0x77, 0xae, 0x11, 0x9f, 0x7a,
3367                             0x02, 0x3a, 0xb5, 0x8c, 0xca, 0x0a, 0xd7, 0x52,
3368                             0xaf, 0xe6, 0x56, 0xbb, 0x3c, 0x17, 0x25, 0x6a,
3369                             0x9f, 0x6e, 0x9b, 0xf1, 0x9f, 0xdd, 0x5a, 0x38,
3370                             0xfc, 0x82, 0xbb, 0xe8, 0x72, 0xc5, 0x53, 0x9e,
3371                             0xdb, 0x60, 0x9e, 0xf4, 0xf7, 0x9c, 0x20, 0x3e,
3372                             0xbb, 0x14, 0x0f, 0x2e, 0x58, 0x3c, 0xb2, 0xad,
3373                             0x15, 0xb4, 0xaa, 0x5b, 0x65, 0x50, 0x16, 0xa8,
3374                             0x44, 0x92, 0x77, 0xdb, 0xd4, 0x77, 0xef, 0x2c,
3375                             0x8d, 0x6c, 0x01, 0x7d, 0xb7, 0x38, 0xb1, 0x8d,
3376                             0xeb, 0x4a, 0x42, 0x7d, 0x19, 0x23, 0xce, 0x3f,
3377                             0xf2, 0x62, 0x73, 0x57, 0x79, 0xa4, 0x18, 0xf2,
3378                             0x0a, 0x28, 0x2d, 0xf9, 0x20, 0x14, 0x7b, 0xea,
3379                             0xbe, 0x42, 0x1e, 0xe5, 0x31, 0x9d, 0x05, 0x68 },
3380                 .ilen   = 512,
3381                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
3382                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3383                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3384                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
3385                             0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
3386                             0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
3387                             0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
3388                             0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3389                             0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3390                             0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
3391                             0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
3392                             0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
3393                             0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
3394                             0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
3395                             0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
3396                             0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
3397                             0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
3398                             0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
3399                             0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
3400                             0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
3401                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
3402                             0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
3403                             0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
3404                             0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
3405                             0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
3406                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
3407                             0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
3408                             0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
3409                             0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
3410                             0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
3411                             0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
3412                             0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
3413                             0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
3414                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3415                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3416                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
3417                             0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
3418                             0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
3419                             0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
3420                             0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3421                             0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3422                             0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
3423                             0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
3424                             0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
3425                             0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
3426                             0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
3427                             0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
3428                             0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
3429                             0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
3430                             0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
3431                             0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
3432                             0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
3433                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
3434                             0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
3435                             0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
3436                             0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
3437                             0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
3438                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
3439                             0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
3440                             0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
3441                             0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
3442                             0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
3443                             0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
3444                             0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
3445                 .rlen   = 512,
3446         }
3447 };
3448
3449
3450 static struct cipher_testvec aes_ctr_enc_tv_template[] = {
3451         { /* From RFC 3686 */
3452                 .key    = { 0xae, 0x68, 0x52, 0xf8, 0x12, 0x10, 0x67, 0xcc,
3453                             0x4b, 0xf7, 0xa5, 0x76, 0x55, 0x77, 0xf3, 0x9e,
3454                             0x00, 0x00, 0x00, 0x30 },
3455                 .klen   = 20,
3456                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3457                 .input  = { "Single block msg" },
3458                 .ilen   = 16,
3459                 .result = { 0xe4, 0x09, 0x5d, 0x4f, 0xb7, 0xa7, 0xb3, 0x79,
3460                             0x2d, 0x61, 0x75, 0xa3, 0x26, 0x13, 0x11, 0xb8 },
3461                 .rlen   = 16,
3462         }, {
3463                 .key    = { 0x7e, 0x24, 0x06, 0x78, 0x17, 0xfa, 0xe0, 0xd7,
3464                             0x43, 0xd6, 0xce, 0x1f, 0x32, 0x53, 0x91, 0x63,
3465                             0x00, 0x6c, 0xb6, 0xdb },
3466                 .klen   = 20,
3467                 .iv     = { 0xc0, 0x54, 0x3b, 0x59, 0xda, 0x48, 0xd9, 0x0b },
3468                 .input  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
3469                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3470                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3471                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
3472                 .ilen   = 32,
3473                 .result = { 0x51, 0x04, 0xa1, 0x06, 0x16, 0x8a, 0x72, 0xd9,
3474                             0x79, 0x0d, 0x41, 0xee, 0x8e, 0xda, 0xd3, 0x88,
3475                             0xeb, 0x2e, 0x1e, 0xfc, 0x46, 0xda, 0x57, 0xc8,
3476                             0xfc, 0xe6, 0x30, 0xdf, 0x91, 0x41, 0xbe, 0x28 },
3477                 .rlen   = 32,
3478         }, {
3479                 .key    = { 0x16, 0xaf, 0x5b, 0x14, 0x5f, 0xc9, 0xf5, 0x79,
3480                             0xc1, 0x75, 0xf9, 0x3e, 0x3b, 0xfb, 0x0e, 0xed,
3481                             0x86, 0x3d, 0x06, 0xcc, 0xfd, 0xb7, 0x85, 0x15,
3482                             0x00, 0x00, 0x00, 0x48 },
3483                 .klen   = 28,
3484                 .iv     = { 0x36, 0x73, 0x3c, 0x14, 0x7d, 0x6d, 0x93, 0xcb },
3485                 .input  = { "Single block msg" },
3486                 .ilen   = 16,
3487                 .result = { 0x4b, 0x55, 0x38, 0x4f, 0xe2, 0x59, 0xc9, 0xc8,
3488                             0x4e, 0x79, 0x35, 0xa0, 0x03, 0xcb, 0xe9, 0x28 },
3489                 .rlen   = 16,
3490         }, {
3491                 .key    = { 0x7c, 0x5c, 0xb2, 0x40, 0x1b, 0x3d, 0xc3, 0x3c,
3492                             0x19, 0xe7, 0x34, 0x08, 0x19, 0xe0, 0xf6, 0x9c,
3493                             0x67, 0x8c, 0x3d, 0xb8, 0xe6, 0xf6, 0xa9, 0x1a,
3494                             0x00, 0x96, 0xb0, 0x3b },
3495                 .klen   = 28,
3496                 .iv     = { 0x02, 0x0c, 0x6e, 0xad, 0xc2, 0xcb, 0x50, 0x0d },
3497                 .input  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
3498                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3499                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3500                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
3501                 .ilen   = 32,
3502                 .result = { 0x45, 0x32, 0x43, 0xfc, 0x60, 0x9b, 0x23, 0x32,
3503                             0x7e, 0xdf, 0xaa, 0xfa, 0x71, 0x31, 0xcd, 0x9f,
3504                             0x84, 0x90, 0x70, 0x1c, 0x5a, 0xd4, 0xa7, 0x9c,
3505                             0xfc, 0x1f, 0xe0, 0xff, 0x42, 0xf4, 0xfb, 0x00 },
3506                 .rlen   = 32,
3507         }, {
3508                 .key    = { 0x77, 0x6b, 0xef, 0xf2, 0x85, 0x1d, 0xb0, 0x6f,
3509                             0x4c, 0x8a, 0x05, 0x42, 0xc8, 0x69, 0x6f, 0x6c,
3510                             0x6a, 0x81, 0xaf, 0x1e, 0xec, 0x96, 0xb4, 0xd3,
3511                             0x7f, 0xc1, 0xd6, 0x89, 0xe6, 0xc1, 0xc1, 0x04,
3512                             0x00, 0x00, 0x00, 0x60 },
3513                 .klen   = 36,
3514                 .iv     = { 0xdb, 0x56, 0x72, 0xc9, 0x7a, 0xa8, 0xf0, 0xb2 },
3515                 .input  = { "Single block msg" },
3516                 .ilen   = 16,
3517                 .result = { 0x14, 0x5a, 0xd0, 0x1d, 0xbf, 0x82, 0x4e, 0xc7,
3518                             0x56, 0x08, 0x63, 0xdc, 0x71, 0xe3, 0xe0, 0xc0 },
3519                 .rlen   = 16,
3520         }, {
3521                 .key    = { 0xf6, 0xd6, 0x6d, 0x6b, 0xd5, 0x2d, 0x59, 0xbb,
3522                             0x07, 0x96, 0x36, 0x58, 0x79, 0xef, 0xf8, 0x86,
3523                             0xc6, 0x6d, 0xd5, 0x1a, 0x5b, 0x6a, 0x99, 0x74,
3524                             0x4b, 0x50, 0x59, 0x0c, 0x87, 0xa2, 0x38, 0x84,
3525                             0x00, 0xfa, 0xac, 0x24 },
3526                 .klen   = 36,
3527                 .iv     = { 0xc1, 0x58, 0x5e, 0xf1, 0x5a, 0x43, 0xd8, 0x75 },
3528                 .input  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
3529                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3530                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3531                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
3532                 .ilen   = 32,
3533                 .result = { 0xf0, 0x5e, 0x23, 0x1b, 0x38, 0x94, 0x61, 0x2c,
3534                             0x49, 0xee, 0x00, 0x0b, 0x80, 0x4e, 0xb2, 0xa9,
3535                             0xb8, 0x30, 0x6b, 0x50, 0x8f, 0x83, 0x9d, 0x6a,
3536                             0x55, 0x30, 0x83, 0x1d, 0x93, 0x44, 0xaf, 0x1c },
3537                 .rlen   = 32,
3538         }, {
3539         // generated using Crypto++
3540                 .key = {
3541                         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
3542                         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3543                         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3544                         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
3545                         0x00, 0x00, 0x00, 0x00,
3546                 },
3547                 .klen = 32 + 4,
3548                 .iv = {
3549                         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3550                 },
3551                 .input = {
3552                         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
3553                         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3554                         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3555                         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
3556                         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
3557                         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
3558                         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
3559                         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3560                         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3561                         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
3562                         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
3563                         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
3564                         0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
3565                         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
3566                         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
3567                         0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
3568                         0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
3569                         0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
3570                         0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
3571                         0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
3572                         0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
3573                         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
3574                         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
3575                         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
3576                         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
3577                         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
3578                         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
3579                         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
3580                         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
3581                         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
3582                         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
3583                         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
3584                         0x00, 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x12, 0x15,
3585                         0x18, 0x1b, 0x1e, 0x21, 0x24, 0x27, 0x2a, 0x2d,
3586                         0x30, 0x33, 0x36, 0x39, 0x3c, 0x3f, 0x42, 0x45,
3587                         0x48, 0x4b, 0x4e, 0x51, 0x54, 0x57, 0x5a, 0x5d,
3588                         0x60, 0x63, 0x66, 0x69, 0x6c, 0x6f, 0x72, 0x75,
3589                         0x78, 0x7b, 0x7e, 0x81, 0x84, 0x87, 0x8a, 0x8d,
3590                         0x90, 0x93, 0x96, 0x99, 0x9c, 0x9f, 0xa2, 0xa5,
3591                         0xa8, 0xab, 0xae, 0xb1, 0xb4, 0xb7, 0xba, 0xbd,
3592                         0xc0, 0xc3, 0xc6, 0xc9, 0xcc, 0xcf, 0xd2, 0xd5,
3593                         0xd8, 0xdb, 0xde, 0xe1, 0xe4, 0xe7, 0xea, 0xed,
3594                         0xf0, 0xf3, 0xf6, 0xf9, 0xfc, 0xff, 0x02, 0x05,
3595                         0x08, 0x0b, 0x0e, 0x11, 0x14, 0x17, 0x1a, 0x1d,
3596                         0x20, 0x23, 0x26, 0x29, 0x2c, 0x2f, 0x32, 0x35,
3597                         0x38, 0x3b, 0x3e, 0x41, 0x44, 0x47, 0x4a, 0x4d,
3598                         0x50, 0x53, 0x56, 0x59, 0x5c, 0x5f, 0x62, 0x65,
3599                         0x68, 0x6b, 0x6e, 0x71, 0x74, 0x77, 0x7a, 0x7d,
3600                         0x80, 0x83, 0x86, 0x89, 0x8c, 0x8f, 0x92, 0x95,
3601                         0x98, 0x9b, 0x9e, 0xa1, 0xa4, 0xa7, 0xaa, 0xad,
3602                         0xb0, 0xb3, 0xb6, 0xb9, 0xbc, 0xbf, 0xc2, 0xc5,
3603                         0xc8, 0xcb, 0xce, 0xd1, 0xd4, 0xd7, 0xda, 0xdd,
3604                         0xe0, 0xe3, 0xe6, 0xe9, 0xec, 0xef, 0xf2, 0xf5,
3605                         0xf8, 0xfb, 0xfe, 0x01, 0x04, 0x07, 0x0a, 0x0d,
3606                         0x10, 0x13, 0x16, 0x19, 0x1c, 0x1f, 0x22, 0x25,
3607                         0x28, 0x2b, 0x2e, 0x31, 0x34, 0x37, 0x3a, 0x3d,
3608                         0x40, 0x43, 0x46, 0x49, 0x4c, 0x4f, 0x52, 0x55,
3609                         0x58, 0x5b, 0x5e, 0x61, 0x64, 0x67, 0x6a, 0x6d,
3610                         0x70, 0x73, 0x76, 0x79, 0x7c, 0x7f, 0x82, 0x85,
3611                         0x88, 0x8b, 0x8e, 0x91, 0x94, 0x97, 0x9a, 0x9d,
3612                         0xa0, 0xa3, 0xa6, 0xa9, 0xac, 0xaf, 0xb2, 0xb5,
3613                         0xb8, 0xbb, 0xbe, 0xc1, 0xc4, 0xc7, 0xca, 0xcd,
3614                         0xd0, 0xd3, 0xd6, 0xd9, 0xdc, 0xdf, 0xe2, 0xe5,
3615                         0xe8, 0xeb, 0xee, 0xf1, 0xf4, 0xf7, 0xfa, 0xfd,
3616                         0x00, 0x05, 0x0a, 0x0f, 0x14, 0x19, 0x1e, 0x23,
3617                         0x28, 0x2d, 0x32, 0x37, 0x3c, 0x41, 0x46, 0x4b,
3618                         0x50, 0x55, 0x5a, 0x5f, 0x64, 0x69, 0x6e, 0x73,
3619                         0x78, 0x7d, 0x82, 0x87, 0x8c, 0x91, 0x96, 0x9b,
3620                         0xa0, 0xa5, 0xaa, 0xaf, 0xb4, 0xb9, 0xbe, 0xc3,
3621                         0xc8, 0xcd, 0xd2, 0xd7, 0xdc, 0xe1, 0xe6, 0xeb,
3622                         0xf0, 0xf5, 0xfa, 0xff, 0x04, 0x09, 0x0e, 0x13,
3623                         0x18, 0x1d, 0x22, 0x27, 0x2c, 0x31, 0x36, 0x3b,
3624                         0x40, 0x45, 0x4a, 0x4f, 0x54, 0x59, 0x5e, 0x63,
3625                         0x68, 0x6d, 0x72, 0x77, 0x7c, 0x81, 0x86, 0x8b,
3626                         0x90, 0x95, 0x9a, 0x9f, 0xa4, 0xa9, 0xae, 0xb3,
3627                         0xb8, 0xbd, 0xc2, 0xc7, 0xcc, 0xd1, 0xd6, 0xdb,
3628                         0xe0, 0xe5, 0xea, 0xef, 0xf4, 0xf9, 0xfe, 0x03,
3629                         0x08, 0x0d, 0x12, 0x17, 0x1c, 0x21, 0x26, 0x2b,
3630                         0x30, 0x35, 0x3a, 0x3f, 0x44, 0x49, 0x4e, 0x53,
3631                         0x58, 0x5d, 0x62, 0x67, 0x6c, 0x71, 0x76, 0x7b,
3632                         0x80, 0x85, 0x8a, 0x8f, 0x94, 0x99, 0x9e, 0xa3,
3633                         0xa8, 0xad, 0xb2, 0xb7, 0xbc, 0xc1, 0xc6, 0xcb,
3634                         0xd0, 0xd5, 0xda, 0xdf, 0xe4, 0xe9, 0xee, 0xf3,
3635                         0xf8, 0xfd, 0x02, 0x07, 0x0c, 0x11, 0x16, 0x1b,
3636                         0x20, 0x25, 0x2a, 0x2f, 0x34, 0x39, 0x3e, 0x43,
3637                         0x48, 0x4d, 0x52, 0x57, 0x5c, 0x61, 0x66, 0x6b,
3638                         0x70, 0x75, 0x7a, 0x7f, 0x84, 0x89, 0x8e, 0x93,
3639                         0x98, 0x9d, 0xa2, 0xa7, 0xac, 0xb1, 0xb6, 0xbb,
3640                         0xc0, 0xc5, 0xca, 0xcf, 0xd4, 0xd9, 0xde, 0xe3,
3641                         0xe8, 0xed, 0xf2, 0xf7, 0xfc, 0x01, 0x06, 0x0b,
3642                         0x10, 0x15, 0x1a, 0x1f, 0x24, 0x29, 0x2e, 0x33,
3643                         0x38, 0x3d, 0x42, 0x47, 0x4c, 0x51, 0x56, 0x5b,
3644                         0x60, 0x65, 0x6a, 0x6f, 0x74, 0x79, 0x7e, 0x83,
3645                         0x88, 0x8d, 0x92, 0x97, 0x9c, 0xa1, 0xa6, 0xab,
3646                         0xb0, 0xb5, 0xba, 0xbf, 0xc4, 0xc9, 0xce, 0xd3,
3647                         0xd8, 0xdd, 0xe2, 0xe7, 0xec, 0xf1, 0xf6, 0xfb,
3648                         0x00, 0x07, 0x0e, 0x15, 0x1c, 0x23, 0x2a, 0x31,
3649                         0x38, 0x3f, 0x46, 0x4d, 0x54, 0x5b, 0x62, 0x69,
3650                         0x70, 0x77, 0x7e, 0x85, 0x8c, 0x93, 0x9a, 0xa1,
3651                         0xa8, 0xaf, 0xb6, 0xbd, 0xc4, 0xcb, 0xd2, 0xd9,
3652                         0xe0, 0xe7, 0xee, 0xf5, 0xfc, 0x03, 0x0a, 0x11,
3653                         0x18, 0x1f, 0x26, 0x2d, 0x34, 0x3b, 0x42, 0x49,
3654                         0x50, 0x57, 0x5e, 0x65, 0x6c, 0x73, 0x7a, 0x81,
3655                         0x88, 0x8f, 0x96, 0x9d, 0xa4, 0xab, 0xb2, 0xb9,
3656                         0xc0, 0xc7, 0xce, 0xd5, 0xdc, 0xe3, 0xea, 0xf1,
3657                         0xf8, 0xff, 0x06, 0x0d, 0x14, 0x1b, 0x22, 0x29,
3658                         0x30, 0x37, 0x3e, 0x45, 0x4c, 0x53, 0x5a, 0x61,
3659                         0x68, 0x6f, 0x76, 0x7d, 0x84, 0x8b, 0x92, 0x99,
3660                         0xa0, 0xa7, 0xae, 0xb5, 0xbc, 0xc3, 0xca, 0xd1,
3661                         0xd8, 0xdf, 0xe6, 0xed, 0xf4, 0xfb, 0x02, 0x09,
3662                         0x10, 0x17, 0x1e, 0x25, 0x2c, 0x33, 0x3a, 0x41,
3663                         0x48, 0x4f, 0x56, 0x5d, 0x64, 0x6b, 0x72, 0x79,
3664                         0x80, 0x87, 0x8e, 0x95, 0x9c, 0xa3, 0xaa, 0xb1,
3665                         0xb8, 0xbf, 0xc6, 0xcd, 0xd4, 0xdb, 0xe2, 0xe9,
3666                         0xf0, 0xf7, 0xfe, 0x05, 0x0c, 0x13, 0x1a, 0x21,
3667                         0x28, 0x2f, 0x36, 0x3d, 0x44, 0x4b, 0x52, 0x59,
3668                         0x60, 0x67, 0x6e, 0x75, 0x7c, 0x83, 0x8a, 0x91,
3669                         0x98, 0x9f, 0xa6, 0xad, 0xb4, 0xbb, 0xc2, 0xc9,
3670                         0xd0, 0xd7, 0xde, 0xe5, 0xec, 0xf3, 0xfa, 0x01,
3671                         0x08, 0x0f, 0x16, 0x1d, 0x24, 0x2b, 0x32, 0x39,
3672                         0x40, 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71,
3673                         0x78, 0x7f, 0x86, 0x8d, 0x94, 0x9b, 0xa2, 0xa9,
3674                         0xb0, 0xb7, 0xbe, 0xc5, 0xcc, 0xd3, 0xda, 0xe1,
3675                         0xe8, 0xef, 0xf6, 0xfd, 0x04, 0x0b, 0x12, 0x19,
3676                         0x20, 0x27, 0x2e, 0x35, 0x3c, 0x43, 0x4a, 0x51,
3677                         0x58, 0x5f, 0x66, 0x6d, 0x74, 0x7b, 0x82, 0x89,
3678                         0x90, 0x97, 0x9e, 0xa5, 0xac, 0xb3, 0xba, 0xc1,
3679                         0xc8, 0xcf, 0xd6, 0xdd, 0xe4, 0xeb, 0xf2, 0xf9,
3680                         0x00, 0x09, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f,
3681                         0x48, 0x51, 0x5a, 0x63, 0x6c, 0x75, 0x7e, 0x87,
3682                         0x90, 0x99, 0xa2, 0xab, 0xb4, 0xbd, 0xc6, 0xcf,
3683                         0xd8, 0xe1, 0xea, 0xf3, 0xfc, 0x05, 0x0e, 0x17,
3684                         0x20, 0x29, 0x32, 0x3b, 0x44, 0x4d, 0x56, 0x5f,
3685                         0x68, 0x71, 0x7a, 0x83, 0x8c, 0x95, 0x9e, 0xa7,
3686                         0xb0, 0xb9, 0xc2, 0xcb, 0xd4, 0xdd, 0xe6, 0xef,
3687                         0xf8, 0x01, 0x0a, 0x13, 0x1c, 0x25, 0x2e, 0x37,
3688                         0x40, 0x49, 0x52, 0x5b, 0x64, 0x6d, 0x76, 0x7f,
3689                         0x88, 0x91, 0x9a, 0xa3, 0xac, 0xb5, 0xbe, 0xc7,
3690                         0xd0, 0xd9, 0xe2, 0xeb, 0xf4, 0xfd, 0x06, 0x0f,
3691                         0x18, 0x21, 0x2a, 0x33, 0x3c, 0x45, 0x4e, 0x57,
3692                         0x60, 0x69, 0x72, 0x7b, 0x84, 0x8d, 0x96, 0x9f,
3693                         0xa8, 0xb1, 0xba, 0xc3, 0xcc, 0xd5, 0xde, 0xe7,
3694                         0xf0, 0xf9, 0x02, 0x0b, 0x14, 0x1d, 0x26, 0x2f,
3695                         0x38, 0x41, 0x4a, 0x53, 0x5c, 0x65, 0x6e, 0x77,
3696                         0x80, 0x89, 0x92, 0x9b, 0xa4, 0xad, 0xb6, 0xbf,
3697                         0xc8, 0xd1, 0xda, 0xe3, 0xec, 0xf5, 0xfe, 0x07,
3698                         0x10, 0x19, 0x22, 0x2b, 0x34, 0x3d, 0x46, 0x4f,
3699                         0x58, 0x61, 0x6a, 0x73, 0x7c, 0x85, 0x8e, 0x97,
3700                         0xa0, 0xa9, 0xb2, 0xbb, 0xc4, 0xcd, 0xd6, 0xdf,
3701                         0xe8, 0xf1, 0xfa, 0x03, 0x0c, 0x15, 0x1e, 0x27,
3702                         0x30, 0x39, 0x42, 0x4b, 0x54, 0x5d, 0x66, 0x6f,
3703                         0x78, 0x81, 0x8a, 0x93, 0x9c, 0xa5, 0xae, 0xb7,
3704                         0xc0, 0xc9, 0xd2, 0xdb, 0xe4, 0xed, 0xf6, 0xff,
3705                         0x08, 0x11, 0x1a, 0x23, 0x2c, 0x35, 0x3e, 0x47,
3706                         0x50, 0x59, 0x62, 0x6b, 0x74, 0x7d, 0x86, 0x8f,
3707                         0x98, 0xa1, 0xaa, 0xb3, 0xbc, 0xc5, 0xce, 0xd7,
3708                         0xe0, 0xe9, 0xf2, 0xfb, 0x04, 0x0d, 0x16, 0x1f,
3709                         0x28, 0x31, 0x3a, 0x43, 0x4c, 0x55, 0x5e, 0x67,
3710                         0x70, 0x79, 0x82, 0x8b, 0x94, 0x9d, 0xa6, 0xaf,
3711                         0xb8, 0xc1, 0xca, 0xd3, 0xdc, 0xe5, 0xee, 0xf7,
3712                         0x00, 0x0b, 0x16, 0x21, 0x2c, 0x37, 0x42, 0x4d,
3713                         0x58, 0x63, 0x6e, 0x79, 0x84, 0x8f, 0x9a, 0xa5,
3714                         0xb0, 0xbb, 0xc6, 0xd1, 0xdc, 0xe7, 0xf2, 0xfd,
3715                         0x08, 0x13, 0x1e, 0x29, 0x34, 0x3f, 0x4a, 0x55,
3716                         0x60, 0x6b, 0x76, 0x81, 0x8c, 0x97, 0xa2, 0xad,
3717                         0xb8, 0xc3, 0xce, 0xd9, 0xe4, 0xef, 0xfa, 0x05,
3718                         0x10, 0x1b, 0x26, 0x31, 0x3c, 0x47, 0x52, 0x5d,
3719                         0x68, 0x73, 0x7e, 0x89, 0x94, 0x9f, 0xaa, 0xb5,
3720                         0xc0, 0xcb, 0xd6, 0xe1, 0xec, 0xf7, 0x02, 0x0d,
3721                         0x18, 0x23, 0x2e, 0x39, 0x44, 0x4f, 0x5a, 0x65,
3722                         0x70, 0x7b, 0x86, 0x91, 0x9c, 0xa7, 0xb2, 0xbd,
3723                         0xc8, 0xd3, 0xde, 0xe9, 0xf4, 0xff, 0x0a, 0x15,
3724                         0x20, 0x2b, 0x36, 0x41, 0x4c, 0x57, 0x62, 0x6d,
3725                         0x78, 0x83, 0x8e, 0x99, 0xa4, 0xaf, 0xba, 0xc5,
3726                         0xd0, 0xdb, 0xe6, 0xf1, 0xfc, 0x07, 0x12, 0x1d,
3727                         0x28, 0x33, 0x3e, 0x49, 0x54, 0x5f, 0x6a, 0x75,
3728                         0x80, 0x8b, 0x96, 0xa1, 0xac, 0xb7, 0xc2, 0xcd,
3729                         0xd8, 0xe3, 0xee, 0xf9, 0x04, 0x0f, 0x1a, 0x25,
3730                         0x30, 0x3b, 0x46, 0x51, 0x5c, 0x67, 0x72, 0x7d,
3731                         0x88, 0x93, 0x9e, 0xa9, 0xb4, 0xbf, 0xca, 0xd5,
3732                         0xe0, 0xeb, 0xf6, 0x01, 0x0c, 0x17, 0x22, 0x2d,
3733                         0x38, 0x43, 0x4e, 0x59, 0x64, 0x6f, 0x7a, 0x85,
3734                         0x90, 0x9b, 0xa6, 0xb1, 0xbc, 0xc7, 0xd2, 0xdd,
3735                         0xe8, 0xf3, 0xfe, 0x09, 0x14, 0x1f, 0x2a, 0x35,
3736                         0x40, 0x4b, 0x56, 0x61, 0x6c, 0x77, 0x82, 0x8d,
3737                         0x98, 0xa3, 0xae, 0xb9, 0xc4, 0xcf, 0xda, 0xe5,
3738                         0xf0, 0xfb, 0x06, 0x11, 0x1c, 0x27, 0x32, 0x3d,
3739                         0x48, 0x53, 0x5e, 0x69, 0x74, 0x7f, 0x8a, 0x95,
3740                         0xa0, 0xab, 0xb6, 0xc1, 0xcc, 0xd7, 0xe2, 0xed,
3741                         0xf8, 0x03, 0x0e, 0x19, 0x24, 0x2f, 0x3a, 0x45,
3742                         0x50, 0x5b, 0x66, 0x71, 0x7c, 0x87, 0x92, 0x9d,
3743                         0xa8, 0xb3, 0xbe, 0xc9, 0xd4, 0xdf, 0xea, 0xf5,
3744                         0x00, 0x0d, 0x1a, 0x27, 0x34, 0x41, 0x4e, 0x5b,
3745                         0x68, 0x75, 0x82, 0x8f, 0x9c, 0xa9, 0xb6, 0xc3,
3746                         0xd0, 0xdd, 0xea, 0xf7, 0x04, 0x11, 0x1e, 0x2b,
3747                         0x38, 0x45, 0x52, 0x5f, 0x6c, 0x79, 0x86, 0x93,
3748                         0xa0, 0xad, 0xba, 0xc7, 0xd4, 0xe1, 0xee, 0xfb,
3749                         0x08, 0x15, 0x22, 0x2f, 0x3c, 0x49, 0x56, 0x63,
3750                         0x70, 0x7d, 0x8a, 0x97, 0xa4, 0xb1, 0xbe, 0xcb,
3751                         0xd8, 0xe5, 0xf2, 0xff, 0x0c, 0x19, 0x26, 0x33,
3752                         0x40, 0x4d, 0x5a, 0x67, 0x74, 0x81, 0x8e, 0x9b,
3753                         0xa8, 0xb5, 0xc2, 0xcf, 0xdc, 0xe9, 0xf6, 0x03,
3754                         0x10, 0x1d, 0x2a, 0x37, 0x44, 0x51, 0x5e, 0x6b,
3755                         0x78, 0x85, 0x92, 0x9f, 0xac, 0xb9, 0xc6, 0xd3,
3756                         0xe0, 0xed, 0xfa, 0x07, 0x14, 0x21, 0x2e, 0x3b,
3757                         0x48, 0x55, 0x62, 0x6f, 0x7c, 0x89, 0x96, 0xa3,
3758                         0xb0, 0xbd, 0xca, 0xd7, 0xe4, 0xf1, 0xfe, 0x0b,
3759                         0x18, 0x25, 0x32, 0x3f, 0x4c, 0x59, 0x66, 0x73,
3760                         0x80, 0x8d, 0x9a, 0xa7, 0xb4, 0xc1, 0xce, 0xdb,
3761                         0xe8, 0xf5, 0x02, 0x0f, 0x1c, 0x29, 0x36, 0x43,
3762                         0x50, 0x5d, 0x6a, 0x77, 0x84, 0x91, 0x9e, 0xab,
3763                         0xb8, 0xc5, 0xd2, 0xdf, 0xec, 0xf9, 0x06, 0x13,
3764                         0x20, 0x2d, 0x3a, 0x47, 0x54, 0x61, 0x6e, 0x7b,
3765                         0x88, 0x95, 0xa2, 0xaf, 0xbc, 0xc9, 0xd6, 0xe3,
3766                         0xf0, 0xfd, 0x0a, 0x17, 0x24, 0x31, 0x3e, 0x4b,
3767                         0x58, 0x65, 0x72, 0x7f, 0x8c, 0x99, 0xa6, 0xb3,
3768                         0xc0, 0xcd, 0xda, 0xe7, 0xf4, 0x01, 0x0e, 0x1b,
3769                         0x28, 0x35, 0x42, 0x4f, 0x5c, 0x69, 0x76, 0x83,
3770                         0x90, 0x9d, 0xaa, 0xb7, 0xc4, 0xd1, 0xde, 0xeb,
3771                         0xf8, 0x05, 0x12, 0x1f, 0x2c, 0x39, 0x46, 0x53,
3772                         0x60, 0x6d, 0x7a, 0x87, 0x94, 0xa1, 0xae, 0xbb,
3773                         0xc8, 0xd5, 0xe2, 0xef, 0xfc, 0x09, 0x16, 0x23,
3774                         0x30, 0x3d, 0x4a, 0x57, 0x64, 0x71, 0x7e, 0x8b,
3775                         0x98, 0xa5, 0xb2, 0xbf, 0xcc, 0xd9, 0xe6, 0xf3,
3776                         0x00, 0x0f, 0x1e, 0x2d, 0x3c, 0x4b, 0x5a, 0x69,
3777                         0x78, 0x87, 0x96, 0xa5, 0xb4, 0xc3, 0xd2, 0xe1,
3778                         0xf0, 0xff, 0x0e, 0x1d, 0x2c, 0x3b, 0x4a, 0x59,
3779                         0x68, 0x77, 0x86, 0x95, 0xa4, 0xb3, 0xc2, 0xd1,
3780                         0xe0, 0xef, 0xfe, 0x0d, 0x1c, 0x2b, 0x3a, 0x49,
3781                         0x58, 0x67, 0x76, 0x85, 0x94, 0xa3, 0xb2, 0xc1,
3782                         0xd0, 0xdf, 0xee, 0xfd, 0x0c, 0x1b, 0x2a, 0x39,
3783                         0x48, 0x57, 0x66, 0x75, 0x84, 0x93, 0xa2, 0xb1,
3784                         0xc0, 0xcf, 0xde, 0xed, 0xfc, 0x0b, 0x1a, 0x29,
3785                         0x38, 0x47, 0x56, 0x65, 0x74, 0x83, 0x92, 0xa1,
3786                         0xb0, 0xbf, 0xce, 0xdd, 0xec, 0xfb, 0x0a, 0x19,
3787                         0x28, 0x37, 0x46, 0x55, 0x64, 0x73, 0x82, 0x91,
3788                         0xa0, 0xaf, 0xbe, 0xcd, 0xdc, 0xeb, 0xfa, 0x09,
3789                         0x18, 0x27, 0x36, 0x45, 0x54, 0x63, 0x72, 0x81,
3790                         0x90, 0x9f, 0xae, 0xbd, 0xcc, 0xdb, 0xea, 0xf9,
3791                         0x08, 0x17, 0x26, 0x35, 0x44, 0x53, 0x62, 0x71,
3792                         0x80, 0x8f, 0x9e, 0xad, 0xbc, 0xcb, 0xda, 0xe9,
3793                         0xf8, 0x07, 0x16, 0x25, 0x34, 0x43, 0x52, 0x61,
3794                         0x70, 0x7f, 0x8e, 0x9d, 0xac, 0xbb, 0xca, 0xd9,
3795                         0xe8, 0xf7, 0x06, 0x15, 0x24, 0x33, 0x42, 0x51,
3796                         0x60, 0x6f, 0x7e, 0x8d, 0x9c, 0xab, 0xba, 0xc9,
3797                         0xd8, 0xe7, 0xf6, 0x05, 0x14, 0x23, 0x32, 0x41,
3798                         0x50, 0x5f, 0x6e, 0x7d, 0x8c, 0x9b, 0xaa, 0xb9,
3799                         0xc8, 0xd7, 0xe6, 0xf5, 0x04, 0x13, 0x22, 0x31,
3800                         0x40, 0x4f, 0x5e, 0x6d, 0x7c, 0x8b, 0x9a, 0xa9,
3801                         0xb8, 0xc7, 0xd6, 0xe5, 0xf4, 0x03, 0x12, 0x21,
3802                         0x30, 0x3f, 0x4e, 0x5d, 0x6c, 0x7b, 0x8a, 0x99,
3803                         0xa8, 0xb7, 0xc6, 0xd5, 0xe4, 0xf3, 0x02, 0x11,
3804                         0x20, 0x2f, 0x3e, 0x4d, 0x5c, 0x6b, 0x7a, 0x89,
3805                         0x98, 0xa7, 0xb6, 0xc5, 0xd4, 0xe3, 0xf2, 0x01,
3806                         0x10, 0x1f, 0x2e, 0x3d, 0x4c, 0x5b, 0x6a, 0x79,
3807                         0x88, 0x97, 0xa6, 0xb5, 0xc4, 0xd3, 0xe2, 0xf1,
3808                         0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
3809                         0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
3810                         0x10, 0x21, 0x32, 0x43, 0x54, 0x65, 0x76, 0x87,
3811                         0x98, 0xa9, 0xba, 0xcb, 0xdc, 0xed, 0xfe, 0x0f,
3812                         0x20, 0x31, 0x42, 0x53, 0x64, 0x75, 0x86, 0x97,
3813                         0xa8, 0xb9, 0xca, 0xdb, 0xec, 0xfd, 0x0e, 0x1f,
3814                         0x30, 0x41, 0x52, 0x63, 0x74, 0x85, 0x96, 0xa7,
3815                         0xb8, 0xc9, 0xda, 0xeb, 0xfc, 0x0d, 0x1e, 0x2f,
3816                         0x40, 0x51, 0x62, 0x73, 0x84, 0x95, 0xa6, 0xb7,
3817                         0xc8, 0xd9, 0xea, 0xfb, 0x0c, 0x1d, 0x2e, 0x3f,
3818                         0x50, 0x61, 0x72, 0x83, 0x94, 0xa5, 0xb6, 0xc7,
3819                         0xd8, 0xe9, 0xfa, 0x0b, 0x1c, 0x2d, 0x3e, 0x4f,
3820                         0x60, 0x71, 0x82, 0x93, 0xa4, 0xb5, 0xc6, 0xd7,
3821                         0xe8, 0xf9, 0x0a, 0x1b, 0x2c, 0x3d, 0x4e, 0x5f,
3822                         0x70, 0x81, 0x92, 0xa3, 0xb4, 0xc5, 0xd6, 0xe7,
3823                         0xf8, 0x09, 0x1a, 0x2b, 0x3c, 0x4d, 0x5e, 0x6f,
3824                         0x80, 0x91, 0xa2, 0xb3, 0xc4, 0xd5, 0xe6, 0xf7,
3825                         0x08, 0x19, 0x2a, 0x3b, 0x4c, 0x5d, 0x6e, 0x7f,
3826                         0x90, 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf6, 0x07,
3827                         0x18, 0x29, 0x3a, 0x4b, 0x5c, 0x6d, 0x7e, 0x8f,
3828                         0xa0, 0xb1, 0xc2, 0xd3, 0xe4, 0xf5, 0x06, 0x17,
3829                         0x28, 0x39, 0x4a, 0x5b, 0x6c, 0x7d, 0x8e, 0x9f,
3830                         0xb0, 0xc1, 0xd2, 0xe3, 0xf4, 0x05, 0x16, 0x27,
3831                         0x38, 0x49, 0x5a, 0x6b, 0x7c, 0x8d, 0x9e, 0xaf,
3832                         0xc0, 0xd1, 0xe2, 0xf3, 0x04, 0x15, 0x26, 0x37,
3833                         0x48, 0x59, 0x6a, 0x7b, 0x8c, 0x9d, 0xae, 0xbf,
3834                         0xd0, 0xe1, 0xf2, 0x03, 0x14, 0x25, 0x36, 0x47,
3835                         0x58, 0x69, 0x7a, 0x8b, 0x9c, 0xad, 0xbe, 0xcf,
3836                         0xe0, 0xf1, 0x02, 0x13, 0x24, 0x35, 0x46, 0x57,
3837                         0x68, 0x79, 0x8a, 0x9b, 0xac, 0xbd, 0xce, 0xdf,
3838                         0xf0, 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67,
3839                         0x78, 0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef,
3840                         0x00, 0x13, 0x26, 0x39, 0x4c, 0x5f, 0x72, 0x85,
3841                         0x98, 0xab, 0xbe, 0xd1, 0xe4, 0xf7, 0x0a, 0x1d,
3842                         0x30, 0x43, 0x56, 0x69, 0x7c, 0x8f, 0xa2, 0xb5,
3843                         0xc8, 0xdb, 0xee, 0x01, 0x14, 0x27, 0x3a, 0x4d,
3844                         0x60, 0x73, 0x86, 0x99, 0xac, 0xbf, 0xd2, 0xe5,
3845                         0xf8, 0x0b, 0x1e, 0x31, 0x44, 0x57, 0x6a, 0x7d,
3846                         0x90, 0xa3, 0xb6, 0xc9, 0xdc, 0xef, 0x02, 0x15,
3847                         0x28, 0x3b, 0x4e, 0x61, 0x74, 0x87, 0x9a, 0xad,
3848                         0xc0, 0xd3, 0xe6, 0xf9, 0x0c, 0x1f, 0x32, 0x45,
3849                         0x58, 0x6b, 0x7e, 0x91, 0xa4, 0xb7, 0xca, 0xdd,
3850                         0xf0, 0x03, 0x16, 0x29, 0x3c, 0x4f, 0x62, 0x75,
3851                         0x88, 0x9b, 0xae, 0xc1, 0xd4, 0xe7, 0xfa, 0x0d,
3852                         0x20, 0x33, 0x46, 0x59, 0x6c, 0x7f, 0x92, 0xa5,
3853                         0xb8, 0xcb, 0xde, 0xf1, 0x04, 0x17, 0x2a, 0x3d,
3854                         0x50, 0x63, 0x76, 0x89, 0x9c, 0xaf, 0xc2, 0xd5,
3855                         0xe8, 0xfb, 0x0e, 0x21, 0x34, 0x47, 0x5a, 0x6d,
3856                         0x80, 0x93, 0xa6, 0xb9, 0xcc, 0xdf, 0xf2, 0x05,
3857                         0x18, 0x2b, 0x3e, 0x51, 0x64, 0x77, 0x8a, 0x9d,
3858                         0xb0, 0xc3, 0xd6, 0xe9, 0xfc, 0x0f, 0x22, 0x35,
3859                         0x48, 0x5b, 0x6e, 0x81, 0x94, 0xa7, 0xba, 0xcd,
3860                         0xe0, 0xf3, 0x06, 0x19, 0x2c, 0x3f, 0x52, 0x65,
3861                         0x78, 0x8b, 0x9e, 0xb1, 0xc4, 0xd7, 0xea, 0xfd,
3862                         0x10, 0x23, 0x36, 0x49, 0x5c, 0x6f, 0x82, 0x95,
3863                         0xa8, 0xbb, 0xce, 0xe1, 0xf4, 0x07, 0x1a, 0x2d,
3864                         0x40, 0x53, 0x66, 0x79, 0x8c, 0x9f, 0xb2, 0xc5,
3865                         0xd8, 0xeb, 0xfe, 0x11, 0x24, 0x37, 0x4a, 0x5d,
3866                         0x70, 0x83, 0x96, 0xa9, 0xbc, 0xcf, 0xe2, 0xf5,
3867                         0x08, 0x1b, 0x2e, 0x41, 0x54, 0x67, 0x7a, 0x8d,
3868                         0xa0, 0xb3, 0xc6, 0xd9, 0xec, 0xff, 0x12, 0x25,
3869                         0x38, 0x4b, 0x5e, 0x71, 0x84, 0x97, 0xaa, 0xbd,
3870                         0xd0, 0xe3, 0xf6, 0x09, 0x1c, 0x2f, 0x42, 0x55,
3871                         0x68, 0x7b, 0x8e, 0xa1, 0xb4, 0xc7, 0xda, 0xed,
3872                         0x00, 0x15, 0x2a, 0x3f, 0x54, 0x69, 0x7e, 0x93,
3873                         0xa8, 0xbd, 0xd2, 0xe7, 0xfc, 0x11, 0x26, 0x3b,
3874                         0x50, 0x65, 0x7a, 0x8f, 0xa4, 0xb9, 0xce, 0xe3,
3875                         0xf8, 0x0d, 0x22, 0x37, 0x4c, 0x61, 0x76, 0x8b,
3876                         0xa0, 0xb5, 0xca, 0xdf, 0xf4, 0x09, 0x1e, 0x33,
3877                         0x48, 0x5d, 0x72, 0x87, 0x9c, 0xb1, 0xc6, 0xdb,
3878                         0xf0, 0x05, 0x1a, 0x2f, 0x44, 0x59, 0x6e, 0x83,
3879                         0x98, 0xad, 0xc2, 0xd7, 0xec, 0x01, 0x16, 0x2b,
3880                         0x40, 0x55, 0x6a, 0x7f, 0x94, 0xa9, 0xbe, 0xd3,
3881                         0xe8, 0xfd, 0x12, 0x27, 0x3c, 0x51, 0x66, 0x7b,
3882                         0x90, 0xa5, 0xba, 0xcf, 0xe4, 0xf9, 0x0e, 0x23,
3883                         0x38, 0x4d, 0x62, 0x77, 0x8c, 0xa1, 0xb6, 0xcb,
3884                         0xe0, 0xf5, 0x0a, 0x1f, 0x34, 0x49, 0x5e, 0x73,
3885                         0x88, 0x9d, 0xb2, 0xc7, 0xdc, 0xf1, 0x06, 0x1b,
3886                         0x30, 0x45, 0x5a, 0x6f, 0x84, 0x99, 0xae, 0xc3,
3887                         0xd8, 0xed, 0x02, 0x17, 0x2c, 0x41, 0x56, 0x6b,
3888                         0x80, 0x95, 0xaa, 0xbf, 0xd4, 0xe9, 0xfe, 0x13,
3889                         0x28, 0x3d, 0x52, 0x67, 0x7c, 0x91, 0xa6, 0xbb,
3890                         0xd0, 0xe5, 0xfa, 0x0f, 0x24, 0x39, 0x4e, 0x63,
3891                         0x78, 0x8d, 0xa2, 0xb7, 0xcc, 0xe1, 0xf6, 0x0b,
3892                         0x20, 0x35, 0x4a, 0x5f, 0x74, 0x89, 0x9e, 0xb3,
3893                         0xc8, 0xdd, 0xf2, 0x07, 0x1c, 0x31, 0x46, 0x5b,
3894                         0x70, 0x85, 0x9a, 0xaf, 0xc4, 0xd9, 0xee, 0x03,
3895                         0x18, 0x2d, 0x42, 0x57, 0x6c, 0x81, 0x96, 0xab,
3896                         0xc0, 0xd5, 0xea, 0xff, 0x14, 0x29, 0x3e, 0x53,
3897                         0x68, 0x7d, 0x92, 0xa7, 0xbc, 0xd1, 0xe6, 0xfb,
3898                         0x10, 0x25, 0x3a, 0x4f, 0x64, 0x79, 0x8e, 0xa3,
3899                         0xb8, 0xcd, 0xe2, 0xf7, 0x0c, 0x21, 0x36, 0x4b,
3900                         0x60, 0x75, 0x8a, 0x9f, 0xb4, 0xc9, 0xde, 0xf3,
3901                         0x08, 0x1d, 0x32, 0x47, 0x5c, 0x71, 0x86, 0x9b,
3902                         0xb0, 0xc5, 0xda, 0xef, 0x04, 0x19, 0x2e, 0x43,
3903                         0x58, 0x6d, 0x82, 0x97, 0xac, 0xc1, 0xd6, 0xeb,
3904                         0x00, 0x17, 0x2e, 0x45, 0x5c, 0x73, 0x8a, 0xa1,
3905                         0xb8, 0xcf, 0xe6, 0xfd, 0x14, 0x2b, 0x42, 0x59,
3906                         0x70, 0x87, 0x9e, 0xb5, 0xcc, 0xe3, 0xfa, 0x11,
3907                         0x28, 0x3f, 0x56, 0x6d, 0x84, 0x9b, 0xb2, 0xc9,
3908                         0xe0, 0xf7, 0x0e, 0x25, 0x3c, 0x53, 0x6a, 0x81,
3909                         0x98, 0xaf, 0xc6, 0xdd, 0xf4, 0x0b, 0x22, 0x39,
3910                         0x50, 0x67, 0x7e, 0x95, 0xac, 0xc3, 0xda, 0xf1,
3911                         0x08, 0x1f, 0x36, 0x4d, 0x64, 0x7b, 0x92, 0xa9,
3912                         0xc0, 0xd7, 0xee, 0x05, 0x1c, 0x33, 0x4a, 0x61,
3913                         0x78, 0x8f, 0xa6, 0xbd, 0xd4, 0xeb, 0x02, 0x19,
3914                         0x30, 0x47, 0x5e, 0x75, 0x8c, 0xa3, 0xba, 0xd1,
3915                         0xe8, 0xff, 0x16, 0x2d, 0x44, 0x5b, 0x72, 0x89,
3916                         0xa0, 0xb7, 0xce, 0xe5, 0xfc, 0x13, 0x2a, 0x41,
3917                         0x58, 0x6f, 0x86, 0x9d, 0xb4, 0xcb, 0xe2, 0xf9,
3918                         0x10, 0x27, 0x3e, 0x55, 0x6c, 0x83, 0x9a, 0xb1,
3919                         0xc8, 0xdf, 0xf6, 0x0d, 0x24, 0x3b, 0x52, 0x69,
3920                         0x80, 0x97, 0xae, 0xc5, 0xdc, 0xf3, 0x0a, 0x21,
3921                         0x38, 0x4f, 0x66, 0x7d, 0x94, 0xab, 0xc2, 0xd9,
3922                         0xf0, 0x07, 0x1e, 0x35, 0x4c, 0x63, 0x7a, 0x91,
3923                         0xa8, 0xbf, 0xd6, 0xed, 0x04, 0x1b, 0x32, 0x49,
3924                         0x60, 0x77, 0x8e, 0xa5, 0xbc, 0xd3, 0xea, 0x01,
3925                         0x18, 0x2f, 0x46, 0x5d, 0x74, 0x8b, 0xa2, 0xb9,
3926                         0xd0, 0xe7, 0xfe, 0x15, 0x2c, 0x43, 0x5a, 0x71,
3927                         0x88, 0x9f, 0xb6, 0xcd, 0xe4, 0xfb, 0x12, 0x29,
3928                         0x40, 0x57, 0x6e, 0x85, 0x9c, 0xb3, 0xca, 0xe1,
3929                         0xf8, 0x0f, 0x26, 0x3d, 0x54, 0x6b, 0x82, 0x99,
3930                         0xb0, 0xc7, 0xde, 0xf5, 0x0c, 0x23, 0x3a, 0x51,
3931                         0x68, 0x7f, 0x96, 0xad, 0xc4, 0xdb, 0xf2, 0x09,
3932                         0x20, 0x37, 0x4e, 0x65, 0x7c, 0x93, 0xaa, 0xc1,
3933                         0xd8, 0xef, 0x06, 0x1d, 0x34, 0x4b, 0x62, 0x79,
3934                         0x90, 0xa7, 0xbe, 0xd5, 0xec, 0x03, 0x1a, 0x31,
3935                         0x48, 0x5f, 0x76, 0x8d, 0xa4, 0xbb, 0xd2, 0xe9,
3936                         0x00, 0x19, 0x32, 0x4b, 0x64, 0x7d, 0x96, 0xaf,
3937                         0xc8, 0xe1, 0xfa, 0x13, 0x2c, 0x45, 0x5e, 0x77,
3938                         0x90, 0xa9, 0xc2, 0xdb, 0xf4, 0x0d, 0x26, 0x3f,
3939                         0x58, 0x71, 0x8a, 0xa3, 0xbc, 0xd5, 0xee, 0x07,
3940                         0x20, 0x39, 0x52, 0x6b, 0x84, 0x9d, 0xb6, 0xcf,
3941                         0xe8, 0x01, 0x1a, 0x33, 0x4c, 0x65, 0x7e, 0x97,
3942                         0xb0, 0xc9, 0xe2, 0xfb, 0x14, 0x2d, 0x46, 0x5f,
3943                         0x78, 0x91, 0xaa, 0xc3, 0xdc, 0xf5, 0x0e, 0x27,
3944                         0x40, 0x59, 0x72, 0x8b, 0xa4, 0xbd, 0xd6, 0xef,
3945                         0x08, 0x21, 0x3a, 0x53, 0x6c, 0x85, 0x9e, 0xb7,
3946                         0xd0, 0xe9, 0x02, 0x1b, 0x34, 0x4d, 0x66, 0x7f,
3947                         0x98, 0xb1, 0xca, 0xe3, 0xfc, 0x15, 0x2e, 0x47,
3948                         0x60, 0x79, 0x92, 0xab, 0xc4, 0xdd, 0xf6, 0x0f,
3949                         0x28, 0x41, 0x5a, 0x73, 0x8c, 0xa5, 0xbe, 0xd7,
3950                         0xf0, 0x09, 0x22, 0x3b, 0x54, 0x6d, 0x86, 0x9f,
3951                         0xb8, 0xd1, 0xea, 0x03, 0x1c, 0x35, 0x4e, 0x67,
3952                         0x80, 0x99, 0xb2, 0xcb, 0xe4, 0xfd, 0x16, 0x2f,
3953                         0x48, 0x61, 0x7a, 0x93, 0xac, 0xc5, 0xde, 0xf7,
3954                         0x10, 0x29, 0x42, 0x5b, 0x74, 0x8d, 0xa6, 0xbf,
3955                         0xd8, 0xf1, 0x0a, 0x23, 0x3c, 0x55, 0x6e, 0x87,
3956                         0xa0, 0xb9, 0xd2, 0xeb, 0x04, 0x1d, 0x36, 0x4f,
3957                         0x68, 0x81, 0x9a, 0xb3, 0xcc, 0xe5, 0xfe, 0x17,
3958                         0x30, 0x49, 0x62, 0x7b, 0x94, 0xad, 0xc6, 0xdf,
3959                         0xf8, 0x11, 0x2a, 0x43, 0x5c, 0x75, 0x8e, 0xa7,
3960                         0xc0, 0xd9, 0xf2, 0x0b, 0x24, 0x3d, 0x56, 0x6f,
3961                         0x88, 0xa1, 0xba, 0xd3, 0xec, 0x05, 0x1e, 0x37,
3962                         0x50, 0x69, 0x82, 0x9b, 0xb4, 0xcd, 0xe6, 0xff,
3963                         0x18, 0x31, 0x4a, 0x63, 0x7c, 0x95, 0xae, 0xc7,
3964                         0xe0, 0xf9, 0x12, 0x2b, 0x44, 0x5d, 0x76, 0x8f,
3965                         0xa8, 0xc1, 0xda, 0xf3, 0x0c, 0x25, 0x3e, 0x57,
3966                         0x70, 0x89, 0xa2, 0xbb, 0xd4, 0xed, 0x06, 0x1f,
3967                         0x38, 0x51, 0x6a, 0x83, 0x9c, 0xb5, 0xce, 0xe7,
3968                         0x00, 0x1b, 0x36, 0x51, 0x6c, 0x87, 0xa2, 0xbd,
3969                         0xd8, 0xf3, 0x0e, 0x29, 0x44, 0x5f, 0x7a, 0x95,
3970                         0xb0, 0xcb, 0xe6, 0x01, 0x1c, 0x37, 0x52, 0x6d,
3971                         0x88, 0xa3, 0xbe, 0xd9, 0xf4, 0x0f, 0x2a, 0x45,
3972                         0x60, 0x7b, 0x96, 0xb1, 0xcc, 0xe7, 0x02, 0x1d,
3973                         0x38, 0x53, 0x6e, 0x89, 0xa4, 0xbf, 0xda, 0xf5,
3974                         0x10, 0x2b, 0x46, 0x61, 0x7c, 0x97, 0xb2, 0xcd,
3975                         0xe8, 0x03, 0x1e, 0x39, 0x54, 0x6f, 0x8a, 0xa5,
3976                         0xc0, 0xdb, 0xf6, 0x11, 0x2c, 0x47, 0x62, 0x7d,
3977                         0x98, 0xb3, 0xce, 0xe9, 0x04, 0x1f, 0x3a, 0x55,
3978                         0x70, 0x8b, 0xa6, 0xc1, 0xdc, 0xf7, 0x12, 0x2d,
3979                         0x48, 0x63, 0x7e, 0x99, 0xb4, 0xcf, 0xea, 0x05,
3980                         0x20, 0x3b, 0x56, 0x71, 0x8c, 0xa7, 0xc2, 0xdd,
3981                         0xf8, 0x13, 0x2e, 0x49, 0x64, 0x7f, 0x9a, 0xb5,
3982                         0xd0, 0xeb, 0x06, 0x21, 0x3c, 0x57, 0x72, 0x8d,
3983                         0xa8, 0xc3, 0xde, 0xf9, 0x14, 0x2f, 0x4a, 0x65,
3984                         0x80, 0x9b, 0xb6, 0xd1, 0xec, 0x07, 0x22, 0x3d,
3985                         0x58, 0x73, 0x8e, 0xa9, 0xc4, 0xdf, 0xfa, 0x15,
3986                         0x30, 0x4b, 0x66, 0x81, 0x9c, 0xb7, 0xd2, 0xed,
3987                         0x08, 0x23, 0x3e, 0x59, 0x74, 0x8f, 0xaa, 0xc5,
3988                         0xe0, 0xfb, 0x16, 0x31, 0x4c, 0x67, 0x82, 0x9d,
3989                         0xb8, 0xd3, 0xee, 0x09, 0x24, 0x3f, 0x5a, 0x75,
3990                         0x90, 0xab, 0xc6, 0xe1, 0xfc, 0x17, 0x32, 0x4d,
3991                         0x68, 0x83, 0x9e, 0xb9, 0xd4, 0xef, 0x0a, 0x25,
3992                         0x40, 0x5b, 0x76, 0x91, 0xac, 0xc7, 0xe2, 0xfd,
3993                         0x18, 0x33, 0x4e, 0x69, 0x84, 0x9f, 0xba, 0xd5,
3994                         0xf0, 0x0b, 0x26, 0x41, 0x5c, 0x77, 0x92, 0xad,
3995                         0xc8, 0xe3, 0xfe, 0x19, 0x34, 0x4f, 0x6a, 0x85,
3996                         0xa0, 0xbb, 0xd6, 0xf1, 0x0c, 0x27, 0x42, 0x5d,
3997                         0x78, 0x93, 0xae, 0xc9, 0xe4, 0xff, 0x1a, 0x35,
3998                         0x50, 0x6b, 0x86, 0xa1, 0xbc, 0xd7, 0xf2, 0x0d,
3999                         0x28, 0x43, 0x5e, 0x79, 0x94, 0xaf, 0xca, 0xe5,
4000                         0x00, 0x1d, 0x3a, 0x57, 0x74, 0x91, 0xae, 0xcb,
4001                         0xe8, 0x05, 0x22, 0x3f, 0x5c, 0x79, 0x96, 0xb3,
4002                         0xd0, 0xed, 0x0a, 0x27, 0x44, 0x61, 0x7e, 0x9b,
4003                         0xb8, 0xd5, 0xf2, 0x0f, 0x2c, 0x49, 0x66, 0x83,
4004                         0xa0, 0xbd, 0xda, 0xf7, 0x14, 0x31, 0x4e, 0x6b,
4005                         0x88, 0xa5, 0xc2, 0xdf, 0xfc, 0x19, 0x36, 0x53,
4006                         0x70, 0x8d, 0xaa, 0xc7, 0xe4, 0x01, 0x1e, 0x3b,
4007                         0x58, 0x75, 0x92, 0xaf, 0xcc, 0xe9, 0x06, 0x23,
4008                         0x40, 0x5d, 0x7a, 0x97, 0xb4, 0xd1, 0xee, 0x0b,
4009                         0x28, 0x45, 0x62, 0x7f, 0x9c, 0xb9, 0xd6, 0xf3,
4010                         0x10, 0x2d, 0x4a, 0x67, 0x84, 0xa1, 0xbe, 0xdb,
4011                         0xf8, 0x15, 0x32, 0x4f, 0x6c, 0x89, 0xa6, 0xc3,
4012                         0xe0, 0xfd, 0x1a, 0x37, 0x54, 0x71, 0x8e, 0xab,
4013                         0xc8, 0xe5, 0x02, 0x1f, 0x3c, 0x59, 0x76, 0x93,
4014                         0xb0, 0xcd, 0xea, 0x07, 0x24, 0x41, 0x5e, 0x7b,
4015                         0x98, 0xb5, 0xd2, 0xef, 0x0c, 0x29, 0x46, 0x63,
4016                         0x80, 0x9d, 0xba, 0xd7, 0xf4, 0x11, 0x2e, 0x4b,
4017                         0x68, 0x85, 0xa2, 0xbf, 0xdc, 0xf9, 0x16, 0x33,
4018                         0x50, 0x6d, 0x8a, 0xa7, 0xc4, 0xe1, 0xfe, 0x1b,
4019                         0x38, 0x55, 0x72, 0x8f, 0xac, 0xc9, 0xe6, 0x03,
4020                         0x20, 0x3d, 0x5a, 0x77, 0x94, 0xb1, 0xce, 0xeb,
4021                         0x08, 0x25, 0x42, 0x5f, 0x7c, 0x99, 0xb6, 0xd3,
4022                         0xf0, 0x0d, 0x2a, 0x47, 0x64, 0x81, 0x9e, 0xbb,
4023                         0xd8, 0xf5, 0x12, 0x2f, 0x4c, 0x69, 0x86, 0xa3,
4024                         0xc0, 0xdd, 0xfa, 0x17, 0x34, 0x51, 0x6e, 0x8b,
4025                         0xa8, 0xc5, 0xe2, 0xff, 0x1c, 0x39, 0x56, 0x73,
4026                         0x90, 0xad, 0xca, 0xe7, 0x04, 0x21, 0x3e, 0x5b,
4027                         0x78, 0x95, 0xb2, 0xcf, 0xec, 0x09, 0x26, 0x43,
4028                         0x60, 0x7d, 0x9a, 0xb7, 0xd4, 0xf1, 0x0e, 0x2b,
4029                         0x48, 0x65, 0x82, 0x9f, 0xbc, 0xd9, 0xf6, 0x13,
4030                         0x30, 0x4d, 0x6a, 0x87, 0xa4, 0xc1, 0xde, 0xfb,
4031                         0x18, 0x35, 0x52, 0x6f, 0x8c, 0xa9, 0xc6, 0xe3,
4032                         0x00, 0x1f, 0x3e, 0x5d, 0x7c, 0x9b, 0xba, 0xd9,
4033                         0xf8, 0x17, 0x36, 0x55, 0x74, 0x93, 0xb2, 0xd1,
4034                         0xf0, 0x0f, 0x2e, 0x4d, 0x6c, 0x8b, 0xaa, 0xc9,
4035                         0xe8, 0x07, 0x26, 0x45, 0x64, 0x83, 0xa2, 0xc1,
4036                         0xe0, 0xff, 0x1e, 0x3d, 0x5c, 0x7b, 0x9a, 0xb9,
4037                         0xd8, 0xf7, 0x16, 0x35, 0x54, 0x73, 0x92, 0xb1,
4038                         0xd0, 0xef, 0x0e, 0x2d, 0x4c, 0x6b, 0x8a, 0xa9,
4039                         0xc8, 0xe7, 0x06, 0x25, 0x44, 0x63, 0x82, 0xa1,
4040                         0xc0, 0xdf, 0xfe, 0x1d, 0x3c, 0x5b, 0x7a, 0x99,
4041                         0xb8, 0xd7, 0xf6, 0x15, 0x34, 0x53, 0x72, 0x91,
4042                         0xb0, 0xcf, 0xee, 0x0d, 0x2c, 0x4b, 0x6a, 0x89,
4043                         0xa8, 0xc7, 0xe6, 0x05, 0x24, 0x43, 0x62, 0x81,
4044                         0xa0, 0xbf, 0xde, 0xfd, 0x1c, 0x3b, 0x5a, 0x79,
4045                         0x98, 0xb7, 0xd6, 0xf5, 0x14, 0x33, 0x52, 0x71,
4046                         0x90, 0xaf, 0xce, 0xed, 0x0c, 0x2b, 0x4a, 0x69,
4047                         0x88, 0xa7, 0xc6, 0xe5, 0x04, 0x23, 0x42, 0x61,
4048                         0x80, 0x9f, 0xbe, 0xdd, 0xfc, 0x1b, 0x3a, 0x59,
4049                         0x78, 0x97, 0xb6, 0xd5, 0xf4, 0x13, 0x32, 0x51,
4050                         0x70, 0x8f, 0xae, 0xcd, 0xec, 0x0b, 0x2a, 0x49,
4051                         0x68, 0x87, 0xa6, 0xc5, 0xe4, 0x03, 0x22, 0x41,
4052                         0x60, 0x7f, 0x9e, 0xbd, 0xdc, 0xfb, 0x1a, 0x39,
4053                         0x58, 0x77, 0x96, 0xb5, 0xd4, 0xf3, 0x12, 0x31,
4054                         0x50, 0x6f, 0x8e, 0xad, 0xcc, 0xeb, 0x0a, 0x29,
4055                         0x48, 0x67, 0x86, 0xa5, 0xc4, 0xe3, 0x02, 0x21,
4056                         0x40, 0x5f, 0x7e, 0x9d, 0xbc, 0xdb, 0xfa, 0x19,
4057                         0x38, 0x57, 0x76, 0x95, 0xb4, 0xd3, 0xf2, 0x11,
4058                         0x30, 0x4f, 0x6e, 0x8d, 0xac, 0xcb, 0xea, 0x09,
4059                         0x28, 0x47, 0x66, 0x85, 0xa4, 0xc3, 0xe2, 0x01,
4060                         0x20, 0x3f, 0x5e, 0x7d, 0x9c, 0xbb, 0xda, 0xf9,
4061                         0x18, 0x37, 0x56, 0x75, 0x94, 0xb3, 0xd2, 0xf1,
4062                         0x10, 0x2f, 0x4e, 0x6d, 0x8c, 0xab, 0xca, 0xe9,
4063                         0x08, 0x27, 0x46, 0x65, 0x84, 0xa3, 0xc2, 0xe1,
4064                         0x00, 0x21, 0x42, 0x63,
4065                 },
4066                 .ilen = 4100,
4067                 .result = {
4068                         0xf0, 0x5c, 0x74, 0xad, 0x4e, 0xbc, 0x99, 0xe2,
4069                         0xae, 0xff, 0x91, 0x3a, 0x44, 0xcf, 0x38, 0x32,
4070                         0x1e, 0xad, 0xa7, 0xcd, 0xa1, 0x39, 0x95, 0xaa,
4071                         0x10, 0xb1, 0xb3, 0x2e, 0x04, 0x31, 0x8f, 0x86,
4072                         0xf2, 0x62, 0x74, 0x70, 0x0c, 0xa4, 0x46, 0x08,
4073                         0xa8, 0xb7, 0x99, 0xa8, 0xe9, 0xd2, 0x73, 0x79,
4074                         0x7e, 0x6e, 0xd4, 0x8f, 0x1e, 0xc7, 0x8e, 0x31,
4075                         0x0b, 0xfa, 0x4b, 0xce, 0xfd, 0xf3, 0x57, 0x71,
4076                         0xe9, 0x46, 0x03, 0xa5, 0x3d, 0x34, 0x00, 0xe2,
4077                         0x18, 0xff, 0x75, 0x6d, 0x06, 0x2d, 0x00, 0xab,
4078                         0xb9, 0x3e, 0x6c, 0x59, 0xc5, 0x84, 0x06, 0xb5,
4079                         0x8b, 0xd0, 0x89, 0x9c, 0x4a, 0x79, 0x16, 0xc6,
4080                         0x3d, 0x74, 0x54, 0xfa, 0x44, 0xcd, 0x23, 0x26,
4081                         0x5c, 0xcf, 0x7e, 0x28, 0x92, 0x32, 0xbf, 0xdf,
4082                         0xa7, 0x20, 0x3c, 0x74, 0x58, 0x2a, 0x9a, 0xde,
4083                         0x61, 0x00, 0x1c, 0x4f, 0xff, 0x59, 0xc4, 0x22,
4084                         0xac, 0x3c, 0xd0, 0xe8, 0x6c, 0xf9, 0x97, 0x1b,
4085                         0x58, 0x9b, 0xad, 0x71, 0xe8, 0xa9, 0xb5, 0x0d,
4086                         0xee, 0x2f, 0x04, 0x1f, 0x7f, 0xbc, 0x99, 0xee,
4087                         0x84, 0xff, 0x42, 0x60, 0xdc, 0x3a, 0x18, 0xa5,
4088                         0x81, 0xf9, 0xef, 0xdc, 0x7a, 0x0f, 0x65, 0x41,
4089                         0x2f, 0xa3, 0xd3, 0xf9, 0xc2, 0xcb, 0xc0, 0x4d,
4090                         0x8f, 0xd3, 0x76, 0x96, 0xad, 0x49, 0x6d, 0x38,
4091                         0x3d, 0x39, 0x0b, 0x6c, 0x80, 0xb7, 0x54, 0x69,
4092                         0xf0, 0x2c, 0x90, 0x02, 0x29, 0x0d, 0x1c, 0x12,
4093                         0xad, 0x55, 0xc3, 0x8b, 0x68, 0xd9, 0xcc, 0xb3,
4094                         0xb2, 0x64, 0x33, 0x90, 0x5e, 0xca, 0x4b, 0xe2,
4095                         0xfb, 0x75, 0xdc, 0x63, 0xf7, 0x9f, 0x82, 0x74,
4096                         0xf0, 0xc9, 0xaa, 0x7f, 0xe9, 0x2a, 0x9b, 0x33,
4097                         0xbc, 0x88, 0x00, 0x7f, 0xca, 0xb2, 0x1f, 0x14,
4098                         0xdb, 0xc5, 0x8e, 0x7b, 0x11, 0x3c, 0x3e, 0x08,
4099                         0xf3, 0x83, 0xe8, 0xe0, 0x94, 0x86, 0x2e, 0x92,
4100                         0x78, 0x6b, 0x01, 0xc9, 0xc7, 0x83, 0xba, 0x21,
4101                         0x6a, 0x25, 0x15, 0x33, 0x4e, 0x45, 0x08, 0xec,
4102                         0x35, 0xdb, 0xe0, 0x6e, 0x31, 0x51, 0x79, 0xa9,
4103                         0x42, 0x44, 0x65, 0xc1, 0xa0, 0xf1, 0xf9, 0x2a,
4104                         0x70, 0xd5, 0xb6, 0xc6, 0xc1, 0x8c, 0x39, 0xfc,
4105                         0x25, 0xa6, 0x55, 0xd9, 0xdd, 0x2d, 0x4c, 0xec,
4106                         0x49, 0xc6, 0xeb, 0x0e, 0xa8, 0x25, 0x2a, 0x16,
4107                         0x1b, 0x66, 0x84, 0xda, 0xe2, 0x92, 0xe5, 0xc0,
4108                         0xc8, 0x53, 0x07, 0xaf, 0x80, 0x84, 0xec, 0xfd,
4109                         0xcd, 0xd1, 0x6e, 0xcd, 0x6f, 0x6a, 0xf5, 0x36,
4110                         0xc5, 0x15, 0xe5, 0x25, 0x7d, 0x77, 0xd1, 0x1a,
4111                         0x93, 0x36, 0xa9, 0xcf, 0x7c, 0xa4, 0x54, 0x4a,
4112                         0x06, 0x51, 0x48, 0x4e, 0xf6, 0x59, 0x87, 0xd2,
4113                         0x04, 0x02, 0xef, 0xd3, 0x44, 0xde, 0x76, 0x31,
4114                         0xb3, 0x34, 0x17, 0x1b, 0x9d, 0x66, 0x11, 0x9f,
4115                         0x1e, 0xcc, 0x17, 0xe9, 0xc7, 0x3c, 0x1b, 0xe7,
4116                         0xcb, 0x50, 0x08, 0xfc, 0xdc, 0x2b, 0x24, 0xdb,
4117                         0x65, 0x83, 0xd0, 0x3b, 0xe3, 0x30, 0xea, 0x94,
4118                         0x6c, 0xe7, 0xe8, 0x35, 0x32, 0xc7, 0xdb, 0x64,
4119                         0xb4, 0x01, 0xab, 0x36, 0x2c, 0x77, 0x13, 0xaf,
4120                         0xf8, 0x2b, 0x88, 0x3f, 0x54, 0x39, 0xc4, 0x44,
4121                         0xfe, 0xef, 0x6f, 0x68, 0x34, 0xbe, 0x0f, 0x05,
4122                         0x16, 0x6d, 0xf6, 0x0a, 0x30, 0xe7, 0xe3, 0xed,
4123                         0xc4, 0xde, 0x3c, 0x1b, 0x13, 0xd8, 0xdb, 0xfe,
4124                         0x41, 0x62, 0xe5, 0x28, 0xd4, 0x8d, 0xa3, 0xc7,
4125                         0x93, 0x97, 0xc6, 0x48, 0x45, 0x1d, 0x9f, 0x83,
4126                         0xdf, 0x4b, 0x40, 0x3e, 0x42, 0x25, 0x87, 0x80,
4127                         0x4c, 0x7d, 0xa8, 0xd4, 0x98, 0x23, 0x95, 0x75,
4128                         0x41, 0x8c, 0xda, 0x41, 0x9b, 0xd4, 0xa7, 0x06,
4129                         0xb5, 0xf1, 0x71, 0x09, 0x53, 0xbe, 0xca, 0xbf,
4130                         0x32, 0x03, 0xed, 0xf0, 0x50, 0x1c, 0x56, 0x39,
4131                         0x5b, 0xa4, 0x75, 0x18, 0xf7, 0x9b, 0x58, 0xef,
4132                         0x53, 0xfc, 0x2a, 0x38, 0x23, 0x15, 0x75, 0xcd,
4133                         0x45, 0xe5, 0x5a, 0x82, 0x55, 0xba, 0x21, 0xfa,
4134                         0xd4, 0xbd, 0xc6, 0x94, 0x7c, 0xc5, 0x80, 0x12,
4135                         0xf7, 0x4b, 0x32, 0xc4, 0x9a, 0x82, 0xd8, 0x28,
4136                         0x8f, 0xd9, 0xc2, 0x0f, 0x60, 0x03, 0xbe, 0x5e,
4137                         0x21, 0xd6, 0x5f, 0x58, 0xbf, 0x5c, 0xb1, 0x32,
4138                         0x82, 0x8d, 0xa9, 0xe5, 0xf2, 0x66, 0x1a, 0xc0,
4139                         0xa0, 0xbc, 0x58, 0x2f, 0x71, 0xf5, 0x2f, 0xed,
4140                         0xd1, 0x26, 0xb9, 0xd8, 0x49, 0x5a, 0x07, 0x19,
4141                         0x01, 0x7c, 0x59, 0xb0, 0xf8, 0xa4, 0xb7, 0xd3,
4142                         0x7b, 0x1a, 0x8c, 0x38, 0xf4, 0x50, 0xa4, 0x59,
4143                         0xb0, 0xcc, 0x41, 0x0b, 0x88, 0x7f, 0xe5, 0x31,
4144                         0xb3, 0x42, 0xba, 0xa2, 0x7e, 0xd4, 0x32, 0x71,
4145                         0x45, 0x87, 0x48, 0xa9, 0xc2, 0xf2, 0x89, 0xb3,
4146                         0xe4, 0xa7, 0x7e, 0x52, 0x15, 0x61, 0xfa, 0xfe,
4147                         0xc9, 0xdd, 0x81, 0xeb, 0x13, 0xab, 0xab, 0xc3,
4148                         0x98, 0x59, 0xd8, 0x16, 0x3d, 0x14, 0x7a, 0x1c,
4149                         0x3c, 0x41, 0x9a, 0x16, 0x16, 0x9b, 0xd2, 0xd2,
4150                         0x69, 0x3a, 0x29, 0x23, 0xac, 0x86, 0x32, 0xa5,
4151                         0x48, 0x9c, 0x9e, 0xf3, 0x47, 0x77, 0x81, 0x70,
4152                         0x24, 0xe8, 0x85, 0xd2, 0xf5, 0xb5, 0xfa, 0xff,
4153                         0x59, 0x6a, 0xd3, 0x50, 0x59, 0x43, 0x59, 0xde,
4154                         0xd9, 0xf1, 0x55, 0xa5, 0x0c, 0xc3, 0x1a, 0x1a,
4155                         0x18, 0x34, 0x0d, 0x1a, 0x63, 0x33, 0xed, 0x10,
4156                         0xe0, 0x1d, 0x2a, 0x18, 0xd2, 0xc0, 0x54, 0xa8,
4157                         0xca, 0xb5, 0x9a, 0xd3, 0xdd, 0xca, 0x45, 0x84,
4158                         0x50, 0xe7, 0x0f, 0xfe, 0xa4, 0x99, 0x5a, 0xbe,
4159                         0x43, 0x2d, 0x9a, 0xcb, 0x92, 0x3f, 0x5a, 0x1d,
4160                         0x85, 0xd8, 0xc9, 0xdf, 0x68, 0xc9, 0x12, 0x80,
4161                         0x56, 0x0c, 0xdc, 0x00, 0xdc, 0x3a, 0x7d, 0x9d,
4162                         0xa3, 0xa2, 0xe8, 0x4d, 0xbf, 0xf9, 0x70, 0xa0,
4163                         0xa4, 0x13, 0x4f, 0x6b, 0xaf, 0x0a, 0x89, 0x7f,
4164                         0xda, 0xf0, 0xbf, 0x9b, 0xc8, 0x1d, 0xe5, 0xf8,
4165                         0x2e, 0x8b, 0x07, 0xb5, 0x73, 0x1b, 0xcc, 0xa2,
4166                         0xa6, 0xad, 0x30, 0xbc, 0x78, 0x3c, 0x5b, 0x10,
4167                         0xfa, 0x5e, 0x62, 0x2d, 0x9e, 0x64, 0xb3, 0x33,
4168                         0xce, 0xf9, 0x1f, 0x86, 0xe7, 0x8b, 0xa2, 0xb8,
4169                         0xe8, 0x99, 0x57, 0x8c, 0x11, 0xed, 0x66, 0xd9,
4170                         0x3c, 0x72, 0xb9, 0xc3, 0xe6, 0x4e, 0x17, 0x3a,
4171                         0x6a, 0xcb, 0x42, 0x24, 0x06, 0xed, 0x3e, 0x4e,
4172                         0xa3, 0xe8, 0x6a, 0x94, 0xda, 0x0d, 0x4e, 0xd5,
4173                         0x14, 0x19, 0xcf, 0xb6, 0x26, 0xd8, 0x2e, 0xcc,
4174                         0x64, 0x76, 0x38, 0x49, 0x4d, 0xfe, 0x30, 0x6d,
4175                         0xe4, 0xc8, 0x8c, 0x7b, 0xc4, 0xe0, 0x35, 0xba,
4176                         0x22, 0x6e, 0x76, 0xe1, 0x1a, 0xf2, 0x53, 0xc3,
4177                         0x28, 0xa2, 0x82, 0x1f, 0x61, 0x69, 0xad, 0xc1,
4178                         0x7b, 0x28, 0x4b, 0x1e, 0x6c, 0x85, 0x95, 0x9b,
4179                         0x51, 0xb5, 0x17, 0x7f, 0x12, 0x69, 0x8c, 0x24,
4180                         0xd5, 0xc7, 0x5a, 0x5a, 0x11, 0x54, 0xff, 0x5a,
4181                         0xf7, 0x16, 0xc3, 0x91, 0xa6, 0xf0, 0xdc, 0x0a,
4182                         0xb6, 0xa7, 0x4a, 0x0d, 0x7a, 0x58, 0xfe, 0xa5,
4183                         0xf5, 0xcb, 0x8f, 0x7b, 0x0e, 0xea, 0x57, 0xe7,
4184                         0xbd, 0x79, 0xd6, 0x1c, 0x88, 0x23, 0x6c, 0xf2,
4185                         0x4d, 0x29, 0x77, 0x53, 0x35, 0x6a, 0x00, 0x8d,
4186                         0xcd, 0xa3, 0x58, 0xbe, 0x77, 0x99, 0x18, 0xf8,
4187                         0xe6, 0xe1, 0x8f, 0xe9, 0x37, 0x8f, 0xe3, 0xe2,
4188                         0x5a, 0x8a, 0x93, 0x25, 0xaf, 0xf3, 0x78, 0x80,
4189                         0xbe, 0xa6, 0x1b, 0xc6, 0xac, 0x8b, 0x1c, 0x91,
4190                         0x58, 0xe1, 0x9f, 0x89, 0x35, 0x9d, 0x1d, 0x21,
4191                         0x29, 0x9f, 0xf4, 0x99, 0x02, 0x27, 0x0f, 0xa8,
4192                         0x4f, 0x79, 0x94, 0x2b, 0x33, 0x2c, 0xda, 0xa2,
4193                         0x26, 0x39, 0x83, 0x94, 0xef, 0x27, 0xd8, 0x53,
4194                         0x8f, 0x66, 0x0d, 0xe4, 0x41, 0x7d, 0x34, 0xcd,
4195                         0x43, 0x7c, 0x95, 0x0a, 0x53, 0xef, 0x66, 0xda,
4196                         0x7e, 0x9b, 0xf3, 0x93, 0xaf, 0xd0, 0x73, 0x71,
4197                         0xba, 0x40, 0x9b, 0x74, 0xf8, 0xd7, 0xd7, 0x41,
4198                         0x6d, 0xaf, 0x72, 0x9c, 0x8d, 0x21, 0x87, 0x3c,
4199                         0xfd, 0x0a, 0x90, 0xa9, 0x47, 0x96, 0x9e, 0xd3,
4200                         0x88, 0xee, 0x73, 0xcf, 0x66, 0x2f, 0x52, 0x56,
4201                         0x6d, 0xa9, 0x80, 0x4c, 0xe2, 0x6f, 0x62, 0x88,
4202                         0x3f, 0x0e, 0x54, 0x17, 0x48, 0x80, 0x5d, 0xd3,
4203                         0xc3, 0xda, 0x25, 0x3d, 0xa1, 0xc8, 0xcb, 0x9f,
4204                         0x9b, 0x70, 0xb3, 0xa1, 0xeb, 0x04, 0x52, 0xa1,
4205                         0xf2, 0x22, 0x0f, 0xfc, 0xc8, 0x18, 0xfa, 0xf9,
4206                         0x85, 0x9c, 0xf1, 0xac, 0xeb, 0x0c, 0x02, 0x46,
4207                         0x75, 0xd2, 0xf5, 0x2c, 0xe3, 0xd2, 0x59, 0x94,
4208                         0x12, 0xf3, 0x3c, 0xfc, 0xd7, 0x92, 0xfa, 0x36,
4209                         0xba, 0x61, 0x34, 0x38, 0x7c, 0xda, 0x48, 0x3e,
4210                         0x08, 0xc9, 0x39, 0x23, 0x5e, 0x02, 0x2c, 0x1a,
4211                         0x18, 0x7e, 0xb4, 0xd9, 0xfd, 0x9e, 0x40, 0x02,
4212                         0xb1, 0x33, 0x37, 0x32, 0xe7, 0xde, 0xd6, 0xd0,
4213                         0x7c, 0x58, 0x65, 0x4b, 0xf8, 0x34, 0x27, 0x9c,
4214                         0x44, 0xb4, 0xbd, 0xe9, 0xe9, 0x4c, 0x78, 0x7d,
4215                         0x4b, 0x9f, 0xce, 0xb1, 0xcd, 0x47, 0xa5, 0x37,
4216                         0xe5, 0x6d, 0xbd, 0xb9, 0x43, 0x94, 0x0a, 0xd4,
4217                         0xd6, 0xf9, 0x04, 0x5f, 0xb5, 0x66, 0x6c, 0x1a,
4218                         0x35, 0x12, 0xe3, 0x36, 0x28, 0x27, 0x36, 0x58,
4219                         0x01, 0x2b, 0x79, 0xe4, 0xba, 0x6d, 0x10, 0x7d,
4220                         0x65, 0xdf, 0x84, 0x95, 0xf4, 0xd5, 0xb6, 0x8f,
4221                         0x2b, 0x9f, 0x96, 0x00, 0x86, 0x60, 0xf0, 0x21,
4222                         0x76, 0xa8, 0x6a, 0x8c, 0x28, 0x1c, 0xb3, 0x6b,
4223                         0x97, 0xd7, 0xb6, 0x53, 0x2a, 0xcc, 0xab, 0x40,
4224                         0x9d, 0x62, 0x79, 0x58, 0x52, 0xe6, 0x65, 0xb7,
4225                         0xab, 0x55, 0x67, 0x9c, 0x89, 0x7c, 0x03, 0xb0,
4226                         0x73, 0x59, 0xc5, 0x81, 0xf5, 0x18, 0x17, 0x5c,
4227                         0x89, 0xf3, 0x78, 0x35, 0x44, 0x62, 0x78, 0x72,
4228                         0xd0, 0x96, 0xeb, 0x31, 0xe7, 0x87, 0x77, 0x14,
4229                         0x99, 0x51, 0xf2, 0x59, 0x26, 0x9e, 0xb5, 0xa6,
4230                         0x45, 0xfe, 0x6e, 0xbd, 0x07, 0x4c, 0x94, 0x5a,
4231                         0xa5, 0x7d, 0xfc, 0xf1, 0x2b, 0x77, 0xe2, 0xfe,
4232                         0x17, 0xd4, 0x84, 0xa0, 0xac, 0xb5, 0xc7, 0xda,
4233                         0xa9, 0x1a, 0xb6, 0xf3, 0x74, 0x11, 0xb4, 0x9d,
4234                         0xfb, 0x79, 0x2e, 0x04, 0x2d, 0x50, 0x28, 0x83,
4235                         0xbf, 0xc6, 0x52, 0xd3, 0x34, 0xd6, 0xe8, 0x7a,
4236                         0xb6, 0xea, 0xe7, 0xa8, 0x6c, 0x15, 0x1e, 0x2c,
4237                         0x57, 0xbc, 0x48, 0x4e, 0x5f, 0x5c, 0xb6, 0x92,
4238                         0xd2, 0x49, 0x77, 0x81, 0x6d, 0x90, 0x70, 0xae,
4239                         0x98, 0xa1, 0x03, 0x0d, 0x6b, 0xb9, 0x77, 0x14,
4240                         0xf1, 0x4e, 0x23, 0xd3, 0xf8, 0x68, 0xbd, 0xc2,
4241                         0xfe, 0x04, 0xb7, 0x5c, 0xc5, 0x17, 0x60, 0x8f,
4242                         0x65, 0x54, 0xa4, 0x7a, 0x42, 0xdc, 0x18, 0x0d,
4243                         0xb5, 0xcf, 0x0f, 0xd3, 0xc7, 0x91, 0x66, 0x1b,
4244                         0x45, 0x42, 0x27, 0x75, 0x50, 0xe5, 0xee, 0xb8,
4245                         0x7f, 0x33, 0x2c, 0xba, 0x4a, 0x92, 0x4d, 0x2c,
4246                         0x3c, 0xe3, 0x0d, 0x80, 0x01, 0xba, 0x0d, 0x29,
4247                         0xd8, 0x3c, 0xe9, 0x13, 0x16, 0x57, 0xe6, 0xea,
4248                         0x94, 0x52, 0xe7, 0x00, 0x4d, 0x30, 0xb0, 0x0f,
4249                         0x35, 0xb8, 0xb8, 0xa7, 0xb1, 0xb5, 0x3b, 0x44,
4250                         0xe1, 0x2f, 0xfd, 0x88, 0xed, 0x43, 0xe7, 0x52,
4251                         0x10, 0x93, 0xb3, 0x8a, 0x30, 0x6b, 0x0a, 0xf7,
4252                         0x23, 0xc6, 0x50, 0x9d, 0x4a, 0xb0, 0xde, 0xc3,
4253                         0xdc, 0x9b, 0x2f, 0x01, 0x56, 0x36, 0x09, 0xc5,
4254                         0x2f, 0x6b, 0xfe, 0xf1, 0xd8, 0x27, 0x45, 0x03,
4255                         0x30, 0x5e, 0x5c, 0x5b, 0xb4, 0x62, 0x0e, 0x1a,
4256                         0xa9, 0x21, 0x2b, 0x92, 0x94, 0x87, 0x62, 0x57,
4257                         0x4c, 0x10, 0x74, 0x1a, 0xf1, 0x0a, 0xc5, 0x84,
4258                         0x3b, 0x9e, 0x72, 0x02, 0xd7, 0xcc, 0x09, 0x56,
4259                         0xbd, 0x54, 0xc1, 0xf0, 0xc3, 0xe3, 0xb3, 0xf8,
4260                         0xd2, 0x0d, 0x61, 0xcb, 0xef, 0xce, 0x0d, 0x05,
4261                         0xb0, 0x98, 0xd9, 0x8e, 0x4f, 0xf9, 0xbc, 0x93,
4262                         0xa6, 0xea, 0xc8, 0xcf, 0x10, 0x53, 0x4b, 0xf1,
4263                         0xec, 0xfc, 0x89, 0xf9, 0x64, 0xb0, 0x22, 0xbf,
4264                         0x9e, 0x55, 0x46, 0x9f, 0x7c, 0x50, 0x8e, 0x84,
4265                         0x54, 0x20, 0x98, 0xd7, 0x6c, 0x40, 0x1e, 0xdb,
4266                         0x69, 0x34, 0x78, 0x61, 0x24, 0x21, 0x9c, 0x8a,
4267                         0xb3, 0x62, 0x31, 0x8b, 0x6e, 0xf5, 0x2a, 0x35,
4268                         0x86, 0x13, 0xb1, 0x6c, 0x64, 0x2e, 0x41, 0xa5,
4269                         0x05, 0xf2, 0x42, 0xba, 0xd2, 0x3a, 0x0d, 0x8e,
4270                         0x8a, 0x59, 0x94, 0x3c, 0xcf, 0x36, 0x27, 0x82,
4271                         0xc2, 0x45, 0xee, 0x58, 0xcd, 0x88, 0xb4, 0xec,
4272                         0xde, 0xb2, 0x96, 0x0a, 0xaf, 0x38, 0x6f, 0x88,
4273                         0xd7, 0xd8, 0xe1, 0xdf, 0xb9, 0x96, 0xa9, 0x0a,
4274                         0xb1, 0x95, 0x28, 0x86, 0x20, 0xe9, 0x17, 0x49,
4275                         0xa2, 0x29, 0x38, 0xaa, 0xa5, 0xe9, 0x6e, 0xf1,
4276                         0x19, 0x27, 0xc0, 0xd5, 0x2a, 0x22, 0xc3, 0x0b,
4277                         0xdb, 0x7c, 0x73, 0x10, 0xb9, 0xba, 0x89, 0x76,
4278                         0x54, 0xae, 0x7d, 0x71, 0xb3, 0x93, 0xf6, 0x32,
4279                         0xe6, 0x47, 0x43, 0x55, 0xac, 0xa0, 0x0d, 0xc2,
4280                         0x93, 0x27, 0x4a, 0x8e, 0x0e, 0x74, 0x15, 0xc7,
4281                         0x0b, 0x85, 0xd9, 0x0c, 0xa9, 0x30, 0x7a, 0x3e,
4282                         0xea, 0x8f, 0x85, 0x6d, 0x3a, 0x12, 0x4f, 0x72,
4283                         0x69, 0x58, 0x7a, 0x80, 0xbb, 0xb5, 0x97, 0xf3,
4284                         0xcf, 0x70, 0xd2, 0x5d, 0xdd, 0x4d, 0x21, 0x79,
4285                         0x54, 0x4d, 0xe4, 0x05, 0xe8, 0xbd, 0xc2, 0x62,
4286                         0xb1, 0x3b, 0x77, 0x1c, 0xd6, 0x5c, 0xf3, 0xa0,
4287                         0x79, 0x00, 0xa8, 0x6c, 0x29, 0xd9, 0x18, 0x24,
4288                         0x36, 0xa2, 0x46, 0xc0, 0x96, 0x65, 0x7f, 0xbd,
4289                         0x2a, 0xed, 0x36, 0x16, 0x0c, 0xaa, 0x9f, 0xf4,
4290                         0xc5, 0xb4, 0xe2, 0x12, 0xed, 0x69, 0xed, 0x4f,
4291                         0x26, 0x2c, 0x39, 0x52, 0x89, 0x98, 0xe7, 0x2c,
4292                         0x99, 0xa4, 0x9e, 0xa3, 0x9b, 0x99, 0x46, 0x7a,
4293                         0x3a, 0xdc, 0xa8, 0x59, 0xa3, 0xdb, 0xc3, 0x3b,
4294                         0x95, 0x0d, 0x3b, 0x09, 0x6e, 0xee, 0x83, 0x5d,
4295                         0x32, 0x4d, 0xed, 0xab, 0xfa, 0x98, 0x14, 0x4e,
4296                         0xc3, 0x15, 0x45, 0x53, 0x61, 0xc4, 0x93, 0xbd,
4297                         0x90, 0xf4, 0x99, 0x95, 0x4c, 0xe6, 0x76, 0x92,
4298                         0x29, 0x90, 0x46, 0x30, 0x92, 0x69, 0x7d, 0x13,
4299                         0xf2, 0xa5, 0xcd, 0x69, 0x49, 0x44, 0xb2, 0x0f,
4300                         0x63, 0x40, 0x36, 0x5f, 0x09, 0xe2, 0x78, 0xf8,
4301                         0x91, 0xe3, 0xe2, 0xfa, 0x10, 0xf7, 0xc8, 0x24,
4302                         0xa8, 0x89, 0x32, 0x5c, 0x37, 0x25, 0x1d, 0xb2,
4303                         0xea, 0x17, 0x8a, 0x0a, 0xa9, 0x64, 0xc3, 0x7c,
4304                         0x3c, 0x7c, 0xbd, 0xc6, 0x79, 0x34, 0xe7, 0xe2,
4305                         0x85, 0x8e, 0xbf, 0xf8, 0xde, 0x92, 0xa0, 0xae,
4306                         0x20, 0xc4, 0xf6, 0xbb, 0x1f, 0x38, 0x19, 0x0e,
4307                         0xe8, 0x79, 0x9c, 0xa1, 0x23, 0xe9, 0x54, 0x7e,
4308                         0x37, 0x2f, 0xe2, 0x94, 0x32, 0xaf, 0xa0, 0x23,
4309                         0x49, 0xe4, 0xc0, 0xb3, 0xac, 0x00, 0x8f, 0x36,
4310                         0x05, 0xc4, 0xa6, 0x96, 0xec, 0x05, 0x98, 0x4f,
4311                         0x96, 0x67, 0x57, 0x1f, 0x20, 0x86, 0x1b, 0x2d,
4312                         0x69, 0xe4, 0x29, 0x93, 0x66, 0x5f, 0xaf, 0x6b,
4313                         0x88, 0x26, 0x2c, 0x67, 0x02, 0x4b, 0x52, 0xd0,
4314                         0x83, 0x7a, 0x43, 0x1f, 0xc0, 0x71, 0x15, 0x25,
4315                         0x77, 0x65, 0x08, 0x60, 0x11, 0x76, 0x4c, 0x8d,
4316                         0xed, 0xa9, 0x27, 0xc6, 0xb1, 0x2a, 0x2c, 0x6a,
4317                         0x4a, 0x97, 0xf5, 0xc6, 0xb7, 0x70, 0x42, 0xd3,
4318                         0x03, 0xd1, 0x24, 0x95, 0xec, 0x6d, 0xab, 0x38,
4319                         0x72, 0xce, 0xe2, 0x8b, 0x33, 0xd7, 0x51, 0x09,
4320                         0xdc, 0x45, 0xe0, 0x09, 0x96, 0x32, 0xf3, 0xc4,
4321                         0x84, 0xdc, 0x73, 0x73, 0x2d, 0x1b, 0x11, 0x98,
4322                         0xc5, 0x0e, 0x69, 0x28, 0x94, 0xc7, 0xb5, 0x4d,
4323                         0xc8, 0x8a, 0xd0, 0xaa, 0x13, 0x2e, 0x18, 0x74,
4324                         0xdd, 0xd1, 0x1e, 0xf3, 0x90, 0xe8, 0xfc, 0x9a,
4325                         0x72, 0x4a, 0x0e, 0xd1, 0xe4, 0xfb, 0x0d, 0x96,
4326                         0xd1, 0x0c, 0x79, 0x85, 0x1b, 0x1c, 0xfe, 0xe1,
4327                         0x62, 0x8f, 0x7a, 0x73, 0x32, 0xab, 0xc8, 0x18,
4328                         0x69, 0xe3, 0x34, 0x30, 0xdf, 0x13, 0xa6, 0xe5,
4329                         0xe8, 0x0e, 0x67, 0x7f, 0x81, 0x11, 0xb4, 0x60,
4330                         0xc7, 0xbd, 0x79, 0x65, 0x50, 0xdc, 0xc4, 0x5b,
4331                         0xde, 0x39, 0xa4, 0x01, 0x72, 0x63, 0xf3, 0xd1,
4332                         0x64, 0x4e, 0xdf, 0xfc, 0x27, 0x92, 0x37, 0x0d,
4333                         0x57, 0xcd, 0x11, 0x4f, 0x11, 0x04, 0x8e, 0x1d,
4334                         0x16, 0xf7, 0xcd, 0x92, 0x9a, 0x99, 0x30, 0x14,
4335                         0xf1, 0x7c, 0x67, 0x1b, 0x1f, 0x41, 0x0b, 0xe8,
4336                         0x32, 0xe8, 0xb8, 0xc1, 0x4f, 0x54, 0x86, 0x4f,
4337                         0xe5, 0x79, 0x81, 0x73, 0xcd, 0x43, 0x59, 0x68,
4338                         0x73, 0x02, 0x3b, 0x78, 0x21, 0x72, 0x43, 0x00,
4339                         0x49, 0x17, 0xf7, 0x00, 0xaf, 0x68, 0x24, 0x53,
4340                         0x05, 0x0a, 0xc3, 0x33, 0xe0, 0x33, 0x3f, 0x69,
4341                         0xd2, 0x84, 0x2f, 0x0b, 0xed, 0xde, 0x04, 0xf4,
4342                         0x11, 0x94, 0x13, 0x69, 0x51, 0x09, 0x28, 0xde,
4343                         0x57, 0x5c, 0xef, 0xdc, 0x9a, 0x49, 0x1c, 0x17,
4344                         0x97, 0xf3, 0x96, 0xc1, 0x7f, 0x5d, 0x2e, 0x7d,
4345                         0x55, 0xb8, 0xb3, 0x02, 0x09, 0xb3, 0x1f, 0xe7,
4346                         0xc9, 0x8d, 0xa3, 0x36, 0x34, 0x8a, 0x77, 0x13,
4347                         0x30, 0x63, 0x4c, 0xa5, 0xcd, 0xc3, 0xe0, 0x7e,
4348                         0x05, 0xa1, 0x7b, 0x0c, 0xcb, 0x74, 0x47, 0x31,
4349                         0x62, 0x03, 0x43, 0xf1, 0x87, 0xb4, 0xb0, 0x85,
4350                         0x87, 0x8e, 0x4b, 0x25, 0xc7, 0xcf, 0xae, 0x4b,
4351                         0x36, 0x46, 0x3e, 0x62, 0xbc, 0x6f, 0xeb, 0x5f,
4352                         0x73, 0xac, 0xe6, 0x07, 0xee, 0xc1, 0xa1, 0xd6,
4353                         0xc4, 0xab, 0xc9, 0xd6, 0x89, 0x45, 0xe1, 0xf1,
4354                         0x04, 0x4e, 0x1a, 0x6f, 0xbb, 0x4f, 0x3a, 0xa3,
4355                         0xa0, 0xcb, 0xa3, 0x0a, 0xd8, 0x71, 0x35, 0x55,
4356                         0xe4, 0xbc, 0x2e, 0x04, 0x06, 0xe6, 0xff, 0x5b,
4357                         0x1c, 0xc0, 0x11, 0x7c, 0xc5, 0x17, 0xf3, 0x38,
4358                         0xcf, 0xe9, 0xba, 0x0f, 0x0e, 0xef, 0x02, 0xc2,
4359                         0x8d, 0xc6, 0xbc, 0x4b, 0x67, 0x20, 0x95, 0xd7,
4360                         0x2c, 0x45, 0x5b, 0x86, 0x44, 0x8c, 0x6f, 0x2e,
4361                         0x7e, 0x9f, 0x1c, 0x77, 0xba, 0x6b, 0x0e, 0xa3,
4362                         0x69, 0xdc, 0xab, 0x24, 0x57, 0x60, 0x47, 0xc1,
4363                         0xd1, 0xa5, 0x9d, 0x23, 0xe6, 0xb1, 0x37, 0xfe,
4364                         0x93, 0xd2, 0x4c, 0x46, 0xf9, 0x0c, 0xc6, 0xfb,
4365                         0xd6, 0x9d, 0x99, 0x69, 0xab, 0x7a, 0x07, 0x0c,
4366                         0x65, 0xe7, 0xc4, 0x08, 0x96, 0xe2, 0xa5, 0x01,
4367                         0x3f, 0x46, 0x07, 0x05, 0x7e, 0xe8, 0x9a, 0x90,
4368                         0x50, 0xdc, 0xe9, 0x7a, 0xea, 0xa1, 0x39, 0x6e,
4369                         0x66, 0xe4, 0x6f, 0xa5, 0x5f, 0xb2, 0xd9, 0x5b,
4370                         0xf5, 0xdb, 0x2a, 0x32, 0xf0, 0x11, 0x6f, 0x7c,
4371                         0x26, 0x10, 0x8f, 0x3d, 0x80, 0xe9, 0x58, 0xf7,
4372                         0xe0, 0xa8, 0x57, 0xf8, 0xdb, 0x0e, 0xce, 0x99,
4373                         0x63, 0x19, 0x3d, 0xd5, 0xec, 0x1b, 0x77, 0x69,
4374                         0x98, 0xf6, 0xe4, 0x5f, 0x67, 0x17, 0x4b, 0x09,
4375                         0x85, 0x62, 0x82, 0x70, 0x18, 0xe2, 0x9a, 0x78,
4376                         0xe2, 0x62, 0xbd, 0xb4, 0xf1, 0x42, 0xc6, 0xfb,
4377                         0x08, 0xd0, 0xbd, 0xeb, 0x4e, 0x09, 0xf2, 0xc8,
4378                         0x1e, 0xdc, 0x3d, 0x32, 0x21, 0x56, 0x9c, 0x4f,
4379                         0x35, 0xf3, 0x61, 0x06, 0x72, 0x84, 0xc4, 0x32,
4380                         0xf2, 0xf1, 0xfa, 0x0b, 0x2f, 0xc3, 0xdb, 0x02,
4381                         0x04, 0xc2, 0xde, 0x57, 0x64, 0x60, 0x8d, 0xcf,
4382                         0xcb, 0x86, 0x5d, 0x97, 0x3e, 0xb1, 0x9c, 0x01,
4383                         0xd6, 0x28, 0x8f, 0x99, 0xbc, 0x46, 0xeb, 0x05,
4384                         0xaf, 0x7e, 0xb8, 0x21, 0x2a, 0x56, 0x85, 0x1c,
4385                         0xb3, 0x71, 0xa0, 0xde, 0xca, 0x96, 0xf1, 0x78,
4386                         0x49, 0xa2, 0x99, 0x81, 0x80, 0x5c, 0x01, 0xf5,
4387                         0xa0, 0xa2, 0x56, 0x63, 0xe2, 0x70, 0x07, 0xa5,
4388                         0x95, 0xd6, 0x85, 0xeb, 0x36, 0x9e, 0xa9, 0x51,
4389                         0x66, 0x56, 0x5f, 0x1d, 0x02, 0x19, 0xe2, 0xf6,
4390                         0x4f, 0x73, 0x38, 0x09, 0x75, 0x64, 0x48, 0xe0,
4391                         0xf1, 0x7e, 0x0e, 0xe8, 0x9d, 0xf9, 0xed, 0x94,
4392                         0xfe, 0x16, 0x26, 0x62, 0x49, 0x74, 0xf4, 0xb0,
4393                         0xd4, 0xa9, 0x6c, 0xb0, 0xfd, 0x53, 0xe9, 0x81,
4394                         0xe0, 0x7a, 0xbf, 0xcf, 0xb5, 0xc4, 0x01, 0x81,
4395                         0x79, 0x99, 0x77, 0x01, 0x3b, 0xe9, 0xa2, 0xb6,
4396                         0xe6, 0x6a, 0x8a, 0x9e, 0x56, 0x1c, 0x8d, 0x1e,
4397                         0x8f, 0x06, 0x55, 0x2c, 0x6c, 0xdc, 0x92, 0x87,
4398                         0x64, 0x3b, 0x4b, 0x19, 0xa1, 0x13, 0x64, 0x1d,
4399                         0x4a, 0xe9, 0xc0, 0x00, 0xb8, 0x95, 0xef, 0x6b,
4400                         0x1a, 0x86, 0x6d, 0x37, 0x52, 0x02, 0xc2, 0xe0,
4401                         0xc8, 0xbb, 0x42, 0x0c, 0x02, 0x21, 0x4a, 0xc9,
4402                         0xef, 0xa0, 0x54, 0xe4, 0x5e, 0x16, 0x53, 0x81,
4403                         0x70, 0x62, 0x10, 0xaf, 0xde, 0xb8, 0xb5, 0xd3,
4404                         0xe8, 0x5e, 0x6c, 0xc3, 0x8a, 0x3e, 0x18, 0x07,
4405                         0xf2, 0x2f, 0x7d, 0xa7, 0xe1, 0x3d, 0x4e, 0xb4,
4406                         0x26, 0xa7, 0xa3, 0x93, 0x86, 0xb2, 0x04, 0x1e,
4407                         0x53, 0x5d, 0x86, 0xd6, 0xde, 0x65, 0xca, 0xe3,
4408                         0x4e, 0xc1, 0xcf, 0xef, 0xc8, 0x70, 0x1b, 0x83,
4409                         0x13, 0xdd, 0x18, 0x8b, 0x0d, 0x76, 0xd2, 0xf6,
4410                         0x37, 0x7a, 0x93, 0x7a, 0x50, 0x11, 0x9f, 0x96,
4411                         0x86, 0x25, 0xfd, 0xac, 0xdc, 0xbe, 0x18, 0x93,
4412                         0x19, 0x6b, 0xec, 0x58, 0x4f, 0xb9, 0x75, 0xa7,
4413                         0xdd, 0x3f, 0x2f, 0xec, 0xc8, 0x5a, 0x84, 0xab,
4414                         0xd5, 0xe4, 0x8a, 0x07, 0xf6, 0x4d, 0x23, 0xd6,
4415                         0x03, 0xfb, 0x03, 0x6a, 0xea, 0x66, 0xbf, 0xd4,
4416                         0xb1, 0x34, 0xfb, 0x78, 0xe9, 0x55, 0xdc, 0x7c,
4417                         0x3d, 0x9c, 0xe5, 0x9a, 0xac, 0xc3, 0x7a, 0x80,
4418                         0x24, 0x6d, 0xa0, 0xef, 0x25, 0x7c, 0xb7, 0xea,
4419                         0xce, 0x4d, 0x5f, 0x18, 0x60, 0xce, 0x87, 0x22,
4420                         0x66, 0x2f, 0xd5, 0xdd, 0xdd, 0x02, 0x21, 0x75,
4421                         0x82, 0xa0, 0x1f, 0x58, 0xc6, 0xd3, 0x62, 0xf7,
4422                         0x32, 0xd8, 0xaf, 0x1e, 0x07, 0x77, 0x51, 0x96,
4423                         0xd5, 0x6b, 0x1e, 0x7e, 0x80, 0x02, 0xe8, 0x67,
4424                         0xea, 0x17, 0x0b, 0x10, 0xd2, 0x3f, 0x28, 0x25,
4425                         0x4f, 0x05, 0x77, 0x02, 0x14, 0x69, 0xf0, 0x2c,
4426                         0xbe, 0x0c, 0xf1, 0x74, 0x30, 0xd1, 0xb9, 0x9b,
4427                         0xfc, 0x8c, 0xbb, 0x04, 0x16, 0xd9, 0xba, 0xc3,
4428                         0xbc, 0x91, 0x8a, 0xc4, 0x30, 0xa4, 0xb0, 0x12,
4429                         0x4c, 0x21, 0x87, 0xcb, 0xc9, 0x1d, 0x16, 0x96,
4430                         0x07, 0x6f, 0x23, 0x54, 0xb9, 0x6f, 0x79, 0xe5,
4431                         0x64, 0xc0, 0x64, 0xda, 0xb1, 0xae, 0xdd, 0x60,
4432                         0x6c, 0x1a, 0x9d, 0xd3, 0x04, 0x8e, 0x45, 0xb0,
4433                         0x92, 0x61, 0xd0, 0x48, 0x81, 0xed, 0x5e, 0x1d,
4434                         0xa0, 0xc9, 0xa4, 0x33, 0xc7, 0x13, 0x51, 0x5d,
4435                         0x7f, 0x83, 0x73, 0xb6, 0x70, 0x18, 0x65, 0x3e,
4436                         0x2f, 0x0e, 0x7a, 0x12, 0x39, 0x98, 0xab, 0xd8,
4437                         0x7e, 0x6f, 0xa3, 0xd1, 0xba, 0x56, 0xad, 0xbd,
4438                         0xf0, 0x03, 0x01, 0x1c, 0x85, 0x35, 0x9f, 0xeb,
4439                         0x19, 0x63, 0xa1, 0xaf, 0xfe, 0x2d, 0x35, 0x50,
4440                         0x39, 0xa0, 0x65, 0x7c, 0x95, 0x7e, 0x6b, 0xfe,
4441                         0xc1, 0xac, 0x07, 0x7c, 0x98, 0x4f, 0xbe, 0x57,
4442                         0xa7, 0x22, 0xec, 0xe2, 0x7e, 0x29, 0x09, 0x53,
4443                         0xe8, 0xbf, 0xb4, 0x7e, 0x3f, 0x8f, 0xfc, 0x14,
4444                         0xce, 0x54, 0xf9, 0x18, 0x58, 0xb5, 0xff, 0x44,
4445                         0x05, 0x9d, 0xce, 0x1b, 0xb6, 0x82, 0x23, 0xc8,
4446                         0x2e, 0xbc, 0x69, 0xbb, 0x4a, 0x29, 0x0f, 0x65,
4447                         0x94, 0xf0, 0x63, 0x06, 0x0e, 0xef, 0x8c, 0xbd,
4448                         0xff, 0xfd, 0xb0, 0x21, 0x6e, 0x57, 0x05, 0x75,
4449                         0xda, 0xd5, 0xc4, 0xeb, 0x8d, 0x32, 0xf7, 0x50,
4450                         0xd3, 0x6f, 0x22, 0xed, 0x5f, 0x8e, 0xa2, 0x5b,
4451                         0x80, 0x8c, 0xc8, 0x78, 0x40, 0x24, 0x4b, 0x89,
4452                         0x30, 0xce, 0x7a, 0x97, 0x0e, 0xc4, 0xaf, 0xef,
4453                         0x9b, 0xb4, 0xcd, 0x66, 0x74, 0x14, 0x04, 0x2b,
4454                         0xf7, 0xce, 0x0b, 0x1c, 0x6e, 0xc2, 0x78, 0x8c,
4455                         0xca, 0xc5, 0xd0, 0x1c, 0x95, 0x4a, 0x91, 0x2d,
4456                         0xa7, 0x20, 0xeb, 0x86, 0x52, 0xb7, 0x67, 0xd8,
4457                         0x0c, 0xd6, 0x04, 0x14, 0xde, 0x51, 0x74, 0x75,
4458                         0xe7, 0x11, 0xb4, 0x87, 0xa3, 0x3d, 0x2d, 0xad,
4459                         0x4f, 0xef, 0xa0, 0x0f, 0x70, 0x00, 0x6d, 0x13,
4460                         0x19, 0x1d, 0x41, 0x50, 0xe9, 0xd8, 0xf0, 0x32,
4461                         0x71, 0xbc, 0xd3, 0x11, 0xf2, 0xac, 0xbe, 0xaf,
4462                         0x75, 0x46, 0x65, 0x4e, 0x07, 0x34, 0x37, 0xa3,
4463                         0x89, 0xfe, 0x75, 0xd4, 0x70, 0x4c, 0xc6, 0x3f,
4464                         0x69, 0x24, 0x0e, 0x38, 0x67, 0x43, 0x8c, 0xde,
4465                         0x06, 0xb5, 0xb8, 0xe7, 0xc4, 0xf0, 0x41, 0x8f,
4466                         0xf0, 0xbd, 0x2f, 0x0b, 0xb9, 0x18, 0xf8, 0xde,
4467                         0x64, 0xb1, 0xdb, 0xee, 0x00, 0x50, 0x77, 0xe1,
4468                         0xc7, 0xff, 0xa6, 0xfa, 0xdd, 0x70, 0xf4, 0xe3,
4469                         0x93, 0xe9, 0x77, 0x35, 0x3d, 0x4b, 0x2f, 0x2b,
4470                         0x6d, 0x55, 0xf0, 0xfc, 0x88, 0x54, 0x4e, 0x89,
4471                         0xc1, 0x8a, 0x23, 0x31, 0x2d, 0x14, 0x2a, 0xb8,
4472                         0x1b, 0x15, 0xdd, 0x9e, 0x6e, 0x7b, 0xda, 0x05,
4473                         0x91, 0x7d, 0x62, 0x64, 0x96, 0x72, 0xde, 0xfc,
4474                         0xc1, 0xec, 0xf0, 0x23, 0x51, 0x6f, 0xdb, 0x5b,
4475                         0x1d, 0x08, 0x57, 0xce, 0x09, 0xb8, 0xf6, 0xcd,
4476                         0x8d, 0x95, 0xf2, 0x20, 0xbf, 0x0f, 0x20, 0x57,
4477                         0x98, 0x81, 0x84, 0x4f, 0x15, 0x5c, 0x76, 0xe7,
4478                         0x3e, 0x0a, 0x3a, 0x6c, 0xc4, 0x8a, 0xbe, 0x78,
4479                         0x74, 0x77, 0xc3, 0x09, 0x4b, 0x5d, 0x48, 0xe4,
4480                         0xc8, 0xcb, 0x0b, 0xea, 0x17, 0x28, 0xcf, 0xcf,
4481                         0x31, 0x32, 0x44, 0xa4, 0xe5, 0x0e, 0x1a, 0x98,
4482                         0x94, 0xc4, 0xf0, 0xff, 0xae, 0x3e, 0x44, 0xe8,
4483                         0xa5, 0xb3, 0xb5, 0x37, 0x2f, 0xe8, 0xaf, 0x6f,
4484                         0x28, 0xc1, 0x37, 0x5f, 0x31, 0xd2, 0xb9, 0x33,
4485                         0xb1, 0xb2, 0x52, 0x94, 0x75, 0x2c, 0x29, 0x59,
4486                         0x06, 0xc2, 0x25, 0xe8, 0x71, 0x65, 0x4e, 0xed,
4487                         0xc0, 0x9c, 0xb1, 0xbb, 0x25, 0xdc, 0x6c, 0xe7,
4488                         0x4b, 0xa5, 0x7a, 0x54, 0x7a, 0x60, 0xff, 0x7a,
4489                         0xe0, 0x50, 0x40, 0x96, 0x35, 0x63, 0xe4, 0x0b,
4490                         0x76, 0xbd, 0xa4, 0x65, 0x00, 0x1b, 0x57, 0x88,
4491                         0xae, 0xed, 0x39, 0x88, 0x42, 0x11, 0x3c, 0xed,
4492                         0x85, 0x67, 0x7d, 0xb9, 0x68, 0x82, 0xe9, 0x43,
4493                         0x3c, 0x47, 0x53, 0xfa, 0xe8, 0xf8, 0x9f, 0x1f,
4494                         0x9f, 0xef, 0x0f, 0xf7, 0x30, 0xd9, 0x30, 0x0e,
4495                         0xb9, 0x9f, 0x69, 0x18, 0x2f, 0x7e, 0xf8, 0xf8,
4496                         0xf8, 0x8c, 0x0f, 0xd4, 0x02, 0x4d, 0xea, 0xcd,
4497                         0x0a, 0x9c, 0x6f, 0x71, 0x6d, 0x5a, 0x4c, 0x60,
4498                         0xce, 0x20, 0x56, 0x32, 0xc6, 0xc5, 0x99, 0x1f,
4499                         0x09, 0xe6, 0x4e, 0x18, 0x1a, 0x15, 0x13, 0xa8,
4500                         0x7d, 0xb1, 0x6b, 0xc0, 0xb2, 0x6d, 0xf8, 0x26,
4501                         0x66, 0xf8, 0x3d, 0x18, 0x74, 0x70, 0x66, 0x7a,
4502                         0x34, 0x17, 0xde, 0xba, 0x47, 0xf1, 0x06, 0x18,
4503                         0xcb, 0xaf, 0xeb, 0x4a, 0x1e, 0x8f, 0xa7, 0x77,
4504                         0xe0, 0x3b, 0x78, 0x62, 0x66, 0xc9, 0x10, 0xea,
4505                         0x1f, 0xb7, 0x29, 0x0a, 0x45, 0xa1, 0x1d, 0x1e,
4506                         0x1d, 0xe2, 0x65, 0x61, 0x50, 0x9c, 0xd7, 0x05,
4507                         0xf2, 0x0b, 0x5b, 0x12, 0x61, 0x02, 0xc8, 0xe5,
4508                         0x63, 0x4f, 0x20, 0x0c, 0x07, 0x17, 0x33, 0x5e,
4509                         0x03, 0x9a, 0x53, 0x0f, 0x2e, 0x55, 0xfe, 0x50,
4510                         0x43, 0x7d, 0xd0, 0xb6, 0x7e, 0x5a, 0xda, 0xae,
4511                         0x58, 0xef, 0x15, 0xa9, 0x83, 0xd9, 0x46, 0xb1,
4512                         0x42, 0xaa, 0xf5, 0x02, 0x6c, 0xce, 0x92, 0x06,
4513                         0x1b, 0xdb, 0x66, 0x45, 0x91, 0x79, 0xc2, 0x2d,
4514                         0xe6, 0x53, 0xd3, 0x14, 0xfd, 0xbb, 0x44, 0x63,
4515                         0xc6, 0xd7, 0x3d, 0x7a, 0x0c, 0x75, 0x78, 0x9d,
4516                         0x5c, 0xa6, 0x39, 0xb3, 0xe5, 0x63, 0xca, 0x8b,
4517                         0xfe, 0xd3, 0xef, 0x60, 0x83, 0xf6, 0x8e, 0x70,
4518                         0xb6, 0x67, 0xc7, 0x77, 0xed, 0x23, 0xef, 0x4c,
4519                         0xf0, 0xed, 0x2d, 0x07, 0x59, 0x6f, 0xc1, 0x01,
4520                         0x34, 0x37, 0x08, 0xab, 0xd9, 0x1f, 0x09, 0xb1,
4521                         0xce, 0x5b, 0x17, 0xff, 0x74, 0xf8, 0x9c, 0xd5,
4522                         0x2c, 0x56, 0x39, 0x79, 0x0f, 0x69, 0x44, 0x75,
4523                         0x58, 0x27, 0x01, 0xc4, 0xbf, 0xa7, 0xa1, 0x1d,
4524                         0x90, 0x17, 0x77, 0x86, 0x5a, 0x3f, 0xd9, 0xd1,
4525                         0x0e, 0xa0, 0x10, 0xf8, 0xec, 0x1e, 0xa5, 0x7f,
4526                         0x5e, 0x36, 0xd1, 0xe3, 0x04, 0x2c, 0x70, 0xf7,
4527                         0x8e, 0xc0, 0x98, 0x2f, 0x6c, 0x94, 0x2b, 0x41,
4528                         0xb7, 0x60, 0x00, 0xb7, 0x2e, 0xb8, 0x02, 0x8d,
4529                         0xb8, 0xb0, 0xd3, 0x86, 0xba, 0x1d, 0xd7, 0x90,
4530                         0xd6, 0xb6, 0xe1, 0xfc, 0xd7, 0xd8, 0x28, 0x06,
4531                         0x63, 0x9b, 0xce, 0x61, 0x24, 0x79, 0xc0, 0x70,
4532                         0x52, 0xd0, 0xb6, 0xd4, 0x28, 0x95, 0x24, 0x87,
4533                         0x03, 0x1f, 0xb7, 0x9a, 0xda, 0xa3, 0xfb, 0x52,
4534                         0x5b, 0x68, 0xe7, 0x4c, 0x8c, 0x24, 0xe1, 0x42,
4535                         0xf7, 0xd5, 0xfd, 0xad, 0x06, 0x32, 0x9f, 0xba,
4536                         0xc1, 0xfc, 0xdd, 0xc6, 0xfc, 0xfc, 0xb3, 0x38,
4537                         0x74, 0x56, 0x58, 0x40, 0x02, 0x37, 0x52, 0x2c,
4538                         0x55, 0xcc, 0xb3, 0x9e, 0x7a, 0xe9, 0xd4, 0x38,
4539                         0x41, 0x5e, 0x0c, 0x35, 0xe2, 0x11, 0xd1, 0x13,
4540                         0xf8, 0xb7, 0x8d, 0x72, 0x6b, 0x22, 0x2a, 0xb0,
4541                         0xdb, 0x08, 0xba, 0x35, 0xb9, 0x3f, 0xc8, 0xd3,
4542                         0x24, 0x90, 0xec, 0x58, 0xd2, 0x09, 0xc7, 0x2d,
4543                         0xed, 0x38, 0x80, 0x36, 0x72, 0x43, 0x27, 0x49,
4544                         0x4a, 0x80, 0x8a, 0xa2, 0xe8, 0xd3, 0xda, 0x30,
4545                         0x7d, 0xb6, 0x82, 0x37, 0x86, 0x92, 0x86, 0x3e,
4546                         0x08, 0xb2, 0x28, 0x5a, 0x55, 0x44, 0x24, 0x7d,
4547                         0x40, 0x48, 0x8a, 0xb6, 0x89, 0x58, 0x08, 0xa0,
4548                         0xd6, 0x6d, 0x3a, 0x17, 0xbf, 0xf6, 0x54, 0xa2,
4549                         0xf5, 0xd3, 0x8c, 0x0f, 0x78, 0x12, 0x57, 0x8b,
4550                         0xd5, 0xc2, 0xfd, 0x58, 0x5b, 0x7f, 0x38, 0xe3,
4551                         0xcc, 0xb7, 0x7c, 0x48, 0xb3, 0x20, 0xe8, 0x81,
4552                         0x14, 0x32, 0x45, 0x05, 0xe0, 0xdb, 0x9f, 0x75,
4553                         0x85, 0xb4, 0x6a, 0xfc, 0x95, 0xe3, 0x54, 0x22,
4554                         0x12, 0xee, 0x30, 0xfe, 0xd8, 0x30, 0xef, 0x34,
4555                         0x50, 0xab, 0x46, 0x30, 0x98, 0x2f, 0xb7, 0xc0,
4556                         0x15, 0xa2, 0x83, 0xb6, 0xf2, 0x06, 0x21, 0xa2,
4557                         0xc3, 0x26, 0x37, 0x14, 0xd1, 0x4d, 0xb5, 0x10,
4558                         0x52, 0x76, 0x4d, 0x6a, 0xee, 0xb5, 0x2b, 0x15,
4559                         0xb7, 0xf9, 0x51, 0xe8, 0x2a, 0xaf, 0xc7, 0xfa,
4560                         0x77, 0xaf, 0xb0, 0x05, 0x4d, 0xd1, 0x68, 0x8e,
4561                         0x74, 0x05, 0x9f, 0x9d, 0x93, 0xa5, 0x3e, 0x7f,
4562                         0x4e, 0x5f, 0x9d, 0xcb, 0x09, 0xc7, 0x83, 0xe3,
4563                         0x02, 0x9d, 0x27, 0x1f, 0xef, 0x85, 0x05, 0x8d,
4564                         0xec, 0x55, 0x88, 0x0f, 0x0d, 0x7c, 0x4c, 0xe8,
4565                         0xa1, 0x75, 0xa0, 0xd8, 0x06, 0x47, 0x14, 0xef,
4566                         0xaa, 0x61, 0xcf, 0x26, 0x15, 0xad, 0xd8, 0xa3,
4567                         0xaa, 0x75, 0xf2, 0x78, 0x4a, 0x5a, 0x61, 0xdf,
4568                         0x8b, 0xc7, 0x04, 0xbc, 0xb2, 0x32, 0xd2, 0x7e,
4569                         0x42, 0xee, 0xb4, 0x2f, 0x51, 0xff, 0x7b, 0x2e,
4570                         0xd3, 0x02, 0xe8, 0xdc, 0x5d, 0x0d, 0x50, 0xdc,
4571                         0xae, 0xb7, 0x46, 0xf9, 0xa8, 0xe6, 0xd0, 0x16,
4572                         0xcc, 0xe6, 0x2c, 0x81, 0xc7, 0xad, 0xe9, 0xf0,
4573                         0x05, 0x72, 0x6d, 0x3d, 0x0a, 0x7a, 0xa9, 0x02,
4574                         0xac, 0x82, 0x93, 0x6e, 0xb6, 0x1c, 0x28, 0xfc,
4575                         0x44, 0x12, 0xfb, 0x73, 0x77, 0xd4, 0x13, 0x39,
4576                         0x29, 0x88, 0x8a, 0xf3, 0x5c, 0xa6, 0x36, 0xa0,
4577                         0x2a, 0xed, 0x7e, 0xb1, 0x1d, 0xd6, 0x4c, 0x6b,
4578                         0x41, 0x01, 0x18, 0x5d, 0x5d, 0x07, 0x97, 0xa6,
4579                         0x4b, 0xef, 0x31, 0x18, 0xea, 0xac, 0xb1, 0x84,
4580                         0x21, 0xed, 0xda, 0x86,
4581                 },
4582                 .rlen = 4100,
4583         },
4584 };
4585
4586 static struct cipher_testvec aes_ctr_dec_tv_template[] = {
4587         { /* From RFC 3686 */
4588                 .key    = { 0xae, 0x68, 0x52, 0xf8, 0x12, 0x10, 0x67, 0xcc,
4589                             0x4b, 0xf7, 0xa5, 0x76, 0x55, 0x77, 0xf3, 0x9e,
4590                             0x00, 0x00, 0x00, 0x30 },
4591                 .klen   = 20,
4592                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
4593                 .input  = { 0xe4, 0x09, 0x5d, 0x4f, 0xb7, 0xa7, 0xb3, 0x79,
4594                             0x2d, 0x61, 0x75, 0xa3, 0x26, 0x13, 0x11, 0xb8 },
4595                 .ilen   = 16,
4596                 .result = { "Single block msg" },
4597                 .rlen   = 16,
4598         }, {
4599                 .key    = { 0x7e, 0x24, 0x06, 0x78, 0x17, 0xfa, 0xe0, 0xd7,
4600                             0x43, 0xd6, 0xce, 0x1f, 0x32, 0x53, 0x91, 0x63,
4601                             0x00, 0x6c, 0xb6, 0xdb },
4602                 .klen   = 20,
4603                 .iv     = { 0xc0, 0x54, 0x3b, 0x59, 0xda, 0x48, 0xd9, 0x0b },
4604                 .input  = { 0x51, 0x04, 0xa1, 0x06, 0x16, 0x8a, 0x72, 0xd9,
4605                             0x79, 0x0d, 0x41, 0xee, 0x8e, 0xda, 0xd3, 0x88,
4606                             0xeb, 0x2e, 0x1e, 0xfc, 0x46, 0xda, 0x57, 0xc8,
4607                             0xfc, 0xe6, 0x30, 0xdf, 0x91, 0x41, 0xbe, 0x28 },
4608                 .ilen   = 32,
4609                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4610                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
4611                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
4612                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
4613                 .rlen   = 32,
4614         }, {
4615                 .key    = { 0x16, 0xaf, 0x5b, 0x14, 0x5f, 0xc9, 0xf5, 0x79,
4616                             0xc1, 0x75, 0xf9, 0x3e, 0x3b, 0xfb, 0x0e, 0xed,
4617                             0x86, 0x3d, 0x06, 0xcc, 0xfd, 0xb7, 0x85, 0x15,
4618                             0x00, 0x00, 0x00, 0x48 },
4619                 .klen   = 28,
4620                 .iv     = { 0x36, 0x73, 0x3c, 0x14, 0x7d, 0x6d, 0x93, 0xcb },
4621                 .input  = { 0x4b, 0x55, 0x38, 0x4f, 0xe2, 0x59, 0xc9, 0xc8,
4622                             0x4e, 0x79, 0x35, 0xa0, 0x03, 0xcb, 0xe9, 0x28 },
4623                 .ilen   = 16,
4624                 .result = { "Single block msg" },
4625                 .rlen   = 16,
4626         }, {
4627                 .key    = { 0x7c, 0x5c, 0xb2, 0x40, 0x1b, 0x3d, 0xc3, 0x3c,
4628                             0x19, 0xe7, 0x34, 0x08, 0x19, 0xe0, 0xf6, 0x9c,
4629                             0x67, 0x8c, 0x3d, 0xb8, 0xe6, 0xf6, 0xa9, 0x1a,
4630                             0x00, 0x96, 0xb0, 0x3b },
4631                 .klen   = 28,
4632                 .iv     = { 0x02, 0x0c, 0x6e, 0xad, 0xc2, 0xcb, 0x50, 0x0d },
4633                 .input  = { 0x45, 0x32, 0x43, 0xfc, 0x60, 0x9b, 0x23, 0x32,
4634                             0x7e, 0xdf, 0xaa, 0xfa, 0x71, 0x31, 0xcd, 0x9f,
4635                             0x84, 0x90, 0x70, 0x1c, 0x5a, 0xd4, 0xa7, 0x9c,
4636                             0xfc, 0x1f, 0xe0, 0xff, 0x42, 0xf4, 0xfb, 0x00 },
4637                 .ilen   = 32,
4638                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4639                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
4640                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
4641                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
4642                 .rlen   = 32,
4643         }, { 
4644                 .key    = { 0x77, 0x6b, 0xef, 0xf2, 0x85, 0x1d, 0xb0, 0x6f,
4645                             0x4c, 0x8a, 0x05, 0x42, 0xc8, 0x69, 0x6f, 0x6c,
4646                             0x6a, 0x81, 0xaf, 0x1e, 0xec, 0x96, 0xb4, 0xd3,
4647                             0x7f, 0xc1, 0xd6, 0x89, 0xe6, 0xc1, 0xc1, 0x04,
4648                             0x00, 0x00, 0x00, 0x60 },
4649                 .klen   = 36,
4650                 .iv     = { 0xdb, 0x56, 0x72, 0xc9, 0x7a, 0xa8, 0xf0, 0xb2 },
4651                 .input  = { 0x14, 0x5a, 0xd0, 0x1d, 0xbf, 0x82, 0x4e, 0xc7,
4652                             0x56, 0x08, 0x63, 0xdc, 0x71, 0xe3, 0xe0, 0xc0 },
4653                 .ilen   = 16,
4654                 .result = { "Single block msg" },
4655                 .rlen   = 16,
4656         }, {
4657                 .key    = { 0xf6, 0xd6, 0x6d, 0x6b, 0xd5, 0x2d, 0x59, 0xbb,
4658                             0x07, 0x96, 0x36, 0x58, 0x79, 0xef, 0xf8, 0x86,
4659                             0xc6, 0x6d, 0xd5, 0x1a, 0x5b, 0x6a, 0x99, 0x74,
4660                             0x4b, 0x50, 0x59, 0x0c, 0x87, 0xa2, 0x38, 0x84,
4661                             0x00, 0xfa, 0xac, 0x24 },
4662                 .klen   = 36,
4663                 .iv     = { 0xc1, 0x58, 0x5e, 0xf1, 0x5a, 0x43, 0xd8, 0x75 },
4664                 .input  = { 0xf0, 0x5e, 0x23, 0x1b, 0x38, 0x94, 0x61, 0x2c,
4665                             0x49, 0xee, 0x00, 0x0b, 0x80, 0x4e, 0xb2, 0xa9,
4666                             0xb8, 0x30, 0x6b, 0x50, 0x8f, 0x83, 0x9d, 0x6a,
4667                             0x55, 0x30, 0x83, 0x1d, 0x93, 0x44, 0xaf, 0x1c },
4668                 .ilen   = 32,
4669                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4670                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
4671                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
4672                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
4673                 .rlen   = 32,
4674         },
4675 };
4676
4677 static struct aead_testvec aes_gcm_enc_tv_template[] = {
4678         { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
4679                 .klen   = 16,
4680                 .result = { 0x58, 0xe2, 0xfc, 0xce, 0xfa, 0x7e, 0x30, 0x61,
4681                             0x36, 0x7f, 0x1d, 0x57, 0xa4, 0xe7, 0x45, 0x5a },
4682                 .rlen   = 16,
4683         }, {
4684                 .klen   = 16,
4685                 .ilen   = 16,
4686                 .result = { 0x03, 0x88, 0xda, 0xce, 0x60, 0xb6, 0xa3, 0x92,
4687                             0xf3, 0x28, 0xc2, 0xb9, 0x71, 0xb2, 0xfe, 0x78,
4688                             0xab, 0x6e, 0x47, 0xd4, 0x2c, 0xec, 0x13, 0xbd,
4689                             0xf5, 0x3a, 0x67, 0xb2, 0x12, 0x57, 0xbd, 0xdf },
4690                 .rlen   = 32,
4691         }, {
4692                 .key    = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4693                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 },
4694                 .klen   = 16,
4695                 .iv     = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
4696                             0xde, 0xca, 0xf8, 0x88 },
4697                 .input  = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
4698                             0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
4699                             0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
4700                             0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
4701                             0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
4702                             0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
4703                             0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
4704                             0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 },
4705                 .ilen   = 64,
4706                 .result = { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24,
4707                             0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c,
4708                             0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0,
4709                             0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e,
4710                             0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c,
4711                             0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05,
4712                             0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97,
4713                             0x3d, 0x58, 0xe0, 0x91, 0x47, 0x3f, 0x59, 0x85,
4714                             0x4d, 0x5c, 0x2a, 0xf3, 0x27, 0xcd, 0x64, 0xa6,
4715                             0x2c, 0xf3, 0x5a, 0xbd, 0x2b, 0xa6, 0xfa, 0xb4 },
4716                 .rlen   = 80,
4717         }, {
4718                 .key    = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4719                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 },
4720                 .klen   = 16,
4721                 .iv     = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
4722                             0xde, 0xca, 0xf8, 0x88 },
4723                 .input  = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
4724                             0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
4725                             0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
4726                             0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
4727                             0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
4728                             0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
4729                             0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
4730                             0xba, 0x63, 0x7b, 0x39 },
4731                 .ilen   = 60,
4732                 .assoc  = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
4733                             0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
4734                             0xab, 0xad, 0xda, 0xd2 },
4735                 .alen   = 20,
4736                 .result = { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24,
4737                             0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c,
4738                             0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0,
4739                             0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e,
4740                             0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c,
4741                             0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05,
4742                             0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97,
4743                             0x3d, 0x58, 0xe0, 0x91,
4744                             0x5b, 0xc9, 0x4f, 0xbc, 0x32, 0x21, 0xa5, 0xdb,
4745                             0x94, 0xfa, 0xe9, 0x5a, 0xe7, 0x12, 0x1a, 0x47 },
4746                 .rlen   = 76,
4747         }, {
4748                 .klen   = 24,
4749                 .result = { 0xcd, 0x33, 0xb2, 0x8a, 0xc7, 0x73, 0xf7, 0x4b,
4750                             0xa0, 0x0e, 0xd1, 0xf3, 0x12, 0x57, 0x24, 0x35 },
4751                 .rlen   = 16,
4752         }, {
4753                 .klen   = 24,
4754                 .ilen   = 16,
4755                 .result = { 0x98, 0xe7, 0x24, 0x7c, 0x07, 0xf0, 0xfe, 0x41,
4756                             0x1c, 0x26, 0x7e, 0x43, 0x84, 0xb0, 0xf6, 0x00,
4757                             0x2f, 0xf5, 0x8d, 0x80, 0x03, 0x39, 0x27, 0xab,
4758                             0x8e, 0xf4, 0xd4, 0x58, 0x75, 0x14, 0xf0, 0xfb },
4759                 .rlen   = 32,
4760         }, {
4761                 .key    = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4762                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
4763                             0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c },
4764                 .klen   = 24,
4765                 .iv     = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
4766                             0xde, 0xca, 0xf8, 0x88 },
4767                 .input  = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
4768                             0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
4769                             0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
4770                             0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
4771                             0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
4772                             0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
4773                             0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
4774                             0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 },
4775                 .ilen   = 64,
4776                 .result = { 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41,
4777                             0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57,
4778                             0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84,
4779                             0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c,
4780                             0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25,
4781                             0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47,
4782                             0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9,
4783                             0xcc, 0xda, 0x27, 0x10, 0xac, 0xad, 0xe2, 0x56,
4784                             0x99, 0x24, 0xa7, 0xc8, 0x58, 0x73, 0x36, 0xbf,
4785                             0xb1, 0x18, 0x02, 0x4d, 0xb8, 0x67, 0x4a, 0x14 },
4786                 .rlen   = 80,
4787         }, {
4788                 .key    = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4789                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
4790                             0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c },
4791                 .klen   = 24,
4792                 .iv     = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
4793                             0xde, 0xca, 0xf8, 0x88 },
4794                 .input  = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
4795                             0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
4796                             0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
4797                             0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
4798                             0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
4799                             0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
4800                             0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
4801                             0xba, 0x63, 0x7b, 0x39 },
4802                 .ilen   = 60,
4803                 .assoc  = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
4804                             0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
4805                             0xab, 0xad, 0xda, 0xd2 },
4806                 .alen   = 20,
4807                 .result = { 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41,
4808                             0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57,
4809                             0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84,
4810                             0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c,
4811                             0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25,
4812                             0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47,
4813                             0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9,
4814                             0xcc, 0xda, 0x27, 0x10,
4815                             0x25, 0x19, 0x49, 0x8e, 0x80, 0xf1, 0x47, 0x8f,
4816                             0x37, 0xba, 0x55, 0xbd, 0x6d, 0x27, 0x61, 0x8c },
4817                 .rlen   = 76,
4818                 .np     = 2,
4819                 .tap    = { 32, 28 },
4820                 .anp    = 2,
4821                 .atap   = { 8, 12 }
4822         }, {
4823                 .klen   = 32,
4824                 .result = { 0x53, 0x0f, 0x8a, 0xfb, 0xc7, 0x45, 0x36, 0xb9,
4825                             0xa9, 0x63, 0xb4, 0xf1, 0xc4, 0xcb, 0x73, 0x8b },
4826                 .rlen   = 16,
4827         }
4828 };
4829
4830 static struct aead_testvec aes_gcm_dec_tv_template[] = {
4831         { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
4832                 .klen   = 32,
4833                 .input  = { 0xce, 0xa7, 0x40, 0x3d, 0x4d, 0x60, 0x6b, 0x6e,
4834                             0x07, 0x4e, 0xc5, 0xd3, 0xba, 0xf3, 0x9d, 0x18,
4835                             0xd0, 0xd1, 0xc8, 0xa7, 0x99, 0x99, 0x6b, 0xf0,
4836                             0x26, 0x5b, 0x98, 0xb5, 0xd4, 0x8a, 0xb9, 0x19 },
4837                 .ilen   = 32,
4838                 .rlen   = 16,
4839         }, {
4840                 .key    = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4841                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
4842                             0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4843                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 },
4844                 .klen   = 32,
4845                 .iv     = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
4846                             0xde, 0xca, 0xf8, 0x88 },
4847                 .input  = { 0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07,
4848                             0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d,
4849                             0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9,
4850                             0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa,
4851                             0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d,
4852                             0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38,
4853                             0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a,
4854                             0xbc, 0xc9, 0xf6, 0x62, 0x89, 0x80, 0x15, 0xad,
4855                             0xb0, 0x94, 0xda, 0xc5, 0xd9, 0x34, 0x71, 0xbd,
4856                             0xec, 0x1a, 0x50, 0x22, 0x70, 0xe3, 0xcc, 0x6c },
4857                 .ilen   = 80,
4858                 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
4859                             0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
4860                             0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
4861                             0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
4862                             0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
4863                             0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
4864                             0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
4865                             0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 },
4866                 .rlen   = 64,
4867         }, {
4868                 .key    = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4869                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
4870                             0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4871                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 },
4872                 .klen   = 32,
4873                 .iv     = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
4874                             0xde, 0xca, 0xf8, 0x88 },
4875                 .input  = { 0x52, 0x2d, 0xc1, 0xf0, 0x99, 0x56, 0x7d, 0x07,
4876                             0xf4, 0x7f, 0x37, 0xa3, 0x2a, 0x84, 0x42, 0x7d,
4877                             0x64, 0x3a, 0x8c, 0xdc, 0xbf, 0xe5, 0xc0, 0xc9,
4878                             0x75, 0x98, 0xa2, 0xbd, 0x25, 0x55, 0xd1, 0xaa,
4879                             0x8c, 0xb0, 0x8e, 0x48, 0x59, 0x0d, 0xbb, 0x3d,
4880                             0xa7, 0xb0, 0x8b, 0x10, 0x56, 0x82, 0x88, 0x38,
4881                             0xc5, 0xf6, 0x1e, 0x63, 0x93, 0xba, 0x7a, 0x0a,
4882                             0xbc, 0xc9, 0xf6, 0x62,
4883                             0x76, 0xfc, 0x6e, 0xce, 0x0f, 0x4e, 0x17, 0x68,
4884                             0xcd, 0xdf, 0x88, 0x53, 0xbb, 0x2d, 0x55, 0x1b },
4885                 .ilen   = 76,
4886                 .assoc  = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
4887                             0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
4888                             0xab, 0xad, 0xda, 0xd2 },
4889                 .alen   = 20,
4890                 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
4891                             0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
4892                             0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
4893                             0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
4894                             0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
4895                             0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
4896                             0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
4897                             0xba, 0x63, 0x7b, 0x39 },
4898                 .rlen   = 60,
4899                 .np     = 2,
4900                 .tap    = { 48, 28 },
4901                 .anp    = 3,
4902                 .atap   = { 8, 8, 4 }
4903         }, {
4904                 .key    = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4905                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 },
4906                 .klen   = 16,
4907                 .iv     = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
4908                             0xde, 0xca, 0xf8, 0x88 },
4909                 .input  = { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24,
4910                             0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c,
4911                             0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0,
4912                             0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e,
4913                             0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c,
4914                             0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05,
4915                             0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97,
4916                             0x3d, 0x58, 0xe0, 0x91, 0x47, 0x3f, 0x59, 0x85,
4917                             0x4d, 0x5c, 0x2a, 0xf3, 0x27, 0xcd, 0x64, 0xa6,
4918                             0x2c, 0xf3, 0x5a, 0xbd, 0x2b, 0xa6, 0xfa, 0xb4 },
4919                 .ilen   = 80,
4920                 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
4921                             0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
4922                             0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
4923                             0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
4924                             0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
4925                             0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
4926                             0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
4927                             0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 },
4928                 .rlen   = 64,
4929         }, {
4930                 .key    = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4931                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 },
4932                 .klen   = 16,
4933                 .iv     = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
4934                             0xde, 0xca, 0xf8, 0x88 },
4935                 .input  = { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24,
4936                             0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c,
4937                             0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0,
4938                             0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e,
4939                             0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c,
4940                             0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05,
4941                             0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97,
4942                             0x3d, 0x58, 0xe0, 0x91,
4943                             0x5b, 0xc9, 0x4f, 0xbc, 0x32, 0x21, 0xa5, 0xdb,
4944                             0x94, 0xfa, 0xe9, 0x5a, 0xe7, 0x12, 0x1a, 0x47 },
4945                 .ilen   = 76,
4946                 .assoc  = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
4947                             0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
4948                             0xab, 0xad, 0xda, 0xd2 },
4949                 .alen   = 20,
4950                 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
4951                             0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
4952                             0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
4953                             0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
4954                             0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
4955                             0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
4956                             0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
4957                             0xba, 0x63, 0x7b, 0x39 },
4958                 .rlen   = 60,
4959         }, {
4960                 .klen   = 24,
4961                 .input  = { 0x98, 0xe7, 0x24, 0x7c, 0x07, 0xf0, 0xfe, 0x41,
4962                             0x1c, 0x26, 0x7e, 0x43, 0x84, 0xb0, 0xf6, 0x00,
4963                             0x2f, 0xf5, 0x8d, 0x80, 0x03, 0x39, 0x27, 0xab,
4964                             0x8e, 0xf4, 0xd4, 0x58, 0x75, 0x14, 0xf0, 0xfb },
4965                 .ilen   = 32,
4966                 .rlen   = 16,
4967         }, {
4968                 .key    = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4969                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
4970                             0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c },
4971                 .klen   = 24,
4972                 .iv     = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
4973                             0xde, 0xca, 0xf8, 0x88 },
4974                 .input  = { 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41,
4975                             0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57,
4976                             0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84,
4977                             0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c,
4978                             0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25,
4979                             0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47,
4980                             0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9,
4981                             0xcc, 0xda, 0x27, 0x10, 0xac, 0xad, 0xe2, 0x56,
4982                             0x99, 0x24, 0xa7, 0xc8, 0x58, 0x73, 0x36, 0xbf,
4983                             0xb1, 0x18, 0x02, 0x4d, 0xb8, 0x67, 0x4a, 0x14 },
4984                 .ilen   = 80,
4985                 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
4986                             0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
4987                             0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
4988                             0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
4989                             0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
4990                             0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
4991                             0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
4992                             0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55 },
4993                 .rlen   = 64,
4994         }, {
4995                 .key    = { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
4996                             0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
4997                             0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c },
4998                 .klen   = 24,
4999                 .iv     = { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad,
5000                             0xde, 0xca, 0xf8, 0x88 },
5001                 .input  = { 0x39, 0x80, 0xca, 0x0b, 0x3c, 0x00, 0xe8, 0x41,
5002                             0xeb, 0x06, 0xfa, 0xc4, 0x87, 0x2a, 0x27, 0x57,
5003                             0x85, 0x9e, 0x1c, 0xea, 0xa6, 0xef, 0xd9, 0x84,
5004                             0x62, 0x85, 0x93, 0xb4, 0x0c, 0xa1, 0xe1, 0x9c,
5005                             0x7d, 0x77, 0x3d, 0x00, 0xc1, 0x44, 0xc5, 0x25,
5006                             0xac, 0x61, 0x9d, 0x18, 0xc8, 0x4a, 0x3f, 0x47,
5007                             0x18, 0xe2, 0x44, 0x8b, 0x2f, 0xe3, 0x24, 0xd9,
5008                             0xcc, 0xda, 0x27, 0x10,
5009                             0x25, 0x19, 0x49, 0x8e, 0x80, 0xf1, 0x47, 0x8f,
5010                             0x37, 0xba, 0x55, 0xbd, 0x6d, 0x27, 0x61, 0x8c },
5011                 .ilen   = 76,
5012                 .assoc  = { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
5013                             0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef,
5014                             0xab, 0xad, 0xda, 0xd2 },
5015                 .alen   = 20,
5016                 .result = { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5,
5017                             0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a,
5018                             0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda,
5019                             0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72,
5020                             0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53,
5021                             0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25,
5022                             0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57,
5023                             0xba, 0x63, 0x7b, 0x39 },
5024                 .rlen   = 60,
5025         }
5026 };
5027
5028 static struct aead_testvec aes_ccm_enc_tv_template[] = {
5029         { /* From RFC 3610 */
5030                 .key    = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
5031                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf },
5032                 .klen   = 16,
5033                 .iv     = { 0x01, 0x00, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00,
5034                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 },
5035                 .assoc  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 },
5036                 .alen   = 8,
5037                 .input  = { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
5038                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
5039                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e },
5040                 .ilen   = 23,
5041                 .result = { 0x58, 0x8c, 0x97, 0x9a, 0x61, 0xc6, 0x63, 0xd2,
5042                             0xf0, 0x66, 0xd0, 0xc2, 0xc0, 0xf9, 0x89, 0x80,
5043                             0x6d, 0x5f, 0x6b, 0x61, 0xda, 0xc3, 0x84, 0x17,
5044                             0xe8, 0xd1, 0x2c, 0xfd, 0xf9, 0x26, 0xe0 },
5045                 .rlen   = 31,
5046         }, {
5047                 .key    = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
5048                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf },
5049                 .klen   = 16,
5050                 .iv     = { 0x01, 0x00, 0x00, 0x00, 0x07, 0x06, 0x05, 0x04,
5051                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 },
5052                 .assoc  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
5053                             0x08, 0x09, 0x0a, 0x0b },
5054                 .alen   = 12,
5055                 .input  = { 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13,
5056                             0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b,
5057                             0x1c, 0x1d, 0x1e, 0x1f },
5058                 .ilen   = 20,
5059                 .result = { 0xdc, 0xf1, 0xfb, 0x7b, 0x5d, 0x9e, 0x23, 0xfb,
5060                             0x9d, 0x4e, 0x13, 0x12, 0x53, 0x65, 0x8a, 0xd8,
5061                             0x6e, 0xbd, 0xca, 0x3e, 0x51, 0xe8, 0x3f, 0x07,
5062                             0x7d, 0x9c, 0x2d, 0x93 },
5063                 .rlen   = 28,
5064         }, {
5065                 .key    = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
5066                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf },
5067                 .klen   = 16,
5068                 .iv     = { 0x01, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x09, 0x08,
5069                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 },
5070                 .assoc  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 },
5071                 .alen   = 8,
5072                 .input  = { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
5073                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
5074                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
5075                             0x20 },
5076                 .ilen   = 25,
5077                 .result = { 0x82, 0x53, 0x1a, 0x60, 0xcc, 0x24, 0x94, 0x5a,
5078                             0x4b, 0x82, 0x79, 0x18, 0x1a, 0xb5, 0xc8, 0x4d,
5079                             0xf2, 0x1c, 0xe7, 0xf9, 0xb7, 0x3f, 0x42, 0xe1,
5080                             0x97, 0xea, 0x9c, 0x07, 0xe5, 0x6b, 0x5e, 0xb1,
5081                             0x7e, 0x5f, 0x4e },
5082                 .rlen   = 35,
5083         }, {
5084                 .key    = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
5085                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf },
5086                 .klen   = 16,
5087                 .iv     = { 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0b, 0x0a, 0x09,
5088                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 },
5089                 .assoc  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
5090                             0x08, 0x09, 0x0a, 0x0b },
5091                 .alen   = 12,
5092                 .input  = { 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13,
5093                             0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b,
5094                             0x1c, 0x1d, 0x1e },
5095                 .ilen   = 19,
5096                 .result = { 0x07, 0x34, 0x25, 0x94, 0x15, 0x77, 0x85, 0x15,
5097                             0x2b, 0x07, 0x40, 0x98, 0x33, 0x0a, 0xbb, 0x14,
5098                             0x1b, 0x94, 0x7b, 0x56, 0x6a, 0xa9, 0x40, 0x6b,
5099                             0x4d, 0x99, 0x99, 0x88, 0xdd },
5100                 .rlen   = 29,
5101         }, {
5102                 .key    = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3,
5103                             0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b },
5104                 .klen   = 16,
5105                 .iv     = { 0x01, 0x00, 0x33, 0x56, 0x8e, 0xf7, 0xb2, 0x63,
5106                             0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 },
5107                 .assoc  = { 0x63, 0x01, 0x8f, 0x76, 0xdc, 0x8a, 0x1b, 0xcb },
5108                 .alen   = 8,
5109                 .input  = { 0x90, 0x20, 0xea, 0x6f, 0x91, 0xbd, 0xd8, 0x5a,
5110                             0xfa, 0x00, 0x39, 0xba, 0x4b, 0xaf, 0xf9, 0xbf,
5111                             0xb7, 0x9c, 0x70, 0x28, 0x94, 0x9c, 0xd0, 0xec },
5112                 .ilen   = 24,
5113                 .result = { 0x4c, 0xcb, 0x1e, 0x7c, 0xa9, 0x81, 0xbe, 0xfa,
5114                             0xa0, 0x72, 0x6c, 0x55, 0xd3, 0x78, 0x06, 0x12,
5115                             0x98, 0xc8, 0x5c, 0x92, 0x81, 0x4a, 0xbc, 0x33,
5116                             0xc5, 0x2e, 0xe8, 0x1d, 0x7d, 0x77, 0xc0, 0x8a },
5117                 .rlen   = 32,
5118         }, {
5119                 .key    = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3,
5120                             0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b },
5121                 .klen   = 16,
5122                 .iv     = { 0x01, 0x00, 0xd5, 0x60, 0x91, 0x2d, 0x3f, 0x70,
5123                             0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 },
5124                 .assoc  = { 0xcd, 0x90, 0x44, 0xd2, 0xb7, 0x1f, 0xdb, 0x81,
5125                             0x20, 0xea, 0x60, 0xc0 },
5126                 .alen   = 12,
5127                 .input  = { 0x64, 0x35, 0xac, 0xba, 0xfb, 0x11, 0xa8, 0x2e,
5128                             0x2f, 0x07, 0x1d, 0x7c, 0xa4, 0xa5, 0xeb, 0xd9,
5129                             0x3a, 0x80, 0x3b, 0xa8, 0x7f },
5130                 .ilen   = 21,
5131                 .result = { 0x00, 0x97, 0x69, 0xec, 0xab, 0xdf, 0x48, 0x62,
5132                             0x55, 0x94, 0xc5, 0x92, 0x51, 0xe6, 0x03, 0x57,
5133                             0x22, 0x67, 0x5e, 0x04, 0xc8, 0x47, 0x09, 0x9e,
5134                             0x5a, 0xe0, 0x70, 0x45, 0x51 },
5135                 .rlen   = 29,
5136         }, {
5137                 .key    = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3,
5138                             0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b },
5139                 .klen   = 16,
5140                 .iv     = { 0x01, 0x00, 0x42, 0xff, 0xf8, 0xf1, 0x95, 0x1c,
5141                             0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 },
5142                 .assoc  = { 0xd8, 0x5b, 0xc7, 0xe6, 0x9f, 0x94, 0x4f, 0xb8 },
5143                 .alen   = 8,
5144                 .input  = { 0x8a, 0x19, 0xb9, 0x50, 0xbc, 0xf7, 0x1a, 0x01,
5145                             0x8e, 0x5e, 0x67, 0x01, 0xc9, 0x17, 0x87, 0x65,
5146                             0x98, 0x09, 0xd6, 0x7d, 0xbe, 0xdd, 0x18 },
5147                 .ilen   = 23,
5148                 .result = { 0xbc, 0x21, 0x8d, 0xaa, 0x94, 0x74, 0x27, 0xb6,
5149                             0xdb, 0x38, 0x6a, 0x99, 0xac, 0x1a, 0xef, 0x23,
5150                             0xad, 0xe0, 0xb5, 0x29, 0x39, 0xcb, 0x6a, 0x63,
5151                             0x7c, 0xf9, 0xbe, 0xc2, 0x40, 0x88, 0x97, 0xc6,
5152                             0xba },
5153                 .rlen   = 33,
5154         },
5155 };
5156
5157 static struct aead_testvec aes_ccm_dec_tv_template[] = {
5158         { /* From RFC 3610 */
5159                 .key    = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
5160                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf },
5161                 .klen   = 16,
5162                 .iv     = { 0x01, 0x00, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00,
5163                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 },
5164                 .assoc  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 },
5165                 .alen   = 8,
5166                 .input  = { 0x58, 0x8c, 0x97, 0x9a, 0x61, 0xc6, 0x63, 0xd2,
5167                             0xf0, 0x66, 0xd0, 0xc2, 0xc0, 0xf9, 0x89, 0x80,
5168                             0x6d, 0x5f, 0x6b, 0x61, 0xda, 0xc3, 0x84, 0x17,
5169                             0xe8, 0xd1, 0x2c, 0xfd, 0xf9, 0x26, 0xe0 },
5170                 .ilen   = 31,
5171                 .result = { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
5172                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
5173                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e },
5174                 .rlen   = 23,
5175         }, {
5176                 .key    = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
5177                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf },
5178                 .klen   = 16,
5179                 .iv     = { 0x01, 0x00, 0x00, 0x00, 0x07, 0x06, 0x05, 0x04,
5180                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 },
5181                 .assoc  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
5182                             0x08, 0x09, 0x0a, 0x0b },
5183                 .alen   = 12,
5184                 .input  = { 0xdc, 0xf1, 0xfb, 0x7b, 0x5d, 0x9e, 0x23, 0xfb,
5185                             0x9d, 0x4e, 0x13, 0x12, 0x53, 0x65, 0x8a, 0xd8,
5186                             0x6e, 0xbd, 0xca, 0x3e, 0x51, 0xe8, 0x3f, 0x07,
5187                             0x7d, 0x9c, 0x2d, 0x93 },
5188                 .ilen   = 28,
5189                 .result = { 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13,
5190                             0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b,
5191                             0x1c, 0x1d, 0x1e, 0x1f },
5192                 .rlen   = 20,
5193         }, {
5194                 .key    = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
5195                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf },
5196                 .klen   = 16,
5197                 .iv     = { 0x01, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x09, 0x08,
5198                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 },
5199                 .assoc  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 },
5200                 .alen   = 8,
5201                 .input  = { 0x82, 0x53, 0x1a, 0x60, 0xcc, 0x24, 0x94, 0x5a,
5202                             0x4b, 0x82, 0x79, 0x18, 0x1a, 0xb5, 0xc8, 0x4d,
5203                             0xf2, 0x1c, 0xe7, 0xf9, 0xb7, 0x3f, 0x42, 0xe1,
5204                             0x97, 0xea, 0x9c, 0x07, 0xe5, 0x6b, 0x5e, 0xb1,
5205                             0x7e, 0x5f, 0x4e },
5206                 .ilen   = 35,
5207                 .result = { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
5208                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
5209                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
5210                             0x20 },
5211                 .rlen   = 25,
5212         }, {
5213                 .key    = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
5214                             0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf },
5215                 .klen   = 16,
5216                 .iv     = { 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0b, 0x0a, 0x09,
5217                             0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0x00, 0x00 },
5218                 .assoc  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
5219                             0x08, 0x09, 0x0a, 0x0b },
5220                 .alen   = 12,
5221                 .input  = { 0x07, 0x34, 0x25, 0x94, 0x15, 0x77, 0x85, 0x15,
5222                             0x2b, 0x07, 0x40, 0x98, 0x33, 0x0a, 0xbb, 0x14,
5223                             0x1b, 0x94, 0x7b, 0x56, 0x6a, 0xa9, 0x40, 0x6b,
5224                             0x4d, 0x99, 0x99, 0x88, 0xdd },
5225                 .ilen   = 29,
5226                 .result = { 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13,
5227                             0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b,
5228                             0x1c, 0x1d, 0x1e },
5229                 .rlen   = 19,
5230         }, {
5231                 .key    = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3,
5232                             0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b },
5233                 .klen   = 16,
5234                 .iv     = { 0x01, 0x00, 0x33, 0x56, 0x8e, 0xf7, 0xb2, 0x63,
5235                             0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 },
5236                 .assoc  = { 0x63, 0x01, 0x8f, 0x76, 0xdc, 0x8a, 0x1b, 0xcb },
5237                 .alen   = 8,
5238                 .input  = { 0x4c, 0xcb, 0x1e, 0x7c, 0xa9, 0x81, 0xbe, 0xfa,
5239                             0xa0, 0x72, 0x6c, 0x55, 0xd3, 0x78, 0x06, 0x12,
5240                             0x98, 0xc8, 0x5c, 0x92, 0x81, 0x4a, 0xbc, 0x33,
5241                             0xc5, 0x2e, 0xe8, 0x1d, 0x7d, 0x77, 0xc0, 0x8a },
5242                 .ilen   = 32,
5243                 .result = { 0x90, 0x20, 0xea, 0x6f, 0x91, 0xbd, 0xd8, 0x5a,
5244                             0xfa, 0x00, 0x39, 0xba, 0x4b, 0xaf, 0xf9, 0xbf,
5245                             0xb7, 0x9c, 0x70, 0x28, 0x94, 0x9c, 0xd0, 0xec },
5246                 .rlen   = 24,
5247         }, {
5248                 .key    = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3,
5249                             0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b },
5250                 .klen   = 16,
5251                 .iv     = { 0x01, 0x00, 0xd5, 0x60, 0x91, 0x2d, 0x3f, 0x70,
5252                             0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 },
5253                 .assoc  = { 0xcd, 0x90, 0x44, 0xd2, 0xb7, 0x1f, 0xdb, 0x81,
5254                             0x20, 0xea, 0x60, 0xc0 },
5255                 .alen   = 12,
5256                 .input  = { 0x00, 0x97, 0x69, 0xec, 0xab, 0xdf, 0x48, 0x62,
5257                             0x55, 0x94, 0xc5, 0x92, 0x51, 0xe6, 0x03, 0x57,
5258                             0x22, 0x67, 0x5e, 0x04, 0xc8, 0x47, 0x09, 0x9e,
5259                             0x5a, 0xe0, 0x70, 0x45, 0x51 },
5260                 .ilen   = 29,
5261                 .result = { 0x64, 0x35, 0xac, 0xba, 0xfb, 0x11, 0xa8, 0x2e,
5262                             0x2f, 0x07, 0x1d, 0x7c, 0xa4, 0xa5, 0xeb, 0xd9,
5263                             0x3a, 0x80, 0x3b, 0xa8, 0x7f },
5264                 .rlen   = 21,
5265         }, {
5266                 .key    = { 0xd7, 0x82, 0x8d, 0x13, 0xb2, 0xb0, 0xbd, 0xc3,
5267                             0x25, 0xa7, 0x62, 0x36, 0xdf, 0x93, 0xcc, 0x6b },
5268                 .klen   = 16,
5269                 .iv     = { 0x01, 0x00, 0x42, 0xff, 0xf8, 0xf1, 0x95, 0x1c,
5270                             0x3c, 0x96, 0x96, 0x76, 0x6c, 0xfa, 0x00, 0x00 },
5271                 .assoc  = { 0xd8, 0x5b, 0xc7, 0xe6, 0x9f, 0x94, 0x4f, 0xb8 },
5272                 .alen   = 8,
5273                 .input  = { 0xbc, 0x21, 0x8d, 0xaa, 0x94, 0x74, 0x27, 0xb6,
5274                             0xdb, 0x38, 0x6a, 0x99, 0xac, 0x1a, 0xef, 0x23,
5275                             0xad, 0xe0, 0xb5, 0x29, 0x39, 0xcb, 0x6a, 0x63,
5276                             0x7c, 0xf9, 0xbe, 0xc2, 0x40, 0x88, 0x97, 0xc6,
5277                             0xba },
5278                 .ilen   = 33,
5279                 .result = { 0x8a, 0x19, 0xb9, 0x50, 0xbc, 0xf7, 0x1a, 0x01,
5280                             0x8e, 0x5e, 0x67, 0x01, 0xc9, 0x17, 0x87, 0x65,
5281                             0x98, 0x09, 0xd6, 0x7d, 0xbe, 0xdd, 0x18 },
5282                 .rlen   = 23,
5283         },
5284 };
5285
5286 /* Cast5 test vectors from RFC 2144 */
5287 #define CAST5_ENC_TEST_VECTORS  3
5288 #define CAST5_DEC_TEST_VECTORS  3
5289
5290 static struct cipher_testvec cast5_enc_tv_template[] = {
5291         {
5292                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78,
5293                             0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9a },
5294                 .klen   = 16,
5295                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5296                 .ilen   = 8,
5297                 .result = { 0x23, 0x8b, 0x4f, 0xe5, 0x84, 0x7e, 0x44, 0xb2 },
5298                 .rlen   = 8,
5299         }, {
5300                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78,
5301                             0x23, 0x45 },
5302                 .klen   = 10,
5303                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5304                 .ilen   = 8,
5305                 .result = { 0xeb, 0x6a, 0x71, 0x1a, 0x2c, 0x02, 0x27, 0x1b },
5306                 .rlen   = 8,
5307         }, {
5308                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x12 },
5309                 .klen   = 5,
5310                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5311                 .ilen   = 8,
5312                 .result = { 0x7a, 0xc8, 0x16, 0xd1, 0x6e, 0x9b, 0x30, 0x2e },
5313                 .rlen   = 8,
5314         },
5315 };
5316
5317 static struct cipher_testvec cast5_dec_tv_template[] = {
5318         {
5319                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78,
5320                             0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9a },
5321                 .klen   = 16,
5322                 .input  = { 0x23, 0x8b, 0x4f, 0xe5, 0x84, 0x7e, 0x44, 0xb2 },
5323                 .ilen   = 8,
5324                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5325                 .rlen   = 8,
5326         }, {
5327                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78,
5328                             0x23, 0x45 },
5329                 .klen   = 10,
5330                 .input  = { 0xeb, 0x6a, 0x71, 0x1a, 0x2c, 0x02, 0x27, 0x1b },
5331                 .ilen   = 8,
5332                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5333                 .rlen   = 8,
5334         }, {
5335                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x12 },
5336                 .klen   = 5,
5337                 .input  = { 0x7a, 0xc8, 0x16, 0xd1, 0x6e, 0x9b, 0x30, 0x2e },
5338                 .ilen   = 8,
5339                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5340                 .rlen   = 8,
5341         },
5342 };
5343
5344 /*
5345  * ARC4 test vectors from OpenSSL
5346  */
5347 #define ARC4_ENC_TEST_VECTORS   7
5348 #define ARC4_DEC_TEST_VECTORS   7
5349
5350 static struct cipher_testvec arc4_enc_tv_template[] = {
5351         {
5352                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5353                 .klen   = 8,
5354                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5355                 .ilen   = 8,
5356                 .result = { 0x75, 0xb7, 0x87, 0x80, 0x99, 0xe0, 0xc5, 0x96 },
5357                 .rlen   = 8,
5358         }, {
5359                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5360                 .klen   = 8,
5361                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5362                 .ilen   = 8,
5363                 .result = { 0x74, 0x94, 0xc2, 0xe7, 0x10, 0x4b, 0x08, 0x79 },
5364                 .rlen   = 8,
5365         }, {
5366                 .key    = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5367                 .klen   = 8,
5368                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5369                 .ilen   = 8,
5370                 .result = { 0xde, 0x18, 0x89, 0x41, 0xa3, 0x37, 0x5d, 0x3a },
5371                 .rlen   = 8,
5372         }, {
5373                 .key    = { 0xef, 0x01, 0x23, 0x45},
5374                 .klen   = 4,
5375                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5376                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5377                             0x00, 0x00, 0x00, 0x00 },
5378                 .ilen   = 20,
5379                 .result = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf,
5380                             0xbd, 0x61, 0x5a, 0x11, 0x62, 0xe1, 0xc7, 0xba,
5381                             0x36, 0xb6, 0x78, 0x58 },
5382                 .rlen   = 20,
5383         }, {
5384                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5385                 .klen   = 8,
5386                 .input  = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
5387                             0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
5388                             0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
5389                             0x12, 0x34, 0x56, 0x78 },
5390                 .ilen   = 28,
5391                 .result = { 0x66, 0xa0, 0x94, 0x9f, 0x8a, 0xf7, 0xd6, 0x89,
5392                             0x1f, 0x7f, 0x83, 0x2b, 0xa8, 0x33, 0xc0, 0x0c,
5393                             0x89, 0x2e, 0xbe, 0x30, 0x14, 0x3c, 0xe2, 0x87,
5394                             0x40, 0x01, 0x1e, 0xcf },
5395                 .rlen   = 28,
5396         }, {
5397                 .key    = { 0xef, 0x01, 0x23, 0x45 },
5398                 .klen   = 4,
5399                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5400                             0x00, 0x00 },
5401                 .ilen   = 10,
5402                 .result = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf,
5403                             0xbd, 0x61 },
5404                 .rlen   = 10,
5405         }, {
5406                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
5407                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5408                 .klen   = 16,
5409                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF },
5410                 .ilen   = 8,
5411                 .result = { 0x69, 0x72, 0x36, 0x59, 0x1B, 0x52, 0x42, 0xB1 },
5412                 .rlen   = 8,
5413         },
5414 };
5415
5416 static struct cipher_testvec arc4_dec_tv_template[] = {
5417         {
5418                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5419                 .klen   = 8,
5420                 .input  = { 0x75, 0xb7, 0x87, 0x80, 0x99, 0xe0, 0xc5, 0x96 },
5421                 .ilen   = 8,
5422                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5423                 .rlen   = 8,
5424         }, {
5425                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5426                 .klen   = 8,
5427                 .input  = { 0x74, 0x94, 0xc2, 0xe7, 0x10, 0x4b, 0x08, 0x79 },
5428                 .ilen   = 8,
5429                 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5430                 .rlen   = 8,
5431         }, {
5432                 .key    = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5433                 .klen   = 8,
5434                 .input  = { 0xde, 0x18, 0x89, 0x41, 0xa3, 0x37, 0x5d, 0x3a },
5435                 .ilen   = 8,
5436                 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5437                 .rlen   = 8,
5438         }, {
5439                 .key    = { 0xef, 0x01, 0x23, 0x45},
5440                 .klen   = 4,
5441                 .input  = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf,
5442                             0xbd, 0x61, 0x5a, 0x11, 0x62, 0xe1, 0xc7, 0xba,
5443                             0x36, 0xb6, 0x78, 0x58 },
5444                 .ilen   = 20,
5445                 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5446                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5447                             0x00, 0x00, 0x00, 0x00 },
5448                 .rlen   = 20,
5449         }, {
5450                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
5451                 .klen   = 8,
5452                 .input  = { 0x66, 0xa0, 0x94, 0x9f, 0x8a, 0xf7, 0xd6, 0x89,
5453                             0x1f, 0x7f, 0x83, 0x2b, 0xa8, 0x33, 0xc0, 0x0c,
5454                             0x89, 0x2e, 0xbe, 0x30, 0x14, 0x3c, 0xe2, 0x87,
5455                             0x40, 0x01, 0x1e, 0xcf },
5456                 .ilen   = 28,
5457                 .result = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
5458                             0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
5459                             0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
5460                             0x12, 0x34, 0x56, 0x78 },
5461                 .rlen   = 28,
5462         }, {
5463                 .key    = { 0xef, 0x01, 0x23, 0x45 },
5464                 .klen   = 4,
5465                 .input  = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf,
5466                             0xbd, 0x61 },
5467                 .ilen   = 10,
5468                 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5469                             0x00, 0x00 },
5470                 .rlen   = 10,
5471         }, {
5472                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
5473                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5474                 .klen   = 16,
5475                 .input  = { 0x69, 0x72, 0x36, 0x59, 0x1B, 0x52, 0x42, 0xB1 },
5476                 .ilen   = 8,
5477                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF },
5478                 .rlen   = 8,
5479         },
5480 };
5481
5482 /*
5483  * TEA test vectors
5484  */
5485 #define TEA_ENC_TEST_VECTORS    4
5486 #define TEA_DEC_TEST_VECTORS    4
5487
5488 static struct cipher_testvec tea_enc_tv_template[] = {
5489         {
5490                 .key    = { [0 ... 15] = 0x00 },
5491                 .klen   = 16,
5492                 .input  = { [0 ... 8] = 0x00 },
5493                 .ilen   = 8,
5494                 .result = { 0x0a, 0x3a, 0xea, 0x41, 0x40, 0xa9, 0xba, 0x94 },
5495                 .rlen   = 8,
5496         }, {
5497                 .key    = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
5498                             0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
5499                 .klen   = 16,
5500                 .input  = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
5501                 .ilen   = 8,
5502                 .result = { 0x77, 0x5d, 0x2a, 0x6a, 0xf6, 0xce, 0x92, 0x09 },
5503                 .rlen   = 8,
5504         }, {
5505                 .key    = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
5506                             0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
5507                 .klen   = 16,
5508                 .input  = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74,
5509                             0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
5510                 .ilen   = 16,
5511                 .result = { 0xbe, 0x7a, 0xbb, 0x81, 0x95, 0x2d, 0x1f, 0x1e,
5512                             0xdd, 0x89, 0xa1, 0x25, 0x04, 0x21, 0xdf, 0x95 },
5513                 .rlen   = 16,
5514         }, {
5515                 .key    = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
5516                             0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
5517                 .klen   = 16,
5518                 .input  = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67,
5519                             0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20,
5520                             0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72,
5521                             0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
5522                 .ilen   = 32,
5523                 .result = { 0xe0, 0x4d, 0x5d, 0x3c, 0xb7, 0x8c, 0x36, 0x47,
5524                             0x94, 0x18, 0x95, 0x91, 0xa9, 0xfc, 0x49, 0xf8,
5525                             0x44, 0xd1, 0x2d, 0xc2, 0x99, 0xb8, 0x08, 0x2a,
5526                             0x07, 0x89, 0x73, 0xc2, 0x45, 0x92, 0xc6, 0x90 },
5527                 .rlen   = 32,
5528         }
5529 };
5530
5531 static struct cipher_testvec tea_dec_tv_template[] = {
5532         {
5533                 .key    = { [0 ... 15] = 0x00 },
5534                 .klen   = 16,
5535                 .input  = { 0x0a, 0x3a, 0xea, 0x41, 0x40, 0xa9, 0xba, 0x94 },
5536                 .ilen   = 8,
5537                 .result = { [0 ... 8] = 0x00 },
5538                 .rlen   = 8,
5539         }, {
5540                 .key    = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
5541                             0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
5542                 .klen   = 16,
5543                 .input  = { 0x77, 0x5d, 0x2a, 0x6a, 0xf6, 0xce, 0x92, 0x09 },
5544                 .ilen   = 8,
5545                 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
5546                 .rlen   = 8,
5547         }, {
5548                 .key    = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
5549                             0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
5550                 .klen   = 16,
5551                 .input  = { 0xbe, 0x7a, 0xbb, 0x81, 0x95, 0x2d, 0x1f, 0x1e,
5552                             0xdd, 0x89, 0xa1, 0x25, 0x04, 0x21, 0xdf, 0x95 },
5553                 .ilen   = 16,
5554                 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74,
5555                             0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
5556                 .rlen   = 16,
5557         }, {
5558                 .key    = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
5559                             0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
5560                 .klen   = 16,
5561                 .input  = { 0xe0, 0x4d, 0x5d, 0x3c, 0xb7, 0x8c, 0x36, 0x47,
5562                             0x94, 0x18, 0x95, 0x91, 0xa9, 0xfc, 0x49, 0xf8,
5563                             0x44, 0xd1, 0x2d, 0xc2, 0x99, 0xb8, 0x08, 0x2a,
5564                             0x07, 0x89, 0x73, 0xc2, 0x45, 0x92, 0xc6, 0x90 },
5565                 .ilen   = 32,
5566                 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67,
5567                             0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20,
5568                             0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72,
5569                             0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
5570                 .rlen   = 32,
5571         }
5572 };
5573
5574 /*
5575  * XTEA test vectors
5576  */
5577 #define XTEA_ENC_TEST_VECTORS   4
5578 #define XTEA_DEC_TEST_VECTORS   4
5579
5580 static struct cipher_testvec xtea_enc_tv_template[] = {
5581         {
5582                 .key    = { [0 ... 15] = 0x00 },
5583                 .klen   = 16,
5584                 .input  = { [0 ... 8] = 0x00 },
5585                 .ilen   = 8,
5586                 .result = { 0xd8, 0xd4, 0xe9, 0xde, 0xd9, 0x1e, 0x13, 0xf7 },
5587                 .rlen   = 8,
5588         }, {
5589                 .key    = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
5590                             0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
5591                 .klen   = 16,
5592                 .input  = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
5593                 .ilen   = 8,
5594                 .result = { 0x94, 0xeb, 0xc8, 0x96, 0x84, 0x6a, 0x49, 0xa8 },
5595                 .rlen   = 8,
5596         }, {
5597                 .key    = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
5598                             0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
5599                 .klen   = 16,
5600                 .input  = { 0x3e, 0xce, 0xae, 0x22, 0x60, 0x56, 0xa8, 0x9d,
5601                             0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
5602                 .ilen   = 16,
5603                 .result = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea, 
5604                             0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c },
5605                 .rlen   = 16,
5606         }, {
5607                 .key    = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
5608                             0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
5609                 .klen   = 16,
5610                 .input  = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 
5611                             0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 
5612                             0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 
5613                             0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
5614                 .ilen   = 32,
5615                 .result = { 0x99, 0x81, 0x9f, 0x5d, 0x6f, 0x4b, 0x31, 0x3a,
5616                             0x86, 0xff, 0x6f, 0xd0, 0xe3, 0x87, 0x70, 0x07,
5617                             0x4d, 0xb8, 0xcf, 0xf3, 0x99, 0x50, 0xb3, 0xd4,
5618                             0x73, 0xa2, 0xfa, 0xc9, 0x16, 0x59, 0x5d, 0x81 },
5619                 .rlen   = 32,
5620         }
5621 };
5622
5623 static struct cipher_testvec xtea_dec_tv_template[] = {
5624         {
5625                 .key    = { [0 ... 15] = 0x00 },
5626                 .klen   = 16,
5627                 .input  = { 0xd8, 0xd4, 0xe9, 0xde, 0xd9, 0x1e, 0x13, 0xf7 },
5628                 .ilen   = 8,
5629                 .result = { [0 ... 8] = 0x00 },
5630                 .rlen   = 8,
5631         }, {
5632                 .key    = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
5633                             0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
5634                 .klen   = 16,
5635                 .input  = { 0x94, 0xeb, 0xc8, 0x96, 0x84, 0x6a, 0x49, 0xa8 },
5636                 .ilen   = 8,
5637                 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
5638                 .rlen   = 8,
5639         }, {
5640                 .key    = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
5641                             0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
5642                 .klen   = 16,
5643                 .input  = { 0x3e, 0xce, 0xae, 0x22, 0x60, 0x56, 0xa8, 0x9d,
5644                             0x77, 0x4d, 0xd4, 0xb4, 0x87, 0x24, 0xe3, 0x9a },
5645                 .ilen   = 16,
5646                 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 
5647                             0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
5648                 .rlen   = 16,
5649         }, {
5650                 .key    = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
5651                             0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
5652                 .klen   = 16,
5653                 .input  = { 0x99, 0x81, 0x9f, 0x5d, 0x6f, 0x4b, 0x31, 0x3a,
5654                             0x86, 0xff, 0x6f, 0xd0, 0xe3, 0x87, 0x70, 0x07,
5655                             0x4d, 0xb8, 0xcf, 0xf3, 0x99, 0x50, 0xb3, 0xd4,
5656                             0x73, 0xa2, 0xfa, 0xc9, 0x16, 0x59, 0x5d, 0x81 },
5657                 .ilen   = 32,
5658                 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 
5659                             0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 
5660                             0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 
5661                             0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
5662                 .rlen   = 32,
5663         }
5664 };
5665
5666 /*
5667  * KHAZAD test vectors.
5668  */
5669 #define KHAZAD_ENC_TEST_VECTORS 5
5670 #define KHAZAD_DEC_TEST_VECTORS 5
5671
5672 static struct cipher_testvec khazad_enc_tv_template[] = {
5673         {
5674                 .key    = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5675                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5676                 .klen   = 16,
5677                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5678                 .ilen   = 8,
5679                 .result = { 0x49, 0xa4, 0xce, 0x32, 0xac, 0x19, 0x0e, 0x3f },
5680                 .rlen   = 8,
5681         }, {
5682                 .key    = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
5683                             0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 },
5684                 .klen   = 16,
5685                 .input  = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 },
5686                 .ilen   = 8,
5687                 .result = { 0x7e, 0x82, 0x12, 0xa1, 0Xd9, 0X5b, 0Xe4, 0Xf9 },
5688                 .rlen   = 8,
5689         }, {
5690                 .key    = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2,
5691                             0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 },
5692                 .klen   = 16,
5693                 .input  = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 },
5694                 .ilen   = 8,
5695                 .result = { 0Xaa, 0Xbe, 0Xc1, 0X95, 0Xc5, 0X94, 0X1a, 0X9c },
5696                 .rlen   = 8,
5697         }, {
5698                 .key    = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f,
5699                             0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
5700                 .klen   = 16,
5701                 .input  = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
5702                 .ilen   = 8,
5703                 .result = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 },
5704                 .rlen   = 8,
5705         }, {
5706                 .key    = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f,
5707                             0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
5708                 .klen   = 16,
5709                 .input  = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f ,
5710                             0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
5711                 .ilen   = 16,
5712                 .result = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 ,
5713                             0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 },
5714                 .rlen   = 16,
5715         },
5716 };
5717
5718 static struct cipher_testvec khazad_dec_tv_template[] = {
5719         {
5720                 .key    = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5721                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5722                 .klen   = 16,
5723                 .input  = { 0X49, 0Xa4, 0Xce, 0X32, 0Xac, 0X19, 0X0e, 0X3f },
5724                 .ilen   = 8,
5725                 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
5726                 .rlen   = 8,
5727         }, {
5728                 .key    = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
5729                             0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 },
5730                 .klen   = 16,
5731                 .input  = { 0X7e, 0X82, 0X12, 0Xa1, 0Xd9, 0X5b, 0Xe4, 0Xf9 },
5732                 .ilen   = 8,
5733                 .result = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 },
5734                 .rlen   = 8,
5735         }, {
5736                 .key    = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2,
5737                             0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 },
5738                 .klen   = 16,
5739                 .input  = { 0Xaa, 0Xbe, 0Xc1, 0X95, 0Xc5, 0X94, 0X1a, 0X9c },
5740                 .ilen   = 8,
5741                 .result = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 },
5742                 .rlen   = 8,
5743         }, {
5744                 .key    = { 0x2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f,
5745                             0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
5746                 .klen   = 16,
5747                 .input = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 },
5748                 .ilen   = 8,
5749                 .result = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
5750                 .rlen   = 8,
5751         }, {
5752                 .key    = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f,
5753                             0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
5754                 .klen   = 16,
5755                 .input = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 ,
5756                             0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 },
5757                 .ilen   = 16,
5758                 .result = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f ,
5759                             0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
5760                 .rlen   = 16,
5761         },
5762 };
5763
5764 /*
5765  * Anubis test vectors.
5766  */
5767
5768 #define ANUBIS_ENC_TEST_VECTORS                 5
5769 #define ANUBIS_DEC_TEST_VECTORS                 5
5770 #define ANUBIS_CBC_ENC_TEST_VECTORS             2
5771 #define ANUBIS_CBC_DEC_TEST_VECTORS             2
5772
5773 static struct cipher_testvec anubis_enc_tv_template[] = {
5774         {
5775                 .key    = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5776                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
5777                 .klen   = 16,
5778                 .input  = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5779                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
5780                 .ilen   = 16,
5781                 .result = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f,
5782                             0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90 },
5783                 .rlen   = 16,
5784         }, {
5785
5786                 .key    = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
5787                             0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
5788                             0x03, 0x03, 0x03, 0x03 },
5789                 .klen   = 20,
5790                 .input  = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
5791                             0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 },
5792                 .ilen   = 16,
5793                 .result = { 0xdb, 0xf1, 0x42, 0xf4, 0xd1, 0x8a, 0xc7, 0x49,
5794                             0x87, 0x41, 0x6f, 0x82, 0x0a, 0x98, 0x64, 0xae },
5795                 .rlen   = 16,
5796         }, {
5797                 .key    = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
5798                             0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
5799                             0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
5800                             0x24, 0x24, 0x24, 0x24 },
5801                 .klen   = 28,
5802                 .input  = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
5803                             0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24 },
5804                 .ilen   = 16,
5805                 .result = { 0xfd, 0x1b, 0x4a, 0xe3, 0xbf, 0xf0, 0xad, 0x3d,
5806                             0x06, 0xd3, 0x61, 0x27, 0xfd, 0x13, 0x9e, 0xde },
5807                 .rlen   = 16,
5808         }, {
5809                 .key    = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
5810                             0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
5811                             0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
5812                             0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 },
5813                 .klen   = 32,
5814                 .input  = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
5815                             0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 },
5816                 .ilen   = 16,
5817                 .result = { 0x1a, 0x91, 0xfb, 0x2b, 0xb7, 0x78, 0x6b, 0xc4,
5818                             0x17, 0xd9, 0xff, 0x40, 0x3b, 0x0e, 0xe5, 0xfe },
5819                 .rlen   = 16,
5820         }, {
5821                 .key    = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5822                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5823                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5824                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5825                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
5826                 .klen   = 40,
5827                 .input  = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5828                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
5829                 .ilen   = 16,
5830                 .result = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97,
5831                             0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee },
5832                 .rlen   = 16,
5833         },
5834 };
5835
5836 static struct cipher_testvec anubis_dec_tv_template[] = {
5837         {
5838                 .key    = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5839                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
5840                 .klen   = 16,
5841                 .input  = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f,
5842                             0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90 },
5843                 .ilen   = 16,
5844                 .result = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5845                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
5846                 .rlen   = 16,
5847         }, {
5848
5849                 .key    = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
5850                             0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
5851                             0x03, 0x03, 0x03, 0x03 },
5852                 .klen   = 20,
5853                 .input  = { 0xdb, 0xf1, 0x42, 0xf4, 0xd1, 0x8a, 0xc7, 0x49,
5854                             0x87, 0x41, 0x6f, 0x82, 0x0a, 0x98, 0x64, 0xae },
5855                 .ilen   = 16,
5856                 .result = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
5857                             0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 },
5858                 .rlen   = 16,
5859         }, {
5860                 .key    = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
5861                             0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
5862                             0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
5863                             0x24, 0x24, 0x24, 0x24 },
5864                 .klen   = 28,
5865                 .input  = { 0xfd, 0x1b, 0x4a, 0xe3, 0xbf, 0xf0, 0xad, 0x3d,
5866                             0x06, 0xd3, 0x61, 0x27, 0xfd, 0x13, 0x9e, 0xde },
5867                 .ilen   = 16,
5868                 .result = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
5869                             0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24 },
5870                 .rlen   = 16,
5871         }, {
5872                 .key    = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
5873                             0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
5874                             0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
5875                             0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 },
5876                 .klen   = 32,
5877                 .input  = { 0x1a, 0x91, 0xfb, 0x2b, 0xb7, 0x78, 0x6b, 0xc4,
5878                             0x17, 0xd9, 0xff, 0x40, 0x3b, 0x0e, 0xe5, 0xfe },
5879                 .ilen   = 16,
5880                 .result = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
5881                             0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 },
5882                 .rlen   = 16,
5883         }, {
5884                 .key    = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5885                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5886                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5887                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5888                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
5889                 .input = {  0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97,
5890                             0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee },
5891                 .klen   = 40,
5892                 .ilen   = 16,
5893                 .result = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5894                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
5895                 .rlen   = 16,
5896         },
5897 };
5898
5899 static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
5900         {
5901                 .key    = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5902                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
5903                 .klen   = 16,
5904                 .input  = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5905                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5906                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5907                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
5908                 .ilen   = 32,
5909                 .result = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f,
5910                             0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90,
5911                             0x86, 0xd8, 0xb5, 0x6f, 0x98, 0x5e, 0x8a, 0x66,
5912                             0x4f, 0x1f, 0x78, 0xa1, 0xbb, 0x37, 0xf1, 0xbe },
5913                 .rlen   = 32,
5914         }, {
5915                 .key    = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5916                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5917                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5918                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5919                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
5920                 .klen   = 40,
5921                 .input  = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5922                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5923                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5924                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
5925                 .ilen   = 32,
5926                 .result = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97,
5927                             0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee,
5928                             0xa2, 0xbc, 0x06, 0x98, 0xc6, 0x4b, 0xda, 0x75,
5929                             0x2e, 0xaa, 0xbe, 0x58, 0xce, 0x01, 0x5b, 0xc7 },
5930                 .rlen   = 32,
5931         },
5932 };
5933
5934 static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
5935         {
5936                 .key    = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5937                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
5938                 .klen   = 16,
5939                 .input  = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f,
5940                             0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90,
5941                             0x86, 0xd8, 0xb5, 0x6f, 0x98, 0x5e, 0x8a, 0x66,
5942                             0x4f, 0x1f, 0x78, 0xa1, 0xbb, 0x37, 0xf1, 0xbe },
5943                 .ilen   = 32,
5944                 .result = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5945                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5946                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
5947                             0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
5948                 .rlen   = 32,
5949         }, {
5950                 .key    = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5951                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5952                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5953                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5954                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
5955                 .klen   = 40,
5956                 .input = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97,
5957                             0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee,
5958                             0xa2, 0xbc, 0x06, 0x98, 0xc6, 0x4b, 0xda, 0x75,
5959                             0x2e, 0xaa, 0xbe, 0x58, 0xce, 0x01, 0x5b, 0xc7 },
5960                 .ilen   = 32,
5961                 .result = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5962                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5963                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
5964                             0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
5965                 .rlen   = 32,
5966         },
5967 };
5968
5969 /* 
5970  * XETA test vectors 
5971  */
5972 #define XETA_ENC_TEST_VECTORS   4
5973 #define XETA_DEC_TEST_VECTORS   4
5974
5975 static struct cipher_testvec xeta_enc_tv_template[] = {
5976         {
5977                 .key    = { [0 ... 15] = 0x00 },
5978                 .klen   = 16,
5979                 .input  = { [0 ... 8] = 0x00 },
5980                 .ilen   = 8,
5981                 .result = { 0xaa, 0x22, 0x96, 0xe5, 0x6c, 0x61, 0xf3, 0x45 },
5982                 .rlen   = 8,
5983         }, {
5984                 .key    = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
5985                             0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
5986                 .klen   = 16,
5987                 .input  = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
5988                 .ilen   = 8,
5989                 .result = { 0x82, 0x3e, 0xeb, 0x35, 0xdc, 0xdd, 0xd9, 0xc3 },
5990                 .rlen   = 8,
5991         }, {
5992                 .key    = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
5993                             0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
5994                 .klen   = 16,
5995                 .input  = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 
5996                             0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
5997                 .ilen   = 16,
5998                 .result = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea, 
5999                             0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c },
6000                 .rlen   = 16,
6001         }, {
6002                 .key    = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
6003                             0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
6004                 .klen   = 16,
6005                 .input  = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 
6006                             0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 
6007                             0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 
6008                             0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
6009                 .ilen   = 32,
6010                 .result = { 0x0b, 0x03, 0xcd, 0x8a, 0xbe, 0x95, 0xfd, 0xb1, 
6011                             0xc1, 0x44, 0x91, 0x0b, 0xa5, 0xc9, 0x1b, 0xb4, 
6012                             0xa9, 0xda, 0x1e, 0x9e, 0xb1, 0x3e, 0x2a, 0x8f, 
6013                             0xea, 0xa5, 0x6a, 0x85, 0xd1, 0xf4, 0xa8, 0xa5 },
6014                 .rlen   = 32,
6015         }
6016 };
6017
6018 static struct cipher_testvec xeta_dec_tv_template[] = {
6019         {
6020                 .key    = { [0 ... 15] = 0x00 },
6021                 .klen   = 16,
6022                 .input  = { 0xaa, 0x22, 0x96, 0xe5, 0x6c, 0x61, 0xf3, 0x45 },
6023                 .ilen   = 8,
6024                 .result = { [0 ... 8] = 0x00 },
6025                 .rlen   = 8,
6026         }, {
6027                 .key    = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
6028                             0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
6029                 .klen   = 16,
6030                 .input  = { 0x82, 0x3e, 0xeb, 0x35, 0xdc, 0xdd, 0xd9, 0xc3 },
6031                 .ilen   = 8,
6032                 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
6033                 .rlen   = 8,
6034         }, {
6035                 .key    = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
6036                             0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
6037                 .klen   = 16,
6038                 .input  = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea, 
6039                             0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c },
6040                 .ilen   = 16,
6041                 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 
6042                             0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
6043                 .rlen   = 16,
6044         }, {
6045                 .key    = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
6046                             0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
6047                 .klen   = 16,
6048                 .input  = { 0x0b, 0x03, 0xcd, 0x8a, 0xbe, 0x95, 0xfd, 0xb1, 
6049                             0xc1, 0x44, 0x91, 0x0b, 0xa5, 0xc9, 0x1b, 0xb4, 
6050                             0xa9, 0xda, 0x1e, 0x9e, 0xb1, 0x3e, 0x2a, 0x8f, 
6051                             0xea, 0xa5, 0x6a, 0x85, 0xd1, 0xf4, 0xa8, 0xa5 },
6052                 .ilen   = 32,
6053                 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 
6054                             0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 
6055                             0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 
6056                             0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
6057                 .rlen   = 32,
6058         }
6059 };
6060
6061 /* 
6062  * FCrypt test vectors 
6063  */
6064 #define FCRYPT_ENC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_enc_tv_template)
6065 #define FCRYPT_DEC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_dec_tv_template)
6066
6067 static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
6068         { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
6069                 .key    = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
6070                 .klen   = 8,
6071                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
6072                 .input  = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
6073                 .ilen   = 8,
6074                 .result = { 0x0E, 0x09, 0x00, 0xC7, 0x3E, 0xF7, 0xED, 0x41 },
6075                 .rlen   = 8,
6076         }, {
6077                 .key    = { 0x11, 0x44, 0x77, 0xAA, 0xDD, 0x00, 0x33, 0x66 },
6078                 .klen   = 8,
6079                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
6080                 .input  = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0 },
6081                 .ilen   = 8,
6082                 .result = { 0xD8, 0xED, 0x78, 0x74, 0x77, 0xEC, 0x06, 0x80 },
6083                 .rlen   = 8,
6084         }, { /* From Arla */
6085                 .key    = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
6086                 .klen   = 8,
6087                 .iv     = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6088                 .input  = "The quick brown fox jumps over the lazy dogs.\0\0",
6089                 .ilen   = 48,
6090                 .result = { 0x00, 0xf0, 0xe,  0x11, 0x75, 0xe6, 0x23, 0x82,
6091                             0xee, 0xac, 0x98, 0x62, 0x44, 0x51, 0xe4, 0x84,
6092                             0xc3, 0x59, 0xd8, 0xaa, 0x64, 0x60, 0xae, 0xf7,
6093                             0xd2, 0xd9, 0x13, 0x79, 0x72, 0xa3, 0x45, 0x03,
6094                             0x23, 0xb5, 0x62, 0xd7, 0x0c, 0xf5, 0x27, 0xd1,
6095                             0xf8, 0x91, 0x3c, 0xac, 0x44, 0x22, 0x92, 0xef },
6096                 .rlen   = 48,
6097         }, {
6098                 .key    = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6099                 .klen   = 8,
6100                 .iv     = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
6101                 .input  = "The quick brown fox jumps over the lazy dogs.\0\0",
6102                 .ilen   = 48,
6103                 .result = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c,
6104                             0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d,
6105                             0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58,
6106                             0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0,
6107                             0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94,
6108                             0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f },
6109                 .rlen   = 48,
6110         }, { /* split-page version */
6111                 .key    = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6112                 .klen   = 8,
6113                 .iv     = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
6114                 .input  = "The quick brown fox jumps over the lazy dogs.\0\0",
6115                 .ilen   = 48,
6116                 .result = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c,
6117                             0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d,
6118                             0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58,
6119                             0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0,
6120                             0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94,
6121                             0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f },
6122                 .rlen   = 48,
6123                 .np     = 2,
6124                 .tap    = { 20, 28 },
6125         }
6126 };
6127
6128 static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
6129         { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
6130                 .key    = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
6131                 .klen   = 8,
6132                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
6133                 .input  = { 0x0E, 0x09, 0x00, 0xC7, 0x3E, 0xF7, 0xED, 0x41 },
6134                 .ilen   = 8,
6135                 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
6136                 .rlen   = 8,
6137         }, {
6138                 .key    = { 0x11, 0x44, 0x77, 0xAA, 0xDD, 0x00, 0x33, 0x66 },
6139                 .klen   = 8,
6140                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
6141                 .input  = { 0xD8, 0xED, 0x78, 0x74, 0x77, 0xEC, 0x06, 0x80 },
6142                 .ilen   = 8,
6143                 .result = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0 },
6144                 .rlen   = 8,
6145         }, { /* From Arla */
6146                 .key    = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
6147                 .klen   = 8,
6148                 .iv     = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6149                 .input  = { 0x00, 0xf0, 0xe,  0x11, 0x75, 0xe6, 0x23, 0x82,
6150                             0xee, 0xac, 0x98, 0x62, 0x44, 0x51, 0xe4, 0x84,
6151                             0xc3, 0x59, 0xd8, 0xaa, 0x64, 0x60, 0xae, 0xf7,
6152                             0xd2, 0xd9, 0x13, 0x79, 0x72, 0xa3, 0x45, 0x03,
6153                             0x23, 0xb5, 0x62, 0xd7, 0x0c, 0xf5, 0x27, 0xd1,
6154                             0xf8, 0x91, 0x3c, 0xac, 0x44, 0x22, 0x92, 0xef },
6155                 .ilen   = 48,
6156                 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6157                 .rlen   = 48,
6158         }, {
6159                 .key    = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6160                 .klen   = 8,
6161                 .iv     = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
6162                 .input  = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c,
6163                             0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d,
6164                             0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58,
6165                             0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0,
6166                             0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94,
6167                             0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f },
6168                 .ilen   = 48,
6169                 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6170                 .rlen   = 48,
6171         }, { /* split-page version */
6172                 .key    = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6173                 .klen   = 8,
6174                 .iv     = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
6175                 .input  = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c,
6176                             0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d,
6177                             0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58,
6178                             0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0,
6179                             0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94,
6180                             0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f },
6181                 .ilen   = 48,
6182                 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6183                 .rlen   = 48,
6184                 .np     = 2,
6185                 .tap    = { 20, 28 },
6186         }
6187 };
6188
6189 /*
6190  * CAMELLIA test vectors.
6191  */
6192 #define CAMELLIA_ENC_TEST_VECTORS 3
6193 #define CAMELLIA_DEC_TEST_VECTORS 3
6194 #define CAMELLIA_CBC_ENC_TEST_VECTORS 2
6195 #define CAMELLIA_CBC_DEC_TEST_VECTORS 2
6196
6197 static struct cipher_testvec camellia_enc_tv_template[] = {
6198         {
6199                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6200                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6201                 .klen   = 16,
6202                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6203                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6204                 .ilen   = 16,
6205                 .result = { 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73,
6206                             0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 },
6207                 .rlen   = 16,
6208         }, {
6209                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6210                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
6211                             0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
6212                 .klen   = 24,
6213                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6214                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6215                 .ilen   = 16,
6216                 .result = { 0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8,
6217                             0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9 },
6218                 .rlen   = 16,
6219         }, {
6220                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6221                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
6222                             0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
6223                             0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
6224                 .klen   = 32,
6225                 .input  = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6226                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6227                 .ilen   = 16,
6228                 .result = { 0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c,
6229                             0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09 },
6230                 .rlen   = 16,
6231         },
6232 };
6233
6234 static struct cipher_testvec camellia_dec_tv_template[] = {
6235         {
6236                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6237                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6238                 .klen   = 16,
6239                 .input  = { 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73,
6240                             0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 },
6241                 .ilen   = 16,
6242                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6243                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6244                 .rlen   = 16,
6245         }, {
6246                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6247                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
6248                             0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
6249                 .klen   = 24,
6250                 .input  = { 0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8,
6251                             0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9 },
6252                 .ilen   = 16,
6253                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6254                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6255                 .rlen   = 16,
6256         }, {
6257                 .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6258                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
6259                             0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
6260                             0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
6261                 .klen   = 32,
6262                 .input  = { 0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c,
6263                             0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09 },
6264                 .ilen   = 16,
6265                 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
6266                             0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
6267                 .rlen   = 16,
6268         },
6269 };
6270
6271 static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
6272         {
6273                 .key    = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b,
6274                             0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 },
6275                 .klen   = 16,
6276                 .iv     = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30,
6277                             0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 },
6278                 .input  = { "Single block msg" },
6279                 .ilen   = 16,
6280                 .result = { 0xea, 0x32, 0x12, 0x76, 0x3b, 0x50, 0x10, 0xe7,
6281                             0x18, 0xf6, 0xfd, 0x5d, 0xf6, 0x8f, 0x13, 0x51 },
6282                 .rlen   = 16,
6283         }, {
6284                 .key    = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
6285                             0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a },
6286                 .klen   = 16,
6287                 .iv     = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
6288                             0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 },
6289                 .input  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
6290                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
6291                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
6292                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
6293                 .ilen   = 32,
6294                 .result = { 0xa5, 0xdf, 0x6e, 0x50, 0xda, 0x70, 0x6c, 0x01,
6295                             0x4a, 0xab, 0xf3, 0xf2, 0xd6, 0xfc, 0x6c, 0xfd,
6296                             0x19, 0xb4, 0x3e, 0x57, 0x1c, 0x02, 0x5e, 0xa0,
6297                             0x15, 0x78, 0xe0, 0x5e, 0xf2, 0xcb, 0x87, 0x16 },
6298                 .rlen   = 32,
6299         },
6300 };
6301
6302 static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
6303         {
6304                 .key    = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b,
6305                             0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 },
6306                 .klen   = 16,
6307                 .iv     = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30,
6308                             0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 },
6309                 .input  = { 0xea, 0x32, 0x12, 0x76, 0x3b, 0x50, 0x10, 0xe7,
6310                             0x18, 0xf6, 0xfd, 0x5d, 0xf6, 0x8f, 0x13, 0x51 },
6311                 .ilen   = 16,
6312                 .result = { "Single block msg" },
6313                 .rlen   = 16,
6314         }, {
6315                 .key    = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
6316                             0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a },
6317                 .klen   = 16,
6318                 .iv     = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
6319                             0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 },
6320                 .input = { 0xa5, 0xdf, 0x6e, 0x50, 0xda, 0x70, 0x6c, 0x01,
6321                             0x4a, 0xab, 0xf3, 0xf2, 0xd6, 0xfc, 0x6c, 0xfd,
6322                             0x19, 0xb4, 0x3e, 0x57, 0x1c, 0x02, 0x5e, 0xa0,
6323                             0x15, 0x78, 0xe0, 0x5e, 0xf2, 0xcb, 0x87, 0x16 },
6324                 .ilen   = 32,
6325                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
6326                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
6327                             0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
6328                             0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
6329                 .rlen   = 32,
6330         },
6331 };
6332
6333 /*
6334  * SEED test vectors
6335  */
6336 #define SEED_ENC_TEST_VECTORS   4
6337 #define SEED_DEC_TEST_VECTORS   4
6338
6339 static struct cipher_testvec seed_enc_tv_template[] = {
6340         {
6341                 .key    = { [0 ... 15] = 0x00 },
6342                 .klen   = 16,
6343                 .input  = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
6344                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
6345                 .ilen   = 16,
6346                 .result = { 0x5e, 0xba, 0xc6, 0xe0, 0x05, 0x4e, 0x16, 0x68,
6347                             0x19, 0xaf, 0xf1, 0xcc, 0x6d, 0x34, 0x6c, 0xdb },
6348                 .rlen   = 16,
6349         }, {
6350                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
6351                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
6352                 .klen   = 16,
6353                 .input  = { [0 ... 15] = 0x00 },
6354                 .ilen   = 16,
6355                 .result = { 0xc1, 0x1f, 0x22, 0xf2, 0x01, 0x40, 0x50, 0x50,
6356                             0x84, 0x48, 0x35, 0x97, 0xe4, 0x37, 0x0f, 0x43 },
6357                 .rlen   = 16,
6358         }, {
6359                 .key    = { 0x47, 0x06, 0x48, 0x08, 0x51, 0xe6, 0x1b, 0xe8,
6360                             0x5d, 0x74, 0xbf, 0xb3, 0xfd, 0x95, 0x61, 0x85 },
6361                 .klen   = 16,
6362                 .input  = { 0x83, 0xa2, 0xf8, 0xa2, 0x88, 0x64, 0x1f, 0xb9,
6363                             0xa4, 0xe9, 0xa5, 0xcc, 0x2f, 0x13, 0x1c, 0x7d },
6364                 .ilen   = 16,
6365                 .result = { 0xee, 0x54, 0xd1, 0x3e, 0xbc, 0xae, 0x70, 0x6d,
6366                             0x22, 0x6b, 0xc3, 0x14, 0x2c, 0xd4, 0x0d, 0x4a },
6367                 .rlen   = 16,
6368         }, {
6369                 .key    = { 0x28, 0xdb, 0xc3, 0xbc, 0x49, 0xff, 0xd8, 0x7d,
6370                             0xcf, 0xa5, 0x09, 0xb1, 0x1d, 0x42, 0x2b, 0xe7 },
6371                 .klen   = 16,
6372                 .input  = { 0xb4, 0x1e, 0x6b, 0xe2, 0xeb, 0xa8, 0x4a, 0x14,
6373                             0x8e, 0x2e, 0xed, 0x84, 0x59, 0x3c, 0x5e, 0xc7 },
6374                 .ilen   = 16,
6375                 .result = { 0x9b, 0x9b, 0x7b, 0xfc, 0xd1, 0x81, 0x3c, 0xb9,
6376                             0x5d, 0x0b, 0x36, 0x18, 0xf4, 0x0f, 0x51, 0x22 },
6377                 .rlen   = 16,
6378         }
6379 };
6380
6381 static struct cipher_testvec seed_dec_tv_template[] = {
6382         {
6383                 .key    = { [0 ... 15] = 0x00 },
6384                 .klen   = 16,
6385                 .input  = { 0x5e, 0xba, 0xc6, 0xe0, 0x05, 0x4e, 0x16, 0x68,
6386                             0x19, 0xaf, 0xf1, 0xcc, 0x6d, 0x34, 0x6c, 0xdb },
6387                 .ilen   = 16,
6388                 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
6389                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
6390                 .rlen   = 16,
6391         }, {
6392                 .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
6393                             0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
6394                 .klen   = 16,
6395                 .input  = { 0xc1, 0x1f, 0x22, 0xf2, 0x01, 0x40, 0x50, 0x50,
6396                             0x84, 0x48, 0x35, 0x97, 0xe4, 0x37, 0x0f, 0x43 },
6397                 .ilen   = 16,
6398                 .result = { [0 ... 15] = 0x00 },
6399                 .rlen   = 16,
6400         }, {
6401                 .key    = { 0x47, 0x06, 0x48, 0x08, 0x51, 0xe6, 0x1b, 0xe8,
6402                             0x5d, 0x74, 0xbf, 0xb3, 0xfd, 0x95, 0x61, 0x85 },
6403                 .klen   = 16,
6404                 .input  = { 0xee, 0x54, 0xd1, 0x3e, 0xbc, 0xae, 0x70, 0x6d,
6405                             0x22, 0x6b, 0xc3, 0x14, 0x2c, 0xd4, 0x0d, 0x4a },
6406                 .ilen   = 16,
6407                 .result = { 0x83, 0xa2, 0xf8, 0xa2, 0x88, 0x64, 0x1f, 0xb9,
6408                             0xa4, 0xe9, 0xa5, 0xcc, 0x2f, 0x13, 0x1c, 0x7d },
6409                 .rlen   = 16,
6410         }, {
6411                 .key    = { 0x28, 0xdb, 0xc3, 0xbc, 0x49, 0xff, 0xd8, 0x7d,
6412                             0xcf, 0xa5, 0x09, 0xb1, 0x1d, 0x42, 0x2b, 0xe7 },
6413                 .klen   = 16,
6414                 .input  = { 0x9b, 0x9b, 0x7b, 0xfc, 0xd1, 0x81, 0x3c, 0xb9,
6415                             0x5d, 0x0b, 0x36, 0x18, 0xf4, 0x0f, 0x51, 0x22 },
6416                 .ilen   = 16,
6417                 .result = { 0xb4, 0x1e, 0x6b, 0xe2, 0xeb, 0xa8, 0x4a, 0x14,
6418                             0x8e, 0x2e, 0xed, 0x84, 0x59, 0x3c, 0x5e, 0xc7 },
6419                 .rlen   = 16,
6420         }
6421 };
6422
6423 #define SALSA20_STREAM_ENC_TEST_VECTORS 5
6424 static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
6425         /*
6426         * Testvectors from verified.test-vectors submitted to ECRYPT.
6427         * They are truncated to size 39, 64, 111, 129 to test a variety
6428         * of input length.
6429         */
6430         { /* Set 3, vector 0 */
6431                 .key    = {
6432                             0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
6433                             0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
6434                           },
6435                 .klen   = 16,
6436                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
6437                 .input  = {
6438                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6439                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6440                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6441                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6442                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6443                           },
6444                 .ilen   = 39,
6445                 .result = {
6446                             0x2D, 0xD5, 0xC3, 0xF7, 0xBA, 0x2B, 0x20, 0xF7,
6447                             0x68, 0x02, 0x41, 0x0C, 0x68, 0x86, 0x88, 0x89,
6448                             0x5A, 0xD8, 0xC1, 0xBD, 0x4E, 0xA6, 0xC9, 0xB1,
6449                             0x40, 0xFB, 0x9B, 0x90, 0xE2, 0x10, 0x49, 0xBF,
6450                             0x58, 0x3F, 0x52, 0x79, 0x70, 0xEB, 0xC1,
6451                         },
6452                 .rlen   = 39,
6453         }, { /* Set 5, vector 0 */
6454                 .key    = {
6455                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6456                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
6457                           },
6458                 .klen   = 16,
6459                 .iv     = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
6460                 .input  = {
6461                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6462                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6463                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6464                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6465                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6466                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6467                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6468                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6469                           },
6470                 .ilen   = 64,
6471                 .result = {
6472                             0xB6, 0x6C, 0x1E, 0x44, 0x46, 0xDD, 0x95, 0x57,
6473                             0xE5, 0x78, 0xE2, 0x23, 0xB0, 0xB7, 0x68, 0x01,
6474                             0x7B, 0x23, 0xB2, 0x67, 0xBB, 0x02, 0x34, 0xAE,
6475                             0x46, 0x26, 0xBF, 0x44, 0x3F, 0x21, 0x97, 0x76,
6476                             0x43, 0x6F, 0xB1, 0x9F, 0xD0, 0xE8, 0x86, 0x6F,
6477                             0xCD, 0x0D, 0xE9, 0xA9, 0x53, 0x8F, 0x4A, 0x09,
6478                             0xCA, 0x9A, 0xC0, 0x73, 0x2E, 0x30, 0xBC, 0xF9,
6479                             0x8E, 0x4F, 0x13, 0xE4, 0xB9, 0xE2, 0x01, 0xD9,
6480                           },
6481                 .rlen   = 64,
6482         }, { /* Set 3, vector 27 */
6483                 .key    = {
6484                             0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22,
6485                             0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A,
6486                             0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32,
6487                             0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A
6488                           },
6489                 .klen   = 32,
6490                 .iv     = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
6491                 .input  = {
6492                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6493                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6494                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6495                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6496                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6497                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6498                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6499                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6500
6501                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6502                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6503                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6504                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6505                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6506                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6507                           },
6508                 .ilen   = 111,
6509                 .result = {
6510                             0xAE, 0x39, 0x50, 0x8E, 0xAC, 0x9A, 0xEC, 0xE7,
6511                             0xBF, 0x97, 0xBB, 0x20, 0xB9, 0xDE, 0xE4, 0x1F,
6512                             0x87, 0xD9, 0x47, 0xF8, 0x28, 0x91, 0x35, 0x98,
6513                             0xDB, 0x72, 0xCC, 0x23, 0x29, 0x48, 0x56, 0x5E,
6514                             0x83, 0x7E, 0x0B, 0xF3, 0x7D, 0x5D, 0x38, 0x7B,
6515                             0x2D, 0x71, 0x02, 0xB4, 0x3B, 0xB5, 0xD8, 0x23,
6516                             0xB0, 0x4A, 0xDF, 0x3C, 0xEC, 0xB6, 0xD9, 0x3B,
6517                             0x9B, 0xA7, 0x52, 0xBE, 0xC5, 0xD4, 0x50, 0x59,
6518
6519                             0x15, 0x14, 0xB4, 0x0E, 0x40, 0xE6, 0x53, 0xD1,
6520                             0x83, 0x9C, 0x5B, 0xA0, 0x92, 0x29, 0x6B, 0x5E,
6521                             0x96, 0x5B, 0x1E, 0x2F, 0xD3, 0xAC, 0xC1, 0x92,
6522                             0xB1, 0x41, 0x3F, 0x19, 0x2F, 0xC4, 0x3B, 0xC6,
6523                             0x95, 0x46, 0x45, 0x54, 0xE9, 0x75, 0x03, 0x08,
6524                             0x44, 0xAF, 0xE5, 0x8A, 0x81, 0x12, 0x09,
6525                           },
6526                 .rlen   = 111,
6527
6528         }, { /* Set 5, vector 27 */
6529                 .key    = {
6530                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6531                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6532                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6533                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
6534                           },
6535                 .klen   = 32,
6536                 .iv     = { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00 },
6537                 .input  = {
6538                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6539                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6540                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6541                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6542                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6543                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6544                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6545                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6546
6547                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6548                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6549                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6550                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6551                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6552                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6553                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6554                             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6555
6556                             0x00,
6557                           },
6558                 .ilen   = 129,
6559                 .result = {
6560                             0xD2, 0xDB, 0x1A, 0x5C, 0xF1, 0xC1, 0xAC, 0xDB,
6561                             0xE8, 0x1A, 0x7A, 0x43, 0x40, 0xEF, 0x53, 0x43,
6562                             0x5E, 0x7F, 0x4B, 0x1A, 0x50, 0x52, 0x3F, 0x8D,
6563                             0x28, 0x3D, 0xCF, 0x85, 0x1D, 0x69, 0x6E, 0x60,
6564                             0xF2, 0xDE, 0x74, 0x56, 0x18, 0x1B, 0x84, 0x10,
6565                             0xD4, 0x62, 0xBA, 0x60, 0x50, 0xF0, 0x61, 0xF2,
6566                             0x1C, 0x78, 0x7F, 0xC1, 0x24, 0x34, 0xAF, 0x58,
6567                             0xBF, 0x2C, 0x59, 0xCA, 0x90, 0x77, 0xF3, 0xB0,
6568
6569                             0x5B, 0x4A, 0xDF, 0x89, 0xCE, 0x2C, 0x2F, 0xFC,
6570                             0x67, 0xF0, 0xE3, 0x45, 0xE8, 0xB3, 0xB3, 0x75,
6571                             0xA0, 0x95, 0x71, 0xA1, 0x29, 0x39, 0x94, 0xCA,
6572                             0x45, 0x2F, 0xBD, 0xCB, 0x10, 0xB6, 0xBE, 0x9F,
6573                             0x8E, 0xF9, 0xB2, 0x01, 0x0A, 0x5A, 0x0A, 0xB7,
6574                             0x6B, 0x9D, 0x70, 0x8E, 0x4B, 0xD6, 0x2F, 0xCD,
6575                             0x2E, 0x40, 0x48, 0x75, 0xE9, 0xE2, 0x21, 0x45,
6576                             0x0B, 0xC9, 0xB6, 0xB5, 0x66, 0xBC, 0x9A, 0x59,
6577
6578                             0x5A,
6579                           },
6580                 .rlen   = 129,
6581         }, { /* large test vector generated using Crypto++ */
6582                 .key = {
6583                         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
6584                         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
6585                         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
6586                         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
6587                 },
6588                 .klen = 32,
6589                 .iv = {
6590                         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6591                         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6592                 },
6593                 .input = {
6594                         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
6595                         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
6596                         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
6597                         0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
6598                         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
6599                         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
6600                         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
6601                         0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
6602                         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
6603                         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
6604                         0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
6605                         0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
6606                         0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
6607                         0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
6608                         0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
6609                         0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
6610                         0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
6611                         0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
6612                         0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
6613                         0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
6614                         0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
6615                         0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
6616                         0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
6617                         0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
6618                         0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
6619                         0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
6620                         0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
6621                         0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
6622                         0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
6623                         0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
6624                         0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
6625                         0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
6626                         0x00, 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x12, 0x15,
6627                         0x18, 0x1b, 0x1e, 0x21, 0x24, 0x27, 0x2a, 0x2d,
6628                         0x30, 0x33, 0x36, 0x39, 0x3c, 0x3f, 0x42, 0x45,
6629                         0x48, 0x4b, 0x4e, 0x51, 0x54, 0x57, 0x5a, 0x5d,
6630                         0x60, 0x63, 0x66, 0x69, 0x6c, 0x6f, 0x72, 0x75,
6631                         0x78, 0x7b, 0x7e, 0x81, 0x84, 0x87, 0x8a, 0x8d,
6632                         0x90, 0x93, 0x96, 0x99, 0x9c, 0x9f, 0xa2, 0xa5,
6633                         0xa8, 0xab, 0xae, 0xb1, 0xb4, 0xb7, 0xba, 0xbd,
6634                         0xc0, 0xc3, 0xc6, 0xc9, 0xcc, 0xcf, 0xd2, 0xd5,
6635                         0xd8, 0xdb, 0xde, 0xe1, 0xe4, 0xe7, 0xea, 0xed,
6636                         0xf0, 0xf3, 0xf6, 0xf9, 0xfc, 0xff, 0x02, 0x05,
6637                         0x08, 0x0b, 0x0e, 0x11, 0x14, 0x17, 0x1a, 0x1d,
6638                         0x20, 0x23, 0x26, 0x29, 0x2c, 0x2f, 0x32, 0x35,
6639                         0x38, 0x3b, 0x3e, 0x41, 0x44, 0x47, 0x4a, 0x4d,
6640                         0x50, 0x53, 0x56, 0x59, 0x5c, 0x5f, 0x62, 0x65,
6641                         0x68, 0x6b, 0x6e, 0x71, 0x74, 0x77, 0x7a, 0x7d,
6642                         0x80, 0x83, 0x86, 0x89, 0x8c, 0x8f, 0x92, 0x95,
6643                         0x98, 0x9b, 0x9e, 0xa1, 0xa4, 0xa7, 0xaa, 0xad,
6644                         0xb0, 0xb3, 0xb6, 0xb9, 0xbc, 0xbf, 0xc2, 0xc5,
6645                         0xc8, 0xcb, 0xce, 0xd1, 0xd4, 0xd7, 0xda, 0xdd,
6646                         0xe0, 0xe3, 0xe6, 0xe9, 0xec, 0xef, 0xf2, 0xf5,
6647                         0xf8, 0xfb, 0xfe, 0x01, 0x04, 0x07, 0x0a, 0x0d,
6648                         0x10, 0x13, 0x16, 0x19, 0x1c, 0x1f, 0x22, 0x25,
6649                         0x28, 0x2b, 0x2e, 0x31, 0x34, 0x37, 0x3a, 0x3d,
6650                         0x40, 0x43, 0x46, 0x49, 0x4c, 0x4f, 0x52, 0x55,
6651                         0x58, 0x5b, 0x5e, 0x61, 0x64, 0x67, 0x6a, 0x6d,
6652                         0x70, 0x73, 0x76, 0x79, 0x7c, 0x7f, 0x82, 0x85,
6653                         0x88, 0x8b, 0x8e, 0x91, 0x94, 0x97, 0x9a, 0x9d,
6654                         0xa0, 0xa3, 0xa6, 0xa9, 0xac, 0xaf, 0xb2, 0xb5,
6655                         0xb8, 0xbb, 0xbe, 0xc1, 0xc4, 0xc7, 0xca, 0xcd,
6656                         0xd0, 0xd3, 0xd6, 0xd9, 0xdc, 0xdf, 0xe2, 0xe5,
6657                         0xe8, 0xeb, 0xee, 0xf1, 0xf4, 0xf7, 0xfa, 0xfd,
6658                         0x00, 0x05, 0x0a, 0x0f, 0x14, 0x19, 0x1e, 0x23,
6659                         0x28, 0x2d, 0x32, 0x37, 0x3c, 0x41, 0x46, 0x4b,
6660                         0x50, 0x55, 0x5a, 0x5f, 0x64, 0x69, 0x6e, 0x73,
6661                         0x78, 0x7d, 0x82, 0x87, 0x8c, 0x91, 0x96, 0x9b,
6662                         0xa0, 0xa5, 0xaa, 0xaf, 0xb4, 0xb9, 0xbe, 0xc3,
6663                         0xc8, 0xcd, 0xd2, 0xd7, 0xdc, 0xe1, 0xe6, 0xeb,
6664                         0xf0, 0xf5, 0xfa, 0xff, 0x04, 0x09, 0x0e, 0x13,
6665                         0x18, 0x1d, 0x22, 0x27, 0x2c, 0x31, 0x36, 0x3b,
6666                         0x40, 0x45, 0x4a, 0x4f, 0x54, 0x59, 0x5e, 0x63,
6667                         0x68, 0x6d, 0x72, 0x77, 0x7c, 0x81, 0x86, 0x8b,
6668                         0x90, 0x95, 0x9a, 0x9f, 0xa4, 0xa9, 0xae, 0xb3,
6669                         0xb8, 0xbd, 0xc2, 0xc7, 0xcc, 0xd1, 0xd6, 0xdb,
6670                         0xe0, 0xe5, 0xea, 0xef, 0xf4, 0xf9, 0xfe, 0x03,
6671                         0x08, 0x0d, 0x12, 0x17, 0x1c, 0x21, 0x26, 0x2b,
6672                         0x30, 0x35, 0x3a, 0x3f, 0x44, 0x49, 0x4e, 0x53,
6673                         0x58, 0x5d, 0x62, 0x67, 0x6c, 0x71, 0x76, 0x7b,
6674                         0x80, 0x85, 0x8a, 0x8f, 0x94, 0x99, 0x9e, 0xa3,
6675                         0xa8, 0xad, 0xb2, 0xb7, 0xbc, 0xc1, 0xc6, 0xcb,
6676                         0xd0, 0xd5, 0xda, 0xdf, 0xe4, 0xe9, 0xee, 0xf3,
6677                         0xf8, 0xfd, 0x02, 0x07, 0x0c, 0x11, 0x16, 0x1b,
6678                         0x20, 0x25, 0x2a, 0x2f, 0x34, 0x39, 0x3e, 0x43,
6679                         0x48, 0x4d, 0x52, 0x57, 0x5c, 0x61, 0x66, 0x6b,
6680                         0x70, 0x75, 0x7a, 0x7f, 0x84, 0x89, 0x8e, 0x93,
6681                         0x98, 0x9d, 0xa2, 0xa7, 0xac, 0xb1, 0xb6, 0xbb,
6682                         0xc0, 0xc5, 0xca, 0xcf, 0xd4, 0xd9, 0xde, 0xe3,
6683                         0xe8, 0xed, 0xf2, 0xf7, 0xfc, 0x01, 0x06, 0x0b,
6684                         0x10, 0x15, 0x1a, 0x1f, 0x24, 0x29, 0x2e, 0x33,
6685                         0x38, 0x3d, 0x42, 0x47, 0x4c, 0x51, 0x56, 0x5b,
6686                         0x60, 0x65, 0x6a, 0x6f, 0x74, 0x79, 0x7e, 0x83,
6687                         0x88, 0x8d, 0x92, 0x97, 0x9c, 0xa1, 0xa6, 0xab,
6688                         0xb0, 0xb5, 0xba, 0xbf, 0xc4, 0xc9, 0xce, 0xd3,
6689                         0xd8, 0xdd, 0xe2, 0xe7, 0xec, 0xf1, 0xf6, 0xfb,
6690                         0x00, 0x07, 0x0e, 0x15, 0x1c, 0x23, 0x2a, 0x31,
6691                         0x38, 0x3f, 0x46, 0x4d, 0x54, 0x5b, 0x62, 0x69,
6692                         0x70, 0x77, 0x7e, 0x85, 0x8c, 0x93, 0x9a, 0xa1,
6693                         0xa8, 0xaf, 0xb6, 0xbd, 0xc4, 0xcb, 0xd2, 0xd9,
6694                         0xe0, 0xe7, 0xee, 0xf5, 0xfc, 0x03, 0x0a, 0x11,
6695                         0x18, 0x1f, 0x26, 0x2d, 0x34, 0x3b, 0x42, 0x49,
6696                         0x50, 0x57, 0x5e, 0x65, 0x6c, 0x73, 0x7a, 0x81,
6697                         0x88, 0x8f, 0x96, 0x9d, 0xa4, 0xab, 0xb2, 0xb9,
6698                         0xc0, 0xc7, 0xce, 0xd5, 0xdc, 0xe3, 0xea, 0xf1,
6699                         0xf8, 0xff, 0x06, 0x0d, 0x14, 0x1b, 0x22, 0x29,
6700                         0x30, 0x37, 0x3e, 0x45, 0x4c, 0x53, 0x5a, 0x61,
6701                         0x68, 0x6f, 0x76, 0x7d, 0x84, 0x8b, 0x92, 0x99,
6702                         0xa0, 0xa7, 0xae, 0xb5, 0xbc, 0xc3, 0xca, 0xd1,
6703                         0xd8, 0xdf, 0xe6, 0xed, 0xf4, 0xfb, 0x02, 0x09,
6704                         0x10, 0x17, 0x1e, 0x25, 0x2c, 0x33, 0x3a, 0x41,
6705                         0x48, 0x4f, 0x56, 0x5d, 0x64, 0x6b, 0x72, 0x79,
6706                         0x80, 0x87, 0x8e, 0x95, 0x9c, 0xa3, 0xaa, 0xb1,
6707                         0xb8, 0xbf, 0xc6, 0xcd, 0xd4, 0xdb, 0xe2, 0xe9,
6708                         0xf0, 0xf7, 0xfe, 0x05, 0x0c, 0x13, 0x1a, 0x21,
6709                         0x28, 0x2f, 0x36, 0x3d, 0x44, 0x4b, 0x52, 0x59,
6710                         0x60, 0x67, 0x6e, 0x75, 0x7c, 0x83, 0x8a, 0x91,
6711                         0x98, 0x9f, 0xa6, 0xad, 0xb4, 0xbb, 0xc2, 0xc9,
6712                         0xd0, 0xd7, 0xde, 0xe5, 0xec, 0xf3, 0xfa, 0x01,
6713                         0x08, 0x0f, 0x16, 0x1d, 0x24, 0x2b, 0x32, 0x39,
6714                         0x40, 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71,
6715                         0x78, 0x7f, 0x86, 0x8d, 0x94, 0x9b, 0xa2, 0xa9,
6716                         0xb0, 0xb7, 0xbe, 0xc5, 0xcc, 0xd3, 0xda, 0xe1,
6717                         0xe8, 0xef, 0xf6, 0xfd, 0x04, 0x0b, 0x12, 0x19,
6718                         0x20, 0x27, 0x2e, 0x35, 0x3c, 0x43, 0x4a, 0x51,
6719                         0x58, 0x5f, 0x66, 0x6d, 0x74, 0x7b, 0x82, 0x89,
6720                         0x90, 0x97, 0x9e, 0xa5, 0xac, 0xb3, 0xba, 0xc1,
6721                         0xc8, 0xcf, 0xd6, 0xdd, 0xe4, 0xeb, 0xf2, 0xf9,
6722                         0x00, 0x09, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f,
6723                         0x48, 0x51, 0x5a, 0x63, 0x6c, 0x75, 0x7e, 0x87,
6724                         0x90, 0x99, 0xa2, 0xab, 0xb4, 0xbd, 0xc6, 0xcf,
6725                         0xd8, 0xe1, 0xea, 0xf3, 0xfc, 0x05, 0x0e, 0x17,
6726                         0x20, 0x29, 0x32, 0x3b, 0x44, 0x4d, 0x56, 0x5f,
6727                         0x68, 0x71, 0x7a, 0x83, 0x8c, 0x95, 0x9e, 0xa7,
6728                         0xb0, 0xb9, 0xc2, 0xcb, 0xd4, 0xdd, 0xe6, 0xef,
6729                         0xf8, 0x01, 0x0a, 0x13, 0x1c, 0x25, 0x2e, 0x37,
6730                         0x40, 0x49, 0x52, 0x5b, 0x64, 0x6d, 0x76, 0x7f,
6731                         0x88, 0x91, 0x9a, 0xa3, 0xac, 0xb5, 0xbe, 0xc7,
6732                         0xd0, 0xd9, 0xe2, 0xeb, 0xf4, 0xfd, 0x06, 0x0f,
6733                         0x18, 0x21, 0x2a, 0x33, 0x3c, 0x45, 0x4e, 0x57,
6734                         0x60, 0x69, 0x72, 0x7b, 0x84, 0x8d, 0x96, 0x9f,
6735                         0xa8, 0xb1, 0xba, 0xc3, 0xcc, 0xd5, 0xde, 0xe7,
6736                         0xf0, 0xf9, 0x02, 0x0b, 0x14, 0x1d, 0x26, 0x2f,
6737                         0x38, 0x41, 0x4a, 0x53, 0x5c, 0x65, 0x6e, 0x77,
6738                         0x80, 0x89, 0x92, 0x9b, 0xa4, 0xad, 0xb6, 0xbf,
6739                         0xc8, 0xd1, 0xda, 0xe3, 0xec, 0xf5, 0xfe, 0x07,
6740                         0x10, 0x19, 0x22, 0x2b, 0x34, 0x3d, 0x46, 0x4f,
6741                         0x58, 0x61, 0x6a, 0x73, 0x7c, 0x85, 0x8e, 0x97,
6742                         0xa0, 0xa9, 0xb2, 0xbb, 0xc4, 0xcd, 0xd6, 0xdf,
6743                         0xe8, 0xf1, 0xfa, 0x03, 0x0c, 0x15, 0x1e, 0x27,
6744                         0x30, 0x39, 0x42, 0x4b, 0x54, 0x5d, 0x66, 0x6f,
6745                         0x78, 0x81, 0x8a, 0x93, 0x9c, 0xa5, 0xae, 0xb7,
6746                         0xc0, 0xc9, 0xd2, 0xdb, 0xe4, 0xed, 0xf6, 0xff,
6747                         0x08, 0x11, 0x1a, 0x23, 0x2c, 0x35, 0x3e, 0x47,
6748                         0x50, 0x59, 0x62, 0x6b, 0x74, 0x7d, 0x86, 0x8f,
6749                         0x98, 0xa1, 0xaa, 0xb3, 0xbc, 0xc5, 0xce, 0xd7,
6750                         0xe0, 0xe9, 0xf2, 0xfb, 0x04, 0x0d, 0x16, 0x1f,
6751                         0x28, 0x31, 0x3a, 0x43, 0x4c, 0x55, 0x5e, 0x67,
6752                         0x70, 0x79, 0x82, 0x8b, 0x94, 0x9d, 0xa6, 0xaf,
6753                         0xb8, 0xc1, 0xca, 0xd3, 0xdc, 0xe5, 0xee, 0xf7,
6754                         0x00, 0x0b, 0x16, 0x21, 0x2c, 0x37, 0x42, 0x4d,
6755                         0x58, 0x63, 0x6e, 0x79, 0x84, 0x8f, 0x9a, 0xa5,
6756                         0xb0, 0xbb, 0xc6, 0xd1, 0xdc, 0xe7, 0xf2, 0xfd,
6757                         0x08, 0x13, 0x1e, 0x29, 0x34, 0x3f, 0x4a, 0x55,
6758                         0x60, 0x6b, 0x76, 0x81, 0x8c, 0x97, 0xa2, 0xad,
6759                         0xb8, 0xc3, 0xce, 0xd9, 0xe4, 0xef, 0xfa, 0x05,
6760                         0x10, 0x1b, 0x26, 0x31, 0x3c, 0x47, 0x52, 0x5d,
6761                         0x68, 0x73, 0x7e, 0x89, 0x94, 0x9f, 0xaa, 0xb5,
6762                         0xc0, 0xcb, 0xd6, 0xe1, 0xec, 0xf7, 0x02, 0x0d,
6763                         0x18, 0x23, 0x2e, 0x39, 0x44, 0x4f, 0x5a, 0x65,
6764                         0x70, 0x7b, 0x86, 0x91, 0x9c, 0xa7, 0xb2, 0xbd,
6765                         0xc8, 0xd3, 0xde, 0xe9, 0xf4, 0xff, 0x0a, 0x15,
6766                         0x20, 0x2b, 0x36, 0x41, 0x4c, 0x57, 0x62, 0x6d,
6767                         0x78, 0x83, 0x8e, 0x99, 0xa4, 0xaf, 0xba, 0xc5,
6768                         0xd0, 0xdb, 0xe6, 0xf1, 0xfc, 0x07, 0x12, 0x1d,
6769                         0x28, 0x33, 0x3e, 0x49, 0x54, 0x5f, 0x6a, 0x75,
6770                         0x80, 0x8b, 0x96, 0xa1, 0xac, 0xb7, 0xc2, 0xcd,
6771                         0xd8, 0xe3, 0xee, 0xf9, 0x04, 0x0f, 0x1a, 0x25,
6772                         0x30, 0x3b, 0x46, 0x51, 0x5c, 0x67, 0x72, 0x7d,
6773                         0x88, 0x93, 0x9e, 0xa9, 0xb4, 0xbf, 0xca, 0xd5,
6774                         0xe0, 0xeb, 0xf6, 0x01, 0x0c, 0x17, 0x22, 0x2d,
6775                         0x38, 0x43, 0x4e, 0x59, 0x64, 0x6f, 0x7a, 0x85,
6776                         0x90, 0x9b, 0xa6, 0xb1, 0xbc, 0xc7, 0xd2, 0xdd,
6777                         0xe8, 0xf3, 0xfe, 0x09, 0x14, 0x1f, 0x2a, 0x35,
6778                         0x40, 0x4b, 0x56, 0x61, 0x6c, 0x77, 0x82, 0x8d,
6779                         0x98, 0xa3, 0xae, 0xb9, 0xc4, 0xcf, 0xda, 0xe5,
6780                         0xf0, 0xfb, 0x06, 0x11, 0x1c, 0x27, 0x32, 0x3d,
6781                         0x48, 0x53, 0x5e, 0x69, 0x74, 0x7f, 0x8a, 0x95,
6782                         0xa0, 0xab, 0xb6, 0xc1, 0xcc, 0xd7, 0xe2, 0xed,
6783                         0xf8, 0x03, 0x0e, 0x19, 0x24, 0x2f, 0x3a, 0x45,
6784                         0x50, 0x5b, 0x66, 0x71, 0x7c, 0x87, 0x92, 0x9d,
6785                         0xa8, 0xb3, 0xbe, 0xc9, 0xd4, 0xdf, 0xea, 0xf5,
6786                         0x00, 0x0d, 0x1a, 0x27, 0x34, 0x41, 0x4e, 0x5b,
6787                         0x68, 0x75, 0x82, 0x8f, 0x9c, 0xa9, 0xb6, 0xc3,
6788                         0xd0, 0xdd, 0xea, 0xf7, 0x04, 0x11, 0x1e, 0x2b,
6789                         0x38, 0x45, 0x52, 0x5f, 0x6c, 0x79, 0x86, 0x93,
6790                         0xa0, 0xad, 0xba, 0xc7, 0xd4, 0xe1, 0xee, 0xfb,
6791                         0x08, 0x15, 0x22, 0x2f, 0x3c, 0x49, 0x56, 0x63,
6792                         0x70, 0x7d, 0x8a, 0x97, 0xa4, 0xb1, 0xbe, 0xcb,
6793                         0xd8, 0xe5, 0xf2, 0xff, 0x0c, 0x19, 0x26, 0x33,
6794                         0x40, 0x4d, 0x5a, 0x67, 0x74, 0x81, 0x8e, 0x9b,
6795                         0xa8, 0xb5, 0xc2, 0xcf, 0xdc, 0xe9, 0xf6, 0x03,
6796                         0x10, 0x1d, 0x2a, 0x37, 0x44, 0x51, 0x5e, 0x6b,
6797                         0x78, 0x85, 0x92, 0x9f, 0xac, 0xb9, 0xc6, 0xd3,
6798                         0xe0, 0xed, 0xfa, 0x07, 0x14, 0x21, 0x2e, 0x3b,
6799                         0x48, 0x55, 0x62, 0x6f, 0x7c, 0x89, 0x96, 0xa3,
6800                         0xb0, 0xbd, 0xca, 0xd7, 0xe4, 0xf1, 0xfe, 0x0b,
6801                         0x18, 0x25, 0x32, 0x3f, 0x4c, 0x59, 0x66, 0x73,
6802                         0x80, 0x8d, 0x9a, 0xa7, 0xb4, 0xc1, 0xce, 0xdb,
6803                         0xe8, 0xf5, 0x02, 0x0f, 0x1c, 0x29, 0x36, 0x43,
6804                         0x50, 0x5d, 0x6a, 0x77, 0x84, 0x91, 0x9e, 0xab,
6805                         0xb8, 0xc5, 0xd2, 0xdf, 0xec, 0xf9, 0x06, 0x13,
6806                         0x20, 0x2d, 0x3a, 0x47, 0x54, 0x61, 0x6e, 0x7b,
6807                         0x88, 0x95, 0xa2, 0xaf, 0xbc, 0xc9, 0xd6, 0xe3,
6808                         0xf0, 0xfd, 0x0a, 0x17, 0x24, 0x31, 0x3e, 0x4b,
6809                         0x58, 0x65, 0x72, 0x7f, 0x8c, 0x99, 0xa6, 0xb3,
6810                         0xc0, 0xcd, 0xda, 0xe7, 0xf4, 0x01, 0x0e, 0x1b,
6811                         0x28, 0x35, 0x42, 0x4f, 0x5c, 0x69, 0x76, 0x83,
6812                         0x90, 0x9d, 0xaa, 0xb7, 0xc4, 0xd1, 0xde, 0xeb,
6813                         0xf8, 0x05, 0x12, 0x1f, 0x2c, 0x39, 0x46, 0x53,
6814                         0x60, 0x6d, 0x7a, 0x87, 0x94, 0xa1, 0xae, 0xbb,
6815                         0xc8, 0xd5, 0xe2, 0xef, 0xfc, 0x09, 0x16, 0x23,
6816                         0x30, 0x3d, 0x4a, 0x57, 0x64, 0x71, 0x7e, 0x8b,
6817                         0x98, 0xa5, 0xb2, 0xbf, 0xcc, 0xd9, 0xe6, 0xf3,
6818                         0x00, 0x0f, 0x1e, 0x2d, 0x3c, 0x4b, 0x5a, 0x69,
6819                         0x78, 0x87, 0x96, 0xa5, 0xb4, 0xc3, 0xd2, 0xe1,
6820                         0xf0, 0xff, 0x0e, 0x1d, 0x2c, 0x3b, 0x4a, 0x59,
6821                         0x68, 0x77, 0x86, 0x95, 0xa4, 0xb3, 0xc2, 0xd1,
6822                         0xe0, 0xef, 0xfe, 0x0d, 0x1c, 0x2b, 0x3a, 0x49,
6823                         0x58, 0x67, 0x76, 0x85, 0x94, 0xa3, 0xb2, 0xc1,
6824                         0xd0, 0xdf, 0xee, 0xfd, 0x0c, 0x1b, 0x2a, 0x39,
6825                         0x48, 0x57, 0x66, 0x75, 0x84, 0x93, 0xa2, 0xb1,
6826                         0xc0, 0xcf, 0xde, 0xed, 0xfc, 0x0b, 0x1a, 0x29,
6827                         0x38, 0x47, 0x56, 0x65, 0x74, 0x83, 0x92, 0xa1,
6828                         0xb0, 0xbf, 0xce, 0xdd, 0xec, 0xfb, 0x0a, 0x19,
6829                         0x28, 0x37, 0x46, 0x55, 0x64, 0x73, 0x82, 0x91,
6830                         0xa0, 0xaf, 0xbe, 0xcd, 0xdc, 0xeb, 0xfa, 0x09,
6831                         0x18, 0x27, 0x36, 0x45, 0x54, 0x63, 0x72, 0x81,
6832                         0x90, 0x9f, 0xae, 0xbd, 0xcc, 0xdb, 0xea, 0xf9,
6833                         0x08, 0x17, 0x26, 0x35, 0x44, 0x53, 0x62, 0x71,
6834                         0x80, 0x8f, 0x9e, 0xad, 0xbc, 0xcb, 0xda, 0xe9,
6835                         0xf8, 0x07, 0x16, 0x25, 0x34, 0x43, 0x52, 0x61,
6836                         0x70, 0x7f, 0x8e, 0x9d, 0xac, 0xbb, 0xca, 0xd9,
6837                         0xe8, 0xf7, 0x06, 0x15, 0x24, 0x33, 0x42, 0x51,
6838                         0x60, 0x6f, 0x7e, 0x8d, 0x9c, 0xab, 0xba, 0xc9,
6839                         0xd8, 0xe7, 0xf6, 0x05, 0x14, 0x23, 0x32, 0x41,
6840                         0x50, 0x5f, 0x6e, 0x7d, 0x8c, 0x9b, 0xaa, 0xb9,
6841                         0xc8, 0xd7, 0xe6, 0xf5, 0x04, 0x13, 0x22, 0x31,
6842                         0x40, 0x4f, 0x5e, 0x6d, 0x7c, 0x8b, 0x9a, 0xa9,
6843                         0xb8, 0xc7, 0xd6, 0xe5, 0xf4, 0x03, 0x12, 0x21,
6844                         0x30, 0x3f, 0x4e, 0x5d, 0x6c, 0x7b, 0x8a, 0x99,
6845                         0xa8, 0xb7, 0xc6, 0xd5, 0xe4, 0xf3, 0x02, 0x11,
6846                         0x20, 0x2f, 0x3e, 0x4d, 0x5c, 0x6b, 0x7a, 0x89,
6847                         0x98, 0xa7, 0xb6, 0xc5, 0xd4, 0xe3, 0xf2, 0x01,
6848                         0x10, 0x1f, 0x2e, 0x3d, 0x4c, 0x5b, 0x6a, 0x79,
6849                         0x88, 0x97, 0xa6, 0xb5, 0xc4, 0xd3, 0xe2, 0xf1,
6850                         0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
6851                         0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
6852                         0x10, 0x21, 0x32, 0x43, 0x54, 0x65, 0x76, 0x87,
6853                         0x98, 0xa9, 0xba, 0xcb, 0xdc, 0xed, 0xfe, 0x0f,
6854                         0x20, 0x31, 0x42, 0x53, 0x64, 0x75, 0x86, 0x97,
6855                         0xa8, 0xb9, 0xca, 0xdb, 0xec, 0xfd, 0x0e, 0x1f,
6856                         0x30, 0x41, 0x52, 0x63, 0x74, 0x85, 0x96, 0xa7,
6857                         0xb8, 0xc9, 0xda, 0xeb, 0xfc, 0x0d, 0x1e, 0x2f,
6858                         0x40, 0x51, 0x62, 0x73, 0x84, 0x95, 0xa6, 0xb7,
6859                         0xc8, 0xd9, 0xea, 0xfb, 0x0c, 0x1d, 0x2e, 0x3f,
6860                         0x50, 0x61, 0x72, 0x83, 0x94, 0xa5, 0xb6, 0xc7,
6861                         0xd8, 0xe9, 0xfa, 0x0b, 0x1c, 0x2d, 0x3e, 0x4f,
6862                         0x60, 0x71, 0x82, 0x93, 0xa4, 0xb5, 0xc6, 0xd7,
6863                         0xe8, 0xf9, 0x0a, 0x1b, 0x2c, 0x3d, 0x4e, 0x5f,
6864                         0x70, 0x81, 0x92, 0xa3, 0xb4, 0xc5, 0xd6, 0xe7,
6865                         0xf8, 0x09, 0x1a, 0x2b, 0x3c, 0x4d, 0x5e, 0x6f,
6866                         0x80, 0x91, 0xa2, 0xb3, 0xc4, 0xd5, 0xe6, 0xf7,
6867                         0x08, 0x19, 0x2a, 0x3b, 0x4c, 0x5d, 0x6e, 0x7f,
6868                         0x90, 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf6, 0x07,
6869                         0x18, 0x29, 0x3a, 0x4b, 0x5c, 0x6d, 0x7e, 0x8f,
6870                         0xa0, 0xb1, 0xc2, 0xd3, 0xe4, 0xf5, 0x06, 0x17,
6871                         0x28, 0x39, 0x4a, 0x5b, 0x6c, 0x7d, 0x8e, 0x9f,
6872                         0xb0, 0xc1, 0xd2, 0xe3, 0xf4, 0x05, 0x16, 0x27,
6873                         0x38, 0x49, 0x5a, 0x6b, 0x7c, 0x8d, 0x9e, 0xaf,
6874                         0xc0, 0xd1, 0xe2, 0xf3, 0x04, 0x15, 0x26, 0x37,
6875                         0x48, 0x59, 0x6a, 0x7b, 0x8c, 0x9d, 0xae, 0xbf,
6876                         0xd0, 0xe1, 0xf2, 0x03, 0x14, 0x25, 0x36, 0x47,
6877                         0x58, 0x69, 0x7a, 0x8b, 0x9c, 0xad, 0xbe, 0xcf,
6878                         0xe0, 0xf1, 0x02, 0x13, 0x24, 0x35, 0x46, 0x57,
6879                         0x68, 0x79, 0x8a, 0x9b, 0xac, 0xbd, 0xce, 0xdf,
6880                         0xf0, 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67,
6881                         0x78, 0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef,
6882                         0x00, 0x13, 0x26, 0x39, 0x4c, 0x5f, 0x72, 0x85,
6883                         0x98, 0xab, 0xbe, 0xd1, 0xe4, 0xf7, 0x0a, 0x1d,
6884                         0x30, 0x43, 0x56, 0x69, 0x7c, 0x8f, 0xa2, 0xb5,
6885                         0xc8, 0xdb, 0xee, 0x01, 0x14, 0x27, 0x3a, 0x4d,
6886                         0x60, 0x73, 0x86, 0x99, 0xac, 0xbf, 0xd2, 0xe5,
6887                         0xf8, 0x0b, 0x1e, 0x31, 0x44, 0x57, 0x6a, 0x7d,
6888                         0x90, 0xa3, 0xb6, 0xc9, 0xdc, 0xef, 0x02, 0x15,
6889                         0x28, 0x3b, 0x4e, 0x61, 0x74, 0x87, 0x9a, 0xad,
6890                         0xc0, 0xd3, 0xe6, 0xf9, 0x0c, 0x1f, 0x32, 0x45,
6891                         0x58, 0x6b, 0x7e, 0x91, 0xa4, 0xb7, 0xca, 0xdd,
6892                         0xf0, 0x03, 0x16, 0x29, 0x3c, 0x4f, 0x62, 0x75,
6893                         0x88, 0x9b, 0xae, 0xc1, 0xd4, 0xe7, 0xfa, 0x0d,
6894                         0x20, 0x33, 0x46, 0x59, 0x6c, 0x7f, 0x92, 0xa5,
6895                         0xb8, 0xcb, 0xde, 0xf1, 0x04, 0x17, 0x2a, 0x3d,
6896                         0x50, 0x63, 0x76, 0x89, 0x9c, 0xaf, 0xc2, 0xd5,
6897                         0xe8, 0xfb, 0x0e, 0x21, 0x34, 0x47, 0x5a, 0x6d,
6898                         0x80, 0x93, 0xa6, 0xb9, 0xcc, 0xdf, 0xf2, 0x05,
6899                         0x18, 0x2b, 0x3e, 0x51, 0x64, 0x77, 0x8a, 0x9d,
6900                         0xb0, 0xc3, 0xd6, 0xe9, 0xfc, 0x0f, 0x22, 0x35,
6901                         0x48, 0x5b, 0x6e, 0x81, 0x94, 0xa7, 0xba, 0xcd,
6902                         0xe0, 0xf3, 0x06, 0x19, 0x2c, 0x3f, 0x52, 0x65,
6903                         0x78, 0x8b, 0x9e, 0xb1, 0xc4, 0xd7, 0xea, 0xfd,
6904                         0x10, 0x23, 0x36, 0x49, 0x5c, 0x6f, 0x82, 0x95,
6905                         0xa8, 0xbb, 0xce, 0xe1, 0xf4, 0x07, 0x1a, 0x2d,
6906                         0x40, 0x53, 0x66, 0x79, 0x8c, 0x9f, 0xb2, 0xc5,
6907                         0xd8, 0xeb, 0xfe, 0x11, 0x24, 0x37, 0x4a, 0x5d,
6908                         0x70, 0x83, 0x96, 0xa9, 0xbc, 0xcf, 0xe2, 0xf5,
6909                         0x08, 0x1b, 0x2e, 0x41, 0x54, 0x67, 0x7a, 0x8d,
6910                         0xa0, 0xb3, 0xc6, 0xd9, 0xec, 0xff, 0x12, 0x25,
6911                         0x38, 0x4b, 0x5e, 0x71, 0x84, 0x97, 0xaa, 0xbd,
6912                         0xd0, 0xe3, 0xf6, 0x09, 0x1c, 0x2f, 0x42, 0x55,
6913                         0x68, 0x7b, 0x8e, 0xa1, 0xb4, 0xc7, 0xda, 0xed,
6914                         0x00, 0x15, 0x2a, 0x3f, 0x54, 0x69, 0x7e, 0x93,
6915                         0xa8, 0xbd, 0xd2, 0xe7, 0xfc, 0x11, 0x26, 0x3b,
6916                         0x50, 0x65, 0x7a, 0x8f, 0xa4, 0xb9, 0xce, 0xe3,
6917                         0xf8, 0x0d, 0x22, 0x37, 0x4c, 0x61, 0x76, 0x8b,
6918                         0xa0, 0xb5, 0xca, 0xdf, 0xf4, 0x09, 0x1e, 0x33,
6919                         0x48, 0x5d, 0x72, 0x87, 0x9c, 0xb1, 0xc6, 0xdb,
6920                         0xf0, 0x05, 0x1a, 0x2f, 0x44, 0x59, 0x6e, 0x83,
6921                         0x98, 0xad, 0xc2, 0xd7, 0xec, 0x01, 0x16, 0x2b,
6922                         0x40, 0x55, 0x6a, 0x7f, 0x94, 0xa9, 0xbe, 0xd3,
6923                         0xe8, 0xfd, 0x12, 0x27, 0x3c, 0x51, 0x66, 0x7b,
6924                         0x90, 0xa5, 0xba, 0xcf, 0xe4, 0xf9, 0x0e, 0x23,
6925                         0x38, 0x4d, 0x62, 0x77, 0x8c, 0xa1, 0xb6, 0xcb,
6926                         0xe0, 0xf5, 0x0a, 0x1f, 0x34, 0x49, 0x5e, 0x73,
6927                         0x88, 0x9d, 0xb2, 0xc7, 0xdc, 0xf1, 0x06, 0x1b,
6928                         0x30, 0x45, 0x5a, 0x6f, 0x84, 0x99, 0xae, 0xc3,
6929                         0xd8, 0xed, 0x02, 0x17, 0x2c, 0x41, 0x56, 0x6b,
6930                         0x80, 0x95, 0xaa, 0xbf, 0xd4, 0xe9, 0xfe, 0x13,
6931                         0x28, 0x3d, 0x52, 0x67, 0x7c, 0x91, 0xa6, 0xbb,
6932                         0xd0, 0xe5, 0xfa, 0x0f, 0x24, 0x39, 0x4e, 0x63,
6933                         0x78, 0x8d, 0xa2, 0xb7, 0xcc, 0xe1, 0xf6, 0x0b,
6934                         0x20, 0x35, 0x4a, 0x5f, 0x74, 0x89, 0x9e, 0xb3,
6935                         0xc8, 0xdd, 0xf2, 0x07, 0x1c, 0x31, 0x46, 0x5b,
6936                         0x70, 0x85, 0x9a, 0xaf, 0xc4, 0xd9, 0xee, 0x03,
6937                         0x18, 0x2d, 0x42, 0x57, 0x6c, 0x81, 0x96, 0xab,
6938                         0xc0, 0xd5, 0xea, 0xff, 0x14, 0x29, 0x3e, 0x53,
6939                         0x68, 0x7d, 0x92, 0xa7, 0xbc, 0xd1, 0xe6, 0xfb,
6940                         0x10, 0x25, 0x3a, 0x4f, 0x64, 0x79, 0x8e, 0xa3,
6941                         0xb8, 0xcd, 0xe2, 0xf7, 0x0c, 0x21, 0x36, 0x4b,
6942                         0x60, 0x75, 0x8a, 0x9f, 0xb4, 0xc9, 0xde, 0xf3,
6943                         0x08, 0x1d, 0x32, 0x47, 0x5c, 0x71, 0x86, 0x9b,
6944                         0xb0, 0xc5, 0xda, 0xef, 0x04, 0x19, 0x2e, 0x43,
6945                         0x58, 0x6d, 0x82, 0x97, 0xac, 0xc1, 0xd6, 0xeb,
6946                         0x00, 0x17, 0x2e, 0x45, 0x5c, 0x73, 0x8a, 0xa1,
6947                         0xb8, 0xcf, 0xe6, 0xfd, 0x14, 0x2b, 0x42, 0x59,
6948                         0x70, 0x87, 0x9e, 0xb5, 0xcc, 0xe3, 0xfa, 0x11,
6949                         0x28, 0x3f, 0x56, 0x6d, 0x84, 0x9b, 0xb2, 0xc9,
6950                         0xe0, 0xf7, 0x0e, 0x25, 0x3c, 0x53, 0x6a, 0x81,
6951                         0x98, 0xaf, 0xc6, 0xdd, 0xf4, 0x0b, 0x22, 0x39,
6952                         0x50, 0x67, 0x7e, 0x95, 0xac, 0xc3, 0xda, 0xf1,
6953                         0x08, 0x1f, 0x36, 0x4d, 0x64, 0x7b, 0x92, 0xa9,
6954                         0xc0, 0xd7, 0xee, 0x05, 0x1c, 0x33, 0x4a, 0x61,
6955                         0x78, 0x8f, 0xa6, 0xbd, 0xd4, 0xeb, 0x02, 0x19,
6956                         0x30, 0x47, 0x5e, 0x75, 0x8c, 0xa3, 0xba, 0xd1,
6957                         0xe8, 0xff, 0x16, 0x2d, 0x44, 0x5b, 0x72, 0x89,
6958                         0xa0, 0xb7, 0xce, 0xe5, 0xfc, 0x13, 0x2a, 0x41,
6959                         0x58, 0x6f, 0x86, 0x9d, 0xb4, 0xcb, 0xe2, 0xf9,
6960                         0x10, 0x27, 0x3e, 0x55, 0x6c, 0x83, 0x9a, 0xb1,
6961                         0xc8, 0xdf, 0xf6, 0x0d, 0x24, 0x3b, 0x52, 0x69,
6962                         0x80, 0x97, 0xae, 0xc5, 0xdc, 0xf3, 0x0a, 0x21,
6963                         0x38, 0x4f, 0x66, 0x7d, 0x94, 0xab, 0xc2, 0xd9,
6964                         0xf0, 0x07, 0x1e, 0x35, 0x4c, 0x63, 0x7a, 0x91,
6965                         0xa8, 0xbf, 0xd6, 0xed, 0x04, 0x1b, 0x32, 0x49,
6966                         0x60, 0x77, 0x8e, 0xa5, 0xbc, 0xd3, 0xea, 0x01,
6967                         0x18, 0x2f, 0x46, 0x5d, 0x74, 0x8b, 0xa2, 0xb9,
6968                         0xd0, 0xe7, 0xfe, 0x15, 0x2c, 0x43, 0x5a, 0x71,
6969                         0x88, 0x9f, 0xb6, 0xcd, 0xe4, 0xfb, 0x12, 0x29,
6970                         0x40, 0x57, 0x6e, 0x85, 0x9c, 0xb3, 0xca, 0xe1,
6971                         0xf8, 0x0f, 0x26, 0x3d, 0x54, 0x6b, 0x82, 0x99,
6972                         0xb0, 0xc7, 0xde, 0xf5, 0x0c, 0x23, 0x3a, 0x51,
6973                         0x68, 0x7f, 0x96, 0xad, 0xc4, 0xdb, 0xf2, 0x09,
6974                         0x20, 0x37, 0x4e, 0x65, 0x7c, 0x93, 0xaa, 0xc1,
6975                         0xd8, 0xef, 0x06, 0x1d, 0x34, 0x4b, 0x62, 0x79,
6976                         0x90, 0xa7, 0xbe, 0xd5, 0xec, 0x03, 0x1a, 0x31,
6977                         0x48, 0x5f, 0x76, 0x8d, 0xa4, 0xbb, 0xd2, 0xe9,
6978                         0x00, 0x19, 0x32, 0x4b, 0x64, 0x7d, 0x96, 0xaf,
6979                         0xc8, 0xe1, 0xfa, 0x13, 0x2c, 0x45, 0x5e, 0x77,
6980                         0x90, 0xa9, 0xc2, 0xdb, 0xf4, 0x0d, 0x26, 0x3f,
6981                         0x58, 0x71, 0x8a, 0xa3, 0xbc, 0xd5, 0xee, 0x07,
6982                         0x20, 0x39, 0x52, 0x6b, 0x84, 0x9d, 0xb6, 0xcf,
6983                         0xe8, 0x01, 0x1a, 0x33, 0x4c, 0x65, 0x7e, 0x97,
6984                         0xb0, 0xc9, 0xe2, 0xfb, 0x14, 0x2d, 0x46, 0x5f,
6985                         0x78, 0x91, 0xaa, 0xc3, 0xdc, 0xf5, 0x0e, 0x27,
6986                         0x40, 0x59, 0x72, 0x8b, 0xa4, 0xbd, 0xd6, 0xef,
6987                         0x08, 0x21, 0x3a, 0x53, 0x6c, 0x85, 0x9e, 0xb7,
6988                         0xd0, 0xe9, 0x02, 0x1b, 0x34, 0x4d, 0x66, 0x7f,
6989                         0x98, 0xb1, 0xca, 0xe3, 0xfc, 0x15, 0x2e, 0x47,
6990                         0x60, 0x79, 0x92, 0xab, 0xc4, 0xdd, 0xf6, 0x0f,
6991                         0x28, 0x41, 0x5a, 0x73, 0x8c, 0xa5, 0xbe, 0xd7,
6992                         0xf0, 0x09, 0x22, 0x3b, 0x54, 0x6d, 0x86, 0x9f,
6993                         0xb8, 0xd1, 0xea, 0x03, 0x1c, 0x35, 0x4e, 0x67,
6994                         0x80, 0x99, 0xb2, 0xcb, 0xe4, 0xfd, 0x16, 0x2f,
6995                         0x48, 0x61, 0x7a, 0x93, 0xac, 0xc5, 0xde, 0xf7,
6996                         0x10, 0x29, 0x42, 0x5b, 0x74, 0x8d, 0xa6, 0xbf,
6997                         0xd8, 0xf1, 0x0a, 0x23, 0x3c, 0x55, 0x6e, 0x87,
6998                         0xa0, 0xb9, 0xd2, 0xeb, 0x04, 0x1d, 0x36, 0x4f,
6999                         0x68, 0x81, 0x9a, 0xb3, 0xcc, 0xe5, 0xfe, 0x17,
7000                         0x30, 0x49, 0x62, 0x7b, 0x94, 0xad, 0xc6, 0xdf,
7001                         0xf8, 0x11, 0x2a, 0x43, 0x5c, 0x75, 0x8e, 0xa7,
7002                         0xc0, 0xd9, 0xf2, 0x0b, 0x24, 0x3d, 0x56, 0x6f,
7003                         0x88, 0xa1, 0xba, 0xd3, 0xec, 0x05, 0x1e, 0x37,
7004                         0x50, 0x69, 0x82, 0x9b, 0xb4, 0xcd, 0xe6, 0xff,
7005                         0x18, 0x31, 0x4a, 0x63, 0x7c, 0x95, 0xae, 0xc7,
7006                         0xe0, 0xf9, 0x12, 0x2b, 0x44, 0x5d, 0x76, 0x8f,
7007                         0xa8, 0xc1, 0xda, 0xf3, 0x0c, 0x25, 0x3e, 0x57,
7008                         0x70, 0x89, 0xa2, 0xbb, 0xd4, 0xed, 0x06, 0x1f,
7009                         0x38, 0x51, 0x6a, 0x83, 0x9c, 0xb5, 0xce, 0xe7,
7010                         0x00, 0x1b, 0x36, 0x51, 0x6c, 0x87, 0xa2, 0xbd,
7011                         0xd8, 0xf3, 0x0e, 0x29, 0x44, 0x5f, 0x7a, 0x95,
7012                         0xb0, 0xcb, 0xe6, 0x01, 0x1c, 0x37, 0x52, 0x6d,
7013                         0x88, 0xa3, 0xbe, 0xd9, 0xf4, 0x0f, 0x2a, 0x45,
7014                         0x60, 0x7b, 0x96, 0xb1, 0xcc, 0xe7, 0x02, 0x1d,
7015                         0x38, 0x53, 0x6e, 0x89, 0xa4, 0xbf, 0xda, 0xf5,
7016                         0x10, 0x2b, 0x46, 0x61, 0x7c, 0x97, 0xb2, 0xcd,
7017                         0xe8, 0x03, 0x1e, 0x39, 0x54, 0x6f, 0x8a, 0xa5,
7018                         0xc0, 0xdb, 0xf6, 0x11, 0x2c, 0x47, 0x62, 0x7d,
7019                         0x98, 0xb3, 0xce, 0xe9, 0x04, 0x1f, 0x3a, 0x55,
7020                         0x70, 0x8b, 0xa6, 0xc1, 0xdc, 0xf7, 0x12, 0x2d,
7021                         0x48, 0x63, 0x7e, 0x99, 0xb4, 0xcf, 0xea, 0x05,
7022                         0x20, 0x3b, 0x56, 0x71, 0x8c, 0xa7, 0xc2, 0xdd,
7023                         0xf8, 0x13, 0x2e, 0x49, 0x64, 0x7f, 0x9a, 0xb5,
7024                         0xd0, 0xeb, 0x06, 0x21, 0x3c, 0x57, 0x72, 0x8d,
7025                         0xa8, 0xc3, 0xde, 0xf9, 0x14, 0x2f, 0x4a, 0x65,
7026                         0x80, 0x9b, 0xb6, 0xd1, 0xec, 0x07, 0x22, 0x3d,
7027                         0x58, 0x73, 0x8e, 0xa9, 0xc4, 0xdf, 0xfa, 0x15,
7028                         0x30, 0x4b, 0x66, 0x81, 0x9c, 0xb7, 0xd2, 0xed,
7029                         0x08, 0x23, 0x3e, 0x59, 0x74, 0x8f, 0xaa, 0xc5,
7030                         0xe0, 0xfb, 0x16, 0x31, 0x4c, 0x67, 0x82, 0x9d,
7031                         0xb8, 0xd3, 0xee, 0x09, 0x24, 0x3f, 0x5a, 0x75,
7032                         0x90, 0xab, 0xc6, 0xe1, 0xfc, 0x17, 0x32, 0x4d,
7033                         0x68, 0x83, 0x9e, 0xb9, 0xd4, 0xef, 0x0a, 0x25,
7034                         0x40, 0x5b, 0x76, 0x91, 0xac, 0xc7, 0xe2, 0xfd,
7035                         0x18, 0x33, 0x4e, 0x69, 0x84, 0x9f, 0xba, 0xd5,
7036                         0xf0, 0x0b, 0x26, 0x41, 0x5c, 0x77, 0x92, 0xad,
7037                         0xc8, 0xe3, 0xfe, 0x19, 0x34, 0x4f, 0x6a, 0x85,
7038                         0xa0, 0xbb, 0xd6, 0xf1, 0x0c, 0x27, 0x42, 0x5d,
7039                         0x78, 0x93, 0xae, 0xc9, 0xe4, 0xff, 0x1a, 0x35,
7040                         0x50, 0x6b, 0x86, 0xa1, 0xbc, 0xd7, 0xf2, 0x0d,
7041                         0x28, 0x43, 0x5e, 0x79, 0x94, 0xaf, 0xca, 0xe5,
7042                         0x00, 0x1d, 0x3a, 0x57, 0x74, 0x91, 0xae, 0xcb,
7043                         0xe8, 0x05, 0x22, 0x3f, 0x5c, 0x79, 0x96, 0xb3,
7044                         0xd0, 0xed, 0x0a, 0x27, 0x44, 0x61, 0x7e, 0x9b,
7045                         0xb8, 0xd5, 0xf2, 0x0f, 0x2c, 0x49, 0x66, 0x83,
7046                         0xa0, 0xbd, 0xda, 0xf7, 0x14, 0x31, 0x4e, 0x6b,
7047                         0x88, 0xa5, 0xc2, 0xdf, 0xfc, 0x19, 0x36, 0x53,
7048                         0x70, 0x8d, 0xaa, 0xc7, 0xe4, 0x01, 0x1e, 0x3b,
7049                         0x58, 0x75, 0x92, 0xaf, 0xcc, 0xe9, 0x06, 0x23,
7050                         0x40, 0x5d, 0x7a, 0x97, 0xb4, 0xd1, 0xee, 0x0b,
7051                         0x28, 0x45, 0x62, 0x7f, 0x9c, 0xb9, 0xd6, 0xf3,
7052                         0x10, 0x2d, 0x4a, 0x67, 0x84, 0xa1, 0xbe, 0xdb,
7053                         0xf8, 0x15, 0x32, 0x4f, 0x6c, 0x89, 0xa6, 0xc3,
7054                         0xe0, 0xfd, 0x1a, 0x37, 0x54, 0x71, 0x8e, 0xab,
7055                         0xc8, 0xe5, 0x02, 0x1f, 0x3c, 0x59, 0x76, 0x93,
7056                         0xb0, 0xcd, 0xea, 0x07, 0x24, 0x41, 0x5e, 0x7b,
7057                         0x98, 0xb5, 0xd2, 0xef, 0x0c, 0x29, 0x46, 0x63,
7058                         0x80, 0x9d, 0xba, 0xd7, 0xf4, 0x11, 0x2e, 0x4b,
7059                         0x68, 0x85, 0xa2, 0xbf, 0xdc, 0xf9, 0x16, 0x33,
7060                         0x50, 0x6d, 0x8a, 0xa7, 0xc4, 0xe1, 0xfe, 0x1b,
7061                         0x38, 0x55, 0x72, 0x8f, 0xac, 0xc9, 0xe6, 0x03,
7062                         0x20, 0x3d, 0x5a, 0x77, 0x94, 0xb1, 0xce, 0xeb,
7063                         0x08, 0x25, 0x42, 0x5f, 0x7c, 0x99, 0xb6, 0xd3,
7064                         0xf0, 0x0d, 0x2a, 0x47, 0x64, 0x81, 0x9e, 0xbb,
7065                         0xd8, 0xf5, 0x12, 0x2f, 0x4c, 0x69, 0x86, 0xa3,
7066                         0xc0, 0xdd, 0xfa, 0x17, 0x34, 0x51, 0x6e, 0x8b,
7067                         0xa8, 0xc5, 0xe2, 0xff, 0x1c, 0x39, 0x56, 0x73,
7068                         0x90, 0xad, 0xca, 0xe7, 0x04, 0x21, 0x3e, 0x5b,
7069                         0x78, 0x95, 0xb2, 0xcf, 0xec, 0x09, 0x26, 0x43,
7070                         0x60, 0x7d, 0x9a, 0xb7, 0xd4, 0xf1, 0x0e, 0x2b,
7071                         0x48, 0x65, 0x82, 0x9f, 0xbc, 0xd9, 0xf6, 0x13,
7072                         0x30, 0x4d, 0x6a, 0x87, 0xa4, 0xc1, 0xde, 0xfb,
7073                         0x18, 0x35, 0x52, 0x6f, 0x8c, 0xa9, 0xc6, 0xe3,
7074                         0x00, 0x1f, 0x3e, 0x5d, 0x7c, 0x9b, 0xba, 0xd9,
7075                         0xf8, 0x17, 0x36, 0x55, 0x74, 0x93, 0xb2, 0xd1,
7076                         0xf0, 0x0f, 0x2e, 0x4d, 0x6c, 0x8b, 0xaa, 0xc9,
7077                         0xe8, 0x07, 0x26, 0x45, 0x64, 0x83, 0xa2, 0xc1,
7078                         0xe0, 0xff, 0x1e, 0x3d, 0x5c, 0x7b, 0x9a, 0xb9,
7079                         0xd8, 0xf7, 0x16, 0x35, 0x54, 0x73, 0x92, 0xb1,
7080                         0xd0, 0xef, 0x0e, 0x2d, 0x4c, 0x6b, 0x8a, 0xa9,
7081                         0xc8, 0xe7, 0x06, 0x25, 0x44, 0x63, 0x82, 0xa1,
7082                         0xc0, 0xdf, 0xfe, 0x1d, 0x3c, 0x5b, 0x7a, 0x99,
7083                         0xb8, 0xd7, 0xf6, 0x15, 0x34, 0x53, 0x72, 0x91,
7084                         0xb0, 0xcf, 0xee, 0x0d, 0x2c, 0x4b, 0x6a, 0x89,
7085                         0xa8, 0xc7, 0xe6, 0x05, 0x24, 0x43, 0x62, 0x81,
7086                         0xa0, 0xbf, 0xde, 0xfd, 0x1c, 0x3b, 0x5a, 0x79,
7087                         0x98, 0xb7, 0xd6, 0xf5, 0x14, 0x33, 0x52, 0x71,
7088                         0x90, 0xaf, 0xce, 0xed, 0x0c, 0x2b, 0x4a, 0x69,
7089                         0x88, 0xa7, 0xc6, 0xe5, 0x04, 0x23, 0x42, 0x61,
7090                         0x80, 0x9f, 0xbe, 0xdd, 0xfc, 0x1b, 0x3a, 0x59,
7091                         0x78, 0x97, 0xb6, 0xd5, 0xf4, 0x13, 0x32, 0x51,
7092                         0x70, 0x8f, 0xae, 0xcd, 0xec, 0x0b, 0x2a, 0x49,
7093                         0x68, 0x87, 0xa6, 0xc5, 0xe4, 0x03, 0x22, 0x41,
7094                         0x60, 0x7f, 0x9e, 0xbd, 0xdc, 0xfb, 0x1a, 0x39,
7095                         0x58, 0x77, 0x96, 0xb5, 0xd4, 0xf3, 0x12, 0x31,
7096                         0x50, 0x6f, 0x8e, 0xad, 0xcc, 0xeb, 0x0a, 0x29,
7097                         0x48, 0x67, 0x86, 0xa5, 0xc4, 0xe3, 0x02, 0x21,
7098                         0x40, 0x5f, 0x7e, 0x9d, 0xbc, 0xdb, 0xfa, 0x19,
7099                         0x38, 0x57, 0x76, 0x95, 0xb4, 0xd3, 0xf2, 0x11,
7100                         0x30, 0x4f, 0x6e, 0x8d, 0xac, 0xcb, 0xea, 0x09,
7101                         0x28, 0x47, 0x66, 0x85, 0xa4, 0xc3, 0xe2, 0x01,
7102                         0x20, 0x3f, 0x5e, 0x7d, 0x9c, 0xbb, 0xda, 0xf9,
7103                         0x18, 0x37, 0x56, 0x75, 0x94, 0xb3, 0xd2, 0xf1,
7104                         0x10, 0x2f, 0x4e, 0x6d, 0x8c, 0xab, 0xca, 0xe9,
7105                         0x08, 0x27, 0x46, 0x65, 0x84, 0xa3, 0xc2, 0xe1,
7106                         0x00, 0x21, 0x42, 0x63,
7107                 },
7108                 .ilen = 4100,
7109                 .result = {
7110                         0xb5, 0x81, 0xf5, 0x64, 0x18, 0x73, 0xe3, 0xf0,
7111                         0x4c, 0x13, 0xf2, 0x77, 0x18, 0x60, 0x65, 0x5e,
7112                         0x29, 0x01, 0xce, 0x98, 0x55, 0x53, 0xf9, 0x0c,
7113                         0x2a, 0x08, 0xd5, 0x09, 0xb3, 0x57, 0x55, 0x56,
7114                         0xc5, 0xe9, 0x56, 0x90, 0xcb, 0x6a, 0xa3, 0xc0,
7115                         0xff, 0xc4, 0x79, 0xb4, 0xd2, 0x97, 0x5d, 0xc4,
7116                         0x43, 0xd1, 0xfe, 0x94, 0x7b, 0x88, 0x06, 0x5a,
7117                         0xb2, 0x9e, 0x2c, 0xfc, 0x44, 0x03, 0xb7, 0x90,
7118                         0xa0, 0xc1, 0xba, 0x6a, 0x33, 0xb8, 0xc7, 0xb2,
7119                         0x9d, 0xe1, 0x12, 0x4f, 0xc0, 0x64, 0xd4, 0x01,
7120                         0xfe, 0x8c, 0x7a, 0x66, 0xf7, 0xe6, 0x5a, 0x91,
7121                         0xbb, 0xde, 0x56, 0x86, 0xab, 0x65, 0x21, 0x30,
7122                         0x00, 0x84, 0x65, 0x24, 0xa5, 0x7d, 0x85, 0xb4,
7123                         0xe3, 0x17, 0xed, 0x3a, 0xb7, 0x6f, 0xb4, 0x0b,
7124                         0x0b, 0xaf, 0x15, 0xae, 0x5a, 0x8f, 0xf2, 0x0c,
7125                         0x2f, 0x27, 0xf4, 0x09, 0xd8, 0xd2, 0x96, 0xb7,
7126                         0x71, 0xf2, 0xc5, 0x99, 0x4d, 0x7e, 0x7f, 0x75,
7127                         0x77, 0x89, 0x30, 0x8b, 0x59, 0xdb, 0xa2, 0xb2,
7128                         0xa0, 0xf3, 0x19, 0x39, 0x2b, 0xc5, 0x7e, 0x3f,
7129                         0x4f, 0xd9, 0xd3, 0x56, 0x28, 0x97, 0x44, 0xdc,
7130                         0xc0, 0x8b, 0x77, 0x24, 0xd9, 0x52, 0xe7, 0xc5,
7131                         0xaf, 0xf6, 0x7d, 0x59, 0xb2, 0x44, 0x05, 0x1d,
7132                         0xb1, 0xb0, 0x11, 0xa5, 0x0f, 0xec, 0x33, 0xe1,
7133                         0x6d, 0x1b, 0x4e, 0x1f, 0xff, 0x57, 0x91, 0xb4,
7134                         0x5b, 0x9a, 0x96, 0xc5, 0x53, 0xbc, 0xae, 0x20,
7135                         0x3c, 0xbb, 0x14, 0xe2, 0xe8, 0x22, 0x33, 0xc1,
7136                         0x5e, 0x76, 0x9e, 0x46, 0x99, 0xf6, 0x2a, 0x15,
7137                         0xc6, 0x97, 0x02, 0xa0, 0x66, 0x43, 0xd1, 0xa6,
7138                         0x31, 0xa6, 0x9f, 0xfb, 0xf4, 0xd3, 0x69, 0xe5,
7139                         0xcd, 0x76, 0x95, 0xb8, 0x7a, 0x82, 0x7f, 0x21,
7140                         0x45, 0xff, 0x3f, 0xce, 0x55, 0xf6, 0x95, 0x10,
7141                         0x08, 0x77, 0x10, 0x43, 0xc6, 0xf3, 0x09, 0xe5,
7142                         0x68, 0xe7, 0x3c, 0xad, 0x00, 0x52, 0x45, 0x0d,
7143                         0xfe, 0x2d, 0xc6, 0xc2, 0x94, 0x8c, 0x12, 0x1d,
7144                         0xe6, 0x25, 0xae, 0x98, 0x12, 0x8e, 0x19, 0x9c,
7145                         0x81, 0x68, 0xb1, 0x11, 0xf6, 0x69, 0xda, 0xe3,
7146                         0x62, 0x08, 0x18, 0x7a, 0x25, 0x49, 0x28, 0xac,
7147                         0xba, 0x71, 0x12, 0x0b, 0xe4, 0xa2, 0xe5, 0xc7,
7148                         0x5d, 0x8e, 0xec, 0x49, 0x40, 0x21, 0xbf, 0x5a,
7149                         0x98, 0xf3, 0x02, 0x68, 0x55, 0x03, 0x7f, 0x8a,
7150                         0xe5, 0x94, 0x0c, 0x32, 0x5c, 0x07, 0x82, 0x63,
7151                         0xaf, 0x6f, 0x91, 0x40, 0x84, 0x8e, 0x52, 0x25,
7152                         0xd0, 0xb0, 0x29, 0x53, 0x05, 0xe2, 0x50, 0x7a,
7153                         0x34, 0xeb, 0xc9, 0x46, 0x20, 0xa8, 0x3d, 0xde,
7154                         0x7f, 0x16, 0x5f, 0x36, 0xc5, 0x2e, 0xdc, 0xd1,
7155                         0x15, 0x47, 0xc7, 0x50, 0x40, 0x6d, 0x91, 0xc5,
7156                         0xe7, 0x93, 0x95, 0x1a, 0xd3, 0x57, 0xbc, 0x52,
7157                         0x33, 0xee, 0x14, 0x19, 0x22, 0x52, 0x89, 0xa7,
7158                         0x4a, 0x25, 0x56, 0x77, 0x4b, 0xca, 0xcf, 0x0a,
7159                         0xe1, 0xf5, 0x35, 0x85, 0x30, 0x7e, 0x59, 0x4a,
7160                         0xbd, 0x14, 0x5b, 0xdf, 0xe3, 0x46, 0xcb, 0xac,
7161                         0x1f, 0x6c, 0x96, 0x0e, 0xf4, 0x81, 0xd1, 0x99,
7162                         0xca, 0x88, 0x63, 0x3d, 0x02, 0x58, 0x6b, 0xa9,
7163                         0xe5, 0x9f, 0xb3, 0x00, 0xb2, 0x54, 0xc6, 0x74,
7164                         0x1c, 0xbf, 0x46, 0xab, 0x97, 0xcc, 0xf8, 0x54,
7165                         0x04, 0x07, 0x08, 0x52, 0xe6, 0xc0, 0xda, 0x93,
7166                         0x74, 0x7d, 0x93, 0x99, 0x5d, 0x78, 0x68, 0xa6,
7167                         0x2e, 0x6b, 0xd3, 0x6a, 0x69, 0xcc, 0x12, 0x6b,
7168                         0xd4, 0xc7, 0xa5, 0xc6, 0xe7, 0xf6, 0x03, 0x04,
7169                         0x5d, 0xcd, 0x61, 0x5e, 0x17, 0x40, 0xdc, 0xd1,
7170                         0x5c, 0xf5, 0x08, 0xdf, 0x5c, 0x90, 0x85, 0xa4,
7171                         0xaf, 0xf6, 0x78, 0xbb, 0x0d, 0xf1, 0xf4, 0xa4,
7172                         0x54, 0x26, 0x72, 0x9e, 0x61, 0xfa, 0x86, 0xcf,
7173                         0xe8, 0x9e, 0xa1, 0xe0, 0xc7, 0x48, 0x23, 0xae,
7174                         0x5a, 0x90, 0xae, 0x75, 0x0a, 0x74, 0x18, 0x89,
7175                         0x05, 0xb1, 0x92, 0xb2, 0x7f, 0xd0, 0x1b, 0xa6,
7176                         0x62, 0x07, 0x25, 0x01, 0xc7, 0xc2, 0x4f, 0xf9,
7177                         0xe8, 0xfe, 0x63, 0x95, 0x80, 0x07, 0xb4, 0x26,
7178                         0xcc, 0xd1, 0x26, 0xb6, 0xc4, 0x3f, 0x9e, 0xcb,
7179                         0x8e, 0x3b, 0x2e, 0x44, 0x16, 0xd3, 0x10, 0x9a,
7180                         0x95, 0x08, 0xeb, 0xc8, 0xcb, 0xeb, 0xbf, 0x6f,
7181                         0x0b, 0xcd, 0x1f, 0xc8, 0xca, 0x86, 0xaa, 0xec,
7182                         0x33, 0xe6, 0x69, 0xf4, 0x45, 0x25, 0x86, 0x3a,
7183                         0x22, 0x94, 0x4f, 0x00, 0x23, 0x6a, 0x44, 0xc2,
7184                         0x49, 0x97, 0x33, 0xab, 0x36, 0x14, 0x0a, 0x70,
7185                         0x24, 0xc3, 0xbe, 0x04, 0x3b, 0x79, 0xa0, 0xf9,
7186                         0xb8, 0xe7, 0x76, 0x29, 0x22, 0x83, 0xd7, 0xf2,
7187                         0x94, 0xf4, 0x41, 0x49, 0xba, 0x5f, 0x7b, 0x07,
7188                         0xb5, 0xfb, 0xdb, 0x03, 0x1a, 0x9f, 0xb6, 0x4c,
7189                         0xc2, 0x2e, 0x37, 0x40, 0x49, 0xc3, 0x38, 0x16,
7190                         0xe2, 0x4f, 0x77, 0x82, 0xb0, 0x68, 0x4c, 0x71,
7191                         0x1d, 0x57, 0x61, 0x9c, 0xd9, 0x4e, 0x54, 0x99,
7192                         0x47, 0x13, 0x28, 0x73, 0x3c, 0xbb, 0x00, 0x90,
7193                         0xf3, 0x4d, 0xc9, 0x0e, 0xfd, 0xe7, 0xb1, 0x71,
7194                         0xd3, 0x15, 0x79, 0xbf, 0xcc, 0x26, 0x2f, 0xbd,
7195                         0xad, 0x6c, 0x50, 0x69, 0x6c, 0x3e, 0x6d, 0x80,
7196                         0x9a, 0xea, 0x78, 0xaf, 0x19, 0xb2, 0x0d, 0x4d,
7197                         0xad, 0x04, 0x07, 0xae, 0x22, 0x90, 0x4a, 0x93,
7198                         0x32, 0x0e, 0x36, 0x9b, 0x1b, 0x46, 0xba, 0x3b,
7199                         0xb4, 0xac, 0xc6, 0xd1, 0xa2, 0x31, 0x53, 0x3b,
7200                         0x2a, 0x3d, 0x45, 0xfe, 0x03, 0x61, 0x10, 0x85,
7201                         0x17, 0x69, 0xa6, 0x78, 0xcc, 0x6c, 0x87, 0x49,
7202                         0x53, 0xf9, 0x80, 0x10, 0xde, 0x80, 0xa2, 0x41,
7203                         0x6a, 0xc3, 0x32, 0x02, 0xad, 0x6d, 0x3c, 0x56,
7204                         0x00, 0x71, 0x51, 0x06, 0xa7, 0xbd, 0xfb, 0xef,
7205                         0x3c, 0xb5, 0x9f, 0xfc, 0x48, 0x7d, 0x53, 0x7c,
7206                         0x66, 0xb0, 0x49, 0x23, 0xc4, 0x47, 0x10, 0x0e,
7207                         0xe5, 0x6c, 0x74, 0x13, 0xe6, 0xc5, 0x3f, 0xaa,
7208                         0xde, 0xff, 0x07, 0x44, 0xdd, 0x56, 0x1b, 0xad,
7209                         0x09, 0x77, 0xfb, 0x5b, 0x12, 0xb8, 0x0d, 0x38,
7210                         0x17, 0x37, 0x35, 0x7b, 0x9b, 0xbc, 0xfe, 0xd4,
7211                         0x7e, 0x8b, 0xda, 0x7e, 0x5b, 0x04, 0xa7, 0x22,
7212                         0xa7, 0x31, 0xa1, 0x20, 0x86, 0xc7, 0x1b, 0x99,
7213                         0xdb, 0xd1, 0x89, 0xf4, 0x94, 0xa3, 0x53, 0x69,
7214                         0x8d, 0xe7, 0xe8, 0x74, 0x11, 0x8d, 0x74, 0xd6,
7215                         0x07, 0x37, 0x91, 0x9f, 0xfd, 0x67, 0x50, 0x3a,
7216                         0xc9, 0xe1, 0xf4, 0x36, 0xd5, 0xa0, 0x47, 0xd1,
7217                         0xf9, 0xe5, 0x39, 0xa3, 0x31, 0xac, 0x07, 0x36,
7218                         0x23, 0xf8, 0x66, 0x18, 0x14, 0x28, 0x34, 0x0f,
7219                         0xb8, 0xd0, 0xe7, 0x29, 0xb3, 0x04, 0x4b, 0x55,
7220                         0x01, 0x41, 0xb2, 0x75, 0x8d, 0xcb, 0x96, 0x85,
7221                         0x3a, 0xfb, 0xab, 0x2b, 0x9e, 0xfa, 0x58, 0x20,
7222                         0x44, 0x1f, 0xc0, 0x14, 0x22, 0x75, 0x61, 0xe8,
7223                         0xaa, 0x19, 0xcf, 0xf1, 0x82, 0x56, 0xf4, 0xd7,
7224                         0x78, 0x7b, 0x3d, 0x5f, 0xb3, 0x9e, 0x0b, 0x8a,
7225                         0x57, 0x50, 0xdb, 0x17, 0x41, 0x65, 0x4d, 0xa3,
7226                         0x02, 0xc9, 0x9c, 0x9c, 0x53, 0xfb, 0x39, 0x39,
7227                         0x9b, 0x1d, 0x72, 0x24, 0xda, 0xb7, 0x39, 0xbe,
7228                         0x13, 0x3b, 0xfa, 0x29, 0xda, 0x9e, 0x54, 0x64,
7229                         0x6e, 0xba, 0xd8, 0xa1, 0xcb, 0xb3, 0x36, 0xfa,
7230                         0xcb, 0x47, 0x85, 0xe9, 0x61, 0x38, 0xbc, 0xbe,
7231                         0xc5, 0x00, 0x38, 0x2a, 0x54, 0xf7, 0xc4, 0xb9,
7232                         0xb3, 0xd3, 0x7b, 0xa0, 0xa0, 0xf8, 0x72, 0x7f,
7233                         0x8c, 0x8e, 0x82, 0x0e, 0xc6, 0x1c, 0x75, 0x9d,
7234                         0xca, 0x8e, 0x61, 0x87, 0xde, 0xad, 0x80, 0xd2,
7235                         0xf5, 0xf9, 0x80, 0xef, 0x15, 0x75, 0xaf, 0xf5,
7236                         0x80, 0xfb, 0xff, 0x6d, 0x1e, 0x25, 0xb7, 0x40,
7237                         0x61, 0x6a, 0x39, 0x5a, 0x6a, 0xb5, 0x31, 0xab,
7238                         0x97, 0x8a, 0x19, 0x89, 0x44, 0x40, 0xc0, 0xa6,
7239                         0xb4, 0x4e, 0x30, 0x32, 0x7b, 0x13, 0xe7, 0x67,
7240                         0xa9, 0x8b, 0x57, 0x04, 0xc2, 0x01, 0xa6, 0xf4,
7241                         0x28, 0x99, 0xad, 0x2c, 0x76, 0xa3, 0x78, 0xc2,
7242                         0x4a, 0xe6, 0xca, 0x5c, 0x50, 0x6a, 0xc1, 0xb0,
7243                         0x62, 0x4b, 0x10, 0x8e, 0x7c, 0x17, 0x43, 0xb3,
7244                         0x17, 0x66, 0x1c, 0x3e, 0x8d, 0x69, 0xf0, 0x5a,
7245                         0x71, 0xf5, 0x97, 0xdc, 0xd1, 0x45, 0xdd, 0x28,
7246                         0xf3, 0x5d, 0xdf, 0x53, 0x7b, 0x11, 0xe5, 0xbc,
7247                         0x4c, 0xdb, 0x1b, 0x51, 0x6b, 0xe9, 0xfb, 0x3d,
7248                         0xc1, 0xc3, 0x2c, 0xb9, 0x71, 0xf5, 0xb6, 0xb2,
7249                         0x13, 0x36, 0x79, 0x80, 0x53, 0xe8, 0xd3, 0xa6,
7250                         0x0a, 0xaf, 0xfd, 0x56, 0x97, 0xf7, 0x40, 0x8e,
7251                         0x45, 0xce, 0xf8, 0xb0, 0x9e, 0x5c, 0x33, 0x82,
7252                         0xb0, 0x44, 0x56, 0xfc, 0x05, 0x09, 0xe9, 0x2a,
7253                         0xac, 0x26, 0x80, 0x14, 0x1d, 0xc8, 0x3a, 0x35,
7254                         0x4c, 0x82, 0x97, 0xfd, 0x76, 0xb7, 0xa9, 0x0a,
7255                         0x35, 0x58, 0x79, 0x8e, 0x0f, 0x66, 0xea, 0xaf,
7256                         0x51, 0x6c, 0x09, 0xa9, 0x6e, 0x9b, 0xcb, 0x9a,
7257                         0x31, 0x47, 0xa0, 0x2f, 0x7c, 0x71, 0xb4, 0x4a,
7258                         0x11, 0xaa, 0x8c, 0x66, 0xc5, 0x64, 0xe6, 0x3a,
7259                         0x54, 0xda, 0x24, 0x6a, 0xc4, 0x41, 0x65, 0x46,
7260                         0x82, 0xa0, 0x0a, 0x0f, 0x5f, 0xfb, 0x25, 0xd0,
7261                         0x2c, 0x91, 0xa7, 0xee, 0xc4, 0x81, 0x07, 0x86,
7262                         0x75, 0x5e, 0x33, 0x69, 0x97, 0xe4, 0x2c, 0xa8,
7263                         0x9d, 0x9f, 0x0b, 0x6a, 0xbe, 0xad, 0x98, 0xda,
7264                         0x6d, 0x94, 0x41, 0xda, 0x2c, 0x1e, 0x89, 0xc4,
7265                         0xc2, 0xaf, 0x1e, 0x00, 0x05, 0x0b, 0x83, 0x60,
7266                         0xbd, 0x43, 0xea, 0x15, 0x23, 0x7f, 0xb9, 0xac,
7267                         0xee, 0x4f, 0x2c, 0xaf, 0x2a, 0xf3, 0xdf, 0xd0,
7268                         0xf3, 0x19, 0x31, 0xbb, 0x4a, 0x74, 0x84, 0x17,
7269                         0x52, 0x32, 0x2c, 0x7d, 0x61, 0xe4, 0xcb, 0xeb,
7270                         0x80, 0x38, 0x15, 0x52, 0xcb, 0x6f, 0xea, 0xe5,
7271                         0x73, 0x9c, 0xd9, 0x24, 0x69, 0xc6, 0x95, 0x32,
7272                         0x21, 0xc8, 0x11, 0xe4, 0xdc, 0x36, 0xd7, 0x93,
7273                         0x38, 0x66, 0xfb, 0xb2, 0x7f, 0x3a, 0xb9, 0xaf,
7274                         0x31, 0xdd, 0x93, 0x75, 0x78, 0x8a, 0x2c, 0x94,
7275                         0x87, 0x1a, 0x58, 0xec, 0x9e, 0x7d, 0x4d, 0xba,
7276                         0xe1, 0xe5, 0x4d, 0xfc, 0xbc, 0xa4, 0x2a, 0x14,
7277                         0xef, 0xcc, 0xa7, 0xec, 0xab, 0x43, 0x09, 0x18,
7278                         0xd3, 0xab, 0x68, 0xd1, 0x07, 0x99, 0x44, 0x47,
7279                         0xd6, 0x83, 0x85, 0x3b, 0x30, 0xea, 0xa9, 0x6b,
7280                         0x63, 0xea, 0xc4, 0x07, 0xfb, 0x43, 0x2f, 0xa4,
7281                         0xaa, 0xb0, 0xab, 0x03, 0x89, 0xce, 0x3f, 0x8c,
7282                         0x02, 0x7c, 0x86, 0x54, 0xbc, 0x88, 0xaf, 0x75,
7283                         0xd2, 0xdc, 0x63, 0x17, 0xd3, 0x26, 0xf6, 0x96,
7284                         0xa9, 0x3c, 0xf1, 0x61, 0x8c, 0x11, 0x18, 0xcc,
7285                         0xd6, 0xea, 0x5b, 0xe2, 0xcd, 0xf0, 0xf1, 0xb2,
7286                         0xe5, 0x35, 0x90, 0x1f, 0x85, 0x4c, 0x76, 0x5b,
7287                         0x66, 0xce, 0x44, 0xa4, 0x32, 0x9f, 0xe6, 0x7b,
7288                         0x71, 0x6e, 0x9f, 0x58, 0x15, 0x67, 0x72, 0x87,
7289                         0x64, 0x8e, 0x3a, 0x44, 0x45, 0xd4, 0x76, 0xfa,
7290                         0xc2, 0xf6, 0xef, 0x85, 0x05, 0x18, 0x7a, 0x9b,
7291                         0xba, 0x41, 0x54, 0xac, 0xf0, 0xfc, 0x59, 0x12,
7292                         0x3f, 0xdf, 0xa0, 0xe5, 0x8a, 0x65, 0xfd, 0x3a,
7293                         0x62, 0x8d, 0x83, 0x2c, 0x03, 0xbe, 0x05, 0x76,
7294                         0x2e, 0x53, 0x49, 0x97, 0x94, 0x33, 0xae, 0x40,
7295                         0x81, 0x15, 0xdb, 0x6e, 0xad, 0xaa, 0xf5, 0x4b,
7296                         0xe3, 0x98, 0x70, 0xdf, 0xe0, 0x7c, 0xcd, 0xdb,
7297                         0x02, 0xd4, 0x7d, 0x2f, 0xc1, 0xe6, 0xb4, 0xf3,
7298                         0xd7, 0x0d, 0x7a, 0xd9, 0x23, 0x9e, 0x87, 0x2d,
7299                         0xce, 0x87, 0xad, 0xcc, 0x72, 0x05, 0x00, 0x29,
7300                         0xdc, 0x73, 0x7f, 0x64, 0xc1, 0x15, 0x0e, 0xc2,
7301                         0xdf, 0xa7, 0x5f, 0xeb, 0x41, 0xa1, 0xcd, 0xef,
7302                         0x5c, 0x50, 0x79, 0x2a, 0x56, 0x56, 0x71, 0x8c,
7303                         0xac, 0xc0, 0x79, 0x50, 0x69, 0xca, 0x59, 0x32,
7304                         0x65, 0xf2, 0x54, 0xe4, 0x52, 0x38, 0x76, 0xd1,
7305                         0x5e, 0xde, 0x26, 0x9e, 0xfb, 0x75, 0x2e, 0x11,
7306                         0xb5, 0x10, 0xf4, 0x17, 0x73, 0xf5, 0x89, 0xc7,
7307                         0x4f, 0x43, 0x5c, 0x8e, 0x7c, 0xb9, 0x05, 0x52,
7308                         0x24, 0x40, 0x99, 0xfe, 0x9b, 0x85, 0x0b, 0x6c,
7309                         0x22, 0x3e, 0x8b, 0xae, 0x86, 0xa1, 0xd2, 0x79,
7310                         0x05, 0x68, 0x6b, 0xab, 0xe3, 0x41, 0x49, 0xed,
7311                         0x15, 0xa1, 0x8d, 0x40, 0x2d, 0x61, 0xdf, 0x1a,
7312                         0x59, 0xc9, 0x26, 0x8b, 0xef, 0x30, 0x4c, 0x88,
7313                         0x4b, 0x10, 0xf8, 0x8d, 0xa6, 0x92, 0x9f, 0x4b,
7314                         0xf3, 0xc4, 0x53, 0x0b, 0x89, 0x5d, 0x28, 0x92,
7315                         0xcf, 0x78, 0xb2, 0xc0, 0x5d, 0xed, 0x7e, 0xfc,
7316                         0xc0, 0x12, 0x23, 0x5f, 0x5a, 0x78, 0x86, 0x43,
7317                         0x6e, 0x27, 0xf7, 0x5a, 0xa7, 0x6a, 0xed, 0x19,
7318                         0x04, 0xf0, 0xb3, 0x12, 0xd1, 0xbd, 0x0e, 0x89,
7319                         0x6e, 0xbc, 0x96, 0xa8, 0xd8, 0x49, 0x39, 0x9f,
7320                         0x7e, 0x67, 0xf0, 0x2e, 0x3e, 0x01, 0xa9, 0xba,
7321                         0xec, 0x8b, 0x62, 0x8e, 0xcb, 0x4a, 0x70, 0x43,
7322                         0xc7, 0xc2, 0xc4, 0xca, 0x82, 0x03, 0x73, 0xe9,
7323                         0x11, 0xdf, 0xcf, 0x54, 0xea, 0xc9, 0xb0, 0x95,
7324                         0x51, 0xc0, 0x13, 0x3d, 0x92, 0x05, 0xfa, 0xf4,
7325                         0xa9, 0x34, 0xc8, 0xce, 0x6c, 0x3d, 0x54, 0xcc,
7326                         0xc4, 0xaf, 0xf1, 0xdc, 0x11, 0x44, 0x26, 0xa2,
7327                         0xaf, 0xf1, 0x85, 0x75, 0x7d, 0x03, 0x61, 0x68,
7328                         0x4e, 0x78, 0xc6, 0x92, 0x7d, 0x86, 0x7d, 0x77,
7329                         0xdc, 0x71, 0x72, 0xdb, 0xc6, 0xae, 0xa1, 0xcb,
7330                         0x70, 0x9a, 0x0b, 0x19, 0xbe, 0x4a, 0x6c, 0x2a,
7331                         0xe2, 0xba, 0x6c, 0x64, 0x9a, 0x13, 0x28, 0xdf,
7332                         0x85, 0x75, 0xe6, 0x43, 0xf6, 0x87, 0x08, 0x68,
7333                         0x6e, 0xba, 0x6e, 0x79, 0x9f, 0x04, 0xbc, 0x23,
7334                         0x50, 0xf6, 0x33, 0x5c, 0x1f, 0x24, 0x25, 0xbe,
7335                         0x33, 0x47, 0x80, 0x45, 0x56, 0xa3, 0xa7, 0xd7,
7336                         0x7a, 0xb1, 0x34, 0x0b, 0x90, 0x3c, 0x9c, 0xad,
7337                         0x44, 0x5f, 0x9e, 0x0e, 0x9d, 0xd4, 0xbd, 0x93,
7338                         0x5e, 0xfa, 0x3c, 0xe0, 0xb0, 0xd9, 0xed, 0xf3,
7339                         0xd6, 0x2e, 0xff, 0x24, 0xd8, 0x71, 0x6c, 0xed,
7340                         0xaf, 0x55, 0xeb, 0x22, 0xac, 0x93, 0x68, 0x32,
7341                         0x05, 0x5b, 0x47, 0xdd, 0xc6, 0x4a, 0xcb, 0xc7,
7342                         0x10, 0xe1, 0x3c, 0x92, 0x1a, 0xf3, 0x23, 0x78,
7343                         0x2b, 0xa1, 0xd2, 0x80, 0xf4, 0x12, 0xb1, 0x20,
7344                         0x8f, 0xff, 0x26, 0x35, 0xdd, 0xfb, 0xc7, 0x4e,
7345                         0x78, 0xf1, 0x2d, 0x50, 0x12, 0x77, 0xa8, 0x60,
7346                         0x7c, 0x0f, 0xf5, 0x16, 0x2f, 0x63, 0x70, 0x2a,
7347                         0xc0, 0x96, 0x80, 0x4e, 0x0a, 0xb4, 0x93, 0x35,
7348                         0x5d, 0x1d, 0x3f, 0x56, 0xf7, 0x2f, 0xbb, 0x90,
7349                         0x11, 0x16, 0x8f, 0xa2, 0xec, 0x47, 0xbe, 0xac,
7350                         0x56, 0x01, 0x26, 0x56, 0xb1, 0x8c, 0xb2, 0x10,
7351                         0xf9, 0x1a, 0xca, 0xf5, 0xd1, 0xb7, 0x39, 0x20,
7352                         0x63, 0xf1, 0x69, 0x20, 0x4f, 0x13, 0x12, 0x1f,
7353                         0x5b, 0x65, 0xfc, 0x98, 0xf7, 0xc4, 0x7a, 0xbe,
7354                         0xf7, 0x26, 0x4d, 0x2b, 0x84, 0x7b, 0x42, 0xad,
7355                         0xd8, 0x7a, 0x0a, 0xb4, 0xd8, 0x74, 0xbf, 0xc1,
7356                         0xf0, 0x6e, 0xb4, 0x29, 0xa3, 0xbb, 0xca, 0x46,
7357                         0x67, 0x70, 0x6a, 0x2d, 0xce, 0x0e, 0xa2, 0x8a,
7358                         0xa9, 0x87, 0xbf, 0x05, 0xc4, 0xc1, 0x04, 0xa3,
7359                         0xab, 0xd4, 0x45, 0x43, 0x8c, 0xb6, 0x02, 0xb0,
7360                         0x41, 0xc8, 0xfc, 0x44, 0x3d, 0x59, 0xaa, 0x2e,
7361                         0x44, 0x21, 0x2a, 0x8d, 0x88, 0x9d, 0x57, 0xf4,
7362                         0xa0, 0x02, 0x77, 0xb8, 0xa6, 0xa0, 0xe6, 0x75,
7363                         0x5c, 0x82, 0x65, 0x3e, 0x03, 0x5c, 0x29, 0x8f,
7364                         0x38, 0x55, 0xab, 0x33, 0x26, 0xef, 0x9f, 0x43,
7365                         0x52, 0xfd, 0x68, 0xaf, 0x36, 0xb4, 0xbb, 0x9a,
7366                         0x58, 0x09, 0x09, 0x1b, 0xc3, 0x65, 0x46, 0x46,
7367                         0x1d, 0xa7, 0x94, 0x18, 0x23, 0x50, 0x2c, 0xca,
7368                         0x2c, 0x55, 0x19, 0x97, 0x01, 0x9d, 0x93, 0x3b,
7369                         0x63, 0x86, 0xf2, 0x03, 0x67, 0x45, 0xd2, 0x72,
7370                         0x28, 0x52, 0x6c, 0xf4, 0xe3, 0x1c, 0xb5, 0x11,
7371                         0x13, 0xf1, 0xeb, 0x21, 0xc7, 0xd9, 0x56, 0x82,
7372                         0x2b, 0x82, 0x39, 0xbd, 0x69, 0x54, 0xed, 0x62,
7373                         0xc3, 0xe2, 0xde, 0x73, 0xd4, 0x6a, 0x12, 0xae,
7374                         0x13, 0x21, 0x7f, 0x4b, 0x5b, 0xfc, 0xbf, 0xe8,
7375                         0x2b, 0xbe, 0x56, 0xba, 0x68, 0x8b, 0x9a, 0xb1,
7376                         0x6e, 0xfa, 0xbf, 0x7e, 0x5a, 0x4b, 0xf1, 0xac,
7377                         0x98, 0x65, 0x85, 0xd1, 0x93, 0x53, 0xd3, 0x7b,
7378                         0x09, 0xdd, 0x4b, 0x10, 0x6d, 0x84, 0xb0, 0x13,
7379                         0x65, 0xbd, 0xcf, 0x52, 0x09, 0xc4, 0x85, 0xe2,
7380                         0x84, 0x74, 0x15, 0x65, 0xb7, 0xf7, 0x51, 0xaf,
7381                         0x55, 0xad, 0xa4, 0xd1, 0x22, 0x54, 0x70, 0x94,
7382                         0xa0, 0x1c, 0x90, 0x41, 0xfd, 0x99, 0xd7, 0x5a,
7383                         0x31, 0xef, 0xaa, 0x25, 0xd0, 0x7f, 0x4f, 0xea,
7384                         0x1d, 0x55, 0x42, 0xe5, 0x49, 0xb0, 0xd0, 0x46,
7385                         0x62, 0x36, 0x43, 0xb2, 0x82, 0x15, 0x75, 0x50,
7386                         0xa4, 0x72, 0xeb, 0x54, 0x27, 0x1f, 0x8a, 0xe4,
7387                         0x7d, 0xe9, 0x66, 0xc5, 0xf1, 0x53, 0xa4, 0xd1,
7388                         0x0c, 0xeb, 0xb8, 0xf8, 0xbc, 0xd4, 0xe2, 0xe7,
7389                         0xe1, 0xf8, 0x4b, 0xcb, 0xa9, 0xa1, 0xaf, 0x15,
7390                         0x83, 0xcb, 0x72, 0xd0, 0x33, 0x79, 0x00, 0x2d,
7391                         0x9f, 0xd7, 0xf1, 0x2e, 0x1e, 0x10, 0xe4, 0x45,
7392                         0xc0, 0x75, 0x3a, 0x39, 0xea, 0x68, 0xf7, 0x5d,
7393                         0x1b, 0x73, 0x8f, 0xe9, 0x8e, 0x0f, 0x72, 0x47,
7394                         0xae, 0x35, 0x0a, 0x31, 0x7a, 0x14, 0x4d, 0x4a,
7395                         0x6f, 0x47, 0xf7, 0x7e, 0x91, 0x6e, 0x74, 0x8b,
7396                         0x26, 0x47, 0xf9, 0xc3, 0xf9, 0xde, 0x70, 0xf5,
7397                         0x61, 0xab, 0xa9, 0x27, 0x9f, 0x82, 0xe4, 0x9c,
7398                         0x89, 0x91, 0x3f, 0x2e, 0x6a, 0xfd, 0xb5, 0x49,
7399                         0xe9, 0xfd, 0x59, 0x14, 0x36, 0x49, 0x40, 0x6d,
7400                         0x32, 0xd8, 0x85, 0x42, 0xf3, 0xa5, 0xdf, 0x0c,
7401                         0xa8, 0x27, 0xd7, 0x54, 0xe2, 0x63, 0x2f, 0xf2,
7402                         0x7e, 0x8b, 0x8b, 0xe7, 0xf1, 0x9a, 0x95, 0x35,
7403                         0x43, 0xdc, 0x3a, 0xe4, 0xb6, 0xf4, 0xd0, 0xdf,
7404                         0x9c, 0xcb, 0x94, 0xf3, 0x21, 0xa0, 0x77, 0x50,
7405                         0xe2, 0xc6, 0xc4, 0xc6, 0x5f, 0x09, 0x64, 0x5b,
7406                         0x92, 0x90, 0xd8, 0xe1, 0xd1, 0xed, 0x4b, 0x42,
7407                         0xd7, 0x37, 0xaf, 0x65, 0x3d, 0x11, 0x39, 0xb6,
7408                         0x24, 0x8a, 0x60, 0xae, 0xd6, 0x1e, 0xbf, 0x0e,
7409                         0x0d, 0xd7, 0xdc, 0x96, 0x0e, 0x65, 0x75, 0x4e,
7410                         0x29, 0x06, 0x9d, 0xa4, 0x51, 0x3a, 0x10, 0x63,
7411                         0x8f, 0x17, 0x07, 0xd5, 0x8e, 0x3c, 0xf4, 0x28,
7412                         0x00, 0x5a, 0x5b, 0x05, 0x19, 0xd8, 0xc0, 0x6c,
7413                         0xe5, 0x15, 0xe4, 0x9c, 0x9d, 0x71, 0x9d, 0x5e,
7414                         0x94, 0x29, 0x1a, 0xa7, 0x80, 0xfa, 0x0e, 0x33,
7415                         0x03, 0xdd, 0xb7, 0x3e, 0x9a, 0xa9, 0x26, 0x18,
7416                         0x37, 0xa9, 0x64, 0x08, 0x4d, 0x94, 0x5a, 0x88,
7417                         0xca, 0x35, 0xce, 0x81, 0x02, 0xe3, 0x1f, 0x1b,
7418                         0x89, 0x1a, 0x77, 0x85, 0xe3, 0x41, 0x6d, 0x32,
7419                         0x42, 0x19, 0x23, 0x7d, 0xc8, 0x73, 0xee, 0x25,
7420                         0x85, 0x0d, 0xf8, 0x31, 0x25, 0x79, 0x1b, 0x6f,
7421                         0x79, 0x25, 0xd2, 0xd8, 0xd4, 0x23, 0xfd, 0xf7,
7422                         0x82, 0x36, 0x6a, 0x0c, 0x46, 0x22, 0x15, 0xe9,
7423                         0xff, 0x72, 0x41, 0x91, 0x91, 0x7d, 0x3a, 0xb7,
7424                         0xdd, 0x65, 0x99, 0x70, 0xf6, 0x8d, 0x84, 0xf8,
7425                         0x67, 0x15, 0x20, 0x11, 0xd6, 0xb2, 0x55, 0x7b,
7426                         0xdb, 0x87, 0xee, 0xef, 0x55, 0x89, 0x2a, 0x59,
7427                         0x2b, 0x07, 0x8f, 0x43, 0x8a, 0x59, 0x3c, 0x01,
7428                         0x8b, 0x65, 0x54, 0xa1, 0x66, 0xd5, 0x38, 0xbd,
7429                         0xc6, 0x30, 0xa9, 0xcc, 0x49, 0xb6, 0xa8, 0x1b,
7430                         0xb8, 0xc0, 0x0e, 0xe3, 0x45, 0x28, 0xe2, 0xff,
7431                         0x41, 0x9f, 0x7e, 0x7c, 0xd1, 0xae, 0x9e, 0x25,
7432                         0x3f, 0x4c, 0x7c, 0x7c, 0xf4, 0xa8, 0x26, 0x4d,
7433                         0x5c, 0xfd, 0x4b, 0x27, 0x18, 0xf9, 0x61, 0x76,
7434                         0x48, 0xba, 0x0c, 0x6b, 0xa9, 0x4d, 0xfc, 0xf5,
7435                         0x3b, 0x35, 0x7e, 0x2f, 0x4a, 0xa9, 0xc2, 0x9a,
7436                         0xae, 0xab, 0x86, 0x09, 0x89, 0xc9, 0xc2, 0x40,
7437                         0x39, 0x2c, 0x81, 0xb3, 0xb8, 0x17, 0x67, 0xc2,
7438                         0x0d, 0x32, 0x4a, 0x3a, 0x67, 0x81, 0xd7, 0x1a,
7439                         0x34, 0x52, 0xc5, 0xdb, 0x0a, 0xf5, 0x63, 0x39,
7440                         0xea, 0x1f, 0xe1, 0x7c, 0xa1, 0x9e, 0xc1, 0x35,
7441                         0xe3, 0xb1, 0x18, 0x45, 0x67, 0xf9, 0x22, 0x38,
7442                         0x95, 0xd9, 0x34, 0x34, 0x86, 0xc6, 0x41, 0x94,
7443                         0x15, 0xf9, 0x5b, 0x41, 0xa6, 0x87, 0x8b, 0xf8,
7444                         0xd5, 0xe1, 0x1b, 0xe2, 0x5b, 0xf3, 0x86, 0x10,
7445                         0xff, 0xe6, 0xae, 0x69, 0x76, 0xbc, 0x0d, 0xb4,
7446                         0x09, 0x90, 0x0c, 0xa2, 0x65, 0x0c, 0xad, 0x74,
7447                         0xf5, 0xd7, 0xff, 0xda, 0xc1, 0xce, 0x85, 0xbe,
7448                         0x00, 0xa7, 0xff, 0x4d, 0x2f, 0x65, 0xd3, 0x8c,
7449                         0x86, 0x2d, 0x05, 0xe8, 0xed, 0x3e, 0x6b, 0x8b,
7450                         0x0f, 0x3d, 0x83, 0x8c, 0xf1, 0x1d, 0x5b, 0x96,
7451                         0x2e, 0xb1, 0x9c, 0xc2, 0x98, 0xe1, 0x70, 0xb9,
7452                         0xba, 0x5c, 0x8a, 0x43, 0xd6, 0x34, 0xa7, 0x2d,
7453                         0xc9, 0x92, 0xae, 0xf2, 0xa5, 0x7b, 0x05, 0x49,
7454                         0xa7, 0x33, 0x34, 0x86, 0xca, 0xe4, 0x96, 0x23,
7455                         0x76, 0x5b, 0xf2, 0xc6, 0xf1, 0x51, 0x28, 0x42,
7456                         0x7b, 0xcc, 0x76, 0x8f, 0xfa, 0xa2, 0xad, 0x31,
7457                         0xd4, 0xd6, 0x7a, 0x6d, 0x25, 0x25, 0x54, 0xe4,
7458                         0x3f, 0x50, 0x59, 0xe1, 0x5c, 0x05, 0xb7, 0x27,
7459                         0x48, 0xbf, 0x07, 0xec, 0x1b, 0x13, 0xbe, 0x2b,
7460                         0xa1, 0x57, 0x2b, 0xd5, 0xab, 0xd7, 0xd0, 0x4c,
7461                         0x1e, 0xcb, 0x71, 0x9b, 0xc5, 0x90, 0x85, 0xd3,
7462                         0xde, 0x59, 0xec, 0x71, 0xeb, 0x89, 0xbb, 0xd0,
7463                         0x09, 0x50, 0xe1, 0x16, 0x3f, 0xfd, 0x1c, 0x34,
7464                         0xc3, 0x1c, 0xa1, 0x10, 0x77, 0x53, 0x98, 0xef,
7465                         0xf2, 0xfd, 0xa5, 0x01, 0x59, 0xc2, 0x9b, 0x26,
7466                         0xc7, 0x42, 0xd9, 0x49, 0xda, 0x58, 0x2b, 0x6e,
7467                         0x9f, 0x53, 0x19, 0x76, 0x7e, 0xd9, 0xc9, 0x0e,
7468                         0x68, 0xc8, 0x7f, 0x51, 0x22, 0x42, 0xef, 0x49,
7469                         0xa4, 0x55, 0xb6, 0x36, 0xac, 0x09, 0xc7, 0x31,
7470                         0x88, 0x15, 0x4b, 0x2e, 0x8f, 0x3a, 0x08, 0xf7,
7471                         0xd8, 0xf7, 0xa8, 0xc5, 0xa9, 0x33, 0xa6, 0x45,
7472                         0xe4, 0xc4, 0x94, 0x76, 0xf3, 0x0d, 0x8f, 0x7e,
7473                         0xc8, 0xf6, 0xbc, 0x23, 0x0a, 0xb6, 0x4c, 0xd3,
7474                         0x6a, 0xcd, 0x36, 0xc2, 0x90, 0x5c, 0x5c, 0x3c,
7475                         0x65, 0x7b, 0xc2, 0xd6, 0xcc, 0xe6, 0x0d, 0x87,
7476                         0x73, 0x2e, 0x71, 0x79, 0x16, 0x06, 0x63, 0x28,
7477                         0x09, 0x15, 0xd8, 0x89, 0x38, 0x38, 0x3d, 0xb5,
7478                         0x42, 0x1c, 0x08, 0x24, 0xf7, 0x2a, 0xd2, 0x9d,
7479                         0xc8, 0xca, 0xef, 0xf9, 0x27, 0xd8, 0x07, 0x86,
7480                         0xf7, 0x43, 0x0b, 0x55, 0x15, 0x3f, 0x9f, 0x83,
7481                         0xef, 0xdc, 0x49, 0x9d, 0x2a, 0xc1, 0x54, 0x62,
7482                         0xbd, 0x9b, 0x66, 0x55, 0x9f, 0xb7, 0x12, 0xf3,
7483                         0x1b, 0x4d, 0x9d, 0x2a, 0x5c, 0xed, 0x87, 0x75,
7484                         0x87, 0x26, 0xec, 0x61, 0x2c, 0xb4, 0x0f, 0x89,
7485                         0xb0, 0xfb, 0x2e, 0x68, 0x5d, 0x15, 0xc7, 0x8d,
7486                         0x2e, 0xc0, 0xd9, 0xec, 0xaf, 0x4f, 0xd2, 0x25,
7487                         0x29, 0xe8, 0xd2, 0x26, 0x2b, 0x67, 0xe9, 0xfc,
7488                         0x2b, 0xa8, 0x67, 0x96, 0x12, 0x1f, 0x5b, 0x96,
7489                         0xc6, 0x14, 0x53, 0xaf, 0x44, 0xea, 0xd6, 0xe2,
7490                         0x94, 0x98, 0xe4, 0x12, 0x93, 0x4c, 0x92, 0xe0,
7491                         0x18, 0xa5, 0x8d, 0x2d, 0xe4, 0x71, 0x3c, 0x47,
7492                         0x4c, 0xf7, 0xe6, 0x47, 0x9e, 0xc0, 0x68, 0xdf,
7493                         0xd4, 0xf5, 0x5a, 0x74, 0xb1, 0x2b, 0x29, 0x03,
7494                         0x19, 0x07, 0xaf, 0x90, 0x62, 0x5c, 0x68, 0x98,
7495                         0x48, 0x16, 0x11, 0x02, 0x9d, 0xee, 0xb4, 0x9b,
7496                         0xe5, 0x42, 0x7f, 0x08, 0xfd, 0x16, 0x32, 0x0b,
7497                         0xd0, 0xb3, 0xfa, 0x2b, 0xb7, 0x99, 0xf9, 0x29,
7498                         0xcd, 0x20, 0x45, 0x9f, 0xb3, 0x1a, 0x5d, 0xa2,
7499                         0xaf, 0x4d, 0xe0, 0xbd, 0x42, 0x0d, 0xbc, 0x74,
7500                         0x99, 0x9c, 0x8e, 0x53, 0x1a, 0xb4, 0x3e, 0xbd,
7501                         0xa2, 0x9a, 0x2d, 0xf7, 0xf8, 0x39, 0x0f, 0x67,
7502                         0x63, 0xfc, 0x6b, 0xc0, 0xaf, 0xb3, 0x4b, 0x4f,
7503                         0x55, 0xc4, 0xcf, 0xa7, 0xc8, 0x04, 0x11, 0x3e,
7504                         0x14, 0x32, 0xbb, 0x1b, 0x38, 0x77, 0xd6, 0x7f,
7505                         0x54, 0x4c, 0xdf, 0x75, 0xf3, 0x07, 0x2d, 0x33,
7506                         0x9b, 0xa8, 0x20, 0xe1, 0x7b, 0x12, 0xb5, 0xf3,
7507                         0xef, 0x2f, 0xce, 0x72, 0xe5, 0x24, 0x60, 0xc1,
7508                         0x30, 0xe2, 0xab, 0xa1, 0x8e, 0x11, 0x09, 0xa8,
7509                         0x21, 0x33, 0x44, 0xfe, 0x7f, 0x35, 0x32, 0x93,
7510                         0x39, 0xa7, 0xad, 0x8b, 0x79, 0x06, 0xb2, 0xcb,
7511                         0x4e, 0xa9, 0x5f, 0xc7, 0xba, 0x74, 0x29, 0xec,
7512                         0x93, 0xa0, 0x4e, 0x54, 0x93, 0xc0, 0xbc, 0x55,
7513                         0x64, 0xf0, 0x48, 0xe5, 0x57, 0x99, 0xee, 0x75,
7514                         0xd6, 0x79, 0x0f, 0x66, 0xb7, 0xc6, 0x57, 0x76,
7515                         0xf7, 0xb7, 0xf3, 0x9c, 0xc5, 0x60, 0xe8, 0x7f,
7516                         0x83, 0x76, 0xd6, 0x0e, 0xaa, 0xe6, 0x90, 0x39,
7517                         0x1d, 0xa6, 0x32, 0x6a, 0x34, 0xe3, 0x55, 0xf8,
7518                         0x58, 0xa0, 0x58, 0x7d, 0x33, 0xe0, 0x22, 0x39,
7519                         0x44, 0x64, 0x87, 0x86, 0x5a, 0x2f, 0xa7, 0x7e,
7520                         0x0f, 0x38, 0xea, 0xb0, 0x30, 0xcc, 0x61, 0xa5,
7521                         0x6a, 0x32, 0xae, 0x1e, 0xf7, 0xe9, 0xd0, 0xa9,
7522                         0x0c, 0x32, 0x4b, 0xb5, 0x49, 0x28, 0xab, 0x85,
7523                         0x2f, 0x8e, 0x01, 0x36, 0x38, 0x52, 0xd0, 0xba,
7524                         0xd6, 0x02, 0x78, 0xf8, 0x0e, 0x3e, 0x9c, 0x8b,
7525                         0x6b, 0x45, 0x99, 0x3f, 0x5c, 0xfe, 0x58, 0xf1,
7526                         0x5c, 0x94, 0x04, 0xe1, 0xf5, 0x18, 0x6d, 0x51,
7527                         0xb2, 0x5d, 0x18, 0x20, 0xb6, 0xc2, 0x9a, 0x42,
7528                         0x1d, 0xb3, 0xab, 0x3c, 0xb6, 0x3a, 0x13, 0x03,
7529                         0xb2, 0x46, 0x82, 0x4f, 0xfc, 0x64, 0xbc, 0x4f,
7530                         0xca, 0xfa, 0x9c, 0xc0, 0xd5, 0xa7, 0xbd, 0x11,
7531                         0xb7, 0xe4, 0x5a, 0xf6, 0x6f, 0x4d, 0x4d, 0x54,
7532                         0xea, 0xa4, 0x98, 0x66, 0xd4, 0x22, 0x3b, 0xd3,
7533                         0x8f, 0x34, 0x47, 0xd9, 0x7c, 0xf4, 0x72, 0x3b,
7534                         0x4d, 0x02, 0x77, 0xf6, 0xd6, 0xdd, 0x08, 0x0a,
7535                         0x81, 0xe1, 0x86, 0x89, 0x3e, 0x56, 0x10, 0x3c,
7536                         0xba, 0xd7, 0x81, 0x8c, 0x08, 0xbc, 0x8b, 0xe2,
7537                         0x53, 0xec, 0xa7, 0x89, 0xee, 0xc8, 0x56, 0xb5,
7538                         0x36, 0x2c, 0xb2, 0x03, 0xba, 0x99, 0xdd, 0x7c,
7539                         0x48, 0xa0, 0xb0, 0xbc, 0x91, 0x33, 0xe9, 0xa8,
7540                         0xcb, 0xcd, 0xcf, 0x59, 0x5f, 0x1f, 0x15, 0xe2,
7541                         0x56, 0xf5, 0x4e, 0x01, 0x35, 0x27, 0x45, 0x77,
7542                         0x47, 0xc8, 0xbc, 0xcb, 0x7e, 0x39, 0xc1, 0x97,
7543                         0x28, 0xd3, 0x84, 0xfc, 0x2c, 0x3e, 0xc8, 0xad,
7544                         0x9c, 0xf8, 0x8a, 0x61, 0x9c, 0x28, 0xaa, 0xc5,
7545                         0x99, 0x20, 0x43, 0x85, 0x9d, 0xa5, 0xe2, 0x8b,
7546                         0xb8, 0xae, 0xeb, 0xd0, 0x32, 0x0d, 0x52, 0x78,
7547                         0x09, 0x56, 0x3f, 0xc7, 0xd8, 0x7e, 0x26, 0xfc,
7548                         0x37, 0xfb, 0x6f, 0x04, 0xfc, 0xfa, 0x92, 0x10,
7549                         0xac, 0xf8, 0x3e, 0x21, 0xdc, 0x8c, 0x21, 0x16,
7550                         0x7d, 0x67, 0x6e, 0xf6, 0xcd, 0xda, 0xb6, 0x98,
7551                         0x23, 0xab, 0x23, 0x3c, 0xb2, 0x10, 0xa0, 0x53,
7552                         0x5a, 0x56, 0x9f, 0xc5, 0xd0, 0xff, 0xbb, 0xe4,
7553                         0x98, 0x3c, 0x69, 0x1e, 0xdb, 0x38, 0x8f, 0x7e,
7554                         0x0f, 0xd2, 0x98, 0x88, 0x81, 0x8b, 0x45, 0x67,
7555                         0xea, 0x33, 0xf1, 0xeb, 0xe9, 0x97, 0x55, 0x2e,
7556                         0xd9, 0xaa, 0xeb, 0x5a, 0xec, 0xda, 0xe1, 0x68,
7557                         0xa8, 0x9d, 0x3c, 0x84, 0x7c, 0x05, 0x3d, 0x62,
7558                         0x87, 0x8f, 0x03, 0x21, 0x28, 0x95, 0x0c, 0x89,
7559                         0x25, 0x22, 0x4a, 0xb0, 0x93, 0xa9, 0x50, 0xa2,
7560                         0x2f, 0x57, 0x6e, 0x18, 0x42, 0x19, 0x54, 0x0c,
7561                         0x55, 0x67, 0xc6, 0x11, 0x49, 0xf4, 0x5c, 0xd2,
7562                         0xe9, 0x3d, 0xdd, 0x8b, 0x48, 0x71, 0x21, 0x00,
7563                         0xc3, 0x9a, 0x6c, 0x85, 0x74, 0x28, 0x83, 0x4a,
7564                         0x1b, 0x31, 0x05, 0xe1, 0x06, 0x92, 0xe7, 0xda,
7565                         0x85, 0x73, 0x78, 0x45, 0x20, 0x7f, 0xae, 0x13,
7566                         0x7c, 0x33, 0x06, 0x22, 0xf4, 0x83, 0xf9, 0x35,
7567                         0x3f, 0x6c, 0x71, 0xa8, 0x4e, 0x48, 0xbe, 0x9b,
7568                         0xce, 0x8a, 0xba, 0xda, 0xbe, 0x28, 0x08, 0xf7,
7569                         0xe2, 0x14, 0x8c, 0x71, 0xea, 0x72, 0xf9, 0x33,
7570                         0xf2, 0x88, 0x3f, 0xd7, 0xbb, 0x69, 0x6c, 0x29,
7571                         0x19, 0xdc, 0x84, 0xce, 0x1f, 0x12, 0x4f, 0xc8,
7572                         0xaf, 0xa5, 0x04, 0xba, 0x5a, 0xab, 0xb0, 0xd9,
7573                         0x14, 0x1f, 0x6c, 0x68, 0x98, 0x39, 0x89, 0x7a,
7574                         0xd9, 0xd8, 0x2f, 0xdf, 0xa8, 0x47, 0x4a, 0x25,
7575                         0xe2, 0xfb, 0x33, 0xf4, 0x59, 0x78, 0xe1, 0x68,
7576                         0x85, 0xcf, 0xfe, 0x59, 0x20, 0xd4, 0x05, 0x1d,
7577                         0x80, 0x99, 0xae, 0xbc, 0xca, 0xae, 0x0f, 0x2f,
7578                         0x65, 0x43, 0x34, 0x8e, 0x7e, 0xac, 0xd3, 0x93,
7579                         0x2f, 0xac, 0x6d, 0x14, 0x3d, 0x02, 0x07, 0x70,
7580                         0x9d, 0xa4, 0xf3, 0x1b, 0x5c, 0x36, 0xfc, 0x01,
7581                         0x73, 0x34, 0x85, 0x0c, 0x6c, 0xd6, 0xf1, 0xbd,
7582                         0x3f, 0xdf, 0xee, 0xf5, 0xd9, 0xba, 0x56, 0xef,
7583                         0xf4, 0x9b, 0x6b, 0xee, 0x9f, 0x5a, 0x78, 0x6d,
7584                         0x32, 0x19, 0xf4, 0xf7, 0xf8, 0x4c, 0x69, 0x0b,
7585                         0x4b, 0xbc, 0xbb, 0xb7, 0xf2, 0x85, 0xaf, 0x70,
7586                         0x75, 0x24, 0x6c, 0x54, 0xa7, 0x0e, 0x4d, 0x1d,
7587                         0x01, 0xbf, 0x08, 0xac, 0xcf, 0x7f, 0x2c, 0xe3,
7588                         0x14, 0x89, 0x5e, 0x70, 0x5a, 0x99, 0x92, 0xcd,
7589                         0x01, 0x84, 0xc8, 0xd2, 0xab, 0xe5, 0x4f, 0x58,
7590                         0xe7, 0x0f, 0x2f, 0x0e, 0xff, 0x68, 0xea, 0xfd,
7591                         0x15, 0xb3, 0x17, 0xe6, 0xb0, 0xe7, 0x85, 0xd8,
7592                         0x23, 0x2e, 0x05, 0xc7, 0xc9, 0xc4, 0x46, 0x1f,
7593                         0xe1, 0x9e, 0x49, 0x20, 0x23, 0x24, 0x4d, 0x7e,
7594                         0x29, 0x65, 0xff, 0xf4, 0xb6, 0xfd, 0x1a, 0x85,
7595                         0xc4, 0x16, 0xec, 0xfc, 0xea, 0x7b, 0xd6, 0x2c,
7596                         0x43, 0xf8, 0xb7, 0xbf, 0x79, 0xc0, 0x85, 0xcd,
7597                         0xef, 0xe1, 0x98, 0xd3, 0xa5, 0xf7, 0x90, 0x8c,
7598                         0xe9, 0x7f, 0x80, 0x6b, 0xd2, 0xac, 0x4c, 0x30,
7599                         0xa7, 0xc6, 0x61, 0x6c, 0xd2, 0xf9, 0x2c, 0xff,
7600                         0x30, 0xbc, 0x22, 0x81, 0x7d, 0x93, 0x12, 0xe4,
7601                         0x0a, 0xcd, 0xaf, 0xdd, 0xe8, 0xab, 0x0a, 0x1e,
7602                         0x13, 0xa4, 0x27, 0xc3, 0x5f, 0xf7, 0x4b, 0xbb,
7603                         0x37, 0x09, 0x4b, 0x91, 0x6f, 0x92, 0x4f, 0xaf,
7604                         0x52, 0xee, 0xdf, 0xef, 0x09, 0x6f, 0xf7, 0x5c,
7605                         0x6e, 0x12, 0x17, 0x72, 0x63, 0x57, 0xc7, 0xba,
7606                         0x3b, 0x6b, 0x38, 0x32, 0x73, 0x1b, 0x9c, 0x80,
7607                         0xc1, 0x7a, 0xc6, 0xcf, 0xcd, 0x35, 0xc0, 0x6b,
7608                         0x31, 0x1a, 0x6b, 0xe9, 0xd8, 0x2c, 0x29, 0x3f,
7609                         0x96, 0xfb, 0xb6, 0xcd, 0x13, 0x91, 0x3b, 0xc2,
7610                         0xd2, 0xa3, 0x31, 0x8d, 0xa4, 0xcd, 0x57, 0xcd,
7611                         0x13, 0x3d, 0x64, 0xfd, 0x06, 0xce, 0xe6, 0xdc,
7612                         0x0c, 0x24, 0x43, 0x31, 0x40, 0x57, 0xf1, 0x72,
7613                         0x17, 0xe3, 0x3a, 0x63, 0x6d, 0x35, 0xcf, 0x5d,
7614                         0x97, 0x40, 0x59, 0xdd, 0xf7, 0x3c, 0x02, 0xf7,
7615                         0x1c, 0x7e, 0x05, 0xbb, 0xa9, 0x0d, 0x01, 0xb1,
7616                         0x8e, 0xc0, 0x30, 0xa9, 0x53, 0x24, 0xc9, 0x89,
7617                         0x84, 0x6d, 0xaa, 0xd0, 0xcd, 0x91, 0xc2, 0x4d,
7618                         0x91, 0xb0, 0x89, 0xe2, 0xbf, 0x83, 0x44, 0xaa,
7619                         0x28, 0x72, 0x23, 0xa0, 0xc2, 0xad, 0xad, 0x1c,
7620                         0xfc, 0x3f, 0x09, 0x7a, 0x0b, 0xdc, 0xc5, 0x1b,
7621                         0x87, 0x13, 0xc6, 0x5b, 0x59, 0x8d, 0xf2, 0xc8,
7622                         0xaf, 0xdf, 0x11, 0x95,
7623                 },
7624                 .rlen = 4100,
7625         },
7626 };
7627
7628 /*
7629  * Compression stuff.
7630  */
7631 #define COMP_BUF_SIZE           512
7632
7633 struct comp_testvec {
7634         int inlen, outlen;
7635         char input[COMP_BUF_SIZE];
7636         char output[COMP_BUF_SIZE];
7637 };
7638
7639 /*
7640  * Deflate test vectors (null-terminated strings).
7641  * Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
7642  */
7643 #define DEFLATE_COMP_TEST_VECTORS 2
7644 #define DEFLATE_DECOMP_TEST_VECTORS 2
7645
7646 static struct comp_testvec deflate_comp_tv_template[] = {
7647         {
7648                 .inlen  = 70,
7649                 .outlen = 38,
7650                 .input  = "Join us now and share the software "
7651                           "Join us now and share the software ",
7652                 .output = { 0xf3, 0xca, 0xcf, 0xcc, 0x53, 0x28, 0x2d, 0x56,
7653                             0xc8, 0xcb, 0x2f, 0x57, 0x48, 0xcc, 0x4b, 0x51,
7654                             0x28, 0xce, 0x48, 0x2c, 0x4a, 0x55, 0x28, 0xc9,
7655                             0x48, 0x55, 0x28, 0xce, 0x4f, 0x2b, 0x29, 0x07,
7656                             0x71, 0xbc, 0x08, 0x2b, 0x01, 0x00 },
7657         }, {
7658                 .inlen  = 191,
7659                 .outlen = 122,
7660                 .input  = "This document describes a compression method based on the DEFLATE"
7661                           "compression algorithm.  This document defines the application of "
7662                           "the DEFLATE algorithm to the IP Payload Compression Protocol.",
7663                 .output = { 0x5d, 0x8d, 0x31, 0x0e, 0xc2, 0x30, 0x10, 0x04,
7664                             0xbf, 0xb2, 0x2f, 0xc8, 0x1f, 0x10, 0x04, 0x09,
7665                             0x89, 0xc2, 0x85, 0x3f, 0x70, 0xb1, 0x2f, 0xf8,
7666                             0x24, 0xdb, 0x67, 0xd9, 0x47, 0xc1, 0xef, 0x49,
7667                             0x68, 0x12, 0x51, 0xae, 0x76, 0x67, 0xd6, 0x27,
7668                             0x19, 0x88, 0x1a, 0xde, 0x85, 0xab, 0x21, 0xf2,
7669                             0x08, 0x5d, 0x16, 0x1e, 0x20, 0x04, 0x2d, 0xad,
7670                             0xf3, 0x18, 0xa2, 0x15, 0x85, 0x2d, 0x69, 0xc4,
7671                             0x42, 0x83, 0x23, 0xb6, 0x6c, 0x89, 0x71, 0x9b,
7672                             0xef, 0xcf, 0x8b, 0x9f, 0xcf, 0x33, 0xca, 0x2f,
7673                             0xed, 0x62, 0xa9, 0x4c, 0x80, 0xff, 0x13, 0xaf,
7674                             0x52, 0x37, 0xed, 0x0e, 0x52, 0x6b, 0x59, 0x02,
7675                             0xd9, 0x4e, 0xe8, 0x7a, 0x76, 0x1d, 0x02, 0x98,
7676                             0xfe, 0x8a, 0x87, 0x83, 0xa3, 0x4f, 0x56, 0x8a,
7677                             0xb8, 0x9e, 0x8e, 0x5c, 0x57, 0xd3, 0xa0, 0x79,
7678                             0xfa, 0x02 },
7679         },
7680 };
7681
7682 static struct comp_testvec deflate_decomp_tv_template[] = {
7683         {
7684                 .inlen  = 122,
7685                 .outlen = 191,
7686                 .input  = { 0x5d, 0x8d, 0x31, 0x0e, 0xc2, 0x30, 0x10, 0x04,
7687                             0xbf, 0xb2, 0x2f, 0xc8, 0x1f, 0x10, 0x04, 0x09,
7688                             0x89, 0xc2, 0x85, 0x3f, 0x70, 0xb1, 0x2f, 0xf8,
7689                             0x24, 0xdb, 0x67, 0xd9, 0x47, 0xc1, 0xef, 0x49,
7690                             0x68, 0x12, 0x51, 0xae, 0x76, 0x67, 0xd6, 0x27,
7691                             0x19, 0x88, 0x1a, 0xde, 0x85, 0xab, 0x21, 0xf2,
7692                             0x08, 0x5d, 0x16, 0x1e, 0x20, 0x04, 0x2d, 0xad,
7693                             0xf3, 0x18, 0xa2, 0x15, 0x85, 0x2d, 0x69, 0xc4,
7694                             0x42, 0x83, 0x23, 0xb6, 0x6c, 0x89, 0x71, 0x9b,
7695                             0xef, 0xcf, 0x8b, 0x9f, 0xcf, 0x33, 0xca, 0x2f,
7696                             0xed, 0x62, 0xa9, 0x4c, 0x80, 0xff, 0x13, 0xaf,
7697                             0x52, 0x37, 0xed, 0x0e, 0x52, 0x6b, 0x59, 0x02,
7698                             0xd9, 0x4e, 0xe8, 0x7a, 0x76, 0x1d, 0x02, 0x98,
7699                             0xfe, 0x8a, 0x87, 0x83, 0xa3, 0x4f, 0x56, 0x8a,
7700                             0xb8, 0x9e, 0x8e, 0x5c, 0x57, 0xd3, 0xa0, 0x79,
7701                             0xfa, 0x02 },
7702                 .output = "This document describes a compression method based on the DEFLATE"
7703                           "compression algorithm.  This document defines the application of "
7704                           "the DEFLATE algorithm to the IP Payload Compression Protocol.",
7705         }, {
7706                 .inlen  = 38,
7707                 .outlen = 70,
7708                 .input  = { 0xf3, 0xca, 0xcf, 0xcc, 0x53, 0x28, 0x2d, 0x56,
7709                             0xc8, 0xcb, 0x2f, 0x57, 0x48, 0xcc, 0x4b, 0x51,
7710                             0x28, 0xce, 0x48, 0x2c, 0x4a, 0x55, 0x28, 0xc9,
7711                             0x48, 0x55, 0x28, 0xce, 0x4f, 0x2b, 0x29, 0x07,
7712                             0x71, 0xbc, 0x08, 0x2b, 0x01, 0x00 },
7713                 .output = "Join us now and share the software "
7714                           "Join us now and share the software ",
7715         },
7716 };
7717
7718 /*
7719  * LZO test vectors (null-terminated strings).
7720  */
7721 #define LZO_COMP_TEST_VECTORS 2
7722 #define LZO_DECOMP_TEST_VECTORS 2
7723
7724 static struct comp_testvec lzo_comp_tv_template[] = {
7725         {
7726                 .inlen  = 70,
7727                 .outlen = 46,
7728                 .input  = "Join us now and share the software "
7729                           "Join us now and share the software ",
7730                 .output = {  0x00, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x20, 0x75,
7731                              0x73, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x61, 0x6e,
7732                              0x64, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20,
7733                              0x74, 0x68, 0x65, 0x20, 0x73, 0x6f, 0x66, 0x74,
7734                              0x77, 0x70, 0x01, 0x01, 0x4a, 0x6f, 0x69, 0x6e,
7735                              0x3d, 0x88, 0x00, 0x11, 0x00, 0x00 },
7736         }, {
7737                 .inlen  = 159,
7738                 .outlen = 133,
7739                 .input  = "This document describes a compression method based on the LZO "
7740                           "compression algorithm.  This document defines the application of "
7741                           "the LZO algorithm used in UBIFS.",
7742                 .output = { 0x00, 0x2b, 0x54, 0x68, 0x69, 0x73, 0x20, 0x64,
7743                             0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20,
7744                             0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
7745                             0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x70,
7746                             0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20,
7747                             0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x62,
7748                             0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20,
7749                             0x74, 0x68, 0x65, 0x20, 0x4c, 0x5a, 0x4f, 0x2b,
7750                             0x8c, 0x00, 0x0d, 0x61, 0x6c, 0x67, 0x6f, 0x72,
7751                             0x69, 0x74, 0x68, 0x6d, 0x2e, 0x20, 0x20, 0x54,
7752                             0x68, 0x69, 0x73, 0x2a, 0x54, 0x01, 0x02, 0x66,
7753                             0x69, 0x6e, 0x65, 0x73, 0x94, 0x06, 0x05, 0x61,
7754                             0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x76,
7755                             0x0a, 0x6f, 0x66, 0x88, 0x02, 0x60, 0x09, 0x27,
7756                             0xf0, 0x00, 0x0c, 0x20, 0x75, 0x73, 0x65, 0x64,
7757                             0x20, 0x69, 0x6e, 0x20, 0x55, 0x42, 0x49, 0x46,
7758                             0x53, 0x2e, 0x11, 0x00, 0x00 },
7759         },
7760 };
7761
7762 static struct comp_testvec lzo_decomp_tv_template[] = {
7763         {
7764                 .inlen  = 133,
7765                 .outlen = 159,
7766                 .input  = { 0x00, 0x2b, 0x54, 0x68, 0x69, 0x73, 0x20, 0x64,
7767                             0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20,
7768                             0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
7769                             0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x70,
7770                             0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20,
7771                             0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x20, 0x62,
7772                             0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20,
7773                             0x74, 0x68, 0x65, 0x20, 0x4c, 0x5a, 0x4f, 0x2b,
7774                             0x8c, 0x00, 0x0d, 0x61, 0x6c, 0x67, 0x6f, 0x72,
7775                             0x69, 0x74, 0x68, 0x6d, 0x2e, 0x20, 0x20, 0x54,
7776                             0x68, 0x69, 0x73, 0x2a, 0x54, 0x01, 0x02, 0x66,
7777                             0x69, 0x6e, 0x65, 0x73, 0x94, 0x06, 0x05, 0x61,
7778                             0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x76,
7779                             0x0a, 0x6f, 0x66, 0x88, 0x02, 0x60, 0x09, 0x27,
7780                             0xf0, 0x00, 0x0c, 0x20, 0x75, 0x73, 0x65, 0x64,
7781                             0x20, 0x69, 0x6e, 0x20, 0x55, 0x42, 0x49, 0x46,
7782                             0x53, 0x2e, 0x11, 0x00, 0x00 },
7783                 .output = "This document describes a compression method based on the LZO "
7784                           "compression algorithm.  This document defines the application of "
7785                           "the LZO algorithm used in UBIFS.",
7786         }, {
7787                 .inlen  = 46,
7788                 .outlen = 70,
7789                 .input  = { 0x00, 0x0d, 0x4a, 0x6f, 0x69, 0x6e, 0x20, 0x75,
7790                             0x73, 0x20, 0x6e, 0x6f, 0x77, 0x20, 0x61, 0x6e,
7791                             0x64, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20,
7792                             0x74, 0x68, 0x65, 0x20, 0x73, 0x6f, 0x66, 0x74,
7793                             0x77, 0x70, 0x01, 0x01, 0x4a, 0x6f, 0x69, 0x6e,
7794                             0x3d, 0x88, 0x00, 0x11, 0x00, 0x00 },
7795                 .output = "Join us now and share the software "
7796                           "Join us now and share the software ",
7797         },
7798 };
7799
7800 /*
7801  * Michael MIC test vectors from IEEE 802.11i
7802  */
7803 #define MICHAEL_MIC_TEST_VECTORS 6
7804
7805 static struct hash_testvec michael_mic_tv_template[] = {
7806         {
7807                 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
7808                 .ksize = 8,
7809                 .plaintext = { },
7810                 .psize = 0,
7811                 .digest = { 0x82, 0x92, 0x5c, 0x1c, 0xa1, 0xd1, 0x30, 0xb8 }
7812         },
7813         {
7814                 .key = { 0x82, 0x92, 0x5c, 0x1c, 0xa1, 0xd1, 0x30, 0xb8 },
7815                 .ksize = 8,
7816                 .plaintext = { 'M' },
7817                 .psize = 1,
7818                 .digest = { 0x43, 0x47, 0x21, 0xca, 0x40, 0x63, 0x9b, 0x3f }
7819         },
7820         {
7821                 .key = { 0x43, 0x47, 0x21, 0xca, 0x40, 0x63, 0x9b, 0x3f },
7822                 .ksize = 8,
7823                 .plaintext = { 'M', 'i' },
7824                 .psize = 2,
7825                 .digest = { 0xe8, 0xf9, 0xbe, 0xca, 0xe9, 0x7e, 0x5d, 0x29 }
7826         },
7827         {
7828                 .key = { 0xe8, 0xf9, 0xbe, 0xca, 0xe9, 0x7e, 0x5d, 0x29 },
7829                 .ksize = 8,
7830                 .plaintext = { 'M', 'i', 'c' },
7831                 .psize = 3,
7832                 .digest = { 0x90, 0x03, 0x8f, 0xc6, 0xcf, 0x13, 0xc1, 0xdb }
7833         },
7834         {
7835                 .key = { 0x90, 0x03, 0x8f, 0xc6, 0xcf, 0x13, 0xc1, 0xdb },
7836                 .ksize = 8,
7837                 .plaintext = { 'M', 'i', 'c', 'h' },
7838                 .psize = 4,
7839                 .digest = { 0xd5, 0x5e, 0x10, 0x05, 0x10, 0x12, 0x89, 0x86 }
7840         },
7841         {
7842                 .key = { 0xd5, 0x5e, 0x10, 0x05, 0x10, 0x12, 0x89, 0x86 },
7843                 .ksize = 8,
7844                 .plaintext = { 'M', 'i', 'c', 'h', 'a', 'e', 'l' },
7845                 .psize = 7,
7846                 .digest = { 0x0a, 0x94, 0x2b, 0x12, 0x4e, 0xca, 0xa5, 0x46 },
7847         }
7848 };
7849
7850 /*
7851  * CRC32C test vectors
7852  */
7853 #define CRC32C_TEST_VECTORS 14
7854
7855 static struct hash_testvec crc32c_tv_template[] = {
7856         {
7857                 .psize = 0,
7858                 .digest = { 0x00, 0x00, 0x00, 0x00 }
7859         },
7860         {
7861                 .key = { 0x87, 0xa9, 0xcb, 0xed },
7862                 .ksize = 4,
7863                 .psize = 0,
7864                 .digest = { 0x78, 0x56, 0x34, 0x12 },
7865         },
7866         {
7867                 .key = { 0xff, 0xff, 0xff, 0xff },
7868                 .ksize = 4,
7869                 .plaintext = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
7870                                0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
7871                                0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
7872                                0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
7873                                0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28 },
7874                 .psize = 40,
7875                 .digest = { 0x7f, 0x15, 0x2c, 0x0e }
7876         },
7877         {
7878                 .key = { 0xff, 0xff, 0xff, 0xff },
7879                 .ksize = 4,
7880                 .plaintext = { 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
7881                                0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
7882                                0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,
7883                                0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
7884                                0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50 },
7885                 .psize = 40,
7886                 .digest = { 0xf6, 0xeb, 0x80, 0xe9 }
7887         },
7888         {
7889                 .key = { 0xff, 0xff, 0xff, 0xff },
7890                 .ksize = 4,
7891                 .plaintext = { 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
7892                                0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60,
7893                                0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
7894                                0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
7895                                0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78 },
7896                 .psize = 40,
7897                 .digest = { 0xed, 0xbd, 0x74, 0xde }
7898         },
7899         {
7900                 .key = { 0xff, 0xff, 0xff, 0xff },
7901                 .ksize = 4,
7902                 .plaintext = { 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80,
7903                                0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
7904                                0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90,
7905                                0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
7906                                0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0 },
7907                 .psize = 40,
7908                 .digest = { 0x62, 0xc8, 0x79, 0xd5 }
7909         },
7910         {
7911                 .key = { 0xff, 0xff, 0xff, 0xff },
7912                 .ksize = 4,
7913                 .plaintext = { 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
7914                                0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
7915                                0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8,
7916                                0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0,
7917                                0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8 },
7918                 .psize = 40,
7919                 .digest = { 0xd0, 0x9a, 0x97, 0xba }
7920         },
7921         {
7922                 .key = { 0xff, 0xff, 0xff, 0xff },
7923                 .ksize = 4,
7924                 .plaintext = { 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
7925                                0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
7926                                0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
7927                                0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8,
7928                                0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0 },
7929                 .psize = 40,
7930                 .digest = { 0x13, 0xd9, 0x29, 0x2b }
7931         },
7932         {
7933                 .key = { 0x80, 0xea, 0xd3, 0xf1 },
7934                 .ksize = 4,
7935                 .plaintext = { 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
7936                                0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
7937                                0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,
7938                                0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
7939                                0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50 },
7940                 .psize = 40,
7941                 .digest = { 0x0c, 0xb5, 0xe2, 0xa2 }
7942         },
7943         {
7944                 .key = { 0xf3, 0x4a, 0x1d, 0x5d },
7945                 .ksize = 4,
7946                 .plaintext = { 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
7947                                0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60,
7948                                0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
7949                                0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
7950                                0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78 },
7951                 .psize = 40,
7952                 .digest = { 0xd1, 0x7f, 0xfb, 0xa6 }
7953         },
7954         {
7955                 .key = { 0x2e, 0x80, 0x04, 0x59 },
7956                 .ksize = 4,
7957                 .plaintext = { 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80,
7958                                0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
7959                                0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90,
7960                                0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
7961                                0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0 },
7962                 .psize = 40,
7963                 .digest = { 0x59, 0x33, 0xe6, 0x7a }
7964         },
7965         {
7966                 .key = { 0xa6, 0xcc, 0x19, 0x85 },
7967                 .ksize = 4,
7968                 .plaintext = { 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
7969                                0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
7970                                0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8,
7971                                0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0,
7972                                0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8 },
7973                 .psize = 40,
7974                 .digest = { 0xbe, 0x03, 0x01, 0xd2 }
7975         },
7976         {
7977                 .key = { 0x41, 0xfc, 0xfe, 0x2d },
7978                 .ksize = 4,
7979                 .plaintext = { 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
7980                                0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
7981                                0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
7982                                0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8,
7983                                0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0 },
7984                 .psize = 40,
7985                 .digest = { 0x75, 0xd3, 0xc5, 0x24 }
7986         },
7987         {
7988                 .key = { 0xff, 0xff, 0xff, 0xff },
7989                 .ksize = 4,
7990                 .plaintext = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
7991                                0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
7992                                0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
7993                                0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
7994                                0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
7995                                0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
7996                                0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
7997                                0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,
7998                                0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
7999                                0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
8000                                0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
8001                                0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60,
8002                                0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
8003                                0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
8004                                0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
8005                                0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80,
8006                                0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
8007                                0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90,
8008                                0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
8009                                0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0,
8010                                0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
8011                                0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
8012                                0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8,
8013                                0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0,
8014                                0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8,
8015                                0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
8016                                0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
8017                                0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
8018                                0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8,
8019                                0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0 },
8020                 .psize = 240,
8021                 .digest = { 0x75, 0xd3, 0xc5, 0x24 },
8022                 .np = 2,
8023                 .tap = { 31, 209 }
8024         },
8025 };
8026
8027 /*
8028  * Cipher speed tests
8029  */
8030 static u8 speed_template_8[] = {8, 0};
8031 static u8 speed_template_24[] = {24, 0};
8032 static u8 speed_template_8_32[] = {8, 32, 0};
8033 static u8 speed_template_16_32[] = {16, 32, 0};
8034 static u8 speed_template_16_24_32[] = {16, 24, 32, 0};
8035 static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
8036 static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
8037
8038 /*
8039  * Digest speed tests
8040  */
8041 static struct hash_speed generic_hash_speed_template[] = {
8042         { .blen = 16,   .plen = 16, },
8043         { .blen = 64,   .plen = 16, },
8044         { .blen = 64,   .plen = 64, },
8045         { .blen = 256,  .plen = 16, },
8046         { .blen = 256,  .plen = 64, },
8047         { .blen = 256,  .plen = 256, },
8048         { .blen = 1024, .plen = 16, },
8049         { .blen = 1024, .plen = 256, },
8050         { .blen = 1024, .plen = 1024, },
8051         { .blen = 2048, .plen = 16, },
8052         { .blen = 2048, .plen = 256, },
8053         { .blen = 2048, .plen = 1024, },
8054         { .blen = 2048, .plen = 2048, },
8055         { .blen = 4096, .plen = 16, },
8056         { .blen = 4096, .plen = 256, },
8057         { .blen = 4096, .plen = 1024, },
8058         { .blen = 4096, .plen = 4096, },
8059         { .blen = 8192, .plen = 16, },
8060         { .blen = 8192, .plen = 256, },
8061         { .blen = 8192, .plen = 1024, },
8062         { .blen = 8192, .plen = 4096, },
8063         { .blen = 8192, .plen = 8192, },
8064
8065         /* End marker */
8066         {  .blen = 0,   .plen = 0, }
8067 };
8068
8069 #endif  /* _CRYPTO_TCRYPT_H */