crypto: tcrypt - Add alg_test interface
[linux-2.6-block.git] / crypto / tcrypt.h
CommitLineData
1da177e4
LT
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>
e3a4ea4f 9 * Copyright (c) 2007 Nokia Siemens Networks
1da177e4
LT
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
ef2736fc 13 * Software Foundation; either version 2 of the License, or (at your option)
1da177e4
LT
14 * any later version.
15 *
1da177e4
LT
16 */
17#ifndef _CRYPTO_TCRYPT_H
18#define _CRYPTO_TCRYPT_H
19
20#define MAX_DIGEST_SIZE 64
21#define MAX_TAP 8
22
23#define MAX_KEYLEN 56
24#define MAX_IVLEN 32
25
26struct hash_testvec {
06b42aa9 27 /* only used with keyed hash algorithms */
de224c30
SS
28 char *key;
29 char *plaintext;
30 char *digest;
ef2736fc 31 unsigned char tap[MAX_TAP];
06b42aa9
AN
32 unsigned char psize;
33 unsigned char np;
1da177e4
LT
34 unsigned char ksize;
35};
36
1da177e4 37struct cipher_testvec {
de224c30
SS
38 char *key;
39 char *iv;
40 char *input;
41 char *result;
f139cfa7 42 unsigned short tap[MAX_TAP];
06b42aa9 43 int np;
1da177e4
LT
44 unsigned char fail;
45 unsigned char wk; /* weak key flag */
1da177e4 46 unsigned char klen;
f3d1044c
RS
47 unsigned short ilen;
48 unsigned short rlen;
1da177e4
LT
49};
50
e3a4ea4f 51struct aead_testvec {
de224c30
SS
52 char *key;
53 char *iv;
54 char *input;
55 char *assoc;
56 char *result;
e3a4ea4f
MH
57 unsigned char tap[MAX_TAP];
58 unsigned char atap[MAX_TAP];
59 int np;
60 int anp;
61 unsigned char fail;
62 unsigned char wk; /* weak key flag */
63 unsigned char klen;
64 unsigned short ilen;
65 unsigned short alen;
66 unsigned short rlen;
e3a4ea4f
MH
67};
68
e9d41164 69struct hash_speed {
e8057928
ML
70 unsigned int blen; /* buffer length */
71 unsigned int plen; /* per-update length */
72};
73
de224c30
SS
74static char zeroed_string[48];
75
1da177e4
LT
76/*
77 * MD4 test vectors from RFC1320
78 */
79#define MD4_TEST_VECTORS 7
80
81static struct hash_testvec md4_tv_template [] = {
82 {
83 .plaintext = "",
de224c30
SS
84 .digest = "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31"
85 "\xb7\x3c\x59\xd7\xe0\xc0\x89\xc0",
1da177e4
LT
86 }, {
87 .plaintext = "a",
88 .psize = 1,
de224c30
SS
89 .digest = "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46"
90 "\x24\x5e\x05\xfb\xdb\xd6\xfb\x24",
1da177e4
LT
91 }, {
92 .plaintext = "abc",
93 .psize = 3,
de224c30
SS
94 .digest = "\xa4\x48\x01\x7a\xaf\x21\xd8\x52"
95 "\x5f\xc1\x0a\xe8\x7a\xa6\x72\x9d",
1da177e4
LT
96 }, {
97 .plaintext = "message digest",
98 .psize = 14,
de224c30
SS
99 .digest = "\xd9\x13\x0a\x81\x64\x54\x9f\xe8"
100 "\x18\x87\x48\x06\xe1\xc7\x01\x4b",
1da177e4
LT
101 }, {
102 .plaintext = "abcdefghijklmnopqrstuvwxyz",
103 .psize = 26,
de224c30
SS
104 .digest = "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd"
105 "\xee\xa8\xed\x63\xdf\x41\x2d\xa9",
1da177e4
LT
106 .np = 2,
107 .tap = { 13, 13 },
108 }, {
109 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
110 .psize = 62,
de224c30
SS
111 .digest = "\x04\x3f\x85\x82\xf2\x41\xdb\x35"
112 "\x1c\xe6\x27\xe1\x53\xe7\xf0\xe4",
1da177e4
LT
113 }, {
114 .plaintext = "123456789012345678901234567890123456789012345678901234567890123"
de224c30 115 "45678901234567890",
1da177e4 116 .psize = 80,
de224c30
SS
117 .digest = "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19"
118 "\x9c\x3e\x7b\x16\x4f\xcc\x05\x36",
1da177e4
LT
119 },
120};
121
122/*
123 * MD5 test vectors from RFC1321
124 */
125#define MD5_TEST_VECTORS 7
126
127static struct hash_testvec md5_tv_template[] = {
128 {
de224c30
SS
129 .digest = "\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04"
130 "\xe9\x80\x09\x98\xec\xf8\x42\x7e",
1da177e4
LT
131 }, {
132 .plaintext = "a",
133 .psize = 1,
de224c30
SS
134 .digest = "\x0c\xc1\x75\xb9\xc0\xf1\xb6\xa8"
135 "\x31\xc3\x99\xe2\x69\x77\x26\x61",
1da177e4
LT
136 }, {
137 .plaintext = "abc",
138 .psize = 3,
de224c30
SS
139 .digest = "\x90\x01\x50\x98\x3c\xd2\x4f\xb0"
140 "\xd6\x96\x3f\x7d\x28\xe1\x7f\x72",
1da177e4
LT
141 }, {
142 .plaintext = "message digest",
143 .psize = 14,
de224c30
SS
144 .digest = "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d"
145 "\x52\x5a\x2f\x31\xaa\xf1\x61\xd0",
1da177e4
LT
146 }, {
147 .plaintext = "abcdefghijklmnopqrstuvwxyz",
148 .psize = 26,
de224c30
SS
149 .digest = "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00"
150 "\x7d\xfb\x49\x6c\xca\x67\xe1\x3b",
1da177e4
LT
151 .np = 2,
152 .tap = {13, 13}
153 }, {
154 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
155 .psize = 62,
de224c30
SS
156 .digest = "\xd1\x74\xab\x98\xd2\x77\xd9\xf5"
157 "\xa5\x61\x1c\x2c\x9f\x41\x9d\x9f",
1da177e4
LT
158 }, {
159 .plaintext = "12345678901234567890123456789012345678901234567890123456789012"
de224c30 160 "345678901234567890",
1da177e4 161 .psize = 80,
de224c30
SS
162 .digest = "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55"
163 "\xac\x49\xda\x2e\x21\x07\xb6\x7a",
1da177e4 164 }
fd4adf1a
AKR
165
166};
167
168/*
169 * RIPEMD-128 test vectors from ISO/IEC 10118-3:2004(E)
170 */
171#define RMD128_TEST_VECTORS 10
172
173static struct hash_testvec rmd128_tv_template[] = {
174 {
175 .digest = "\xcd\xf2\x62\x13\xa1\x50\xdc\x3e"
176 "\xcb\x61\x0f\x18\xf6\xb3\x8b\x46",
177 }, {
178 .plaintext = "a",
179 .psize = 1,
180 .digest = "\x86\xbe\x7a\xfa\x33\x9d\x0f\xc7"
181 "\xcf\xc7\x85\xe7\x2f\x57\x8d\x33",
182 }, {
183 .plaintext = "abc",
184 .psize = 3,
185 .digest = "\xc1\x4a\x12\x19\x9c\x66\xe4\xba"
186 "\x84\x63\x6b\x0f\x69\x14\x4c\x77",
187 }, {
188 .plaintext = "message digest",
189 .psize = 14,
190 .digest = "\x9e\x32\x7b\x3d\x6e\x52\x30\x62"
191 "\xaf\xc1\x13\x2d\x7d\xf9\xd1\xb8",
192 }, {
193 .plaintext = "abcdefghijklmnopqrstuvwxyz",
194 .psize = 26,
195 .digest = "\xfd\x2a\xa6\x07\xf7\x1d\xc8\xf5"
196 "\x10\x71\x49\x22\xb3\x71\x83\x4e",
197 }, {
198 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
199 "fghijklmnopqrstuvwxyz0123456789",
200 .psize = 62,
201 .digest = "\xd1\xe9\x59\xeb\x17\x9c\x91\x1f"
202 "\xae\xa4\x62\x4c\x60\xc5\xc7\x02",
203 }, {
204 .plaintext = "1234567890123456789012345678901234567890"
205 "1234567890123456789012345678901234567890",
206 .psize = 80,
207 .digest = "\x3f\x45\xef\x19\x47\x32\xc2\xdb"
208 "\xb2\xc4\xa2\xc7\x69\x79\x5f\xa3",
209 }, {
210 .plaintext = "abcdbcdecdefdefgefghfghighij"
211 "hijkijkljklmklmnlmnomnopnopq",
212 .psize = 56,
213 .digest = "\xa1\xaa\x06\x89\xd0\xfa\xfa\x2d"
214 "\xdc\x22\xe8\x8b\x49\x13\x3a\x06",
215 .np = 2,
216 .tap = { 28, 28 },
217 }, {
218 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghi"
219 "jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqr"
220 "lmnopqrsmnopqrstnopqrstu",
221 .psize = 112,
222 .digest = "\xd4\xec\xc9\x13\xe1\xdf\x77\x6b"
223 "\xf4\x8d\xe9\xd5\x5b\x1f\x25\x46",
224 }, {
225 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
226 .psize = 32,
227 .digest = "\x13\xfc\x13\xe8\xef\xff\x34\x7d"
228 "\xe1\x93\xff\x46\xdb\xac\xcf\xd4",
229 }
230};
231
232/*
233 * RIPEMD-160 test vectors from ISO/IEC 10118-3:2004(E)
234 */
235#define RMD160_TEST_VECTORS 10
236
237static struct hash_testvec rmd160_tv_template[] = {
238 {
239 .digest = "\x9c\x11\x85\xa5\xc5\xe9\xfc\x54\x61\x28"
240 "\x08\x97\x7e\xe8\xf5\x48\xb2\x25\x8d\x31",
241 }, {
242 .plaintext = "a",
243 .psize = 1,
244 .digest = "\x0b\xdc\x9d\x2d\x25\x6b\x3e\xe9\xda\xae"
245 "\x34\x7b\xe6\xf4\xdc\x83\x5a\x46\x7f\xfe",
246 }, {
247 .plaintext = "abc",
248 .psize = 3,
249 .digest = "\x8e\xb2\x08\xf7\xe0\x5d\x98\x7a\x9b\x04"
250 "\x4a\x8e\x98\xc6\xb0\x87\xf1\x5a\x0b\xfc",
251 }, {
252 .plaintext = "message digest",
253 .psize = 14,
254 .digest = "\x5d\x06\x89\xef\x49\xd2\xfa\xe5\x72\xb8"
255 "\x81\xb1\x23\xa8\x5f\xfa\x21\x59\x5f\x36",
256 }, {
257 .plaintext = "abcdefghijklmnopqrstuvwxyz",
258 .psize = 26,
259 .digest = "\xf7\x1c\x27\x10\x9c\x69\x2c\x1b\x56\xbb"
260 "\xdc\xeb\x5b\x9d\x28\x65\xb3\x70\x8d\xbc",
261 }, {
262 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
263 "fghijklmnopqrstuvwxyz0123456789",
264 .psize = 62,
265 .digest = "\xb0\xe2\x0b\x6e\x31\x16\x64\x02\x86\xed"
266 "\x3a\x87\xa5\x71\x30\x79\xb2\x1f\x51\x89",
267 }, {
268 .plaintext = "1234567890123456789012345678901234567890"
269 "1234567890123456789012345678901234567890",
270 .psize = 80,
271 .digest = "\x9b\x75\x2e\x45\x57\x3d\x4b\x39\xf4\xdb"
272 "\xd3\x32\x3c\xab\x82\xbf\x63\x32\x6b\xfb",
273 }, {
274 .plaintext = "abcdbcdecdefdefgefghfghighij"
275 "hijkijkljklmklmnlmnomnopnopq",
276 .psize = 56,
277 .digest = "\x12\xa0\x53\x38\x4a\x9c\x0c\x88\xe4\x05"
278 "\xa0\x6c\x27\xdc\xf4\x9a\xda\x62\xeb\x2b",
279 .np = 2,
280 .tap = { 28, 28 },
281 }, {
282 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghi"
283 "jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqr"
284 "lmnopqrsmnopqrstnopqrstu",
285 .psize = 112,
286 .digest = "\x6f\x3f\xa3\x9b\x6b\x50\x3c\x38\x4f\x91"
287 "\x9a\x49\xa7\xaa\x5c\x2c\x08\xbd\xfb\x45",
288 }, {
289 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
290 .psize = 32,
291 .digest = "\x94\xc2\x64\x11\x54\x04\xe6\x33\x79\x0d"
292 "\xfc\xc8\x7b\x58\x7d\x36\x77\x06\x7d\x9f",
293 }
1da177e4
LT
294};
295
2998db37
AKR
296/*
297 * RIPEMD-256 test vectors
298 */
299#define RMD256_TEST_VECTORS 8
300
301static struct hash_testvec rmd256_tv_template[] = {
302 {
303 .digest = "\x02\xba\x4c\x4e\x5f\x8e\xcd\x18"
304 "\x77\xfc\x52\xd6\x4d\x30\xe3\x7a"
305 "\x2d\x97\x74\xfb\x1e\x5d\x02\x63"
306 "\x80\xae\x01\x68\xe3\xc5\x52\x2d",
307 }, {
308 .plaintext = "a",
309 .psize = 1,
310 .digest = "\xf9\x33\x3e\x45\xd8\x57\xf5\xd9"
311 "\x0a\x91\xba\xb7\x0a\x1e\xba\x0c"
312 "\xfb\x1b\xe4\xb0\x78\x3c\x9a\xcf"
313 "\xcd\x88\x3a\x91\x34\x69\x29\x25",
314 }, {
315 .plaintext = "abc",
316 .psize = 3,
317 .digest = "\xaf\xbd\x6e\x22\x8b\x9d\x8c\xbb"
318 "\xce\xf5\xca\x2d\x03\xe6\xdb\xa1"
319 "\x0a\xc0\xbc\x7d\xcb\xe4\x68\x0e"
320 "\x1e\x42\xd2\xe9\x75\x45\x9b\x65",
321 }, {
322 .plaintext = "message digest",
323 .psize = 14,
324 .digest = "\x87\xe9\x71\x75\x9a\x1c\xe4\x7a"
325 "\x51\x4d\x5c\x91\x4c\x39\x2c\x90"
326 "\x18\xc7\xc4\x6b\xc1\x44\x65\x55"
327 "\x4a\xfc\xdf\x54\xa5\x07\x0c\x0e",
328 }, {
329 .plaintext = "abcdefghijklmnopqrstuvwxyz",
330 .psize = 26,
331 .digest = "\x64\x9d\x30\x34\x75\x1e\xa2\x16"
332 "\x77\x6b\xf9\xa1\x8a\xcc\x81\xbc"
333 "\x78\x96\x11\x8a\x51\x97\x96\x87"
334 "\x82\xdd\x1f\xd9\x7d\x8d\x51\x33",
335 }, {
336 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
337 "fghijklmnopqrstuvwxyz0123456789",
338 .psize = 62,
339 .digest = "\x57\x40\xa4\x08\xac\x16\xb7\x20"
340 "\xb8\x44\x24\xae\x93\x1c\xbb\x1f"
341 "\xe3\x63\xd1\xd0\xbf\x40\x17\xf1"
342 "\xa8\x9f\x7e\xa6\xde\x77\xa0\xb8",
343 }, {
344 .plaintext = "1234567890123456789012345678901234567890"
345 "1234567890123456789012345678901234567890",
346 .psize = 80,
347 .digest = "\x06\xfd\xcc\x7a\x40\x95\x48\xaa"
348 "\xf9\x13\x68\xc0\x6a\x62\x75\xb5"
349 "\x53\xe3\xf0\x99\xbf\x0e\xa4\xed"
350 "\xfd\x67\x78\xdf\x89\xa8\x90\xdd",
351 }, {
352 .plaintext = "abcdbcdecdefdefgefghfghighij"
353 "hijkijkljklmklmnlmnomnopnopq",
354 .psize = 56,
355 .digest = "\x38\x43\x04\x55\x83\xaa\xc6\xc8"
356 "\xc8\xd9\x12\x85\x73\xe7\xa9\x80"
357 "\x9a\xfb\x2a\x0f\x34\xcc\xc3\x6e"
358 "\xa9\xe7\x2f\x16\xf6\x36\x8e\x3f",
359 .np = 2,
360 .tap = { 28, 28 },
361 }
362};
363
364/*
365 * RIPEMD-320 test vectors
366 */
367#define RMD320_TEST_VECTORS 8
368
369static struct hash_testvec rmd320_tv_template[] = {
370 {
371 .digest = "\x22\xd6\x5d\x56\x61\x53\x6c\xdc\x75\xc1"
372 "\xfd\xf5\xc6\xde\x7b\x41\xb9\xf2\x73\x25"
373 "\xeb\xc6\x1e\x85\x57\x17\x7d\x70\x5a\x0e"
374 "\xc8\x80\x15\x1c\x3a\x32\xa0\x08\x99\xb8",
375 }, {
376 .plaintext = "a",
377 .psize = 1,
378 .digest = "\xce\x78\x85\x06\x38\xf9\x26\x58\xa5\xa5"
379 "\x85\x09\x75\x79\x92\x6d\xda\x66\x7a\x57"
380 "\x16\x56\x2c\xfc\xf6\xfb\xe7\x7f\x63\x54"
381 "\x2f\x99\xb0\x47\x05\xd6\x97\x0d\xff\x5d",
382 }, {
383 .plaintext = "abc",
384 .psize = 3,
385 .digest = "\xde\x4c\x01\xb3\x05\x4f\x89\x30\xa7\x9d"
386 "\x09\xae\x73\x8e\x92\x30\x1e\x5a\x17\x08"
387 "\x5b\xef\xfd\xc1\xb8\xd1\x16\x71\x3e\x74"
388 "\xf8\x2f\xa9\x42\xd6\x4c\xdb\xc4\x68\x2d",
389 }, {
390 .plaintext = "message digest",
391 .psize = 14,
392 .digest = "\x3a\x8e\x28\x50\x2e\xd4\x5d\x42\x2f\x68"
393 "\x84\x4f\x9d\xd3\x16\xe7\xb9\x85\x33\xfa"
394 "\x3f\x2a\x91\xd2\x9f\x84\xd4\x25\xc8\x8d"
395 "\x6b\x4e\xff\x72\x7d\xf6\x6a\x7c\x01\x97",
396 }, {
397 .plaintext = "abcdefghijklmnopqrstuvwxyz",
398 .psize = 26,
399 .digest = "\xca\xbd\xb1\x81\x0b\x92\x47\x0a\x20\x93"
400 "\xaa\x6b\xce\x05\x95\x2c\x28\x34\x8c\xf4"
401 "\x3f\xf6\x08\x41\x97\x51\x66\xbb\x40\xed"
402 "\x23\x40\x04\xb8\x82\x44\x63\xe6\xb0\x09",
403 }, {
404 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
405 "fghijklmnopqrstuvwxyz0123456789",
406 .psize = 62,
407 .digest = "\xed\x54\x49\x40\xc8\x6d\x67\xf2\x50\xd2"
408 "\x32\xc3\x0b\x7b\x3e\x57\x70\xe0\xc6\x0c"
409 "\x8c\xb9\xa4\xca\xfe\x3b\x11\x38\x8a\xf9"
410 "\x92\x0e\x1b\x99\x23\x0b\x84\x3c\x86\xa4",
411 }, {
412 .plaintext = "1234567890123456789012345678901234567890"
413 "1234567890123456789012345678901234567890",
414 .psize = 80,
415 .digest = "\x55\x78\x88\xaf\x5f\x6d\x8e\xd6\x2a\xb6"
416 "\x69\x45\xc6\xd2\xa0\xa4\x7e\xcd\x53\x41"
417 "\xe9\x15\xeb\x8f\xea\x1d\x05\x24\x95\x5f"
418 "\x82\x5d\xc7\x17\xe4\xa0\x08\xab\x2d\x42",
419 }, {
420 .plaintext = "abcdbcdecdefdefgefghfghighij"
421 "hijkijkljklmklmnlmnomnopnopq",
422 .psize = 56,
423 .digest = "\xd0\x34\xa7\x95\x0c\xf7\x22\x02\x1b\xa4"
424 "\xb8\x4d\xf7\x69\xa5\xde\x20\x60\xe2\x59"
425 "\xdf\x4c\x9b\xb4\xa4\x26\x8c\x0e\x93\x5b"
426 "\xbc\x74\x70\xa9\x69\xc9\xd0\x72\xa1\xac",
427 .np = 2,
428 .tap = { 28, 28 },
429 }
430};
431
1da177e4
LT
432/*
433 * SHA1 test vectors from from FIPS PUB 180-1
434 */
435#define SHA1_TEST_VECTORS 2
436
437static struct hash_testvec sha1_tv_template[] = {
ef2736fc 438 {
1da177e4
LT
439 .plaintext = "abc",
440 .psize = 3,
de224c30
SS
441 .digest = "\xa9\x99\x3e\x36\x47\x06\x81\x6a\xba\x3e"
442 "\x25\x71\x78\x50\xc2\x6c\x9c\xd0\xd8\x9d",
1da177e4
LT
443 }, {
444 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
445 .psize = 56,
de224c30
SS
446 .digest = "\x84\x98\x3e\x44\x1c\x3b\xd2\x6e\xba\xae"
447 "\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1",
1da177e4
LT
448 .np = 2,
449 .tap = { 28, 28 }
450 }
451};
452
cd12fb90
JL
453
454/*
455 * SHA224 test vectors from from FIPS PUB 180-2
456 */
457#define SHA224_TEST_VECTORS 2
458
459static struct hash_testvec sha224_tv_template[] = {
460 {
461 .plaintext = "abc",
462 .psize = 3,
de224c30
SS
463 .digest = "\x23\x09\x7D\x22\x34\x05\xD8\x22"
464 "\x86\x42\xA4\x77\xBD\xA2\x55\xB3"
465 "\x2A\xAD\xBC\xE4\xBD\xA0\xB3\xF7"
466 "\xE3\x6C\x9D\xA7",
cd12fb90
JL
467 }, {
468 .plaintext =
469 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
470 .psize = 56,
de224c30
SS
471 .digest = "\x75\x38\x8B\x16\x51\x27\x76\xCC"
472 "\x5D\xBA\x5D\xA1\xFD\x89\x01\x50"
473 "\xB0\xC6\x45\x5C\xB4\xF5\x8B\x19"
474 "\x52\x52\x25\x25",
cd12fb90
JL
475 .np = 2,
476 .tap = { 28, 28 }
477 }
478};
479
1da177e4
LT
480/*
481 * SHA256 test vectors from from NIST
482 */
483#define SHA256_TEST_VECTORS 2
484
ef2736fc
HX
485static struct hash_testvec sha256_tv_template[] = {
486 {
1da177e4
LT
487 .plaintext = "abc",
488 .psize = 3,
de224c30
SS
489 .digest = "\xba\x78\x16\xbf\x8f\x01\xcf\xea"
490 "\x41\x41\x40\xde\x5d\xae\x22\x23"
491 "\xb0\x03\x61\xa3\x96\x17\x7a\x9c"
492 "\xb4\x10\xff\x61\xf2\x00\x15\xad",
1da177e4
LT
493 }, {
494 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
495 .psize = 56,
de224c30
SS
496 .digest = "\x24\x8d\x6a\x61\xd2\x06\x38\xb8"
497 "\xe5\xc0\x26\x93\x0c\x3e\x60\x39"
498 "\xa3\x3c\xe4\x59\x64\xff\x21\x67"
499 "\xf6\xec\xed\xd4\x19\xdb\x06\xc1",
1da177e4
LT
500 .np = 2,
501 .tap = { 28, 28 }
502 },
503};
504
505/*
506 * SHA384 test vectors from from NIST and kerneli
507 */
508#define SHA384_TEST_VECTORS 4
509
510static struct hash_testvec sha384_tv_template[] = {
ef2736fc 511 {
1da177e4
LT
512 .plaintext= "abc",
513 .psize = 3,
de224c30
SS
514 .digest = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b"
515 "\xb5\xa0\x3d\x69\x9a\xc6\x50\x07"
516 "\x27\x2c\x32\xab\x0e\xde\xd1\x63"
517 "\x1a\x8b\x60\x5a\x43\xff\x5b\xed"
518 "\x80\x86\x07\x2b\xa1\xe7\xcc\x23"
519 "\x58\xba\xec\xa1\x34\xc8\x25\xa7",
1da177e4
LT
520 }, {
521 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
522 .psize = 56,
de224c30
SS
523 .digest = "\x33\x91\xfd\xdd\xfc\x8d\xc7\x39"
524 "\x37\x07\xa6\x5b\x1b\x47\x09\x39"
525 "\x7c\xf8\xb1\xd1\x62\xaf\x05\xab"
526 "\xfe\x8f\x45\x0d\xe5\xf3\x6b\xc6"
527 "\xb0\x45\x5a\x85\x20\xbc\x4e\x6f"
528 "\x5f\xe9\x5b\x1f\xe3\xc8\x45\x2b",
1da177e4
LT
529 }, {
530 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
de224c30 531 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
1da177e4 532 .psize = 112,
de224c30
SS
533 .digest = "\x09\x33\x0c\x33\xf7\x11\x47\xe8"
534 "\x3d\x19\x2f\xc7\x82\xcd\x1b\x47"
535 "\x53\x11\x1b\x17\x3b\x3b\x05\xd2"
536 "\x2f\xa0\x80\x86\xe3\xb0\xf7\x12"
537 "\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9"
538 "\x66\xc3\xe9\xfa\x91\x74\x60\x39",
1da177e4
LT
539 }, {
540 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
de224c30 541 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
1da177e4 542 .psize = 104,
de224c30
SS
543 .digest = "\x3d\x20\x89\x73\xab\x35\x08\xdb"
544 "\xbd\x7e\x2c\x28\x62\xba\x29\x0a"
545 "\xd3\x01\x0e\x49\x78\xc1\x98\xdc"
546 "\x4d\x8f\xd0\x14\xe5\x82\x82\x3a"
547 "\x89\xe1\x6f\x9b\x2a\x7b\xbc\x1a"
548 "\xc9\x38\xe2\xd1\x99\xe8\xbe\xa4",
1da177e4
LT
549 .np = 4,
550 .tap = { 26, 26, 26, 26 }
551 },
552};
553
554/*
555 * SHA512 test vectors from from NIST and kerneli
556 */
557#define SHA512_TEST_VECTORS 4
558
559static struct hash_testvec sha512_tv_template[] = {
ef2736fc 560 {
1da177e4
LT
561 .plaintext = "abc",
562 .psize = 3,
de224c30
SS
563 .digest = "\xdd\xaf\x35\xa1\x93\x61\x7a\xba"
564 "\xcc\x41\x73\x49\xae\x20\x41\x31"
565 "\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2"
566 "\x0a\x9e\xee\xe6\x4b\x55\xd3\x9a"
567 "\x21\x92\x99\x2a\x27\x4f\xc1\xa8"
568 "\x36\xba\x3c\x23\xa3\xfe\xeb\xbd"
569 "\x45\x4d\x44\x23\x64\x3c\xe8\x0e"
570 "\x2a\x9a\xc9\x4f\xa5\x4c\xa4\x9f",
1da177e4
LT
571 }, {
572 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
573 .psize = 56,
de224c30
SS
574 .digest = "\x20\x4a\x8f\xc6\xdd\xa8\x2f\x0a"
575 "\x0c\xed\x7b\xeb\x8e\x08\xa4\x16"
576 "\x57\xc1\x6e\xf4\x68\xb2\x28\xa8"
577 "\x27\x9b\xe3\x31\xa7\x03\xc3\x35"
578 "\x96\xfd\x15\xc1\x3b\x1b\x07\xf9"
579 "\xaa\x1d\x3b\xea\x57\x78\x9c\xa0"
580 "\x31\xad\x85\xc7\xa7\x1d\xd7\x03"
581 "\x54\xec\x63\x12\x38\xca\x34\x45",
1da177e4
LT
582 }, {
583 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
de224c30 584 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
1da177e4 585 .psize = 112,
de224c30
SS
586 .digest = "\x8e\x95\x9b\x75\xda\xe3\x13\xda"
587 "\x8c\xf4\xf7\x28\x14\xfc\x14\x3f"
588 "\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1"
589 "\x72\x99\xae\xad\xb6\x88\x90\x18"
590 "\x50\x1d\x28\x9e\x49\x00\xf7\xe4"
591 "\x33\x1b\x99\xde\xc4\xb5\x43\x3a"
592 "\xc7\xd3\x29\xee\xb6\xdd\x26\x54"
593 "\x5e\x96\xe5\x5b\x87\x4b\xe9\x09",
1da177e4
LT
594 }, {
595 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
de224c30 596 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
1da177e4 597 .psize = 104,
de224c30
SS
598 .digest = "\x93\x0d\x0c\xef\xcb\x30\xff\x11"
599 "\x33\xb6\x89\x81\x21\xf1\xcf\x3d"
600 "\x27\x57\x8a\xfc\xaf\xe8\x67\x7c"
601 "\x52\x57\xcf\x06\x99\x11\xf7\x5d"
602 "\x8f\x58\x31\xb5\x6e\xbf\xda\x67"
603 "\xb2\x78\xe6\x6d\xff\x8b\x84\xfe"
604 "\x2b\x28\x70\xf7\x42\xa5\x80\xd8"
605 "\xed\xb4\x19\x87\x23\x28\x50\xc9",
1da177e4
LT
606 .np = 4,
607 .tap = { 26, 26, 26, 26 }
608 },
609};
610
611
612/*
ef2736fc 613 * WHIRLPOOL test vectors from Whirlpool package
1da177e4
LT
614 * by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE
615 * submission
616 */
617#define WP512_TEST_VECTORS 8
618
619static struct hash_testvec wp512_tv_template[] = {
ef2736fc 620 {
1da177e4
LT
621 .plaintext = "",
622 .psize = 0,
de224c30
SS
623 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
624 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
625 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
626 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
627 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
628 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57"
629 "\xEA\x89\x64\xE5\x9B\x63\xD9\x37"
630 "\x08\xB1\x38\xCC\x42\xA6\x6E\xB3",
1da177e4
LT
631
632
633 }, {
634 .plaintext = "a",
635 .psize = 1,
de224c30
SS
636 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
637 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
638 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
639 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
640 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
641 "\x3A\x42\x39\x1A\x39\x14\x5A\x59"
642 "\x1A\x92\x20\x0D\x56\x01\x95\xE5"
643 "\x3B\x47\x85\x84\xFD\xAE\x23\x1A",
1da177e4
LT
644 }, {
645 .plaintext = "abc",
646 .psize = 3,
de224c30
SS
647 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
648 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
649 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
650 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
651 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
652 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6"
653 "\xC7\x97\xFC\x9D\x95\xD8\xB5\x82"
654 "\xD2\x25\x29\x20\x76\xD4\xEE\xF5",
1da177e4
LT
655 }, {
656 .plaintext = "message digest",
657 .psize = 14,
de224c30
SS
658 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
659 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
660 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
661 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
662 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
663 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6"
664 "\x92\xED\x92\x00\x52\x83\x8F\x33"
665 "\x62\xE8\x6D\xBD\x37\xA8\x90\x3E",
1da177e4
LT
666 }, {
667 .plaintext = "abcdefghijklmnopqrstuvwxyz",
668 .psize = 26,
de224c30
SS
669 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
670 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
671 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
672 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
673 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
674 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6"
675 "\xF6\x8F\x67\x3E\x72\x07\x86\x5D"
676 "\x5D\x98\x19\xA3\xDB\xA4\xEB\x3B",
1da177e4
LT
677 }, {
678 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
de224c30 679 "abcdefghijklmnopqrstuvwxyz0123456789",
1da177e4 680 .psize = 62,
de224c30
SS
681 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
682 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
683 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
684 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
685 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
686 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6"
687 "\x55\x17\xCC\x87\x9D\x7B\x96\x21"
688 "\x42\xC6\x5F\x5A\x7A\xF0\x14\x67",
1da177e4
LT
689 }, {
690 .plaintext = "1234567890123456789012345678901234567890"
de224c30 691 "1234567890123456789012345678901234567890",
1da177e4 692 .psize = 80,
de224c30
SS
693 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
694 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
695 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
696 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
697 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
698 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A"
699 "\x2C\x60\x48\x1E\x88\xC5\xA2\x0B"
700 "\x2C\x2A\x80\xCF\x3A\x9A\x08\x3B",
1da177e4
LT
701 }, {
702 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
703 .psize = 32,
de224c30
SS
704 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
705 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
706 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
707 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
708 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
709 "\x7B\x94\x76\x39\xFE\x05\x0B\x56"
710 "\x93\x9B\xAA\xA0\xAD\xFF\x9A\xE6"
711 "\x74\x5B\x7B\x18\x1C\x3B\xE3\xFD",
1da177e4
LT
712 },
713};
714
715#define WP384_TEST_VECTORS 8
716
717static struct hash_testvec wp384_tv_template[] = {
ef2736fc 718 {
1da177e4
LT
719 .plaintext = "",
720 .psize = 0,
de224c30
SS
721 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
722 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
723 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
724 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
725 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
726 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57",
1da177e4
LT
727
728
729 }, {
730 .plaintext = "a",
731 .psize = 1,
de224c30
SS
732 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
733 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
734 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
735 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
736 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
737 "\x3A\x42\x39\x1A\x39\x14\x5A\x59",
1da177e4
LT
738 }, {
739 .plaintext = "abc",
740 .psize = 3,
de224c30
SS
741 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
742 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
743 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
744 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
745 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
746 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6",
1da177e4
LT
747 }, {
748 .plaintext = "message digest",
749 .psize = 14,
de224c30
SS
750 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
751 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
752 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
753 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
754 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
755 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6",
1da177e4
LT
756 }, {
757 .plaintext = "abcdefghijklmnopqrstuvwxyz",
758 .psize = 26,
de224c30
SS
759 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
760 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
761 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
762 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
763 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
764 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6",
1da177e4
LT
765 }, {
766 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
de224c30 767 "abcdefghijklmnopqrstuvwxyz0123456789",
1da177e4 768 .psize = 62,
de224c30
SS
769 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
770 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
771 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
772 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
773 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
774 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6",
1da177e4
LT
775 }, {
776 .plaintext = "1234567890123456789012345678901234567890"
de224c30 777 "1234567890123456789012345678901234567890",
1da177e4 778 .psize = 80,
de224c30
SS
779 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
780 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
781 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
782 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
783 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
784 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A",
1da177e4
LT
785 }, {
786 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
787 .psize = 32,
de224c30
SS
788 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
789 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
790 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
791 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
792 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
793 "\x7B\x94\x76\x39\xFE\x05\x0B\x56",
1da177e4
LT
794 },
795};
796
797#define WP256_TEST_VECTORS 8
798
799static struct hash_testvec wp256_tv_template[] = {
ef2736fc 800 {
1da177e4
LT
801 .plaintext = "",
802 .psize = 0,
de224c30
SS
803 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
804 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
805 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
806 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7",
1da177e4
LT
807
808
809 }, {
810 .plaintext = "a",
811 .psize = 1,
de224c30
SS
812 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
813 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
814 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
815 "\x73\xC4\x50\x01\xD0\x08\x7B\x42",
1da177e4
LT
816 }, {
817 .plaintext = "abc",
818 .psize = 3,
de224c30
SS
819 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
820 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
821 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
822 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C",
1da177e4
LT
823 }, {
824 .plaintext = "message digest",
825 .psize = 14,
de224c30
SS
826 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
827 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
828 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
829 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B",
1da177e4
LT
830 }, {
831 .plaintext = "abcdefghijklmnopqrstuvwxyz",
832 .psize = 26,
de224c30
SS
833 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
834 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
835 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
836 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B",
1da177e4
LT
837 }, {
838 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
de224c30 839 "abcdefghijklmnopqrstuvwxyz0123456789",
1da177e4 840 .psize = 62,
de224c30
SS
841 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
842 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
843 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
844 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E",
1da177e4
LT
845 }, {
846 .plaintext = "1234567890123456789012345678901234567890"
de224c30 847 "1234567890123456789012345678901234567890",
1da177e4 848 .psize = 80,
de224c30
SS
849 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
850 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
851 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
852 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29",
1da177e4
LT
853 }, {
854 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
855 .psize = 32,
de224c30
SS
856 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
857 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
858 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
859 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69",
1da177e4
LT
860 },
861};
862
863/*
ef2736fc 864 * TIGER test vectors from Tiger website
1da177e4
LT
865 */
866#define TGR192_TEST_VECTORS 6
867
868static struct hash_testvec tgr192_tv_template[] = {
869 {
870 .plaintext = "",
871 .psize = 0,
de224c30
SS
872 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
873 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
874 "\xf3\x73\xde\x2d\x49\x58\x4e\x7a",
1da177e4
LT
875 }, {
876 .plaintext = "abc",
877 .psize = 3,
de224c30
SS
878 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
879 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
880 "\x93\x5f\x7b\x95\x1c\x13\x29\x51",
1da177e4
LT
881 }, {
882 .plaintext = "Tiger",
883 .psize = 5,
de224c30
SS
884 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
885 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
886 "\x37\x79\x0c\x11\x6f\x9d\x2b\xdf",
1da177e4
LT
887 }, {
888 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
889 .psize = 64,
de224c30
SS
890 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
891 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
892 "\xb5\x86\x44\x50\x34\xa5\xa3\x86",
1da177e4
LT
893 }, {
894 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
895 .psize = 64,
de224c30
SS
896 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
897 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
898 "\x57\x89\x65\x65\x97\x5f\x91\x97",
1da177e4
LT
899 }, {
900 .plaintext = "Tiger - A Fast New Hash Function, "
de224c30
SS
901 "by Ross Anderson and Eli Biham, "
902 "proceedings of Fast Software Encryption 3, "
903 "Cambridge, 1996.",
1da177e4 904 .psize = 125,
de224c30
SS
905 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
906 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
907 "\xdd\x68\x15\x1d\x50\x39\x74\xfc",
1da177e4
LT
908 },
909};
910
911#define TGR160_TEST_VECTORS 6
912
913static struct hash_testvec tgr160_tv_template[] = {
914 {
915 .plaintext = "",
916 .psize = 0,
de224c30
SS
917 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
918 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
919 "\xf3\x73\xde\x2d",
1da177e4
LT
920 }, {
921 .plaintext = "abc",
922 .psize = 3,
de224c30
SS
923 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
924 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
925 "\x93\x5f\x7b\x95",
1da177e4
LT
926 }, {
927 .plaintext = "Tiger",
928 .psize = 5,
de224c30
SS
929 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
930 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
931 "\x37\x79\x0c\x11",
1da177e4
LT
932 }, {
933 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
934 .psize = 64,
de224c30
SS
935 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
936 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
937 "\xb5\x86\x44\x50",
1da177e4
LT
938 }, {
939 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
940 .psize = 64,
de224c30
SS
941 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
942 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
943 "\x57\x89\x65\x65",
1da177e4
LT
944 }, {
945 .plaintext = "Tiger - A Fast New Hash Function, "
de224c30
SS
946 "by Ross Anderson and Eli Biham, "
947 "proceedings of Fast Software Encryption 3, "
948 "Cambridge, 1996.",
1da177e4 949 .psize = 125,
de224c30
SS
950 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
951 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
952 "\xdd\x68\x15\x1d",
1da177e4
LT
953 },
954};
955
956#define TGR128_TEST_VECTORS 6
957
958static struct hash_testvec tgr128_tv_template[] = {
959 {
960 .plaintext = "",
961 .psize = 0,
de224c30
SS
962 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
963 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f",
1da177e4
LT
964 }, {
965 .plaintext = "abc",
966 .psize = 3,
de224c30
SS
967 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
968 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf",
1da177e4
LT
969 }, {
970 .plaintext = "Tiger",
971 .psize = 5,
de224c30
SS
972 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
973 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec",
1da177e4
LT
974 }, {
975 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
976 .psize = 64,
de224c30
SS
977 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
978 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e",
1da177e4
LT
979 }, {
980 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
981 .psize = 64,
de224c30
SS
982 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
983 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9",
1da177e4
LT
984 }, {
985 .plaintext = "Tiger - A Fast New Hash Function, "
de224c30
SS
986 "by Ross Anderson and Eli Biham, "
987 "proceedings of Fast Software Encryption 3, "
988 "Cambridge, 1996.",
1da177e4 989 .psize = 125,
de224c30
SS
990 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
991 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24",
1da177e4
LT
992 },
993};
994
1da177e4
LT
995/*
996 * HMAC-MD5 test vectors from RFC2202
997 * (These need to be fixed to not use strlen).
998 */
999#define HMAC_MD5_TEST_VECTORS 7
1000
e9d41164 1001static struct hash_testvec hmac_md5_tv_template[] =
ef2736fc 1002{
1da177e4 1003 {
de224c30 1004 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1da177e4
LT
1005 .ksize = 16,
1006 .plaintext = "Hi There",
1007 .psize = 8,
de224c30
SS
1008 .digest = "\x92\x94\x72\x7a\x36\x38\xbb\x1c"
1009 "\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d",
1da177e4 1010 }, {
de224c30 1011 .key = "Jefe",
1da177e4
LT
1012 .ksize = 4,
1013 .plaintext = "what do ya want for nothing?",
1014 .psize = 28,
de224c30
SS
1015 .digest = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03"
1016 "\xea\xa8\x6e\x31\x0a\x5d\xb7\x38",
1da177e4
LT
1017 .np = 2,
1018 .tap = {14, 14}
1019 }, {
de224c30 1020 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1da177e4 1021 .ksize = 16,
de224c30
SS
1022 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1023 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1024 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1025 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1da177e4 1026 .psize = 50,
de224c30
SS
1027 .digest = "\x56\xbe\x34\x52\x1d\x14\x4c\x88"
1028 "\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6",
1da177e4 1029 }, {
de224c30
SS
1030 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1031 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1032 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1da177e4 1033 .ksize = 25,
de224c30
SS
1034 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1035 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1036 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1037 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1da177e4 1038 .psize = 50,
de224c30
SS
1039 .digest = "\x69\x7e\xaf\x0a\xca\x3a\x3a\xea"
1040 "\x3a\x75\x16\x47\x46\xff\xaa\x79",
1da177e4 1041 }, {
de224c30 1042 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1da177e4
LT
1043 .ksize = 16,
1044 .plaintext = "Test With Truncation",
1045 .psize = 20,
de224c30
SS
1046 .digest = "\x56\x46\x1e\xf2\x34\x2e\xdc\x00"
1047 "\xf9\xba\xb9\x95\x69\x0e\xfd\x4c",
1048 }, {
1049 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1050 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1051 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1052 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1053 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1054 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1055 "\xaa\xaa",
1da177e4
LT
1056 .ksize = 80,
1057 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1058 .psize = 54,
de224c30
SS
1059 .digest = "\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f"
1060 "\x0b\x62\xe6\xce\x61\xb9\xd0\xcd",
1061 }, {
1062 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1063 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1064 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1065 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1066 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1067 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1068 "\xaa\xaa",
1da177e4
LT
1069 .ksize = 80,
1070 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
de224c30 1071 "Block-Size Data",
1da177e4 1072 .psize = 73,
de224c30
SS
1073 .digest = "\x6f\x63\x0f\xad\x67\xcd\xa0\xee"
1074 "\x1f\xb1\xf5\x62\xdb\x3a\xa5\x3e",
1da177e4
LT
1075 },
1076};
1077
fd4adf1a
AKR
1078/*
1079 * HMAC-RIPEMD128 test vectors from RFC2286
1080 */
1081#define HMAC_RMD128_TEST_VECTORS 7
1082
1083static struct hash_testvec hmac_rmd128_tv_template[] = {
1084 {
1085 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1086 .ksize = 16,
1087 .plaintext = "Hi There",
1088 .psize = 8,
1089 .digest = "\xfb\xf6\x1f\x94\x92\xaa\x4b\xbf"
1090 "\x81\xc1\x72\xe8\x4e\x07\x34\xdb",
1091 }, {
1092 .key = "Jefe",
1093 .ksize = 4,
1094 .plaintext = "what do ya want for nothing?",
1095 .psize = 28,
1096 .digest = "\x87\x5f\x82\x88\x62\xb6\xb3\x34"
1097 "\xb4\x27\xc5\x5f\x9f\x7f\xf0\x9b",
1098 .np = 2,
1099 .tap = { 14, 14 },
1100 }, {
1101 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1102 .ksize = 16,
1103 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1104 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1105 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1106 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1107 .psize = 50,
1108 .digest = "\x09\xf0\xb2\x84\x6d\x2f\x54\x3d"
1109 "\xa3\x63\xcb\xec\x8d\x62\xa3\x8d",
1110 }, {
1111 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1112 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1113 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1114 .ksize = 25,
1115 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1116 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1117 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1118 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1119 .psize = 50,
1120 .digest = "\xbd\xbb\xd7\xcf\x03\xe4\x4b\x5a"
1121 "\xa6\x0a\xf8\x15\xbe\x4d\x22\x94",
1122 }, {
1123 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1124 .ksize = 16,
1125 .plaintext = "Test With Truncation",
1126 .psize = 20,
1127 .digest = "\xe7\x98\x08\xf2\x4b\x25\xfd\x03"
1128 "\x1c\x15\x5f\x0d\x55\x1d\x9a\x3a",
1129 }, {
1130 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1131 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1132 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1133 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1134 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1135 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1136 "\xaa\xaa",
1137 .ksize = 80,
1138 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1139 .psize = 54,
1140 .digest = "\xdc\x73\x29\x28\xde\x98\x10\x4a"
1141 "\x1f\x59\xd3\x73\xc1\x50\xac\xbb",
1142 }, {
1143 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1144 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1145 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1146 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1147 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1148 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1149 "\xaa\xaa",
1150 .ksize = 80,
1151 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
1152 "Block-Size Data",
1153 .psize = 73,
1154 .digest = "\x5c\x6b\xec\x96\x79\x3e\x16\xd4"
1155 "\x06\x90\xc2\x37\x63\x5f\x30\xc5",
1156 },
1157};
1158
1159/*
1160 * HMAC-RIPEMD160 test vectors from RFC2286
1161 */
1162#define HMAC_RMD160_TEST_VECTORS 7
1163
1164static struct hash_testvec hmac_rmd160_tv_template[] = {
1165 {
1166 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1167 .ksize = 20,
1168 .plaintext = "Hi There",
1169 .psize = 8,
1170 .digest = "\x24\xcb\x4b\xd6\x7d\x20\xfc\x1a\x5d\x2e"
1171 "\xd7\x73\x2d\xcc\x39\x37\x7f\x0a\x56\x68",
1172 }, {
1173 .key = "Jefe",
1174 .ksize = 4,
1175 .plaintext = "what do ya want for nothing?",
1176 .psize = 28,
1177 .digest = "\xdd\xa6\xc0\x21\x3a\x48\x5a\x9e\x24\xf4"
1178 "\x74\x20\x64\xa7\xf0\x33\xb4\x3c\x40\x69",
1179 .np = 2,
1180 .tap = { 14, 14 },
1181 }, {
1182 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1183 .ksize = 20,
1184 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1185 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1186 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1187 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1188 .psize = 50,
1189 .digest = "\xb0\xb1\x05\x36\x0d\xe7\x59\x96\x0a\xb4"
1190 "\xf3\x52\x98\xe1\x16\xe2\x95\xd8\xe7\xc1",
1191 }, {
1192 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1193 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1194 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1195 .ksize = 25,
1196 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1197 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1198 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1199 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1200 .psize = 50,
1201 .digest = "\xd5\xca\x86\x2f\x4d\x21\xd5\xe6\x10\xe1"
1202 "\x8b\x4c\xf1\xbe\xb9\x7a\x43\x65\xec\xf4",
1203 }, {
1204 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1205 .ksize = 20,
1206 .plaintext = "Test With Truncation",
1207 .psize = 20,
1208 .digest = "\x76\x19\x69\x39\x78\xf9\x1d\x90\x53\x9a"
1209 "\xe7\x86\x50\x0f\xf3\xd8\xe0\x51\x8e\x39",
1210 }, {
1211 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1212 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1213 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1214 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1215 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1216 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1217 "\xaa\xaa",
1218 .ksize = 80,
1219 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1220 .psize = 54,
1221 .digest = "\x64\x66\xca\x07\xac\x5e\xac\x29\xe1\xbd"
1222 "\x52\x3e\x5a\xda\x76\x05\xb7\x91\xfd\x8b",
1223 }, {
1224 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1225 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1226 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1227 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1228 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1229 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1230 "\xaa\xaa",
1231 .ksize = 80,
1232 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
1233 "Block-Size Data",
1234 .psize = 73,
1235 .digest = "\x69\xea\x60\x79\x8d\x71\x61\x6c\xce\x5f"
1236 "\xd0\x87\x1e\x23\x75\x4c\xd7\x5d\x5a\x0a",
1237 },
1238};
1239
1da177e4
LT
1240/*
1241 * HMAC-SHA1 test vectors from RFC2202
1242 */
1243#define HMAC_SHA1_TEST_VECTORS 7
1244
e9d41164 1245static struct hash_testvec hmac_sha1_tv_template[] = {
1da177e4 1246 {
de224c30 1247 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1da177e4
LT
1248 .ksize = 20,
1249 .plaintext = "Hi There",
1250 .psize = 8,
de224c30
SS
1251 .digest = "\xb6\x17\x31\x86\x55\x05\x72\x64"
1252 "\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1"
1253 "\x46\xbe",
1da177e4 1254 }, {
de224c30 1255 .key = "Jefe",
1da177e4
LT
1256 .ksize = 4,
1257 .plaintext = "what do ya want for nothing?",
1258 .psize = 28,
de224c30
SS
1259 .digest = "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74"
1260 "\x16\xd5\xf1\x84\xdf\x9c\x25\x9a\x7c\x79",
1da177e4
LT
1261 .np = 2,
1262 .tap = { 14, 14 }
1263 }, {
de224c30 1264 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1da177e4 1265 .ksize = 20,
de224c30
SS
1266 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1267 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1268 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1269 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1da177e4 1270 .psize = 50,
de224c30
SS
1271 .digest = "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3"
1272 "\x9a\xf4\x8a\xa1\x7b\x4f\x63\xf1\x75\xd3",
1da177e4 1273 }, {
de224c30
SS
1274 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1275 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1276 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1da177e4 1277 .ksize = 25,
de224c30
SS
1278 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1279 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1280 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1281 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1da177e4 1282 .psize = 50,
de224c30
SS
1283 .digest = "\x4c\x90\x07\xf4\x02\x62\x50\xc6\xbc\x84"
1284 "\x14\xf9\xbf\x50\xc8\x6c\x2d\x72\x35\xda",
1da177e4 1285 }, {
de224c30 1286 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1da177e4
LT
1287 .ksize = 20,
1288 .plaintext = "Test With Truncation",
1289 .psize = 20,
de224c30
SS
1290 .digest = "\x4c\x1a\x03\x42\x4b\x55\xe0\x7f\xe7\xf2"
1291 "\x7b\xe1\xd5\x8b\xb9\x32\x4a\x9a\x5a\x04",
1292 }, {
1293 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1294 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1295 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1296 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1297 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1298 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1299 "\xaa\xaa",
1da177e4
LT
1300 .ksize = 80,
1301 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1302 .psize = 54,
de224c30
SS
1303 .digest = "\xaa\x4a\xe5\xe1\x52\x72\xd0\x0e\x95\x70"
1304 "\x56\x37\xce\x8a\x3b\x55\xed\x40\x21\x12",
1305 }, {
1306 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1307 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1308 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1309 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1310 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1311 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1312 "\xaa\xaa",
1da177e4
LT
1313 .ksize = 80,
1314 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
de224c30 1315 "Block-Size Data",
1da177e4 1316 .psize = 73,
de224c30
SS
1317 .digest = "\xe8\xe9\x9d\x0f\x45\x23\x7d\x78\x6d\x6b"
1318 "\xba\xa7\x96\x5c\x78\x08\xbb\xff\x1a\x91",
1da177e4
LT
1319 },
1320};
1321
cd12fb90
JL
1322
1323/*
1324 * SHA224 HMAC test vectors from RFC4231
1325 */
1326#define HMAC_SHA224_TEST_VECTORS 4
1327
1328static struct hash_testvec hmac_sha224_tv_template[] = {
1329 {
de224c30
SS
1330 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1331 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1332 "\x0b\x0b\x0b\x0b",
cd12fb90
JL
1333 .ksize = 20,
1334 /* ("Hi There") */
de224c30 1335 .plaintext = "\x48\x69\x20\x54\x68\x65\x72\x65",
cd12fb90 1336 .psize = 8,
de224c30
SS
1337 .digest = "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19"
1338 "\x68\x32\x10\x7c\xd4\x9d\xf3\x3f"
1339 "\x47\xb4\xb1\x16\x99\x12\xba\x4f"
1340 "\x53\x68\x4b\x22",
cd12fb90 1341 }, {
de224c30 1342 .key = "Jefe",
cd12fb90
JL
1343 .ksize = 4,
1344 /* ("what do ya want for nothing?") */
de224c30
SS
1345 .plaintext = "\x77\x68\x61\x74\x20\x64\x6f\x20"
1346 "\x79\x61\x20\x77\x61\x6e\x74\x20"
1347 "\x66\x6f\x72\x20\x6e\x6f\x74\x68"
1348 "\x69\x6e\x67\x3f",
cd12fb90 1349 .psize = 28,
de224c30
SS
1350 .digest = "\xa3\x0e\x01\x09\x8b\xc6\xdb\xbf"
1351 "\x45\x69\x0f\x3a\x7e\x9e\x6d\x0f"
1352 "\x8b\xbe\xa2\xa3\x9e\x61\x48\x00"
1353 "\x8f\xd0\x5e\x44",
cd12fb90
JL
1354 .np = 4,
1355 .tap = { 7, 7, 7, 7 }
1356 }, {
de224c30
SS
1357 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1358 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1359 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1360 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1361 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1362 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1363 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1364 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1365 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1366 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1367 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1368 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1369 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1370 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1371 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1372 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1373 "\xaa\xaa\xaa",
cd12fb90
JL
1374 .ksize = 131,
1375 /* ("Test Using Larger Than Block-Size Key - Hash Key First") */
de224c30
SS
1376 .plaintext = "\x54\x65\x73\x74\x20\x55\x73\x69"
1377 "\x6e\x67\x20\x4c\x61\x72\x67\x65"
1378 "\x72\x20\x54\x68\x61\x6e\x20\x42"
1379 "\x6c\x6f\x63\x6b\x2d\x53\x69\x7a"
1380 "\x65\x20\x4b\x65\x79\x20\x2d\x20"
1381 "\x48\x61\x73\x68\x20\x4b\x65\x79"
1382 "\x20\x46\x69\x72\x73\x74",
cd12fb90 1383 .psize = 54,
de224c30
SS
1384 .digest = "\x95\xe9\xa0\xdb\x96\x20\x95\xad"
1385 "\xae\xbe\x9b\x2d\x6f\x0d\xbc\xe2"
1386 "\xd4\x99\xf1\x12\xf2\xd2\xb7\x27"
1387 "\x3f\xa6\x87\x0e",
1388 }, {
1389 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1390 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1391 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1392 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1393 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1394 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1395 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1396 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1397 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1398 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1399 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1400 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1401 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1402 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1403 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1404 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1405 "\xaa\xaa\xaa",
cd12fb90
JL
1406 .ksize = 131,
1407 /* ("This is a test using a larger than block-size key and a")
1408 (" larger than block-size data. The key needs to be")
1409 (" hashed before being used by the HMAC algorithm.") */
de224c30
SS
1410 .plaintext = "\x54\x68\x69\x73\x20\x69\x73\x20"
1411 "\x61\x20\x74\x65\x73\x74\x20\x75"
1412 "\x73\x69\x6e\x67\x20\x61\x20\x6c"
1413 "\x61\x72\x67\x65\x72\x20\x74\x68"
1414 "\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
1415 "\x2d\x73\x69\x7a\x65\x20\x6b\x65"
1416 "\x79\x20\x61\x6e\x64\x20\x61\x20"
1417 "\x6c\x61\x72\x67\x65\x72\x20\x74"
1418 "\x68\x61\x6e\x20\x62\x6c\x6f\x63"
1419 "\x6b\x2d\x73\x69\x7a\x65\x20\x64"
1420 "\x61\x74\x61\x2e\x20\x54\x68\x65"
1421 "\x20\x6b\x65\x79\x20\x6e\x65\x65"
1422 "\x64\x73\x20\x74\x6f\x20\x62\x65"
1423 "\x20\x68\x61\x73\x68\x65\x64\x20"
1424 "\x62\x65\x66\x6f\x72\x65\x20\x62"
1425 "\x65\x69\x6e\x67\x20\x75\x73\x65"
1426 "\x64\x20\x62\x79\x20\x74\x68\x65"
1427 "\x20\x48\x4d\x41\x43\x20\x61\x6c"
1428 "\x67\x6f\x72\x69\x74\x68\x6d\x2e",
cd12fb90 1429 .psize = 152,
de224c30
SS
1430 .digest = "\x3a\x85\x41\x66\xac\x5d\x9f\x02"
1431 "\x3f\x54\xd5\x17\xd0\xb3\x9d\xbd"
1432 "\x94\x67\x70\xdb\x9c\x2b\x95\xc9"
1433 "\xf6\xf5\x65\xd1",
cd12fb90
JL
1434 },
1435};
1436
1da177e4
LT
1437/*
1438 * HMAC-SHA256 test vectors from
1439 * draft-ietf-ipsec-ciph-sha-256-01.txt
1440 */
1441#define HMAC_SHA256_TEST_VECTORS 10
1442
e9d41164 1443static struct hash_testvec hmac_sha256_tv_template[] = {
1da177e4 1444 {
de224c30
SS
1445 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1446 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1447 "\x11\x12\x13\x14\x15\x16\x17\x18"
1448 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
1da177e4
LT
1449 .ksize = 32,
1450 .plaintext = "abc",
1451 .psize = 3,
de224c30
SS
1452 .digest = "\xa2\x1b\x1f\x5d\x4c\xf4\xf7\x3a"
1453 "\x4d\xd9\x39\x75\x0f\x7a\x06\x6a"
1454 "\x7f\x98\xcc\x13\x1c\xb1\x6a\x66"
1455 "\x92\x75\x90\x21\xcf\xab\x81\x81",
1456 }, {
1457 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1458 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1459 "\x11\x12\x13\x14\x15\x16\x17\x18"
1460 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
1da177e4
LT
1461 .ksize = 32,
1462 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1463 .psize = 56,
de224c30
SS
1464 .digest = "\x10\x4f\xdc\x12\x57\x32\x8f\x08"
1465 "\x18\x4b\xa7\x31\x31\xc5\x3c\xae"
1466 "\xe6\x98\xe3\x61\x19\x42\x11\x49"
1467 "\xea\x8c\x71\x24\x56\x69\x7d\x30",
1468 }, {
1469 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1470 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1471 "\x11\x12\x13\x14\x15\x16\x17\x18"
1472 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
1da177e4
LT
1473 .ksize = 32,
1474 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
de224c30 1475 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1da177e4 1476 .psize = 112,
de224c30
SS
1477 .digest = "\x47\x03\x05\xfc\x7e\x40\xfe\x34"
1478 "\xd3\xee\xb3\xe7\x73\xd9\x5a\xab"
1479 "\x73\xac\xf0\xfd\x06\x04\x47\xa5"
1480 "\xeb\x45\x95\xbf\x33\xa9\xd1\xa3",
1481 }, {
1482 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1483 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1484 "\x0b\x0b\x0b\x0b\x0b\x0b",
1da177e4
LT
1485 .ksize = 32,
1486 .plaintext = "Hi There",
1487 .psize = 8,
de224c30
SS
1488 .digest = "\x19\x8a\x60\x7e\xb4\x4b\xfb\xc6"
1489 "\x99\x03\xa0\xf1\xcf\x2b\xbd\xc5"
1490 "\xba\x0a\xa3\xf3\xd9\xae\x3c\x1c"
1491 "\x7a\x3b\x16\x96\xa0\xb6\x8c\xf7",
1da177e4
LT
1492 }, {
1493 .key = "Jefe",
1494 .ksize = 4,
1495 .plaintext = "what do ya want for nothing?",
1496 .psize = 28,
de224c30
SS
1497 .digest = "\x5b\xdc\xc1\x46\xbf\x60\x75\x4e"
1498 "\x6a\x04\x24\x26\x08\x95\x75\xc7"
1499 "\x5a\x00\x3f\x08\x9d\x27\x39\x83"
1500 "\x9d\xec\x58\xb9\x64\xec\x38\x43",
1da177e4
LT
1501 .np = 2,
1502 .tap = { 14, 14 }
1503 }, {
de224c30
SS
1504 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1505 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1506 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1da177e4 1507 .ksize = 32,
de224c30
SS
1508 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1509 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1510 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1511 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1da177e4 1512 .psize = 50,
de224c30
SS
1513 .digest = "\xcd\xcb\x12\x20\xd1\xec\xcc\xea"
1514 "\x91\xe5\x3a\xba\x30\x92\xf9\x62"
1515 "\xe5\x49\xfe\x6c\xe9\xed\x7f\xdc"
1516 "\x43\x19\x1f\xbd\xe4\x5c\x30\xb0",
1517 }, {
1518 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1519 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1520 "\x11\x12\x13\x14\x15\x16\x17\x18"
1521 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
1522 "\x21\x22\x23\x24\x25",
1da177e4 1523 .ksize = 37,
de224c30
SS
1524 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1525 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1526 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1527 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1da177e4 1528 .psize = 50,
de224c30
SS
1529 .digest = "\xd4\x63\x3c\x17\xf6\xfb\x8d\x74"
1530 "\x4c\x66\xde\xe0\xf8\xf0\x74\x55"
1531 "\x6e\xc4\xaf\x55\xef\x07\x99\x85"
1532 "\x41\x46\x8e\xb4\x9b\xd2\xe9\x17",
1533 }, {
1534 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1535 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1536 "\x0c\x0c\x0c\x0c\x0c\x0c",
1da177e4
LT
1537 .ksize = 32,
1538 .plaintext = "Test With Truncation",
1539 .psize = 20,
de224c30
SS
1540 .digest = "\x75\x46\xaf\x01\x84\x1f\xc0\x9b"
1541 "\x1a\xb9\xc3\x74\x9a\x5f\x1c\x17"
1542 "\xd4\xf5\x89\x66\x8a\x58\x7b\x27"
1543 "\x00\xa9\xc9\x7c\x11\x93\xcf\x42",
1544 }, {
1545 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1546 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1547 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1548 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1549 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1550 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1551 "\xaa\xaa",
1da177e4
LT
1552 .ksize = 80,
1553 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1554 .psize = 54,
de224c30
SS
1555 .digest = "\x69\x53\x02\x5e\xd9\x6f\x0c\x09"
1556 "\xf8\x0a\x96\xf7\x8e\x65\x38\xdb"
1557 "\xe2\xe7\xb8\x20\xe3\xdd\x97\x0e"
1558 "\x7d\xdd\x39\x09\x1b\x32\x35\x2f",
1559 }, {
1560 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1561 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1562 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1563 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1564 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1565 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1566 "\xaa\xaa",
1da177e4
LT
1567 .ksize = 80,
1568 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than "
de224c30 1569 "One Block-Size Data",
1da177e4 1570 .psize = 73,
de224c30
SS
1571 .digest = "\x63\x55\xac\x22\xe8\x90\xd0\xa3"
1572 "\xc8\x48\x1a\x5c\xa4\x82\x5b\xc8"
1573 "\x84\xd3\xe7\xa1\xff\x98\xa2\xfc"
1574 "\x2a\xc7\xd8\xe0\x64\xc3\xb2\xe6",
1da177e4
LT
1575 },
1576};
1577
5b2becf5
KM
1578#define XCBC_AES_TEST_VECTORS 6
1579
1580static struct hash_testvec aes_xcbc128_tv_template[] = {
1581 {
de224c30
SS
1582 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1583 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1584 .plaintext = zeroed_string,
1585 .digest = "\x75\xf0\x25\x1d\x52\x8a\xc0\x1c"
1586 "\x45\x73\xdf\xd5\x84\xd7\x9f\x29",
5b2becf5
KM
1587 .psize = 0,
1588 .ksize = 16,
1589 }, {
de224c30
SS
1590 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1591 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1592 .plaintext = "\x00\x01\x02",
1593 .digest = "\x5b\x37\x65\x80\xae\x2f\x19\xaf"
1594 "\xe7\x21\x9c\xee\xf1\x72\x75\x6f",
5b2becf5
KM
1595 .psize = 3,
1596 .ksize = 16,
1597 } , {
de224c30
SS
1598 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1599 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1600 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1601 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1602 .digest = "\xd2\xa2\x46\xfa\x34\x9b\x68\xa7"
1603 "\x99\x98\xa4\x39\x4f\xf7\xa2\x63",
5b2becf5
KM
1604 .psize = 16,
1605 .ksize = 16,
1606 }, {
de224c30
SS
1607 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1608 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1609 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1610 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1611 "\x10\x11\x12\x13",
1612 .digest = "\x47\xf5\x1b\x45\x64\x96\x62\x15"
1613 "\xb8\x98\x5c\x63\x05\x5e\xd3\x08",
5b2becf5
KM
1614 .tap = { 10, 10 },
1615 .psize = 20,
1616 .np = 2,
1617 .ksize = 16,
1618 }, {
de224c30
SS
1619 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1620 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1621 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1622 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1623 "\x10\x11\x12\x13\x14\x15\x16\x17"
1624 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1625 .digest = "\xf5\x4f\x0e\xc8\xd2\xb9\xf3\xd3"
1626 "\x68\x07\x73\x4b\xd5\x28\x3f\xd4",
5b2becf5
KM
1627 .psize = 32,
1628 .ksize = 16,
1629 }, {
de224c30
SS
1630 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1631 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1632 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1633 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1634 "\x10\x11\x12\x13\x14\x15\x16\x17"
1635 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
1636 "\x20\x21",
1637 .digest = "\xbe\xcb\xb3\xbc\xcd\xb5\x18\xa3"
1638 "\x06\x77\xd5\x48\x1f\xb6\xb4\xd8",
5b2becf5
KM
1639 .tap = { 17, 17 },
1640 .psize = 34,
1641 .np = 2,
1642 .ksize = 16,
1643 }
1644};
1645
a28091ae
AD
1646/*
1647 * SHA384 HMAC test vectors from RFC4231
1648 */
1649
1650#define HMAC_SHA384_TEST_VECTORS 4
1651
1652static struct hash_testvec hmac_sha384_tv_template[] = {
1653 {
de224c30
SS
1654 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1655 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1656 "\x0b\x0b\x0b\x0b",
a28091ae 1657 .ksize = 20,
de224c30 1658 .plaintext = "Hi There",
a28091ae 1659 .psize = 8,
de224c30
SS
1660 .digest = "\xaf\xd0\x39\x44\xd8\x48\x95\x62"
1661 "\x6b\x08\x25\xf4\xab\x46\x90\x7f"
1662 "\x15\xf9\xda\xdb\xe4\x10\x1e\xc6"
1663 "\x82\xaa\x03\x4c\x7c\xeb\xc5\x9c"
1664 "\xfa\xea\x9e\xa9\x07\x6e\xde\x7f"
1665 "\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6",
1666 }, {
1667 .key = "Jefe",
a28091ae 1668 .ksize = 4,
de224c30 1669 .plaintext = "what do ya want for nothing?",
a28091ae 1670 .psize = 28,
de224c30
SS
1671 .digest = "\xaf\x45\xd2\xe3\x76\x48\x40\x31"
1672 "\x61\x7f\x78\xd2\xb5\x8a\x6b\x1b"
1673 "\x9c\x7e\xf4\x64\xf5\xa0\x1b\x47"
1674 "\xe4\x2e\xc3\x73\x63\x22\x44\x5e"
1675 "\x8e\x22\x40\xca\x5e\x69\xe2\xc7"
1676 "\x8b\x32\x39\xec\xfa\xb2\x16\x49",
a28091ae
AD
1677 .np = 4,
1678 .tap = { 7, 7, 7, 7 }
1679 }, {
de224c30
SS
1680 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1681 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1682 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1683 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1684 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1685 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1686 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1687 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1688 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1689 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1690 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1691 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1692 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1693 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1694 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1695 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1696 "\xaa\xaa\xaa",
a28091ae 1697 .ksize = 131,
de224c30
SS
1698 .plaintext = "Test Using Larger Than Block-Siz"
1699 "e Key - Hash Key First",
a28091ae 1700 .psize = 54,
de224c30
SS
1701 .digest = "\x4e\xce\x08\x44\x85\x81\x3e\x90"
1702 "\x88\xd2\xc6\x3a\x04\x1b\xc5\xb4"
1703 "\x4f\x9e\xf1\x01\x2a\x2b\x58\x8f"
1704 "\x3c\xd1\x1f\x05\x03\x3a\xc4\xc6"
1705 "\x0c\x2e\xf6\xab\x40\x30\xfe\x82"
1706 "\x96\x24\x8d\xf1\x63\xf4\x49\x52",
1707 }, {
1708 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1709 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1710 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1711 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1712 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1713 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1714 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1715 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1716 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1717 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1718 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1719 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1720 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1721 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1722 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1723 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1724 "\xaa\xaa\xaa",
a28091ae 1725 .ksize = 131,
de224c30
SS
1726 .plaintext = "This is a test u"
1727 "sing a larger th"
1728 "an block-size ke"
1729 "y and a larger t"
1730 "han block-size d"
1731 "ata. The key nee"
1732 "ds to be hashed "
1733 "before being use"
1734 "d by the HMAC al"
1735 "gorithm.",
a28091ae 1736 .psize = 152,
de224c30
SS
1737 .digest = "\x66\x17\x17\x8e\x94\x1f\x02\x0d"
1738 "\x35\x1e\x2f\x25\x4e\x8f\xd3\x2c"
1739 "\x60\x24\x20\xfe\xb0\xb8\xfb\x9a"
1740 "\xdc\xce\xbb\x82\x46\x1e\x99\xc5"
1741 "\xa6\x78\xcc\x31\xe7\x99\x17\x6d"
1742 "\x38\x60\xe6\x11\x0c\x46\x52\x3e",
a28091ae
AD
1743 },
1744};
1745
1746/*
1747 * SHA512 HMAC test vectors from RFC4231
1748 */
1749
1750#define HMAC_SHA512_TEST_VECTORS 4
1751
1752static struct hash_testvec hmac_sha512_tv_template[] = {
1753 {
de224c30
SS
1754 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1755 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1756 "\x0b\x0b\x0b\x0b",
a28091ae 1757 .ksize = 20,
de224c30 1758 .plaintext = "Hi There",
a28091ae 1759 .psize = 8,
de224c30
SS
1760 .digest = "\x87\xaa\x7c\xde\xa5\xef\x61\x9d"
1761 "\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0"
1762 "\x23\x79\xf4\xe2\xce\x4e\xc2\x78"
1763 "\x7a\xd0\xb3\x05\x45\xe1\x7c\xde"
1764 "\xda\xa8\x33\xb7\xd6\xb8\xa7\x02"
1765 "\x03\x8b\x27\x4e\xae\xa3\xf4\xe4"
1766 "\xbe\x9d\x91\x4e\xeb\x61\xf1\x70"
1767 "\x2e\x69\x6c\x20\x3a\x12\x68\x54",
1768 }, {
1769 .key = "Jefe",
a28091ae 1770 .ksize = 4,
de224c30 1771 .plaintext = "what do ya want for nothing?",
a28091ae 1772 .psize = 28,
de224c30
SS
1773 .digest = "\x16\x4b\x7a\x7b\xfc\xf8\x19\xe2"
1774 "\xe3\x95\xfb\xe7\x3b\x56\xe0\xa3"
1775 "\x87\xbd\x64\x22\x2e\x83\x1f\xd6"
1776 "\x10\x27\x0c\xd7\xea\x25\x05\x54"
1777 "\x97\x58\xbf\x75\xc0\x5a\x99\x4a"
1778 "\x6d\x03\x4f\x65\xf8\xf0\xe6\xfd"
1779 "\xca\xea\xb1\xa3\x4d\x4a\x6b\x4b"
1780 "\x63\x6e\x07\x0a\x38\xbc\xe7\x37",
a28091ae
AD
1781 .np = 4,
1782 .tap = { 7, 7, 7, 7 }
1783 }, {
de224c30
SS
1784 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1785 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1786 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1787 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1788 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1789 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1790 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1791 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1792 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1793 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1794 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1795 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1796 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1797 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1798 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1799 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1800 "\xaa\xaa\xaa",
a28091ae 1801 .ksize = 131,
de224c30
SS
1802 .plaintext = "Test Using Large"
1803 "r Than Block-Siz"
1804 "e Key - Hash Key"
1805 " First",
a28091ae 1806 .psize = 54,
de224c30
SS
1807 .digest = "\x80\xb2\x42\x63\xc7\xc1\xa3\xeb"
1808 "\xb7\x14\x93\xc1\xdd\x7b\xe8\xb4"
1809 "\x9b\x46\xd1\xf4\x1b\x4a\xee\xc1"
1810 "\x12\x1b\x01\x37\x83\xf8\xf3\x52"
1811 "\x6b\x56\xd0\x37\xe0\x5f\x25\x98"
1812 "\xbd\x0f\xd2\x21\x5d\x6a\x1e\x52"
1813 "\x95\xe6\x4f\x73\xf6\x3f\x0a\xec"
1814 "\x8b\x91\x5a\x98\x5d\x78\x65\x98",
1815 }, {
1816 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1817 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1818 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1819 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1820 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1821 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1822 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1823 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1824 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1825 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1826 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1827 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1828 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1829 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1830 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1831 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1832 "\xaa\xaa\xaa",
a28091ae 1833 .ksize = 131,
de224c30
SS
1834 .plaintext =
1835 "This is a test u"
1836 "sing a larger th"
1837 "an block-size ke"
1838 "y and a larger t"
1839 "han block-size d"
1840 "ata. The key nee"
1841 "ds to be hashed "
1842 "before being use"
1843 "d by the HMAC al"
1844 "gorithm.",
a28091ae 1845 .psize = 152,
de224c30
SS
1846 .digest = "\xe3\x7b\x6a\x77\x5d\xc8\x7d\xba"
1847 "\xa4\xdf\xa9\xf9\x6e\x5e\x3f\xfd"
1848 "\xde\xbd\x71\xf8\x86\x72\x89\x86"
1849 "\x5d\xf5\xa3\x2d\x20\xcd\xc9\x44"
1850 "\xb6\x02\x2c\xac\x3c\x49\x82\xb1"
1851 "\x0d\x5e\xeb\x55\xc3\xe4\xde\x15"
1852 "\x13\x46\x76\xfb\x6d\xe0\x44\x60"
1853 "\x65\xc9\x74\x40\xfa\x8c\x6a\x58",
a28091ae
AD
1854 },
1855};
1856
1da177e4
LT
1857/*
1858 * DES test vectors.
1859 */
1860#define DES_ENC_TEST_VECTORS 10
1861#define DES_DEC_TEST_VECTORS 4
1862#define DES_CBC_ENC_TEST_VECTORS 5
1863#define DES_CBC_DEC_TEST_VECTORS 4
1864#define DES3_EDE_ENC_TEST_VECTORS 3
1865#define DES3_EDE_DEC_TEST_VECTORS 3
d729de23
NH
1866#define DES3_EDE_CBC_ENC_TEST_VECTORS 1
1867#define DES3_EDE_CBC_DEC_TEST_VECTORS 1
1da177e4
LT
1868
1869static struct cipher_testvec des_enc_tv_template[] = {
1870 { /* From Applied Cryptography */
de224c30 1871 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1872 .klen = 8,
de224c30 1873 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4 1874 .ilen = 8,
de224c30 1875 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4
LT
1876 .rlen = 8,
1877 }, { /* Same key, different plaintext block */
de224c30 1878 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1879 .klen = 8,
de224c30 1880 .input = "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1881 .ilen = 8,
de224c30 1882 .result = "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1883 .rlen = 8,
1884 }, { /* Sbox test from NBS */
de224c30 1885 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
1da177e4 1886 .klen = 8,
de224c30 1887 .input = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
1da177e4 1888 .ilen = 8,
de224c30 1889 .result = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4
LT
1890 .rlen = 8,
1891 }, { /* Three blocks */
de224c30 1892 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1893 .klen = 8,
de224c30
SS
1894 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1895 "\x22\x33\x44\x55\x66\x77\x88\x99"
1896 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
1da177e4 1897 .ilen = 24,
de224c30
SS
1898 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1899 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1900 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
1da177e4
LT
1901 .rlen = 24,
1902 }, { /* Weak key */
1903 .fail = 1,
1904 .wk = 1,
de224c30 1905 .key = "\x01\x01\x01\x01\x01\x01\x01\x01",
1da177e4 1906 .klen = 8,
de224c30 1907 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4 1908 .ilen = 8,
de224c30 1909 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4
LT
1910 .rlen = 8,
1911 }, { /* Two blocks -- for testing encryption across pages */
de224c30 1912 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1913 .klen = 8,
de224c30
SS
1914 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1915 "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1916 .ilen = 16,
de224c30
SS
1917 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1918 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1919 .rlen = 16,
1920 .np = 2,
1921 .tap = { 8, 8 }
1922 }, { /* Four blocks -- for testing encryption with chunking */
de224c30 1923 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1924 .klen = 8,
de224c30
SS
1925 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1926 "\x22\x33\x44\x55\x66\x77\x88\x99"
1927 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef"
1928 "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1929 .ilen = 32,
de224c30
SS
1930 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1931 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1932 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90"
1933 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1934 .rlen = 32,
1935 .np = 3,
ef2736fc 1936 .tap = { 14, 10, 8 }
1da177e4 1937 }, {
de224c30 1938 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1939 .klen = 8,
de224c30
SS
1940 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1941 "\x22\x33\x44\x55\x66\x77\x88\x99"
1942 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
1da177e4 1943 .ilen = 24,
de224c30
SS
1944 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1945 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1946 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
1da177e4
LT
1947 .rlen = 24,
1948 .np = 4,
ef2736fc 1949 .tap = { 2, 1, 3, 18 }
1da177e4 1950 }, {
de224c30 1951 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1952 .klen = 8,
de224c30
SS
1953 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1954 "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1955 .ilen = 16,
de224c30
SS
1956 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1957 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1958 .rlen = 16,
1959 .np = 5,
ef2736fc 1960 .tap = { 2, 2, 2, 2, 8 }
1da177e4 1961 }, {
de224c30 1962 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1963 .klen = 8,
de224c30 1964 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4 1965 .ilen = 8,
de224c30 1966 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4
LT
1967 .rlen = 8,
1968 .np = 8,
ef2736fc 1969 .tap = { 1, 1, 1, 1, 1, 1, 1, 1 }
1da177e4
LT
1970 },
1971};
1972
1973static struct cipher_testvec des_dec_tv_template[] = {
1974 { /* From Applied Cryptography */
de224c30 1975 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1976 .klen = 8,
de224c30 1977 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4 1978 .ilen = 8,
de224c30 1979 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4
LT
1980 .rlen = 8,
1981 }, { /* Sbox test from NBS */
de224c30 1982 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
1da177e4 1983 .klen = 8,
de224c30 1984 .input = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4 1985 .ilen = 8,
de224c30 1986 .result = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
1da177e4
LT
1987 .rlen = 8,
1988 }, { /* Two blocks, for chunking test */
de224c30 1989 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1990 .klen = 8,
de224c30
SS
1991 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1992 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4 1993 .ilen = 16,
de224c30
SS
1994 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1995 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
1da177e4
LT
1996 .rlen = 16,
1997 .np = 2,
1998 .tap = { 8, 8 }
1999 }, {
de224c30 2000 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2001 .klen = 8,
de224c30
SS
2002 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
2003 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4 2004 .ilen = 16,
de224c30
SS
2005 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
2006 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
1da177e4
LT
2007 .rlen = 16,
2008 .np = 3,
2009 .tap = { 3, 12, 1 }
2010 },
2011};
2012
2013static struct cipher_testvec des_cbc_enc_tv_template[] = {
2014 { /* From OpenSSL */
de224c30 2015 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2016 .klen = 8,
de224c30
SS
2017 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2018 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
2019 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2020 "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4 2021 .ilen = 24,
de224c30
SS
2022 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
2023 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
2024 "\x46\x8e\x91\x15\x78\x88\xba\x68",
1da177e4
LT
2025 .rlen = 24,
2026 }, { /* FIPS Pub 81 */
de224c30 2027 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2028 .klen = 8,
de224c30
SS
2029 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
2030 .input = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
1da177e4 2031 .ilen = 8,
de224c30 2032 .result = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1da177e4
LT
2033 .rlen = 8,
2034 }, {
de224c30 2035 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2036 .klen = 8,
de224c30
SS
2037 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
2038 .input = "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4 2039 .ilen = 8,
de224c30 2040 .result = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1da177e4 2041 .rlen = 8,
ef2736fc 2042 }, {
de224c30 2043 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2044 .klen = 8,
de224c30
SS
2045 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
2046 .input = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1da177e4 2047 .ilen = 8,
de224c30 2048 .result = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1da177e4 2049 .rlen = 8,
ef2736fc 2050 }, { /* Copy of openssl vector for chunk testing */
1da177e4 2051 /* From OpenSSL */
de224c30 2052 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2053 .klen = 8,
de224c30
SS
2054 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2055 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
2056 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2057 "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4 2058 .ilen = 24,
de224c30
SS
2059 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
2060 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
2061 "\x46\x8e\x91\x15\x78\x88\xba\x68",
1da177e4
LT
2062 .rlen = 24,
2063 .np = 2,
2064 .tap = { 13, 11 }
2065 },
2066};
2067
2068static struct cipher_testvec des_cbc_dec_tv_template[] = {
2069 { /* FIPS Pub 81 */
de224c30 2070 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2071 .klen = 8,
de224c30
SS
2072 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
2073 .input = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1da177e4 2074 .ilen = 8,
de224c30 2075 .result = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
1da177e4
LT
2076 .rlen = 8,
2077 }, {
de224c30 2078 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2079 .klen = 8,
de224c30
SS
2080 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
2081 .input = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1da177e4 2082 .ilen = 8,
de224c30 2083 .result = "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4
LT
2084 .rlen = 8,
2085 }, {
de224c30 2086 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2087 .klen = 8,
de224c30
SS
2088 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
2089 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1da177e4 2090 .ilen = 8,
de224c30 2091 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1da177e4 2092 .rlen = 8,
ef2736fc 2093 }, { /* Copy of above, for chunk testing */
de224c30 2094 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2095 .klen = 8,
de224c30
SS
2096 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
2097 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1da177e4 2098 .ilen = 8,
de224c30 2099 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1da177e4
LT
2100 .rlen = 8,
2101 .np = 2,
2102 .tap = { 4, 4 }
2103 },
2104};
2105
1da177e4
LT
2106static struct cipher_testvec des3_ede_enc_tv_template[] = {
2107 { /* These are from openssl */
de224c30
SS
2108 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2109 "\x55\x55\x55\x55\x55\x55\x55\x55"
2110 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2111 .klen = 24,
de224c30 2112 .input = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
1da177e4 2113 .ilen = 8,
de224c30 2114 .result = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
1da177e4
LT
2115 .rlen = 8,
2116 }, {
de224c30
SS
2117 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
2118 "\x86\x02\x87\x66\x59\x08\x21\x98"
2119 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
1da177e4 2120 .klen = 24,
de224c30 2121 .input = "\x73\x71\x75\x69\x67\x67\x6c\x65",
1da177e4 2122 .ilen = 8,
de224c30 2123 .result = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
1da177e4
LT
2124 .rlen = 8,
2125 }, {
de224c30
SS
2126 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
2127 "\x91\x07\xd0\x15\x89\x19\x01\x01"
2128 "\x19\x07\x92\x10\x98\x1a\x01\x01",
1da177e4 2129 .klen = 24,
de224c30 2130 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2131 .ilen = 8,
de224c30 2132 .result = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
1da177e4
LT
2133 .rlen = 8,
2134 },
2135};
2136
2137static struct cipher_testvec des3_ede_dec_tv_template[] = {
2138 { /* These are from openssl */
de224c30
SS
2139 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2140 "\x55\x55\x55\x55\x55\x55\x55\x55"
2141 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2142 .klen = 24,
de224c30 2143 .input = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
1da177e4 2144 .ilen = 8,
de224c30 2145 .result = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
1da177e4
LT
2146 .rlen = 8,
2147 }, {
de224c30
SS
2148 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
2149 "\x86\x02\x87\x66\x59\x08\x21\x98"
2150 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
1da177e4 2151 .klen = 24,
de224c30 2152 .input = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
1da177e4 2153 .ilen = 8,
de224c30 2154 .result = "\x73\x71\x75\x69\x67\x67\x6c\x65",
1da177e4
LT
2155 .rlen = 8,
2156 }, {
de224c30
SS
2157 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
2158 "\x91\x07\xd0\x15\x89\x19\x01\x01"
2159 "\x19\x07\x92\x10\x98\x1a\x01\x01",
1da177e4 2160 .klen = 24,
de224c30 2161 .input = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
1da177e4 2162 .ilen = 8,
de224c30 2163 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
2164 .rlen = 8,
2165 },
2166};
2167
d729de23
NH
2168static struct cipher_testvec des3_ede_cbc_enc_tv_template[] = {
2169 { /* Generated from openssl */
2170 .key = "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24"
2171 "\x44\x4D\x99\x5A\x12\xD6\x40\xC0"
2172 "\xEA\xC2\x84\xE8\x14\x95\xDB\xE8",
2173 .klen = 24,
2174 .iv = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
2175 .input = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
2176 "\x53\x20\x63\x65\x65\x72\x73\x74"
2177 "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
2178 "\x20\x79\x65\x53\x72\x63\x74\x65"
2179 "\x20\x73\x6f\x54\x20\x6f\x61\x4d"
2180 "\x79\x6e\x53\x20\x63\x65\x65\x72"
2181 "\x73\x74\x54\x20\x6f\x6f\x4d\x20"
2182 "\x6e\x61\x20\x79\x65\x53\x72\x63"
2183 "\x74\x65\x20\x73\x6f\x54\x20\x6f"
2184 "\x61\x4d\x79\x6e\x53\x20\x63\x65"
2185 "\x65\x72\x73\x74\x54\x20\x6f\x6f"
2186 "\x4d\x20\x6e\x61\x20\x79\x65\x53"
2187 "\x72\x63\x74\x65\x20\x73\x6f\x54"
2188 "\x20\x6f\x61\x4d\x79\x6e\x53\x20"
2189 "\x63\x65\x65\x72\x73\x74\x54\x20"
2190 "\x6f\x6f\x4d\x20\x6e\x61\x0a\x79",
2191 .ilen = 128,
2192 .result = "\x0e\x2d\xb6\x97\x3c\x56\x33\xf4"
2193 "\x67\x17\x21\xc7\x6e\x8a\xd5\x49"
2194 "\x74\xb3\x49\x05\xc5\x1c\xd0\xed"
2195 "\x12\x56\x5c\x53\x96\xb6\x00\x7d"
2196 "\x90\x48\xfc\xf5\x8d\x29\x39\xcc"
2197 "\x8a\xd5\x35\x18\x36\x23\x4e\xd7"
2198 "\x76\xd1\xda\x0c\x94\x67\xbb\x04"
2199 "\x8b\xf2\x03\x6c\xa8\xcf\xb6\xea"
2200 "\x22\x64\x47\xaa\x8f\x75\x13\xbf"
2201 "\x9f\xc2\xc3\xf0\xc9\x56\xc5\x7a"
2202 "\x71\x63\x2e\x89\x7b\x1e\x12\xca"
2203 "\xe2\x5f\xaf\xd8\xa4\xf8\xc9\x7a"
2204 "\xd6\xf9\x21\x31\x62\x44\x45\xa6"
2205 "\xd6\xbc\x5a\xd3\x2d\x54\x43\xcc"
2206 "\x9d\xde\xa5\x70\xe9\x42\x45\x8a"
2207 "\x6b\xfa\xb1\x91\x13\xb0\xd9\x19",
2208 .rlen = 128,
2209 },
2210};
2211
2212static struct cipher_testvec des3_ede_cbc_dec_tv_template[] = {
2213 { /* Generated from openssl */
2214 .key = "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24"
2215 "\x44\x4D\x99\x5A\x12\xD6\x40\xC0"
2216 "\xEA\xC2\x84\xE8\x14\x95\xDB\xE8",
2217 .klen = 24,
2218 .iv = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
2219 .input = "\x0e\x2d\xb6\x97\x3c\x56\x33\xf4"
2220 "\x67\x17\x21\xc7\x6e\x8a\xd5\x49"
2221 "\x74\xb3\x49\x05\xc5\x1c\xd0\xed"
2222 "\x12\x56\x5c\x53\x96\xb6\x00\x7d"
2223 "\x90\x48\xfc\xf5\x8d\x29\x39\xcc"
2224 "\x8a\xd5\x35\x18\x36\x23\x4e\xd7"
2225 "\x76\xd1\xda\x0c\x94\x67\xbb\x04"
2226 "\x8b\xf2\x03\x6c\xa8\xcf\xb6\xea"
2227 "\x22\x64\x47\xaa\x8f\x75\x13\xbf"
2228 "\x9f\xc2\xc3\xf0\xc9\x56\xc5\x7a"
2229 "\x71\x63\x2e\x89\x7b\x1e\x12\xca"
2230 "\xe2\x5f\xaf\xd8\xa4\xf8\xc9\x7a"
2231 "\xd6\xf9\x21\x31\x62\x44\x45\xa6"
2232 "\xd6\xbc\x5a\xd3\x2d\x54\x43\xcc"
2233 "\x9d\xde\xa5\x70\xe9\x42\x45\x8a"
2234 "\x6b\xfa\xb1\x91\x13\xb0\xd9\x19",
2235 .ilen = 128,
2236 .result = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
2237 "\x53\x20\x63\x65\x65\x72\x73\x74"
2238 "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
2239 "\x20\x79\x65\x53\x72\x63\x74\x65"
2240 "\x20\x73\x6f\x54\x20\x6f\x61\x4d"
2241 "\x79\x6e\x53\x20\x63\x65\x65\x72"
2242 "\x73\x74\x54\x20\x6f\x6f\x4d\x20"
2243 "\x6e\x61\x20\x79\x65\x53\x72\x63"
2244 "\x74\x65\x20\x73\x6f\x54\x20\x6f"
2245 "\x61\x4d\x79\x6e\x53\x20\x63\x65"
2246 "\x65\x72\x73\x74\x54\x20\x6f\x6f"
2247 "\x4d\x20\x6e\x61\x20\x79\x65\x53"
2248 "\x72\x63\x74\x65\x20\x73\x6f\x54"
2249 "\x20\x6f\x61\x4d\x79\x6e\x53\x20"
2250 "\x63\x65\x65\x72\x73\x74\x54\x20"
2251 "\x6f\x6f\x4d\x20\x6e\x61\x0a\x79",
2252 .rlen = 128,
2253 },
2254};
2255
1da177e4
LT
2256/*
2257 * Blowfish test vectors.
2258 */
2259#define BF_ENC_TEST_VECTORS 6
2260#define BF_DEC_TEST_VECTORS 6
2261#define BF_CBC_ENC_TEST_VECTORS 1
2262#define BF_CBC_DEC_TEST_VECTORS 1
2263
2264static struct cipher_testvec bf_enc_tv_template[] = {
2265 { /* DES test vectors from OpenSSL */
de224c30 2266 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2267 .klen = 8,
de224c30 2268 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2269 .ilen = 8,
de224c30 2270 .result = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
1da177e4
LT
2271 .rlen = 8,
2272 }, {
de224c30 2273 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
1da177e4 2274 .klen = 8,
de224c30 2275 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2276 .ilen = 8,
de224c30 2277 .result = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
1da177e4
LT
2278 .rlen = 8,
2279 }, {
de224c30 2280 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 2281 .klen = 8,
de224c30 2282 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2283 .ilen = 8,
de224c30 2284 .result = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
1da177e4 2285 .rlen = 8,
ef2736fc 2286 }, { /* Vary the keylength... */
de224c30
SS
2287 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2288 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
1da177e4 2289 .klen = 16,
de224c30 2290 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2291 .ilen = 8,
de224c30 2292 .result = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
1da177e4
LT
2293 .rlen = 8,
2294 }, {
de224c30
SS
2295 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2296 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2297 "\x00\x11\x22\x33\x44",
1da177e4 2298 .klen = 21,
de224c30 2299 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2300 .ilen = 8,
de224c30 2301 .result = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
1da177e4
LT
2302 .rlen = 8,
2303 }, { /* Generated with bf488 */
de224c30
SS
2304 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2305 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2306 "\x00\x11\x22\x33\x44\x55\x66\x77"
2307 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
2308 "\x58\x40\x23\x64\x1a\xba\x61\x76"
2309 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
2310 "\xff\xff\xff\xff\xff\xff\xff\xff",
1da177e4 2311 .klen = 56,
de224c30 2312 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2313 .ilen = 8,
de224c30 2314 .result = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
1da177e4
LT
2315 .rlen = 8,
2316 },
2317};
2318
2319static struct cipher_testvec bf_dec_tv_template[] = {
2320 { /* DES test vectors from OpenSSL */
de224c30 2321 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2322 .klen = 8,
de224c30 2323 .input = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
1da177e4 2324 .ilen = 8,
de224c30 2325 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
2326 .rlen = 8,
2327 }, {
de224c30 2328 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
1da177e4 2329 .klen = 8,
de224c30 2330 .input = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
1da177e4 2331 .ilen = 8,
de224c30 2332 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
2333 .rlen = 8,
2334 }, {
de224c30 2335 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 2336 .klen = 8,
de224c30 2337 .input = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
1da177e4 2338 .ilen = 8,
de224c30 2339 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2340 .rlen = 8,
ef2736fc 2341 }, { /* Vary the keylength... */
de224c30
SS
2342 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2343 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
1da177e4 2344 .klen = 16,
de224c30 2345 .input = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
1da177e4 2346 .ilen = 8,
de224c30 2347 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4
LT
2348 .rlen = 8,
2349 }, {
de224c30
SS
2350 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2351 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2352 "\x00\x11\x22\x33\x44",
1da177e4 2353 .klen = 21,
de224c30 2354 .input = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
1da177e4 2355 .ilen = 8,
de224c30 2356 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4
LT
2357 .rlen = 8,
2358 }, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */
de224c30
SS
2359 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2360 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2361 "\x00\x11\x22\x33\x44\x55\x66\x77"
2362 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
2363 "\x58\x40\x23\x64\x1a\xba\x61\x76"
2364 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
2365 "\xff\xff\xff\xff\xff\xff\xff\xff",
1da177e4 2366 .klen = 56,
de224c30 2367 .input = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
1da177e4 2368 .ilen = 8,
de224c30 2369 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4
LT
2370 .rlen = 8,
2371 },
2372};
2373
2374static struct cipher_testvec bf_cbc_enc_tv_template[] = {
2375 { /* From OpenSSL */
de224c30
SS
2376 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2377 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 2378 .klen = 16,
de224c30
SS
2379 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2380 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
2381 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2382 "\x68\x65\x20\x74\x69\x6d\x65\x20"
2383 "\x66\x6f\x72\x20\x00\x00\x00\x00",
1da177e4 2384 .ilen = 32,
de224c30
SS
2385 .result = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
2386 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
2387 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
2388 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
1da177e4
LT
2389 .rlen = 32,
2390 },
2391};
2392
2393static struct cipher_testvec bf_cbc_dec_tv_template[] = {
2394 { /* From OpenSSL */
de224c30
SS
2395 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2396 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 2397 .klen = 16,
de224c30
SS
2398 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2399 .input = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
2400 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
2401 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
2402 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
1da177e4 2403 .ilen = 32,
de224c30
SS
2404 .result = "\x37\x36\x35\x34\x33\x32\x31\x20"
2405 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2406 "\x68\x65\x20\x74\x69\x6d\x65\x20"
2407 "\x66\x6f\x72\x20\x00\x00\x00\x00",
1da177e4
LT
2408 .rlen = 32,
2409 },
2410};
2411
2412/*
2413 * Twofish test vectors.
2414 */
2415#define TF_ENC_TEST_VECTORS 3
2416#define TF_DEC_TEST_VECTORS 3
2417#define TF_CBC_ENC_TEST_VECTORS 4
2418#define TF_CBC_DEC_TEST_VECTORS 4
2419
2420static struct cipher_testvec tf_enc_tv_template[] = {
2421 {
de224c30 2422 .key = zeroed_string,
1da177e4 2423 .klen = 16,
de224c30 2424 .input = zeroed_string,
1da177e4 2425 .ilen = 16,
de224c30
SS
2426 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2427 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4
LT
2428 .rlen = 16,
2429 }, {
de224c30
SS
2430 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2431 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2432 "\x00\x11\x22\x33\x44\x55\x66\x77",
1da177e4 2433 .klen = 24,
de224c30 2434 .input = zeroed_string,
1da177e4 2435 .ilen = 16,
de224c30
SS
2436 .result = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
2437 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
1da177e4
LT
2438 .rlen = 16,
2439 }, {
de224c30
SS
2440 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2441 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2442 "\x00\x11\x22\x33\x44\x55\x66\x77"
2443 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2444 .klen = 32,
de224c30 2445 .input = zeroed_string,
1da177e4 2446 .ilen = 16,
de224c30
SS
2447 .result = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
2448 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
1da177e4
LT
2449 .rlen = 16,
2450 },
2451};
2452
2453static struct cipher_testvec tf_dec_tv_template[] = {
2454 {
de224c30 2455 .key = zeroed_string,
1da177e4 2456 .klen = 16,
de224c30
SS
2457 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2458 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4 2459 .ilen = 16,
de224c30 2460 .result = zeroed_string,
1da177e4
LT
2461 .rlen = 16,
2462 }, {
de224c30
SS
2463 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2464 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2465 "\x00\x11\x22\x33\x44\x55\x66\x77",
1da177e4 2466 .klen = 24,
de224c30
SS
2467 .input = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
2468 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
1da177e4 2469 .ilen = 16,
de224c30 2470 .result = zeroed_string,
1da177e4
LT
2471 .rlen = 16,
2472 }, {
de224c30
SS
2473 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2474 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2475 "\x00\x11\x22\x33\x44\x55\x66\x77"
2476 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2477 .klen = 32,
de224c30
SS
2478 .input = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
2479 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
1da177e4 2480 .ilen = 16,
de224c30 2481 .result = zeroed_string,
1da177e4
LT
2482 .rlen = 16,
2483 },
2484};
2485
2486static struct cipher_testvec tf_cbc_enc_tv_template[] = {
2487 { /* Generated with Nettle */
de224c30 2488 .key = zeroed_string,
1da177e4 2489 .klen = 16,
de224c30
SS
2490 .iv = zeroed_string,
2491 .input = zeroed_string,
1da177e4 2492 .ilen = 16,
de224c30
SS
2493 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2494 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4
LT
2495 .rlen = 16,
2496 }, {
de224c30 2497 .key = zeroed_string,
1da177e4 2498 .klen = 16,
de224c30
SS
2499 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2500 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2501 .input = zeroed_string,
1da177e4 2502 .ilen = 16,
de224c30
SS
2503 .result = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2504 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
1da177e4
LT
2505 .rlen = 16,
2506 }, {
de224c30 2507 .key = zeroed_string,
1da177e4 2508 .klen = 16,
de224c30
SS
2509 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2510 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2511 .input = zeroed_string,
1da177e4 2512 .ilen = 16,
de224c30
SS
2513 .result = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2514 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4
LT
2515 .rlen = 16,
2516 }, {
de224c30 2517 .key = zeroed_string,
1da177e4 2518 .klen = 16,
de224c30
SS
2519 .iv = zeroed_string,
2520 .input = zeroed_string,
1da177e4 2521 .ilen = 48,
de224c30
SS
2522 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2523 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2524 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2525 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2526 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2527 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4
LT
2528 .rlen = 48,
2529 },
2530};
2531
2532static struct cipher_testvec tf_cbc_dec_tv_template[] = {
2533 { /* Reverse of the first four above */
de224c30 2534 .key = zeroed_string,
1da177e4 2535 .klen = 16,
de224c30
SS
2536 .iv = zeroed_string,
2537 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2538 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4 2539 .ilen = 16,
de224c30 2540 .result = zeroed_string,
1da177e4
LT
2541 .rlen = 16,
2542 }, {
de224c30 2543 .key = zeroed_string,
1da177e4 2544 .klen = 16,
de224c30
SS
2545 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2546 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2547 .input = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2548 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
1da177e4 2549 .ilen = 16,
de224c30 2550 .result = zeroed_string,
1da177e4
LT
2551 .rlen = 16,
2552 }, {
de224c30 2553 .key = zeroed_string,
1da177e4 2554 .klen = 16,
de224c30
SS
2555 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2556 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2557 .input = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2558 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4 2559 .ilen = 16,
de224c30 2560 .result = zeroed_string,
1da177e4
LT
2561 .rlen = 16,
2562 }, {
de224c30 2563 .key = zeroed_string,
1da177e4 2564 .klen = 16,
de224c30
SS
2565 .iv = zeroed_string,
2566 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2567 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2568 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2569 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2570 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2571 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4 2572 .ilen = 48,
de224c30 2573 .result = zeroed_string,
1da177e4
LT
2574 .rlen = 48,
2575 },
2576};
2577
2578/*
2579 * Serpent test vectors. These are backwards because Serpent writes
2580 * octet sequences in right-to-left mode.
2581 */
2582#define SERPENT_ENC_TEST_VECTORS 4
2583#define SERPENT_DEC_TEST_VECTORS 4
2584
2585#define TNEPRES_ENC_TEST_VECTORS 4
2586#define TNEPRES_DEC_TEST_VECTORS 4
2587
ef2736fc 2588static struct cipher_testvec serpent_enc_tv_template[] = {
1da177e4 2589 {
de224c30
SS
2590 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2591 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2592 .ilen = 16,
de224c30
SS
2593 .result = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2594 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
1da177e4
LT
2595 .rlen = 16,
2596 }, {
de224c30
SS
2597 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2598 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2599 .klen = 16,
de224c30
SS
2600 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2601 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2602 .ilen = 16,
de224c30
SS
2603 .result = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2604 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
1da177e4
LT
2605 .rlen = 16,
2606 }, {
de224c30
SS
2607 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2608 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2609 "\x10\x11\x12\x13\x14\x15\x16\x17"
2610 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2611 .klen = 32,
de224c30
SS
2612 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2613 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2614 .ilen = 16,
de224c30
SS
2615 .result = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2616 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
1da177e4
LT
2617 .rlen = 16,
2618 }, {
de224c30 2619 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
1da177e4 2620 .klen = 16,
de224c30 2621 .input = zeroed_string,
1da177e4 2622 .ilen = 16,
de224c30
SS
2623 .result = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2624 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
1da177e4
LT
2625 .rlen = 16,
2626 },
2627};
2628
ef2736fc 2629static struct cipher_testvec tnepres_enc_tv_template[] = {
1da177e4 2630 { /* KeySize=128, PT=0, I=1 */
de224c30
SS
2631 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2632 "\x00\x00\x00\x00\x00\x00\x00\x00",
2633 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2634 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
2635 .klen = 16,
2636 .ilen = 16,
de224c30
SS
2637 .result = "\x49\xaf\xbf\xad\x9d\x5a\x34\x05"
2638 "\x2c\xd8\xff\xa5\x98\x6b\xd2\xdd",
1da177e4
LT
2639 .rlen = 16,
2640 }, { /* KeySize=192, PT=0, I=1 */
de224c30
SS
2641 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2642 "\x00\x00\x00\x00\x00\x00\x00\x00"
2643 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2644 .klen = 24,
de224c30
SS
2645 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2646 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2647 .ilen = 16,
de224c30
SS
2648 .result = "\xe7\x8e\x54\x02\xc7\x19\x55\x68"
2649 "\xac\x36\x78\xf7\xa3\xf6\x0c\x66",
1da177e4
LT
2650 .rlen = 16,
2651 }, { /* KeySize=256, PT=0, I=1 */
de224c30
SS
2652 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2653 "\x00\x00\x00\x00\x00\x00\x00\x00"
2654 "\x00\x00\x00\x00\x00\x00\x00\x00"
2655 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2656 .klen = 32,
de224c30
SS
2657 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2658 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2659 .ilen = 16,
de224c30
SS
2660 .result = "\xab\xed\x96\xe7\x66\xbf\x28\xcb"
2661 "\xc0\xeb\xd2\x1a\x82\xef\x08\x19",
1da177e4
LT
2662 .rlen = 16,
2663 }, { /* KeySize=256, I=257 */
de224c30
SS
2664 .key = "\x1f\x1e\x1d\x1c\x1b\x1a\x19\x18"
2665 "\x17\x16\x15\x14\x13\x12\x11\x10"
2666 "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2667 "\x07\x06\x05\x04\x03\x02\x01\x00",
1da177e4 2668 .klen = 32,
de224c30
SS
2669 .input = "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2670 "\x07\x06\x05\x04\x03\x02\x01\x00",
1da177e4 2671 .ilen = 16,
de224c30
SS
2672 .result = "\x5c\xe7\x1c\x70\xd2\x88\x2e\x5b"
2673 "\xb8\x32\xe4\x33\xf8\x9f\x26\xde",
1da177e4
LT
2674 .rlen = 16,
2675 },
2676};
2677
2678
ef2736fc 2679static struct cipher_testvec serpent_dec_tv_template[] = {
1da177e4 2680 {
de224c30
SS
2681 .input = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2682 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
1da177e4 2683 .ilen = 16,
de224c30
SS
2684 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2685 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2686 .rlen = 16,
2687 }, {
de224c30
SS
2688 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2689 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2690 .klen = 16,
de224c30
SS
2691 .input = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2692 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
1da177e4 2693 .ilen = 16,
de224c30
SS
2694 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2695 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2696 .rlen = 16,
2697 }, {
de224c30
SS
2698 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2699 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2700 "\x10\x11\x12\x13\x14\x15\x16\x17"
2701 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2702 .klen = 32,
de224c30
SS
2703 .input = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2704 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
1da177e4 2705 .ilen = 16,
de224c30
SS
2706 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2707 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2708 .rlen = 16,
2709 }, {
de224c30 2710 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
1da177e4 2711 .klen = 16,
de224c30
SS
2712 .input = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2713 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
1da177e4 2714 .ilen = 16,
de224c30 2715 .result = zeroed_string,
1da177e4
LT
2716 .rlen = 16,
2717 },
2718};
2719
ef2736fc 2720static struct cipher_testvec tnepres_dec_tv_template[] = {
1da177e4 2721 {
de224c30
SS
2722 .input = "\x41\xcc\x6b\x31\x59\x31\x45\x97"
2723 "\x6d\x6f\xbb\x38\x4b\x37\x21\x28",
1da177e4 2724 .ilen = 16,
de224c30
SS
2725 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2726 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2727 .rlen = 16,
2728 }, {
de224c30
SS
2729 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2730 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2731 .klen = 16,
de224c30
SS
2732 .input = "\xea\xf4\xd7\xfc\xd8\x01\x34\x47"
2733 "\x81\x45\x0b\xfa\x0c\xd6\xad\x6e",
1da177e4 2734 .ilen = 16,
de224c30
SS
2735 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2736 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2737 .rlen = 16,
2738 }, {
de224c30
SS
2739 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2740 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2741 "\x10\x11\x12\x13\x14\x15\x16\x17"
2742 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2743 .klen = 32,
de224c30
SS
2744 .input = "\x64\xa9\x1a\x37\xed\x9f\xe7\x49"
2745 "\xa8\x4e\x76\xd6\xf5\x0d\x78\xee",
1da177e4 2746 .ilen = 16,
de224c30
SS
2747 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2748 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2749 .rlen = 16,
2750 }, { /* KeySize=128, I=121 */
de224c30 2751 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
1da177e4 2752 .klen = 16,
de224c30
SS
2753 .input = "\x3d\xda\xbf\xc0\x06\xda\xab\x06"
2754 "\x46\x2a\xf4\xef\x81\x54\x4e\x26",
1da177e4 2755 .ilen = 16,
de224c30 2756 .result = zeroed_string,
1da177e4
LT
2757 .rlen = 16,
2758 },
2759};
2760
2761
2762/* Cast6 test vectors from RFC 2612 */
2763#define CAST6_ENC_TEST_VECTORS 3
2764#define CAST6_DEC_TEST_VECTORS 3
2765
ef2736fc 2766static struct cipher_testvec cast6_enc_tv_template[] = {
1da177e4 2767 {
de224c30
SS
2768 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2769 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
1da177e4 2770 .klen = 16,
de224c30 2771 .input = zeroed_string,
1da177e4 2772 .ilen = 16,
de224c30
SS
2773 .result = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2774 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
1da177e4
LT
2775 .rlen = 16,
2776 }, {
de224c30
SS
2777 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2778 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2779 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
1da177e4 2780 .klen = 24,
de224c30 2781 .input = zeroed_string,
1da177e4 2782 .ilen = 16,
de224c30
SS
2783 .result = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2784 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
1da177e4
LT
2785 .rlen = 16,
2786 }, {
de224c30
SS
2787 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2788 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2789 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2790 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
1da177e4 2791 .klen = 32,
de224c30 2792 .input = zeroed_string,
1da177e4 2793 .ilen = 16,
de224c30
SS
2794 .result = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2795 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
1da177e4
LT
2796 .rlen = 16,
2797 },
2798};
2799
ef2736fc 2800static struct cipher_testvec cast6_dec_tv_template[] = {
1da177e4 2801 {
de224c30
SS
2802 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2803 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
1da177e4 2804 .klen = 16,
de224c30
SS
2805 .input = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2806 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
1da177e4 2807 .ilen = 16,
de224c30 2808 .result = zeroed_string,
1da177e4
LT
2809 .rlen = 16,
2810 }, {
de224c30
SS
2811 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2812 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2813 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
1da177e4 2814 .klen = 24,
de224c30
SS
2815 .input = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2816 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
1da177e4 2817 .ilen = 16,
de224c30 2818 .result = zeroed_string,
1da177e4
LT
2819 .rlen = 16,
2820 }, {
de224c30
SS
2821 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2822 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2823 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2824 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
1da177e4 2825 .klen = 32,
de224c30
SS
2826 .input = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2827 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
1da177e4 2828 .ilen = 16,
de224c30 2829 .result = zeroed_string,
1da177e4
LT
2830 .rlen = 16,
2831 },
2832};
2833
2834
2835/*
2836 * AES test vectors.
2837 */
2838#define AES_ENC_TEST_VECTORS 3
2839#define AES_DEC_TEST_VECTORS 3
9617d6ef
JG
2840#define AES_CBC_ENC_TEST_VECTORS 4
2841#define AES_CBC_DEC_TEST_VECTORS 4
f3d1044c
RS
2842#define AES_LRW_ENC_TEST_VECTORS 8
2843#define AES_LRW_DEC_TEST_VECTORS 8
f19f5111
RS
2844#define AES_XTS_ENC_TEST_VECTORS 4
2845#define AES_XTS_DEC_TEST_VECTORS 4
a773edb3 2846#define AES_CTR_ENC_TEST_VECTORS 7
23e353c8 2847#define AES_CTR_DEC_TEST_VECTORS 6
28db8e3e
MH
2848#define AES_GCM_ENC_TEST_VECTORS 9
2849#define AES_GCM_DEC_TEST_VECTORS 8
93cc74e0
JL
2850#define AES_CCM_ENC_TEST_VECTORS 7
2851#define AES_CCM_DEC_TEST_VECTORS 7
1da177e4 2852
ef2736fc 2853static struct cipher_testvec aes_enc_tv_template[] = {
1da177e4 2854 { /* From FIPS-197 */
de224c30
SS
2855 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2856 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2857 .klen = 16,
de224c30
SS
2858 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2859 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2860 .ilen = 16,
de224c30
SS
2861 .result = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2862 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
1da177e4
LT
2863 .rlen = 16,
2864 }, {
de224c30
SS
2865 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2866 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2867 "\x10\x11\x12\x13\x14\x15\x16\x17",
1da177e4 2868 .klen = 24,
de224c30
SS
2869 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2870 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2871 .ilen = 16,
de224c30
SS
2872 .result = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2873 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
1da177e4
LT
2874 .rlen = 16,
2875 }, {
de224c30
SS
2876 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2877 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2878 "\x10\x11\x12\x13\x14\x15\x16\x17"
2879 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2880 .klen = 32,
de224c30
SS
2881 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2882 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2883 .ilen = 16,
de224c30
SS
2884 .result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2885 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
1da177e4
LT
2886 .rlen = 16,
2887 },
2888};
2889
ef2736fc 2890static struct cipher_testvec aes_dec_tv_template[] = {
1da177e4 2891 { /* From FIPS-197 */
de224c30
SS
2892 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2893 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2894 .klen = 16,
de224c30
SS
2895 .input = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2896 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
1da177e4 2897 .ilen = 16,
de224c30
SS
2898 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2899 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4
LT
2900 .rlen = 16,
2901 }, {
de224c30
SS
2902 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2903 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2904 "\x10\x11\x12\x13\x14\x15\x16\x17",
1da177e4 2905 .klen = 24,
de224c30
SS
2906 .input = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2907 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
1da177e4 2908 .ilen = 16,
de224c30
SS
2909 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2910 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4
LT
2911 .rlen = 16,
2912 }, {
de224c30
SS
2913 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2914 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2915 "\x10\x11\x12\x13\x14\x15\x16\x17"
2916 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2917 .klen = 32,
de224c30
SS
2918 .input = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2919 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
1da177e4 2920 .ilen = 16,
de224c30
SS
2921 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2922 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4
LT
2923 .rlen = 16,
2924 },
2925};
2926
05f29fcd
JG
2927static struct cipher_testvec aes_cbc_enc_tv_template[] = {
2928 { /* From RFC 3602 */
de224c30
SS
2929 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2930 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
05f29fcd 2931 .klen = 16,
de224c30
SS
2932 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2933 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2934 .input = "Single block msg",
05f29fcd 2935 .ilen = 16,
de224c30
SS
2936 .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2937 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
05f29fcd
JG
2938 .rlen = 16,
2939 }, {
de224c30
SS
2940 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2941 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
05f29fcd 2942 .klen = 16,
de224c30
SS
2943 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2944 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2945 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2946 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2947 "\x10\x11\x12\x13\x14\x15\x16\x17"
2948 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
05f29fcd 2949 .ilen = 32,
de224c30
SS
2950 .result = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2951 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2952 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2953 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
05f29fcd 2954 .rlen = 32,
9617d6ef 2955 }, { /* From NIST SP800-38A */
de224c30
SS
2956 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2957 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2958 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
9617d6ef 2959 .klen = 24,
de224c30
SS
2960 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2961 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2962 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2963 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2964 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2965 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2966 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2967 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2968 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2969 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef 2970 .ilen = 64,
de224c30
SS
2971 .result = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2972 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2973 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2974 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2975 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2976 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2977 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2978 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
9617d6ef
JG
2979 .rlen = 64,
2980 }, {
de224c30
SS
2981 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2982 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2983 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2984 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
9617d6ef 2985 .klen = 32,
de224c30
SS
2986 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2987 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2988 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2989 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2990 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2991 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2992 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2993 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2994 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2995 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef 2996 .ilen = 64,
de224c30
SS
2997 .result = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2998 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2999 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
3000 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
3001 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
3002 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
3003 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
3004 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
9617d6ef 3005 .rlen = 64,
05f29fcd
JG
3006 },
3007};
3008
3009static struct cipher_testvec aes_cbc_dec_tv_template[] = {
3010 { /* From RFC 3602 */
de224c30
SS
3011 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
3012 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
05f29fcd 3013 .klen = 16,
de224c30
SS
3014 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
3015 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
3016 .input = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
3017 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
05f29fcd 3018 .ilen = 16,
de224c30 3019 .result = "Single block msg",
05f29fcd
JG
3020 .rlen = 16,
3021 }, {
de224c30
SS
3022 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
3023 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
05f29fcd 3024 .klen = 16,
de224c30
SS
3025 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
3026 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
3027 .input = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
3028 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
3029 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
3030 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
05f29fcd 3031 .ilen = 32,
de224c30
SS
3032 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
3033 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3034 "\x10\x11\x12\x13\x14\x15\x16\x17"
3035 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
05f29fcd 3036 .rlen = 32,
9617d6ef 3037 }, { /* From NIST SP800-38A */
de224c30
SS
3038 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
3039 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
3040 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
9617d6ef 3041 .klen = 24,
de224c30
SS
3042 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
3043 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
3044 .input = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
3045 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
3046 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
3047 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
3048 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
3049 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
3050 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
3051 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
9617d6ef 3052 .ilen = 64,
de224c30
SS
3053 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
3054 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
3055 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
3056 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
3057 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
3058 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
3059 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
3060 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef
JG
3061 .rlen = 64,
3062 }, {
de224c30
SS
3063 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
3064 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
3065 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
3066 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
9617d6ef 3067 .klen = 32,
de224c30
SS
3068 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
3069 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
3070 .input = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
3071 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
3072 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
3073 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
3074 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
3075 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
3076 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
3077 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
9617d6ef 3078 .ilen = 64,
de224c30
SS
3079 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
3080 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
3081 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
3082 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
3083 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
3084 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
3085 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
3086 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef 3087 .rlen = 64,
05f29fcd
JG
3088 },
3089};
3090
f3d1044c
RS
3091static struct cipher_testvec aes_lrw_enc_tv_template[] = {
3092 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
3093 { /* LRW-32-AES 1 */
de224c30
SS
3094 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
3095 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
3096 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
3097 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
f3d1044c 3098 .klen = 32,
de224c30
SS
3099 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3100 "\x00\x00\x00\x00\x00\x00\x00\x01",
3101 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3102 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3103 .ilen = 16,
de224c30
SS
3104 .result = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
3105 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
f3d1044c
RS
3106 .rlen = 16,
3107 }, { /* LRW-32-AES 2 */
de224c30
SS
3108 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
3109 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
3110 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
3111 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
f3d1044c 3112 .klen = 32,
de224c30
SS
3113 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3114 "\x00\x00\x00\x00\x00\x00\x00\x02",
3115 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3116 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3117 .ilen = 16,
de224c30
SS
3118 .result = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
3119 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
f3d1044c
RS
3120 .rlen = 16,
3121 }, { /* LRW-32-AES 3 */
de224c30
SS
3122 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
3123 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
3124 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
3125 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
f3d1044c 3126 .klen = 32,
de224c30
SS
3127 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3128 "\x00\x00\x00\x02\x00\x00\x00\x00",
3129 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3130 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3131 .ilen = 16,
de224c30
SS
3132 .result = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
3133 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
f3d1044c
RS
3134 .rlen = 16,
3135 }, { /* LRW-32-AES 4 */
de224c30
SS
3136 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
3137 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
3138 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
3139 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
3140 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
f3d1044c 3141 .klen = 40,
de224c30
SS
3142 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3143 "\x00\x00\x00\x00\x00\x00\x00\x01",
3144 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3145 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3146 .ilen = 16,
de224c30
SS
3147 .result = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
3148 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
f3d1044c
RS
3149 .rlen = 16,
3150 }, { /* LRW-32-AES 5 */
de224c30
SS
3151 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
3152 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
3153 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
3154 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
3155 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
f3d1044c 3156 .klen = 40,
de224c30
SS
3157 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3158 "\x00\x00\x00\x02\x00\x00\x00\x00",
3159 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3160 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3161 .ilen = 16,
de224c30
SS
3162 .result = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
3163 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
f3d1044c
RS
3164 .rlen = 16,
3165 }, { /* LRW-32-AES 6 */
de224c30
SS
3166 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3167 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3168 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3169 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3170 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3171 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 3172 .klen = 48,
de224c30
SS
3173 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3174 "\x00\x00\x00\x00\x00\x00\x00\x01",
3175 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3176 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3177 .ilen = 16,
de224c30
SS
3178 .result = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
3179 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
f3d1044c
RS
3180 .rlen = 16,
3181 }, { /* LRW-32-AES 7 */
de224c30
SS
3182 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
3183 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
3184 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
3185 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
3186 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
3187 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
f3d1044c 3188 .klen = 48,
de224c30
SS
3189 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3190 "\x00\x00\x00\x02\x00\x00\x00\x00",
3191 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3192 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3193 .ilen = 16,
de224c30
SS
3194 .result = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
3195 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
f3d1044c
RS
3196 .rlen = 16,
3197 }, {
3198/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
de224c30
SS
3199 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3200 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3201 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3202 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3203 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3204 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 3205 .klen = 48,
de224c30
SS
3206 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3207 "\x00\x00\x00\x00\x00\x00\x00\x01",
3208 .input = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
3209 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
3210 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
3211 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
3212 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
3213 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
3214 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
3215 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
3216 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
3217 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
3218 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
3219 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
3220 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
3221 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
3222 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
3223 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
3224 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
3225 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
3226 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
3227 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
3228 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
3229 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
3230 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
3231 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
3232 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
3233 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
3234 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
3235 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
3236 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
3237 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
3238 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
3239 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
3240 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
3241 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
3242 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
3243 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
3244 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
3245 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
3246 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
3247 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
3248 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
3249 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
3250 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
3251 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
3252 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
3253 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
3254 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
3255 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
3256 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
3257 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
3258 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
3259 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
3260 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
3261 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
3262 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
3263 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
3264 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
3265 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
3266 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
3267 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
3268 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
3269 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
3270 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
3271 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
f3d1044c 3272 .ilen = 512,
de224c30
SS
3273 .result = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
3274 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
3275 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
3276 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
3277 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
3278 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
3279 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
3280 "\xe8\x58\x46\x97\x39\x51\x07\xde"
3281 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
3282 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
3283 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
3284 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
3285 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
3286 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
3287 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
3288 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
3289 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
3290 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
3291 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
3292 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
3293 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
3294 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
3295 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
3296 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
3297 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
3298 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
3299 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
3300 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
3301 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
3302 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
3303 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
3304 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
3305 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
3306 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
3307 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
3308 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
3309 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
3310 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
3311 "\xb8\x79\x78\x97\x94\xff\x72\x13"
3312 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
3313 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
3314 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
3315 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
3316 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
3317 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
3318 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
3319 "\x1e\x86\x53\x11\x53\x94\x00\xee"
3320 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
3321 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
3322 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
3323 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
3324 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
3325 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
3326 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
3327 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
3328 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
3329 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
3330 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
3331 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
3332 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
3333 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
3334 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
3335 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
3336 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
f3d1044c
RS
3337 .rlen = 512,
3338 }
3339};
3340
3341static struct cipher_testvec aes_lrw_dec_tv_template[] = {
3342 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
3343 /* same as enc vectors with input and result reversed */
3344 { /* LRW-32-AES 1 */
de224c30
SS
3345 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
3346 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
3347 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
3348 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
f3d1044c 3349 .klen = 32,
de224c30
SS
3350 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3351 "\x00\x00\x00\x00\x00\x00\x00\x01",
3352 .input = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
3353 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
f3d1044c 3354 .ilen = 16,
de224c30
SS
3355 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3356 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3357 .rlen = 16,
3358 }, { /* LRW-32-AES 2 */
de224c30
SS
3359 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
3360 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
3361 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
3362 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
f3d1044c 3363 .klen = 32,
de224c30
SS
3364 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3365 "\x00\x00\x00\x00\x00\x00\x00\x02",
3366 .input = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
3367 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
f3d1044c 3368 .ilen = 16,
de224c30
SS
3369 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3370 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3371 .rlen = 16,
3372 }, { /* LRW-32-AES 3 */
de224c30
SS
3373 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
3374 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
3375 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
3376 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
f3d1044c 3377 .klen = 32,
de224c30
SS
3378 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3379 "\x00\x00\x00\x02\x00\x00\x00\x00",
3380 .input = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
3381 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
f3d1044c 3382 .ilen = 16,
de224c30
SS
3383 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3384 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3385 .rlen = 16,
3386 }, { /* LRW-32-AES 4 */
de224c30
SS
3387 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
3388 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
3389 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
3390 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
3391 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
f3d1044c 3392 .klen = 40,
de224c30
SS
3393 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3394 "\x00\x00\x00\x00\x00\x00\x00\x01",
3395 .input = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
3396 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
f3d1044c 3397 .ilen = 16,
de224c30
SS
3398 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3399 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3400 .rlen = 16,
3401 }, { /* LRW-32-AES 5 */
de224c30
SS
3402 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
3403 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
3404 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
3405 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
3406 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
f3d1044c 3407 .klen = 40,
de224c30
SS
3408 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3409 "\x00\x00\x00\x02\x00\x00\x00\x00",
3410 .input = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
3411 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
f3d1044c 3412 .ilen = 16,
de224c30
SS
3413 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3414 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3415 .rlen = 16,
3416 }, { /* LRW-32-AES 6 */
de224c30
SS
3417 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3418 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3419 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3420 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3421 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3422 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 3423 .klen = 48,
de224c30
SS
3424 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3425 "\x00\x00\x00\x00\x00\x00\x00\x01",
3426 .input = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
3427 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
f3d1044c 3428 .ilen = 16,
de224c30
SS
3429 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3430 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3431 .rlen = 16,
3432 }, { /* LRW-32-AES 7 */
de224c30
SS
3433 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
3434 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
3435 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
3436 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
3437 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
3438 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
f3d1044c 3439 .klen = 48,
de224c30
SS
3440 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3441 "\x00\x00\x00\x02\x00\x00\x00\x00",
3442 .input = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
3443 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
f3d1044c 3444 .ilen = 16,
de224c30
SS
3445 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3446 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3447 .rlen = 16,
3448 }, {
3449/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
de224c30
SS
3450 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3451 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3452 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3453 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3454 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3455 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 3456 .klen = 48,
de224c30
SS
3457 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3458 "\x00\x00\x00\x00\x00\x00\x00\x01",
3459 .input = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
3460 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
3461 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
3462 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
3463 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
3464 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
3465 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
3466 "\xe8\x58\x46\x97\x39\x51\x07\xde"
3467 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
3468 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
3469 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
3470 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
3471 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
3472 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
3473 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
3474 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
3475 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
3476 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
3477 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
3478 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
3479 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
3480 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
3481 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
3482 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
3483 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
3484 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
3485 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
3486 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
3487 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
3488 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
3489 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
3490 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
3491 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
3492 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
3493 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
3494 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
3495 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
3496 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
3497 "\xb8\x79\x78\x97\x94\xff\x72\x13"
3498 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
3499 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
3500 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
3501 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
3502 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
3503 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
3504 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
3505 "\x1e\x86\x53\x11\x53\x94\x00\xee"
3506 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
3507 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
3508 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
3509 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
3510 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
3511 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
3512 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
3513 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
3514 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
3515 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
3516 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
3517 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
3518 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
3519 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
3520 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
3521 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
3522 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
f3d1044c 3523 .ilen = 512,
de224c30
SS
3524 .result = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
3525 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
3526 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
3527 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
3528 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
3529 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
3530 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
3531 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
3532 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
3533 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
3534 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
3535 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
3536 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
3537 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
3538 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
3539 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
3540 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
3541 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
3542 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
3543 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
3544 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
3545 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
3546 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
3547 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
3548 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
3549 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
3550 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
3551 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
3552 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
3553 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
3554 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
3555 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
3556 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
3557 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
3558 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
3559 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
3560 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
3561 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
3562 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
3563 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
3564 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
3565 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
3566 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
3567 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
3568 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
3569 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
3570 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
3571 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
3572 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
3573 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
3574 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
3575 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
3576 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
3577 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
3578 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
3579 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
3580 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
3581 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
3582 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
3583 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
3584 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
3585 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
3586 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
3587 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
f3d1044c
RS
3588 .rlen = 512,
3589 }
3590};
3591
f19f5111
RS
3592static struct cipher_testvec aes_xts_enc_tv_template[] = {
3593 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3594 { /* XTS-AES 1 */
de224c30
SS
3595 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3596 "\x00\x00\x00\x00\x00\x00\x00\x00"
3597 "\x00\x00\x00\x00\x00\x00\x00\x00"
3598 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111 3599 .klen = 32,
de224c30
SS
3600 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3601 "\x00\x00\x00\x00\x00\x00\x00\x00",
3602 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
3603 "\x00\x00\x00\x00\x00\x00\x00\x00"
3604 "\x00\x00\x00\x00\x00\x00\x00\x00"
3605 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111 3606 .ilen = 32,
de224c30
SS
3607 .result = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3608 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3609 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3610 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
f19f5111
RS
3611 .rlen = 32,
3612 }, { /* XTS-AES 2 */
de224c30
SS
3613 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3614 "\x11\x11\x11\x11\x11\x11\x11\x11"
3615 "\x22\x22\x22\x22\x22\x22\x22\x22"
3616 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3617 .klen = 32,
de224c30
SS
3618 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3619 "\x00\x00\x00\x00\x00\x00\x00\x00",
3620 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3621 "\x44\x44\x44\x44\x44\x44\x44\x44"
3622 "\x44\x44\x44\x44\x44\x44\x44\x44"
3623 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111 3624 .ilen = 32,
de224c30
SS
3625 .result = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3626 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3627 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3628 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
f19f5111
RS
3629 .rlen = 32,
3630 }, { /* XTS-AES 3 */
de224c30
SS
3631 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3632 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3633 "\x22\x22\x22\x22\x22\x22\x22\x22"
3634 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3635 .klen = 32,
de224c30
SS
3636 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3637 "\x00\x00\x00\x00\x00\x00\x00\x00",
3638 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3639 "\x44\x44\x44\x44\x44\x44\x44\x44"
3640 "\x44\x44\x44\x44\x44\x44\x44\x44"
3641 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111 3642 .ilen = 32,
de224c30
SS
3643 .result = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3644 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3645 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3646 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
f19f5111
RS
3647 .rlen = 32,
3648 }, { /* XTS-AES 4 */
de224c30
SS
3649 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3650 "\x23\x53\x60\x28\x74\x71\x35\x26"
3651 "\x31\x41\x59\x26\x53\x58\x97\x93"
3652 "\x23\x84\x62\x64\x33\x83\x27\x95",
f19f5111 3653 .klen = 32,
de224c30
SS
3654 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3655 "\x00\x00\x00\x00\x00\x00\x00\x00",
3656 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3657 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3658 "\x10\x11\x12\x13\x14\x15\x16\x17"
3659 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3660 "\x20\x21\x22\x23\x24\x25\x26\x27"
3661 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3662 "\x30\x31\x32\x33\x34\x35\x36\x37"
3663 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3664 "\x40\x41\x42\x43\x44\x45\x46\x47"
3665 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3666 "\x50\x51\x52\x53\x54\x55\x56\x57"
3667 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3668 "\x60\x61\x62\x63\x64\x65\x66\x67"
3669 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3670 "\x70\x71\x72\x73\x74\x75\x76\x77"
3671 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3672 "\x80\x81\x82\x83\x84\x85\x86\x87"
3673 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3674 "\x90\x91\x92\x93\x94\x95\x96\x97"
3675 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3676 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3677 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3678 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3679 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3680 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3681 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3682 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3683 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3684 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3685 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3686 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3687 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3688 "\x00\x01\x02\x03\x04\x05\x06\x07"
3689 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3690 "\x10\x11\x12\x13\x14\x15\x16\x17"
3691 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3692 "\x20\x21\x22\x23\x24\x25\x26\x27"
3693 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3694 "\x30\x31\x32\x33\x34\x35\x36\x37"
3695 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3696 "\x40\x41\x42\x43\x44\x45\x46\x47"
3697 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3698 "\x50\x51\x52\x53\x54\x55\x56\x57"
3699 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3700 "\x60\x61\x62\x63\x64\x65\x66\x67"
3701 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3702 "\x70\x71\x72\x73\x74\x75\x76\x77"
3703 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3704 "\x80\x81\x82\x83\x84\x85\x86\x87"
3705 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3706 "\x90\x91\x92\x93\x94\x95\x96\x97"
3707 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3708 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3709 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3710 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3711 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3712 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3713 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3714 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3715 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3716 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3717 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3718 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3719 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
f19f5111 3720 .ilen = 512,
de224c30
SS
3721 .result = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3722 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3723 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3724 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3725 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3726 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3727 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3728 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3729 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3730 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3731 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3732 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3733 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3734 "\x22\x97\x61\x46\xae\x20\xce\x84"
3735 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3736 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3737 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3738 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3739 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3740 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3741 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3742 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3743 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3744 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3745 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3746 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3747 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3748 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3749 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3750 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3751 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3752 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3753 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3754 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3755 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3756 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3757 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3758 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3759 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3760 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3761 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3762 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3763 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3764 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3765 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3766 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3767 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3768 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3769 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3770 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3771 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3772 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3773 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3774 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3775 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3776 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3777 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3778 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3779 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3780 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3781 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3782 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3783 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3784 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
f19f5111
RS
3785 .rlen = 512,
3786 }
3787};
3788
3789static struct cipher_testvec aes_xts_dec_tv_template[] = {
3790 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3791 { /* XTS-AES 1 */
de224c30
SS
3792 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3793 "\x00\x00\x00\x00\x00\x00\x00\x00"
3794 "\x00\x00\x00\x00\x00\x00\x00\x00"
3795 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111 3796 .klen = 32,
de224c30
SS
3797 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3798 "\x00\x00\x00\x00\x00\x00\x00\x00",
3799 .input = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3800 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3801 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3802 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
f19f5111 3803 .ilen = 32,
de224c30
SS
3804 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
3805 "\x00\x00\x00\x00\x00\x00\x00\x00"
3806 "\x00\x00\x00\x00\x00\x00\x00\x00"
3807 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111
RS
3808 .rlen = 32,
3809 }, { /* XTS-AES 2 */
de224c30
SS
3810 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3811 "\x11\x11\x11\x11\x11\x11\x11\x11"
3812 "\x22\x22\x22\x22\x22\x22\x22\x22"
3813 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3814 .klen = 32,
de224c30
SS
3815 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3816 "\x00\x00\x00\x00\x00\x00\x00\x00",
3817 .input = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3818 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3819 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3820 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
f19f5111 3821 .ilen = 32,
de224c30
SS
3822 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3823 "\x44\x44\x44\x44\x44\x44\x44\x44"
3824 "\x44\x44\x44\x44\x44\x44\x44\x44"
3825 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111
RS
3826 .rlen = 32,
3827 }, { /* XTS-AES 3 */
de224c30
SS
3828 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3829 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3830 "\x22\x22\x22\x22\x22\x22\x22\x22"
3831 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3832 .klen = 32,
de224c30
SS
3833 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3834 "\x00\x00\x00\x00\x00\x00\x00\x00",
3835 .input = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3836 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3837 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3838 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
f19f5111 3839 .ilen = 32,
de224c30
SS
3840 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3841 "\x44\x44\x44\x44\x44\x44\x44\x44"
3842 "\x44\x44\x44\x44\x44\x44\x44\x44"
3843 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111
RS
3844 .rlen = 32,
3845 }, { /* XTS-AES 4 */
de224c30
SS
3846 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3847 "\x23\x53\x60\x28\x74\x71\x35\x26"
3848 "\x31\x41\x59\x26\x53\x58\x97\x93"
3849 "\x23\x84\x62\x64\x33\x83\x27\x95",
f19f5111 3850 .klen = 32,
de224c30
SS
3851 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3852 "\x00\x00\x00\x00\x00\x00\x00\x00",
3853 .input = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3854 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3855 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3856 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3857 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3858 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3859 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3860 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3861 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3862 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3863 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3864 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3865 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3866 "\x22\x97\x61\x46\xae\x20\xce\x84"
3867 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3868 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3869 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3870 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3871 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3872 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3873 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3874 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3875 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3876 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3877 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3878 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3879 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3880 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3881 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3882 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3883 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3884 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3885 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3886 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3887 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3888 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3889 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3890 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3891 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3892 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3893 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3894 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3895 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3896 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3897 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3898 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3899 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3900 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3901 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3902 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3903 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3904 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3905 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3906 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3907 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3908 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3909 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3910 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3911 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3912 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3913 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3914 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3915 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3916 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
f19f5111 3917 .ilen = 512,
de224c30
SS
3918 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
3919 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3920 "\x10\x11\x12\x13\x14\x15\x16\x17"
3921 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3922 "\x20\x21\x22\x23\x24\x25\x26\x27"
3923 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3924 "\x30\x31\x32\x33\x34\x35\x36\x37"
3925 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3926 "\x40\x41\x42\x43\x44\x45\x46\x47"
3927 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3928 "\x50\x51\x52\x53\x54\x55\x56\x57"
3929 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3930 "\x60\x61\x62\x63\x64\x65\x66\x67"
3931 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3932 "\x70\x71\x72\x73\x74\x75\x76\x77"
3933 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3934 "\x80\x81\x82\x83\x84\x85\x86\x87"
3935 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3936 "\x90\x91\x92\x93\x94\x95\x96\x97"
3937 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3938 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3939 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3940 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3941 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3942 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3943 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3944 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3945 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3946 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3947 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3948 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3949 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3950 "\x00\x01\x02\x03\x04\x05\x06\x07"
3951 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3952 "\x10\x11\x12\x13\x14\x15\x16\x17"
3953 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3954 "\x20\x21\x22\x23\x24\x25\x26\x27"
3955 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3956 "\x30\x31\x32\x33\x34\x35\x36\x37"
3957 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3958 "\x40\x41\x42\x43\x44\x45\x46\x47"
3959 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3960 "\x50\x51\x52\x53\x54\x55\x56\x57"
3961 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3962 "\x60\x61\x62\x63\x64\x65\x66\x67"
3963 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3964 "\x70\x71\x72\x73\x74\x75\x76\x77"
3965 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3966 "\x80\x81\x82\x83\x84\x85\x86\x87"
3967 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3968 "\x90\x91\x92\x93\x94\x95\x96\x97"
3969 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3970 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3971 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3972 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3973 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3974 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3975 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3976 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3977 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3978 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3979 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3980 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3981 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
f19f5111
RS
3982 .rlen = 512,
3983 }
3984};
3985
23e353c8
JL
3986
3987static struct cipher_testvec aes_ctr_enc_tv_template[] = {
3988 { /* From RFC 3686 */
de224c30
SS
3989 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
3990 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
3991 "\x00\x00\x00\x30",
23e353c8 3992 .klen = 20,
de224c30
SS
3993 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3994 .input = "Single block msg",
23e353c8 3995 .ilen = 16,
de224c30
SS
3996 .result = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
3997 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
23e353c8
JL
3998 .rlen = 16,
3999 }, {
de224c30
SS
4000 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
4001 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
4002 "\x00\x6c\xb6\xdb",
23e353c8 4003 .klen = 20,
de224c30
SS
4004 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
4005 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
4006 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4007 "\x10\x11\x12\x13\x14\x15\x16\x17"
4008 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
4009 .ilen = 32,
4010 .result = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
4011 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
4012 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
4013 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
23e353c8
JL
4014 .rlen = 32,
4015 }, {
de224c30
SS
4016 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
4017 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
4018 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
4019 "\x00\x00\x00\x48",
4020 .klen = 28,
4021 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
4022 .input = "Single block msg",
4023 .ilen = 16,
4024 .result = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
4025 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
23e353c8
JL
4026 .rlen = 16,
4027 }, {
de224c30
SS
4028 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
4029 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
4030 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
4031 "\x00\x96\xb0\x3b",
23e353c8 4032 .klen = 28,
de224c30
SS
4033 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
4034 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
4035 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4036 "\x10\x11\x12\x13\x14\x15\x16\x17"
4037 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8 4038 .ilen = 32,
de224c30
SS
4039 .result = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
4040 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
4041 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
4042 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
4043 .rlen = 32,
4044 }, {
4045 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
4046 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
4047 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
4048 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
4049 "\x00\x00\x00\x60",
23e353c8 4050 .klen = 36,
de224c30
SS
4051 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
4052 .input = "Single block msg",
23e353c8 4053 .ilen = 16,
de224c30
SS
4054 .result = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
4055 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
4056 .rlen = 16,
4057 }, {
4058 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
4059 "\x07\x96\x36\x58\x79\xef\xf8\x86"
4060 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
4061 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
4062 "\x00\xfa\xac\x24",
4063 .klen = 36,
4064 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
4065 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
4066 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4067 "\x10\x11\x12\x13\x14\x15\x16\x17"
4068 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8 4069 .ilen = 32,
de224c30
SS
4070 .result = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
4071 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
4072 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
4073 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
23e353c8 4074 .rlen = 32,
a773edb3
TSH
4075 }, {
4076 // generated using Crypto++
de224c30
SS
4077 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
4078 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4079 "\x10\x11\x12\x13\x14\x15\x16\x17"
4080 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
4081 "\x00\x00\x00\x00",
a773edb3 4082 .klen = 32 + 4,
de224c30
SS
4083 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
4084 .input =
4085 "\x00\x01\x02\x03\x04\x05\x06\x07"
4086 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4087 "\x10\x11\x12\x13\x14\x15\x16\x17"
4088 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
4089 "\x20\x21\x22\x23\x24\x25\x26\x27"
4090 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
4091 "\x30\x31\x32\x33\x34\x35\x36\x37"
4092 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
4093 "\x40\x41\x42\x43\x44\x45\x46\x47"
4094 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
4095 "\x50\x51\x52\x53\x54\x55\x56\x57"
4096 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
4097 "\x60\x61\x62\x63\x64\x65\x66\x67"
4098 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
4099 "\x70\x71\x72\x73\x74\x75\x76\x77"
4100 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
4101 "\x80\x81\x82\x83\x84\x85\x86\x87"
4102 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
4103 "\x90\x91\x92\x93\x94\x95\x96\x97"
4104 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
4105 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
4106 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
4107 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
4108 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
4109 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
4110 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
4111 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
4112 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
4113 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
4114 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
4115 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
4116 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
4117 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
4118 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
4119 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
4120 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
4121 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
4122 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
4123 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
4124 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
4125 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
4126 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
4127 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
4128 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
4129 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
4130 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
4131 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
4132 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
4133 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
4134 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
4135 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
4136 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
4137 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
4138 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
4139 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
4140 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
4141 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
4142 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
4143 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
4144 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
4145 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
4146 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
4147 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
4148 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
4149 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
4150 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
4151 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
4152 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
4153 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
4154 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
4155 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
4156 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
4157 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
4158 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
4159 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
4160 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
4161 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
4162 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
4163 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
4164 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
4165 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
4166 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
4167 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
4168 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
4169 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
4170 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
4171 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
4172 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
4173 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
4174 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
4175 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
4176 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
4177 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
4178 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
4179 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
4180 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
4181 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
4182 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
4183 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
4184 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
4185 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
4186 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
4187 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
4188 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
4189 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
4190 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
4191 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
4192 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
4193 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
4194 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
4195 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
4196 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
4197 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
4198 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
4199 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
4200 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
4201 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
4202 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
4203 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
4204 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
4205 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
4206 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
4207 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
4208 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
4209 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
4210 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
4211 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
4212 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
4213 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
4214 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
4215 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
4216 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
4217 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
4218 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
4219 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
4220 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
4221 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
4222 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
4223 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
4224 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
4225 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
4226 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
4227 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
4228 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
4229 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
4230 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
4231 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
4232 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
4233 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
4234 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
4235 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
4236 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
4237 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
4238 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
4239 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
4240 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
4241 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
4242 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
4243 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
4244 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
4245 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
4246 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
4247 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
4248 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
4249 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
4250 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
4251 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
4252 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
4253 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
4254 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
4255 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
4256 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
4257 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
4258 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
4259 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
4260 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
4261 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
4262 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
4263 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
4264 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
4265 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
4266 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
4267 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
4268 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
4269 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
4270 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
4271 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
4272 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
4273 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
4274 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
4275 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
4276 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
4277 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
4278 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
4279 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
4280 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
4281 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
4282 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
4283 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
4284 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
4285 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
4286 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
4287 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
4288 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
4289 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
4290 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
4291 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
4292 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
4293 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
4294 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
4295 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
4296 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
4297 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
4298 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
4299 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
4300 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
4301 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
4302 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
4303 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
4304 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
4305 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
4306 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
4307 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
4308 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
4309 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
4310 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
4311 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
4312 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
4313 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
4314 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
4315 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
4316 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
4317 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
4318 "\x38\x47\x56\x65\x74\x83\x92\xa1"
4319 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
4320 "\x28\x37\x46\x55\x64\x73\x82\x91"
4321 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
4322 "\x18\x27\x36\x45\x54\x63\x72\x81"
4323 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
4324 "\x08\x17\x26\x35\x44\x53\x62\x71"
4325 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
4326 "\xf8\x07\x16\x25\x34\x43\x52\x61"
4327 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
4328 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
4329 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
4330 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
4331 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
4332 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
4333 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
4334 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
4335 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
4336 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
4337 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
4338 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
4339 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
4340 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
4341 "\x00\x11\x22\x33\x44\x55\x66\x77"
4342 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
4343 "\x10\x21\x32\x43\x54\x65\x76\x87"
4344 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
4345 "\x20\x31\x42\x53\x64\x75\x86\x97"
4346 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
4347 "\x30\x41\x52\x63\x74\x85\x96\xa7"
4348 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
4349 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
4350 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
4351 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
4352 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
4353 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
4354 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
4355 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
4356 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
4357 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
4358 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
4359 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
4360 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
4361 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
4362 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
4363 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
4364 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
4365 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
4366 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
4367 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
4368 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
4369 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
4370 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
4371 "\xf0\x01\x12\x23\x34\x45\x56\x67"
4372 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
4373 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
4374 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
4375 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
4376 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
4377 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
4378 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
4379 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
4380 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
4381 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
4382 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
4383 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
4384 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
4385 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
4386 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
4387 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
4388 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
4389 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
4390 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
4391 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
4392 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
4393 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
4394 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
4395 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
4396 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
4397 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
4398 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
4399 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
4400 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
4401 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
4402 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
4403 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
4404 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
4405 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
4406 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
4407 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
4408 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
4409 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
4410 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
4411 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
4412 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
4413 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
4414 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
4415 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
4416 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
4417 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
4418 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
4419 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
4420 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
4421 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
4422 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
4423 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
4424 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
4425 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
4426 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
4427 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
4428 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
4429 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
4430 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
4431 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
4432 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
4433 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
4434 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
4435 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
4436 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
4437 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
4438 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
4439 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
4440 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
4441 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
4442 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
4443 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
4444 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
4445 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
4446 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
4447 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
4448 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
4449 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
4450 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
4451 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
4452 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
4453 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
4454 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
4455 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
4456 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
4457 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
4458 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
4459 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
4460 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
4461 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
4462 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
4463 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
4464 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
4465 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
4466 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
4467 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
4468 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
4469 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
4470 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
4471 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
4472 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
4473 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
4474 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
4475 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
4476 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
4477 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
4478 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
4479 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
4480 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
4481 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
4482 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
4483 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
4484 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
4485 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
4486 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
4487 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
4488 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
4489 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
4490 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
4491 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
4492 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
4493 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
4494 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
4495 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
4496 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
4497 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
4498 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
4499 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
4500 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
4501 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
4502 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
4503 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
4504 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
4505 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
4506 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
4507 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
4508 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
4509 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
4510 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
4511 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
4512 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
4513 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
4514 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
4515 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
4516 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
4517 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
4518 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
4519 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
4520 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
4521 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
4522 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
4523 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
4524 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
4525 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
4526 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
4527 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
4528 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
4529 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
4530 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
4531 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
4532 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
4533 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
4534 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
4535 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
4536 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
4537 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
4538 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
4539 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
4540 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
4541 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
4542 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
4543 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
4544 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
4545 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
4546 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
4547 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
4548 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
4549 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
4550 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
4551 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
4552 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
4553 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
4554 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
4555 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
4556 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
4557 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
4558 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
4559 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
4560 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
4561 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
4562 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
4563 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
4564 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
4565 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
4566 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
4567 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
4568 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
4569 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
4570 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
4571 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
4572 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
4573 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
4574 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
4575 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
4576 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
4577 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
4578 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
4579 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
4580 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
4581 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
4582 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
4583 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
4584 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
4585 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
4586 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
4587 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
4588 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
4589 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
4590 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
4591 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
4592 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
4593 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
4594 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
4595 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
4596 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
4597 "\x00\x21\x42\x63",
a773edb3 4598 .ilen = 4100,
de224c30
SS
4599 .result =
4600 "\xf0\x5c\x74\xad\x4e\xbc\x99\xe2"
4601 "\xae\xff\x91\x3a\x44\xcf\x38\x32"
4602 "\x1e\xad\xa7\xcd\xa1\x39\x95\xaa"
4603 "\x10\xb1\xb3\x2e\x04\x31\x8f\x86"
4604 "\xf2\x62\x74\x70\x0c\xa4\x46\x08"
4605 "\xa8\xb7\x99\xa8\xe9\xd2\x73\x79"
4606 "\x7e\x6e\xd4\x8f\x1e\xc7\x8e\x31"
4607 "\x0b\xfa\x4b\xce\xfd\xf3\x57\x71"
4608 "\xe9\x46\x03\xa5\x3d\x34\x00\xe2"
4609 "\x18\xff\x75\x6d\x06\x2d\x00\xab"
4610 "\xb9\x3e\x6c\x59\xc5\x84\x06\xb5"
4611 "\x8b\xd0\x89\x9c\x4a\x79\x16\xc6"
4612 "\x3d\x74\x54\xfa\x44\xcd\x23\x26"
4613 "\x5c\xcf\x7e\x28\x92\x32\xbf\xdf"
4614 "\xa7\x20\x3c\x74\x58\x2a\x9a\xde"
4615 "\x61\x00\x1c\x4f\xff\x59\xc4\x22"
4616 "\xac\x3c\xd0\xe8\x6c\xf9\x97\x1b"
4617 "\x58\x9b\xad\x71\xe8\xa9\xb5\x0d"
4618 "\xee\x2f\x04\x1f\x7f\xbc\x99\xee"
4619 "\x84\xff\x42\x60\xdc\x3a\x18\xa5"
4620 "\x81\xf9\xef\xdc\x7a\x0f\x65\x41"
4621 "\x2f\xa3\xd3\xf9\xc2\xcb\xc0\x4d"
4622 "\x8f\xd3\x76\x96\xad\x49\x6d\x38"
4623 "\x3d\x39\x0b\x6c\x80\xb7\x54\x69"
4624 "\xf0\x2c\x90\x02\x29\x0d\x1c\x12"
4625 "\xad\x55\xc3\x8b\x68\xd9\xcc\xb3"
4626 "\xb2\x64\x33\x90\x5e\xca\x4b\xe2"
4627 "\xfb\x75\xdc\x63\xf7\x9f\x82\x74"
4628 "\xf0\xc9\xaa\x7f\xe9\x2a\x9b\x33"
4629 "\xbc\x88\x00\x7f\xca\xb2\x1f\x14"
4630 "\xdb\xc5\x8e\x7b\x11\x3c\x3e\x08"
4631 "\xf3\x83\xe8\xe0\x94\x86\x2e\x92"
4632 "\x78\x6b\x01\xc9\xc7\x83\xba\x21"
4633 "\x6a\x25\x15\x33\x4e\x45\x08\xec"
4634 "\x35\xdb\xe0\x6e\x31\x51\x79\xa9"
4635 "\x42\x44\x65\xc1\xa0\xf1\xf9\x2a"
4636 "\x70\xd5\xb6\xc6\xc1\x8c\x39\xfc"
4637 "\x25\xa6\x55\xd9\xdd\x2d\x4c\xec"
4638 "\x49\xc6\xeb\x0e\xa8\x25\x2a\x16"
4639 "\x1b\x66\x84\xda\xe2\x92\xe5\xc0"
4640 "\xc8\x53\x07\xaf\x80\x84\xec\xfd"
4641 "\xcd\xd1\x6e\xcd\x6f\x6a\xf5\x36"
4642 "\xc5\x15\xe5\x25\x7d\x77\xd1\x1a"
4643 "\x93\x36\xa9\xcf\x7c\xa4\x54\x4a"
4644 "\x06\x51\x48\x4e\xf6\x59\x87\xd2"
4645 "\x04\x02\xef\xd3\x44\xde\x76\x31"
4646 "\xb3\x34\x17\x1b\x9d\x66\x11\x9f"
4647 "\x1e\xcc\x17\xe9\xc7\x3c\x1b\xe7"
4648 "\xcb\x50\x08\xfc\xdc\x2b\x24\xdb"
4649 "\x65\x83\xd0\x3b\xe3\x30\xea\x94"
4650 "\x6c\xe7\xe8\x35\x32\xc7\xdb\x64"
4651 "\xb4\x01\xab\x36\x2c\x77\x13\xaf"
4652 "\xf8\x2b\x88\x3f\x54\x39\xc4\x44"
4653 "\xfe\xef\x6f\x68\x34\xbe\x0f\x05"
4654 "\x16\x6d\xf6\x0a\x30\xe7\xe3\xed"
4655 "\xc4\xde\x3c\x1b\x13\xd8\xdb\xfe"
4656 "\x41\x62\xe5\x28\xd4\x8d\xa3\xc7"
4657 "\x93\x97\xc6\x48\x45\x1d\x9f\x83"
4658 "\xdf\x4b\x40\x3e\x42\x25\x87\x80"
4659 "\x4c\x7d\xa8\xd4\x98\x23\x95\x75"
4660 "\x41\x8c\xda\x41\x9b\xd4\xa7\x06"
4661 "\xb5\xf1\x71\x09\x53\xbe\xca\xbf"
4662 "\x32\x03\xed\xf0\x50\x1c\x56\x39"
4663 "\x5b\xa4\x75\x18\xf7\x9b\x58\xef"
4664 "\x53\xfc\x2a\x38\x23\x15\x75\xcd"
4665 "\x45\xe5\x5a\x82\x55\xba\x21\xfa"
4666 "\xd4\xbd\xc6\x94\x7c\xc5\x80\x12"
4667 "\xf7\x4b\x32\xc4\x9a\x82\xd8\x28"
4668 "\x8f\xd9\xc2\x0f\x60\x03\xbe\x5e"
4669 "\x21\xd6\x5f\x58\xbf\x5c\xb1\x32"
4670 "\x82\x8d\xa9\xe5\xf2\x66\x1a\xc0"
4671 "\xa0\xbc\x58\x2f\x71\xf5\x2f\xed"
4672 "\xd1\x26\xb9\xd8\x49\x5a\x07\x19"
4673 "\x01\x7c\x59\xb0\xf8\xa4\xb7\xd3"
4674 "\x7b\x1a\x8c\x38\xf4\x50\xa4\x59"
4675 "\xb0\xcc\x41\x0b\x88\x7f\xe5\x31"
4676 "\xb3\x42\xba\xa2\x7e\xd4\x32\x71"
4677 "\x45\x87\x48\xa9\xc2\xf2\x89\xb3"
4678 "\xe4\xa7\x7e\x52\x15\x61\xfa\xfe"
4679 "\xc9\xdd\x81\xeb\x13\xab\xab\xc3"
4680 "\x98\x59\xd8\x16\x3d\x14\x7a\x1c"
4681 "\x3c\x41\x9a\x16\x16\x9b\xd2\xd2"
4682 "\x69\x3a\x29\x23\xac\x86\x32\xa5"
4683 "\x48\x9c\x9e\xf3\x47\x77\x81\x70"
4684 "\x24\xe8\x85\xd2\xf5\xb5\xfa\xff"
4685 "\x59\x6a\xd3\x50\x59\x43\x59\xde"
4686 "\xd9\xf1\x55\xa5\x0c\xc3\x1a\x1a"
4687 "\x18\x34\x0d\x1a\x63\x33\xed\x10"
4688 "\xe0\x1d\x2a\x18\xd2\xc0\x54\xa8"
4689 "\xca\xb5\x9a\xd3\xdd\xca\x45\x84"
4690 "\x50\xe7\x0f\xfe\xa4\x99\x5a\xbe"
4691 "\x43\x2d\x9a\xcb\x92\x3f\x5a\x1d"
4692 "\x85\xd8\xc9\xdf\x68\xc9\x12\x80"
4693 "\x56\x0c\xdc\x00\xdc\x3a\x7d\x9d"
4694 "\xa3\xa2\xe8\x4d\xbf\xf9\x70\xa0"
4695 "\xa4\x13\x4f\x6b\xaf\x0a\x89\x7f"
4696 "\xda\xf0\xbf\x9b\xc8\x1d\xe5\xf8"
4697 "\x2e\x8b\x07\xb5\x73\x1b\xcc\xa2"
4698 "\xa6\xad\x30\xbc\x78\x3c\x5b\x10"
4699 "\xfa\x5e\x62\x2d\x9e\x64\xb3\x33"
4700 "\xce\xf9\x1f\x86\xe7\x8b\xa2\xb8"
4701 "\xe8\x99\x57\x8c\x11\xed\x66\xd9"
4702 "\x3c\x72\xb9\xc3\xe6\x4e\x17\x3a"
4703 "\x6a\xcb\x42\x24\x06\xed\x3e\x4e"
4704 "\xa3\xe8\x6a\x94\xda\x0d\x4e\xd5"
4705 "\x14\x19\xcf\xb6\x26\xd8\x2e\xcc"
4706 "\x64\x76\x38\x49\x4d\xfe\x30\x6d"
4707 "\xe4\xc8\x8c\x7b\xc4\xe0\x35\xba"
4708 "\x22\x6e\x76\xe1\x1a\xf2\x53\xc3"
4709 "\x28\xa2\x82\x1f\x61\x69\xad\xc1"
4710 "\x7b\x28\x4b\x1e\x6c\x85\x95\x9b"
4711 "\x51\xb5\x17\x7f\x12\x69\x8c\x24"
4712 "\xd5\xc7\x5a\x5a\x11\x54\xff\x5a"
4713 "\xf7\x16\xc3\x91\xa6\xf0\xdc\x0a"
4714 "\xb6\xa7\x4a\x0d\x7a\x58\xfe\xa5"
4715 "\xf5\xcb\x8f\x7b\x0e\xea\x57\xe7"
4716 "\xbd\x79\xd6\x1c\x88\x23\x6c\xf2"
4717 "\x4d\x29\x77\x53\x35\x6a\x00\x8d"
4718 "\xcd\xa3\x58\xbe\x77\x99\x18\xf8"
4719 "\xe6\xe1\x8f\xe9\x37\x8f\xe3\xe2"
4720 "\x5a\x8a\x93\x25\xaf\xf3\x78\x80"
4721 "\xbe\xa6\x1b\xc6\xac\x8b\x1c\x91"
4722 "\x58\xe1\x9f\x89\x35\x9d\x1d\x21"
4723 "\x29\x9f\xf4\x99\x02\x27\x0f\xa8"
4724 "\x4f\x79\x94\x2b\x33\x2c\xda\xa2"
4725 "\x26\x39\x83\x94\xef\x27\xd8\x53"
4726 "\x8f\x66\x0d\xe4\x41\x7d\x34\xcd"
4727 "\x43\x7c\x95\x0a\x53\xef\x66\xda"
4728 "\x7e\x9b\xf3\x93\xaf\xd0\x73\x71"
4729 "\xba\x40\x9b\x74\xf8\xd7\xd7\x41"
4730 "\x6d\xaf\x72\x9c\x8d\x21\x87\x3c"
4731 "\xfd\x0a\x90\xa9\x47\x96\x9e\xd3"
4732 "\x88\xee\x73\xcf\x66\x2f\x52\x56"
4733 "\x6d\xa9\x80\x4c\xe2\x6f\x62\x88"
4734 "\x3f\x0e\x54\x17\x48\x80\x5d\xd3"
4735 "\xc3\xda\x25\x3d\xa1\xc8\xcb\x9f"
4736 "\x9b\x70\xb3\xa1\xeb\x04\x52\xa1"
4737 "\xf2\x22\x0f\xfc\xc8\x18\xfa\xf9"
4738 "\x85\x9c\xf1\xac\xeb\x0c\x02\x46"
4739 "\x75\xd2\xf5\x2c\xe3\xd2\x59\x94"
4740 "\x12\xf3\x3c\xfc\xd7\x92\xfa\x36"
4741 "\xba\x61\x34\x38\x7c\xda\x48\x3e"
4742 "\x08\xc9\x39\x23\x5e\x02\x2c\x1a"
4743 "\x18\x7e\xb4\xd9\xfd\x9e\x40\x02"
4744 "\xb1\x33\x37\x32\xe7\xde\xd6\xd0"
4745 "\x7c\x58\x65\x4b\xf8\x34\x27\x9c"
4746 "\x44\xb4\xbd\xe9\xe9\x4c\x78\x7d"
4747 "\x4b\x9f\xce\xb1\xcd\x47\xa5\x37"
4748 "\xe5\x6d\xbd\xb9\x43\x94\x0a\xd4"
4749 "\xd6\xf9\x04\x5f\xb5\x66\x6c\x1a"
4750 "\x35\x12\xe3\x36\x28\x27\x36\x58"
4751 "\x01\x2b\x79\xe4\xba\x6d\x10\x7d"
4752 "\x65\xdf\x84\x95\xf4\xd5\xb6\x8f"
4753 "\x2b\x9f\x96\x00\x86\x60\xf0\x21"
4754 "\x76\xa8\x6a\x8c\x28\x1c\xb3\x6b"
4755 "\x97\xd7\xb6\x53\x2a\xcc\xab\x40"
4756 "\x9d\x62\x79\x58\x52\xe6\x65\xb7"
4757 "\xab\x55\x67\x9c\x89\x7c\x03\xb0"
4758 "\x73\x59\xc5\x81\xf5\x18\x17\x5c"
4759 "\x89\xf3\x78\x35\x44\x62\x78\x72"
4760 "\xd0\x96\xeb\x31\xe7\x87\x77\x14"
4761 "\x99\x51\xf2\x59\x26\x9e\xb5\xa6"
4762 "\x45\xfe\x6e\xbd\x07\x4c\x94\x5a"
4763 "\xa5\x7d\xfc\xf1\x2b\x77\xe2\xfe"
4764 "\x17\xd4\x84\xa0\xac\xb5\xc7\xda"
4765 "\xa9\x1a\xb6\xf3\x74\x11\xb4\x9d"
4766 "\xfb\x79\x2e\x04\x2d\x50\x28\x83"
4767 "\xbf\xc6\x52\xd3\x34\xd6\xe8\x7a"
4768 "\xb6\xea\xe7\xa8\x6c\x15\x1e\x2c"
4769 "\x57\xbc\x48\x4e\x5f\x5c\xb6\x92"
4770 "\xd2\x49\x77\x81\x6d\x90\x70\xae"
4771 "\x98\xa1\x03\x0d\x6b\xb9\x77\x14"
4772 "\xf1\x4e\x23\xd3\xf8\x68\xbd\xc2"
4773 "\xfe\x04\xb7\x5c\xc5\x17\x60\x8f"
4774 "\x65\x54\xa4\x7a\x42\xdc\x18\x0d"
4775 "\xb5\xcf\x0f\xd3\xc7\x91\x66\x1b"
4776 "\x45\x42\x27\x75\x50\xe5\xee\xb8"
4777 "\x7f\x33\x2c\xba\x4a\x92\x4d\x2c"
4778 "\x3c\xe3\x0d\x80\x01\xba\x0d\x29"
4779 "\xd8\x3c\xe9\x13\x16\x57\xe6\xea"
4780 "\x94\x52\xe7\x00\x4d\x30\xb0\x0f"
4781 "\x35\xb8\xb8\xa7\xb1\xb5\x3b\x44"
4782 "\xe1\x2f\xfd\x88\xed\x43\xe7\x52"
4783 "\x10\x93\xb3\x8a\x30\x6b\x0a\xf7"
4784 "\x23\xc6\x50\x9d\x4a\xb0\xde\xc3"
4785 "\xdc\x9b\x2f\x01\x56\x36\x09\xc5"
4786 "\x2f\x6b\xfe\xf1\xd8\x27\x45\x03"
4787 "\x30\x5e\x5c\x5b\xb4\x62\x0e\x1a"
4788 "\xa9\x21\x2b\x92\x94\x87\x62\x57"
4789 "\x4c\x10\x74\x1a\xf1\x0a\xc5\x84"
4790 "\x3b\x9e\x72\x02\xd7\xcc\x09\x56"
4791 "\xbd\x54\xc1\xf0\xc3\xe3\xb3\xf8"
4792 "\xd2\x0d\x61\xcb\xef\xce\x0d\x05"
4793 "\xb0\x98\xd9\x8e\x4f\xf9\xbc\x93"
4794 "\xa6\xea\xc8\xcf\x10\x53\x4b\xf1"
4795 "\xec\xfc\x89\xf9\x64\xb0\x22\xbf"
4796 "\x9e\x55\x46\x9f\x7c\x50\x8e\x84"
4797 "\x54\x20\x98\xd7\x6c\x40\x1e\xdb"
4798 "\x69\x34\x78\x61\x24\x21\x9c\x8a"
4799 "\xb3\x62\x31\x8b\x6e\xf5\x2a\x35"
4800 "\x86\x13\xb1\x6c\x64\x2e\x41\xa5"
4801 "\x05\xf2\x42\xba\xd2\x3a\x0d\x8e"
4802 "\x8a\x59\x94\x3c\xcf\x36\x27\x82"
4803 "\xc2\x45\xee\x58\xcd\x88\xb4\xec"
4804 "\xde\xb2\x96\x0a\xaf\x38\x6f\x88"
4805 "\xd7\xd8\xe1\xdf\xb9\x96\xa9\x0a"
4806 "\xb1\x95\x28\x86\x20\xe9\x17\x49"
4807 "\xa2\x29\x38\xaa\xa5\xe9\x6e\xf1"
4808 "\x19\x27\xc0\xd5\x2a\x22\xc3\x0b"
4809 "\xdb\x7c\x73\x10\xb9\xba\x89\x76"
4810 "\x54\xae\x7d\x71\xb3\x93\xf6\x32"
4811 "\xe6\x47\x43\x55\xac\xa0\x0d\xc2"
4812 "\x93\x27\x4a\x8e\x0e\x74\x15\xc7"
4813 "\x0b\x85\xd9\x0c\xa9\x30\x7a\x3e"
4814 "\xea\x8f\x85\x6d\x3a\x12\x4f\x72"
4815 "\x69\x58\x7a\x80\xbb\xb5\x97\xf3"
4816 "\xcf\x70\xd2\x5d\xdd\x4d\x21\x79"
4817 "\x54\x4d\xe4\x05\xe8\xbd\xc2\x62"
4818 "\xb1\x3b\x77\x1c\xd6\x5c\xf3\xa0"
4819 "\x79\x00\xa8\x6c\x29\xd9\x18\x24"
4820 "\x36\xa2\x46\xc0\x96\x65\x7f\xbd"
4821 "\x2a\xed\x36\x16\x0c\xaa\x9f\xf4"
4822 "\xc5\xb4\xe2\x12\xed\x69\xed\x4f"
4823 "\x26\x2c\x39\x52\x89\x98\xe7\x2c"
4824 "\x99\xa4\x9e\xa3\x9b\x99\x46\x7a"
4825 "\x3a\xdc\xa8\x59\xa3\xdb\xc3\x3b"
4826 "\x95\x0d\x3b\x09\x6e\xee\x83\x5d"
4827 "\x32\x4d\xed\xab\xfa\x98\x14\x4e"
4828 "\xc3\x15\x45\x53\x61\xc4\x93\xbd"
4829 "\x90\xf4\x99\x95\x4c\xe6\x76\x92"
4830 "\x29\x90\x46\x30\x92\x69\x7d\x13"
4831 "\xf2\xa5\xcd\x69\x49\x44\xb2\x0f"
4832 "\x63\x40\x36\x5f\x09\xe2\x78\xf8"
4833 "\x91\xe3\xe2\xfa\x10\xf7\xc8\x24"
4834 "\xa8\x89\x32\x5c\x37\x25\x1d\xb2"
4835 "\xea\x17\x8a\x0a\xa9\x64\xc3\x7c"
4836 "\x3c\x7c\xbd\xc6\x79\x34\xe7\xe2"
4837 "\x85\x8e\xbf\xf8\xde\x92\xa0\xae"
4838 "\x20\xc4\xf6\xbb\x1f\x38\x19\x0e"
4839 "\xe8\x79\x9c\xa1\x23\xe9\x54\x7e"
4840 "\x37\x2f\xe2\x94\x32\xaf\xa0\x23"
4841 "\x49\xe4\xc0\xb3\xac\x00\x8f\x36"
4842 "\x05\xc4\xa6\x96\xec\x05\x98\x4f"
4843 "\x96\x67\x57\x1f\x20\x86\x1b\x2d"
4844 "\x69\xe4\x29\x93\x66\x5f\xaf\x6b"
4845 "\x88\x26\x2c\x67\x02\x4b\x52\xd0"
4846 "\x83\x7a\x43\x1f\xc0\x71\x15\x25"
4847 "\x77\x65\x08\x60\x11\x76\x4c\x8d"
4848 "\xed\xa9\x27\xc6\xb1\x2a\x2c\x6a"
4849 "\x4a\x97\xf5\xc6\xb7\x70\x42\xd3"
4850 "\x03\xd1\x24\x95\xec\x6d\xab\x38"
4851 "\x72\xce\xe2\x8b\x33\xd7\x51\x09"
4852 "\xdc\x45\xe0\x09\x96\x32\xf3\xc4"
4853 "\x84\xdc\x73\x73\x2d\x1b\x11\x98"
4854 "\xc5\x0e\x69\x28\x94\xc7\xb5\x4d"
4855 "\xc8\x8a\xd0\xaa\x13\x2e\x18\x74"
4856 "\xdd\xd1\x1e\xf3\x90\xe8\xfc\x9a"
4857 "\x72\x4a\x0e\xd1\xe4\xfb\x0d\x96"
4858 "\xd1\x0c\x79\x85\x1b\x1c\xfe\xe1"
4859 "\x62\x8f\x7a\x73\x32\xab\xc8\x18"
4860 "\x69\xe3\x34\x30\xdf\x13\xa6\xe5"
4861 "\xe8\x0e\x67\x7f\x81\x11\xb4\x60"
4862 "\xc7\xbd\x79\x65\x50\xdc\xc4\x5b"
4863 "\xde\x39\xa4\x01\x72\x63\xf3\xd1"
4864 "\x64\x4e\xdf\xfc\x27\x92\x37\x0d"
4865 "\x57\xcd\x11\x4f\x11\x04\x8e\x1d"
4866 "\x16\xf7\xcd\x92\x9a\x99\x30\x14"
4867 "\xf1\x7c\x67\x1b\x1f\x41\x0b\xe8"
4868 "\x32\xe8\xb8\xc1\x4f\x54\x86\x4f"
4869 "\xe5\x79\x81\x73\xcd\x43\x59\x68"
4870 "\x73\x02\x3b\x78\x21\x72\x43\x00"
4871 "\x49\x17\xf7\x00\xaf\x68\x24\x53"
4872 "\x05\x0a\xc3\x33\xe0\x33\x3f\x69"
4873 "\xd2\x84\x2f\x0b\xed\xde\x04\xf4"
4874 "\x11\x94\x13\x69\x51\x09\x28\xde"
4875 "\x57\x5c\xef\xdc\x9a\x49\x1c\x17"
4876 "\x97\xf3\x96\xc1\x7f\x5d\x2e\x7d"
4877 "\x55\xb8\xb3\x02\x09\xb3\x1f\xe7"
4878 "\xc9\x8d\xa3\x36\x34\x8a\x77\x13"
4879 "\x30\x63\x4c\xa5\xcd\xc3\xe0\x7e"
4880 "\x05\xa1\x7b\x0c\xcb\x74\x47\x31"
4881 "\x62\x03\x43\xf1\x87\xb4\xb0\x85"
4882 "\x87\x8e\x4b\x25\xc7\xcf\xae\x4b"
4883 "\x36\x46\x3e\x62\xbc\x6f\xeb\x5f"
4884 "\x73\xac\xe6\x07\xee\xc1\xa1\xd6"
4885 "\xc4\xab\xc9\xd6\x89\x45\xe1\xf1"
4886 "\x04\x4e\x1a\x6f\xbb\x4f\x3a\xa3"
4887 "\xa0\xcb\xa3\x0a\xd8\x71\x35\x55"
4888 "\xe4\xbc\x2e\x04\x06\xe6\xff\x5b"
4889 "\x1c\xc0\x11\x7c\xc5\x17\xf3\x38"
4890 "\xcf\xe9\xba\x0f\x0e\xef\x02\xc2"
4891 "\x8d\xc6\xbc\x4b\x67\x20\x95\xd7"
4892 "\x2c\x45\x5b\x86\x44\x8c\x6f\x2e"
4893 "\x7e\x9f\x1c\x77\xba\x6b\x0e\xa3"
4894 "\x69\xdc\xab\x24\x57\x60\x47\xc1"
4895 "\xd1\xa5\x9d\x23\xe6\xb1\x37\xfe"
4896 "\x93\xd2\x4c\x46\xf9\x0c\xc6\xfb"
4897 "\xd6\x9d\x99\x69\xab\x7a\x07\x0c"
4898 "\x65\xe7\xc4\x08\x96\xe2\xa5\x01"
4899 "\x3f\x46\x07\x05\x7e\xe8\x9a\x90"
4900 "\x50\xdc\xe9\x7a\xea\xa1\x39\x6e"
4901 "\x66\xe4\x6f\xa5\x5f\xb2\xd9\x5b"
4902 "\xf5\xdb\x2a\x32\xf0\x11\x6f\x7c"
4903 "\x26\x10\x8f\x3d\x80\xe9\x58\xf7"
4904 "\xe0\xa8\x57\xf8\xdb\x0e\xce\x99"
4905 "\x63\x19\x3d\xd5\xec\x1b\x77\x69"
4906 "\x98\xf6\xe4\x5f\x67\x17\x4b\x09"
4907 "\x85\x62\x82\x70\x18\xe2\x9a\x78"
4908 "\xe2\x62\xbd\xb4\xf1\x42\xc6\xfb"
4909 "\x08\xd0\xbd\xeb\x4e\x09\xf2\xc8"
4910 "\x1e\xdc\x3d\x32\x21\x56\x9c\x4f"
4911 "\x35\xf3\x61\x06\x72\x84\xc4\x32"
4912 "\xf2\xf1\xfa\x0b\x2f\xc3\xdb\x02"
4913 "\x04\xc2\xde\x57\x64\x60\x8d\xcf"
4914 "\xcb\x86\x5d\x97\x3e\xb1\x9c\x01"
4915 "\xd6\x28\x8f\x99\xbc\x46\xeb\x05"
4916 "\xaf\x7e\xb8\x21\x2a\x56\x85\x1c"
4917 "\xb3\x71\xa0\xde\xca\x96\xf1\x78"
4918 "\x49\xa2\x99\x81\x80\x5c\x01\xf5"
4919 "\xa0\xa2\x56\x63\xe2\x70\x07\xa5"
4920 "\x95\xd6\x85\xeb\x36\x9e\xa9\x51"
4921 "\x66\x56\x5f\x1d\x02\x19\xe2\xf6"
4922 "\x4f\x73\x38\x09\x75\x64\x48\xe0"
4923 "\xf1\x7e\x0e\xe8\x9d\xf9\xed\x94"
4924 "\xfe\x16\x26\x62\x49\x74\xf4\xb0"
4925 "\xd4\xa9\x6c\xb0\xfd\x53\xe9\x81"
4926 "\xe0\x7a\xbf\xcf\xb5\xc4\x01\x81"
4927 "\x79\x99\x77\x01\x3b\xe9\xa2\xb6"
4928 "\xe6\x6a\x8a\x9e\x56\x1c\x8d\x1e"
4929 "\x8f\x06\x55\x2c\x6c\xdc\x92\x87"
4930 "\x64\x3b\x4b\x19\xa1\x13\x64\x1d"
4931 "\x4a\xe9\xc0\x00\xb8\x95\xef\x6b"
4932 "\x1a\x86\x6d\x37\x52\x02\xc2\xe0"
4933 "\xc8\xbb\x42\x0c\x02\x21\x4a\xc9"
4934 "\xef\xa0\x54\xe4\x5e\x16\x53\x81"
4935 "\x70\x62\x10\xaf\xde\xb8\xb5\xd3"
4936 "\xe8\x5e\x6c\xc3\x8a\x3e\x18\x07"
4937 "\xf2\x2f\x7d\xa7\xe1\x3d\x4e\xb4"
4938 "\x26\xa7\xa3\x93\x86\xb2\x04\x1e"
4939 "\x53\x5d\x86\xd6\xde\x65\xca\xe3"
4940 "\x4e\xc1\xcf\xef\xc8\x70\x1b\x83"
4941 "\x13\xdd\x18\x8b\x0d\x76\xd2\xf6"
4942 "\x37\x7a\x93\x7a\x50\x11\x9f\x96"
4943 "\x86\x25\xfd\xac\xdc\xbe\x18\x93"
4944 "\x19\x6b\xec\x58\x4f\xb9\x75\xa7"
4945 "\xdd\x3f\x2f\xec\xc8\x5a\x84\xab"
4946 "\xd5\xe4\x8a\x07\xf6\x4d\x23\xd6"
4947 "\x03\xfb\x03\x6a\xea\x66\xbf\xd4"
4948 "\xb1\x34\xfb\x78\xe9\x55\xdc\x7c"
4949 "\x3d\x9c\xe5\x9a\xac\xc3\x7a\x80"
4950 "\x24\x6d\xa0\xef\x25\x7c\xb7\xea"
4951 "\xce\x4d\x5f\x18\x60\xce\x87\x22"
4952 "\x66\x2f\xd5\xdd\xdd\x02\x21\x75"
4953 "\x82\xa0\x1f\x58\xc6\xd3\x62\xf7"
4954 "\x32\xd8\xaf\x1e\x07\x77\x51\x96"
4955 "\xd5\x6b\x1e\x7e\x80\x02\xe8\x67"
4956 "\xea\x17\x0b\x10\xd2\x3f\x28\x25"
4957 "\x4f\x05\x77\x02\x14\x69\xf0\x2c"
4958 "\xbe\x0c\xf1\x74\x30\xd1\xb9\x9b"
4959 "\xfc\x8c\xbb\x04\x16\xd9\xba\xc3"
4960 "\xbc\x91\x8a\xc4\x30\xa4\xb0\x12"
4961 "\x4c\x21\x87\xcb\xc9\x1d\x16\x96"
4962 "\x07\x6f\x23\x54\xb9\x6f\x79\xe5"
4963 "\x64\xc0\x64\xda\xb1\xae\xdd\x60"
4964 "\x6c\x1a\x9d\xd3\x04\x8e\x45\xb0"
4965 "\x92\x61\xd0\x48\x81\xed\x5e\x1d"
4966 "\xa0\xc9\xa4\x33\xc7\x13\x51\x5d"
4967 "\x7f\x83\x73\xb6\x70\x18\x65\x3e"
4968 "\x2f\x0e\x7a\x12\x39\x98\xab\xd8"
4969 "\x7e\x6f\xa3\xd1\xba\x56\xad\xbd"
4970 "\xf0\x03\x01\x1c\x85\x35\x9f\xeb"
4971 "\x19\x63\xa1\xaf\xfe\x2d\x35\x50"
4972 "\x39\xa0\x65\x7c\x95\x7e\x6b\xfe"
4973 "\xc1\xac\x07\x7c\x98\x4f\xbe\x57"
4974 "\xa7\x22\xec\xe2\x7e\x29\x09\x53"
4975 "\xe8\xbf\xb4\x7e\x3f\x8f\xfc\x14"
4976 "\xce\x54\xf9\x18\x58\xb5\xff\x44"
4977 "\x05\x9d\xce\x1b\xb6\x82\x23\xc8"
4978 "\x2e\xbc\x69\xbb\x4a\x29\x0f\x65"
4979 "\x94\xf0\x63\x06\x0e\xef\x8c\xbd"
4980 "\xff\xfd\xb0\x21\x6e\x57\x05\x75"
4981 "\xda\xd5\xc4\xeb\x8d\x32\xf7\x50"
4982 "\xd3\x6f\x22\xed\x5f\x8e\xa2\x5b"
4983 "\x80\x8c\xc8\x78\x40\x24\x4b\x89"
4984 "\x30\xce\x7a\x97\x0e\xc4\xaf\xef"
4985 "\x9b\xb4\xcd\x66\x74\x14\x04\x2b"
4986 "\xf7\xce\x0b\x1c\x6e\xc2\x78\x8c"
4987 "\xca\xc5\xd0\x1c\x95\x4a\x91\x2d"
4988 "\xa7\x20\xeb\x86\x52\xb7\x67\xd8"
4989 "\x0c\xd6\x04\x14\xde\x51\x74\x75"
4990 "\xe7\x11\xb4\x87\xa3\x3d\x2d\xad"
4991 "\x4f\xef\xa0\x0f\x70\x00\x6d\x13"
4992 "\x19\x1d\x41\x50\xe9\xd8\xf0\x32"
4993 "\x71\xbc\xd3\x11\xf2\xac\xbe\xaf"
4994 "\x75\x46\x65\x4e\x07\x34\x37\xa3"
4995 "\x89\xfe\x75\xd4\x70\x4c\xc6\x3f"
4996 "\x69\x24\x0e\x38\x67\x43\x8c\xde"
4997 "\x06\xb5\xb8\xe7\xc4\xf0\x41\x8f"
4998 "\xf0\xbd\x2f\x0b\xb9\x18\xf8\xde"
4999 "\x64\xb1\xdb\xee\x00\x50\x77\xe1"
5000 "\xc7\xff\xa6\xfa\xdd\x70\xf4\xe3"
5001 "\x93\xe9\x77\x35\x3d\x4b\x2f\x2b"
5002 "\x6d\x55\xf0\xfc\x88\x54\x4e\x89"
5003 "\xc1\x8a\x23\x31\x2d\x14\x2a\xb8"
5004 "\x1b\x15\xdd\x9e\x6e\x7b\xda\x05"
5005 "\x91\x7d\x62\x64\x96\x72\xde\xfc"
5006 "\xc1\xec\xf0\x23\x51\x6f\xdb\x5b"
5007 "\x1d\x08\x57\xce\x09\xb8\xf6\xcd"
5008 "\x8d\x95\xf2\x20\xbf\x0f\x20\x57"
5009 "\x98\x81\x84\x4f\x15\x5c\x76\xe7"
5010 "\x3e\x0a\x3a\x6c\xc4\x8a\xbe\x78"
5011 "\x74\x77\xc3\x09\x4b\x5d\x48\xe4"
5012 "\xc8\xcb\x0b\xea\x17\x28\xcf\xcf"
5013 "\x31\x32\x44\xa4\xe5\x0e\x1a\x98"
5014 "\x94\xc4\xf0\xff\xae\x3e\x44\xe8"
5015 "\xa5\xb3\xb5\x37\x2f\xe8\xaf\x6f"
5016 "\x28\xc1\x37\x5f\x31\xd2\xb9\x33"
5017 "\xb1\xb2\x52\x94\x75\x2c\x29\x59"
5018 "\x06\xc2\x25\xe8\x71\x65\x4e\xed"
5019 "\xc0\x9c\xb1\xbb\x25\xdc\x6c\xe7"
5020 "\x4b\xa5\x7a\x54\x7a\x60\xff\x7a"
5021 "\xe0\x50\x40\x96\x35\x63\xe4\x0b"
5022 "\x76\xbd\xa4\x65\x00\x1b\x57\x88"
5023 "\xae\xed\x39\x88\x42\x11\x3c\xed"
5024 "\x85\x67\x7d\xb9\x68\x82\xe9\x43"
5025 "\x3c\x47\x53\xfa\xe8\xf8\x9f\x1f"
5026 "\x9f\xef\x0f\xf7\x30\xd9\x30\x0e"
5027 "\xb9\x9f\x69\x18\x2f\x7e\xf8\xf8"
5028 "\xf8\x8c\x0f\xd4\x02\x4d\xea\xcd"
5029 "\x0a\x9c\x6f\x71\x6d\x5a\x4c\x60"
5030 "\xce\x20\x56\x32\xc6\xc5\x99\x1f"
5031 "\x09\xe6\x4e\x18\x1a\x15\x13\xa8"
5032 "\x7d\xb1\x6b\xc0\xb2\x6d\xf8\x26"
5033 "\x66\xf8\x3d\x18\x74\x70\x66\x7a"
5034 "\x34\x17\xde\xba\x47\xf1\x06\x18"
5035 "\xcb\xaf\xeb\x4a\x1e\x8f\xa7\x77"
5036 "\xe0\x3b\x78\x62\x66\xc9\x10\xea"
5037 "\x1f\xb7\x29\x0a\x45\xa1\x1d\x1e"
5038 "\x1d\xe2\x65\x61\x50\x9c\xd7\x05"
5039 "\xf2\x0b\x5b\x12\x61\x02\xc8\xe5"
5040 "\x63\x4f\x20\x0c\x07\x17\x33\x5e"
5041 "\x03\x9a\x53\x0f\x2e\x55\xfe\x50"
5042 "\x43\x7d\xd0\xb6\x7e\x5a\xda\xae"
5043 "\x58\xef\x15\xa9\x83\xd9\x46\xb1"
5044 "\x42\xaa\xf5\x02\x6c\xce\x92\x06"
5045 "\x1b\xdb\x66\x45\x91\x79\xc2\x2d"
5046 "\xe6\x53\xd3\x14\xfd\xbb\x44\x63"
5047 "\xc6\xd7\x3d\x7a\x0c\x75\x78\x9d"
5048 "\x5c\xa6\x39\xb3\xe5\x63\xca\x8b"
5049 "\xfe\xd3\xef\x60\x83\xf6\x8e\x70"
5050 "\xb6\x67\xc7\x77\xed\x23\xef\x4c"
5051 "\xf0\xed\x2d\x07\x59\x6f\xc1\x01"
5052 "\x34\x37\x08\xab\xd9\x1f\x09\xb1"
5053 "\xce\x5b\x17\xff\x74\xf8\x9c\xd5"
5054 "\x2c\x56\x39\x79\x0f\x69\x44\x75"
5055 "\x58\x27\x01\xc4\xbf\xa7\xa1\x1d"
5056 "\x90\x17\x77\x86\x5a\x3f\xd9\xd1"
5057 "\x0e\xa0\x10\xf8\xec\x1e\xa5\x7f"
5058 "\x5e\x36\xd1\xe3\x04\x2c\x70\xf7"
5059 "\x8e\xc0\x98\x2f\x6c\x94\x2b\x41"
5060 "\xb7\x60\x00\xb7\x2e\xb8\x02\x8d"
5061 "\xb8\xb0\xd3\x86\xba\x1d\xd7\x90"
5062 "\xd6\xb6\xe1\xfc\xd7\xd8\x28\x06"
5063 "\x63\x9b\xce\x61\x24\x79\xc0\x70"
5064 "\x52\xd0\xb6\xd4\x28\x95\x24\x87"
5065 "\x03\x1f\xb7\x9a\xda\xa3\xfb\x52"
5066 "\x5b\x68\xe7\x4c\x8c\x24\xe1\x42"
5067 "\xf7\xd5\xfd\xad\x06\x32\x9f\xba"
5068 "\xc1\xfc\xdd\xc6\xfc\xfc\xb3\x38"
5069 "\x74\x56\x58\x40\x02\x37\x52\x2c"
5070 "\x55\xcc\xb3\x9e\x7a\xe9\xd4\x38"
5071 "\x41\x5e\x0c\x35\xe2\x11\xd1\x13"
5072 "\xf8\xb7\x8d\x72\x6b\x22\x2a\xb0"
5073 "\xdb\x08\xba\x35\xb9\x3f\xc8\xd3"
5074 "\x24\x90\xec\x58\xd2\x09\xc7\x2d"
5075 "\xed\x38\x80\x36\x72\x43\x27\x49"
5076 "\x4a\x80\x8a\xa2\xe8\xd3\xda\x30"
5077 "\x7d\xb6\x82\x37\x86\x92\x86\x3e"
5078 "\x08\xb2\x28\x5a\x55\x44\x24\x7d"
5079 "\x40\x48\x8a\xb6\x89\x58\x08\xa0"
5080 "\xd6\x6d\x3a\x17\xbf\xf6\x54\xa2"
5081 "\xf5\xd3\x8c\x0f\x78\x12\x57\x8b"
5082 "\xd5\xc2\xfd\x58\x5b\x7f\x38\xe3"
5083 "\xcc\xb7\x7c\x48\xb3\x20\xe8\x81"
5084 "\x14\x32\x45\x05\xe0\xdb\x9f\x75"
5085 "\x85\xb4\x6a\xfc\x95\xe3\x54\x22"
5086 "\x12\xee\x30\xfe\xd8\x30\xef\x34"
5087 "\x50\xab\x46\x30\x98\x2f\xb7\xc0"
5088 "\x15\xa2\x83\xb6\xf2\x06\x21\xa2"
5089 "\xc3\x26\x37\x14\xd1\x4d\xb5\x10"
5090 "\x52\x76\x4d\x6a\xee\xb5\x2b\x15"
5091 "\xb7\xf9\x51\xe8\x2a\xaf\xc7\xfa"
5092 "\x77\xaf\xb0\x05\x4d\xd1\x68\x8e"
5093 "\x74\x05\x9f\x9d\x93\xa5\x3e\x7f"
5094 "\x4e\x5f\x9d\xcb\x09\xc7\x83\xe3"
5095 "\x02\x9d\x27\x1f\xef\x85\x05\x8d"
5096 "\xec\x55\x88\x0f\x0d\x7c\x4c\xe8"
5097 "\xa1\x75\xa0\xd8\x06\x47\x14\xef"
5098 "\xaa\x61\xcf\x26\x15\xad\xd8\xa3"
5099 "\xaa\x75\xf2\x78\x4a\x5a\x61\xdf"
5100 "\x8b\xc7\x04\xbc\xb2\x32\xd2\x7e"
5101 "\x42\xee\xb4\x2f\x51\xff\x7b\x2e"
5102 "\xd3\x02\xe8\xdc\x5d\x0d\x50\xdc"
5103 "\xae\xb7\x46\xf9\xa8\xe6\xd0\x16"
5104 "\xcc\xe6\x2c\x81\xc7\xad\xe9\xf0"
5105 "\x05\x72\x6d\x3d\x0a\x7a\xa9\x02"
5106 "\xac\x82\x93\x6e\xb6\x1c\x28\xfc"
5107 "\x44\x12\xfb\x73\x77\xd4\x13\x39"
5108 "\x29\x88\x8a\xf3\x5c\xa6\x36\xa0"
5109 "\x2a\xed\x7e\xb1\x1d\xd6\x4c\x6b"
5110 "\x41\x01\x18\x5d\x5d\x07\x97\xa6"
5111 "\x4b\xef\x31\x18\xea\xac\xb1\x84"
5112 "\x21\xed\xda\x86",
a773edb3 5113 .rlen = 4100,
f139cfa7
HX
5114 .np = 2,
5115 .tap = { 4064, 36 },
23e353c8
JL
5116 },
5117};
5118
5119static struct cipher_testvec aes_ctr_dec_tv_template[] = {
5120 { /* From RFC 3686 */
de224c30
SS
5121 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
5122 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
5123 "\x00\x00\x00\x30",
23e353c8 5124 .klen = 20,
de224c30
SS
5125 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
5126 .input = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
5127 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
23e353c8 5128 .ilen = 16,
de224c30 5129 .result = "Single block msg",
23e353c8
JL
5130 .rlen = 16,
5131 }, {
de224c30
SS
5132 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
5133 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
5134 "\x00\x6c\xb6\xdb",
23e353c8 5135 .klen = 20,
de224c30
SS
5136 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
5137 .input = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
5138 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
5139 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
5140 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
5141 .ilen = 32,
5142 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5143 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5144 "\x10\x11\x12\x13\x14\x15\x16\x17"
5145 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8
JL
5146 .rlen = 32,
5147 }, {
de224c30
SS
5148 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
5149 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
5150 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
5151 "\x00\x00\x00\x48",
5152 .klen = 28,
5153 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
5154 .input = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
5155 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
5156 .ilen = 16,
5157 .result = "Single block msg",
23e353c8
JL
5158 .rlen = 16,
5159 }, {
de224c30
SS
5160 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
5161 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
5162 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
5163 "\x00\x96\xb0\x3b",
23e353c8 5164 .klen = 28,
de224c30
SS
5165 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
5166 .input = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
5167 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
5168 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
5169 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
23e353c8 5170 .ilen = 32,
de224c30
SS
5171 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5172 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5173 "\x10\x11\x12\x13\x14\x15\x16\x17"
5174 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
5175 .rlen = 32,
23e353c8 5176 }, {
de224c30
SS
5177 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
5178 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
5179 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
5180 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
5181 "\x00\x00\x00\x60",
23e353c8 5182 .klen = 36,
de224c30
SS
5183 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
5184 .input = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
5185 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
23e353c8 5186 .ilen = 16,
de224c30
SS
5187 .result = "Single block msg",
5188 .rlen = 16,
5189 }, {
5190 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
5191 "\x07\x96\x36\x58\x79\xef\xf8\x86"
5192 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
5193 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
5194 "\x00\xfa\xac\x24",
5195 .klen = 36,
5196 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
5197 .input = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
5198 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
5199 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
5200 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
23e353c8 5201 .ilen = 32,
de224c30
SS
5202 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5203 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5204 "\x10\x11\x12\x13\x14\x15\x16\x17"
5205 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8
JL
5206 .rlen = 32,
5207 },
5208};
5209
28db8e3e
MH
5210static struct aead_testvec aes_gcm_enc_tv_template[] = {
5211 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
de224c30 5212 .key = zeroed_string,
28db8e3e 5213 .klen = 16,
de224c30
SS
5214 .result = "\x58\xe2\xfc\xce\xfa\x7e\x30\x61"
5215 "\x36\x7f\x1d\x57\xa4\xe7\x45\x5a",
6160b289 5216 .rlen = 16,
28db8e3e 5217 }, {
de224c30 5218 .key = zeroed_string,
28db8e3e 5219 .klen = 16,
de224c30 5220 .input = zeroed_string,
28db8e3e 5221 .ilen = 16,
de224c30
SS
5222 .result = "\x03\x88\xda\xce\x60\xb6\xa3\x92"
5223 "\xf3\x28\xc2\xb9\x71\xb2\xfe\x78"
5224 "\xab\x6e\x47\xd4\x2c\xec\x13\xbd"
5225 "\xf5\x3a\x67\xb2\x12\x57\xbd\xdf",
6160b289 5226 .rlen = 32,
28db8e3e 5227 }, {
de224c30
SS
5228 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5229 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5230 .klen = 16,
de224c30
SS
5231 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5232 "\xde\xca\xf8\x88",
5233 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5234 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5235 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5236 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5237 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5238 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5239 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5240 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5241 .ilen = 64,
de224c30
SS
5242 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5243 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5244 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5245 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5246 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5247 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5248 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5249 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
5250 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
5251 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
6160b289 5252 .rlen = 80,
28db8e3e 5253 }, {
de224c30
SS
5254 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5255 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5256 .klen = 16,
de224c30
SS
5257 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5258 "\xde\xca\xf8\x88",
5259 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5260 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5261 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5262 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5263 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5264 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5265 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5266 "\xba\x63\x7b\x39",
28db8e3e 5267 .ilen = 60,
de224c30
SS
5268 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5269 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5270 "\xab\xad\xda\xd2",
28db8e3e 5271 .alen = 20,
de224c30
SS
5272 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5273 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5274 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5275 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5276 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5277 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5278 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5279 "\x3d\x58\xe0\x91"
5280 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
5281 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
6160b289 5282 .rlen = 76,
28db8e3e 5283 }, {
de224c30 5284 .key = zeroed_string,
28db8e3e 5285 .klen = 24,
de224c30
SS
5286 .result = "\xcd\x33\xb2\x8a\xc7\x73\xf7\x4b"
5287 "\xa0\x0e\xd1\xf3\x12\x57\x24\x35",
6160b289 5288 .rlen = 16,
28db8e3e 5289 }, {
de224c30 5290 .key = zeroed_string,
28db8e3e 5291 .klen = 24,
de224c30 5292 .input = zeroed_string,
28db8e3e 5293 .ilen = 16,
de224c30
SS
5294 .result = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
5295 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
5296 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
5297 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
6160b289 5298 .rlen = 32,
28db8e3e 5299 }, {
de224c30
SS
5300 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5301 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5302 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5303 .klen = 24,
de224c30
SS
5304 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5305 "\xde\xca\xf8\x88",
5306 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5307 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5308 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5309 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5310 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5311 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5312 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5313 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5314 .ilen = 64,
de224c30
SS
5315 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5316 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5317 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5318 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5319 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5320 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5321 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5322 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5323 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5324 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
6160b289 5325 .rlen = 80,
28db8e3e 5326 }, {
de224c30
SS
5327 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5328 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5329 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5330 .klen = 24,
de224c30
SS
5331 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5332 "\xde\xca\xf8\x88",
5333 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5334 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5335 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5336 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5337 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5338 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5339 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5340 "\xba\x63\x7b\x39",
28db8e3e 5341 .ilen = 60,
de224c30
SS
5342 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5343 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5344 "\xab\xad\xda\xd2",
28db8e3e 5345 .alen = 20,
de224c30
SS
5346 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5347 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5348 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5349 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5350 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5351 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5352 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5353 "\xcc\xda\x27\x10"
5354 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5355 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
6160b289 5356 .rlen = 76,
28db8e3e
MH
5357 .np = 2,
5358 .tap = { 32, 28 },
5359 .anp = 2,
5360 .atap = { 8, 12 }
5361 }, {
de224c30 5362 .key = zeroed_string,
28db8e3e 5363 .klen = 32,
de224c30
SS
5364 .result = "\x53\x0f\x8a\xfb\xc7\x45\x36\xb9"
5365 "\xa9\x63\xb4\xf1\xc4\xcb\x73\x8b",
6160b289 5366 .rlen = 16,
28db8e3e
MH
5367 }
5368};
5369
5370static struct aead_testvec aes_gcm_dec_tv_template[] = {
5371 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
de224c30 5372 .key = zeroed_string,
28db8e3e 5373 .klen = 32,
de224c30
SS
5374 .input = "\xce\xa7\x40\x3d\x4d\x60\x6b\x6e"
5375 "\x07\x4e\xc5\xd3\xba\xf3\x9d\x18"
5376 "\xd0\xd1\xc8\xa7\x99\x99\x6b\xf0"
5377 "\x26\x5b\x98\xb5\xd4\x8a\xb9\x19",
6160b289 5378 .ilen = 32,
de224c30 5379 .result = zeroed_string,
6160b289 5380 .rlen = 16,
28db8e3e 5381 }, {
de224c30
SS
5382 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5383 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5384 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5385 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5386 .klen = 32,
de224c30
SS
5387 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5388 "\xde\xca\xf8\x88",
5389 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
5390 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
5391 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
5392 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
5393 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
5394 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
5395 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
5396 "\xbc\xc9\xf6\x62\x89\x80\x15\xad"
5397 "\xb0\x94\xda\xc5\xd9\x34\x71\xbd"
5398 "\xec\x1a\x50\x22\x70\xe3\xcc\x6c",
6160b289 5399 .ilen = 80,
de224c30
SS
5400 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5401 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5402 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5403 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5404 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5405 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5406 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5407 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5408 .rlen = 64,
28db8e3e 5409 }, {
de224c30
SS
5410 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5411 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5412 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5413 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5414 .klen = 32,
de224c30
SS
5415 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5416 "\xde\xca\xf8\x88",
5417 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
5418 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
5419 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
5420 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
5421 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
5422 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
5423 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
5424 "\xbc\xc9\xf6\x62"
5425 "\x76\xfc\x6e\xce\x0f\x4e\x17\x68"
5426 "\xcd\xdf\x88\x53\xbb\x2d\x55\x1b",
6160b289 5427 .ilen = 76,
de224c30
SS
5428 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5429 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5430 "\xab\xad\xda\xd2",
28db8e3e 5431 .alen = 20,
de224c30
SS
5432 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5433 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5434 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5435 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5436 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5437 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5438 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5439 "\xba\x63\x7b\x39",
28db8e3e 5440 .rlen = 60,
28db8e3e 5441 .np = 2,
6160b289 5442 .tap = { 48, 28 },
28db8e3e
MH
5443 .anp = 3,
5444 .atap = { 8, 8, 4 }
5445 }, {
de224c30
SS
5446 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5447 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5448 .klen = 16,
de224c30
SS
5449 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5450 "\xde\xca\xf8\x88",
5451 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5452 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5453 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5454 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5455 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5456 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5457 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5458 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
5459 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
5460 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
6160b289 5461 .ilen = 80,
de224c30
SS
5462 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5463 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5464 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5465 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5466 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5467 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5468 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5469 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5470 .rlen = 64,
28db8e3e 5471 }, {
de224c30
SS
5472 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5473 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5474 .klen = 16,
de224c30
SS
5475 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5476 "\xde\xca\xf8\x88",
5477 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5478 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5479 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5480 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5481 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5482 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5483 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5484 "\x3d\x58\xe0\x91"
5485 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
5486 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
6160b289 5487 .ilen = 76,
de224c30
SS
5488 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5489 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5490 "\xab\xad\xda\xd2",
28db8e3e 5491 .alen = 20,
de224c30
SS
5492 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5493 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5494 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5495 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5496 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5497 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5498 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5499 "\xba\x63\x7b\x39",
28db8e3e 5500 .rlen = 60,
28db8e3e 5501 }, {
de224c30 5502 .key = zeroed_string,
28db8e3e 5503 .klen = 24,
de224c30
SS
5504 .input = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
5505 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
5506 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
5507 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
6160b289 5508 .ilen = 32,
de224c30 5509 .result = zeroed_string,
6160b289 5510 .rlen = 16,
28db8e3e 5511 }, {
de224c30
SS
5512 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5513 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5514 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5515 .klen = 24,
de224c30
SS
5516 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5517 "\xde\xca\xf8\x88",
5518 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5519 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5520 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5521 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5522 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5523 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5524 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5525 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5526 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5527 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
6160b289 5528 .ilen = 80,
de224c30
SS
5529 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5530 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5531 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5532 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5533 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5534 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5535 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5536 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5537 .rlen = 64,
28db8e3e 5538 }, {
de224c30
SS
5539 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5540 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5541 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5542 .klen = 24,
de224c30
SS
5543 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5544 "\xde\xca\xf8\x88",
5545 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5546 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5547 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5548 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5549 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5550 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5551 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5552 "\xcc\xda\x27\x10"
5553 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5554 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
6160b289 5555 .ilen = 76,
de224c30
SS
5556 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5557 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5558 "\xab\xad\xda\xd2",
28db8e3e 5559 .alen = 20,
de224c30
SS
5560 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5561 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5562 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5563 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5564 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5565 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5566 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5567 "\xba\x63\x7b\x39",
28db8e3e 5568 .rlen = 60,
28db8e3e
MH
5569 }
5570};
5571
93cc74e0
JL
5572static struct aead_testvec aes_ccm_enc_tv_template[] = {
5573 { /* From RFC 3610 */
de224c30
SS
5574 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5575 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5576 .klen = 16,
de224c30
SS
5577 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5578 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5579 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5580 .alen = 8,
de224c30
SS
5581 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5582 "\x10\x11\x12\x13\x14\x15\x16\x17"
5583 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
93cc74e0 5584 .ilen = 23,
de224c30
SS
5585 .result = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5586 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5587 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5588 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
93cc74e0
JL
5589 .rlen = 31,
5590 }, {
de224c30
SS
5591 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5592 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5593 .klen = 16,
de224c30
SS
5594 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5595 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5596 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5597 "\x08\x09\x0a\x0b",
93cc74e0 5598 .alen = 12,
de224c30
SS
5599 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5600 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5601 "\x1c\x1d\x1e\x1f",
93cc74e0 5602 .ilen = 20,
de224c30
SS
5603 .result = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5604 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5605 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5606 "\x7d\x9c\x2d\x93",
93cc74e0
JL
5607 .rlen = 28,
5608 }, {
de224c30
SS
5609 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5610 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5611 .klen = 16,
de224c30
SS
5612 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5613 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5614 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5615 .alen = 8,
de224c30
SS
5616 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5617 "\x10\x11\x12\x13\x14\x15\x16\x17"
5618 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5619 "\x20",
93cc74e0 5620 .ilen = 25,
de224c30
SS
5621 .result = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5622 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5623 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5624 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5625 "\x7e\x5f\x4e",
93cc74e0
JL
5626 .rlen = 35,
5627 }, {
de224c30
SS
5628 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5629 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5630 .klen = 16,
de224c30
SS
5631 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5632 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5633 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5634 "\x08\x09\x0a\x0b",
93cc74e0 5635 .alen = 12,
de224c30
SS
5636 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5637 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5638 "\x1c\x1d\x1e",
93cc74e0 5639 .ilen = 19,
de224c30
SS
5640 .result = "\x07\x34\x25\x94\x15\x77\x85\x15"
5641 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5642 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5643 "\x4d\x99\x99\x88\xdd",
93cc74e0
JL
5644 .rlen = 29,
5645 }, {
de224c30
SS
5646 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5647 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5648 .klen = 16,
de224c30
SS
5649 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5650 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5651 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
93cc74e0 5652 .alen = 8,
de224c30
SS
5653 .input = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5654 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5655 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
93cc74e0 5656 .ilen = 24,
de224c30
SS
5657 .result = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5658 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5659 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5660 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
93cc74e0
JL
5661 .rlen = 32,
5662 }, {
de224c30
SS
5663 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5664 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5665 .klen = 16,
de224c30
SS
5666 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5667 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5668 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5669 "\x20\xea\x60\xc0",
93cc74e0 5670 .alen = 12,
de224c30
SS
5671 .input = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5672 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5673 "\x3a\x80\x3b\xa8\x7f",
93cc74e0 5674 .ilen = 21,
de224c30
SS
5675 .result = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5676 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5677 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5678 "\x5a\xe0\x70\x45\x51",
93cc74e0
JL
5679 .rlen = 29,
5680 }, {
de224c30
SS
5681 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5682 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5683 .klen = 16,
de224c30
SS
5684 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5685 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5686 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
93cc74e0 5687 .alen = 8,
de224c30
SS
5688 .input = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5689 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5690 "\x98\x09\xd6\x7d\xbe\xdd\x18",
93cc74e0 5691 .ilen = 23,
de224c30
SS
5692 .result = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5693 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5694 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5695 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5696 "\xba",
93cc74e0
JL
5697 .rlen = 33,
5698 },
5699};
5700
5701static struct aead_testvec aes_ccm_dec_tv_template[] = {
5702 { /* From RFC 3610 */
de224c30
SS
5703 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5704 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5705 .klen = 16,
de224c30
SS
5706 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5707 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5708 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5709 .alen = 8,
de224c30
SS
5710 .input = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5711 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5712 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5713 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
93cc74e0 5714 .ilen = 31,
de224c30
SS
5715 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5716 "\x10\x11\x12\x13\x14\x15\x16\x17"
5717 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
93cc74e0
JL
5718 .rlen = 23,
5719 }, {
de224c30
SS
5720 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5721 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5722 .klen = 16,
de224c30
SS
5723 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5724 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5725 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5726 "\x08\x09\x0a\x0b",
93cc74e0 5727 .alen = 12,
de224c30
SS
5728 .input = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5729 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5730 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5731 "\x7d\x9c\x2d\x93",
93cc74e0 5732 .ilen = 28,
de224c30
SS
5733 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5734 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5735 "\x1c\x1d\x1e\x1f",
93cc74e0
JL
5736 .rlen = 20,
5737 }, {
de224c30
SS
5738 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5739 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5740 .klen = 16,
de224c30
SS
5741 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5742 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5743 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5744 .alen = 8,
de224c30
SS
5745 .input = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5746 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5747 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5748 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5749 "\x7e\x5f\x4e",
93cc74e0 5750 .ilen = 35,
de224c30
SS
5751 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5752 "\x10\x11\x12\x13\x14\x15\x16\x17"
5753 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5754 "\x20",
93cc74e0
JL
5755 .rlen = 25,
5756 }, {
de224c30
SS
5757 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5758 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5759 .klen = 16,
de224c30
SS
5760 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5761 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5762 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5763 "\x08\x09\x0a\x0b",
93cc74e0 5764 .alen = 12,
de224c30
SS
5765 .input = "\x07\x34\x25\x94\x15\x77\x85\x15"
5766 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5767 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5768 "\x4d\x99\x99\x88\xdd",
93cc74e0 5769 .ilen = 29,
de224c30
SS
5770 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5771 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5772 "\x1c\x1d\x1e",
93cc74e0
JL
5773 .rlen = 19,
5774 }, {
de224c30
SS
5775 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5776 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5777 .klen = 16,
de224c30
SS
5778 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5779 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5780 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
93cc74e0 5781 .alen = 8,
de224c30
SS
5782 .input = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5783 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5784 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5785 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
93cc74e0 5786 .ilen = 32,
de224c30
SS
5787 .result = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5788 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5789 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
93cc74e0
JL
5790 .rlen = 24,
5791 }, {
de224c30
SS
5792 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5793 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5794 .klen = 16,
de224c30
SS
5795 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5796 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5797 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5798 "\x20\xea\x60\xc0",
93cc74e0 5799 .alen = 12,
de224c30
SS
5800 .input = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5801 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5802 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5803 "\x5a\xe0\x70\x45\x51",
93cc74e0 5804 .ilen = 29,
de224c30
SS
5805 .result = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5806 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5807 "\x3a\x80\x3b\xa8\x7f",
93cc74e0
JL
5808 .rlen = 21,
5809 }, {
de224c30
SS
5810 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5811 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5812 .klen = 16,
de224c30
SS
5813 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5814 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5815 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
93cc74e0 5816 .alen = 8,
de224c30
SS
5817 .input = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5818 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5819 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5820 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5821 "\xba",
93cc74e0 5822 .ilen = 33,
de224c30
SS
5823 .result = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5824 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5825 "\x98\x09\xd6\x7d\xbe\xdd\x18",
93cc74e0
JL
5826 .rlen = 23,
5827 },
5828};
5829
1da177e4
LT
5830/* Cast5 test vectors from RFC 2144 */
5831#define CAST5_ENC_TEST_VECTORS 3
5832#define CAST5_DEC_TEST_VECTORS 3
5833
ef2736fc 5834static struct cipher_testvec cast5_enc_tv_template[] = {
1da177e4 5835 {
de224c30
SS
5836 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5837 "\x23\x45\x67\x89\x34\x56\x78\x9a",
1da177e4 5838 .klen = 16,
de224c30 5839 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5840 .ilen = 8,
de224c30 5841 .result = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
1da177e4
LT
5842 .rlen = 8,
5843 }, {
de224c30
SS
5844 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5845 "\x23\x45",
1da177e4 5846 .klen = 10,
de224c30 5847 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5848 .ilen = 8,
de224c30 5849 .result = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
1da177e4
LT
5850 .rlen = 8,
5851 }, {
de224c30 5852 .key = "\x01\x23\x45\x67\x12",
1da177e4 5853 .klen = 5,
de224c30 5854 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5855 .ilen = 8,
de224c30 5856 .result = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
1da177e4
LT
5857 .rlen = 8,
5858 },
5859};
5860
ef2736fc 5861static struct cipher_testvec cast5_dec_tv_template[] = {
1da177e4 5862 {
de224c30
SS
5863 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5864 "\x23\x45\x67\x89\x34\x56\x78\x9a",
1da177e4 5865 .klen = 16,
de224c30 5866 .input = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
1da177e4 5867 .ilen = 8,
de224c30 5868 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5869 .rlen = 8,
5870 }, {
de224c30
SS
5871 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5872 "\x23\x45",
1da177e4 5873 .klen = 10,
de224c30 5874 .input = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
1da177e4 5875 .ilen = 8,
de224c30 5876 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5877 .rlen = 8,
5878 }, {
de224c30 5879 .key = "\x01\x23\x45\x67\x12",
1da177e4 5880 .klen = 5,
de224c30 5881 .input = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
1da177e4 5882 .ilen = 8,
de224c30 5883 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5884 .rlen = 8,
5885 },
5886};
5887
ef2736fc
HX
5888/*
5889 * ARC4 test vectors from OpenSSL
1da177e4
LT
5890 */
5891#define ARC4_ENC_TEST_VECTORS 7
5892#define ARC4_DEC_TEST_VECTORS 7
5893
ef2736fc 5894static struct cipher_testvec arc4_enc_tv_template[] = {
1da177e4 5895 {
de224c30 5896 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5897 .klen = 8,
de224c30 5898 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5899 .ilen = 8,
de224c30 5900 .result = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
1da177e4
LT
5901 .rlen = 8,
5902 }, {
de224c30 5903 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5904 .klen = 8,
de224c30 5905 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5906 .ilen = 8,
de224c30 5907 .result = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
1da177e4
LT
5908 .rlen = 8,
5909 }, {
de224c30 5910 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5911 .klen = 8,
de224c30 5912 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5913 .ilen = 8,
de224c30 5914 .result = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
1da177e4
LT
5915 .rlen = 8,
5916 }, {
de224c30 5917 .key = "\xef\x01\x23\x45",
1da177e4 5918 .klen = 4,
de224c30
SS
5919 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5920 "\x00\x00\x00\x00\x00\x00\x00\x00"
5921 "\x00\x00\x00\x00",
1da177e4 5922 .ilen = 20,
de224c30
SS
5923 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5924 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5925 "\x36\xb6\x78\x58",
1da177e4
LT
5926 .rlen = 20,
5927 }, {
de224c30 5928 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5929 .klen = 8,
de224c30
SS
5930 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5931 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5932 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5933 "\x12\x34\x56\x78",
1da177e4 5934 .ilen = 28,
de224c30
SS
5935 .result = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5936 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5937 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5938 "\x40\x01\x1e\xcf",
1da177e4
LT
5939 .rlen = 28,
5940 }, {
de224c30 5941 .key = "\xef\x01\x23\x45",
1da177e4 5942 .klen = 4,
de224c30
SS
5943 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5944 "\x00\x00",
1da177e4 5945 .ilen = 10,
de224c30
SS
5946 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5947 "\xbd\x61",
1da177e4
LT
5948 .rlen = 10,
5949 }, {
de224c30
SS
5950 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5951 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5952 .klen = 16,
de224c30 5953 .input = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
1da177e4 5954 .ilen = 8,
de224c30 5955 .result = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
1da177e4
LT
5956 .rlen = 8,
5957 },
5958};
5959
ef2736fc 5960static struct cipher_testvec arc4_dec_tv_template[] = {
1da177e4 5961 {
de224c30 5962 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5963 .klen = 8,
de224c30 5964 .input = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
1da177e4 5965 .ilen = 8,
de224c30 5966 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5967 .rlen = 8,
5968 }, {
de224c30 5969 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5970 .klen = 8,
de224c30 5971 .input = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
1da177e4 5972 .ilen = 8,
de224c30 5973 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
5974 .rlen = 8,
5975 }, {
de224c30 5976 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5977 .klen = 8,
de224c30 5978 .input = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
1da177e4 5979 .ilen = 8,
de224c30 5980 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
5981 .rlen = 8,
5982 }, {
de224c30 5983 .key = "\xef\x01\x23\x45",
1da177e4 5984 .klen = 4,
de224c30
SS
5985 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5986 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5987 "\x36\xb6\x78\x58",
1da177e4 5988 .ilen = 20,
de224c30
SS
5989 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5990 "\x00\x00\x00\x00\x00\x00\x00\x00"
5991 "\x00\x00\x00\x00",
1da177e4
LT
5992 .rlen = 20,
5993 }, {
de224c30 5994 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5995 .klen = 8,
de224c30
SS
5996 .input = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5997 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5998 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5999 "\x40\x01\x1e\xcf",
1da177e4 6000 .ilen = 28,
de224c30
SS
6001 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
6002 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
6003 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
6004 "\x12\x34\x56\x78",
1da177e4
LT
6005 .rlen = 28,
6006 }, {
de224c30 6007 .key = "\xef\x01\x23\x45",
1da177e4 6008 .klen = 4,
de224c30
SS
6009 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
6010 "\xbd\x61",
1da177e4 6011 .ilen = 10,
de224c30
SS
6012 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
6013 "\x00\x00",
1da177e4
LT
6014 .rlen = 10,
6015 }, {
de224c30
SS
6016 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
6017 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 6018 .klen = 16,
de224c30 6019 .input = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
1da177e4 6020 .ilen = 8,
de224c30 6021 .result = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
1da177e4
LT
6022 .rlen = 8,
6023 },
6024};
6025
ef2736fc 6026/*
1da177e4
LT
6027 * TEA test vectors
6028 */
6029#define TEA_ENC_TEST_VECTORS 4
6030#define TEA_DEC_TEST_VECTORS 4
6031
ef2736fc 6032static struct cipher_testvec tea_enc_tv_template[] = {
1da177e4 6033 {
de224c30 6034 .key = zeroed_string,
1da177e4 6035 .klen = 16,
de224c30 6036 .input = zeroed_string,
1da177e4 6037 .ilen = 8,
de224c30 6038 .result = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
1da177e4
LT
6039 .rlen = 8,
6040 }, {
de224c30
SS
6041 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6042 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 6043 .klen = 16,
de224c30 6044 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4 6045 .ilen = 8,
de224c30 6046 .result = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
1da177e4
LT
6047 .rlen = 8,
6048 }, {
de224c30
SS
6049 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6050 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 6051 .klen = 16,
de224c30
SS
6052 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6053 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4 6054 .ilen = 16,
de224c30
SS
6055 .result = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
6056 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
1da177e4
LT
6057 .rlen = 16,
6058 }, {
de224c30
SS
6059 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6060 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 6061 .klen = 16,
de224c30
SS
6062 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6063 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6064 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6065 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4 6066 .ilen = 32,
de224c30
SS
6067 .result = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
6068 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
6069 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
6070 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
1da177e4
LT
6071 .rlen = 32,
6072 }
6073};
6074
ef2736fc 6075static struct cipher_testvec tea_dec_tv_template[] = {
1da177e4 6076 {
de224c30 6077 .key = zeroed_string,
1da177e4 6078 .klen = 16,
de224c30 6079 .input = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
1da177e4 6080 .ilen = 8,
de224c30 6081 .result = zeroed_string,
1da177e4
LT
6082 .rlen = 8,
6083 }, {
de224c30
SS
6084 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6085 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 6086 .klen = 16,
de224c30 6087 .input = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
1da177e4 6088 .ilen = 8,
de224c30 6089 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4
LT
6090 .rlen = 8,
6091 }, {
de224c30
SS
6092 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6093 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 6094 .klen = 16,
de224c30
SS
6095 .input = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
6096 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
ef2736fc 6097 .ilen = 16,
de224c30
SS
6098 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6099 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4
LT
6100 .rlen = 16,
6101 }, {
de224c30
SS
6102 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6103 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 6104 .klen = 16,
de224c30
SS
6105 .input = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
6106 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
6107 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
6108 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
1da177e4 6109 .ilen = 32,
de224c30
SS
6110 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6111 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6112 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6113 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4
LT
6114 .rlen = 32,
6115 }
6116};
6117
ef2736fc
HX
6118/*
6119 * XTEA test vectors
1da177e4
LT
6120 */
6121#define XTEA_ENC_TEST_VECTORS 4
6122#define XTEA_DEC_TEST_VECTORS 4
6123
ef2736fc 6124static struct cipher_testvec xtea_enc_tv_template[] = {
1da177e4 6125 {
de224c30 6126 .key = zeroed_string,
1da177e4 6127 .klen = 16,
de224c30 6128 .input = zeroed_string,
1da177e4 6129 .ilen = 8,
de224c30 6130 .result = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
1da177e4
LT
6131 .rlen = 8,
6132 }, {
de224c30
SS
6133 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6134 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 6135 .klen = 16,
de224c30 6136 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4 6137 .ilen = 8,
de224c30 6138 .result = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
1da177e4
LT
6139 .rlen = 8,
6140 }, {
de224c30
SS
6141 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6142 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 6143 .klen = 16,
f0df30b1 6144 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
de224c30 6145 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4 6146 .ilen = 16,
f0df30b1
SS
6147 .result = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
6148 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
1da177e4
LT
6149 .rlen = 16,
6150 }, {
de224c30
SS
6151 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6152 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 6153 .klen = 16,
de224c30
SS
6154 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6155 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6156 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6157 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4 6158 .ilen = 32,
de224c30
SS
6159 .result = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
6160 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
6161 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
6162 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
1da177e4
LT
6163 .rlen = 32,
6164 }
6165};
6166
ef2736fc 6167static struct cipher_testvec xtea_dec_tv_template[] = {
1da177e4 6168 {
de224c30 6169 .key = zeroed_string,
1da177e4 6170 .klen = 16,
de224c30 6171 .input = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
1da177e4 6172 .ilen = 8,
de224c30 6173 .result = zeroed_string,
1da177e4
LT
6174 .rlen = 8,
6175 }, {
de224c30
SS
6176 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6177 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 6178 .klen = 16,
de224c30 6179 .input = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
1da177e4 6180 .ilen = 8,
de224c30 6181 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4
LT
6182 .rlen = 8,
6183 }, {
de224c30
SS
6184 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6185 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 6186 .klen = 16,
de224c30
SS
6187 .input = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
6188 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
1da177e4 6189 .ilen = 16,
de224c30
SS
6190 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6191 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4
LT
6192 .rlen = 16,
6193 }, {
de224c30
SS
6194 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6195 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 6196 .klen = 16,
de224c30
SS
6197 .input = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
6198 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
6199 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
6200 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
1da177e4 6201 .ilen = 32,
de224c30
SS
6202 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6203 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6204 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6205 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4
LT
6206 .rlen = 32,
6207 }
6208};
6209
6210/*
6211 * KHAZAD test vectors.
6212 */
6213#define KHAZAD_ENC_TEST_VECTORS 5
6214#define KHAZAD_DEC_TEST_VECTORS 5
6215
ef2736fc
HX
6216static struct cipher_testvec khazad_enc_tv_template[] = {
6217 {
de224c30
SS
6218 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
6219 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 6220 .klen = 16,
de224c30 6221 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 6222 .ilen = 8,
de224c30 6223 .result = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
1da177e4
LT
6224 .rlen = 8,
6225 }, {
de224c30
SS
6226 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
6227 "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 6228 .klen = 16,
de224c30 6229 .input = "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 6230 .ilen = 8,
de224c30 6231 .result = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
1da177e4
LT
6232 .rlen = 8,
6233 }, {
de224c30
SS
6234 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
6235 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 6236 .klen = 16,
de224c30 6237 .input = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 6238 .ilen = 8,
de224c30 6239 .result = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
1da177e4
LT
6240 .rlen = 8,
6241 }, {
de224c30
SS
6242 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6243 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6244 .klen = 16,
de224c30 6245 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6246 .ilen = 8,
de224c30 6247 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4
LT
6248 .rlen = 8,
6249 }, {
de224c30
SS
6250 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6251 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6252 .klen = 16,
de224c30
SS
6253 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6254 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6255 .ilen = 16,
de224c30
SS
6256 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
6257 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4
LT
6258 .rlen = 16,
6259 },
6260};
6261
ef2736fc 6262static struct cipher_testvec khazad_dec_tv_template[] = {
1da177e4 6263 {
de224c30
SS
6264 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
6265 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 6266 .klen = 16,
de224c30 6267 .input = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
1da177e4 6268 .ilen = 8,
de224c30 6269 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
6270 .rlen = 8,
6271 }, {
de224c30
SS
6272 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
6273 "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 6274 .klen = 16,
de224c30 6275 .input = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
1da177e4 6276 .ilen = 8,
de224c30 6277 .result = "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4
LT
6278 .rlen = 8,
6279 }, {
de224c30
SS
6280 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
6281 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 6282 .klen = 16,
de224c30 6283 .input = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
1da177e4 6284 .ilen = 8,
de224c30 6285 .result = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4
LT
6286 .rlen = 8,
6287 }, {
de224c30
SS
6288 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6289 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6290 .klen = 16,
de224c30 6291 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4 6292 .ilen = 8,
de224c30 6293 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4
LT
6294 .rlen = 8,
6295 }, {
de224c30
SS
6296 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6297 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6298 .klen = 16,
de224c30
SS
6299 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
6300 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4 6301 .ilen = 16,
de224c30
SS
6302 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6303 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4
LT
6304 .rlen = 16,
6305 },
6306};
6307
6308/*
6309 * Anubis test vectors.
6310 */
6311
6312#define ANUBIS_ENC_TEST_VECTORS 5
6313#define ANUBIS_DEC_TEST_VECTORS 5
6314#define ANUBIS_CBC_ENC_TEST_VECTORS 2
6315#define ANUBIS_CBC_DEC_TEST_VECTORS 2
6316
6317static struct cipher_testvec anubis_enc_tv_template[] = {
6318 {
de224c30
SS
6319 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6320 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6321 .klen = 16,
de224c30
SS
6322 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6323 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6324 .ilen = 16,
de224c30
SS
6325 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6326 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
1da177e4
LT
6327 .rlen = 16,
6328 }, {
6329
de224c30
SS
6330 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
6331 "\x03\x03\x03\x03\x03\x03\x03\x03"
6332 "\x03\x03\x03\x03",
1da177e4 6333 .klen = 20,
de224c30
SS
6334 .input = "\x03\x03\x03\x03\x03\x03\x03\x03"
6335 "\x03\x03\x03\x03\x03\x03\x03\x03",
1da177e4 6336 .ilen = 16,
de224c30
SS
6337 .result = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
6338 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
1da177e4
LT
6339 .rlen = 16,
6340 }, {
de224c30
SS
6341 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
6342 "\x24\x24\x24\x24\x24\x24\x24\x24"
6343 "\x24\x24\x24\x24\x24\x24\x24\x24"
6344 "\x24\x24\x24\x24",
1da177e4 6345 .klen = 28,
de224c30
SS
6346 .input = "\x24\x24\x24\x24\x24\x24\x24\x24"
6347 "\x24\x24\x24\x24\x24\x24\x24\x24",
1da177e4 6348 .ilen = 16,
de224c30
SS
6349 .result = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
6350 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
1da177e4
LT
6351 .rlen = 16,
6352 }, {
de224c30
SS
6353 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
6354 "\x25\x25\x25\x25\x25\x25\x25\x25"
6355 "\x25\x25\x25\x25\x25\x25\x25\x25"
6356 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 6357 .klen = 32,
de224c30
SS
6358 .input = "\x25\x25\x25\x25\x25\x25\x25\x25"
6359 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 6360 .ilen = 16,
de224c30
SS
6361 .result = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
6362 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
1da177e4
LT
6363 .rlen = 16,
6364 }, {
de224c30
SS
6365 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6366 "\x35\x35\x35\x35\x35\x35\x35\x35"
6367 "\x35\x35\x35\x35\x35\x35\x35\x35"
6368 "\x35\x35\x35\x35\x35\x35\x35\x35"
6369 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6370 .klen = 40,
de224c30
SS
6371 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
6372 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6373 .ilen = 16,
de224c30
SS
6374 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6375 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
1da177e4
LT
6376 .rlen = 16,
6377 },
6378};
6379
6380static struct cipher_testvec anubis_dec_tv_template[] = {
6381 {
de224c30
SS
6382 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6383 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6384 .klen = 16,
de224c30
SS
6385 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6386 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
1da177e4 6387 .ilen = 16,
de224c30
SS
6388 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6389 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4
LT
6390 .rlen = 16,
6391 }, {
6392
de224c30
SS
6393 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
6394 "\x03\x03\x03\x03\x03\x03\x03\x03"
6395 "\x03\x03\x03\x03",
1da177e4 6396 .klen = 20,
de224c30
SS
6397 .input = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
6398 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
1da177e4 6399 .ilen = 16,
de224c30
SS
6400 .result = "\x03\x03\x03\x03\x03\x03\x03\x03"
6401 "\x03\x03\x03\x03\x03\x03\x03\x03",
1da177e4
LT
6402 .rlen = 16,
6403 }, {
de224c30
SS
6404 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
6405 "\x24\x24\x24\x24\x24\x24\x24\x24"
6406 "\x24\x24\x24\x24\x24\x24\x24\x24"
6407 "\x24\x24\x24\x24",
1da177e4 6408 .klen = 28,
de224c30
SS
6409 .input = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
6410 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
1da177e4 6411 .ilen = 16,
de224c30
SS
6412 .result = "\x24\x24\x24\x24\x24\x24\x24\x24"
6413 "\x24\x24\x24\x24\x24\x24\x24\x24",
1da177e4
LT
6414 .rlen = 16,
6415 }, {
de224c30
SS
6416 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
6417 "\x25\x25\x25\x25\x25\x25\x25\x25"
6418 "\x25\x25\x25\x25\x25\x25\x25\x25"
6419 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 6420 .klen = 32,
de224c30
SS
6421 .input = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
6422 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
1da177e4 6423 .ilen = 16,
de224c30
SS
6424 .result = "\x25\x25\x25\x25\x25\x25\x25\x25"
6425 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4
LT
6426 .rlen = 16,
6427 }, {
de224c30
SS
6428 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6429 "\x35\x35\x35\x35\x35\x35\x35\x35"
6430 "\x35\x35\x35\x35\x35\x35\x35\x35"
6431 "\x35\x35\x35\x35\x35\x35\x35\x35"
6432 "\x35\x35\x35\x35\x35\x35\x35\x35",
6433 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6434 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
1da177e4
LT
6435 .klen = 40,
6436 .ilen = 16,
de224c30
SS
6437 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
6438 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4
LT
6439 .rlen = 16,
6440 },
6441};
6442
6443static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
6444 {
de224c30
SS
6445 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6446 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6447 .klen = 16,
de224c30
SS
6448 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6449 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6450 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6451 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6452 .ilen = 32,
de224c30
SS
6453 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6454 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
6455 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
6456 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
1da177e4
LT
6457 .rlen = 32,
6458 }, {
de224c30
SS
6459 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6460 "\x35\x35\x35\x35\x35\x35\x35\x35"
6461 "\x35\x35\x35\x35\x35\x35\x35\x35"
6462 "\x35\x35\x35\x35\x35\x35\x35\x35"
6463 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6464 .klen = 40,
de224c30
SS
6465 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
6466 "\x35\x35\x35\x35\x35\x35\x35\x35"
6467 "\x35\x35\x35\x35\x35\x35\x35\x35"
6468 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6469 .ilen = 32,
de224c30
SS
6470 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6471 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
6472 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
6473 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
1da177e4
LT
6474 .rlen = 32,
6475 },
6476};
6477
6478static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
6479 {
de224c30
SS
6480 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6481 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6482 .klen = 16,
de224c30
SS
6483 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6484 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
6485 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
6486 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
1da177e4 6487 .ilen = 32,
de224c30
SS
6488 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6489 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6490 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6491 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4
LT
6492 .rlen = 32,
6493 }, {
de224c30
SS
6494 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6495 "\x35\x35\x35\x35\x35\x35\x35\x35"
6496 "\x35\x35\x35\x35\x35\x35\x35\x35"
6497 "\x35\x35\x35\x35\x35\x35\x35\x35"
6498 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6499 .klen = 40,
de224c30
SS
6500 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6501 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
6502 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
6503 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
1da177e4 6504 .ilen = 32,
de224c30
SS
6505 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
6506 "\x35\x35\x35\x35\x35\x35\x35\x35"
6507 "\x35\x35\x35\x35\x35\x35\x35\x35"
6508 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4
LT
6509 .rlen = 32,
6510 },
6511};
6512
fb4f10ed
AG
6513/*
6514 * XETA test vectors
6515 */
6516#define XETA_ENC_TEST_VECTORS 4
6517#define XETA_DEC_TEST_VECTORS 4
6518
6519static struct cipher_testvec xeta_enc_tv_template[] = {
6520 {
de224c30 6521 .key = zeroed_string,
fb4f10ed 6522 .klen = 16,
de224c30 6523 .input = zeroed_string,
fb4f10ed 6524 .ilen = 8,
de224c30 6525 .result = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
fb4f10ed
AG
6526 .rlen = 8,
6527 }, {
de224c30
SS
6528 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6529 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
fb4f10ed 6530 .klen = 16,
de224c30 6531 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
fb4f10ed 6532 .ilen = 8,
de224c30 6533 .result = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
fb4f10ed
AG
6534 .rlen = 8,
6535 }, {
de224c30
SS
6536 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6537 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
fb4f10ed 6538 .klen = 16,
de224c30
SS
6539 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6540 "\x65\x73\x74\x5f\x76\x65\x63\x74",
fb4f10ed 6541 .ilen = 16,
de224c30
SS
6542 .result = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6543 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
fb4f10ed
AG
6544 .rlen = 16,
6545 }, {
de224c30
SS
6546 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6547 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
fb4f10ed 6548 .klen = 16,
de224c30
SS
6549 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6550 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6551 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6552 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
fb4f10ed 6553 .ilen = 32,
de224c30
SS
6554 .result = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6555 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6556 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6557 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
fb4f10ed
AG
6558 .rlen = 32,
6559 }
6560};
6561
6562static struct cipher_testvec xeta_dec_tv_template[] = {
6563 {
de224c30 6564 .key = zeroed_string,
fb4f10ed 6565 .klen = 16,
de224c30 6566 .input = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
fb4f10ed 6567 .ilen = 8,
de224c30 6568 .result = zeroed_string,
fb4f10ed
AG
6569 .rlen = 8,
6570 }, {
de224c30
SS
6571 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6572 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
fb4f10ed 6573 .klen = 16,
de224c30 6574 .input = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
fb4f10ed 6575 .ilen = 8,
de224c30 6576 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
fb4f10ed
AG
6577 .rlen = 8,
6578 }, {
de224c30
SS
6579 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6580 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
fb4f10ed 6581 .klen = 16,
de224c30
SS
6582 .input = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6583 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
fb4f10ed 6584 .ilen = 16,
de224c30
SS
6585 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6586 "\x65\x73\x74\x5f\x76\x65\x63\x74",
fb4f10ed
AG
6587 .rlen = 16,
6588 }, {
de224c30
SS
6589 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6590 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
fb4f10ed 6591 .klen = 16,
de224c30
SS
6592 .input = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6593 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6594 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6595 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
fb4f10ed 6596 .ilen = 32,
de224c30
SS
6597 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6598 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6599 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6600 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
fb4f10ed
AG
6601 .rlen = 32,
6602 }
6603};
6604
90831639
DH
6605/*
6606 * FCrypt test vectors
6607 */
6608#define FCRYPT_ENC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_enc_tv_template)
6609#define FCRYPT_DEC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_dec_tv_template)
6610
6611static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
6612 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
de224c30 6613 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6614 .klen = 8,
de224c30
SS
6615 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6616 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6617 .ilen = 8,
de224c30 6618 .result = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
90831639
DH
6619 .rlen = 8,
6620 }, {
de224c30 6621 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
90831639 6622 .klen = 8,
de224c30
SS
6623 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6624 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
90831639 6625 .ilen = 8,
de224c30 6626 .result = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
90831639
DH
6627 .rlen = 8,
6628 }, { /* From Arla */
de224c30 6629 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639 6630 .klen = 8,
de224c30 6631 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639
DH
6632 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6633 .ilen = 48,
de224c30
SS
6634 .result = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6635 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6636 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6637 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6638 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6639 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
90831639
DH
6640 .rlen = 48,
6641 }, {
de224c30 6642 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6643 .klen = 8,
de224c30 6644 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639
DH
6645 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6646 .ilen = 48,
de224c30
SS
6647 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6648 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6649 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6650 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6651 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6652 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6653 .rlen = 48,
6654 }, { /* split-page version */
de224c30 6655 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6656 .klen = 8,
de224c30 6657 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639
DH
6658 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6659 .ilen = 48,
de224c30
SS
6660 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6661 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6662 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6663 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6664 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6665 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6666 .rlen = 48,
6667 .np = 2,
6668 .tap = { 20, 28 },
6669 }
6670};
6671
6672static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
6673 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
de224c30 6674 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6675 .klen = 8,
de224c30
SS
6676 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6677 .input = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
90831639 6678 .ilen = 8,
de224c30 6679 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639
DH
6680 .rlen = 8,
6681 }, {
de224c30 6682 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
90831639 6683 .klen = 8,
de224c30
SS
6684 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6685 .input = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
90831639 6686 .ilen = 8,
de224c30 6687 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
90831639
DH
6688 .rlen = 8,
6689 }, { /* From Arla */
de224c30 6690 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639 6691 .klen = 8,
de224c30
SS
6692 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6693 .input = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6694 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6695 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6696 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6697 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6698 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
90831639
DH
6699 .ilen = 48,
6700 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6701 .rlen = 48,
6702 }, {
de224c30 6703 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6704 .klen = 8,
de224c30
SS
6705 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6706 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6707 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6708 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6709 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6710 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6711 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6712 .ilen = 48,
6713 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6714 .rlen = 48,
6715 }, { /* split-page version */
de224c30 6716 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6717 .klen = 8,
de224c30
SS
6718 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6719 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6720 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6721 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6722 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6723 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6724 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6725 .ilen = 48,
6726 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6727 .rlen = 48,
6728 .np = 2,
6729 .tap = { 20, 28 },
6730 }
6731};
6732
02ab5a70
NT
6733/*
6734 * CAMELLIA test vectors.
6735 */
6736#define CAMELLIA_ENC_TEST_VECTORS 3
6737#define CAMELLIA_DEC_TEST_VECTORS 3
6738#define CAMELLIA_CBC_ENC_TEST_VECTORS 2
6739#define CAMELLIA_CBC_DEC_TEST_VECTORS 2
6740
6741static struct cipher_testvec camellia_enc_tv_template[] = {
6742 {
de224c30
SS
6743 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6744 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6745 .klen = 16,
de224c30
SS
6746 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6747 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6748 .ilen = 16,
de224c30
SS
6749 .result = "\x67\x67\x31\x38\x54\x96\x69\x73"
6750 "\x08\x57\x06\x56\x48\xea\xbe\x43",
02ab5a70
NT
6751 .rlen = 16,
6752 }, {
de224c30
SS
6753 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6754 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6755 "\x00\x11\x22\x33\x44\x55\x66\x77",
02ab5a70 6756 .klen = 24,
de224c30
SS
6757 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6758 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6759 .ilen = 16,
de224c30
SS
6760 .result = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6761 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
02ab5a70
NT
6762 .rlen = 16,
6763 }, {
de224c30
SS
6764 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6765 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6766 "\x00\x11\x22\x33\x44\x55\x66\x77"
6767 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
02ab5a70 6768 .klen = 32,
de224c30
SS
6769 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6770 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6771 .ilen = 16,
de224c30
SS
6772 .result = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6773 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
02ab5a70
NT
6774 .rlen = 16,
6775 },
6776};
6777
6778static struct cipher_testvec camellia_dec_tv_template[] = {
6779 {
de224c30
SS
6780 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6781 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6782 .klen = 16,
de224c30
SS
6783 .input = "\x67\x67\x31\x38\x54\x96\x69\x73"
6784 "\x08\x57\x06\x56\x48\xea\xbe\x43",
02ab5a70 6785 .ilen = 16,
de224c30
SS
6786 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6787 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6788 .rlen = 16,
6789 }, {
de224c30
SS
6790 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6791 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6792 "\x00\x11\x22\x33\x44\x55\x66\x77",
02ab5a70 6793 .klen = 24,
de224c30
SS
6794 .input = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6795 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
02ab5a70 6796 .ilen = 16,
de224c30
SS
6797 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6798 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6799 .rlen = 16,
6800 }, {
de224c30
SS
6801 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6802 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6803 "\x00\x11\x22\x33\x44\x55\x66\x77"
6804 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
02ab5a70 6805 .klen = 32,
de224c30
SS
6806 .input = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6807 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
02ab5a70 6808 .ilen = 16,
de224c30
SS
6809 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6810 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6811 .rlen = 16,
6812 },
6813};
6814
6815static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
6816 {
de224c30
SS
6817 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6818 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
02ab5a70 6819 .klen = 16,
de224c30
SS
6820 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6821 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6822 .input = "Single block msg",
02ab5a70 6823 .ilen = 16,
de224c30
SS
6824 .result = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6825 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
02ab5a70
NT
6826 .rlen = 16,
6827 }, {
de224c30
SS
6828 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6829 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
02ab5a70 6830 .klen = 16,
de224c30
SS
6831 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6832 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6833 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6834 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6835 "\x10\x11\x12\x13\x14\x15\x16\x17"
6836 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
02ab5a70 6837 .ilen = 32,
de224c30
SS
6838 .result = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6839 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6840 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6841 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
02ab5a70
NT
6842 .rlen = 32,
6843 },
6844};
6845
6846static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
6847 {
de224c30
SS
6848 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6849 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
02ab5a70 6850 .klen = 16,
de224c30
SS
6851 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6852 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6853 .input = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6854 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
02ab5a70 6855 .ilen = 16,
de224c30 6856 .result = "Single block msg",
02ab5a70
NT
6857 .rlen = 16,
6858 }, {
de224c30
SS
6859 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6860 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
02ab5a70 6861 .klen = 16,
de224c30
SS
6862 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6863 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6864 .input = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6865 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6866 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6867 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
02ab5a70 6868 .ilen = 32,
de224c30
SS
6869 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6870 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6871 "\x10\x11\x12\x13\x14\x15\x16\x17"
6872 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
02ab5a70
NT
6873 .rlen = 32,
6874 },
6875};
6876
e2ee95b8
HSC
6877/*
6878 * SEED test vectors
6879 */
6880#define SEED_ENC_TEST_VECTORS 4
6881#define SEED_DEC_TEST_VECTORS 4
6882
6883static struct cipher_testvec seed_enc_tv_template[] = {
6884 {
de224c30 6885 .key = zeroed_string,
e2ee95b8 6886 .klen = 16,
de224c30
SS
6887 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6888 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6889 .ilen = 16,
de224c30
SS
6890 .result = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6891 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
e2ee95b8
HSC
6892 .rlen = 16,
6893 }, {
de224c30
SS
6894 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6895 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6896 .klen = 16,
de224c30 6897 .input = zeroed_string,
e2ee95b8 6898 .ilen = 16,
de224c30
SS
6899 .result = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6900 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
e2ee95b8
HSC
6901 .rlen = 16,
6902 }, {
de224c30
SS
6903 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6904 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
e2ee95b8 6905 .klen = 16,
de224c30
SS
6906 .input = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6907 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
e2ee95b8 6908 .ilen = 16,
de224c30
SS
6909 .result = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6910 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
e2ee95b8
HSC
6911 .rlen = 16,
6912 }, {
de224c30
SS
6913 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6914 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
e2ee95b8 6915 .klen = 16,
de224c30
SS
6916 .input = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6917 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
e2ee95b8 6918 .ilen = 16,
de224c30
SS
6919 .result = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6920 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
e2ee95b8
HSC
6921 .rlen = 16,
6922 }
6923};
6924
6925static struct cipher_testvec seed_dec_tv_template[] = {
6926 {
de224c30 6927 .key = zeroed_string,
e2ee95b8 6928 .klen = 16,
de224c30
SS
6929 .input = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6930 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
e2ee95b8 6931 .ilen = 16,
de224c30
SS
6932 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6933 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8
HSC
6934 .rlen = 16,
6935 }, {
de224c30
SS
6936 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6937 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6938 .klen = 16,
de224c30
SS
6939 .input = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6940 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
e2ee95b8 6941 .ilen = 16,
de224c30 6942 .result = zeroed_string,
e2ee95b8
HSC
6943 .rlen = 16,
6944 }, {
de224c30
SS
6945 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6946 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
e2ee95b8 6947 .klen = 16,
de224c30
SS
6948 .input = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6949 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
e2ee95b8 6950 .ilen = 16,
de224c30
SS
6951 .result = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6952 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
e2ee95b8
HSC
6953 .rlen = 16,
6954 }, {
de224c30
SS
6955 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6956 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
e2ee95b8 6957 .klen = 16,
de224c30
SS
6958 .input = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6959 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
e2ee95b8 6960 .ilen = 16,
de224c30
SS
6961 .result = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6962 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
e2ee95b8
HSC
6963 .rlen = 16,
6964 }
2407d608
TSH
6965};
6966
8bff664c 6967#define SALSA20_STREAM_ENC_TEST_VECTORS 5
2407d608
TSH
6968static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
6969 /*
6970 * Testvectors from verified.test-vectors submitted to ECRYPT.
6971 * They are truncated to size 39, 64, 111, 129 to test a variety
6972 * of input length.
6973 */
6974 { /* Set 3, vector 0 */
de224c30
SS
6975 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6976 "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F",
2407d608 6977 .klen = 16,
de224c30
SS
6978 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6979 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6980 "\x00\x00\x00\x00\x00\x00\x00\x00"
6981 "\x00\x00\x00\x00\x00\x00\x00\x00"
6982 "\x00\x00\x00\x00\x00\x00\x00\x00"
6983 "\x00\x00\x00\x00\x00\x00\x00",
2407d608 6984 .ilen = 39,
de224c30
SS
6985 .result = "\x2D\xD5\xC3\xF7\xBA\x2B\x20\xF7"
6986 "\x68\x02\x41\x0C\x68\x86\x88\x89"
6987 "\x5A\xD8\xC1\xBD\x4E\xA6\xC9\xB1"
6988 "\x40\xFB\x9B\x90\xE2\x10\x49\xBF"
6989 "\x58\x3F\x52\x79\x70\xEB\xC1",
2407d608
TSH
6990 .rlen = 39,
6991 }, { /* Set 5, vector 0 */
de224c30
SS
6992 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6993 "\x00\x00\x00\x00\x00\x00\x00\x00",
2407d608 6994 .klen = 16,
de224c30
SS
6995 .iv = "\x80\x00\x00\x00\x00\x00\x00\x00",
6996 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6997 "\x00\x00\x00\x00\x00\x00\x00\x00"
6998 "\x00\x00\x00\x00\x00\x00\x00\x00"
6999 "\x00\x00\x00\x00\x00\x00\x00\x00"
7000 "\x00\x00\x00\x00\x00\x00\x00\x00"
7001 "\x00\x00\x00\x00\x00\x00\x00\x00"
7002 "\x00\x00\x00\x00\x00\x00\x00\x00"
7003 "\x00\x00\x00\x00\x00\x00\x00\x00",
2407d608 7004 .ilen = 64,
de224c30
SS
7005 .result = "\xB6\x6C\x1E\x44\x46\xDD\x95\x57"
7006 "\xE5\x78\xE2\x23\xB0\xB7\x68\x01"
7007 "\x7B\x23\xB2\x67\xBB\x02\x34\xAE"
7008 "\x46\x26\xBF\x44\x3F\x21\x97\x76"
7009 "\x43\x6F\xB1\x9F\xD0\xE8\x86\x6F"
7010 "\xCD\x0D\xE9\xA9\x53\x8F\x4A\x09"
7011 "\xCA\x9A\xC0\x73\x2E\x30\xBC\xF9"
7012 "\x8E\x4F\x13\xE4\xB9\xE2\x01\xD9",
2407d608
TSH
7013 .rlen = 64,
7014 }, { /* Set 3, vector 27 */
de224c30
SS
7015 .key = "\x1B\x1C\x1D\x1E\x1F\x20\x21\x22"
7016 "\x23\x24\x25\x26\x27\x28\x29\x2A"
7017 "\x2B\x2C\x2D\x2E\x2F\x30\x31\x32"
7018 "\x33\x34\x35\x36\x37\x38\x39\x3A",
2407d608 7019 .klen = 32,
de224c30
SS
7020 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
7021 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
7022 "\x00\x00\x00\x00\x00\x00\x00\x00"
7023 "\x00\x00\x00\x00\x00\x00\x00\x00"
7024 "\x00\x00\x00\x00\x00\x00\x00\x00"
7025 "\x00\x00\x00\x00\x00\x00\x00\x00"
7026 "\x00\x00\x00\x00\x00\x00\x00\x00"
7027 "\x00\x00\x00\x00\x00\x00\x00\x00"
7028 "\x00\x00\x00\x00\x00\x00\x00\x00"
7029 "\x00\x00\x00\x00\x00\x00\x00\x00"
7030 "\x00\x00\x00\x00\x00\x00\x00\x00"
7031 "\x00\x00\x00\x00\x00\x00\x00\x00"
7032 "\x00\x00\x00\x00\x00\x00\x00\x00"
7033 "\x00\x00\x00\x00\x00\x00\x00\x00"
7034 "\x00\x00\x00\x00\x00\x00\x00",
2407d608 7035 .ilen = 111,
de224c30
SS
7036 .result = "\xAE\x39\x50\x8E\xAC\x9A\xEC\xE7"
7037 "\xBF\x97\xBB\x20\xB9\xDE\xE4\x1F"
7038 "\x87\xD9\x47\xF8\x28\x91\x35\x98"
7039 "\xDB\x72\xCC\x23\x29\x48\x56\x5E"
7040 "\x83\x7E\x0B\xF3\x7D\x5D\x38\x7B"
7041 "\x2D\x71\x02\xB4\x3B\xB5\xD8\x23"
7042 "\xB0\x4A\xDF\x3C\xEC\xB6\xD9\x3B"
7043 "\x9B\xA7\x52\xBE\xC5\xD4\x50\x59"
7044 "\x15\x14\xB4\x0E\x40\xE6\x53\xD1"
7045 "\x83\x9C\x5B\xA0\x92\x29\x6B\x5E"
7046 "\x96\x5B\x1E\x2F\xD3\xAC\xC1\x92"
7047 "\xB1\x41\x3F\x19\x2F\xC4\x3B\xC6"
7048 "\x95\x46\x45\x54\xE9\x75\x03\x08"
7049 "\x44\xAF\xE5\x8A\x81\x12\x09",
2407d608 7050 .rlen = 111,
2407d608 7051 }, { /* Set 5, vector 27 */
de224c30
SS
7052 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
7053 "\x00\x00\x00\x00\x00\x00\x00\x00"
7054 "\x00\x00\x00\x00\x00\x00\x00\x00"
7055 "\x00\x00\x00\x00\x00\x00\x00\x00",
2407d608 7056 .klen = 32,
de224c30
SS
7057 .iv = "\x00\x00\x00\x10\x00\x00\x00\x00",
7058 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
7059 "\x00\x00\x00\x00\x00\x00\x00\x00"
7060 "\x00\x00\x00\x00\x00\x00\x00\x00"
7061 "\x00\x00\x00\x00\x00\x00\x00\x00"
7062 "\x00\x00\x00\x00\x00\x00\x00\x00"
7063 "\x00\x00\x00\x00\x00\x00\x00\x00"
7064 "\x00\x00\x00\x00\x00\x00\x00\x00"
7065 "\x00\x00\x00\x00\x00\x00\x00\x00"
7066 "\x00\x00\x00\x00\x00\x00\x00\x00"
7067 "\x00\x00\x00\x00\x00\x00\x00\x00"
7068 "\x00\x00\x00\x00\x00\x00\x00\x00"
7069 "\x00\x00\x00\x00\x00\x00\x00\x00"
7070 "\x00\x00\x00\x00\x00\x00\x00\x00"
7071 "\x00\x00\x00\x00\x00\x00\x00\x00"
7072 "\x00\x00\x00\x00\x00\x00\x00\x00"
7073 "\x00\x00\x00\x00\x00\x00\x00\x00"
7074 "\x00",
2407d608 7075 .ilen = 129,
de224c30
SS
7076 .result = "\xD2\xDB\x1A\x5C\xF1\xC1\xAC\xDB"
7077 "\xE8\x1A\x7A\x43\x40\xEF\x53\x43"
7078 "\x5E\x7F\x4B\x1A\x50\x52\x3F\x8D"
7079 "\x28\x3D\xCF\x85\x1D\x69\x6E\x60"
7080 "\xF2\xDE\x74\x56\x18\x1B\x84\x10"
7081 "\xD4\x62\xBA\x60\x50\xF0\x61\xF2"
7082 "\x1C\x78\x7F\xC1\x24\x34\xAF\x58"
7083 "\xBF\x2C\x59\xCA\x90\x77\xF3\xB0"
7084 "\x5B\x4A\xDF\x89\xCE\x2C\x2F\xFC"
7085 "\x67\xF0\xE3\x45\xE8\xB3\xB3\x75"
7086 "\xA0\x95\x71\xA1\x29\x39\x94\xCA"
7087 "\x45\x2F\xBD\xCB\x10\xB6\xBE\x9F"
7088 "\x8E\xF9\xB2\x01\x0A\x5A\x0A\xB7"
7089 "\x6B\x9D\x70\x8E\x4B\xD6\x2F\xCD"
7090 "\x2E\x40\x48\x75\xE9\xE2\x21\x45"
7091 "\x0B\xC9\xB6\xB5\x66\xBC\x9A\x59"
7092 "\x5A",
2407d608 7093 .rlen = 129,
8bff664c 7094 }, { /* large test vector generated using Crypto++ */
de224c30
SS
7095 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
7096 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
7097 "\x10\x11\x12\x13\x14\x15\x16\x17"
7098 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
8bff664c 7099 .klen = 32,
de224c30
SS
7100 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
7101 "\x00\x00\x00\x00\x00\x00\x00\x00",
7102 .input =
7103 "\x00\x01\x02\x03\x04\x05\x06\x07"
7104 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
7105 "\x10\x11\x12\x13\x14\x15\x16\x17"
7106 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
7107 "\x20\x21\x22\x23\x24\x25\x26\x27"
7108 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
7109 "\x30\x31\x32\x33\x34\x35\x36\x37"
7110 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
7111 "\x40\x41\x42\x43\x44\x45\x46\x47"
7112 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
7113 "\x50\x51\x52\x53\x54\x55\x56\x57"
7114 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
7115 "\x60\x61\x62\x63\x64\x65\x66\x67"
7116 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
7117 "\x70\x71\x72\x73\x74\x75\x76\x77"
7118 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
7119 "\x80\x81\x82\x83\x84\x85\x86\x87"
7120 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
7121 "\x90\x91\x92\x93\x94\x95\x96\x97"
7122 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
7123 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
7124 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
7125 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
7126 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
7127 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
7128 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
7129 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
7130 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
7131 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
7132 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
7133 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
7134 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
7135 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
7136 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
7137 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
7138 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
7139 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
7140 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
7141 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
7142 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
7143 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
7144 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
7145 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
7146 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
7147 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
7148 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
7149 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
7150 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
7151 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
7152 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
7153 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
7154 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
7155 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
7156 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
7157 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
7158 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
7159 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
7160 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
7161 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
7162 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
7163 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
7164 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
7165 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
7166 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
7167 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
7168 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
7169 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
7170 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
7171 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
7172 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
7173 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
7174 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
7175 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
7176 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
7177 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
7178 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
7179 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
7180 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
7181 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
7182 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
7183 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
7184 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
7185 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
7186 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
7187 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
7188 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
7189 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
7190 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
7191 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
7192 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
7193 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
7194 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
7195 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
7196 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
7197 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
7198 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
7199 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
7200 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
7201 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
7202 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
7203 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
7204 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
7205 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
7206 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
7207 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
7208 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
7209 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
7210 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
7211 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
7212 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
7213 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
7214 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
7215 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
7216 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
7217 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
7218 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
7219 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
7220 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
7221 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
7222 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
7223 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
7224 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
7225 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
7226 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
7227 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
7228 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
7229 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
7230 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
7231 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
7232 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
7233 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
7234 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
7235 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
7236 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
7237 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
7238 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
7239 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
7240 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
7241 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
7242 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
7243 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
7244 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
7245 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
7246 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
7247 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
7248 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
7249 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
7250 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
7251 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
7252 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
7253 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
7254 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
7255 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
7256 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
7257 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
7258 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
7259 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
7260 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
7261 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
7262 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
7263 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
7264 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
7265 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
7266 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
7267 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
7268 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
7269 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
7270 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
7271 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
7272 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
7273 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
7274 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
7275 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
7276 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
7277 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
7278 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
7279 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
7280 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
7281 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
7282 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
7283 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
7284 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
7285 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
7286 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
7287 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
7288 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
7289 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
7290 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
7291 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
7292 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
7293 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
7294 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
7295 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
7296 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
7297 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
7298 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
7299 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
7300 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
7301 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
7302 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
7303 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
7304 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
7305 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
7306 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
7307 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
7308 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
7309 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
7310 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
7311 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
7312 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
7313 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
7314 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
7315 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
7316 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
7317 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
7318 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
7319 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
7320 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
7321 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
7322 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
7323 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
7324 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
7325 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
7326 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
7327 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
7328 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
7329 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
7330 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
7331 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
7332 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
7333 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
7334 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
7335 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
7336 "\x38\x47\x56\x65\x74\x83\x92\xa1"
7337 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
7338 "\x28\x37\x46\x55\x64\x73\x82\x91"
7339 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
7340 "\x18\x27\x36\x45\x54\x63\x72\x81"
7341 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
7342 "\x08\x17\x26\x35\x44\x53\x62\x71"
7343 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
7344 "\xf8\x07\x16\x25\x34\x43\x52\x61"
7345 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
7346 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
7347 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
7348 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
7349 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
7350 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
7351 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
7352 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
7353 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
7354 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
7355 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
7356 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
7357 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
7358 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
7359 "\x00\x11\x22\x33\x44\x55\x66\x77"
7360 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
7361 "\x10\x21\x32\x43\x54\x65\x76\x87"
7362 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
7363 "\x20\x31\x42\x53\x64\x75\x86\x97"
7364 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
7365 "\x30\x41\x52\x63\x74\x85\x96\xa7"
7366 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
7367 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
7368 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
7369 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
7370 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
7371 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
7372 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
7373 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
7374 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
7375 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
7376 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
7377 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
7378 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
7379 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
7380 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
7381 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
7382 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
7383 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
7384 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
7385 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
7386 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
7387 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
7388 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
7389 "\xf0\x01\x12\x23\x34\x45\x56\x67"
7390 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
7391 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
7392 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
7393 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
7394 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
7395 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
7396 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
7397 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
7398 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
7399 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
7400 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
7401 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
7402 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
7403 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
7404 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
7405 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
7406 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
7407 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
7408 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
7409 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
7410 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
7411 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
7412 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
7413 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
7414 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
7415 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
7416 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
7417 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
7418 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
7419 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
7420 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
7421 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
7422 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
7423 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
7424 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
7425 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
7426 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
7427 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
7428 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
7429 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
7430 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
7431 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
7432 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
7433 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
7434 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
7435 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
7436 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
7437 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
7438 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
7439 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
7440 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
7441 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
7442 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
7443 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
7444 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
7445 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
7446 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
7447 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
7448 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
7449 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
7450 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
7451 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
7452 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
7453 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
7454 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
7455 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
7456 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
7457 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
7458 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
7459 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
7460 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
7461 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
7462 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
7463 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
7464 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
7465 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
7466 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
7467 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
7468 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
7469 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
7470 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
7471 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
7472 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
7473 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
7474 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
7475 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
7476 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
7477 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
7478 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
7479 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
7480 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
7481 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
7482 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
7483 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
7484 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
7485 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
7486 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
7487 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
7488 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
7489 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
7490 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
7491 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
7492 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
7493 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
7494 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
7495 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
7496 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
7497 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
7498 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
7499 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
7500 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
7501 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
7502 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
7503 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
7504 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
7505 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
7506 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
7507 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
7508 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
7509 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
7510 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
7511 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
7512 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
7513 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
7514 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
7515 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
7516 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
7517 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
7518 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
7519 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
7520 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
7521 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
7522 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
7523 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
7524 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
7525 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
7526 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
7527 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
7528 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
7529 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
7530 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
7531 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
7532 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
7533 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
7534 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
7535 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
7536 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
7537 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
7538 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
7539 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
7540 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
7541 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
7542 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
7543 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
7544 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
7545 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
7546 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
7547 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
7548 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
7549 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
7550 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
7551 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
7552 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
7553 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
7554 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
7555 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
7556 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
7557 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
7558 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
7559 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
7560 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
7561 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
7562 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
7563 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
7564 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
7565 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
7566 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
7567 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
7568 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
7569 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
7570 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
7571 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
7572 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
7573 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
7574 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
7575 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
7576 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
7577 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
7578 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
7579 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
7580 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
7581 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
7582 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
7583 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
7584 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
7585 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
7586 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
7587 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
7588 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
7589 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
7590 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
7591 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
7592 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
7593 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
7594 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
7595 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
7596 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
7597 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
7598 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
7599 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
7600 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
7601 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
7602 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
7603 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
7604 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
7605 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
7606 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
7607 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
7608 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
7609 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
7610 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
7611 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
7612 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
7613 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
7614 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
7615 "\x00\x21\x42\x63",
8bff664c 7616 .ilen = 4100,
de224c30
SS
7617 .result =
7618 "\xb5\x81\xf5\x64\x18\x73\xe3\xf0"
7619 "\x4c\x13\xf2\x77\x18\x60\x65\x5e"
7620 "\x29\x01\xce\x98\x55\x53\xf9\x0c"
7621 "\x2a\x08\xd5\x09\xb3\x57\x55\x56"
7622 "\xc5\xe9\x56\x90\xcb\x6a\xa3\xc0"
7623 "\xff\xc4\x79\xb4\xd2\x97\x5d\xc4"
7624 "\x43\xd1\xfe\x94\x7b\x88\x06\x5a"
7625 "\xb2\x9e\x2c\xfc\x44\x03\xb7\x90"
7626 "\xa0\xc1\xba\x6a\x33\xb8\xc7\xb2"
7627 "\x9d\xe1\x12\x4f\xc0\x64\xd4\x01"
7628 "\xfe\x8c\x7a\x66\xf7\xe6\x5a\x91"
7629 "\xbb\xde\x56\x86\xab\x65\x21\x30"
7630 "\x00\x84\x65\x24\xa5\x7d\x85\xb4"
7631 "\xe3\x17\xed\x3a\xb7\x6f\xb4\x0b"
7632 "\x0b\xaf\x15\xae\x5a\x8f\xf2\x0c"
7633 "\x2f\x27\xf4\x09\xd8\xd2\x96\xb7"
7634 "\x71\xf2\xc5\x99\x4d\x7e\x7f\x75"
7635 "\x77\x89\x30\x8b\x59\xdb\xa2\xb2"
7636 "\xa0\xf3\x19\x39\x2b\xc5\x7e\x3f"
7637 "\x4f\xd9\xd3\x56\x28\x97\x44\xdc"
7638 "\xc0\x8b\x77\x24\xd9\x52\xe7\xc5"
7639 "\xaf\xf6\x7d\x59\xb2\x44\x05\x1d"
7640 "\xb1\xb0\x11\xa5\x0f\xec\x33\xe1"
7641 "\x6d\x1b\x4e\x1f\xff\x57\x91\xb4"
7642 "\x5b\x9a\x96\xc5\x53\xbc\xae\x20"
7643 "\x3c\xbb\x14\xe2\xe8\x22\x33\xc1"
7644 "\x5e\x76\x9e\x46\x99\xf6\x2a\x15"
7645 "\xc6\x97\x02\xa0\x66\x43\xd1\xa6"
7646 "\x31\xa6\x9f\xfb\xf4\xd3\x69\xe5"
7647 "\xcd\x76\x95\xb8\x7a\x82\x7f\x21"
7648 "\x45\xff\x3f\xce\x55\xf6\x95\x10"
7649 "\x08\x77\x10\x43\xc6\xf3\x09\xe5"
7650 "\x68\xe7\x3c\xad\x00\x52\x45\x0d"
7651 "\xfe\x2d\xc6\xc2\x94\x8c\x12\x1d"
7652 "\xe6\x25\xae\x98\x12\x8e\x19\x9c"
7653 "\x81\x68\xb1\x11\xf6\x69\xda\xe3"
7654 "\x62\x08\x18\x7a\x25\x49\x28\xac"
7655 "\xba\x71\x12\x0b\xe4\xa2\xe5\xc7"
7656 "\x5d\x8e\xec\x49\x40\x21\xbf\x5a"
7657 "\x98\xf3\x02\x68\x55\x03\x7f\x8a"
7658 "\xe5\x94\x0c\x32\x5c\x07\x82\x63"
7659 "\xaf\x6f\x91\x40\x84\x8e\x52\x25"
7660 "\xd0\xb0\x29\x53\x05\xe2\x50\x7a"
7661 "\x34\xeb\xc9\x46\x20\xa8\x3d\xde"
7662 "\x7f\x16\x5f\x36\xc5\x2e\xdc\xd1"
7663 "\x15\x47\xc7\x50\x40\x6d\x91\xc5"
7664 "\xe7\x93\x95\x1a\xd3\x57\xbc\x52"
7665 "\x33\xee\x14\x19\x22\x52\x89\xa7"
7666 "\x4a\x25\x56\x77\x4b\xca\xcf\x0a"
7667 "\xe1\xf5\x35\x85\x30\x7e\x59\x4a"
7668 "\xbd\x14\x5b\xdf\xe3\x46\xcb\xac"
7669 "\x1f\x6c\x96\x0e\xf4\x81\xd1\x99"
7670 "\xca\x88\x63\x3d\x02\x58\x6b\xa9"
7671 "\xe5\x9f\xb3\x00\xb2\x54\xc6\x74"
7672 "\x1c\xbf\x46\xab\x97\xcc\xf8\x54"
7673 "\x04\x07\x08\x52\xe6\xc0\xda\x93"
7674 "\x74\x7d\x93\x99\x5d\x78\x68\xa6"
7675 "\x2e\x6b\xd3\x6a\x69\xcc\x12\x6b"
7676 "\xd4\xc7\xa5\xc6\xe7\xf6\x03\x04"
7677 "\x5d\xcd\x61\x5e\x17\x40\xdc\xd1"
7678 "\x5c\xf5\x08\xdf\x5c\x90\x85\xa4"
7679 "\xaf\xf6\x78\xbb\x0d\xf1\xf4\xa4"
7680 "\x54\x26\x72\x9e\x61\xfa\x86\xcf"
7681 "\xe8\x9e\xa1\xe0\xc7\x48\x23\xae"
7682 "\x5a\x90\xae\x75\x0a\x74\x18\x89"
7683 "\x05\xb1\x92\xb2\x7f\xd0\x1b\xa6"
7684 "\x62\x07\x25\x01\xc7\xc2\x4f\xf9"
7685 "\xe8\xfe\x63\x95\x80\x07\xb4\x26"
7686 "\xcc\xd1\x26\xb6\xc4\x3f\x9e\xcb"
7687 "\x8e\x3b\x2e\x44\x16\xd3\x10\x9a"
7688 "\x95\x08\xeb\xc8\xcb\xeb\xbf\x6f"
7689 "\x0b\xcd\x1f\xc8\xca\x86\xaa\xec"
7690 "\x33\xe6\x69\xf4\x45\x25\x86\x3a"
7691 "\x22\x94\x4f\x00\x23\x6a\x44\xc2"
7692 "\x49\x97\x33\xab\x36\x14\x0a\x70"
7693 "\x24\xc3\xbe\x04\x3b\x79\xa0\xf9"
7694 "\xb8\xe7\x76\x29\x22\x83\xd7\xf2"
7695 "\x94\xf4\x41\x49\xba\x5f\x7b\x07"
7696 "\xb5\xfb\xdb\x03\x1a\x9f\xb6\x4c"
7697 "\xc2\x2e\x37\x40\x49\xc3\x38\x16"
7698 "\xe2\x4f\x77\x82\xb0\x68\x4c\x71"
7699 "\x1d\x57\x61\x9c\xd9\x4e\x54\x99"
7700 "\x47\x13\x28\x73\x3c\xbb\x00\x90"
7701 "\xf3\x4d\xc9\x0e\xfd\xe7\xb1\x71"
7702 "\xd3\x15\x79\xbf\xcc\x26\x2f\xbd"
7703 "\xad\x6c\x50\x69\x6c\x3e\x6d\x80"
7704 "\x9a\xea\x78\xaf\x19\xb2\x0d\x4d"
7705 "\xad\x04\x07\xae\x22\x90\x4a\x93"
7706 "\x32\x0e\x36\x9b\x1b\x46\xba\x3b"
7707 "\xb4\xac\xc6\xd1\xa2\x31\x53\x3b"
7708 "\x2a\x3d\x45\xfe\x03\x61\x10\x85"
7709 "\x17\x69\xa6\x78\xcc\x6c\x87\x49"
7710 "\x53\xf9\x80\x10\xde\x80\xa2\x41"
7711 "\x6a\xc3\x32\x02\xad\x6d\x3c\x56"
7712 "\x00\x71\x51\x06\xa7\xbd\xfb\xef"
7713 "\x3c\xb5\x9f\xfc\x48\x7d\x53\x7c"
7714 "\x66\xb0\x49\x23\xc4\x47\x10\x0e"
7715 "\xe5\x6c\x74\x13\xe6\xc5\x3f\xaa"
7716 "\xde\xff\x07\x44\xdd\x56\x1b\xad"
7717 "\x09\x77\xfb\x5b\x12\xb8\x0d\x38"
7718 "\x17\x37\x35\x7b\x9b\xbc\xfe\xd4"
7719 "\x7e\x8b\xda\x7e\x5b\x04\xa7\x22"
7720 "\xa7\x31\xa1\x20\x86\xc7\x1b\x99"
7721 "\xdb\xd1\x89\xf4\x94\xa3\x53\x69"
7722 "\x8d\xe7\xe8\x74\x11\x8d\x74\xd6"
7723 "\x07\x37\x91\x9f\xfd\x67\x50\x3a"
7724 "\xc9\xe1\xf4\x36\xd5\xa0\x47\xd1"
7725 "\xf9\xe5\x39\xa3\x31\xac\x07\x36"
7726 "\x23\xf8\x66\x18\x14\x28\x34\x0f"
7727 "\xb8\xd0\xe7\x29\xb3\x04\x4b\x55"
7728 "\x01\x41\xb2\x75\x8d\xcb\x96\x85"
7729 "\x3a\xfb\xab\x2b\x9e\xfa\x58\x20"
7730 "\x44\x1f\xc0\x14\x22\x75\x61\xe8"
7731 "\xaa\x19\xcf\xf1\x82\x56\xf4\xd7"
7732 "\x78\x7b\x3d\x5f\xb3\x9e\x0b\x8a"
7733 "\x57\x50\xdb\x17\x41\x65\x4d\xa3"
7734 "\x02\xc9\x9c\x9c\x53\xfb\x39\x39"
7735 "\x9b\x1d\x72\x24\xda\xb7\x39\xbe"
7736 "\x13\x3b\xfa\x29\xda\x9e\x54\x64"
7737 "\x6e\xba\xd8\xa1\xcb\xb3\x36\xfa"
7738 "\xcb\x47\x85\xe9\x61\x38\xbc\xbe"
7739 "\xc5\x00\x38\x2a\x54\xf7\xc4\xb9"
7740 "\xb3\xd3\x7b\xa0\xa0\xf8\x72\x7f"
7741 "\x8c\x8e\x82\x0e\xc6\x1c\x75\x9d"
7742 "\xca\x8e\x61\x87\xde\xad\x80\xd2"
7743 "\xf5\xf9\x80\xef\x15\x75\xaf\xf5"
7744 "\x80\xfb\xff\x6d\x1e\x25\xb7\x40"
7745 "\x61\x6a\x39\x5a\x6a\xb5\x31\xab"
7746 "\x97\x8a\x19\x89\x44\x40\xc0\xa6"
7747 "\xb4\x4e\x30\x32\x7b\x13\xe7\x67"
7748 "\xa9\x8b\x57\x04\xc2\x01\xa6\xf4"
7749 "\x28\x99\xad\x2c\x76\xa3\x78\xc2"
7750 "\x4a\xe6\xca\x5c\x50\x6a\xc1\xb0"
7751 "\x62\x4b\x10\x8e\x7c\x17\x43\xb3"
7752 "\x17\x66\x1c\x3e\x8d\x69\xf0\x5a"
7753 "\x71\xf5\x97\xdc\xd1\x45\xdd\x28"
7754 "\xf3\x5d\xdf\x53\x7b\x11\xe5\xbc"
7755 "\x4c\xdb\x1b\x51\x6b\xe9\xfb\x3d"
7756 "\xc1\xc3\x2c\xb9\x71\xf5\xb6\xb2"
7757 "\x13\x36\x79\x80\x53\xe8\xd3\xa6"
7758 "\x0a\xaf\xfd\x56\x97\xf7\x40\x8e"
7759 "\x45\xce\xf8\xb0\x9e\x5c\x33\x82"
7760 "\xb0\x44\x56\xfc\x05\x09\xe9\x2a"
7761 "\xac\x26\x80\x14\x1d\xc8\x3a\x35"
7762 "\x4c\x82\x97\xfd\x76\xb7\xa9\x0a"
7763 "\x35\x58\x79\x8e\x0f\x66\xea\xaf"
7764 "\x51\x6c\x09\xa9\x6e\x9b\xcb\x9a"
7765 "\x31\x47\xa0\x2f\x7c\x71\xb4\x4a"
7766 "\x11\xaa\x8c\x66\xc5\x64\xe6\x3a"
7767 "\x54\xda\x24\x6a\xc4\x41\x65\x46"
7768 "\x82\xa0\x0a\x0f\x5f\xfb\x25\xd0"
7769 "\x2c\x91\xa7\xee\xc4\x81\x07\x86"
7770 "\x75\x5e\x33\x69\x97\xe4\x2c\xa8"
7771 "\x9d\x9f\x0b\x6a\xbe\xad\x98\xda"
7772 "\x6d\x94\x41\xda\x2c\x1e\x89\xc4"
7773 "\xc2\xaf\x1e\x00\x05\x0b\x83\x60"
7774 "\xbd\x43\xea\x15\x23\x7f\xb9\xac"
7775 "\xee\x4f\x2c\xaf\x2a\xf3\xdf\xd0"
7776 "\xf3\x19\x31\xbb\x4a\x74\x84\x17"
7777 "\x52\x32\x2c\x7d\x61\xe4\xcb\xeb"
7778 "\x80\x38\x15\x52\xcb\x6f\xea\xe5"
7779 "\x73\x9c\xd9\x24\x69\xc6\x95\x32"
7780 "\x21\xc8\x11\xe4\xdc\x36\xd7\x93"
7781 "\x38\x66\xfb\xb2\x7f\x3a\xb9\xaf"
7782 "\x31\xdd\x93\x75\x78\x8a\x2c\x94"
7783 "\x87\x1a\x58\xec\x9e\x7d\x4d\xba"
7784 "\xe1\xe5\x4d\xfc\xbc\xa4\x2a\x14"
7785 "\xef\xcc\xa7\xec\xab\x43\x09\x18"
7786 "\xd3\xab\x68\xd1\x07\x99\x44\x47"
7787 "\xd6\x83\x85\x3b\x30\xea\xa9\x6b"
7788 "\x63\xea\xc4\x07\xfb\x43\x2f\xa4"
7789 "\xaa\xb0\xab\x03\x89\xce\x3f\x8c"
7790 "\x02\x7c\x86\x54\xbc\x88\xaf\x75"
7791 "\xd2\xdc\x63\x17\xd3\x26\xf6\x96"
7792 "\xa9\x3c\xf1\x61\x8c\x11\x18\xcc"
7793 "\xd6\xea\x5b\xe2\xcd\xf0\xf1\xb2"
7794 "\xe5\x35\x90\x1f\x85\x4c\x76\x5b"
7795 "\x66\xce\x44\xa4\x32\x9f\xe6\x7b"
7796 "\x71\x6e\x9f\x58\x15\x67\x72\x87"
7797 "\x64\x8e\x3a\x44\x45\xd4\x76\xfa"
7798 "\xc2\xf6\xef\x85\x05\x18\x7a\x9b"
7799 "\xba\x41\x54\xac\xf0\xfc\x59\x12"
7800 "\x3f\xdf\xa0\xe5\x8a\x65\xfd\x3a"
7801 "\x62\x8d\x83\x2c\x03\xbe\x05\x76"
7802 "\x2e\x53\x49\x97\x94\x33\xae\x40"
7803 "\x81\x15\xdb\x6e\xad\xaa\xf5\x4b"
7804 "\xe3\x98\x70\xdf\xe0\x7c\xcd\xdb"
7805 "\x02\xd4\x7d\x2f\xc1\xe6\xb4\xf3"
7806 "\xd7\x0d\x7a\xd9\x23\x9e\x87\x2d"
7807 "\xce\x87\xad\xcc\x72\x05\x00\x29"
7808 "\xdc\x73\x7f\x64\xc1\x15\x0e\xc2"
7809 "\xdf\xa7\x5f\xeb\x41\xa1\xcd\xef"
7810 "\x5c\x50\x79\x2a\x56\x56\x71\x8c"
7811 "\xac\xc0\x79\x50\x69\xca\x59\x32"
7812 "\x65\xf2\x54\xe4\x52\x38\x76\xd1"
7813 "\x5e\xde\x26\x9e\xfb\x75\x2e\x11"
7814 "\xb5\x10\xf4\x17\x73\xf5\x89\xc7"
7815 "\x4f\x43\x5c\x8e\x7c\xb9\x05\x52"
7816 "\x24\x40\x99\xfe\x9b\x85\x0b\x6c"
7817 "\x22\x3e\x8b\xae\x86\xa1\xd2\x79"
7818 "\x05\x68\x6b\xab\xe3\x41\x49\xed"
7819 "\x15\xa1\x8d\x40\x2d\x61\xdf\x1a"
7820 "\x59\xc9\x26\x8b\xef\x30\x4c\x88"
7821 "\x4b\x10\xf8\x8d\xa6\x92\x9f\x4b"
7822 "\xf3\xc4\x53\x0b\x89\x5d\x28\x92"
7823 "\xcf\x78\xb2\xc0\x5d\xed\x7e\xfc"
7824 "\xc0\x12\x23\x5f\x5a\x78\x86\x43"
7825 "\x6e\x27\xf7\x5a\xa7\x6a\xed\x19"
7826 "\x04\xf0\xb3\x12\xd1\xbd\x0e\x89"
7827 "\x6e\xbc\x96\xa8\xd8\x49\x39\x9f"
7828 "\x7e\x67\xf0\x2e\x3e\x01\xa9\xba"
7829 "\xec\x8b\x62\x8e\xcb\x4a\x70\x43"
7830 "\xc7\xc2\xc4\xca\x82\x03\x73\xe9"
7831 "\x11\xdf\xcf\x54\xea\xc9\xb0\x95"
7832 "\x51\xc0\x13\x3d\x92\x05\xfa\xf4"
7833 "\xa9\x34\xc8\xce\x6c\x3d\x54\xcc"
7834 "\xc4\xaf\xf1\xdc\x11\x44\x26\xa2"
7835 "\xaf\xf1\x85\x75\x7d\x03\x61\x68"
7836 "\x4e\x78\xc6\x92\x7d\x86\x7d\x77"
7837 "\xdc\x71\x72\xdb\xc6\xae\xa1\xcb"
7838 "\x70\x9a\x0b\x19\xbe\x4a\x6c\x2a"
7839 "\xe2\xba\x6c\x64\x9a\x13\x28\xdf"
7840 "\x85\x75\xe6\x43\xf6\x87\x08\x68"
7841 "\x6e\xba\x6e\x79\x9f\x04\xbc\x23"
7842 "\x50\xf6\x33\x5c\x1f\x24\x25\xbe"
7843 "\x33\x47\x80\x45\x56\xa3\xa7\xd7"
7844 "\x7a\xb1\x34\x0b\x90\x3c\x9c\xad"
7845 "\x44\x5f\x9e\x0e\x9d\xd4\xbd\x93"
7846 "\x5e\xfa\x3c\xe0\xb0\xd9\xed\xf3"
7847 "\xd6\x2e\xff\x24\xd8\x71\x6c\xed"
7848 "\xaf\x55\xeb\x22\xac\x93\x68\x32"
7849 "\x05\x5b\x47\xdd\xc6\x4a\xcb\xc7"
7850 "\x10\xe1\x3c\x92\x1a\xf3\x23\x78"
7851 "\x2b\xa1\xd2\x80\xf4\x12\xb1\x20"
7852 "\x8f\xff\x26\x35\xdd\xfb\xc7\x4e"
7853 "\x78\xf1\x2d\x50\x12\x77\xa8\x60"
7854 "\x7c\x0f\xf5\x16\x2f\x63\x70\x2a"
7855 "\xc0\x96\x80\x4e\x0a\xb4\x93\x35"
7856 "\x5d\x1d\x3f\x56\xf7\x2f\xbb\x90"
7857 "\x11\x16\x8f\xa2\xec\x47\xbe\xac"
7858 "\x56\x01\x26\x56\xb1\x8c\xb2\x10"
7859 "\xf9\x1a\xca\xf5\xd1\xb7\x39\x20"
7860 "\x63\xf1\x69\x20\x4f\x13\x12\x1f"
7861 "\x5b\x65\xfc\x98\xf7\xc4\x7a\xbe"
7862 "\xf7\x26\x4d\x2b\x84\x7b\x42\xad"
7863 "\xd8\x7a\x0a\xb4\xd8\x74\xbf\xc1"
7864 "\xf0\x6e\xb4\x29\xa3\xbb\xca\x46"
7865 "\x67\x70\x6a\x2d\xce\x0e\xa2\x8a"
7866 "\xa9\x87\xbf\x05\xc4\xc1\x04\xa3"
7867 "\xab\xd4\x45\x43\x8c\xb6\x02\xb0"
7868 "\x41\xc8\xfc\x44\x3d\x59\xaa\x2e"
7869 "\x44\x21\x2a\x8d\x88\x9d\x57\xf4"
7870 "\xa0\x02\x77\xb8\xa6\xa0\xe6\x75"
7871 "\x5c\x82\x65\x3e\x03\x5c\x29\x8f"
7872 "\x38\x55\xab\x33\x26\xef\x9f\x43"
7873 "\x52\xfd\x68\xaf\x36\xb4\xbb\x9a"
7874 "\x58\x09\x09\x1b\xc3\x65\x46\x46"
7875 "\x1d\xa7\x94\x18\x23\x50\x2c\xca"
7876 "\x2c\x55\x19\x97\x01\x9d\x93\x3b"
7877 "\x63\x86\xf2\x03\x67\x45\xd2\x72"
7878 "\x28\x52\x6c\xf4\xe3\x1c\xb5\x11"
7879 "\x13\xf1\xeb\x21\xc7\xd9\x56\x82"
7880 "\x2b\x82\x39\xbd\x69\x54\xed\x62"
7881 "\xc3\xe2\xde\x73\xd4\x6a\x12\xae"
7882 "\x13\x21\x7f\x4b\x5b\xfc\xbf\xe8"
7883 "\x2b\xbe\x56\xba\x68\x8b\x9a\xb1"
7884 "\x6e\xfa\xbf\x7e\x5a\x4b\xf1\xac"
7885 "\x98\x65\x85\xd1\x93\x53\xd3\x7b"
7886 "\x09\xdd\x4b\x10\x6d\x84\xb0\x13"
7887 "\x65\xbd\xcf\x52\x09\xc4\x85\xe2"
7888 "\x84\x74\x15\x65\xb7\xf7\x51\xaf"
7889 "\x55\xad\xa4\xd1\x22\x54\x70\x94"
7890 "\xa0\x1c\x90\x41\xfd\x99\xd7\x5a"
7891 "\x31\xef\xaa\x25\xd0\x7f\x4f\xea"
7892 "\x1d\x55\x42\xe5\x49\xb0\xd0\x46"
7893 "\x62\x36\x43\xb2\x82\x15\x75\x50"
7894 "\xa4\x72\xeb\x54\x27\x1f\x8a\xe4"
7895 "\x7d\xe9\x66\xc5\xf1\x53\xa4\xd1"
7896 "\x0c\xeb\xb8\xf8\xbc\xd4\xe2\xe7"
7897 "\xe1\xf8\x4b\xcb\xa9\xa1\xaf\x15"
7898 "\x83\xcb\x72\xd0\x33\x79\x00\x2d"
7899 "\x9f\xd7\xf1\x2e\x1e\x10\xe4\x45"
7900 "\xc0\x75\x3a\x39\xea\x68\xf7\x5d"
7901 "\x1b\x73\x8f\xe9\x8e\x0f\x72\x47"
7902 "\xae\x35\x0a\x31\x7a\x14\x4d\x4a"
7903 "\x6f\x47\xf7\x7e\x91\x6e\x74\x8b"
7904 "\x26\x47\xf9\xc3\xf9\xde\x70\xf5"
7905 "\x61\xab\xa9\x27\x9f\x82\xe4\x9c"
7906 "\x89\x91\x3f\x2e\x6a\xfd\xb5\x49"
7907 "\xe9\xfd\x59\x14\x36\x49\x40\x6d"
7908 "\x32\xd8\x85\x42\xf3\xa5\xdf\x0c"
7909 "\xa8\x27\xd7\x54\xe2\x63\x2f\xf2"
7910 "\x7e\x8b\x8b\xe7\xf1\x9a\x95\x35"
7911 "\x43\xdc\x3a\xe4\xb6\xf4\xd0\xdf"
7912 "\x9c\xcb\x94\xf3\x21\xa0\x77\x50"
7913 "\xe2\xc6\xc4\xc6\x5f\x09\x64\x5b"
7914 "\x92\x90\xd8\xe1\xd1\xed\x4b\x42"
7915 "\xd7\x37\xaf\x65\x3d\x11\x39\xb6"
7916 "\x24\x8a\x60\xae\xd6\x1e\xbf\x0e"
7917 "\x0d\xd7\xdc\x96\x0e\x65\x75\x4e"
7918 "\x29\x06\x9d\xa4\x51\x3a\x10\x63"
7919 "\x8f\x17\x07\xd5\x8e\x3c\xf4\x28"
7920 "\x00\x5a\x5b\x05\x19\xd8\xc0\x6c"
7921 "\xe5\x15\xe4\x9c\x9d\x71\x9d\x5e"
7922 "\x94\x29\x1a\xa7\x80\xfa\x0e\x33"
7923 "\x03\xdd\xb7\x3e\x9a\xa9\x26\x18"
7924 "\x37\xa9\x64\x08\x4d\x94\x5a\x88"
7925 "\xca\x35\xce\x81\x02\xe3\x1f\x1b"
7926 "\x89\x1a\x77\x85\xe3\x41\x6d\x32"
7927 "\x42\x19\x23\x7d\xc8\x73\xee\x25"
7928 "\x85\x0d\xf8\x31\x25\x79\x1b\x6f"
7929 "\x79\x25\xd2\xd8\xd4\x23\xfd\xf7"
7930 "\x82\x36\x6a\x0c\x46\x22\x15\xe9"
7931 "\xff\x72\x41\x91\x91\x7d\x3a\xb7"
7932 "\xdd\x65\x99\x70\xf6\x8d\x84\xf8"
7933 "\x67\x15\x20\x11\xd6\xb2\x55\x7b"
7934 "\xdb\x87\xee\xef\x55\x89\x2a\x59"
7935 "\x2b\x07\x8f\x43\x8a\x59\x3c\x01"
7936 "\x8b\x65\x54\xa1\x66\xd5\x38\xbd"
7937 "\xc6\x30\xa9\xcc\x49\xb6\xa8\x1b"
7938 "\xb8\xc0\x0e\xe3\x45\x28\xe2\xff"
7939 "\x41\x9f\x7e\x7c\xd1\xae\x9e\x25"
7940 "\x3f\x4c\x7c\x7c\xf4\xa8\x26\x4d"
7941 "\x5c\xfd\x4b\x27\x18\xf9\x61\x76"
7942 "\x48\xba\x0c\x6b\xa9\x4d\xfc\xf5"
7943 "\x3b\x35\x7e\x2f\x4a\xa9\xc2\x9a"
7944 "\xae\xab\x86\x09\x89\xc9\xc2\x40"
7945 "\x39\x2c\x81\xb3\xb8\x17\x67\xc2"
7946 "\x0d\x32\x4a\x3a\x67\x81\xd7\x1a"
7947 "\x34\x52\xc5\xdb\x0a\xf5\x63\x39"
7948 "\xea\x1f\xe1\x7c\xa1\x9e\xc1\x35"
7949 "\xe3\xb1\x18\x45\x67\xf9\x22\x38"
7950 "\x95\xd9\x34\x34\x86\xc6\x41\x94"
7951 "\x15\xf9\x5b\x41\xa6\x87\x8b\xf8"
7952 "\xd5\xe1\x1b\xe2\x5b\xf3\x86\x10"
7953 "\xff\xe6\xae\x69\x76\xbc\x0d\xb4"
7954 "\x09\x90\x0c\xa2\x65\x0c\xad\x74"
7955 "\xf5\xd7\xff\xda\xc1\xce\x85\xbe"
7956 "\x00\xa7\xff\x4d\x2f\x65\xd3\x8c"
7957 "\x86\x2d\x05\xe8\xed\x3e\x6b\x8b"
7958 "\x0f\x3d\x83\x8c\xf1\x1d\x5b\x96"
7959 "\x2e\xb1\x9c\xc2\x98\xe1\x70\xb9"
7960 "\xba\x5c\x8a\x43\xd6\x34\xa7\x2d"
7961 "\xc9\x92\xae\xf2\xa5\x7b\x05\x49"
7962 "\xa7\x33\x34\x86\xca\xe4\x96\x23"
7963 "\x76\x5b\xf2\xc6\xf1\x51\x28\x42"
7964 "\x7b\xcc\x76\x8f\xfa\xa2\xad\x31"
7965 "\xd4\xd6\x7a\x6d\x25\x25\x54\xe4"
7966 "\x3f\x50\x59\xe1\x5c\x05\xb7\x27"
7967 "\x48\xbf\x07\xec\x1b\x13\xbe\x2b"
7968 "\xa1\x57\x2b\xd5\xab\xd7\xd0\x4c"
7969 "\x1e\xcb\x71\x9b\xc5\x90\x85\xd3"
7970 "\xde\x59\xec\x71\xeb\x89\xbb\xd0"
7971 "\x09\x50\xe1\x16\x3f\xfd\x1c\x34"
7972 "\xc3\x1c\xa1\x10\x77\x53\x98\xef"
7973 "\xf2\xfd\xa5\x01\x59\xc2\x9b\x26"
7974 "\xc7\x42\xd9\x49\xda\x58\x2b\x6e"
7975 "\x9f\x53\x19\x76\x7e\xd9\xc9\x0e"
7976 "\x68\xc8\x7f\x51\x22\x42\xef\x49"
7977 "\xa4\x55\xb6\x36\xac\x09\xc7\x31"
7978 "\x88\x15\x4b\x2e\x8f\x3a\x08\xf7"
7979 "\xd8\xf7\xa8\xc5\xa9\x33\xa6\x45"
7980 "\xe4\xc4\x94\x76\xf3\x0d\x8f\x7e"
7981 "\xc8\xf6\xbc\x23\x0a\xb6\x4c\xd3"
7982 "\x6a\xcd\x36\xc2\x90\x5c\x5c\x3c"
7983 "\x65\x7b\xc2\xd6\xcc\xe6\x0d\x87"
7984 "\x73\x2e\x71\x79\x16\x06\x63\x28"
7985 "\x09\x15\xd8\x89\x38\x38\x3d\xb5"
7986 "\x42\x1c\x08\x24\xf7\x2a\xd2\x9d"
7987 "\xc8\xca\xef\xf9\x27\xd8\x07\x86"
7988 "\xf7\x43\x0b\x55\x15\x3f\x9f\x83"
7989 "\xef\xdc\x49\x9d\x2a\xc1\x54\x62"
7990 "\xbd\x9b\x66\x55\x9f\xb7\x12\xf3"
7991 "\x1b\x4d\x9d\x2a\x5c\xed\x87\x75"
7992 "\x87\x26\xec\x61\x2c\xb4\x0f\x89"
7993 "\xb0\xfb\x2e\x68\x5d\x15\xc7\x8d"
7994 "\x2e\xc0\xd9\xec\xaf\x4f\xd2\x25"
7995 "\x29\xe8\xd2\x26\x2b\x67\xe9\xfc"
7996 "\x2b\xa8\x67\x96\x12\x1f\x5b\x96"
7997 "\xc6\x14\x53\xaf\x44\xea\xd6\xe2"
7998 "\x94\x98\xe4\x12\x93\x4c\x92\xe0"
7999 "\x18\xa5\x8d\x2d\xe4\x71\x3c\x47"
8000 "\x4c\xf7\xe6\x47\x9e\xc0\x68\xdf"
8001 "\xd4\xf5\x5a\x74\xb1\x2b\x29\x03"
8002 "\x19\x07\xaf\x90\x62\x5c\x68\x98"
8003 "\x48\x16\x11\x02\x9d\xee\xb4\x9b"
8004 "\xe5\x42\x7f\x08\xfd\x16\x32\x0b"
8005 "\xd0\xb3\xfa\x2b\xb7\x99\xf9\x29"
8006 "\xcd\x20\x45\x9f\xb3\x1a\x5d\xa2"
8007 "\xaf\x4d\xe0\xbd\x42\x0d\xbc\x74"
8008 "\x99\x9c\x8e\x53\x1a\xb4\x3e\xbd"
8009 "\xa2\x9a\x2d\xf7\xf8\x39\x0f\x67"
8010 "\x63\xfc\x6b\xc0\xaf\xb3\x4b\x4f"
8011 "\x55\xc4\xcf\xa7\xc8\x04\x11\x3e"
8012 "\x14\x32\xbb\x1b\x38\x77\xd6\x7f"
8013 "\x54\x4c\xdf\x75\xf3\x07\x2d\x33"
8014 "\x9b\xa8\x20\xe1\x7b\x12\xb5\xf3"
8015 "\xef\x2f\xce\x72\xe5\x24\x60\xc1"
8016 "\x30\xe2\xab\xa1\x8e\x11\x09\xa8"
8017 "\x21\x33\x44\xfe\x7f\x35\x32\x93"
8018 "\x39\xa7\xad\x8b\x79\x06\xb2\xcb"
8019 "\x4e\xa9\x5f\xc7\xba\x74\x29\xec"
8020 "\x93\xa0\x4e\x54\x93\xc0\xbc\x55"
8021 "\x64\xf0\x48\xe5\x57\x99\xee\x75"
8022 "\xd6\x79\x0f\x66\xb7\xc6\x57\x76"
8023 "\xf7\xb7\xf3\x9c\xc5\x60\xe8\x7f"
8024 "\x83\x76\xd6\x0e\xaa\xe6\x90\x39"
8025 "\x1d\xa6\x32\x6a\x34\xe3\x55\xf8"
8026 "\x58\xa0\x58\x7d\x33\xe0\x22\x39"
8027 "\x44\x64\x87\x86\x5a\x2f\xa7\x7e"
8028 "\x0f\x38\xea\xb0\x30\xcc\x61\xa5"
8029 "\x6a\x32\xae\x1e\xf7\xe9\xd0\xa9"
8030 "\x0c\x32\x4b\xb5\x49\x28\xab\x85"
8031 "\x2f\x8e\x01\x36\x38\x52\xd0\xba"
8032 "\xd6\x02\x78\xf8\x0e\x3e\x9c\x8b"
8033 "\x6b\x45\x99\x3f\x5c\xfe\x58\xf1"
8034 "\x5c\x94\x04\xe1\xf5\x18\x6d\x51"
8035 "\xb2\x5d\x18\x20\xb6\xc2\x9a\x42"
8036 "\x1d\xb3\xab\x3c\xb6\x3a\x13\x03"
8037 "\xb2\x46\x82\x4f\xfc\x64\xbc\x4f"
8038 "\xca\xfa\x9c\xc0\xd5\xa7\xbd\x11"
8039 "\xb7\xe4\x5a\xf6\x6f\x4d\x4d\x54"
8040 "\xea\xa4\x98\x66\xd4\x22\x3b\xd3"
8041 "\x8f\x34\x47\xd9\x7c\xf4\x72\x3b"
8042 "\x4d\x02\x77\xf6\xd6\xdd\x08\x0a"
8043 "\x81\xe1\x86\x89\x3e\x56\x10\x3c"
8044 "\xba\xd7\x81\x8c\x08\xbc\x8b\xe2"
8045 "\x53\xec\xa7\x89\xee\xc8\x56\xb5"
8046 "\x36\x2c\xb2\x03\xba\x99\xdd\x7c"
8047 "\x48\xa0\xb0\xbc\x91\x33\xe9\xa8"
8048 "\xcb\xcd\xcf\x59\x5f\x1f\x15\xe2"
8049 "\x56\xf5\x4e\x01\x35\x27\x45\x77"
8050 "\x47\xc8\xbc\xcb\x7e\x39\xc1\x97"
8051 "\x28\xd3\x84\xfc\x2c\x3e\xc8\xad"
8052 "\x9c\xf8\x8a\x61\x9c\x28\xaa\xc5"
8053 "\x99\x20\x43\x85\x9d\xa5\xe2\x8b"
8054 "\xb8\xae\xeb\xd0\x32\x0d\x52\x78"
8055 "\x09\x56\x3f\xc7\xd8\x7e\x26\xfc"
8056 "\x37\xfb\x6f\x04\xfc\xfa\x92\x10"
8057 "\xac\xf8\x3e\x21\xdc\x8c\x21\x16"
8058 "\x7d\x67\x6e\xf6\xcd\xda\xb6\x98"
8059 "\x23\xab\x23\x3c\xb2\x10\xa0\x53"
8060 "\x5a\x56\x9f\xc5\xd0\xff\xbb\xe4"
8061 "\x98\x3c\x69\x1e\xdb\x38\x8f\x7e"
8062 "\x0f\xd2\x98\x88\x81\x8b\x45\x67"
8063 "\xea\x33\xf1\xeb\xe9\x97\x55\x2e"
8064 "\xd9\xaa\xeb\x5a\xec\xda\xe1\x68"
8065 "\xa8\x9d\x3c\x84\x7c\x05\x3d\x62"
8066 "\x87\x8f\x03\x21\x28\x95\x0c\x89"
8067 "\x25\x22\x4a\xb0\x93\xa9\x50\xa2"
8068 "\x2f\x57\x6e\x18\x42\x19\x54\x0c"
8069 "\x55\x67\xc6\x11\x49\xf4\x5c\xd2"
8070 "\xe9\x3d\xdd\x8b\x48\x71\x21\x00"
8071 "\xc3\x9a\x6c\x85\x74\x28\x83\x4a"
8072 "\x1b\x31\x05\xe1\x06\x92\xe7\xda"
8073 "\x85\x73\x78\x45\x20\x7f\xae\x13"
8074 "\x7c\x33\x06\x22\xf4\x83\xf9\x35"
8075 "\x3f\x6c\x71\xa8\x4e\x48\xbe\x9b"
8076 "\xce\x8a\xba\xda\xbe\x28\x08\xf7"
8077 "\xe2\x14\x8c\x71\xea\x72\xf9\x33"
8078 "\xf2\x88\x3f\xd7\xbb\x69\x6c\x29"
8079 "\x19\xdc\x84\xce\x1f\x12\x4f\xc8"
8080 "\xaf\xa5\x04\xba\x5a\xab\xb0\xd9"
8081 "\x14\x1f\x6c\x68\x98\x39\x89\x7a"
8082 "\xd9\xd8\x2f\xdf\xa8\x47\x4a\x25"
8083 "\xe2\xfb\x33\xf4\x59\x78\xe1\x68"
8084 "\x85\xcf\xfe\x59\x20\xd4\x05\x1d"
8085 "\x80\x99\xae\xbc\xca\xae\x0f\x2f"
8086 "\x65\x43\x34\x8e\x7e\xac\xd3\x93"
8087 "\x2f\xac\x6d\x14\x3d\x02\x07\x70"
8088 "\x9d\xa4\xf3\x1b\x5c\x36\xfc\x01"
8089 "\x73\x34\x85\x0c\x6c\xd6\xf1\xbd"
8090 "\x3f\xdf\xee\xf5\xd9\xba\x56\xef"
8091 "\xf4\x9b\x6b\xee\x9f\x5a\x78\x6d"
8092 "\x32\x19\xf4\xf7\xf8\x4c\x69\x0b"
8093 "\x4b\xbc\xbb\xb7\xf2\x85\xaf\x70"
8094 "\x75\x24\x6c\x54\xa7\x0e\x4d\x1d"
8095 "\x01\xbf\x08\xac\xcf\x7f\x2c\xe3"
8096 "\x14\x89\x5e\x70\x5a\x99\x92\xcd"
8097 "\x01\x84\xc8\xd2\xab\xe5\x4f\x58"
8098 "\xe7\x0f\x2f\x0e\xff\x68\xea\xfd"
8099 "\x15\xb3\x17\xe6\xb0\xe7\x85\xd8"
8100 "\x23\x2e\x05\xc7\xc9\xc4\x46\x1f"
8101 "\xe1\x9e\x49\x20\x23\x24\x4d\x7e"
8102 "\x29\x65\xff\xf4\xb6\xfd\x1a\x85"
8103 "\xc4\x16\xec\xfc\xea\x7b\xd6\x2c"
8104 "\x43\xf8\xb7\xbf\x79\xc0\x85\xcd"
8105 "\xef\xe1\x98\xd3\xa5\xf7\x90\x8c"
8106 "\xe9\x7f\x80\x6b\xd2\xac\x4c\x30"
8107 "\xa7\xc6\x61\x6c\xd2\xf9\x2c\xff"
8108 "\x30\xbc\x22\x81\x7d\x93\x12\xe4"
8109 "\x0a\xcd\xaf\xdd\xe8\xab\x0a\x1e"
8110 "\x13\xa4\x27\xc3\x5f\xf7\x4b\xbb"
8111 "\x37\x09\x4b\x91\x6f\x92\x4f\xaf"
8112 "\x52\xee\xdf\xef\x09\x6f\xf7\x5c"
8113 "\x6e\x12\x17\x72\x63\x57\xc7\xba"
8114 "\x3b\x6b\x38\x32\x73\x1b\x9c\x80"
8115 "\xc1\x7a\xc6\xcf\xcd\x35\xc0\x6b"
8116 "\x31\x1a\x6b\xe9\xd8\x2c\x29\x3f"
8117 "\x96\xfb\xb6\xcd\x13\x91\x3b\xc2"
8118 "\xd2\xa3\x31\x8d\xa4\xcd\x57\xcd"
8119 "\x13\x3d\x64\xfd\x06\xce\xe6\xdc"
8120 "\x0c\x24\x43\x31\x40\x57\xf1\x72"
8121 "\x17\xe3\x3a\x63\x6d\x35\xcf\x5d"
8122 "\x97\x40\x59\xdd\xf7\x3c\x02\xf7"
8123 "\x1c\x7e\x05\xbb\xa9\x0d\x01\xb1"
8124 "\x8e\xc0\x30\xa9\x53\x24\xc9\x89"
8125 "\x84\x6d\xaa\xd0\xcd\x91\xc2\x4d"
8126 "\x91\xb0\x89\xe2\xbf\x83\x44\xaa"
8127 "\x28\x72\x23\xa0\xc2\xad\xad\x1c"
8128 "\xfc\x3f\x09\x7a\x0b\xdc\xc5\x1b"
8129 "\x87\x13\xc6\x5b\x59\x8d\xf2\xc8"
8130 "\xaf\xdf\x11\x95",
f139cfa7
HX
8131 .rlen = 4100,
8132 .np = 2,
8133 .tap = { 4064, 36 },
8bff664c 8134 },
e2ee95b8
HSC
8135};
8136
76cb9521
KC
8137/*
8138 * CTS (Cipher Text Stealing) mode tests
8139 */
8140#define CTS_MODE_ENC_TEST_VECTORS 6
8141#define CTS_MODE_DEC_TEST_VECTORS 6
8142static struct cipher_testvec cts_mode_enc_tv_template[] = {
8143 { /* from rfc3962 */
8144 .klen = 16,
8145 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8146 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8147 .ilen = 17,
8148 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8149 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8150 "\x20",
8151 .rlen = 17,
8152 .result = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
8153 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
8154 "\x97",
8155 }, {
8156 .klen = 16,
8157 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8158 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8159 .ilen = 31,
8160 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8161 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8162 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8163 "\x20\x47\x61\x75\x27\x73\x20",
8164 .rlen = 31,
8165 .result = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
8166 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
8167 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8168 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
8169 }, {
8170 .klen = 16,
8171 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8172 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8173 .ilen = 32,
8174 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8175 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8176 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8177 "\x20\x47\x61\x75\x27\x73\x20\x43",
8178 .rlen = 32,
8179 .result = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8180 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8181 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8182 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
8183 }, {
8184 .klen = 16,
8185 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8186 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8187 .ilen = 47,
8188 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8189 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8190 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8191 "\x20\x47\x61\x75\x27\x73\x20\x43"
8192 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8193 "\x70\x6c\x65\x61\x73\x65\x2c",
8194 .rlen = 47,
8195 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8196 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8197 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
8198 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
8199 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8200 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
8201 }, {
8202 .klen = 16,
8203 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8204 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8205 .ilen = 48,
8206 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8207 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8208 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8209 "\x20\x47\x61\x75\x27\x73\x20\x43"
8210 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8211 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
8212 .rlen = 48,
8213 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8214 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8215 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8216 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
8217 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8218 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
8219 }, {
8220 .klen = 16,
8221 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8222 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8223 .ilen = 64,
8224 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8225 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8226 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8227 "\x20\x47\x61\x75\x27\x73\x20\x43"
8228 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8229 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
8230 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
8231 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
8232 .rlen = 64,
8233 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8234 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8235 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8236 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8237 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
8238 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
8239 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8240 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
8241 }
8242};
8243
8244static struct cipher_testvec cts_mode_dec_tv_template[] = {
8245 { /* from rfc3962 */
8246 .klen = 16,
8247 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8248 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8249 .rlen = 17,
8250 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8251 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8252 "\x20",
8253 .ilen = 17,
8254 .input = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
8255 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
8256 "\x97",
8257 }, {
8258 .klen = 16,
8259 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8260 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8261 .rlen = 31,
8262 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8263 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8264 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8265 "\x20\x47\x61\x75\x27\x73\x20",
8266 .ilen = 31,
8267 .input = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
8268 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
8269 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8270 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
8271 }, {
8272 .klen = 16,
8273 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8274 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8275 .rlen = 32,
8276 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8277 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8278 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8279 "\x20\x47\x61\x75\x27\x73\x20\x43",
8280 .ilen = 32,
8281 .input = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8282 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8283 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8284 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
8285 }, {
8286 .klen = 16,
8287 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8288 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8289 .rlen = 47,
8290 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8291 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8292 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8293 "\x20\x47\x61\x75\x27\x73\x20\x43"
8294 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8295 "\x70\x6c\x65\x61\x73\x65\x2c",
8296 .ilen = 47,
8297 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8298 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8299 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
8300 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
8301 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8302 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
8303 }, {
8304 .klen = 16,
8305 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8306 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8307 .rlen = 48,
8308 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8309 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8310 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8311 "\x20\x47\x61\x75\x27\x73\x20\x43"
8312 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8313 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
8314 .ilen = 48,
8315 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8316 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8317 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8318 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
8319 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8320 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
8321 }, {
8322 .klen = 16,
8323 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8324 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8325 .rlen = 64,
8326 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8327 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8328 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8329 "\x20\x47\x61\x75\x27\x73\x20\x43"
8330 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8331 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
8332 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
8333 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
8334 .ilen = 64,
8335 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8336 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8337 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8338 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8339 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
8340 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
8341 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8342 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
8343 }
8344};
8345
1da177e4
LT
8346/*
8347 * Compression stuff.
8348 */
8349#define COMP_BUF_SIZE 512
8350
8351struct comp_testvec {
8352 int inlen, outlen;
8353 char input[COMP_BUF_SIZE];
8354 char output[COMP_BUF_SIZE];
8355};
8356
8357/*
8358 * Deflate test vectors (null-terminated strings).
8359 * Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
8360 */
8361#define DEFLATE_COMP_TEST_VECTORS 2
8362#define DEFLATE_DECOMP_TEST_VECTORS 2
8363
8364static struct comp_testvec deflate_comp_tv_template[] = {
8365 {
8366 .inlen = 70,
8367 .outlen = 38,
de224c30
SS
8368 .input = "Join us now and share the software "
8369 "Join us now and share the software ",
8370 .output = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
8371 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
8372 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
8373 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
8374 "\x71\xbc\x08\x2b\x01\x00",
1da177e4
LT
8375 }, {
8376 .inlen = 191,
8377 .outlen = 122,
8378 .input = "This document describes a compression method based on the DEFLATE"
de224c30
SS
8379 "compression algorithm. This document defines the application of "
8380 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
8381 .output = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
8382 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
8383 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
8384 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
8385 "\x68\x12\x51\xae\x76\x67\xd6\x27"
8386 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
8387 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
8388 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
8389 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
8390 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
8391 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
8392 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
8393 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
8394 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
8395 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
8396 "\xfa\x02",
1da177e4
LT
8397 },
8398};
8399
8400static struct comp_testvec deflate_decomp_tv_template[] = {
8401 {
8402 .inlen = 122,
8403 .outlen = 191,
de224c30
SS
8404 .input = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
8405 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
8406 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
8407 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
8408 "\x68\x12\x51\xae\x76\x67\xd6\x27"
8409 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
8410 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
8411 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
8412 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
8413 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
8414 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
8415 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
8416 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
8417 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
8418 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
8419 "\xfa\x02",
1da177e4 8420 .output = "This document describes a compression method based on the DEFLATE"
de224c30
SS
8421 "compression algorithm. This document defines the application of "
8422 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
1da177e4
LT
8423 }, {
8424 .inlen = 38,
8425 .outlen = 70,
de224c30
SS
8426 .input = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
8427 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
8428 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
8429 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
8430 "\x71\xbc\x08\x2b\x01\x00",
1da177e4 8431 .output = "Join us now and share the software "
de224c30 8432 "Join us now and share the software ",
1da177e4
LT
8433 },
8434};
8435
0b77abb3
ZS
8436/*
8437 * LZO test vectors (null-terminated strings).
8438 */
8439#define LZO_COMP_TEST_VECTORS 2
8440#define LZO_DECOMP_TEST_VECTORS 2
8441
8442static struct comp_testvec lzo_comp_tv_template[] = {
8443 {
8444 .inlen = 70,
8445 .outlen = 46,
8446 .input = "Join us now and share the software "
de224c30
SS
8447 "Join us now and share the software ",
8448 .output = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
8449 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
8450 "\x64\x20\x73\x68\x61\x72\x65\x20"
8451 "\x74\x68\x65\x20\x73\x6f\x66\x74"
8452 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8453 "\x3d\x88\x00\x11\x00\x00",
0b77abb3
ZS
8454 }, {
8455 .inlen = 159,
8456 .outlen = 133,
8457 .input = "This document describes a compression method based on the LZO "
de224c30
SS
8458 "compression algorithm. This document defines the application of "
8459 "the LZO algorithm used in UBIFS.",
8460 .output = "\x00\x2b\x54\x68\x69\x73\x20\x64"
8461 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
8462 "\x64\x65\x73\x63\x72\x69\x62\x65"
8463 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
8464 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
8465 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
8466 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
8467 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
8468 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
8469 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
8470 "\x68\x69\x73\x2a\x54\x01\x02\x66"
8471 "\x69\x6e\x65\x73\x94\x06\x05\x61"
8472 "\x70\x70\x6c\x69\x63\x61\x74\x76"
8473 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
8474 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
8475 "\x20\x69\x6e\x20\x55\x42\x49\x46"
8476 "\x53\x2e\x11\x00\x00",
0b77abb3
ZS
8477 },
8478};
8479
8480static struct comp_testvec lzo_decomp_tv_template[] = {
8481 {
8482 .inlen = 133,
8483 .outlen = 159,
de224c30
SS
8484 .input = "\x00\x2b\x54\x68\x69\x73\x20\x64"
8485 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
8486 "\x64\x65\x73\x63\x72\x69\x62\x65"
8487 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
8488 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
8489 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
8490 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
8491 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
8492 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
8493 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
8494 "\x68\x69\x73\x2a\x54\x01\x02\x66"
8495 "\x69\x6e\x65\x73\x94\x06\x05\x61"
8496 "\x70\x70\x6c\x69\x63\x61\x74\x76"
8497 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
8498 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
8499 "\x20\x69\x6e\x20\x55\x42\x49\x46"
8500 "\x53\x2e\x11\x00\x00",
0b77abb3 8501 .output = "This document describes a compression method based on the LZO "
de224c30
SS
8502 "compression algorithm. This document defines the application of "
8503 "the LZO algorithm used in UBIFS.",
0b77abb3
ZS
8504 }, {
8505 .inlen = 46,
8506 .outlen = 70,
de224c30
SS
8507 .input = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
8508 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
8509 "\x64\x20\x73\x68\x61\x72\x65\x20"
8510 "\x74\x68\x65\x20\x73\x6f\x66\x74"
8511 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8512 "\x3d\x88\x00\x11\x00\x00",
0b77abb3 8513 .output = "Join us now and share the software "
de224c30 8514 "Join us now and share the software ",
0b77abb3
ZS
8515 },
8516};
8517
1da177e4
LT
8518/*
8519 * Michael MIC test vectors from IEEE 802.11i
8520 */
8521#define MICHAEL_MIC_TEST_VECTORS 6
8522
ef2736fc 8523static struct hash_testvec michael_mic_tv_template[] = {
1da177e4 8524 {
de224c30 8525 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 8526 .ksize = 8,
de224c30 8527 .plaintext = zeroed_string,
1da177e4 8528 .psize = 0,
de224c30 8529 .digest = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
1da177e4
LT
8530 },
8531 {
de224c30 8532 .key = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
1da177e4 8533 .ksize = 8,
de224c30 8534 .plaintext = "M",
1da177e4 8535 .psize = 1,
de224c30 8536 .digest = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
1da177e4
LT
8537 },
8538 {
de224c30 8539 .key = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
1da177e4 8540 .ksize = 8,
de224c30 8541 .plaintext = "Mi",
1da177e4 8542 .psize = 2,
de224c30 8543 .digest = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
1da177e4
LT
8544 },
8545 {
de224c30 8546 .key = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
1da177e4 8547 .ksize = 8,
de224c30 8548 .plaintext = "Mic",
1da177e4 8549 .psize = 3,
de224c30 8550 .digest = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
1da177e4
LT
8551 },
8552 {
de224c30 8553 .key = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
1da177e4 8554 .ksize = 8,
de224c30 8555 .plaintext = "Mich",
1da177e4 8556 .psize = 4,
de224c30 8557 .digest = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
1da177e4
LT
8558 },
8559 {
de224c30 8560 .key = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
1da177e4 8561 .ksize = 8,
de224c30 8562 .plaintext = "Michael",
1da177e4 8563 .psize = 7,
de224c30 8564 .digest = "\x0a\x94\x2b\x12\x4e\xca\xa5\x46",
1da177e4
LT
8565 }
8566};
8567
c907ee76
HX
8568/*
8569 * CRC32C test vectors
8570 */
8571#define CRC32C_TEST_VECTORS 14
8572
8573static struct hash_testvec crc32c_tv_template[] = {
8574 {
8575 .psize = 0,
de224c30 8576 .digest = "\x00\x00\x00\x00",
c907ee76
HX
8577 },
8578 {
de224c30 8579 .key = "\x87\xa9\xcb\xed",
c907ee76
HX
8580 .ksize = 4,
8581 .psize = 0,
de224c30 8582 .digest = "\x78\x56\x34\x12",
c907ee76
HX
8583 },
8584 {
de224c30 8585 .key = "\xff\xff\xff\xff",
c907ee76 8586 .ksize = 4,
de224c30
SS
8587 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8588 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8589 "\x11\x12\x13\x14\x15\x16\x17\x18"
8590 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8591 "\x21\x22\x23\x24\x25\x26\x27\x28",
c907ee76 8592 .psize = 40,
de224c30 8593 .digest = "\x7f\x15\x2c\x0e",
c907ee76
HX
8594 },
8595 {
de224c30 8596 .key = "\xff\xff\xff\xff",
c907ee76 8597 .ksize = 4,
de224c30
SS
8598 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8599 "\x31\x32\x33\x34\x35\x36\x37\x38"
8600 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8601 "\x41\x42\x43\x44\x45\x46\x47\x48"
8602 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
c907ee76 8603 .psize = 40,
de224c30 8604 .digest = "\xf6\xeb\x80\xe9",
c907ee76
HX
8605 },
8606 {
de224c30 8607 .key = "\xff\xff\xff\xff",
c907ee76 8608 .ksize = 4,
de224c30
SS
8609 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8610 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8611 "\x61\x62\x63\x64\x65\x66\x67\x68"
8612 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8613 "\x71\x72\x73\x74\x75\x76\x77\x78",
c907ee76 8614 .psize = 40,
de224c30 8615 .digest = "\xed\xbd\x74\xde",
c907ee76
HX
8616 },
8617 {
de224c30 8618 .key = "\xff\xff\xff\xff",
c907ee76 8619 .ksize = 4,
de224c30
SS
8620 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8621 "\x81\x82\x83\x84\x85\x86\x87\x88"
8622 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8623 "\x91\x92\x93\x94\x95\x96\x97\x98"
8624 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
c907ee76 8625 .psize = 40,
de224c30 8626 .digest = "\x62\xc8\x79\xd5",
c907ee76
HX
8627 },
8628 {
de224c30 8629 .key = "\xff\xff\xff\xff",
c907ee76 8630 .ksize = 4,
de224c30
SS
8631 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8632 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8633 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8634 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8635 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
c907ee76 8636 .psize = 40,
de224c30 8637 .digest = "\xd0\x9a\x97\xba",
c907ee76
HX
8638 },
8639 {
de224c30 8640 .key = "\xff\xff\xff\xff",
c907ee76 8641 .ksize = 4,
de224c30
SS
8642 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8643 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8644 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8645 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8646 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8647 .psize = 40,
de224c30 8648 .digest = "\x13\xd9\x29\x2b",
c907ee76
HX
8649 },
8650 {
de224c30 8651 .key = "\x80\xea\xd3\xf1",
c907ee76 8652 .ksize = 4,
de224c30
SS
8653 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8654 "\x31\x32\x33\x34\x35\x36\x37\x38"
8655 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8656 "\x41\x42\x43\x44\x45\x46\x47\x48"
8657 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
c907ee76 8658 .psize = 40,
de224c30 8659 .digest = "\x0c\xb5\xe2\xa2",
c907ee76
HX
8660 },
8661 {
de224c30 8662 .key = "\xf3\x4a\x1d\x5d",
c907ee76 8663 .ksize = 4,
de224c30
SS
8664 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8665 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8666 "\x61\x62\x63\x64\x65\x66\x67\x68"
8667 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8668 "\x71\x72\x73\x74\x75\x76\x77\x78",
c907ee76 8669 .psize = 40,
de224c30 8670 .digest = "\xd1\x7f\xfb\xa6",
c907ee76
HX
8671 },
8672 {
de224c30 8673 .key = "\x2e\x80\x04\x59",
c907ee76 8674 .ksize = 4,
de224c30
SS
8675 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8676 "\x81\x82\x83\x84\x85\x86\x87\x88"
8677 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8678 "\x91\x92\x93\x94\x95\x96\x97\x98"
8679 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
c907ee76 8680 .psize = 40,
de224c30 8681 .digest = "\x59\x33\xe6\x7a",
c907ee76
HX
8682 },
8683 {
de224c30 8684 .key = "\xa6\xcc\x19\x85",
c907ee76 8685 .ksize = 4,
de224c30
SS
8686 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8687 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8688 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8689 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8690 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
c907ee76 8691 .psize = 40,
de224c30 8692 .digest = "\xbe\x03\x01\xd2",
c907ee76
HX
8693 },
8694 {
de224c30 8695 .key = "\x41\xfc\xfe\x2d",
c907ee76 8696 .ksize = 4,
de224c30
SS
8697 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8698 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8699 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8700 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8701 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8702 .psize = 40,
de224c30 8703 .digest = "\x75\xd3\xc5\x24",
c907ee76
HX
8704 },
8705 {
de224c30 8706 .key = "\xff\xff\xff\xff",
c907ee76 8707 .ksize = 4,
de224c30
SS
8708 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8709 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8710 "\x11\x12\x13\x14\x15\x16\x17\x18"
8711 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8712 "\x21\x22\x23\x24\x25\x26\x27\x28"
8713 "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8714 "\x31\x32\x33\x34\x35\x36\x37\x38"
8715 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8716 "\x41\x42\x43\x44\x45\x46\x47\x48"
8717 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
8718 "\x51\x52\x53\x54\x55\x56\x57\x58"
8719 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8720 "\x61\x62\x63\x64\x65\x66\x67\x68"
8721 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8722 "\x71\x72\x73\x74\x75\x76\x77\x78"
8723 "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8724 "\x81\x82\x83\x84\x85\x86\x87\x88"
8725 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8726 "\x91\x92\x93\x94\x95\x96\x97\x98"
8727 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
8728 "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8729 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8730 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8731 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8732 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8"
8733 "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8734 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8735 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8736 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8737 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8738 .psize = 240,
de224c30 8739 .digest = "\x75\xd3\xc5\x24",
c907ee76
HX
8740 .np = 2,
8741 .tap = { 31, 209 }
8742 },
8743};
8744
ebfd9bcf
HW
8745/*
8746 * Cipher speed tests
8747 */
d5dc3927
SS
8748static u8 speed_template_8[] = {8, 0};
8749static u8 speed_template_24[] = {24, 0};
8750static u8 speed_template_8_32[] = {8, 32, 0};
8751static u8 speed_template_16_32[] = {16, 32, 0};
8752static u8 speed_template_16_24_32[] = {16, 24, 32, 0};
8753static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
8754static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
f19f5111 8755
e8057928
ML
8756/*
8757 * Digest speed tests
8758 */
e9d41164 8759static struct hash_speed generic_hash_speed_template[] = {
de224c30 8760 { .blen = 16, .plen = 16, },
e8057928
ML
8761 { .blen = 64, .plen = 16, },
8762 { .blen = 64, .plen = 64, },
8763 { .blen = 256, .plen = 16, },
8764 { .blen = 256, .plen = 64, },
8765 { .blen = 256, .plen = 256, },
8766 { .blen = 1024, .plen = 16, },
8767 { .blen = 1024, .plen = 256, },
8768 { .blen = 1024, .plen = 1024, },
8769 { .blen = 2048, .plen = 16, },
8770 { .blen = 2048, .plen = 256, },
8771 { .blen = 2048, .plen = 1024, },
8772 { .blen = 2048, .plen = 2048, },
8773 { .blen = 4096, .plen = 16, },
8774 { .blen = 4096, .plen = 256, },
8775 { .blen = 4096, .plen = 1024, },
8776 { .blen = 4096, .plen = 4096, },
8777 { .blen = 8192, .plen = 16, },
8778 { .blen = 8192, .plen = 256, },
8779 { .blen = 8192, .plen = 1024, },
8780 { .blen = 8192, .plen = 4096, },
8781 { .blen = 8192, .plen = 8192, },
8782
8783 /* End marker */
8784 { .blen = 0, .plen = 0, }
8785};
8786
1da177e4 8787#endif /* _CRYPTO_TCRYPT_H */