Merge branch 'for-2.6.27' of git://linux-nfs.org/~bfields/linux
[deliverable/linux.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;
06b42aa9
AN
42 unsigned char tap[MAX_TAP];
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,
23e353c8
JL
5114 },
5115};
5116
5117static struct cipher_testvec aes_ctr_dec_tv_template[] = {
5118 { /* From RFC 3686 */
de224c30
SS
5119 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
5120 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
5121 "\x00\x00\x00\x30",
23e353c8 5122 .klen = 20,
de224c30
SS
5123 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
5124 .input = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
5125 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
23e353c8 5126 .ilen = 16,
de224c30 5127 .result = "Single block msg",
23e353c8
JL
5128 .rlen = 16,
5129 }, {
de224c30
SS
5130 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
5131 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
5132 "\x00\x6c\xb6\xdb",
23e353c8 5133 .klen = 20,
de224c30
SS
5134 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
5135 .input = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
5136 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
5137 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
5138 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
5139 .ilen = 32,
5140 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5141 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5142 "\x10\x11\x12\x13\x14\x15\x16\x17"
5143 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8
JL
5144 .rlen = 32,
5145 }, {
de224c30
SS
5146 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
5147 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
5148 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
5149 "\x00\x00\x00\x48",
5150 .klen = 28,
5151 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
5152 .input = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
5153 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
5154 .ilen = 16,
5155 .result = "Single block msg",
23e353c8
JL
5156 .rlen = 16,
5157 }, {
de224c30
SS
5158 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
5159 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
5160 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
5161 "\x00\x96\xb0\x3b",
23e353c8 5162 .klen = 28,
de224c30
SS
5163 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
5164 .input = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
5165 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
5166 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
5167 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
23e353c8 5168 .ilen = 32,
de224c30
SS
5169 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5170 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5171 "\x10\x11\x12\x13\x14\x15\x16\x17"
5172 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
5173 .rlen = 32,
23e353c8 5174 }, {
de224c30
SS
5175 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
5176 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
5177 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
5178 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
5179 "\x00\x00\x00\x60",
23e353c8 5180 .klen = 36,
de224c30
SS
5181 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
5182 .input = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
5183 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
23e353c8 5184 .ilen = 16,
de224c30
SS
5185 .result = "Single block msg",
5186 .rlen = 16,
5187 }, {
5188 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
5189 "\x07\x96\x36\x58\x79\xef\xf8\x86"
5190 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
5191 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
5192 "\x00\xfa\xac\x24",
5193 .klen = 36,
5194 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
5195 .input = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
5196 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
5197 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
5198 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
23e353c8 5199 .ilen = 32,
de224c30
SS
5200 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5201 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5202 "\x10\x11\x12\x13\x14\x15\x16\x17"
5203 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8
JL
5204 .rlen = 32,
5205 },
5206};
5207
28db8e3e
MH
5208static struct aead_testvec aes_gcm_enc_tv_template[] = {
5209 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
de224c30 5210 .key = zeroed_string,
28db8e3e 5211 .klen = 16,
de224c30
SS
5212 .result = "\x58\xe2\xfc\xce\xfa\x7e\x30\x61"
5213 "\x36\x7f\x1d\x57\xa4\xe7\x45\x5a",
6160b289 5214 .rlen = 16,
28db8e3e 5215 }, {
de224c30 5216 .key = zeroed_string,
28db8e3e 5217 .klen = 16,
de224c30 5218 .input = zeroed_string,
28db8e3e 5219 .ilen = 16,
de224c30
SS
5220 .result = "\x03\x88\xda\xce\x60\xb6\xa3\x92"
5221 "\xf3\x28\xc2\xb9\x71\xb2\xfe\x78"
5222 "\xab\x6e\x47\xd4\x2c\xec\x13\xbd"
5223 "\xf5\x3a\x67\xb2\x12\x57\xbd\xdf",
6160b289 5224 .rlen = 32,
28db8e3e 5225 }, {
de224c30
SS
5226 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5227 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5228 .klen = 16,
de224c30
SS
5229 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5230 "\xde\xca\xf8\x88",
5231 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5232 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5233 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5234 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5235 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5236 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5237 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5238 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5239 .ilen = 64,
de224c30
SS
5240 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5241 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5242 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5243 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5244 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5245 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5246 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5247 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
5248 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
5249 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
6160b289 5250 .rlen = 80,
28db8e3e 5251 }, {
de224c30
SS
5252 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5253 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5254 .klen = 16,
de224c30
SS
5255 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5256 "\xde\xca\xf8\x88",
5257 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5258 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5259 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5260 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5261 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5262 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5263 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5264 "\xba\x63\x7b\x39",
28db8e3e 5265 .ilen = 60,
de224c30
SS
5266 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5267 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5268 "\xab\xad\xda\xd2",
28db8e3e 5269 .alen = 20,
de224c30
SS
5270 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5271 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5272 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5273 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5274 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5275 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5276 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5277 "\x3d\x58\xe0\x91"
5278 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
5279 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
6160b289 5280 .rlen = 76,
28db8e3e 5281 }, {
de224c30 5282 .key = zeroed_string,
28db8e3e 5283 .klen = 24,
de224c30
SS
5284 .result = "\xcd\x33\xb2\x8a\xc7\x73\xf7\x4b"
5285 "\xa0\x0e\xd1\xf3\x12\x57\x24\x35",
6160b289 5286 .rlen = 16,
28db8e3e 5287 }, {
de224c30 5288 .key = zeroed_string,
28db8e3e 5289 .klen = 24,
de224c30 5290 .input = zeroed_string,
28db8e3e 5291 .ilen = 16,
de224c30
SS
5292 .result = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
5293 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
5294 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
5295 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
6160b289 5296 .rlen = 32,
28db8e3e 5297 }, {
de224c30
SS
5298 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5299 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5300 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5301 .klen = 24,
de224c30
SS
5302 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5303 "\xde\xca\xf8\x88",
5304 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5305 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5306 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5307 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5308 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5309 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5310 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5311 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5312 .ilen = 64,
de224c30
SS
5313 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5314 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5315 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5316 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5317 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5318 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5319 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5320 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5321 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5322 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
6160b289 5323 .rlen = 80,
28db8e3e 5324 }, {
de224c30
SS
5325 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5326 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5327 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5328 .klen = 24,
de224c30
SS
5329 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5330 "\xde\xca\xf8\x88",
5331 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5332 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5333 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5334 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5335 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5336 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5337 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5338 "\xba\x63\x7b\x39",
28db8e3e 5339 .ilen = 60,
de224c30
SS
5340 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5341 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5342 "\xab\xad\xda\xd2",
28db8e3e 5343 .alen = 20,
de224c30
SS
5344 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5345 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5346 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5347 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5348 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5349 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5350 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5351 "\xcc\xda\x27\x10"
5352 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5353 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
6160b289 5354 .rlen = 76,
28db8e3e
MH
5355 .np = 2,
5356 .tap = { 32, 28 },
5357 .anp = 2,
5358 .atap = { 8, 12 }
5359 }, {
de224c30 5360 .key = zeroed_string,
28db8e3e 5361 .klen = 32,
de224c30
SS
5362 .result = "\x53\x0f\x8a\xfb\xc7\x45\x36\xb9"
5363 "\xa9\x63\xb4\xf1\xc4\xcb\x73\x8b",
6160b289 5364 .rlen = 16,
28db8e3e
MH
5365 }
5366};
5367
5368static struct aead_testvec aes_gcm_dec_tv_template[] = {
5369 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
de224c30 5370 .key = zeroed_string,
28db8e3e 5371 .klen = 32,
de224c30
SS
5372 .input = "\xce\xa7\x40\x3d\x4d\x60\x6b\x6e"
5373 "\x07\x4e\xc5\xd3\xba\xf3\x9d\x18"
5374 "\xd0\xd1\xc8\xa7\x99\x99\x6b\xf0"
5375 "\x26\x5b\x98\xb5\xd4\x8a\xb9\x19",
6160b289 5376 .ilen = 32,
de224c30 5377 .result = zeroed_string,
6160b289 5378 .rlen = 16,
28db8e3e 5379 }, {
de224c30
SS
5380 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5381 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5382 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5383 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5384 .klen = 32,
de224c30
SS
5385 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5386 "\xde\xca\xf8\x88",
5387 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
5388 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
5389 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
5390 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
5391 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
5392 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
5393 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
5394 "\xbc\xc9\xf6\x62\x89\x80\x15\xad"
5395 "\xb0\x94\xda\xc5\xd9\x34\x71\xbd"
5396 "\xec\x1a\x50\x22\x70\xe3\xcc\x6c",
6160b289 5397 .ilen = 80,
de224c30
SS
5398 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5399 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5400 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5401 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5402 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5403 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5404 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5405 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5406 .rlen = 64,
28db8e3e 5407 }, {
de224c30
SS
5408 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5409 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5410 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5411 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5412 .klen = 32,
de224c30
SS
5413 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5414 "\xde\xca\xf8\x88",
5415 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
5416 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
5417 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
5418 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
5419 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
5420 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
5421 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
5422 "\xbc\xc9\xf6\x62"
5423 "\x76\xfc\x6e\xce\x0f\x4e\x17\x68"
5424 "\xcd\xdf\x88\x53\xbb\x2d\x55\x1b",
6160b289 5425 .ilen = 76,
de224c30
SS
5426 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5427 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5428 "\xab\xad\xda\xd2",
28db8e3e 5429 .alen = 20,
de224c30
SS
5430 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5431 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5432 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5433 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5434 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5435 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5436 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5437 "\xba\x63\x7b\x39",
28db8e3e 5438 .rlen = 60,
28db8e3e 5439 .np = 2,
6160b289 5440 .tap = { 48, 28 },
28db8e3e
MH
5441 .anp = 3,
5442 .atap = { 8, 8, 4 }
5443 }, {
de224c30
SS
5444 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5445 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5446 .klen = 16,
de224c30
SS
5447 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5448 "\xde\xca\xf8\x88",
5449 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5450 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5451 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5452 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5453 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5454 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5455 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5456 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
5457 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
5458 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
6160b289 5459 .ilen = 80,
de224c30
SS
5460 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5461 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5462 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5463 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5464 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5465 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5466 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5467 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5468 .rlen = 64,
28db8e3e 5469 }, {
de224c30
SS
5470 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5471 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5472 .klen = 16,
de224c30
SS
5473 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5474 "\xde\xca\xf8\x88",
5475 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5476 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5477 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5478 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5479 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5480 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5481 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5482 "\x3d\x58\xe0\x91"
5483 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
5484 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
6160b289 5485 .ilen = 76,
de224c30
SS
5486 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5487 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5488 "\xab\xad\xda\xd2",
28db8e3e 5489 .alen = 20,
de224c30
SS
5490 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5491 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5492 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5493 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5494 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5495 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5496 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5497 "\xba\x63\x7b\x39",
28db8e3e 5498 .rlen = 60,
28db8e3e 5499 }, {
de224c30 5500 .key = zeroed_string,
28db8e3e 5501 .klen = 24,
de224c30
SS
5502 .input = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
5503 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
5504 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
5505 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
6160b289 5506 .ilen = 32,
de224c30 5507 .result = zeroed_string,
6160b289 5508 .rlen = 16,
28db8e3e 5509 }, {
de224c30
SS
5510 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5511 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5512 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5513 .klen = 24,
de224c30
SS
5514 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5515 "\xde\xca\xf8\x88",
5516 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5517 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5518 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5519 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5520 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5521 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5522 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5523 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5524 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5525 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
6160b289 5526 .ilen = 80,
de224c30
SS
5527 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5528 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5529 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5530 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5531 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5532 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5533 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5534 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5535 .rlen = 64,
28db8e3e 5536 }, {
de224c30
SS
5537 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5538 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5539 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5540 .klen = 24,
de224c30
SS
5541 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5542 "\xde\xca\xf8\x88",
5543 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5544 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5545 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5546 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5547 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5548 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5549 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5550 "\xcc\xda\x27\x10"
5551 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5552 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
6160b289 5553 .ilen = 76,
de224c30
SS
5554 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5555 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5556 "\xab\xad\xda\xd2",
28db8e3e 5557 .alen = 20,
de224c30
SS
5558 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5559 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5560 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5561 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5562 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5563 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5564 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5565 "\xba\x63\x7b\x39",
28db8e3e 5566 .rlen = 60,
28db8e3e
MH
5567 }
5568};
5569
93cc74e0
JL
5570static struct aead_testvec aes_ccm_enc_tv_template[] = {
5571 { /* From RFC 3610 */
de224c30
SS
5572 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5573 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5574 .klen = 16,
de224c30
SS
5575 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5576 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5577 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5578 .alen = 8,
de224c30
SS
5579 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5580 "\x10\x11\x12\x13\x14\x15\x16\x17"
5581 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
93cc74e0 5582 .ilen = 23,
de224c30
SS
5583 .result = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5584 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5585 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5586 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
93cc74e0
JL
5587 .rlen = 31,
5588 }, {
de224c30
SS
5589 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5590 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5591 .klen = 16,
de224c30
SS
5592 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5593 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5594 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5595 "\x08\x09\x0a\x0b",
93cc74e0 5596 .alen = 12,
de224c30
SS
5597 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5598 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5599 "\x1c\x1d\x1e\x1f",
93cc74e0 5600 .ilen = 20,
de224c30
SS
5601 .result = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5602 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5603 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5604 "\x7d\x9c\x2d\x93",
93cc74e0
JL
5605 .rlen = 28,
5606 }, {
de224c30
SS
5607 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5608 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5609 .klen = 16,
de224c30
SS
5610 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5611 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5612 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5613 .alen = 8,
de224c30
SS
5614 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5615 "\x10\x11\x12\x13\x14\x15\x16\x17"
5616 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5617 "\x20",
93cc74e0 5618 .ilen = 25,
de224c30
SS
5619 .result = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5620 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5621 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5622 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5623 "\x7e\x5f\x4e",
93cc74e0
JL
5624 .rlen = 35,
5625 }, {
de224c30
SS
5626 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5627 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5628 .klen = 16,
de224c30
SS
5629 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5630 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5631 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5632 "\x08\x09\x0a\x0b",
93cc74e0 5633 .alen = 12,
de224c30
SS
5634 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5635 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5636 "\x1c\x1d\x1e",
93cc74e0 5637 .ilen = 19,
de224c30
SS
5638 .result = "\x07\x34\x25\x94\x15\x77\x85\x15"
5639 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5640 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5641 "\x4d\x99\x99\x88\xdd",
93cc74e0
JL
5642 .rlen = 29,
5643 }, {
de224c30
SS
5644 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5645 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5646 .klen = 16,
de224c30
SS
5647 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5648 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5649 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
93cc74e0 5650 .alen = 8,
de224c30
SS
5651 .input = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5652 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5653 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
93cc74e0 5654 .ilen = 24,
de224c30
SS
5655 .result = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5656 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5657 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5658 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
93cc74e0
JL
5659 .rlen = 32,
5660 }, {
de224c30
SS
5661 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5662 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5663 .klen = 16,
de224c30
SS
5664 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5665 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5666 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5667 "\x20\xea\x60\xc0",
93cc74e0 5668 .alen = 12,
de224c30
SS
5669 .input = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5670 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5671 "\x3a\x80\x3b\xa8\x7f",
93cc74e0 5672 .ilen = 21,
de224c30
SS
5673 .result = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5674 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5675 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5676 "\x5a\xe0\x70\x45\x51",
93cc74e0
JL
5677 .rlen = 29,
5678 }, {
de224c30
SS
5679 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5680 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5681 .klen = 16,
de224c30
SS
5682 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5683 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5684 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
93cc74e0 5685 .alen = 8,
de224c30
SS
5686 .input = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5687 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5688 "\x98\x09\xd6\x7d\xbe\xdd\x18",
93cc74e0 5689 .ilen = 23,
de224c30
SS
5690 .result = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5691 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5692 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5693 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5694 "\xba",
93cc74e0
JL
5695 .rlen = 33,
5696 },
5697};
5698
5699static struct aead_testvec aes_ccm_dec_tv_template[] = {
5700 { /* From RFC 3610 */
de224c30
SS
5701 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5702 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5703 .klen = 16,
de224c30
SS
5704 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5705 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5706 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5707 .alen = 8,
de224c30
SS
5708 .input = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5709 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5710 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5711 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
93cc74e0 5712 .ilen = 31,
de224c30
SS
5713 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5714 "\x10\x11\x12\x13\x14\x15\x16\x17"
5715 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
93cc74e0
JL
5716 .rlen = 23,
5717 }, {
de224c30
SS
5718 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5719 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5720 .klen = 16,
de224c30
SS
5721 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5722 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5723 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5724 "\x08\x09\x0a\x0b",
93cc74e0 5725 .alen = 12,
de224c30
SS
5726 .input = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5727 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5728 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5729 "\x7d\x9c\x2d\x93",
93cc74e0 5730 .ilen = 28,
de224c30
SS
5731 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5732 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5733 "\x1c\x1d\x1e\x1f",
93cc74e0
JL
5734 .rlen = 20,
5735 }, {
de224c30
SS
5736 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5737 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5738 .klen = 16,
de224c30
SS
5739 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5740 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5741 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5742 .alen = 8,
de224c30
SS
5743 .input = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5744 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5745 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5746 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5747 "\x7e\x5f\x4e",
93cc74e0 5748 .ilen = 35,
de224c30
SS
5749 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5750 "\x10\x11\x12\x13\x14\x15\x16\x17"
5751 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5752 "\x20",
93cc74e0
JL
5753 .rlen = 25,
5754 }, {
de224c30
SS
5755 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5756 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5757 .klen = 16,
de224c30
SS
5758 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5759 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5760 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5761 "\x08\x09\x0a\x0b",
93cc74e0 5762 .alen = 12,
de224c30
SS
5763 .input = "\x07\x34\x25\x94\x15\x77\x85\x15"
5764 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5765 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5766 "\x4d\x99\x99\x88\xdd",
93cc74e0 5767 .ilen = 29,
de224c30
SS
5768 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5769 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5770 "\x1c\x1d\x1e",
93cc74e0
JL
5771 .rlen = 19,
5772 }, {
de224c30
SS
5773 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5774 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5775 .klen = 16,
de224c30
SS
5776 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5777 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5778 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
93cc74e0 5779 .alen = 8,
de224c30
SS
5780 .input = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5781 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5782 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5783 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
93cc74e0 5784 .ilen = 32,
de224c30
SS
5785 .result = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5786 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5787 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
93cc74e0
JL
5788 .rlen = 24,
5789 }, {
de224c30
SS
5790 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5791 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5792 .klen = 16,
de224c30
SS
5793 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5794 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5795 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5796 "\x20\xea\x60\xc0",
93cc74e0 5797 .alen = 12,
de224c30
SS
5798 .input = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5799 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5800 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5801 "\x5a\xe0\x70\x45\x51",
93cc74e0 5802 .ilen = 29,
de224c30
SS
5803 .result = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5804 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5805 "\x3a\x80\x3b\xa8\x7f",
93cc74e0
JL
5806 .rlen = 21,
5807 }, {
de224c30
SS
5808 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5809 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5810 .klen = 16,
de224c30
SS
5811 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5812 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5813 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
93cc74e0 5814 .alen = 8,
de224c30
SS
5815 .input = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5816 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5817 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5818 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5819 "\xba",
93cc74e0 5820 .ilen = 33,
de224c30
SS
5821 .result = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5822 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5823 "\x98\x09\xd6\x7d\xbe\xdd\x18",
93cc74e0
JL
5824 .rlen = 23,
5825 },
5826};
5827
1da177e4
LT
5828/* Cast5 test vectors from RFC 2144 */
5829#define CAST5_ENC_TEST_VECTORS 3
5830#define CAST5_DEC_TEST_VECTORS 3
5831
ef2736fc 5832static struct cipher_testvec cast5_enc_tv_template[] = {
1da177e4 5833 {
de224c30
SS
5834 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5835 "\x23\x45\x67\x89\x34\x56\x78\x9a",
1da177e4 5836 .klen = 16,
de224c30 5837 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5838 .ilen = 8,
de224c30 5839 .result = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
1da177e4
LT
5840 .rlen = 8,
5841 }, {
de224c30
SS
5842 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5843 "\x23\x45",
1da177e4 5844 .klen = 10,
de224c30 5845 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5846 .ilen = 8,
de224c30 5847 .result = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
1da177e4
LT
5848 .rlen = 8,
5849 }, {
de224c30 5850 .key = "\x01\x23\x45\x67\x12",
1da177e4 5851 .klen = 5,
de224c30 5852 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5853 .ilen = 8,
de224c30 5854 .result = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
1da177e4
LT
5855 .rlen = 8,
5856 },
5857};
5858
ef2736fc 5859static struct cipher_testvec cast5_dec_tv_template[] = {
1da177e4 5860 {
de224c30
SS
5861 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5862 "\x23\x45\x67\x89\x34\x56\x78\x9a",
1da177e4 5863 .klen = 16,
de224c30 5864 .input = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
1da177e4 5865 .ilen = 8,
de224c30 5866 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5867 .rlen = 8,
5868 }, {
de224c30
SS
5869 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5870 "\x23\x45",
1da177e4 5871 .klen = 10,
de224c30 5872 .input = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
1da177e4 5873 .ilen = 8,
de224c30 5874 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5875 .rlen = 8,
5876 }, {
de224c30 5877 .key = "\x01\x23\x45\x67\x12",
1da177e4 5878 .klen = 5,
de224c30 5879 .input = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
1da177e4 5880 .ilen = 8,
de224c30 5881 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5882 .rlen = 8,
5883 },
5884};
5885
ef2736fc
HX
5886/*
5887 * ARC4 test vectors from OpenSSL
1da177e4
LT
5888 */
5889#define ARC4_ENC_TEST_VECTORS 7
5890#define ARC4_DEC_TEST_VECTORS 7
5891
ef2736fc 5892static struct cipher_testvec arc4_enc_tv_template[] = {
1da177e4 5893 {
de224c30 5894 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5895 .klen = 8,
de224c30 5896 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5897 .ilen = 8,
de224c30 5898 .result = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
1da177e4
LT
5899 .rlen = 8,
5900 }, {
de224c30 5901 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5902 .klen = 8,
de224c30 5903 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5904 .ilen = 8,
de224c30 5905 .result = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
1da177e4
LT
5906 .rlen = 8,
5907 }, {
de224c30 5908 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5909 .klen = 8,
de224c30 5910 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5911 .ilen = 8,
de224c30 5912 .result = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
1da177e4
LT
5913 .rlen = 8,
5914 }, {
de224c30 5915 .key = "\xef\x01\x23\x45",
1da177e4 5916 .klen = 4,
de224c30
SS
5917 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5918 "\x00\x00\x00\x00\x00\x00\x00\x00"
5919 "\x00\x00\x00\x00",
1da177e4 5920 .ilen = 20,
de224c30
SS
5921 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5922 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5923 "\x36\xb6\x78\x58",
1da177e4
LT
5924 .rlen = 20,
5925 }, {
de224c30 5926 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5927 .klen = 8,
de224c30
SS
5928 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5929 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5930 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5931 "\x12\x34\x56\x78",
1da177e4 5932 .ilen = 28,
de224c30
SS
5933 .result = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5934 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5935 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5936 "\x40\x01\x1e\xcf",
1da177e4
LT
5937 .rlen = 28,
5938 }, {
de224c30 5939 .key = "\xef\x01\x23\x45",
1da177e4 5940 .klen = 4,
de224c30
SS
5941 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5942 "\x00\x00",
1da177e4 5943 .ilen = 10,
de224c30
SS
5944 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5945 "\xbd\x61",
1da177e4
LT
5946 .rlen = 10,
5947 }, {
de224c30
SS
5948 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5949 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5950 .klen = 16,
de224c30 5951 .input = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
1da177e4 5952 .ilen = 8,
de224c30 5953 .result = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
1da177e4
LT
5954 .rlen = 8,
5955 },
5956};
5957
ef2736fc 5958static struct cipher_testvec arc4_dec_tv_template[] = {
1da177e4 5959 {
de224c30 5960 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5961 .klen = 8,
de224c30 5962 .input = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
1da177e4 5963 .ilen = 8,
de224c30 5964 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5965 .rlen = 8,
5966 }, {
de224c30 5967 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5968 .klen = 8,
de224c30 5969 .input = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
1da177e4 5970 .ilen = 8,
de224c30 5971 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
5972 .rlen = 8,
5973 }, {
de224c30 5974 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5975 .klen = 8,
de224c30 5976 .input = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
1da177e4 5977 .ilen = 8,
de224c30 5978 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
5979 .rlen = 8,
5980 }, {
de224c30 5981 .key = "\xef\x01\x23\x45",
1da177e4 5982 .klen = 4,
de224c30
SS
5983 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5984 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5985 "\x36\xb6\x78\x58",
1da177e4 5986 .ilen = 20,
de224c30
SS
5987 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5988 "\x00\x00\x00\x00\x00\x00\x00\x00"
5989 "\x00\x00\x00\x00",
1da177e4
LT
5990 .rlen = 20,
5991 }, {
de224c30 5992 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5993 .klen = 8,
de224c30
SS
5994 .input = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5995 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5996 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5997 "\x40\x01\x1e\xcf",
1da177e4 5998 .ilen = 28,
de224c30
SS
5999 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
6000 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
6001 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
6002 "\x12\x34\x56\x78",
1da177e4
LT
6003 .rlen = 28,
6004 }, {
de224c30 6005 .key = "\xef\x01\x23\x45",
1da177e4 6006 .klen = 4,
de224c30
SS
6007 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
6008 "\xbd\x61",
1da177e4 6009 .ilen = 10,
de224c30
SS
6010 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
6011 "\x00\x00",
1da177e4
LT
6012 .rlen = 10,
6013 }, {
de224c30
SS
6014 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
6015 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 6016 .klen = 16,
de224c30 6017 .input = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
1da177e4 6018 .ilen = 8,
de224c30 6019 .result = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
1da177e4
LT
6020 .rlen = 8,
6021 },
6022};
6023
ef2736fc 6024/*
1da177e4
LT
6025 * TEA test vectors
6026 */
6027#define TEA_ENC_TEST_VECTORS 4
6028#define TEA_DEC_TEST_VECTORS 4
6029
ef2736fc 6030static struct cipher_testvec tea_enc_tv_template[] = {
1da177e4 6031 {
de224c30 6032 .key = zeroed_string,
1da177e4 6033 .klen = 16,
de224c30 6034 .input = zeroed_string,
1da177e4 6035 .ilen = 8,
de224c30 6036 .result = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
1da177e4
LT
6037 .rlen = 8,
6038 }, {
de224c30
SS
6039 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6040 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 6041 .klen = 16,
de224c30 6042 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4 6043 .ilen = 8,
de224c30 6044 .result = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
1da177e4
LT
6045 .rlen = 8,
6046 }, {
de224c30
SS
6047 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6048 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 6049 .klen = 16,
de224c30
SS
6050 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6051 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4 6052 .ilen = 16,
de224c30
SS
6053 .result = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
6054 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
1da177e4
LT
6055 .rlen = 16,
6056 }, {
de224c30
SS
6057 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6058 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 6059 .klen = 16,
de224c30
SS
6060 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6061 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6062 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6063 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4 6064 .ilen = 32,
de224c30
SS
6065 .result = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
6066 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
6067 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
6068 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
1da177e4
LT
6069 .rlen = 32,
6070 }
6071};
6072
ef2736fc 6073static struct cipher_testvec tea_dec_tv_template[] = {
1da177e4 6074 {
de224c30 6075 .key = zeroed_string,
1da177e4 6076 .klen = 16,
de224c30 6077 .input = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
1da177e4 6078 .ilen = 8,
de224c30 6079 .result = zeroed_string,
1da177e4
LT
6080 .rlen = 8,
6081 }, {
de224c30
SS
6082 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6083 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 6084 .klen = 16,
de224c30 6085 .input = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
1da177e4 6086 .ilen = 8,
de224c30 6087 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4
LT
6088 .rlen = 8,
6089 }, {
de224c30
SS
6090 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6091 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 6092 .klen = 16,
de224c30
SS
6093 .input = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
6094 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
ef2736fc 6095 .ilen = 16,
de224c30
SS
6096 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6097 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4
LT
6098 .rlen = 16,
6099 }, {
de224c30
SS
6100 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6101 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 6102 .klen = 16,
de224c30
SS
6103 .input = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
6104 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
6105 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
6106 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
1da177e4 6107 .ilen = 32,
de224c30
SS
6108 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6109 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6110 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6111 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4
LT
6112 .rlen = 32,
6113 }
6114};
6115
ef2736fc
HX
6116/*
6117 * XTEA test vectors
1da177e4
LT
6118 */
6119#define XTEA_ENC_TEST_VECTORS 4
6120#define XTEA_DEC_TEST_VECTORS 4
6121
ef2736fc 6122static struct cipher_testvec xtea_enc_tv_template[] = {
1da177e4 6123 {
de224c30 6124 .key = zeroed_string,
1da177e4 6125 .klen = 16,
de224c30 6126 .input = zeroed_string,
1da177e4 6127 .ilen = 8,
de224c30 6128 .result = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
1da177e4
LT
6129 .rlen = 8,
6130 }, {
de224c30
SS
6131 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6132 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 6133 .klen = 16,
de224c30 6134 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4 6135 .ilen = 8,
de224c30 6136 .result = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
1da177e4
LT
6137 .rlen = 8,
6138 }, {
de224c30
SS
6139 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6140 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 6141 .klen = 16,
f0df30b1 6142 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
de224c30 6143 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4 6144 .ilen = 16,
f0df30b1
SS
6145 .result = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
6146 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
1da177e4
LT
6147 .rlen = 16,
6148 }, {
de224c30
SS
6149 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6150 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 6151 .klen = 16,
de224c30
SS
6152 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6153 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6154 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6155 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4 6156 .ilen = 32,
de224c30
SS
6157 .result = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
6158 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
6159 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
6160 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
1da177e4
LT
6161 .rlen = 32,
6162 }
6163};
6164
ef2736fc 6165static struct cipher_testvec xtea_dec_tv_template[] = {
1da177e4 6166 {
de224c30 6167 .key = zeroed_string,
1da177e4 6168 .klen = 16,
de224c30 6169 .input = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
1da177e4 6170 .ilen = 8,
de224c30 6171 .result = zeroed_string,
1da177e4
LT
6172 .rlen = 8,
6173 }, {
de224c30
SS
6174 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6175 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 6176 .klen = 16,
de224c30 6177 .input = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
1da177e4 6178 .ilen = 8,
de224c30 6179 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4
LT
6180 .rlen = 8,
6181 }, {
de224c30
SS
6182 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6183 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 6184 .klen = 16,
de224c30
SS
6185 .input = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
6186 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
1da177e4 6187 .ilen = 16,
de224c30
SS
6188 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6189 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4
LT
6190 .rlen = 16,
6191 }, {
de224c30
SS
6192 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6193 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 6194 .klen = 16,
de224c30
SS
6195 .input = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
6196 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
6197 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
6198 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
1da177e4 6199 .ilen = 32,
de224c30
SS
6200 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6201 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6202 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6203 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4
LT
6204 .rlen = 32,
6205 }
6206};
6207
6208/*
6209 * KHAZAD test vectors.
6210 */
6211#define KHAZAD_ENC_TEST_VECTORS 5
6212#define KHAZAD_DEC_TEST_VECTORS 5
6213
ef2736fc
HX
6214static struct cipher_testvec khazad_enc_tv_template[] = {
6215 {
de224c30
SS
6216 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
6217 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 6218 .klen = 16,
de224c30 6219 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 6220 .ilen = 8,
de224c30 6221 .result = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
1da177e4
LT
6222 .rlen = 8,
6223 }, {
de224c30
SS
6224 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
6225 "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 6226 .klen = 16,
de224c30 6227 .input = "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 6228 .ilen = 8,
de224c30 6229 .result = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
1da177e4
LT
6230 .rlen = 8,
6231 }, {
de224c30
SS
6232 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
6233 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 6234 .klen = 16,
de224c30 6235 .input = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 6236 .ilen = 8,
de224c30 6237 .result = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
1da177e4
LT
6238 .rlen = 8,
6239 }, {
de224c30
SS
6240 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6241 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6242 .klen = 16,
de224c30 6243 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6244 .ilen = 8,
de224c30 6245 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4
LT
6246 .rlen = 8,
6247 }, {
de224c30
SS
6248 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6249 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6250 .klen = 16,
de224c30
SS
6251 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6252 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6253 .ilen = 16,
de224c30
SS
6254 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
6255 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4
LT
6256 .rlen = 16,
6257 },
6258};
6259
ef2736fc 6260static struct cipher_testvec khazad_dec_tv_template[] = {
1da177e4 6261 {
de224c30
SS
6262 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
6263 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 6264 .klen = 16,
de224c30 6265 .input = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
1da177e4 6266 .ilen = 8,
de224c30 6267 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
6268 .rlen = 8,
6269 }, {
de224c30
SS
6270 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
6271 "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 6272 .klen = 16,
de224c30 6273 .input = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
1da177e4 6274 .ilen = 8,
de224c30 6275 .result = "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4
LT
6276 .rlen = 8,
6277 }, {
de224c30
SS
6278 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
6279 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 6280 .klen = 16,
de224c30 6281 .input = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
1da177e4 6282 .ilen = 8,
de224c30 6283 .result = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4
LT
6284 .rlen = 8,
6285 }, {
de224c30
SS
6286 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6287 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6288 .klen = 16,
de224c30 6289 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4 6290 .ilen = 8,
de224c30 6291 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4
LT
6292 .rlen = 8,
6293 }, {
de224c30
SS
6294 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6295 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6296 .klen = 16,
de224c30
SS
6297 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
6298 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4 6299 .ilen = 16,
de224c30
SS
6300 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6301 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4
LT
6302 .rlen = 16,
6303 },
6304};
6305
6306/*
6307 * Anubis test vectors.
6308 */
6309
6310#define ANUBIS_ENC_TEST_VECTORS 5
6311#define ANUBIS_DEC_TEST_VECTORS 5
6312#define ANUBIS_CBC_ENC_TEST_VECTORS 2
6313#define ANUBIS_CBC_DEC_TEST_VECTORS 2
6314
6315static struct cipher_testvec anubis_enc_tv_template[] = {
6316 {
de224c30
SS
6317 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6318 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6319 .klen = 16,
de224c30
SS
6320 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6321 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6322 .ilen = 16,
de224c30
SS
6323 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6324 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
1da177e4
LT
6325 .rlen = 16,
6326 }, {
6327
de224c30
SS
6328 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
6329 "\x03\x03\x03\x03\x03\x03\x03\x03"
6330 "\x03\x03\x03\x03",
1da177e4 6331 .klen = 20,
de224c30
SS
6332 .input = "\x03\x03\x03\x03\x03\x03\x03\x03"
6333 "\x03\x03\x03\x03\x03\x03\x03\x03",
1da177e4 6334 .ilen = 16,
de224c30
SS
6335 .result = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
6336 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
1da177e4
LT
6337 .rlen = 16,
6338 }, {
de224c30
SS
6339 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
6340 "\x24\x24\x24\x24\x24\x24\x24\x24"
6341 "\x24\x24\x24\x24\x24\x24\x24\x24"
6342 "\x24\x24\x24\x24",
1da177e4 6343 .klen = 28,
de224c30
SS
6344 .input = "\x24\x24\x24\x24\x24\x24\x24\x24"
6345 "\x24\x24\x24\x24\x24\x24\x24\x24",
1da177e4 6346 .ilen = 16,
de224c30
SS
6347 .result = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
6348 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
1da177e4
LT
6349 .rlen = 16,
6350 }, {
de224c30
SS
6351 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
6352 "\x25\x25\x25\x25\x25\x25\x25\x25"
6353 "\x25\x25\x25\x25\x25\x25\x25\x25"
6354 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 6355 .klen = 32,
de224c30
SS
6356 .input = "\x25\x25\x25\x25\x25\x25\x25\x25"
6357 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 6358 .ilen = 16,
de224c30
SS
6359 .result = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
6360 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
1da177e4
LT
6361 .rlen = 16,
6362 }, {
de224c30
SS
6363 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6364 "\x35\x35\x35\x35\x35\x35\x35\x35"
6365 "\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",
1da177e4 6368 .klen = 40,
de224c30
SS
6369 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
6370 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6371 .ilen = 16,
de224c30
SS
6372 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6373 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
1da177e4
LT
6374 .rlen = 16,
6375 },
6376};
6377
6378static struct cipher_testvec anubis_dec_tv_template[] = {
6379 {
de224c30
SS
6380 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6381 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6382 .klen = 16,
de224c30
SS
6383 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6384 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
1da177e4 6385 .ilen = 16,
de224c30
SS
6386 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6387 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4
LT
6388 .rlen = 16,
6389 }, {
6390
de224c30
SS
6391 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
6392 "\x03\x03\x03\x03\x03\x03\x03\x03"
6393 "\x03\x03\x03\x03",
1da177e4 6394 .klen = 20,
de224c30
SS
6395 .input = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
6396 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
1da177e4 6397 .ilen = 16,
de224c30
SS
6398 .result = "\x03\x03\x03\x03\x03\x03\x03\x03"
6399 "\x03\x03\x03\x03\x03\x03\x03\x03",
1da177e4
LT
6400 .rlen = 16,
6401 }, {
de224c30
SS
6402 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
6403 "\x24\x24\x24\x24\x24\x24\x24\x24"
6404 "\x24\x24\x24\x24\x24\x24\x24\x24"
6405 "\x24\x24\x24\x24",
1da177e4 6406 .klen = 28,
de224c30
SS
6407 .input = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
6408 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
1da177e4 6409 .ilen = 16,
de224c30
SS
6410 .result = "\x24\x24\x24\x24\x24\x24\x24\x24"
6411 "\x24\x24\x24\x24\x24\x24\x24\x24",
1da177e4
LT
6412 .rlen = 16,
6413 }, {
de224c30
SS
6414 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
6415 "\x25\x25\x25\x25\x25\x25\x25\x25"
6416 "\x25\x25\x25\x25\x25\x25\x25\x25"
6417 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 6418 .klen = 32,
de224c30
SS
6419 .input = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
6420 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
1da177e4 6421 .ilen = 16,
de224c30
SS
6422 .result = "\x25\x25\x25\x25\x25\x25\x25\x25"
6423 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4
LT
6424 .rlen = 16,
6425 }, {
de224c30
SS
6426 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6427 "\x35\x35\x35\x35\x35\x35\x35\x35"
6428 "\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 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6432 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
1da177e4
LT
6433 .klen = 40,
6434 .ilen = 16,
de224c30
SS
6435 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
6436 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4
LT
6437 .rlen = 16,
6438 },
6439};
6440
6441static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
6442 {
de224c30
SS
6443 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6444 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6445 .klen = 16,
de224c30
SS
6446 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6447 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6448 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6449 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6450 .ilen = 32,
de224c30
SS
6451 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6452 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
6453 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
6454 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
1da177e4
LT
6455 .rlen = 32,
6456 }, {
de224c30
SS
6457 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6458 "\x35\x35\x35\x35\x35\x35\x35\x35"
6459 "\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",
1da177e4 6462 .klen = 40,
de224c30
SS
6463 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
6464 "\x35\x35\x35\x35\x35\x35\x35\x35"
6465 "\x35\x35\x35\x35\x35\x35\x35\x35"
6466 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6467 .ilen = 32,
de224c30
SS
6468 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6469 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
6470 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
6471 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
1da177e4
LT
6472 .rlen = 32,
6473 },
6474};
6475
6476static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
6477 {
de224c30
SS
6478 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6479 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6480 .klen = 16,
de224c30
SS
6481 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6482 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
6483 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
6484 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
1da177e4 6485 .ilen = 32,
de224c30
SS
6486 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6487 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6488 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6489 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4
LT
6490 .rlen = 32,
6491 }, {
de224c30
SS
6492 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6493 "\x35\x35\x35\x35\x35\x35\x35\x35"
6494 "\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",
1da177e4 6497 .klen = 40,
de224c30
SS
6498 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6499 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
6500 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
6501 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
1da177e4 6502 .ilen = 32,
de224c30
SS
6503 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
6504 "\x35\x35\x35\x35\x35\x35\x35\x35"
6505 "\x35\x35\x35\x35\x35\x35\x35\x35"
6506 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4
LT
6507 .rlen = 32,
6508 },
6509};
6510
fb4f10ed
AG
6511/*
6512 * XETA test vectors
6513 */
6514#define XETA_ENC_TEST_VECTORS 4
6515#define XETA_DEC_TEST_VECTORS 4
6516
6517static struct cipher_testvec xeta_enc_tv_template[] = {
6518 {
de224c30 6519 .key = zeroed_string,
fb4f10ed 6520 .klen = 16,
de224c30 6521 .input = zeroed_string,
fb4f10ed 6522 .ilen = 8,
de224c30 6523 .result = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
fb4f10ed
AG
6524 .rlen = 8,
6525 }, {
de224c30
SS
6526 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6527 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
fb4f10ed 6528 .klen = 16,
de224c30 6529 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
fb4f10ed 6530 .ilen = 8,
de224c30 6531 .result = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
fb4f10ed
AG
6532 .rlen = 8,
6533 }, {
de224c30
SS
6534 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6535 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
fb4f10ed 6536 .klen = 16,
de224c30
SS
6537 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6538 "\x65\x73\x74\x5f\x76\x65\x63\x74",
fb4f10ed 6539 .ilen = 16,
de224c30
SS
6540 .result = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6541 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
fb4f10ed
AG
6542 .rlen = 16,
6543 }, {
de224c30
SS
6544 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6545 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
fb4f10ed 6546 .klen = 16,
de224c30
SS
6547 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6548 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6549 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6550 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
fb4f10ed 6551 .ilen = 32,
de224c30
SS
6552 .result = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6553 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6554 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6555 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
fb4f10ed
AG
6556 .rlen = 32,
6557 }
6558};
6559
6560static struct cipher_testvec xeta_dec_tv_template[] = {
6561 {
de224c30 6562 .key = zeroed_string,
fb4f10ed 6563 .klen = 16,
de224c30 6564 .input = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
fb4f10ed 6565 .ilen = 8,
de224c30 6566 .result = zeroed_string,
fb4f10ed
AG
6567 .rlen = 8,
6568 }, {
de224c30
SS
6569 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6570 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
fb4f10ed 6571 .klen = 16,
de224c30 6572 .input = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
fb4f10ed 6573 .ilen = 8,
de224c30 6574 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
fb4f10ed
AG
6575 .rlen = 8,
6576 }, {
de224c30
SS
6577 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6578 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
fb4f10ed 6579 .klen = 16,
de224c30
SS
6580 .input = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6581 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
fb4f10ed 6582 .ilen = 16,
de224c30
SS
6583 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6584 "\x65\x73\x74\x5f\x76\x65\x63\x74",
fb4f10ed
AG
6585 .rlen = 16,
6586 }, {
de224c30
SS
6587 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6588 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
fb4f10ed 6589 .klen = 16,
de224c30
SS
6590 .input = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6591 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6592 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6593 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
fb4f10ed 6594 .ilen = 32,
de224c30
SS
6595 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6596 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6597 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6598 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
fb4f10ed
AG
6599 .rlen = 32,
6600 }
6601};
6602
90831639
DH
6603/*
6604 * FCrypt test vectors
6605 */
6606#define FCRYPT_ENC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_enc_tv_template)
6607#define FCRYPT_DEC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_dec_tv_template)
6608
6609static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
6610 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
de224c30 6611 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6612 .klen = 8,
de224c30
SS
6613 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6614 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6615 .ilen = 8,
de224c30 6616 .result = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
90831639
DH
6617 .rlen = 8,
6618 }, {
de224c30 6619 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
90831639 6620 .klen = 8,
de224c30
SS
6621 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6622 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
90831639 6623 .ilen = 8,
de224c30 6624 .result = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
90831639
DH
6625 .rlen = 8,
6626 }, { /* From Arla */
de224c30 6627 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639 6628 .klen = 8,
de224c30 6629 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639
DH
6630 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6631 .ilen = 48,
de224c30
SS
6632 .result = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6633 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6634 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6635 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6636 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6637 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
90831639
DH
6638 .rlen = 48,
6639 }, {
de224c30 6640 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6641 .klen = 8,
de224c30 6642 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639
DH
6643 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6644 .ilen = 48,
de224c30
SS
6645 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6646 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6647 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6648 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6649 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6650 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6651 .rlen = 48,
6652 }, { /* split-page version */
de224c30 6653 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6654 .klen = 8,
de224c30 6655 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639
DH
6656 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6657 .ilen = 48,
de224c30
SS
6658 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6659 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6660 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6661 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6662 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6663 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6664 .rlen = 48,
6665 .np = 2,
6666 .tap = { 20, 28 },
6667 }
6668};
6669
6670static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
6671 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
de224c30 6672 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6673 .klen = 8,
de224c30
SS
6674 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6675 .input = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
90831639 6676 .ilen = 8,
de224c30 6677 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639
DH
6678 .rlen = 8,
6679 }, {
de224c30 6680 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
90831639 6681 .klen = 8,
de224c30
SS
6682 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6683 .input = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
90831639 6684 .ilen = 8,
de224c30 6685 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
90831639
DH
6686 .rlen = 8,
6687 }, { /* From Arla */
de224c30 6688 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639 6689 .klen = 8,
de224c30
SS
6690 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6691 .input = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6692 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6693 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6694 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6695 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6696 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
90831639
DH
6697 .ilen = 48,
6698 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6699 .rlen = 48,
6700 }, {
de224c30 6701 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6702 .klen = 8,
de224c30
SS
6703 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6704 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6705 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6706 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6707 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6708 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6709 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6710 .ilen = 48,
6711 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6712 .rlen = 48,
6713 }, { /* split-page version */
de224c30 6714 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6715 .klen = 8,
de224c30
SS
6716 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6717 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6718 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6719 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6720 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6721 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6722 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6723 .ilen = 48,
6724 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6725 .rlen = 48,
6726 .np = 2,
6727 .tap = { 20, 28 },
6728 }
6729};
6730
02ab5a70
NT
6731/*
6732 * CAMELLIA test vectors.
6733 */
6734#define CAMELLIA_ENC_TEST_VECTORS 3
6735#define CAMELLIA_DEC_TEST_VECTORS 3
6736#define CAMELLIA_CBC_ENC_TEST_VECTORS 2
6737#define CAMELLIA_CBC_DEC_TEST_VECTORS 2
6738
6739static struct cipher_testvec camellia_enc_tv_template[] = {
6740 {
de224c30
SS
6741 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6742 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6743 .klen = 16,
de224c30
SS
6744 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6745 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6746 .ilen = 16,
de224c30
SS
6747 .result = "\x67\x67\x31\x38\x54\x96\x69\x73"
6748 "\x08\x57\x06\x56\x48\xea\xbe\x43",
02ab5a70
NT
6749 .rlen = 16,
6750 }, {
de224c30
SS
6751 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6752 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6753 "\x00\x11\x22\x33\x44\x55\x66\x77",
02ab5a70 6754 .klen = 24,
de224c30
SS
6755 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6756 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6757 .ilen = 16,
de224c30
SS
6758 .result = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6759 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
02ab5a70
NT
6760 .rlen = 16,
6761 }, {
de224c30
SS
6762 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6763 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6764 "\x00\x11\x22\x33\x44\x55\x66\x77"
6765 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
02ab5a70 6766 .klen = 32,
de224c30
SS
6767 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6768 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6769 .ilen = 16,
de224c30
SS
6770 .result = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6771 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
02ab5a70
NT
6772 .rlen = 16,
6773 },
6774};
6775
6776static struct cipher_testvec camellia_dec_tv_template[] = {
6777 {
de224c30
SS
6778 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6779 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6780 .klen = 16,
de224c30
SS
6781 .input = "\x67\x67\x31\x38\x54\x96\x69\x73"
6782 "\x08\x57\x06\x56\x48\xea\xbe\x43",
02ab5a70 6783 .ilen = 16,
de224c30
SS
6784 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6785 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6786 .rlen = 16,
6787 }, {
de224c30
SS
6788 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6789 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6790 "\x00\x11\x22\x33\x44\x55\x66\x77",
02ab5a70 6791 .klen = 24,
de224c30
SS
6792 .input = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6793 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
02ab5a70 6794 .ilen = 16,
de224c30
SS
6795 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6796 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6797 .rlen = 16,
6798 }, {
de224c30
SS
6799 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6800 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6801 "\x00\x11\x22\x33\x44\x55\x66\x77"
6802 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
02ab5a70 6803 .klen = 32,
de224c30
SS
6804 .input = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6805 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
02ab5a70 6806 .ilen = 16,
de224c30
SS
6807 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6808 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6809 .rlen = 16,
6810 },
6811};
6812
6813static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
6814 {
de224c30
SS
6815 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6816 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
02ab5a70 6817 .klen = 16,
de224c30
SS
6818 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6819 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6820 .input = "Single block msg",
02ab5a70 6821 .ilen = 16,
de224c30
SS
6822 .result = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6823 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
02ab5a70
NT
6824 .rlen = 16,
6825 }, {
de224c30
SS
6826 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6827 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
02ab5a70 6828 .klen = 16,
de224c30
SS
6829 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6830 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6831 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6832 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6833 "\x10\x11\x12\x13\x14\x15\x16\x17"
6834 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
02ab5a70 6835 .ilen = 32,
de224c30
SS
6836 .result = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6837 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6838 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6839 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
02ab5a70
NT
6840 .rlen = 32,
6841 },
6842};
6843
6844static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
6845 {
de224c30
SS
6846 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6847 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
02ab5a70 6848 .klen = 16,
de224c30
SS
6849 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6850 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6851 .input = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6852 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
02ab5a70 6853 .ilen = 16,
de224c30 6854 .result = "Single block msg",
02ab5a70
NT
6855 .rlen = 16,
6856 }, {
de224c30
SS
6857 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6858 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
02ab5a70 6859 .klen = 16,
de224c30
SS
6860 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6861 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6862 .input = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6863 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6864 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6865 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
02ab5a70 6866 .ilen = 32,
de224c30
SS
6867 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6868 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6869 "\x10\x11\x12\x13\x14\x15\x16\x17"
6870 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
02ab5a70
NT
6871 .rlen = 32,
6872 },
6873};
6874
e2ee95b8
HSC
6875/*
6876 * SEED test vectors
6877 */
6878#define SEED_ENC_TEST_VECTORS 4
6879#define SEED_DEC_TEST_VECTORS 4
6880
6881static struct cipher_testvec seed_enc_tv_template[] = {
6882 {
de224c30 6883 .key = zeroed_string,
e2ee95b8 6884 .klen = 16,
de224c30
SS
6885 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6886 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6887 .ilen = 16,
de224c30
SS
6888 .result = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6889 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
e2ee95b8
HSC
6890 .rlen = 16,
6891 }, {
de224c30
SS
6892 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6893 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6894 .klen = 16,
de224c30 6895 .input = zeroed_string,
e2ee95b8 6896 .ilen = 16,
de224c30
SS
6897 .result = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6898 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
e2ee95b8
HSC
6899 .rlen = 16,
6900 }, {
de224c30
SS
6901 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6902 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
e2ee95b8 6903 .klen = 16,
de224c30
SS
6904 .input = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6905 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
e2ee95b8 6906 .ilen = 16,
de224c30
SS
6907 .result = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6908 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
e2ee95b8
HSC
6909 .rlen = 16,
6910 }, {
de224c30
SS
6911 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6912 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
e2ee95b8 6913 .klen = 16,
de224c30
SS
6914 .input = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6915 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
e2ee95b8 6916 .ilen = 16,
de224c30
SS
6917 .result = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6918 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
e2ee95b8
HSC
6919 .rlen = 16,
6920 }
6921};
6922
6923static struct cipher_testvec seed_dec_tv_template[] = {
6924 {
de224c30 6925 .key = zeroed_string,
e2ee95b8 6926 .klen = 16,
de224c30
SS
6927 .input = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6928 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
e2ee95b8 6929 .ilen = 16,
de224c30
SS
6930 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6931 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8
HSC
6932 .rlen = 16,
6933 }, {
de224c30
SS
6934 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6935 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6936 .klen = 16,
de224c30
SS
6937 .input = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6938 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
e2ee95b8 6939 .ilen = 16,
de224c30 6940 .result = zeroed_string,
e2ee95b8
HSC
6941 .rlen = 16,
6942 }, {
de224c30
SS
6943 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6944 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
e2ee95b8 6945 .klen = 16,
de224c30
SS
6946 .input = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6947 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
e2ee95b8 6948 .ilen = 16,
de224c30
SS
6949 .result = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6950 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
e2ee95b8
HSC
6951 .rlen = 16,
6952 }, {
de224c30
SS
6953 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6954 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
e2ee95b8 6955 .klen = 16,
de224c30
SS
6956 .input = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6957 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
e2ee95b8 6958 .ilen = 16,
de224c30
SS
6959 .result = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6960 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
e2ee95b8
HSC
6961 .rlen = 16,
6962 }
2407d608
TSH
6963};
6964
8bff664c 6965#define SALSA20_STREAM_ENC_TEST_VECTORS 5
2407d608
TSH
6966static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
6967 /*
6968 * Testvectors from verified.test-vectors submitted to ECRYPT.
6969 * They are truncated to size 39, 64, 111, 129 to test a variety
6970 * of input length.
6971 */
6972 { /* Set 3, vector 0 */
de224c30
SS
6973 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6974 "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F",
2407d608 6975 .klen = 16,
de224c30
SS
6976 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6977 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6978 "\x00\x00\x00\x00\x00\x00\x00\x00"
6979 "\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",
2407d608 6982 .ilen = 39,
de224c30
SS
6983 .result = "\x2D\xD5\xC3\xF7\xBA\x2B\x20\xF7"
6984 "\x68\x02\x41\x0C\x68\x86\x88\x89"
6985 "\x5A\xD8\xC1\xBD\x4E\xA6\xC9\xB1"
6986 "\x40\xFB\x9B\x90\xE2\x10\x49\xBF"
6987 "\x58\x3F\x52\x79\x70\xEB\xC1",
2407d608
TSH
6988 .rlen = 39,
6989 }, { /* Set 5, vector 0 */
de224c30
SS
6990 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6991 "\x00\x00\x00\x00\x00\x00\x00\x00",
2407d608 6992 .klen = 16,
de224c30
SS
6993 .iv = "\x80\x00\x00\x00\x00\x00\x00\x00",
6994 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6995 "\x00\x00\x00\x00\x00\x00\x00\x00"
6996 "\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",
2407d608 7002 .ilen = 64,
de224c30
SS
7003 .result = "\xB6\x6C\x1E\x44\x46\xDD\x95\x57"
7004 "\xE5\x78\xE2\x23\xB0\xB7\x68\x01"
7005 "\x7B\x23\xB2\x67\xBB\x02\x34\xAE"
7006 "\x46\x26\xBF\x44\x3F\x21\x97\x76"
7007 "\x43\x6F\xB1\x9F\xD0\xE8\x86\x6F"
7008 "\xCD\x0D\xE9\xA9\x53\x8F\x4A\x09"
7009 "\xCA\x9A\xC0\x73\x2E\x30\xBC\xF9"
7010 "\x8E\x4F\x13\xE4\xB9\xE2\x01\xD9",
2407d608
TSH
7011 .rlen = 64,
7012 }, { /* Set 3, vector 27 */
de224c30
SS
7013 .key = "\x1B\x1C\x1D\x1E\x1F\x20\x21\x22"
7014 "\x23\x24\x25\x26\x27\x28\x29\x2A"
7015 "\x2B\x2C\x2D\x2E\x2F\x30\x31\x32"
7016 "\x33\x34\x35\x36\x37\x38\x39\x3A",
2407d608 7017 .klen = 32,
de224c30
SS
7018 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
7019 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
7020 "\x00\x00\x00\x00\x00\x00\x00\x00"
7021 "\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",
2407d608 7033 .ilen = 111,
de224c30
SS
7034 .result = "\xAE\x39\x50\x8E\xAC\x9A\xEC\xE7"
7035 "\xBF\x97\xBB\x20\xB9\xDE\xE4\x1F"
7036 "\x87\xD9\x47\xF8\x28\x91\x35\x98"
7037 "\xDB\x72\xCC\x23\x29\x48\x56\x5E"
7038 "\x83\x7E\x0B\xF3\x7D\x5D\x38\x7B"
7039 "\x2D\x71\x02\xB4\x3B\xB5\xD8\x23"
7040 "\xB0\x4A\xDF\x3C\xEC\xB6\xD9\x3B"
7041 "\x9B\xA7\x52\xBE\xC5\xD4\x50\x59"
7042 "\x15\x14\xB4\x0E\x40\xE6\x53\xD1"
7043 "\x83\x9C\x5B\xA0\x92\x29\x6B\x5E"
7044 "\x96\x5B\x1E\x2F\xD3\xAC\xC1\x92"
7045 "\xB1\x41\x3F\x19\x2F\xC4\x3B\xC6"
7046 "\x95\x46\x45\x54\xE9\x75\x03\x08"
7047 "\x44\xAF\xE5\x8A\x81\x12\x09",
2407d608 7048 .rlen = 111,
2407d608 7049 }, { /* Set 5, vector 27 */
de224c30
SS
7050 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
7051 "\x00\x00\x00\x00\x00\x00\x00\x00"
7052 "\x00\x00\x00\x00\x00\x00\x00\x00"
7053 "\x00\x00\x00\x00\x00\x00\x00\x00",
2407d608 7054 .klen = 32,
de224c30
SS
7055 .iv = "\x00\x00\x00\x10\x00\x00\x00\x00",
7056 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
7057 "\x00\x00\x00\x00\x00\x00\x00\x00"
7058 "\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",
2407d608 7073 .ilen = 129,
de224c30
SS
7074 .result = "\xD2\xDB\x1A\x5C\xF1\xC1\xAC\xDB"
7075 "\xE8\x1A\x7A\x43\x40\xEF\x53\x43"
7076 "\x5E\x7F\x4B\x1A\x50\x52\x3F\x8D"
7077 "\x28\x3D\xCF\x85\x1D\x69\x6E\x60"
7078 "\xF2\xDE\x74\x56\x18\x1B\x84\x10"
7079 "\xD4\x62\xBA\x60\x50\xF0\x61\xF2"
7080 "\x1C\x78\x7F\xC1\x24\x34\xAF\x58"
7081 "\xBF\x2C\x59\xCA\x90\x77\xF3\xB0"
7082 "\x5B\x4A\xDF\x89\xCE\x2C\x2F\xFC"
7083 "\x67\xF0\xE3\x45\xE8\xB3\xB3\x75"
7084 "\xA0\x95\x71\xA1\x29\x39\x94\xCA"
7085 "\x45\x2F\xBD\xCB\x10\xB6\xBE\x9F"
7086 "\x8E\xF9\xB2\x01\x0A\x5A\x0A\xB7"
7087 "\x6B\x9D\x70\x8E\x4B\xD6\x2F\xCD"
7088 "\x2E\x40\x48\x75\xE9\xE2\x21\x45"
7089 "\x0B\xC9\xB6\xB5\x66\xBC\x9A\x59"
7090 "\x5A",
2407d608 7091 .rlen = 129,
8bff664c 7092 }, { /* large test vector generated using Crypto++ */
de224c30
SS
7093 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
7094 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
7095 "\x10\x11\x12\x13\x14\x15\x16\x17"
7096 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
8bff664c 7097 .klen = 32,
de224c30
SS
7098 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
7099 "\x00\x00\x00\x00\x00\x00\x00\x00",
7100 .input =
7101 "\x00\x01\x02\x03\x04\x05\x06\x07"
7102 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
7103 "\x10\x11\x12\x13\x14\x15\x16\x17"
7104 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
7105 "\x20\x21\x22\x23\x24\x25\x26\x27"
7106 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
7107 "\x30\x31\x32\x33\x34\x35\x36\x37"
7108 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
7109 "\x40\x41\x42\x43\x44\x45\x46\x47"
7110 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
7111 "\x50\x51\x52\x53\x54\x55\x56\x57"
7112 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
7113 "\x60\x61\x62\x63\x64\x65\x66\x67"
7114 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
7115 "\x70\x71\x72\x73\x74\x75\x76\x77"
7116 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
7117 "\x80\x81\x82\x83\x84\x85\x86\x87"
7118 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
7119 "\x90\x91\x92\x93\x94\x95\x96\x97"
7120 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
7121 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
7122 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
7123 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
7124 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
7125 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
7126 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
7127 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
7128 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
7129 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
7130 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
7131 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
7132 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
7133 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
7134 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
7135 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
7136 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
7137 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
7138 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
7139 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
7140 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
7141 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
7142 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
7143 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
7144 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
7145 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
7146 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
7147 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
7148 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
7149 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
7150 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
7151 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
7152 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
7153 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
7154 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
7155 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
7156 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
7157 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
7158 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
7159 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
7160 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
7161 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
7162 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
7163 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
7164 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
7165 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
7166 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
7167 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
7168 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
7169 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
7170 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
7171 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
7172 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
7173 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
7174 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
7175 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
7176 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
7177 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
7178 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
7179 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
7180 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
7181 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
7182 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
7183 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
7184 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
7185 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
7186 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
7187 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
7188 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
7189 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
7190 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
7191 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
7192 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
7193 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
7194 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
7195 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
7196 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
7197 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
7198 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
7199 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
7200 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
7201 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
7202 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
7203 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
7204 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
7205 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
7206 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
7207 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
7208 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
7209 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
7210 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
7211 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
7212 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
7213 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
7214 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
7215 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
7216 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
7217 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
7218 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
7219 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
7220 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
7221 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
7222 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
7223 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
7224 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
7225 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
7226 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
7227 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
7228 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
7229 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
7230 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
7231 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
7232 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
7233 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
7234 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
7235 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
7236 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
7237 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
7238 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
7239 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
7240 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
7241 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
7242 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
7243 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
7244 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
7245 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
7246 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
7247 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
7248 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
7249 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
7250 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
7251 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
7252 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
7253 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
7254 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
7255 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
7256 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
7257 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
7258 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
7259 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
7260 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
7261 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
7262 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
7263 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
7264 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
7265 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
7266 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
7267 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
7268 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
7269 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
7270 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
7271 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
7272 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
7273 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
7274 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
7275 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
7276 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
7277 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
7278 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
7279 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
7280 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
7281 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
7282 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
7283 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
7284 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
7285 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
7286 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
7287 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
7288 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
7289 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
7290 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
7291 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
7292 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
7293 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
7294 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
7295 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
7296 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
7297 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
7298 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
7299 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
7300 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
7301 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
7302 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
7303 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
7304 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
7305 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
7306 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
7307 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
7308 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
7309 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
7310 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
7311 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
7312 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
7313 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
7314 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
7315 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
7316 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
7317 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
7318 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
7319 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
7320 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
7321 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
7322 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
7323 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
7324 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
7325 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
7326 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
7327 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
7328 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
7329 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
7330 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
7331 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
7332 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
7333 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
7334 "\x38\x47\x56\x65\x74\x83\x92\xa1"
7335 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
7336 "\x28\x37\x46\x55\x64\x73\x82\x91"
7337 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
7338 "\x18\x27\x36\x45\x54\x63\x72\x81"
7339 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
7340 "\x08\x17\x26\x35\x44\x53\x62\x71"
7341 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
7342 "\xf8\x07\x16\x25\x34\x43\x52\x61"
7343 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
7344 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
7345 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
7346 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
7347 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
7348 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
7349 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
7350 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
7351 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
7352 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
7353 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
7354 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
7355 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
7356 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
7357 "\x00\x11\x22\x33\x44\x55\x66\x77"
7358 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
7359 "\x10\x21\x32\x43\x54\x65\x76\x87"
7360 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
7361 "\x20\x31\x42\x53\x64\x75\x86\x97"
7362 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
7363 "\x30\x41\x52\x63\x74\x85\x96\xa7"
7364 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
7365 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
7366 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
7367 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
7368 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
7369 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
7370 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
7371 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
7372 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
7373 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
7374 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
7375 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
7376 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
7377 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
7378 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
7379 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
7380 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
7381 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
7382 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
7383 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
7384 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
7385 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
7386 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
7387 "\xf0\x01\x12\x23\x34\x45\x56\x67"
7388 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
7389 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
7390 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
7391 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
7392 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
7393 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
7394 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
7395 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
7396 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
7397 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
7398 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
7399 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
7400 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
7401 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
7402 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
7403 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
7404 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
7405 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
7406 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
7407 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
7408 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
7409 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
7410 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
7411 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
7412 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
7413 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
7414 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
7415 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
7416 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
7417 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
7418 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
7419 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
7420 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
7421 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
7422 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
7423 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
7424 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
7425 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
7426 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
7427 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
7428 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
7429 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
7430 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
7431 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
7432 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
7433 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
7434 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
7435 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
7436 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
7437 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
7438 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
7439 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
7440 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
7441 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
7442 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
7443 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
7444 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
7445 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
7446 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
7447 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
7448 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
7449 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
7450 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
7451 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
7452 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
7453 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
7454 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
7455 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
7456 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
7457 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
7458 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
7459 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
7460 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
7461 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
7462 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
7463 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
7464 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
7465 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
7466 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
7467 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
7468 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
7469 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
7470 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
7471 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
7472 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
7473 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
7474 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
7475 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
7476 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
7477 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
7478 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
7479 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
7480 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
7481 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
7482 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
7483 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
7484 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
7485 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
7486 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
7487 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
7488 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
7489 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
7490 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
7491 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
7492 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
7493 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
7494 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
7495 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
7496 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
7497 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
7498 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
7499 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
7500 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
7501 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
7502 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
7503 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
7504 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
7505 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
7506 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
7507 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
7508 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
7509 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
7510 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
7511 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
7512 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
7513 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
7514 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
7515 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
7516 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
7517 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
7518 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
7519 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
7520 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
7521 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
7522 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
7523 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
7524 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
7525 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
7526 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
7527 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
7528 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
7529 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
7530 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
7531 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
7532 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
7533 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
7534 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
7535 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
7536 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
7537 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
7538 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
7539 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
7540 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
7541 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
7542 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
7543 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
7544 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
7545 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
7546 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
7547 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
7548 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
7549 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
7550 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
7551 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
7552 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
7553 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
7554 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
7555 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
7556 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
7557 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
7558 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
7559 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
7560 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
7561 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
7562 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
7563 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
7564 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
7565 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
7566 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
7567 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
7568 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
7569 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
7570 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
7571 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
7572 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
7573 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
7574 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
7575 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
7576 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
7577 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
7578 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
7579 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
7580 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
7581 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
7582 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
7583 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
7584 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
7585 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
7586 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
7587 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
7588 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
7589 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
7590 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
7591 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
7592 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
7593 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
7594 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
7595 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
7596 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
7597 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
7598 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
7599 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
7600 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
7601 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
7602 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
7603 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
7604 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
7605 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
7606 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
7607 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
7608 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
7609 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
7610 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
7611 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
7612 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
7613 "\x00\x21\x42\x63",
8bff664c 7614 .ilen = 4100,
de224c30
SS
7615 .result =
7616 "\xb5\x81\xf5\x64\x18\x73\xe3\xf0"
7617 "\x4c\x13\xf2\x77\x18\x60\x65\x5e"
7618 "\x29\x01\xce\x98\x55\x53\xf9\x0c"
7619 "\x2a\x08\xd5\x09\xb3\x57\x55\x56"
7620 "\xc5\xe9\x56\x90\xcb\x6a\xa3\xc0"
7621 "\xff\xc4\x79\xb4\xd2\x97\x5d\xc4"
7622 "\x43\xd1\xfe\x94\x7b\x88\x06\x5a"
7623 "\xb2\x9e\x2c\xfc\x44\x03\xb7\x90"
7624 "\xa0\xc1\xba\x6a\x33\xb8\xc7\xb2"
7625 "\x9d\xe1\x12\x4f\xc0\x64\xd4\x01"
7626 "\xfe\x8c\x7a\x66\xf7\xe6\x5a\x91"
7627 "\xbb\xde\x56\x86\xab\x65\x21\x30"
7628 "\x00\x84\x65\x24\xa5\x7d\x85\xb4"
7629 "\xe3\x17\xed\x3a\xb7\x6f\xb4\x0b"
7630 "\x0b\xaf\x15\xae\x5a\x8f\xf2\x0c"
7631 "\x2f\x27\xf4\x09\xd8\xd2\x96\xb7"
7632 "\x71\xf2\xc5\x99\x4d\x7e\x7f\x75"
7633 "\x77\x89\x30\x8b\x59\xdb\xa2\xb2"
7634 "\xa0\xf3\x19\x39\x2b\xc5\x7e\x3f"
7635 "\x4f\xd9\xd3\x56\x28\x97\x44\xdc"
7636 "\xc0\x8b\x77\x24\xd9\x52\xe7\xc5"
7637 "\xaf\xf6\x7d\x59\xb2\x44\x05\x1d"
7638 "\xb1\xb0\x11\xa5\x0f\xec\x33\xe1"
7639 "\x6d\x1b\x4e\x1f\xff\x57\x91\xb4"
7640 "\x5b\x9a\x96\xc5\x53\xbc\xae\x20"
7641 "\x3c\xbb\x14\xe2\xe8\x22\x33\xc1"
7642 "\x5e\x76\x9e\x46\x99\xf6\x2a\x15"
7643 "\xc6\x97\x02\xa0\x66\x43\xd1\xa6"
7644 "\x31\xa6\x9f\xfb\xf4\xd3\x69\xe5"
7645 "\xcd\x76\x95\xb8\x7a\x82\x7f\x21"
7646 "\x45\xff\x3f\xce\x55\xf6\x95\x10"
7647 "\x08\x77\x10\x43\xc6\xf3\x09\xe5"
7648 "\x68\xe7\x3c\xad\x00\x52\x45\x0d"
7649 "\xfe\x2d\xc6\xc2\x94\x8c\x12\x1d"
7650 "\xe6\x25\xae\x98\x12\x8e\x19\x9c"
7651 "\x81\x68\xb1\x11\xf6\x69\xda\xe3"
7652 "\x62\x08\x18\x7a\x25\x49\x28\xac"
7653 "\xba\x71\x12\x0b\xe4\xa2\xe5\xc7"
7654 "\x5d\x8e\xec\x49\x40\x21\xbf\x5a"
7655 "\x98\xf3\x02\x68\x55\x03\x7f\x8a"
7656 "\xe5\x94\x0c\x32\x5c\x07\x82\x63"
7657 "\xaf\x6f\x91\x40\x84\x8e\x52\x25"
7658 "\xd0\xb0\x29\x53\x05\xe2\x50\x7a"
7659 "\x34\xeb\xc9\x46\x20\xa8\x3d\xde"
7660 "\x7f\x16\x5f\x36\xc5\x2e\xdc\xd1"
7661 "\x15\x47\xc7\x50\x40\x6d\x91\xc5"
7662 "\xe7\x93\x95\x1a\xd3\x57\xbc\x52"
7663 "\x33\xee\x14\x19\x22\x52\x89\xa7"
7664 "\x4a\x25\x56\x77\x4b\xca\xcf\x0a"
7665 "\xe1\xf5\x35\x85\x30\x7e\x59\x4a"
7666 "\xbd\x14\x5b\xdf\xe3\x46\xcb\xac"
7667 "\x1f\x6c\x96\x0e\xf4\x81\xd1\x99"
7668 "\xca\x88\x63\x3d\x02\x58\x6b\xa9"
7669 "\xe5\x9f\xb3\x00\xb2\x54\xc6\x74"
7670 "\x1c\xbf\x46\xab\x97\xcc\xf8\x54"
7671 "\x04\x07\x08\x52\xe6\xc0\xda\x93"
7672 "\x74\x7d\x93\x99\x5d\x78\x68\xa6"
7673 "\x2e\x6b\xd3\x6a\x69\xcc\x12\x6b"
7674 "\xd4\xc7\xa5\xc6\xe7\xf6\x03\x04"
7675 "\x5d\xcd\x61\x5e\x17\x40\xdc\xd1"
7676 "\x5c\xf5\x08\xdf\x5c\x90\x85\xa4"
7677 "\xaf\xf6\x78\xbb\x0d\xf1\xf4\xa4"
7678 "\x54\x26\x72\x9e\x61\xfa\x86\xcf"
7679 "\xe8\x9e\xa1\xe0\xc7\x48\x23\xae"
7680 "\x5a\x90\xae\x75\x0a\x74\x18\x89"
7681 "\x05\xb1\x92\xb2\x7f\xd0\x1b\xa6"
7682 "\x62\x07\x25\x01\xc7\xc2\x4f\xf9"
7683 "\xe8\xfe\x63\x95\x80\x07\xb4\x26"
7684 "\xcc\xd1\x26\xb6\xc4\x3f\x9e\xcb"
7685 "\x8e\x3b\x2e\x44\x16\xd3\x10\x9a"
7686 "\x95\x08\xeb\xc8\xcb\xeb\xbf\x6f"
7687 "\x0b\xcd\x1f\xc8\xca\x86\xaa\xec"
7688 "\x33\xe6\x69\xf4\x45\x25\x86\x3a"
7689 "\x22\x94\x4f\x00\x23\x6a\x44\xc2"
7690 "\x49\x97\x33\xab\x36\x14\x0a\x70"
7691 "\x24\xc3\xbe\x04\x3b\x79\xa0\xf9"
7692 "\xb8\xe7\x76\x29\x22\x83\xd7\xf2"
7693 "\x94\xf4\x41\x49\xba\x5f\x7b\x07"
7694 "\xb5\xfb\xdb\x03\x1a\x9f\xb6\x4c"
7695 "\xc2\x2e\x37\x40\x49\xc3\x38\x16"
7696 "\xe2\x4f\x77\x82\xb0\x68\x4c\x71"
7697 "\x1d\x57\x61\x9c\xd9\x4e\x54\x99"
7698 "\x47\x13\x28\x73\x3c\xbb\x00\x90"
7699 "\xf3\x4d\xc9\x0e\xfd\xe7\xb1\x71"
7700 "\xd3\x15\x79\xbf\xcc\x26\x2f\xbd"
7701 "\xad\x6c\x50\x69\x6c\x3e\x6d\x80"
7702 "\x9a\xea\x78\xaf\x19\xb2\x0d\x4d"
7703 "\xad\x04\x07\xae\x22\x90\x4a\x93"
7704 "\x32\x0e\x36\x9b\x1b\x46\xba\x3b"
7705 "\xb4\xac\xc6\xd1\xa2\x31\x53\x3b"
7706 "\x2a\x3d\x45\xfe\x03\x61\x10\x85"
7707 "\x17\x69\xa6\x78\xcc\x6c\x87\x49"
7708 "\x53\xf9\x80\x10\xde\x80\xa2\x41"
7709 "\x6a\xc3\x32\x02\xad\x6d\x3c\x56"
7710 "\x00\x71\x51\x06\xa7\xbd\xfb\xef"
7711 "\x3c\xb5\x9f\xfc\x48\x7d\x53\x7c"
7712 "\x66\xb0\x49\x23\xc4\x47\x10\x0e"
7713 "\xe5\x6c\x74\x13\xe6\xc5\x3f\xaa"
7714 "\xde\xff\x07\x44\xdd\x56\x1b\xad"
7715 "\x09\x77\xfb\x5b\x12\xb8\x0d\x38"
7716 "\x17\x37\x35\x7b\x9b\xbc\xfe\xd4"
7717 "\x7e\x8b\xda\x7e\x5b\x04\xa7\x22"
7718 "\xa7\x31\xa1\x20\x86\xc7\x1b\x99"
7719 "\xdb\xd1\x89\xf4\x94\xa3\x53\x69"
7720 "\x8d\xe7\xe8\x74\x11\x8d\x74\xd6"
7721 "\x07\x37\x91\x9f\xfd\x67\x50\x3a"
7722 "\xc9\xe1\xf4\x36\xd5\xa0\x47\xd1"
7723 "\xf9\xe5\x39\xa3\x31\xac\x07\x36"
7724 "\x23\xf8\x66\x18\x14\x28\x34\x0f"
7725 "\xb8\xd0\xe7\x29\xb3\x04\x4b\x55"
7726 "\x01\x41\xb2\x75\x8d\xcb\x96\x85"
7727 "\x3a\xfb\xab\x2b\x9e\xfa\x58\x20"
7728 "\x44\x1f\xc0\x14\x22\x75\x61\xe8"
7729 "\xaa\x19\xcf\xf1\x82\x56\xf4\xd7"
7730 "\x78\x7b\x3d\x5f\xb3\x9e\x0b\x8a"
7731 "\x57\x50\xdb\x17\x41\x65\x4d\xa3"
7732 "\x02\xc9\x9c\x9c\x53\xfb\x39\x39"
7733 "\x9b\x1d\x72\x24\xda\xb7\x39\xbe"
7734 "\x13\x3b\xfa\x29\xda\x9e\x54\x64"
7735 "\x6e\xba\xd8\xa1\xcb\xb3\x36\xfa"
7736 "\xcb\x47\x85\xe9\x61\x38\xbc\xbe"
7737 "\xc5\x00\x38\x2a\x54\xf7\xc4\xb9"
7738 "\xb3\xd3\x7b\xa0\xa0\xf8\x72\x7f"
7739 "\x8c\x8e\x82\x0e\xc6\x1c\x75\x9d"
7740 "\xca\x8e\x61\x87\xde\xad\x80\xd2"
7741 "\xf5\xf9\x80\xef\x15\x75\xaf\xf5"
7742 "\x80\xfb\xff\x6d\x1e\x25\xb7\x40"
7743 "\x61\x6a\x39\x5a\x6a\xb5\x31\xab"
7744 "\x97\x8a\x19\x89\x44\x40\xc0\xa6"
7745 "\xb4\x4e\x30\x32\x7b\x13\xe7\x67"
7746 "\xa9\x8b\x57\x04\xc2\x01\xa6\xf4"
7747 "\x28\x99\xad\x2c\x76\xa3\x78\xc2"
7748 "\x4a\xe6\xca\x5c\x50\x6a\xc1\xb0"
7749 "\x62\x4b\x10\x8e\x7c\x17\x43\xb3"
7750 "\x17\x66\x1c\x3e\x8d\x69\xf0\x5a"
7751 "\x71\xf5\x97\xdc\xd1\x45\xdd\x28"
7752 "\xf3\x5d\xdf\x53\x7b\x11\xe5\xbc"
7753 "\x4c\xdb\x1b\x51\x6b\xe9\xfb\x3d"
7754 "\xc1\xc3\x2c\xb9\x71\xf5\xb6\xb2"
7755 "\x13\x36\x79\x80\x53\xe8\xd3\xa6"
7756 "\x0a\xaf\xfd\x56\x97\xf7\x40\x8e"
7757 "\x45\xce\xf8\xb0\x9e\x5c\x33\x82"
7758 "\xb0\x44\x56\xfc\x05\x09\xe9\x2a"
7759 "\xac\x26\x80\x14\x1d\xc8\x3a\x35"
7760 "\x4c\x82\x97\xfd\x76\xb7\xa9\x0a"
7761 "\x35\x58\x79\x8e\x0f\x66\xea\xaf"
7762 "\x51\x6c\x09\xa9\x6e\x9b\xcb\x9a"
7763 "\x31\x47\xa0\x2f\x7c\x71\xb4\x4a"
7764 "\x11\xaa\x8c\x66\xc5\x64\xe6\x3a"
7765 "\x54\xda\x24\x6a\xc4\x41\x65\x46"
7766 "\x82\xa0\x0a\x0f\x5f\xfb\x25\xd0"
7767 "\x2c\x91\xa7\xee\xc4\x81\x07\x86"
7768 "\x75\x5e\x33\x69\x97\xe4\x2c\xa8"
7769 "\x9d\x9f\x0b\x6a\xbe\xad\x98\xda"
7770 "\x6d\x94\x41\xda\x2c\x1e\x89\xc4"
7771 "\xc2\xaf\x1e\x00\x05\x0b\x83\x60"
7772 "\xbd\x43\xea\x15\x23\x7f\xb9\xac"
7773 "\xee\x4f\x2c\xaf\x2a\xf3\xdf\xd0"
7774 "\xf3\x19\x31\xbb\x4a\x74\x84\x17"
7775 "\x52\x32\x2c\x7d\x61\xe4\xcb\xeb"
7776 "\x80\x38\x15\x52\xcb\x6f\xea\xe5"
7777 "\x73\x9c\xd9\x24\x69\xc6\x95\x32"
7778 "\x21\xc8\x11\xe4\xdc\x36\xd7\x93"
7779 "\x38\x66\xfb\xb2\x7f\x3a\xb9\xaf"
7780 "\x31\xdd\x93\x75\x78\x8a\x2c\x94"
7781 "\x87\x1a\x58\xec\x9e\x7d\x4d\xba"
7782 "\xe1\xe5\x4d\xfc\xbc\xa4\x2a\x14"
7783 "\xef\xcc\xa7\xec\xab\x43\x09\x18"
7784 "\xd3\xab\x68\xd1\x07\x99\x44\x47"
7785 "\xd6\x83\x85\x3b\x30\xea\xa9\x6b"
7786 "\x63\xea\xc4\x07\xfb\x43\x2f\xa4"
7787 "\xaa\xb0\xab\x03\x89\xce\x3f\x8c"
7788 "\x02\x7c\x86\x54\xbc\x88\xaf\x75"
7789 "\xd2\xdc\x63\x17\xd3\x26\xf6\x96"
7790 "\xa9\x3c\xf1\x61\x8c\x11\x18\xcc"
7791 "\xd6\xea\x5b\xe2\xcd\xf0\xf1\xb2"
7792 "\xe5\x35\x90\x1f\x85\x4c\x76\x5b"
7793 "\x66\xce\x44\xa4\x32\x9f\xe6\x7b"
7794 "\x71\x6e\x9f\x58\x15\x67\x72\x87"
7795 "\x64\x8e\x3a\x44\x45\xd4\x76\xfa"
7796 "\xc2\xf6\xef\x85\x05\x18\x7a\x9b"
7797 "\xba\x41\x54\xac\xf0\xfc\x59\x12"
7798 "\x3f\xdf\xa0\xe5\x8a\x65\xfd\x3a"
7799 "\x62\x8d\x83\x2c\x03\xbe\x05\x76"
7800 "\x2e\x53\x49\x97\x94\x33\xae\x40"
7801 "\x81\x15\xdb\x6e\xad\xaa\xf5\x4b"
7802 "\xe3\x98\x70\xdf\xe0\x7c\xcd\xdb"
7803 "\x02\xd4\x7d\x2f\xc1\xe6\xb4\xf3"
7804 "\xd7\x0d\x7a\xd9\x23\x9e\x87\x2d"
7805 "\xce\x87\xad\xcc\x72\x05\x00\x29"
7806 "\xdc\x73\x7f\x64\xc1\x15\x0e\xc2"
7807 "\xdf\xa7\x5f\xeb\x41\xa1\xcd\xef"
7808 "\x5c\x50\x79\x2a\x56\x56\x71\x8c"
7809 "\xac\xc0\x79\x50\x69\xca\x59\x32"
7810 "\x65\xf2\x54\xe4\x52\x38\x76\xd1"
7811 "\x5e\xde\x26\x9e\xfb\x75\x2e\x11"
7812 "\xb5\x10\xf4\x17\x73\xf5\x89\xc7"
7813 "\x4f\x43\x5c\x8e\x7c\xb9\x05\x52"
7814 "\x24\x40\x99\xfe\x9b\x85\x0b\x6c"
7815 "\x22\x3e\x8b\xae\x86\xa1\xd2\x79"
7816 "\x05\x68\x6b\xab\xe3\x41\x49\xed"
7817 "\x15\xa1\x8d\x40\x2d\x61\xdf\x1a"
7818 "\x59\xc9\x26\x8b\xef\x30\x4c\x88"
7819 "\x4b\x10\xf8\x8d\xa6\x92\x9f\x4b"
7820 "\xf3\xc4\x53\x0b\x89\x5d\x28\x92"
7821 "\xcf\x78\xb2\xc0\x5d\xed\x7e\xfc"
7822 "\xc0\x12\x23\x5f\x5a\x78\x86\x43"
7823 "\x6e\x27\xf7\x5a\xa7\x6a\xed\x19"
7824 "\x04\xf0\xb3\x12\xd1\xbd\x0e\x89"
7825 "\x6e\xbc\x96\xa8\xd8\x49\x39\x9f"
7826 "\x7e\x67\xf0\x2e\x3e\x01\xa9\xba"
7827 "\xec\x8b\x62\x8e\xcb\x4a\x70\x43"
7828 "\xc7\xc2\xc4\xca\x82\x03\x73\xe9"
7829 "\x11\xdf\xcf\x54\xea\xc9\xb0\x95"
7830 "\x51\xc0\x13\x3d\x92\x05\xfa\xf4"
7831 "\xa9\x34\xc8\xce\x6c\x3d\x54\xcc"
7832 "\xc4\xaf\xf1\xdc\x11\x44\x26\xa2"
7833 "\xaf\xf1\x85\x75\x7d\x03\x61\x68"
7834 "\x4e\x78\xc6\x92\x7d\x86\x7d\x77"
7835 "\xdc\x71\x72\xdb\xc6\xae\xa1\xcb"
7836 "\x70\x9a\x0b\x19\xbe\x4a\x6c\x2a"
7837 "\xe2\xba\x6c\x64\x9a\x13\x28\xdf"
7838 "\x85\x75\xe6\x43\xf6\x87\x08\x68"
7839 "\x6e\xba\x6e\x79\x9f\x04\xbc\x23"
7840 "\x50\xf6\x33\x5c\x1f\x24\x25\xbe"
7841 "\x33\x47\x80\x45\x56\xa3\xa7\xd7"
7842 "\x7a\xb1\x34\x0b\x90\x3c\x9c\xad"
7843 "\x44\x5f\x9e\x0e\x9d\xd4\xbd\x93"
7844 "\x5e\xfa\x3c\xe0\xb0\xd9\xed\xf3"
7845 "\xd6\x2e\xff\x24\xd8\x71\x6c\xed"
7846 "\xaf\x55\xeb\x22\xac\x93\x68\x32"
7847 "\x05\x5b\x47\xdd\xc6\x4a\xcb\xc7"
7848 "\x10\xe1\x3c\x92\x1a\xf3\x23\x78"
7849 "\x2b\xa1\xd2\x80\xf4\x12\xb1\x20"
7850 "\x8f\xff\x26\x35\xdd\xfb\xc7\x4e"
7851 "\x78\xf1\x2d\x50\x12\x77\xa8\x60"
7852 "\x7c\x0f\xf5\x16\x2f\x63\x70\x2a"
7853 "\xc0\x96\x80\x4e\x0a\xb4\x93\x35"
7854 "\x5d\x1d\x3f\x56\xf7\x2f\xbb\x90"
7855 "\x11\x16\x8f\xa2\xec\x47\xbe\xac"
7856 "\x56\x01\x26\x56\xb1\x8c\xb2\x10"
7857 "\xf9\x1a\xca\xf5\xd1\xb7\x39\x20"
7858 "\x63\xf1\x69\x20\x4f\x13\x12\x1f"
7859 "\x5b\x65\xfc\x98\xf7\xc4\x7a\xbe"
7860 "\xf7\x26\x4d\x2b\x84\x7b\x42\xad"
7861 "\xd8\x7a\x0a\xb4\xd8\x74\xbf\xc1"
7862 "\xf0\x6e\xb4\x29\xa3\xbb\xca\x46"
7863 "\x67\x70\x6a\x2d\xce\x0e\xa2\x8a"
7864 "\xa9\x87\xbf\x05\xc4\xc1\x04\xa3"
7865 "\xab\xd4\x45\x43\x8c\xb6\x02\xb0"
7866 "\x41\xc8\xfc\x44\x3d\x59\xaa\x2e"
7867 "\x44\x21\x2a\x8d\x88\x9d\x57\xf4"
7868 "\xa0\x02\x77\xb8\xa6\xa0\xe6\x75"
7869 "\x5c\x82\x65\x3e\x03\x5c\x29\x8f"
7870 "\x38\x55\xab\x33\x26\xef\x9f\x43"
7871 "\x52\xfd\x68\xaf\x36\xb4\xbb\x9a"
7872 "\x58\x09\x09\x1b\xc3\x65\x46\x46"
7873 "\x1d\xa7\x94\x18\x23\x50\x2c\xca"
7874 "\x2c\x55\x19\x97\x01\x9d\x93\x3b"
7875 "\x63\x86\xf2\x03\x67\x45\xd2\x72"
7876 "\x28\x52\x6c\xf4\xe3\x1c\xb5\x11"
7877 "\x13\xf1\xeb\x21\xc7\xd9\x56\x82"
7878 "\x2b\x82\x39\xbd\x69\x54\xed\x62"
7879 "\xc3\xe2\xde\x73\xd4\x6a\x12\xae"
7880 "\x13\x21\x7f\x4b\x5b\xfc\xbf\xe8"
7881 "\x2b\xbe\x56\xba\x68\x8b\x9a\xb1"
7882 "\x6e\xfa\xbf\x7e\x5a\x4b\xf1\xac"
7883 "\x98\x65\x85\xd1\x93\x53\xd3\x7b"
7884 "\x09\xdd\x4b\x10\x6d\x84\xb0\x13"
7885 "\x65\xbd\xcf\x52\x09\xc4\x85\xe2"
7886 "\x84\x74\x15\x65\xb7\xf7\x51\xaf"
7887 "\x55\xad\xa4\xd1\x22\x54\x70\x94"
7888 "\xa0\x1c\x90\x41\xfd\x99\xd7\x5a"
7889 "\x31\xef\xaa\x25\xd0\x7f\x4f\xea"
7890 "\x1d\x55\x42\xe5\x49\xb0\xd0\x46"
7891 "\x62\x36\x43\xb2\x82\x15\x75\x50"
7892 "\xa4\x72\xeb\x54\x27\x1f\x8a\xe4"
7893 "\x7d\xe9\x66\xc5\xf1\x53\xa4\xd1"
7894 "\x0c\xeb\xb8\xf8\xbc\xd4\xe2\xe7"
7895 "\xe1\xf8\x4b\xcb\xa9\xa1\xaf\x15"
7896 "\x83\xcb\x72\xd0\x33\x79\x00\x2d"
7897 "\x9f\xd7\xf1\x2e\x1e\x10\xe4\x45"
7898 "\xc0\x75\x3a\x39\xea\x68\xf7\x5d"
7899 "\x1b\x73\x8f\xe9\x8e\x0f\x72\x47"
7900 "\xae\x35\x0a\x31\x7a\x14\x4d\x4a"
7901 "\x6f\x47\xf7\x7e\x91\x6e\x74\x8b"
7902 "\x26\x47\xf9\xc3\xf9\xde\x70\xf5"
7903 "\x61\xab\xa9\x27\x9f\x82\xe4\x9c"
7904 "\x89\x91\x3f\x2e\x6a\xfd\xb5\x49"
7905 "\xe9\xfd\x59\x14\x36\x49\x40\x6d"
7906 "\x32\xd8\x85\x42\xf3\xa5\xdf\x0c"
7907 "\xa8\x27\xd7\x54\xe2\x63\x2f\xf2"
7908 "\x7e\x8b\x8b\xe7\xf1\x9a\x95\x35"
7909 "\x43\xdc\x3a\xe4\xb6\xf4\xd0\xdf"
7910 "\x9c\xcb\x94\xf3\x21\xa0\x77\x50"
7911 "\xe2\xc6\xc4\xc6\x5f\x09\x64\x5b"
7912 "\x92\x90\xd8\xe1\xd1\xed\x4b\x42"
7913 "\xd7\x37\xaf\x65\x3d\x11\x39\xb6"
7914 "\x24\x8a\x60\xae\xd6\x1e\xbf\x0e"
7915 "\x0d\xd7\xdc\x96\x0e\x65\x75\x4e"
7916 "\x29\x06\x9d\xa4\x51\x3a\x10\x63"
7917 "\x8f\x17\x07\xd5\x8e\x3c\xf4\x28"
7918 "\x00\x5a\x5b\x05\x19\xd8\xc0\x6c"
7919 "\xe5\x15\xe4\x9c\x9d\x71\x9d\x5e"
7920 "\x94\x29\x1a\xa7\x80\xfa\x0e\x33"
7921 "\x03\xdd\xb7\x3e\x9a\xa9\x26\x18"
7922 "\x37\xa9\x64\x08\x4d\x94\x5a\x88"
7923 "\xca\x35\xce\x81\x02\xe3\x1f\x1b"
7924 "\x89\x1a\x77\x85\xe3\x41\x6d\x32"
7925 "\x42\x19\x23\x7d\xc8\x73\xee\x25"
7926 "\x85\x0d\xf8\x31\x25\x79\x1b\x6f"
7927 "\x79\x25\xd2\xd8\xd4\x23\xfd\xf7"
7928 "\x82\x36\x6a\x0c\x46\x22\x15\xe9"
7929 "\xff\x72\x41\x91\x91\x7d\x3a\xb7"
7930 "\xdd\x65\x99\x70\xf6\x8d\x84\xf8"
7931 "\x67\x15\x20\x11\xd6\xb2\x55\x7b"
7932 "\xdb\x87\xee\xef\x55\x89\x2a\x59"
7933 "\x2b\x07\x8f\x43\x8a\x59\x3c\x01"
7934 "\x8b\x65\x54\xa1\x66\xd5\x38\xbd"
7935 "\xc6\x30\xa9\xcc\x49\xb6\xa8\x1b"
7936 "\xb8\xc0\x0e\xe3\x45\x28\xe2\xff"
7937 "\x41\x9f\x7e\x7c\xd1\xae\x9e\x25"
7938 "\x3f\x4c\x7c\x7c\xf4\xa8\x26\x4d"
7939 "\x5c\xfd\x4b\x27\x18\xf9\x61\x76"
7940 "\x48\xba\x0c\x6b\xa9\x4d\xfc\xf5"
7941 "\x3b\x35\x7e\x2f\x4a\xa9\xc2\x9a"
7942 "\xae\xab\x86\x09\x89\xc9\xc2\x40"
7943 "\x39\x2c\x81\xb3\xb8\x17\x67\xc2"
7944 "\x0d\x32\x4a\x3a\x67\x81\xd7\x1a"
7945 "\x34\x52\xc5\xdb\x0a\xf5\x63\x39"
7946 "\xea\x1f\xe1\x7c\xa1\x9e\xc1\x35"
7947 "\xe3\xb1\x18\x45\x67\xf9\x22\x38"
7948 "\x95\xd9\x34\x34\x86\xc6\x41\x94"
7949 "\x15\xf9\x5b\x41\xa6\x87\x8b\xf8"
7950 "\xd5\xe1\x1b\xe2\x5b\xf3\x86\x10"
7951 "\xff\xe6\xae\x69\x76\xbc\x0d\xb4"
7952 "\x09\x90\x0c\xa2\x65\x0c\xad\x74"
7953 "\xf5\xd7\xff\xda\xc1\xce\x85\xbe"
7954 "\x00\xa7\xff\x4d\x2f\x65\xd3\x8c"
7955 "\x86\x2d\x05\xe8\xed\x3e\x6b\x8b"
7956 "\x0f\x3d\x83\x8c\xf1\x1d\x5b\x96"
7957 "\x2e\xb1\x9c\xc2\x98\xe1\x70\xb9"
7958 "\xba\x5c\x8a\x43\xd6\x34\xa7\x2d"
7959 "\xc9\x92\xae\xf2\xa5\x7b\x05\x49"
7960 "\xa7\x33\x34\x86\xca\xe4\x96\x23"
7961 "\x76\x5b\xf2\xc6\xf1\x51\x28\x42"
7962 "\x7b\xcc\x76\x8f\xfa\xa2\xad\x31"
7963 "\xd4\xd6\x7a\x6d\x25\x25\x54\xe4"
7964 "\x3f\x50\x59\xe1\x5c\x05\xb7\x27"
7965 "\x48\xbf\x07\xec\x1b\x13\xbe\x2b"
7966 "\xa1\x57\x2b\xd5\xab\xd7\xd0\x4c"
7967 "\x1e\xcb\x71\x9b\xc5\x90\x85\xd3"
7968 "\xde\x59\xec\x71\xeb\x89\xbb\xd0"
7969 "\x09\x50\xe1\x16\x3f\xfd\x1c\x34"
7970 "\xc3\x1c\xa1\x10\x77\x53\x98\xef"
7971 "\xf2\xfd\xa5\x01\x59\xc2\x9b\x26"
7972 "\xc7\x42\xd9\x49\xda\x58\x2b\x6e"
7973 "\x9f\x53\x19\x76\x7e\xd9\xc9\x0e"
7974 "\x68\xc8\x7f\x51\x22\x42\xef\x49"
7975 "\xa4\x55\xb6\x36\xac\x09\xc7\x31"
7976 "\x88\x15\x4b\x2e\x8f\x3a\x08\xf7"
7977 "\xd8\xf7\xa8\xc5\xa9\x33\xa6\x45"
7978 "\xe4\xc4\x94\x76\xf3\x0d\x8f\x7e"
7979 "\xc8\xf6\xbc\x23\x0a\xb6\x4c\xd3"
7980 "\x6a\xcd\x36\xc2\x90\x5c\x5c\x3c"
7981 "\x65\x7b\xc2\xd6\xcc\xe6\x0d\x87"
7982 "\x73\x2e\x71\x79\x16\x06\x63\x28"
7983 "\x09\x15\xd8\x89\x38\x38\x3d\xb5"
7984 "\x42\x1c\x08\x24\xf7\x2a\xd2\x9d"
7985 "\xc8\xca\xef\xf9\x27\xd8\x07\x86"
7986 "\xf7\x43\x0b\x55\x15\x3f\x9f\x83"
7987 "\xef\xdc\x49\x9d\x2a\xc1\x54\x62"
7988 "\xbd\x9b\x66\x55\x9f\xb7\x12\xf3"
7989 "\x1b\x4d\x9d\x2a\x5c\xed\x87\x75"
7990 "\x87\x26\xec\x61\x2c\xb4\x0f\x89"
7991 "\xb0\xfb\x2e\x68\x5d\x15\xc7\x8d"
7992 "\x2e\xc0\xd9\xec\xaf\x4f\xd2\x25"
7993 "\x29\xe8\xd2\x26\x2b\x67\xe9\xfc"
7994 "\x2b\xa8\x67\x96\x12\x1f\x5b\x96"
7995 "\xc6\x14\x53\xaf\x44\xea\xd6\xe2"
7996 "\x94\x98\xe4\x12\x93\x4c\x92\xe0"
7997 "\x18\xa5\x8d\x2d\xe4\x71\x3c\x47"
7998 "\x4c\xf7\xe6\x47\x9e\xc0\x68\xdf"
7999 "\xd4\xf5\x5a\x74\xb1\x2b\x29\x03"
8000 "\x19\x07\xaf\x90\x62\x5c\x68\x98"
8001 "\x48\x16\x11\x02\x9d\xee\xb4\x9b"
8002 "\xe5\x42\x7f\x08\xfd\x16\x32\x0b"
8003 "\xd0\xb3\xfa\x2b\xb7\x99\xf9\x29"
8004 "\xcd\x20\x45\x9f\xb3\x1a\x5d\xa2"
8005 "\xaf\x4d\xe0\xbd\x42\x0d\xbc\x74"
8006 "\x99\x9c\x8e\x53\x1a\xb4\x3e\xbd"
8007 "\xa2\x9a\x2d\xf7\xf8\x39\x0f\x67"
8008 "\x63\xfc\x6b\xc0\xaf\xb3\x4b\x4f"
8009 "\x55\xc4\xcf\xa7\xc8\x04\x11\x3e"
8010 "\x14\x32\xbb\x1b\x38\x77\xd6\x7f"
8011 "\x54\x4c\xdf\x75\xf3\x07\x2d\x33"
8012 "\x9b\xa8\x20\xe1\x7b\x12\xb5\xf3"
8013 "\xef\x2f\xce\x72\xe5\x24\x60\xc1"
8014 "\x30\xe2\xab\xa1\x8e\x11\x09\xa8"
8015 "\x21\x33\x44\xfe\x7f\x35\x32\x93"
8016 "\x39\xa7\xad\x8b\x79\x06\xb2\xcb"
8017 "\x4e\xa9\x5f\xc7\xba\x74\x29\xec"
8018 "\x93\xa0\x4e\x54\x93\xc0\xbc\x55"
8019 "\x64\xf0\x48\xe5\x57\x99\xee\x75"
8020 "\xd6\x79\x0f\x66\xb7\xc6\x57\x76"
8021 "\xf7\xb7\xf3\x9c\xc5\x60\xe8\x7f"
8022 "\x83\x76\xd6\x0e\xaa\xe6\x90\x39"
8023 "\x1d\xa6\x32\x6a\x34\xe3\x55\xf8"
8024 "\x58\xa0\x58\x7d\x33\xe0\x22\x39"
8025 "\x44\x64\x87\x86\x5a\x2f\xa7\x7e"
8026 "\x0f\x38\xea\xb0\x30\xcc\x61\xa5"
8027 "\x6a\x32\xae\x1e\xf7\xe9\xd0\xa9"
8028 "\x0c\x32\x4b\xb5\x49\x28\xab\x85"
8029 "\x2f\x8e\x01\x36\x38\x52\xd0\xba"
8030 "\xd6\x02\x78\xf8\x0e\x3e\x9c\x8b"
8031 "\x6b\x45\x99\x3f\x5c\xfe\x58\xf1"
8032 "\x5c\x94\x04\xe1\xf5\x18\x6d\x51"
8033 "\xb2\x5d\x18\x20\xb6\xc2\x9a\x42"
8034 "\x1d\xb3\xab\x3c\xb6\x3a\x13\x03"
8035 "\xb2\x46\x82\x4f\xfc\x64\xbc\x4f"
8036 "\xca\xfa\x9c\xc0\xd5\xa7\xbd\x11"
8037 "\xb7\xe4\x5a\xf6\x6f\x4d\x4d\x54"
8038 "\xea\xa4\x98\x66\xd4\x22\x3b\xd3"
8039 "\x8f\x34\x47\xd9\x7c\xf4\x72\x3b"
8040 "\x4d\x02\x77\xf6\xd6\xdd\x08\x0a"
8041 "\x81\xe1\x86\x89\x3e\x56\x10\x3c"
8042 "\xba\xd7\x81\x8c\x08\xbc\x8b\xe2"
8043 "\x53\xec\xa7\x89\xee\xc8\x56\xb5"
8044 "\x36\x2c\xb2\x03\xba\x99\xdd\x7c"
8045 "\x48\xa0\xb0\xbc\x91\x33\xe9\xa8"
8046 "\xcb\xcd\xcf\x59\x5f\x1f\x15\xe2"
8047 "\x56\xf5\x4e\x01\x35\x27\x45\x77"
8048 "\x47\xc8\xbc\xcb\x7e\x39\xc1\x97"
8049 "\x28\xd3\x84\xfc\x2c\x3e\xc8\xad"
8050 "\x9c\xf8\x8a\x61\x9c\x28\xaa\xc5"
8051 "\x99\x20\x43\x85\x9d\xa5\xe2\x8b"
8052 "\xb8\xae\xeb\xd0\x32\x0d\x52\x78"
8053 "\x09\x56\x3f\xc7\xd8\x7e\x26\xfc"
8054 "\x37\xfb\x6f\x04\xfc\xfa\x92\x10"
8055 "\xac\xf8\x3e\x21\xdc\x8c\x21\x16"
8056 "\x7d\x67\x6e\xf6\xcd\xda\xb6\x98"
8057 "\x23\xab\x23\x3c\xb2\x10\xa0\x53"
8058 "\x5a\x56\x9f\xc5\xd0\xff\xbb\xe4"
8059 "\x98\x3c\x69\x1e\xdb\x38\x8f\x7e"
8060 "\x0f\xd2\x98\x88\x81\x8b\x45\x67"
8061 "\xea\x33\xf1\xeb\xe9\x97\x55\x2e"
8062 "\xd9\xaa\xeb\x5a\xec\xda\xe1\x68"
8063 "\xa8\x9d\x3c\x84\x7c\x05\x3d\x62"
8064 "\x87\x8f\x03\x21\x28\x95\x0c\x89"
8065 "\x25\x22\x4a\xb0\x93\xa9\x50\xa2"
8066 "\x2f\x57\x6e\x18\x42\x19\x54\x0c"
8067 "\x55\x67\xc6\x11\x49\xf4\x5c\xd2"
8068 "\xe9\x3d\xdd\x8b\x48\x71\x21\x00"
8069 "\xc3\x9a\x6c\x85\x74\x28\x83\x4a"
8070 "\x1b\x31\x05\xe1\x06\x92\xe7\xda"
8071 "\x85\x73\x78\x45\x20\x7f\xae\x13"
8072 "\x7c\x33\x06\x22\xf4\x83\xf9\x35"
8073 "\x3f\x6c\x71\xa8\x4e\x48\xbe\x9b"
8074 "\xce\x8a\xba\xda\xbe\x28\x08\xf7"
8075 "\xe2\x14\x8c\x71\xea\x72\xf9\x33"
8076 "\xf2\x88\x3f\xd7\xbb\x69\x6c\x29"
8077 "\x19\xdc\x84\xce\x1f\x12\x4f\xc8"
8078 "\xaf\xa5\x04\xba\x5a\xab\xb0\xd9"
8079 "\x14\x1f\x6c\x68\x98\x39\x89\x7a"
8080 "\xd9\xd8\x2f\xdf\xa8\x47\x4a\x25"
8081 "\xe2\xfb\x33\xf4\x59\x78\xe1\x68"
8082 "\x85\xcf\xfe\x59\x20\xd4\x05\x1d"
8083 "\x80\x99\xae\xbc\xca\xae\x0f\x2f"
8084 "\x65\x43\x34\x8e\x7e\xac\xd3\x93"
8085 "\x2f\xac\x6d\x14\x3d\x02\x07\x70"
8086 "\x9d\xa4\xf3\x1b\x5c\x36\xfc\x01"
8087 "\x73\x34\x85\x0c\x6c\xd6\xf1\xbd"
8088 "\x3f\xdf\xee\xf5\xd9\xba\x56\xef"
8089 "\xf4\x9b\x6b\xee\x9f\x5a\x78\x6d"
8090 "\x32\x19\xf4\xf7\xf8\x4c\x69\x0b"
8091 "\x4b\xbc\xbb\xb7\xf2\x85\xaf\x70"
8092 "\x75\x24\x6c\x54\xa7\x0e\x4d\x1d"
8093 "\x01\xbf\x08\xac\xcf\x7f\x2c\xe3"
8094 "\x14\x89\x5e\x70\x5a\x99\x92\xcd"
8095 "\x01\x84\xc8\xd2\xab\xe5\x4f\x58"
8096 "\xe7\x0f\x2f\x0e\xff\x68\xea\xfd"
8097 "\x15\xb3\x17\xe6\xb0\xe7\x85\xd8"
8098 "\x23\x2e\x05\xc7\xc9\xc4\x46\x1f"
8099 "\xe1\x9e\x49\x20\x23\x24\x4d\x7e"
8100 "\x29\x65\xff\xf4\xb6\xfd\x1a\x85"
8101 "\xc4\x16\xec\xfc\xea\x7b\xd6\x2c"
8102 "\x43\xf8\xb7\xbf\x79\xc0\x85\xcd"
8103 "\xef\xe1\x98\xd3\xa5\xf7\x90\x8c"
8104 "\xe9\x7f\x80\x6b\xd2\xac\x4c\x30"
8105 "\xa7\xc6\x61\x6c\xd2\xf9\x2c\xff"
8106 "\x30\xbc\x22\x81\x7d\x93\x12\xe4"
8107 "\x0a\xcd\xaf\xdd\xe8\xab\x0a\x1e"
8108 "\x13\xa4\x27\xc3\x5f\xf7\x4b\xbb"
8109 "\x37\x09\x4b\x91\x6f\x92\x4f\xaf"
8110 "\x52\xee\xdf\xef\x09\x6f\xf7\x5c"
8111 "\x6e\x12\x17\x72\x63\x57\xc7\xba"
8112 "\x3b\x6b\x38\x32\x73\x1b\x9c\x80"
8113 "\xc1\x7a\xc6\xcf\xcd\x35\xc0\x6b"
8114 "\x31\x1a\x6b\xe9\xd8\x2c\x29\x3f"
8115 "\x96\xfb\xb6\xcd\x13\x91\x3b\xc2"
8116 "\xd2\xa3\x31\x8d\xa4\xcd\x57\xcd"
8117 "\x13\x3d\x64\xfd\x06\xce\xe6\xdc"
8118 "\x0c\x24\x43\x31\x40\x57\xf1\x72"
8119 "\x17\xe3\x3a\x63\x6d\x35\xcf\x5d"
8120 "\x97\x40\x59\xdd\xf7\x3c\x02\xf7"
8121 "\x1c\x7e\x05\xbb\xa9\x0d\x01\xb1"
8122 "\x8e\xc0\x30\xa9\x53\x24\xc9\x89"
8123 "\x84\x6d\xaa\xd0\xcd\x91\xc2\x4d"
8124 "\x91\xb0\x89\xe2\xbf\x83\x44\xaa"
8125 "\x28\x72\x23\xa0\xc2\xad\xad\x1c"
8126 "\xfc\x3f\x09\x7a\x0b\xdc\xc5\x1b"
8127 "\x87\x13\xc6\x5b\x59\x8d\xf2\xc8"
8128 "\xaf\xdf\x11\x95",
8bff664c
TSH
8129 .rlen = 4100,
8130 },
e2ee95b8
HSC
8131};
8132
76cb9521
KC
8133/*
8134 * CTS (Cipher Text Stealing) mode tests
8135 */
8136#define CTS_MODE_ENC_TEST_VECTORS 6
8137#define CTS_MODE_DEC_TEST_VECTORS 6
8138static struct cipher_testvec cts_mode_enc_tv_template[] = {
8139 { /* from rfc3962 */
8140 .klen = 16,
8141 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8142 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8143 .ilen = 17,
8144 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8145 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8146 "\x20",
8147 .rlen = 17,
8148 .result = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
8149 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
8150 "\x97",
8151 }, {
8152 .klen = 16,
8153 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8154 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8155 .ilen = 31,
8156 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8157 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8158 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8159 "\x20\x47\x61\x75\x27\x73\x20",
8160 .rlen = 31,
8161 .result = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
8162 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
8163 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8164 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
8165 }, {
8166 .klen = 16,
8167 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8168 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8169 .ilen = 32,
8170 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8171 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8172 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8173 "\x20\x47\x61\x75\x27\x73\x20\x43",
8174 .rlen = 32,
8175 .result = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8176 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8177 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8178 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
8179 }, {
8180 .klen = 16,
8181 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8182 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8183 .ilen = 47,
8184 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8185 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8186 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8187 "\x20\x47\x61\x75\x27\x73\x20\x43"
8188 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8189 "\x70\x6c\x65\x61\x73\x65\x2c",
8190 .rlen = 47,
8191 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8192 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8193 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
8194 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
8195 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8196 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
8197 }, {
8198 .klen = 16,
8199 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8200 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8201 .ilen = 48,
8202 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8203 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8204 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8205 "\x20\x47\x61\x75\x27\x73\x20\x43"
8206 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8207 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
8208 .rlen = 48,
8209 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8210 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8211 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8212 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
8213 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8214 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
8215 }, {
8216 .klen = 16,
8217 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8218 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8219 .ilen = 64,
8220 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8221 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8222 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8223 "\x20\x47\x61\x75\x27\x73\x20\x43"
8224 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8225 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
8226 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
8227 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
8228 .rlen = 64,
8229 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8230 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8231 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8232 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8233 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
8234 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
8235 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8236 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
8237 }
8238};
8239
8240static struct cipher_testvec cts_mode_dec_tv_template[] = {
8241 { /* from rfc3962 */
8242 .klen = 16,
8243 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8244 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8245 .rlen = 17,
8246 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8247 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8248 "\x20",
8249 .ilen = 17,
8250 .input = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
8251 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
8252 "\x97",
8253 }, {
8254 .klen = 16,
8255 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8256 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8257 .rlen = 31,
8258 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8259 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8260 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8261 "\x20\x47\x61\x75\x27\x73\x20",
8262 .ilen = 31,
8263 .input = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
8264 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
8265 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8266 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
8267 }, {
8268 .klen = 16,
8269 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8270 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8271 .rlen = 32,
8272 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8273 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8274 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8275 "\x20\x47\x61\x75\x27\x73\x20\x43",
8276 .ilen = 32,
8277 .input = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8278 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8279 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8280 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
8281 }, {
8282 .klen = 16,
8283 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8284 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8285 .rlen = 47,
8286 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8287 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8288 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8289 "\x20\x47\x61\x75\x27\x73\x20\x43"
8290 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8291 "\x70\x6c\x65\x61\x73\x65\x2c",
8292 .ilen = 47,
8293 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8294 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8295 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
8296 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
8297 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8298 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
8299 }, {
8300 .klen = 16,
8301 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8302 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8303 .rlen = 48,
8304 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8305 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8306 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8307 "\x20\x47\x61\x75\x27\x73\x20\x43"
8308 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8309 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
8310 .ilen = 48,
8311 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8312 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8313 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8314 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
8315 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8316 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
8317 }, {
8318 .klen = 16,
8319 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8320 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8321 .rlen = 64,
8322 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8323 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8324 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8325 "\x20\x47\x61\x75\x27\x73\x20\x43"
8326 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8327 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
8328 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
8329 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
8330 .ilen = 64,
8331 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8332 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8333 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8334 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8335 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
8336 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
8337 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8338 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
8339 }
8340};
8341
1da177e4
LT
8342/*
8343 * Compression stuff.
8344 */
8345#define COMP_BUF_SIZE 512
8346
8347struct comp_testvec {
8348 int inlen, outlen;
8349 char input[COMP_BUF_SIZE];
8350 char output[COMP_BUF_SIZE];
8351};
8352
8353/*
8354 * Deflate test vectors (null-terminated strings).
8355 * Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
8356 */
8357#define DEFLATE_COMP_TEST_VECTORS 2
8358#define DEFLATE_DECOMP_TEST_VECTORS 2
8359
8360static struct comp_testvec deflate_comp_tv_template[] = {
8361 {
8362 .inlen = 70,
8363 .outlen = 38,
de224c30
SS
8364 .input = "Join us now and share the software "
8365 "Join us now and share the software ",
8366 .output = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
8367 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
8368 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
8369 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
8370 "\x71\xbc\x08\x2b\x01\x00",
1da177e4
LT
8371 }, {
8372 .inlen = 191,
8373 .outlen = 122,
8374 .input = "This document describes a compression method based on the DEFLATE"
de224c30
SS
8375 "compression algorithm. This document defines the application of "
8376 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
8377 .output = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
8378 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
8379 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
8380 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
8381 "\x68\x12\x51\xae\x76\x67\xd6\x27"
8382 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
8383 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
8384 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
8385 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
8386 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
8387 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
8388 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
8389 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
8390 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
8391 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
8392 "\xfa\x02",
1da177e4
LT
8393 },
8394};
8395
8396static struct comp_testvec deflate_decomp_tv_template[] = {
8397 {
8398 .inlen = 122,
8399 .outlen = 191,
de224c30
SS
8400 .input = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
8401 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
8402 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
8403 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
8404 "\x68\x12\x51\xae\x76\x67\xd6\x27"
8405 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
8406 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
8407 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
8408 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
8409 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
8410 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
8411 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
8412 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
8413 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
8414 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
8415 "\xfa\x02",
1da177e4 8416 .output = "This document describes a compression method based on the DEFLATE"
de224c30
SS
8417 "compression algorithm. This document defines the application of "
8418 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
1da177e4
LT
8419 }, {
8420 .inlen = 38,
8421 .outlen = 70,
de224c30
SS
8422 .input = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
8423 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
8424 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
8425 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
8426 "\x71\xbc\x08\x2b\x01\x00",
1da177e4 8427 .output = "Join us now and share the software "
de224c30 8428 "Join us now and share the software ",
1da177e4
LT
8429 },
8430};
8431
0b77abb3
ZS
8432/*
8433 * LZO test vectors (null-terminated strings).
8434 */
8435#define LZO_COMP_TEST_VECTORS 2
8436#define LZO_DECOMP_TEST_VECTORS 2
8437
8438static struct comp_testvec lzo_comp_tv_template[] = {
8439 {
8440 .inlen = 70,
8441 .outlen = 46,
8442 .input = "Join us now and share the software "
de224c30
SS
8443 "Join us now and share the software ",
8444 .output = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
8445 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
8446 "\x64\x20\x73\x68\x61\x72\x65\x20"
8447 "\x74\x68\x65\x20\x73\x6f\x66\x74"
8448 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8449 "\x3d\x88\x00\x11\x00\x00",
0b77abb3
ZS
8450 }, {
8451 .inlen = 159,
8452 .outlen = 133,
8453 .input = "This document describes a compression method based on the LZO "
de224c30
SS
8454 "compression algorithm. This document defines the application of "
8455 "the LZO algorithm used in UBIFS.",
8456 .output = "\x00\x2b\x54\x68\x69\x73\x20\x64"
8457 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
8458 "\x64\x65\x73\x63\x72\x69\x62\x65"
8459 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
8460 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
8461 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
8462 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
8463 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
8464 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
8465 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
8466 "\x68\x69\x73\x2a\x54\x01\x02\x66"
8467 "\x69\x6e\x65\x73\x94\x06\x05\x61"
8468 "\x70\x70\x6c\x69\x63\x61\x74\x76"
8469 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
8470 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
8471 "\x20\x69\x6e\x20\x55\x42\x49\x46"
8472 "\x53\x2e\x11\x00\x00",
0b77abb3
ZS
8473 },
8474};
8475
8476static struct comp_testvec lzo_decomp_tv_template[] = {
8477 {
8478 .inlen = 133,
8479 .outlen = 159,
de224c30
SS
8480 .input = "\x00\x2b\x54\x68\x69\x73\x20\x64"
8481 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
8482 "\x64\x65\x73\x63\x72\x69\x62\x65"
8483 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
8484 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
8485 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
8486 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
8487 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
8488 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
8489 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
8490 "\x68\x69\x73\x2a\x54\x01\x02\x66"
8491 "\x69\x6e\x65\x73\x94\x06\x05\x61"
8492 "\x70\x70\x6c\x69\x63\x61\x74\x76"
8493 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
8494 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
8495 "\x20\x69\x6e\x20\x55\x42\x49\x46"
8496 "\x53\x2e\x11\x00\x00",
0b77abb3 8497 .output = "This document describes a compression method based on the LZO "
de224c30
SS
8498 "compression algorithm. This document defines the application of "
8499 "the LZO algorithm used in UBIFS.",
0b77abb3
ZS
8500 }, {
8501 .inlen = 46,
8502 .outlen = 70,
de224c30
SS
8503 .input = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
8504 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
8505 "\x64\x20\x73\x68\x61\x72\x65\x20"
8506 "\x74\x68\x65\x20\x73\x6f\x66\x74"
8507 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8508 "\x3d\x88\x00\x11\x00\x00",
0b77abb3 8509 .output = "Join us now and share the software "
de224c30 8510 "Join us now and share the software ",
0b77abb3
ZS
8511 },
8512};
8513
1da177e4
LT
8514/*
8515 * Michael MIC test vectors from IEEE 802.11i
8516 */
8517#define MICHAEL_MIC_TEST_VECTORS 6
8518
ef2736fc 8519static struct hash_testvec michael_mic_tv_template[] = {
1da177e4 8520 {
de224c30 8521 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 8522 .ksize = 8,
de224c30 8523 .plaintext = zeroed_string,
1da177e4 8524 .psize = 0,
de224c30 8525 .digest = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
1da177e4
LT
8526 },
8527 {
de224c30 8528 .key = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
1da177e4 8529 .ksize = 8,
de224c30 8530 .plaintext = "M",
1da177e4 8531 .psize = 1,
de224c30 8532 .digest = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
1da177e4
LT
8533 },
8534 {
de224c30 8535 .key = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
1da177e4 8536 .ksize = 8,
de224c30 8537 .plaintext = "Mi",
1da177e4 8538 .psize = 2,
de224c30 8539 .digest = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
1da177e4
LT
8540 },
8541 {
de224c30 8542 .key = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
1da177e4 8543 .ksize = 8,
de224c30 8544 .plaintext = "Mic",
1da177e4 8545 .psize = 3,
de224c30 8546 .digest = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
1da177e4
LT
8547 },
8548 {
de224c30 8549 .key = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
1da177e4 8550 .ksize = 8,
de224c30 8551 .plaintext = "Mich",
1da177e4 8552 .psize = 4,
de224c30 8553 .digest = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
1da177e4
LT
8554 },
8555 {
de224c30 8556 .key = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
1da177e4 8557 .ksize = 8,
de224c30 8558 .plaintext = "Michael",
1da177e4 8559 .psize = 7,
de224c30 8560 .digest = "\x0a\x94\x2b\x12\x4e\xca\xa5\x46",
1da177e4
LT
8561 }
8562};
8563
c907ee76
HX
8564/*
8565 * CRC32C test vectors
8566 */
8567#define CRC32C_TEST_VECTORS 14
8568
8569static struct hash_testvec crc32c_tv_template[] = {
8570 {
8571 .psize = 0,
de224c30 8572 .digest = "\x00\x00\x00\x00",
c907ee76
HX
8573 },
8574 {
de224c30 8575 .key = "\x87\xa9\xcb\xed",
c907ee76
HX
8576 .ksize = 4,
8577 .psize = 0,
de224c30 8578 .digest = "\x78\x56\x34\x12",
c907ee76
HX
8579 },
8580 {
de224c30 8581 .key = "\xff\xff\xff\xff",
c907ee76 8582 .ksize = 4,
de224c30
SS
8583 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8584 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8585 "\x11\x12\x13\x14\x15\x16\x17\x18"
8586 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8587 "\x21\x22\x23\x24\x25\x26\x27\x28",
c907ee76 8588 .psize = 40,
de224c30 8589 .digest = "\x7f\x15\x2c\x0e",
c907ee76
HX
8590 },
8591 {
de224c30 8592 .key = "\xff\xff\xff\xff",
c907ee76 8593 .ksize = 4,
de224c30
SS
8594 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8595 "\x31\x32\x33\x34\x35\x36\x37\x38"
8596 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8597 "\x41\x42\x43\x44\x45\x46\x47\x48"
8598 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
c907ee76 8599 .psize = 40,
de224c30 8600 .digest = "\xf6\xeb\x80\xe9",
c907ee76
HX
8601 },
8602 {
de224c30 8603 .key = "\xff\xff\xff\xff",
c907ee76 8604 .ksize = 4,
de224c30
SS
8605 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8606 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8607 "\x61\x62\x63\x64\x65\x66\x67\x68"
8608 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8609 "\x71\x72\x73\x74\x75\x76\x77\x78",
c907ee76 8610 .psize = 40,
de224c30 8611 .digest = "\xed\xbd\x74\xde",
c907ee76
HX
8612 },
8613 {
de224c30 8614 .key = "\xff\xff\xff\xff",
c907ee76 8615 .ksize = 4,
de224c30
SS
8616 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8617 "\x81\x82\x83\x84\x85\x86\x87\x88"
8618 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8619 "\x91\x92\x93\x94\x95\x96\x97\x98"
8620 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
c907ee76 8621 .psize = 40,
de224c30 8622 .digest = "\x62\xc8\x79\xd5",
c907ee76
HX
8623 },
8624 {
de224c30 8625 .key = "\xff\xff\xff\xff",
c907ee76 8626 .ksize = 4,
de224c30
SS
8627 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8628 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8629 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8630 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8631 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
c907ee76 8632 .psize = 40,
de224c30 8633 .digest = "\xd0\x9a\x97\xba",
c907ee76
HX
8634 },
8635 {
de224c30 8636 .key = "\xff\xff\xff\xff",
c907ee76 8637 .ksize = 4,
de224c30
SS
8638 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8639 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8640 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8641 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8642 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8643 .psize = 40,
de224c30 8644 .digest = "\x13\xd9\x29\x2b",
c907ee76
HX
8645 },
8646 {
de224c30 8647 .key = "\x80\xea\xd3\xf1",
c907ee76 8648 .ksize = 4,
de224c30
SS
8649 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8650 "\x31\x32\x33\x34\x35\x36\x37\x38"
8651 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8652 "\x41\x42\x43\x44\x45\x46\x47\x48"
8653 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
c907ee76 8654 .psize = 40,
de224c30 8655 .digest = "\x0c\xb5\xe2\xa2",
c907ee76
HX
8656 },
8657 {
de224c30 8658 .key = "\xf3\x4a\x1d\x5d",
c907ee76 8659 .ksize = 4,
de224c30
SS
8660 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8661 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8662 "\x61\x62\x63\x64\x65\x66\x67\x68"
8663 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8664 "\x71\x72\x73\x74\x75\x76\x77\x78",
c907ee76 8665 .psize = 40,
de224c30 8666 .digest = "\xd1\x7f\xfb\xa6",
c907ee76
HX
8667 },
8668 {
de224c30 8669 .key = "\x2e\x80\x04\x59",
c907ee76 8670 .ksize = 4,
de224c30
SS
8671 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8672 "\x81\x82\x83\x84\x85\x86\x87\x88"
8673 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8674 "\x91\x92\x93\x94\x95\x96\x97\x98"
8675 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
c907ee76 8676 .psize = 40,
de224c30 8677 .digest = "\x59\x33\xe6\x7a",
c907ee76
HX
8678 },
8679 {
de224c30 8680 .key = "\xa6\xcc\x19\x85",
c907ee76 8681 .ksize = 4,
de224c30
SS
8682 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8683 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8684 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8685 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8686 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
c907ee76 8687 .psize = 40,
de224c30 8688 .digest = "\xbe\x03\x01\xd2",
c907ee76
HX
8689 },
8690 {
de224c30 8691 .key = "\x41\xfc\xfe\x2d",
c907ee76 8692 .ksize = 4,
de224c30
SS
8693 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8694 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8695 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8696 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8697 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8698 .psize = 40,
de224c30 8699 .digest = "\x75\xd3\xc5\x24",
c907ee76
HX
8700 },
8701 {
de224c30 8702 .key = "\xff\xff\xff\xff",
c907ee76 8703 .ksize = 4,
de224c30
SS
8704 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8705 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8706 "\x11\x12\x13\x14\x15\x16\x17\x18"
8707 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8708 "\x21\x22\x23\x24\x25\x26\x27\x28"
8709 "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8710 "\x31\x32\x33\x34\x35\x36\x37\x38"
8711 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8712 "\x41\x42\x43\x44\x45\x46\x47\x48"
8713 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
8714 "\x51\x52\x53\x54\x55\x56\x57\x58"
8715 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8716 "\x61\x62\x63\x64\x65\x66\x67\x68"
8717 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8718 "\x71\x72\x73\x74\x75\x76\x77\x78"
8719 "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8720 "\x81\x82\x83\x84\x85\x86\x87\x88"
8721 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8722 "\x91\x92\x93\x94\x95\x96\x97\x98"
8723 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
8724 "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8725 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8726 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8727 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8728 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8"
8729 "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8730 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8731 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8732 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8733 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8734 .psize = 240,
de224c30 8735 .digest = "\x75\xd3\xc5\x24",
c907ee76
HX
8736 .np = 2,
8737 .tap = { 31, 209 }
8738 },
8739};
8740
ebfd9bcf
HW
8741/*
8742 * Cipher speed tests
8743 */
d5dc3927
SS
8744static u8 speed_template_8[] = {8, 0};
8745static u8 speed_template_24[] = {24, 0};
8746static u8 speed_template_8_32[] = {8, 32, 0};
8747static u8 speed_template_16_32[] = {16, 32, 0};
8748static u8 speed_template_16_24_32[] = {16, 24, 32, 0};
8749static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
8750static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
f19f5111 8751
e8057928
ML
8752/*
8753 * Digest speed tests
8754 */
e9d41164 8755static struct hash_speed generic_hash_speed_template[] = {
de224c30 8756 { .blen = 16, .plen = 16, },
e8057928
ML
8757 { .blen = 64, .plen = 16, },
8758 { .blen = 64, .plen = 64, },
8759 { .blen = 256, .plen = 16, },
8760 { .blen = 256, .plen = 64, },
8761 { .blen = 256, .plen = 256, },
8762 { .blen = 1024, .plen = 16, },
8763 { .blen = 1024, .plen = 256, },
8764 { .blen = 1024, .plen = 1024, },
8765 { .blen = 2048, .plen = 16, },
8766 { .blen = 2048, .plen = 256, },
8767 { .blen = 2048, .plen = 1024, },
8768 { .blen = 2048, .plen = 2048, },
8769 { .blen = 4096, .plen = 16, },
8770 { .blen = 4096, .plen = 256, },
8771 { .blen = 4096, .plen = 1024, },
8772 { .blen = 4096, .plen = 4096, },
8773 { .blen = 8192, .plen = 16, },
8774 { .blen = 8192, .plen = 256, },
8775 { .blen = 8192, .plen = 1024, },
8776 { .blen = 8192, .plen = 4096, },
8777 { .blen = 8192, .plen = 8192, },
8778
8779 /* End marker */
8780 { .blen = 0, .plen = 0, }
8781};
8782
1da177e4 8783#endif /* _CRYPTO_TCRYPT_H */
This page took 0.890201 seconds and 5 git commands to generate.